目 录
第1章 概述 1
1.1 EDA技术及其发展 1
1.2 EDA技术实现的目标 3
1.3 硬件描述语言Verilog HDL 4
1.4 其他常用硬件描述语言 5
1.5 HDL综合 6
1.6 基于HDL的自顶向下设计方法 8
1.7 EDA技术的优势 11
1.8 EDA的发展趋势 12
习题 14
第2章 EDA设计流程及其工具 15
2.1 FPGA/CPLD开发流程 15
2.1.1 设计输入(原理图/HDL文本编辑) 15
2.1.2 综合 16
2.1.3 适配 17
2.1.4 时序仿真与功能仿真 17
2.1.5 编程下载 18
2.1.6 硬件测试 18
2.2 ASIC及其设计流程 18
2.2.1 ASIC设计方法简介 18
2.2.2 一般ASIC设计的流程 20
2.3 常用EDA工具 21
2.3.1 设计输入编辑器 22
2.3.2 HDL综合器 22
2.3.3 仿真器 23
2.3.4 适配器 24
2.3.5 下载器 25
2.4 Quartus II简介 25
2.5 IP核简介 26
习题 28
第3章 FPGA/CPLD结构与应用 29
3.1 概述 29
3.1.1 可编程逻辑器件的发展历程 29
3.1.2 可编程逻辑器件的分类 30
3.2 简单PLD原理 31
3.2.1 电路符号表示 31
3.2.2 PROM 32
3.2.3 PLA 34
3.2.4 PAL 35
3.2.5 GAL 36
3.3 CPLD的结构与工作原理 38
3.4 FPGA结构与工作原理 41
3.4.1 查找表逻辑结构 42
3.4.2 Cyclone III系列器件的结构与原理 42
3.5 硬件测试技术 48
3.5.1 内部逻辑测试 48
3.5.2 JTAG边界扫描测试 48
3.5.3 嵌入式逻辑分析仪 52
3.6 FPGA/CPLD产品概述 52
3.6.1 Lattice公司的CPLD器件系列 52
3.6.2 Xilinx公司的FPGA和CPLD器件系列 53
3.6.3 Altera公司的FPGA和CPLD器件系列 55
3.6.4 Actel公司的FPGA器件 58
3.6.5 Altera公司的FPGA配置方式与配置器件 58
3.7 编程与配置 59
3.7.1 使用JTAG的CPLD在系统编程 60
3.7.2 使用JTAG在线配置FPGA 61
3.7.3 FPGA专用配置器件 61
3.7.4 使用单片机配置FPGA 63
3.7.5 使用CPLD配置FPGA 64
习题 64
第4章 Verilog HDL设计初步 66
4.1 组合电路的Verilog HDL描述 66
4.1.1 4选1多路选择器及其Verilog HDL描述1 66
4.1.2 4选1多路选择器及其Verilog HDL描述2 74
4.1.3 4选1多路选择器及其Verilog HDL描述3 76
4.1.4 4选1多路选择器及其Verilog HDL描述4 78
4.1.5 简单加法器及其Verilog HDL描述 79
4.2 时序电路的Verilog HDL描述 83
4.2.1 边沿触发型D触发器及其Verilog描述 84
4.2.2 电平触发型锁存器及其Verilog描述 85
4.2.3 含异步清0和时钟使能结构的D触发器及其Verilog描述 86
4.2.4 含同步清0结构的D触发器及其Verilog描述 87
4.2.5 含异步清0的锁存器及其Verilog描述 88
4.2.6 Verilog的时钟过程描述注意要点 88
4.2.7 异步时序电路 89
4.3 计数器的Verilog HDL设计 90
4.3.1 4位二进制加法计数器及其Verilog描述 90
4.3.2 功能更全面的计数器设计 91
习题 93
第5章 Quartus II应用初步 96
5.1 基本设计流程 96
5.1.1 建立工作库文件夹和编辑设计文件 96
5.1.2 创建工程 97
5.1.3 编译前设置 99
5.1.4 全程编译 100
5.1.5 时序仿真 101
5.1.6 应用RTL电路图观察器 104
5.2 引脚设置与硬件验证 105
5.2.1 引脚锁定 105
5.2.2 编译文件下载 106
5.2.3 AS模式编程 108
5.2.4 JTAG间接模式编程配置器件 108
5.2.5 USB-Blaster编程配置器件使用方法 110
5.2.6 其他的锁定引脚方法 110
5.3 嵌入式逻辑分析仪使用方法 112
5.4 编辑SignalTap II的触发信号 116
5.5 原理图输入设计方法 117
5.5.1 层次化设计流程 118
5.5.2 应用宏模块的多层次原理图设计 121
5.5.3 74系列宏模块逻辑功能真值表查询 125
习题 125
实验与设计 126
5-1 设计含异步清0、同步加载与时钟使能的计数器 126
5-2 4选1多路选择器设计实验 127
5-3 采用原理图输入法设计8位全加器 128
5-4 十六进制7段数码显示译码器设计 128
5-5 采用原理图输入法设计8位十进制显示的频率计 130
5-6 数码扫描显示电路设计 130
第6章 Verilog HDL设计进阶 132
6.1 过程结构中的赋值语句 132
6.1.1 过程中的阻塞式赋值 132
6.1.2 过程中的非阻塞式赋值 133
6.1.3 进一步了解阻塞式和非阻塞式赋值的内在规律 134
6.2 过程语句归纳 138
6.3 移位寄存器之Verilog HDL设计 141
6.3.1 含同步并行预置功能的8位移位寄存器设计 142
6.3.2 移位模式可控的8位移位寄存器设计 143
6.3.3 使用移位操作符设计移位寄存器 144
6.3.4 使用循环语句设计乘法器 145
6.4 if语句概述 149
6.5 双向和三态电路设计 152
6.5.1 三态控制电路设计 152
6.5.2 双向端口设计 153
6.5.3 三态总线电路设计 154
6.6 不同类型的分频电路设计 156
6.6.1 同步加载分频电路设计 157
6.6.2 异步加载分频电路设计 159
6.6.3 异步清0分频电路设计 159
6.6.4 同步清0分频电路设计 160
6.7 半整数与奇数分频电路设计 161
6.8 Verilog HDL的RTL表述 162
6.8.1 行为描述 163
6.8.2 数据流描述 164
6.8.3 结构描述 164
习题 165
实验与设计 166
6-1 半整数与奇数分频器设计 166
6-2 简易分频器设计 166
6-3 VGA彩条信号显示控制电路设计 167
6-4 基于时序电路的移位相加型8位硬件乘法器设计 170
6-5 移位寄存器设计 171
6-6 串/并转换数码静态显示控制电路设计 172
6-7 并/串转换扩展输入口电路设计 172
第7章 宏功能模块与IP应用 173
7.1 宏功能模块概述 173
7.1.1 知识产权核的应用 173
7.1.2 使用MegaWizard Plug-In Manager 174
7.1.3 在Quartus II中对宏功能模块进行例化 175
7.2 LPM计数器模块使用方法 175
7.2.1 LPM_COUNTER计数器模块文本文件的调用 176
7.2.2 LPM计数器程序与参数传递语句 177
7.2.3 创建工程与仿真测试 178
7.3 基于LPM的流水线乘法累加器设计 179
7.3.1 LPM加法器模块设置调用 180
7.3.2 LPM乘法器模块设置调用 181
7.3.3 乘法累加器的仿真测试 181
7.3.4 乘法器的Verilog文本表述和相关属性设置 182
7.4 LPM随机存储器的设置和调用 183
7.4.1 存储器初始化文件生成 183
7.4.2 LPM_RAM的设置和调用 185
7.4.3 对LPM_RAM仿真测试 187
7.4.4 Verilog的存储器描述及相关属性 187
7.5 LPM_ROM的定制和使用示例 190
7.5.1 LPM_ROM的定制、调用和测试 191
7.5.2 LPM存储器模块取代设置 191
7.5.3 简易正弦信号发生器设计 192
7.5.4 正弦信号发生器硬件实现和测试 193
7.6 在系统存储器数据读写编辑器应用 194
7.7 FIFO定制 196
7.8 LPM嵌入式锁相环调用 197
7.8.1 建立嵌入式锁相环元件 197
7.8.2 联合设计与测试 199
7.8.3 测试锁相环 199
7.9 NCO核数控振荡器使用方法 200
7.10 使用IP Core设计FIR滤波器 202
7.11 8051单片机IP核应用 204
7.12 DDS实现原理与应用 206
7.12.1 DDS实现原理 206
7.12.2 DDS信号发生器设计 208
习题 210
实验与设计 210
7-1 查表式硬件运算器设计 210
7-2 简易正弦信号发生器设计 211
7-3 8位数码显示频率计设计 212
7-4 简易逻辑分析仪设计 213
7-5 DDS信号发生器设计 214
7-6 DDS移相信号发生器设计 214
7-7 4×4阵列键盘键信号检测电路设计 215
7-8 8051单片机IP核SOC片上系统设计实验 217
7-9 VGA简单图像显示控制模块设计 217
第8章 Verilog有限状态机设计 219
8.1 Verilog HDL状态机的一般形式 219
8.1.1 为什么要使用状态机 220
8.1.2 一般有限状态机的结构 221
8.1.3 状态机设计初始控制与表述 224
8.2 Moore型有限状态机的设计 225
8.2.1 ADC采样控制设计及多过程结构型状态机 226
8.2.2 序列检测器之状态机设计 230
8.3 Mealy型有限状态机的设计 231
8.4 SystemVerilog的枚举类型应用 234
8.5 状态机图形编辑设计方法 234
8.6 状态编码 237
8.6.1 直接输出型编码 237
8.6.2 宏定义命令语句'define 240
8.6.3 顺序编码 240
8.6.4 一位热码状态编码 241
8.6.5 状态编码设置 241
8.7 非法状态处理 243
8.7.1 程序直接导引法 243
8.7.2 状态编码监测法 244
8.7.3 借助EDA优化控制工具生成安全状态机 245
8.8 硬件数字技术排除毛刺 245
8.8.1 延时方式去毛刺 245
8.8.2 逻辑方式去毛刺 247
8.8.3 定时方式去毛刺 248
习题 248
实验与设计 249
8-1 序列检测器设计 249
8-2 并行ADC采样控制电路实现与硬件验证 250
8-3 数据采集模块和简易存储示波器设计 251
8-4 5功能智能逻辑笔设计 252
8-5 比较器加DAC器件实现ADC转换功能电路设计 253
8-6 通用异步收发器UART设计 254
8-7 点阵型与字符型液晶显示器驱动控制电路设计 255
8-8 串行ADC/DAC采样或信号输出控制电路设计 256
8-9 数字温度传感器DS18B20测控电路设计 256
8-10 AM幅度调制信号发生器设计 256
8-11 硬件消抖动电路设计 258
第9章 Verilog HDL基本要素与语句 259
9.1 Verilog HDL文字规则 259
9.2 Verilog HDL数据类型 261
9.2.1 网线类型(Net型) 261
9.2.2 寄存器类型(Register型) 262
9.2.3 存储器类型 262
9.3 操作符 262
9.4 Verilog HDL语句 263
9.4.1 initial过程语句 264
9.4.2 forever循环语句 265
9.4.3 编译指示语句 265
9.4.4 任务和函数语句 267
9.5 基于库元件的结构描述 269
习题 271
实验与设计 271
9-1 硬件乐曲演奏电路设计 271
9-2 直流电机综合测控系统设计 275
9-3 等精度频率/脉宽/占空比/相位多功能测试仪设计 277
9-4 正交幅度调制与解调系统实现 283
9-5 PC机键盘经UART串口控制模型电子琴电路设计 284
9-6 基于M9K RAM型LPM移位寄存器设计 286
9-7 单片全数字型DDS函数信号发生器设计 286
9-8 PS2键盘控制模型电子琴电路设计 287
9-9 乒乓球游戏电路设计 288
第10章 系统优化、时序分析和Synplify应用 289
10.1 资源优化 289
10.1.1 资源共享 290
10.1.2 逻辑优化 291
10.1.3 串行化 292
10.2 速度优化 293
10.2.1 流水线设计 293
10.2.2 寄存器配平 295
10.2.3 关键路径法 296
10.2.4 乒乓操作法 296
10.2.5 加法树法 297
10.3 优化设置与时序分析 297
10.3.1 Settings设置 297
10.3.2 HDL版本设置及Analysis & Synthesis功能 298
10.3.3 Analysis & Synthesis的优化设置 298
10.3.4 适配器Fitter设置 298
10.3.5 SignalProbe使用方法 299
10.3.6 增量布局布线控制设置 300
10.3.7 使用Design Assistant检查设计可靠性 301
10.3.8 时序设置与分析 301
10.3.9 查看时序分析结果 303
10.3.10 适配优化设置示例 304
10.3.11 LogicLock优化技术 305
10.4 Chip Planner应用 306
10.4.1 Chip Planner应用实例 306
10.4.2 Chip Planner功能说明 307
10.4.3 利用Change Manager检测底层逻辑 308
10.5 Synplify Pro的应用及其与Quartus II接口 309
10.5.1 Synplify Pro设计指南 310
10.5.2 Synplify Pro与Quartus II的接口方法 312
习题 313
实验与设计 314
10-1 SPWM脉宽调制控制系统设计 314
10-2 基于DES数据加密标准的加解密系统设计 317
10-3 采用流水线技术设计高速数字相关器 317
10-4 线性反馈移位寄存器设计 318
10-5 步进电机细分控制电路设计 319
10-6 基于Verilog表述的流水线乘法器设计 321
10-7 基于CPLD的FPGA PS模式编程配置控制电路设计 321
10-8 基于FT245BM的USB通信控制模块设计 323
10-9 数字彩色液晶显示控制电路设计 323
10-10 GPS应用的通信电路设计 323
10-11 VGA动画图像显示控制电路设计 324
10-12 状态机控制串/并转换8数码静态显示 324
10-13 SignalProbe/Synplify应用等的综合实验 325
第11章 Verilog仿真验证 326
11.1 Verilog仿真方法与仿真流程 326
11.2 使用ModelSim进行仿真 329
11.3 系统任务、系统函数和预编译语句 334
11.3.1 系统任务、系统函数 334
11.3.2 预编译语句 339
11.4 基本元件与用户自定义元件(UDP) 340
11.4.1 基本元件及其用法 340
11.4.2 用户自定义元件(UDP) 344
11.5 延时模型 347
11.5.1 赋值延时 347
11.5.2 门延时 348
11.5.3 延时说明块 349
11.6 Verilog其他仿真语句 349
11.6.1 initial语句 349
11.6.2 fork-join块语句 350
11.6.3 wait语句 352
11.6.4 force、release语句 352
11.6.5 deassign语句 353
11.7 仿真激励信号的产生 353
11.8 Verilog Test Bench(测试基准) 355
11.9 Verilog数字系统仿真 356
习题 357
实验与设计 357
11-1 在ModelSim上进行4位计数器仿真 357
11-2 在ModelSim上进行16位累加器设计仿真 358
第12章 SOPC技术 359
12.1 Nios II嵌入式CPU核 359
12.1.1 Nios II处理器 359
12.1.2 Nios II系统的优势 360
12.2 Nios II设计流程及外围接口 362
12.2.1 Nios II系统设计流程 362
12.2.2 Avalon总线外设 363
12.2.3 DMA内核 365
12.2.4 自定制硬件指令 366
12.3 Nios II系统设计流程 367
12.3.1 Nios II硬件系统设计流程 367
12.3.2 Nios II软件设计流程 371
12.4 Nios II系统深入设计 376
12.4.1 用户自定义组件设计 376
12.4.2 用户自定义指令设计 377
12.4.3 IDE Flash编程下载 378
12.5 SOPC综合设计 380
实验与设计 384
12-1 多功能数字钟 384
12-2 彩色液晶显示控制电路设计 384
12-3 基于Nios II的直流电机控制 385
12-4 自定制硬件乘法器 385
12-5 乐曲演播控制 386
12-6 基于UART的I2C总线传输 386
12-7 基于Nios II的等进度频率计程序设计 387
附录A EDA开发系统相关软硬件简介 388
A.1 KX_7C5E+型EDA开发系统配置及实验简介 388
A.2 辅助开发板A使用简介 391
A.3 辅助开发板B使用简介 393
A.4 KX_PK4等系列EDA实验开发系统实验图 394
A.5 MIF文件生成器使用方法 396
参考文献 399