第1章 绪论
1.1 集成电路设计方法与设计手段2
1.1.1 原始的手工设计2
1.1.2 计算机辅助设计CAD2
1.1.3 电子设计自动化EDA3
1.1.4 电子系统设计自动化ESDA3
1.1.5 用户现场可编程器件FPGA4
1.2 设计过程4
1.3 集成电路设计的层次5
1.4 ASIC设计的技术发展6
1.4.1 ASIC及其设计流程8
1.4.2 ASIC设计方法8
1.4.3 一般的ASIC设计流程10
第2章 EDA基础
2.1 EDA的定义12
2.2 EDA技术的发展历程12
2.3 EDA技术的基本特征12
2.4 EDA技术的基本工具13
2.4.1 常用EDA工具13
2.4.2 设计输入编辑器13
2.4.3 HDL综合器14
2.4.4 仿真器15
2.4.5 适配器(布局、布线器)16
2.4.6 下载器17
2.5 EDA技术的基本设计思路17
2.5.1 EDA技术的电路级设计17
2.5.2 EDA技术的系统级设计18
2.6 EDA设计流程18
2.6.1 设计输入(原理图/HDL文本编辑)19
2.6.2 综合过程20
2.6.3 适配器21
2.6.4 时序仿真与功能仿真21
2.6.5 编程下载22
2.6.6 硬件测试22
2.7 EDA技术的发展趋势22
2.8 FPGA/CPLD芯片内部组成结构23
2.8.1 基于乘积项的PLD结构23
2.8.2 乘积项结构PLD的逻辑实现原理24
2.8.3 查找表的原理与结构25
2.8.4 基于查找表的FPGA的结构26
2.8.5 查找表结构的FPGA逻辑实现原理29
第3章 数字系统硬件设计基础
3.1 概述30
3.1.1 由底向上的设计30
3.1.2 由顶向下的设计30
3.2 硬件描述语言31
3.2.1 VHDL语言概述32
3.2.2 VHDL语言特点32
3.2.3 VHDL语言描述方法33
3.3 自顶向下技术的设计流程及关键技术37
3.3.1 系统设计38
3.3.2 系统的综合优化39
3.3.3 系统实现40
3.4 设计描述风格模型40
3.5 VHDL综合41
第4章 VHDL语言基本结构
4.1 VHDL语言概述44
4.1.1 设计实体和结构体的概念44
4.1.2 结构和行为47
4.1.3 数据类型与对象49
4.1.4 VHDL主要组成部分50
4.1.5 设计库51
4.2 VHDL的结构描述52
4.2.1 结构描述的基本特征53
4.2.2 规则结构58
4.2.3 配置指定62
4.3 VHDL语言构造体的子结构描述64
4.3.1 Block语句结构描述64
4.3.2 进程(Process)语句结构描述66
4.4 子程序67
4.4.1 过程语句67
4.4.2 函数语句69
4.5 包集合、库及配置72
4.5.1 库72
4.5.2 包集合74
4.5.3 配置78
第5章 VHDL语言数据类型及运算操作符
5.1 VHDL语言的数据类型84
5.1.1 标准的数据类型84
5.1.2 用户定义的数据类型86
5.1.3 用户定义子类型88
5.1.4 数据类型的限定和转换89
5.2 VHDL语言的客体及其分类90
5.2.1 常数90
5.2.2 变量91
5.2.3 信号91
5.2.4 信号与变量值代入的区别92
5.3 VHDL语言的运算操作符92
5.3.1 逻辑运算符93
5.3.2 算术运算符94
5.3.3 关系运算符94
5.3.4 连接运算符95
第6章 VHDL语言主要描述语句
6.1 顺序描述语句96
6.1.1 进程96
6.1.2 信号和变量的赋值97
6.1.3 进程挂起语句Wait98
6.1.4 断言语句Assert102
6.1.5 条件控制语句If102
6.1.6 条件控制语句Case106
6.1.7 循环控制语句For111
6.2 并发描述语句114
6.2.1 进程语句114
6.2.2 并行信号赋值语句115
6.2.3 条件信号赋值语句116
6.2.4 选择信号赋值语句118
6.2.5 并发过程调用语句119
6.2.6 块语句120
6.3 Attribute描述与定义语句124
6.3.1 数值类属性124
6.3.2 函数类属性125
6.3.3 信号类属性126
6.3.4 数据类属性126
6.3.5 数据区间类属性126
6.3.6 用户自定义类属性126
6.4 Textio127
6.5 决断信号130
第7章 基本逻辑电路设计
7.1 基本门电路133
7.1.1 反相器门电路133
7.1.2 两输入与门电路135
7.1.3 两输入与非门电路137
7.1.4 两输入或门电路139
7.1.5 两输入或非门电路142
7.1.6 两输入异或门电路144
7.1.7 两输入同或门电路146
7.1.8 四输入与非门电路149
7.2 选择器152
7.2.1 四选一152
7.2.2 四路选通器155
7.2.3 十六选一选择器156
7.3 编码器与译码器159
7.3.1 优先级83编码器159
7.3.2 74LS348编码器162
7.3.3 138译码器163
7.4 加法器165
7.4.1 一位半加器165
7.4.2 一位全加器168
7.4.3 串行进位加法器172
7.4.4 超前进位加法器173
7.4.5 处理多个加法器的技巧175
7.4.6 八位比较器175
7.5 求补器178
7.6 三态门及总线缓冲器179
7.6.1 三态门电路179
7.6.2 单向总线缓冲器181
7.6.3 双向总线缓冲器183
第8章 时序逻辑电路设计
8.1 时钟信号和复位信号185
8.1.1 时钟信号185
8.1.2 复位信号187
8.2 D触发器189
8.2.1 D触发器189
8.2.2 带异步复位上升沿的D触发器189
8.2.3 带异步置位复位上升沿的D触发器190
8.2.4 带异步复位和输入使能上升沿的D触发器191
8.3 T触发器192
8.4 RS触发器193
8.5 JK触发器194
8.6 寄存器196
8.6.1 4位锁存器196
8.6.2 串行输入、并行输出移位寄存器196
8.6.3 通用寄存器197
8.6.4 三态8进制D型寄存器198
8.6.5 8位同步置数、清零寄存器199
8.6.6 移位寄存器TTL164200
8.6.7 8位移位寄存器的结构级描述201
8.6.8 桶形移位寄存器的两种实现方式202
8.7 计数器206
8.7.1 带异步清零和计数使能的8位同步二进制计数器206
8.7.2 带异步清零和计数使能的十进制计数器207
8.7.3 异步计数器208
8.8 存储器209
8.8.1 存储器描述中的一些共性问题209
8.8.2 ROM只读存储器210
8.8.3 RAM随机存储器212
8.8.4 基于ROM的波形产生器213
8.8.5 先入先出(FIFO)存储器214
8.8.6 16字8位的RAM行为级描述216
8.8.7 256字8位ROM行为级描述217
8.8.8 堆栈219
8.9 综合举例221
8.9.1 分频器221
8.9.2 延迟电路224
8.9.3 8位无符号乘法器225
8.9.4 使用Generate 参数的n位加法器226
8.9.5 序列检测器227
8.9.6 16位ADC228
8.9.7 16位DAC229
8.9.8 经典的2Process状态机描述与Test Bench229
8.9.9 使用变量描述的状态机231
8.9.10 异步Reset状态机233
8.9.11 具有Moore and Mealy型输出的状态机234
8.9.12 多输出逻辑的Moore型状态机236
8.9.13 总线描述237
8.9.14 定时器的设计240
8.10 综合245
8.10.1 RTL级描述246
8.10.2 综合中的约束248
8.10.3 属性描述249
8.10.4 工艺库251
8.10.5 综合的基本步骤252
第9章 FPGA加载综述
9.1 FPGA 加载的数据流格式261
9.2 FPGA的上电配置过程262
9.2.1 初始化262
9.2.2 延迟配置模式262
9.2.3 启动263
9.2.4 启动时序264
9.3 FPGA加载的几种方式264
9.3.1 主动串行模式265
9.3.2 从动串行模式266
9.3.3 主动并行模式267
9.3.4 同步外围模式268
9.3.5 异步周边模式269
9.3.6 菊花链方式270
9.4 CCLK的频率设置271
9.5 JTAG链及其工作方式271
9.5.1 边界扫描简介271
9.5.2 JTAG配置可编程器件272
9.5.3 多个JTAG器件连接273
9.6 VIRTEX 芯片的加载273
第10章 软件介绍
10.1 MAX+PLUSII软件276
10.1.1 MAX+PLUSII概况276
10.1.2 MAX+PLUSII软件的流程277
10.1.3 建立和编辑一个VHDL工程文件278
10.1.4 VHDL语言程序的编译280
10.1.5 VHDL语言程序的仿真282
10.1.6 原理图输入法285
10.1.7 器件编程288
10.2 Active_HDL集成环境290
10.2.1 Active_HDL的VHDL语言设计、编译与仿真291
10.2.2 Active_HDL的状态机设计、编译与仿真296
10.3 Synplify的使用302
第11章 数值系统的状态模型
11.1 二态数值系统307
11.2 三态数值系统308
11.3 四态数值系统309
11.4 九态数值系统310
11.5 十二态数值系统312
11.6 四十六态数值系统313
第12章 HDL编码风格与编码指南软件介绍
12.1 HDL编码风格315
12.1.1 文件头和修订列表315
12.1.2 联机注释317
12.2 VHDL命名通用规则317
12.3 VHDL命名具体规则319
12.3.1 实体和结构319
12.3.2 端口319
12.3.3 结构体319
12.3.4 元件320
12.3.5 配置320
12.3.6 包、函数和过程320
12.3.7 枚举、数据类型、记录和数组320
12.3.8 信号和变量321
12.3.9 进程和块321
12.3.10 测试工作台321
12.3.11 文件和目录结构322
12.3.12 其他322
12.4 VHDL注释322
12.5 VHDL代码标准格式322
12.6 VHDL编码指导324
12.6.1 通用指导324
12.6.2 可移植性编码指导328
12.6.3 复位330
12.6.4 时钟330
12.6.5 总线330
12.6.6 通用规则330
12.6.7 VHDL代码指导原则331
12.7 VHDL保留字333
附录中英文对照表335
习题与思考题340
参考文献342