第1章 EDA技术概述 1
1.1 EDA技术及其发展 1
1.2 Top-down设计与IP核复用 3
1.2.1 Top-down设计 4
1.2.2 Bottom-up设计 5
1.2.3 IP复用技术与SoC 5
1.3 EDA设计的流程 6
1.3.1 设计输入 7
1.3.2 综合 8
1.3.3 布局布线 8
1.3.4 仿真 9
1.3.5 编程配置 9
1.4 常用的EDA工具软件 9
1.5 EDA技术的发展趋势 13
习题1 14
第2章 FPGA/CPLD器件概述 15
2.1 PLD器件 15
2.1.1 PLD器件的发展历程 15
2.1.2 PLD器件的分类 15
2.2 PLD的基本原理与结构 18
2.2.1 PLD器件的基本结构 18
2.2.2 PLD电路的表示方法 18
2.3 低密度PLD的原理与结构 20
2.4 CPLD的原理与结构 24
2.4.1 宏单元结构 24
2.4.2 典型CPLD的结构 25
2.5 FPGA的原理与结构 28
2.5.1 查找表结构 28
2.5.2 典型FPGA的结构 30
2.5.3 Altera的CycloneⅣ器件结构 33
2.6 FPGA/CPLD的编程元件 36
2.7 边界扫描测试技术 40
2.8 FPGA/CPLD的编程与配置 41
2.8.1 在系统可编程 41
2.8.2 FPGA器件的配置 43
2.8.3 Cyclone Ⅳ器件的编程 43
2.9 FPGA/CPLD器件概述 46
2.10 FPGA/CPLD的发展趋势 49
习题2 50
第3章 Quartus Prime集成开发工具 51
3.1 Quartus Prime原理图设计 52
3.1.1 半加器原理图设计输入 52
3.1.2 1位全加器设计输入 57
3.1.3 1位全加器的编译 58
3.1.4 1位全加器的仿真 60
3.1.5 1位全加器的下载 64
3.2 基于IP核的设计 67
3.3 SignalTap Ⅱ的使用方法 74
3.4 Quartus Prime的优化设置与时序分析 78
习题3 82
实验与设计:4×4无符号数乘法器 84
第4章 Verilog语法与要素 92
4.1 Verilog的历史 92
4.2 Verilog模块的结构 93
4.3 Verilog语言要素 96
4.4 常量 98
4.4.1 整数 98
4.4.2 实数 99
4.4.3 字符串 100
4.5 数据类型 101
4.5.1 net型 102
4.5.2 variable型 103
4.6 参数 104
4.6.1 参数parameter 104
4.6.2 Verilog—2001中的参数声明 105
4.6.3 参数的传递 106
4.6.4 localparam 106
4.7 向量 107
4.8 运算符 109
习题4 114
实验与设计:Synplify Pro综合器的使用方法 114
第5章 Verilog语句语法 118
5.1 过程语句 118
5.1.1 always过程语句 119
5.1.2 initial过程语句 122
5.2 块语句 123
5.2.1 串行块begin-end 123
5.2.2 并行块fork-join 124
5.3 赋值语句 125
5.3.1 持续赋值与过程赋值 125
5.3.2 阻塞赋值与非阻塞赋值 126
5.4 条件语句 128
5.4.1 if-else语句 128
5.4.2 case语句 129
5.5 循环语句 134
5.5.1 for语句 134
5.5.2 repeat、 while、 forever语句 135
5.6 编译指示语句 137
5.7 任务与函数 139
5.7.1 任务(task) 139
5.7.2 函数(function) 141
5.8 顺序执行与并发执行 144
5.9 Verilog—2001语言标准 145
习题5 154
实验与设计:用altpll锁相环模块实现倍频和分频 155
第6章 Verilog设计进阶 161
6.1 Verilog设计的层次 161
6.2 门级结构描述 161
6.2.1 Verilog门元件 162
6.2.2 门级结构描述 165
6.3 行为描述 165
6.4 数据流描述 166
6.5 不同描述风格的设计 168
6.5.1 半加器设计 168
6.5.2 1位全加器设计 169
6.5.3 加法器的级连 170
6.6 多层次结构电路的设计 171
6.6.1 模块例化 172
6.6.2 用parameter进行参数传递 174
6.6.3 用defparam进行参数重载 176
6.7 常用组合逻辑电路设计 176
6.7.1 门电路 176
6.7.2 编译码器 177
6.8 常用时序逻辑电路设计 179
6.8.1 触发器 179
6.8.2 锁存器与寄存器 180
6.8.3 计数器与串并转换器 182
6.8.4 简易微处理器 182
6.9 三态逻辑设计 184
习题6 186
实验与设计:表决电路 186
第7章 Verilog常用外设驱动 190
7.1 4×4矩阵键盘 190
7.2 标准PS/2键盘 192
7.3 字符液晶 198
7.4 汉字图形点阵液晶 204
7.5 VGA显示器 209
7.5.1 VGA显示原理与时序 209
7.5.2 VGA彩条信号发生器 213
7.5.3 VGA图像显示与控制 215
7.6 乐曲演奏电路 221
习题7 226
实验与设计:数字跑表 227
第8章 有限状态机设计 235
8.1 有限状态机 235
8.2 有限状态机的Verilog描述 237
8.2.1 用三个过程描述 238
8.2.2 用两个过程描述 239
8.2.3 单过程描述 240
8.3 状态编码 241
8.3.1 常用的编码方式 241
8.3.2 状态编码的定义 243
8.3.3 用属性指定状态编码方式 247
8.4 有限状态机设计要点 247
8.4.1 复位和起始状态的选择 248
8.4.2 多余状态的处理 248
习题8 249
实验与设计:彩灯控制器、汽车尾灯控制器 250
第9章 Verilog Test Bench仿真 253
9.1 系统任务与系统函数 253
9.2 用户自定义元件 257
9.2.1 组合电路UDP元件 258
9.2.2 时序逻辑UDP元件 259
9.3 延时模型的表示 261
9.3.1 时间标尺定义timescale 261
9.3.2 延时的表示与延时说明块 262
9.4 Test Bench测试平台 263
9.5 组合电路和时序电路的仿真 266
9.5.1 组合电路的仿真 266
9.5.2 时序电路的仿真 268
习题9 269
实验与设计:用ModelSim SE仿真8位二进制加法器 269
第10章 Verilog设计与应用 279
10.1 数字频率测量 279
10.1.1 数字过零检测 279
10.1.2 等精度频率测量 281
10.1.3 数字频率测量系统顶层设计 282
10.1.4 仿真验证 284
10.2 可重构IIR滤波器 286
10.2.1 FPGA的动态重构 286
10.2.2 IIR滤波器的原理 287
10.2.3 可重构IIR滤波器的设计 288
10.2.4 顶层设计源代码 297
10.2.5 可重构IIR滤波器仿真 297
10.3 QPSK调制器的FPGA实现 300
10.3.1 QPSK调制原理 300
10.3.2 QPSK调制器的设计实现 301
10.3.3 QPSK调制器的仿真 310
10.4 卷积码产生器 311
10.4.1 卷积码原理 311
10.4.2 卷积码编码器实现 312
10.4.3 卷积码编码器仿真验证 314
10.5 小型神经网络 315
10.5.1 基本原理 315
10.5.2 设计实现 316
10.5.3 仿真验证 318
10.6 数字AGC 319
10.6.1 数字AGC技术的原理和设计思想 319
10.6.2 数字AGC的实现 320
10.7 信号音发生器 327
10.7.1 线性码、A律码转换原理 327
10.7.2 信号音发生器的Verilog实现 330
习题10 333
实验与设计:m序列发生器 334
附录 DE2-115介绍 338
参考文献 340