第1章 概述 1
1.1EDA技术及其发展 1
1.2EDA技术实现的目标 3
1.3硬件描述语言Verilog HDL 4
1.4其他常用硬件描述语言 5
1.5HDL综合 6
1.6基于HDL的自顶向下设计方法 8
1.7EDA技术的优势 11
1.8EDA的发展趋势 12
习题 14
第2章 EDA设计流程及其工具 15
2.1FPGA/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.2ASIC及其设计流程 18
2.2.1ASIC设计方法简介 18
2.2.2一般ASIC设计的流程 20
2.3常用EDA工具 21
2.3.1设计输入编辑器 22
2.3.2HDL综合器 22
2.3.3仿真器 23
2.3.4适配器 24
2.3.5下载器 25
2.4Quartus Ⅱ简介 25
2.5IP核简介 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.2PROM 32
3.2.3PLA 34
3.2.4PAL 35
3.2.5GAL 36
3.3CPLD的结构与工作原理 38
3.4FPGA结构与工作原理 41
3.4.1查找表逻辑结构 42
3.4.2Cyclone Ⅲ系列器件的结构与原理 42
3.5硬件测试技术 48
3.5.1内部逻辑测试 48
3.5.2JTAG边界扫描测试 48
3.5.3嵌入式逻辑分析仪 52
3.6FPGA/CPLD产品概述 52
3.6.1Lattice公司的CPLD器件系列 52
3.6.2Xilinx公司的FPGA和CPLD器件系列 53
3.6.3Altera公司的FPGA和CPLD器件系列 55
3.6.4Actel公司的FPGA器件 58
3.6.5Altera公司的FPGA配置方式与配置器件 58
3.7编程与配置 59
3.7.1使用JTAG的CPLD在系统编程 60
3.7.2使用JTAG在线配置FPGA 61
3.7.3FPGA专用配置器件 61
3.7.4使用单片机配置FPGA 63
3.7.5使用CPLD配置FPGA 64
习题 64
第4章 Verilog HDL设计初步 66
4.1组合电路的Verilog HDL描述 66
4.1.14选1多路选择器及其Verilog HDL描述1 66
4.1.24选1多路选择器及其Verilog HDL描述2 74
4.1.34选1多路选择器及其Verilog HDL描述3 76
4.1.44选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.6Verilog的时钟过程描述注意要点 88
4.2.7异步时序电路 89
4.3计数器的Verilog HDL设计 90
4.3.14位二进制加法计数器及其Verilog描述 90
4.3.2功能更全面的计数器设计 91
习题 93
第5章 Quartus Ⅱ应用初步 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.3AS模式编程 108
5.2.4JTAG间接模式编程配置器件 108
5.2.5USB-Blaster编程配置器件使用方法 110
5.2.6其他的锁定引脚方法 110
5.3嵌入式逻辑分析仪使用方法 112
5.4编辑SignalTap Ⅱ的触发信号 116
5.5原理图输入设计方法 117
5.5.1层次化设计流程 118
5.5.2应用宏模块的多层次原理图设计 121
5.5.374系列宏模块逻辑功能真值表查询 125
习题 125
实验与设计 126
5-1设计含异步清0、同步加载与时钟使能的计数器 126
5-24选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.4if语句概述 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.8Verilog HDL的RTL表述 162
6.8.1行为描述 163
6.8.2数据流描述 164
6.8.3结构描述 164
习题 165
实验与设计 166
6-1半整数与奇数分频器设计 166
6-2简易分频器设计 166
6-3VGA彩条信号显示控制电路设计 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 Ⅱ中对宏功能模块进行例化 175
7.2LPM计数器模块使用方法 175
7.2.1LPM COUNTER计数器模块文本文件的调用 176
7.2.2LPM计数器程序与参数传递语句 177
7.2.3创建工程与仿真测试 178
7.3基于LPM的流水线乘法累加器设计 179
7.3.1LPM加法器模块设置调用 180
7.3.2LPM乘法器模块设置调用 181
7.3.3乘法累加器的仿真测试 181
7.3.4乘法器的Verilog文本表述和相关属性设置 182
7.4LPM随机存储器的设置和调用 183
7.4.1存储器初始化文件生成 183
7.4.2LPM RAM的设置和调用 185
7.4.3对LPM RAM仿真测试 187
7.4.4Verilog的存储器描述及相关属性 187
7.5LPM ROM的定制和使用示例 190
7.5.1LPM ROM的定制、调用和测试 191
7.5.2LPM存储器模块取代设置 191
7.5.3简易正弦信号发生器设计 192
7.5.4正弦信号发生器硬件实现和测试 193
7.6在系统存储器数据读写编辑器应用 194
7.7FIFO定制 196
7.8LPM嵌入式锁相环调用 197
7.8.1建立嵌入式锁相环元件 197
7.8.2联合设计与测试 199
7.8.3测试锁相环 199
7.9NCO核数控振荡器使用方法 200
7.10使用IP Core设计FIR滤波器 202
7.118051单片机IP核应用 204
7.12DDS实现原理与应用 206
7.12.1DDS实现原理 206
7.12.2DDS信号发生器设计 208
习题 210
实验与设计 210
7-1查表式硬件运算器设计 210
7-2简易正弦信号发生器设计 211
7-38位数码显示频率计设计 212
7-4简易逻辑分析仪设计 213
7-5DDS信号发生器设计 214
7-6DDS移相信号发生器设计 214
7-74×4阵列键盘键信号检测电路设计 215
7-88051单片机IP核SOC片上系统设计实验 217
7-9VGA简单图像显示控制模块设计 217
第8章 Verilog有限状态机设计 219
8.1Verilog HDL状态机的一般形式 219
8.1.1为什么要使用状态机 220
8.1.2一般有限状态机的结构 221
8.1.3状态机设计初始控制与表述 224
8.2Moore型有限状态机的设计 225
8.2.1ADC采样控制设计及多过程结构型状态机 226
8.2.2序列检测器之状态机设计 230
8.3Mealy型有限状态机的设计 231
8.4SystemVerilog的枚举类型应用 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-45功能智能逻辑笔设计 252
8-5比较器加DAC器件实现ADC转换功能电路设计 253
8-6通用异步收发器UART设计 254
8-7点阵型与字符型液晶显示器驱动控制电路设计 255
8-8串行ADC/DAC采样或信号输出控制电路设计 256
8-9数字温度传感器DS18B20测控电路设计 256
8-10AM幅度调制信号发生器设计 256
8-11硬件消抖动电路设计 258
第9章 Verilog HDL基本要素与语句 259
9.1Verilog HDL文字规则 259
9.2Verilog HDL数据类型 261
9.2.1网线类型(Net型) 261
9.2.2寄存器类型(Register型) 262
9.2.3存储器类型 262
9.3操作符 262
9.4Verilog HDL语句 263
9.4.1initial过程语句 264
9.4.2forever循环语句 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-5PC机键盘经UART串口控制模型电子琴电路设计 284
9-6基于M9K RAM型LPM移位寄存器设计 286
9-7单片全数字型DDS函数信号发生器设计 286
9-8PS2键盘控制模型电子琴电路设计 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.1Settings设置 297
10.3.2HDL版本设置及Analysis&Synthesis功能 298
10.3.3Analysis&Synthesis的优化设置 298
10.3.4适配器Fitter设置 298
10.3.5SignalProbe使用方法 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.11LogicLock优化技术 305
10.4Chip Planner应用 306
10.4.1Chip Planner应用实例 306
10.4.2Chip Planner功能说明 307
10.4.3利用Change Manager检测底层逻辑 308
10.5Synplify Pro的应用及其与Quartus Ⅱ接口 309
10.5.1Synplify Pro设计指南 310
10.5.2Synplify Pro与Quartus Ⅱ的接口方法 312
习题 313
实验与设计 314
10-1SPWM脉宽调制控制系统设计 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-10GPS应用的通信电路设计 323
10-11VGA动画图像显示控制电路设计 324
10-12状态机控制串/并转换8数码静态显示 324
10-13SignalProbe/Synplify应用等的综合实验 325
第11章 Verilog仿真验证 326
11.1Verilog仿真方法与仿真流程 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.6Verilog其他仿真语句 349
11.6.1initial语句 349
11.6.2fork-join块语句 350
11.6.3wait语句 352
11.6.4force、release语句 352
11.6.5deassign语句 353
11.7仿真激励信号的产生 353
11.8Verilog Test Bench(测试基准) 355
11.9Verilog数字系统仿真 356
习题 357
实验与设计 357
11-1在ModelSim上进行4位计数器仿真 357
11-2在ModelSim上进行16位累加器设计仿真 358
第12章 SOPC技术 359
12.1Nios Ⅱ嵌入式CPU核 359
12.1.1Nios Ⅱ处理器 359
12.1.2Nios Ⅱ系统的优势 360
12.2Nios Ⅱ设计流程及外围接口 362
12.2.1Nios Ⅱ系统设计流程 362
12.2.2Avalon总线外设 363
12.2.3DMA内核 365
12.2.4自定制硬件指令 366
12.3.Nios Ⅱ系统设计流程 367
12.3.1Nios Ⅱ硬件系统设计流程 367
12.3.2Nios Ⅱ软件设计流程 371
12.4Nios Ⅱ系统深入设计 376
12.4.1用户自定义组件设计 376
12.4.2用户自定义指令设计 377
12.4.3IDE Flash编程下载 378
12.5SOPC综合设计 380
实验与设计 384
12-1多功能数字钟 384
12-2彩色液晶显示控制电路设计 384
12-3基于Nios Ⅱ的直流电机控制 385
12-4自定制硬件乘法器 385
12-5乐曲演播控制 386
12-6基于UART的I2C总线传输 386
12-7基于Nios Ⅱ的等进度频率计程序设计 387
附录A EDA开发系统相关软硬件简介 388
A.1KX 7C5E+型EDA开发系统配置及实验简介 388
A.2辅助开发板A使用简介 391
A.3辅助开发板B使用简介 393
A.4KX PK4等系列EDA实验开发系统实验图 394
A.5MIF文件生成器使用方法 396
参考文献 399