第1章EDA技术概述 1
1.1 EDA技术简介 1
1.2 EDA技术的发展和优势 2
1.2.1 EDA技术的发展 2
1.2.2 EDA技术的优势 3
1.3硬件描述语言(HDL) 4
1.3.1原理图设计方法 4
1.3.2 HDL的设计方法 4
1.3.3 HDL设计方法与传统原理图设计方法的比较 5
1.4综合 6
1.5基于HDL的设计方法 7
1.6 EDA工程的设计流程 8
1.7 EDA集成开发工具简介 10
1.8 IP核 12
1.9小结 12
1.10习题 13
第2章 可编程逻辑器件基础 14
2.1可编程逻辑器件概述 14
2.1.1可编程逻辑器件的发展过程 14
2.1.2可编程逻辑器件的分类 15
2.2 PROM、 PLA、 PAL和GAL的基本结构 16
2.2.1逻辑电路符号的表示方法 16
2.2.2 PLD器件的基本结构 17
2.2.3 PROM的基本结构 17
2.2.4 PLA的基本结构 17
2.2.5 PAL和GAL的基本结构 18
2.2.6 PROM、 PLA、 PAL和GAL电路的结构特点 20
2.3 CPLD的基本结构和工作原理 21
2.3.1 CPLD的基本结构 21
2.3.2 Altera公司的CPLD 23
2.4 FPGA的结构和工作原理 26
2.4.1 FPGA的基本结构 27
2.4.2 Altera公司的FPGA 29
2.5 CPLD/FPGA的应用选型 33
2.6小结 34
2.7习题 34
第3章Quartus Ⅱ开发软件应用 36
3.1 Quartus Ⅱ软件设计流程 36
3.2 Quartus Ⅱ软件安装 36
3.3创建工程文件 43
3.3.1建立工程 43
3.3.2建立设计文件 48
3.3.3原理图输入方法 50
3.3.4文本输入设计方法 52
3.3.5编译 53
3.4约束输入 53
3.4.1器件选择 53
3.4.2引脚分配及验证 54
3.4.3使用“Assignment Editor”和“ Settings”对话框 54
3.5综合和仿真 58
3.5.1使用Quartus Ⅱ的集成综合 58
3.5.2使用Quartus Ⅱ的仿真器进行仿真设计 59
3.6下载配置 62
3.6.1 JTAG模式 62
3.6.2 AS模式 62
3.7实例:3线-8线译码器设计与仿真 63
3.7.1实例简介 63
3.7.2实例目的 63
3.7.3实例内容 63
3.8小结 68
3.9习题 68
第4章Verilog HDL的基本语法 69
4.1 Verilog简介 69
4.1.1 Verilog HDL的发展过程 69
4.1.2 Verilog HDL与C语言的比较 70
4.2 Verilog HDL设计举例 72
4.3 Verilog模块的结构 74
4.4 Verilog HDL的要素与表达式 78
4.4.1注释 79
4.4.2常量 79
4.4.3变量 80
4.4.4操作符 82
4.4.5字符串、关键字、标识符 89
4.5赋值语句 89
4.5.1连续赋值 90
4.5.2过程赋值 91
4.5.3连续赋值和过程赋值的不同 94
4.6块语句 95
4.6.1顺序语句块(begin-end) 95
4.6.2并行语句块(fork-join) 96
4.6.3起始时间和结束时间 97
4.7条件语句 97
4.7.1 if-else语句 97
4.7.2 case语句 98
4.7.3比较if- else嵌套与case语句 100
4.8循环语句 100
4.8.1 for语句 100
4.8.2 forever语句 101
4.8.3 repeat语句 101
4.8.4 while语句 102
4.9过程语句 102
4.9.1 initial语句 102
4.9.2 always语句 104
4.10任务与函数 106
4.10.1任务 107
4.10.2函数 109
4.11预编译指令 110
4.11.1宏定义语句(’define、 ’undef) 110
4.11.2文件包含语句(’include) 111
4.11.3时间尺度(’timescale ) 113
4.11.4条件编译指令(’ifdef、 ’else、’endif ) 113
4.12小结 114
4.13习题 114
第5章Verilog设计的层次与常用模块设计 116
5.1 Verilog设计的层次 116
5.2行为描述 116
5.3数据流描述 117
5.4结构描述 117
5.4.1 Verilog内置门元件 117
5.4.2门元件的调用 118
5.5基本组合逻辑电路设计 119
5.5.1与非门电路 120
5.5.2或非门电路 121
5.5.3异或门电路 122
5.5.4三态门电路 122
5.5.5编码器 123
5.5.6译码器 124
5.5.7 BCD-七段显示译码器 126
5.5.8 2选1数据选择器 128
5.5.9 4选1数据选择器 129
5.5.10数值比较器 130
5.5.11总线缓冲器 131
5.6基本时序电路设计 132
5.6.1触发器 132
5.6.2寄存器 133
5.6.3计数器 134
5.6.4串-并转换器 135
5.7加法器设计 136
5.7.1并行加法器 137
5.7.2流水线加法器 137
5.8乘法器设计 139
5.8.1并行乘法器 139
5.8.2查找表乘法器 140
5.9乘累加器设计 142
5.10小结 143
5.11习题 143
第6章 宏功能模块设计 144
6.1算术运算模块库 144
6.1.1算术运算模块库模块列表 144
6.1.2乘法器模块设计举例 144
6.1.3计数器模块设计举例 148
6.2逻辑门库 151
6.2.1逻辑门库宏模块列表 151
6.2.2 3线-8线译码器模块设计举例 152
6.3 I/O模块库 154
6.4存储器模块库 155
6.4.1存储区模块库宏模块及功能描述 155
6.4.2参数化RAM模块设计举例 156
6.5小结 157
6.6习题 157
第7章 可综合设计与优化 158
7.1可综合设计 158
7.1.1综合的概念及其过程 158
7.1.2可综合模型的设计 159
7.1.3综合结果的验证 161
7.2 Verilog HDL设计优化 162
7.2.1公因子和公因子表达式 162
7.2.2算术表达式优化 163
7.2.3运算符优化 163
7.2.4循环语句的优化 163
7.3面积与速度的折中 164
7.3.1速度换面积 164
7.3.2面积换速度 165
7.4有限状态机设计 166
7.4.1有限状态机的设计步骤 166
7.4.2有限状态机编码方式 167
7.4.3用Verilog HDL设计可综合的状态机的指导原则 167
7.4.4状态机的3种设计风格 168
7.5小结 175
7.6习题 175
第8章 系统仿真与ModelSim软件使用 176
8.1系统任务与函数 176
8.2用户自定义原语 180
8.3应用Testbench仿真验证 181
8.3.1基本结构 181
8.3.2验证过程 182
8.3.3验证的全面性与代码覆盖率分析 185
8.4应用ModelSim软件仿真 190
8.4.1软件简介 190
8.4.2 ModelSim软件的安装过程 191
8.4.3使用ModelSim进行设计仿真 192
8.4.4在Quartus 11中直接调用ModelSim 196
8.5实例:4位全加器设计及ModelSim仿真 200
8.5.1实例简介 200
8.5.2实例目的 200
8.5.3实例内容 200
8.6小结 205
8.7习题 205
第9章 数字设计实例 206
9.1卷积编码Verilog HDL设计 206
9.1.1卷积码的编码工作原理 206
9.1.2卷积码的Verilog实现 207
9.1.3卷积码的ModelSim仿真 208
9.2通用异步收发器的Verilog HDL设计与验证 209
9.2.1通用异步收发器的规范 209
9.2.2电路结构设计 210
9.2.3 UART控制电路模块的代码设计与分析 212
9.2.4发送电路的代码设计与仿真分析 216
9.2.5接收电路的代码设计与仿真 220
9.2.6 U ART系统仿真 225
9.2.7 UART自动测试Testbench 228
9.3小结 231
9.4习题 231
第10章C/C ++语言开发可编程逻辑器件 232
10.1基于C/C++的硬件设计方法 232
10.2硬件设计的C++数据类型 233
10.2.1 ac_ int型 233
10.2.2 ac_ fixed型 233
10.3 C/C++FIR滤波器设计 234
10.3.1直接型FIR滤波器 234
10.3.2奇对称FIR滤波器 235
10.3.3转置型FIR滤波器 235
10.4 C++滤波器的可编程逻辑实现及验证 236
10.4.1 C++FIR滤波器的实现 236
10.4.2 FIR滤波器的验证 244
10.5小结 245
10.6习题 247
附录Quartus Ⅱ支持的Verilog结构 248
附录A Quartus Ⅱ对Verilog的支持情况1 248
附录B Quartus Ⅱ对Verilog的支持情况2 249
参考文献 250