第1章 EDA技术概述 1
1.1 EDA技术及其发展 1
1.2 EDA技术实现目标 3
1.3 硬件描述语言Verilog HDL 4
1.4 其他常用HDL 5
1.5 HDL综合 6
1.6 自顶向下的设计技术 8
1.7 EDA技术的优势 11
1.8 EDA设计流程 12
1.8.1 设计输入(原理图/HDL文本编辑) 12
1.8.2 综合 14
1.8.3 适配 14
1.8.4 时序仿真与功能仿真 14
1.8.5 编程下载 15
1.8.6 硬件测试 15
1.9 ASIC及其设计流程 15
1.9.1 ASIC设计简介 15
1.9.2 ASIC设计一般流程简述 17
1.10 常用EDA工具 18
1.10.1 设计输入编辑器 18
1.10.2 HDL综合器 19
1.10.3 仿真器 20
1.10.4 适配器 21
1.10.5 下载器 21
1.11 Quartus Ⅱ概述 21
1.12 IP核 23
1.13 EDA技术发展趋势管窥 24
习题 26
第2章 FPGA与CPLD的结构原理 27
2.1 PLD概述 27
2.1.1 PLD的发展历程 27
2.1.2 PLD分类 28
2.2 简单PLD结构原理 29
2.2.1 逻辑元件符号表示 29
2.2.2 PROM结构原理 30
2.2.3 PLA结构原理 32
2.2.4 PAL结构原理 32
2.2.5 GAL结构原理 34
2.3 CPLD的结构原理 36
2.4 FPGA的结构原理 39
2.4.1 查找表逻辑结构 39
2.4.2 Cyclone Ⅲ系列器件的结构原理 40
2.5 硬件测试 45
2.5.1 内部逻辑测试 45
2.5.2 JTAG边界扫描 46
2.5.3 嵌入式逻辑分析仪 49
2.6 大规模PLD产品概述 49
2.6.1 Lattice公司的PLD器件 49
2.6.2 Xilinx公司的PLD器件 51
2.6.3 Altera公司的PLD器件 53
2.6.4 Actel公司的PLD器件 56
2.6.5 Altera的FPGA配置方式 56
2.7 CPLD/FPGA的编程与配置 57
2.7.1 CPLD在系统编程 57
2.7.2 FPGA配置方式 58
2.7.3 FPGA专用配置器件 59
2.7.4 使用单片机配置FPGA 60
2.7.5 使用CPLD配置FPGA 62
习题 62
第3章 Verilog设计入门 63
3.1 组合电路的Verilog描述 63
3.1.1 2选1多路选择器及其Verilog描述 63
3.1.2 4选1多路选择器及其case语句表述方式 67
3.1.3 4选1多路选择器及其数据流描述方式 72
3.1.4 4选1多路选择器及其if语句描述方式 75
3.1.5 加法器及其Verilog描述 77
3.2 时序模块及其Verilog表述 82
3.2.1 边沿触发型触发器及其Verilog表述 82
3.2.2 电平触发型锁存器及其Verilog表述 83
3.2.3 含异步复位/时钟使能型触发器及其Verilog表述 85
3.2.4 同步复位型触发器及其Verilog表述 85
3.2.5 异步复位型锁存器及其Verilog表述 86
3.2.6 Verilog的时钟过程表述的特点和规律 87
3.2.7 异步时序模块的Verilog表述 88
3.3 二进制计数器及其Verilog设计 89
3.3.1 4位二进制计数器及其Verilog表述 89
3.3.2 功能更全面的计数器设计 91
习题 93
第4章 EDA工具应用初步 95
4.1 硬件逻辑电路的一般设计和测试流程 95
4.1.1 编辑和输入设计文件 95
4.1.2 创建工程 96
4.1.3 全程编译前约束项目设置 98
4.1.4 全程综合与编译 99
4.1.5 仿真测试 100
4.1.6 RTL图观察器应用 103
4.2 引脚锁定与硬件测试 104
4.2.1 引脚锁定 104
4.2.2 编译文件下载 105
4.2.3 AS直接编程模式 106
4.2.4 JTAG间接编程模式 106
4.2.5 USB-Blaster编程配置器件使用方法 108
4.2.6 图形方式设置引脚锁定 108
4.2.7 利用引脚属性定义方式锁定引脚 108
4.3 嵌入式逻辑分析仪使用方法 109
4.4 编辑SignalTap Ⅱ的触发信号 114
4.5 原理图编辑输入设计流程 115
4.5.1 基于原理图的层次化设计流程 116
4.5.2 应用宏模块设计频率计 119
4.5.3 宏模块逻辑功能查询 123
4.6 keep属性应用 123
4.7 SignalProbe使用方法 125
4.8 Settings设置 126
4.9 Fitter Settings项设置 126
4.10 HDL版本设置及Analysis & Synthesis功能 127
4.11 功能块Chip Planner应用 128
4.11.1 Chip Planner应用流程说明 128
4.11.2 Chip Planner说明 129
4.11.3 利用Change Manager检测底层逻辑 130
4.12 Synplify的应用及接口方法 131
4.12.1 Synplify使用流程 132
4.12.2 Synplify与Quartus Ⅱ接口 134
习题 136
实验与设计 137
4-1 计数器设计实验 137
4-2 多路选择器设计实验 138
4-3 8位全加器设计实验 138
4-4 原理图输入法设计频率计 139
4-5 十六进制7段数码显示译码器设计 139
4-6 数码扫描显示电路设计 140
第5章 Verilog设计深入 142
5.1 过程中的两类赋值语句 142
5.1.1 阻塞式赋值 142
5.1.2 非阻塞式赋值 143
5.1.3 深入认识阻塞赋值和非阻塞式赋值的特点 144
5.2 过程结构总结 148
5.3 移位寄存器设计 151
5.3.1 含同步预置功能的移位寄存器设计 152
5.3.2 模式可控的移位寄存器设计 153
5.3.3 使用移位操作符设计移位寄存器 154
5.4 乘法器设计及相关语句应用 155
5.4.1 参数定义关键词parameter 155
5.4.2 整数型寄存器类型定义 155
5.4.3 for语句用法 156
5.4.4 repeat语句用法 157
5.4.5 while语句用法 157
5.4.6 Verilog循环语句的特点 158
5.5 if语句一般用法 158
5.6 三态与双向端口设计 161
5.6.1 三态控制电路设计 162
5.6.2 双向端口设计 162
5.6.3 三态总线控制电路设计 164
5.7 模可控计数器设计 166
5.7.1 同步加载模型设计 166
5.7.2 异步加载模型设计 168
5.7.3 异步清0加载模型设计 168
5.7.4 同步清0加载模型设计 169
5.8 半整数与奇数分频电路设计 170
5.9 Verilog的描述风格 171
5.9.1 RTL描述 172
5.9.2 行为描述 172
5.9.3 数据流描述 174
5.9.4 结构描述 174
习题 175
实验与设计 175
5-1 半整数与奇数分频器设计 175
5-2 模可控计数器设计 176
5-3 VGA彩条信号显示控制电路设计 176
5-4 移位相加型8位硬件乘法器设计 179
5-5 移位寄存器设计 181
5-6 串行静态显示控制电路设计 181
第6章 EDA工具应用深入 182
6.1 LPM计数器模块调用 182
6.1.1 计数器LPM模块文本文件的调用 182
6.1.2 LPM计数器程序与参数传递语句 184
6.1.3 创建工程与仿真测试 185
6.2 流水线乘法累加器设计 186
6.2.1 LPM加法器模块设置 187
6.2.2 LPM乘法器模块设置 188
6.2.3 仿真乘法累加器 188
6.2.4 乘法器的Verilog文本表述和相关属性设置 189
6.3 LPM_RAM模块的设置 191
6.3.1 初始化文件生成 191
6.3.2 LPM_RAM设置和调用 193
6.3.3 测试LPM_RAM 195
6.3.4 存储器的Verilog文本描述及相关属性应用 195
6.4 LPM_ROM的定制和使用示例 199
6.4.1 LPM_ROM定制和测试 199
6.4.2 LPM存储器模块取代设置 200
6.4.3 正弦信号发生器设计 200
6.4.4 硬件实现和测试 201
6.5 在系统存储器数据读写编辑器应用 202
6.6 FIFO定制 204
6.7 嵌入式锁相环ALTPLL调用 205
6.7.1 嵌入式锁相环参数设置 205
6.7.2 锁相环调用和测试的注意事项 207
6.8 数控振荡器核使用方法 208
6.9 FIR核使用方法 211
6.10 单片机IP核应用 213
6.11 DDS实现原理与应用 215
6.11.1 DDS原理 215
6.11.2 DDS信号发生器设计 217
习题 218
实验与设计 218
6-1 查表式硬件运算器设计 218
6-2 正弦信号发生器设计 220
6-3 8位数码显示频率计设计 220
6-4 简易逻辑分析仪设计 221
6-5 DDS正弦信号发生器设计 222
6-6 移相信号发生器设计 223
6-7 4×4阵列键盘键信号检测电路设计 224
6-8 VGA简单图像显示控制模块设计 226
6-9 8051单片机IP核SOC片上系统设计实验 227
6-10 基于8051核的数字温度器件DSl8B20测控电路设计 227
第7章 系统设计优化 228
7.1 资源优化 228
7.1.1 资源共享 229
7.1.2 逻辑优化 230
7.1.3 串行化 231
7.2 速度优化 232
7.2.1 流水线设计 232
7.2.2 寄存器配平 234
7.2.3 关键路径法 235
7.2.4 乒乓操作法 235
7.2.5 加法树法 236
7.3 优化设置与分析 236
7.3.1 增量布局布线控制 236
7.3.2 检查设计可靠性 237
7.3.3 时序设置与分析 237
7.3.4 查看时序分析结果 239
7.3.5 适配优化设置 240
7.3.6 LogicLock优化技术 242
习题 242
实验与设计 243
7-1 SPWM脉宽调制控制系统设计 243
7-2 基于DES数据加密标准的加解密系统设计 245
7-3 采用流水线技术设计高速数字相关器 246
7-4 线性反馈移位寄存器设计 246
7-5 步进电机细分控制电路设计 247
7-6 基于FT245BM的USB通信控制模块设计 250
7-7 直流电机综合测控系统设计 250
7-8 VGA动画图像显示控制电路设计 252
7-9 AM幅度调制信号发生器设计 252
第8章 有限状态机设计技术 254
8.1 Verilog状态机的一般形式 254
8.1.1 状态机的特点与优势 255
8.1.2 状态机的一般结构 256
8.1.3 初始控制与表述 259
8.2 Moore型状态机及其设计 261
8.2.1 多过程结构型状态机 261
8.2.2 序列检测器及其状态机设计 265
8.3 Mealy型状态机设计 266
8.4 SystemVerilog的枚举类型应用 270
8.5 状态机图形编辑设计 270
8.6 不同编码类型状态机 272
8.6.1 直接输出型编码 273
8.6.2 用宏定义语句定义状态编码 275
8.6.3 宏定义命令语句 276
8.6.4 顺序编码 276
8.6.5 一位热码编码 277
8.6.6 状态编码设置 277
8.7 安全状态机设计 279
8.7.1 状态导引法 280
8.7.2 状态编码监测法 280
8.7.3 借助EDA工具自动生成安全状态机 281
8.8 硬件数字技术排除毛刺 281
8.8.1 延时方式去毛刺 281
8.8.2 逻辑方式去毛刺 283
8.8.3 定时方式去毛刺 284
习题 285
实验与设计 285
8-1 序列检测器设计 285
8-2 ADC采样控制电路设计 286
8-3 数据采集模块设计 287
8-4 五功能智能逻辑笔设计 288
8-5 比较器加DAC器件实现ADC转换功能电路设计 290
8-6 通用异步收发器UART设计 290
8-7 点阵型与字符型液晶显示器驱动控制电路设计 291
8-8 串行ADC/DAC控制电路设计 292
8-9 硬件消抖动电路设计 292
8-10 数字彩色液晶显示控制电路设计 292
8-11 状态机控制串/并转换8数码静态显示 293
8-12 基于CPLD的FPGAPS模式编程配置控制电路设计 294
第9章 Verilog语言规则 295
9.1 文字规则 295
9.2 数据类型 297
9.2.1 net网线类型 297
9.2.2 register寄存器类型 298
9.2.3 存储器类型 298
9.3 操作符 298
9.4 基本语句 299
9.4.1 initial过程语句 299
9.4.2 forever循环语句 300
9.4.3 编译指示语句 301
9.4.4 任务和函数语句 302
9.5 用库元件实现结构描述 305
习题 306
实验与设计 307
9-1 乐曲硬件演奏电路设计 307
9-2 等精度频率/脉宽/占空比/相位多功能测试仪设计 311
9-3 正交幅度调制与解调系统实现 317
9-4 基于UART串口控制的模型电子琴设计 319
9-5 基于M9K RAM型LPM移位寄存器设计 321
9-6 单片全数字型DDS函数信号发生器综合设计实验 321
9-7 乒乓球游戏电路设计 321
9-8 PS2键盘控制模型电子琴电路设计 322
9-9 GPS应用的通信电路设计 323
第10章 Verilog行为仿真 324
10.1 Verilog行为仿真流程 324
10.2 ModelSim应用向导 327
10.3 Verilog系统任务和预编译语句 332
10.3.1 系统任务、系统函数 332
10.3.2 预编译语句 338
10.4 基本元件与用户自定义元件(UDP) 339
10.4.1 基本元件及其用法 339
10.4.2 用户自定义元件(UDP) 342
10.5 延时模型 346
10.5.1 #延时 346
10.5.2 门延时 347
10.5.3 延时说明块 348
10.6 其他仿真语句 348
10.6.1 initial语句 348
10.6.2 fork-join块语句 349
10.6.3 wait语句 351
10.6.4 force、release语句 351
10.6.5 deassign语句 352
10.7 仿真激励信号的产生 352
10.8 Veilog测试基准 354
10.9 Verilog数字系统仿真 355
习题 356
实验与设计 357
10-1 在ModelSim上进行4位计数器仿真 357
10-2 在ModelSim上进行16位累加器设计仿真 357
第11章 SOPC系统开发技术 358
11.1 32位Nios Ⅱ嵌入式核 358
11.1.1 Nios Ⅱ结构 358
11.1.2 Nios Ⅱ系统的优势 359
11.2 SOPC系统设计流程 361
11.2.1 Nios Ⅱ系统设计流程 361
11.2.2 Avalon总线外设 362
11.2.3 DMA结构 364
11.2.4 自定制指令 365
11.3 SOPC系统设计示例 366
11.3.1 Nios Ⅱ硬件系统设计流程 366
11.3.2 Nios Ⅱ软件设计流程 370
11.4 SOPC系统接口设计 376
11.4.1 用户自定义组件设计 376
11.4.2 用户自定义指令设计 378
11.4.3 IDE Flash编程下载 379
11.5 SOPC系统综合设计 382
实验与设计 385
11-1 多功能数字钟 385
11-2 彩色液晶显示控制电路设计 386
11-3 基于Nios Ⅱ的直流电机控制 387
11-4 自定制硬件乘法器 387
11-5 乐曲演播控制 388
11-6 基于UART的12C总线传输 389
11-7 基于Nios Ⅱ的等进度频率计程序设计 390
附录 EDA开发系统使用简介 391
1.1 KX-7C5E+型EDA/SOPC系统 392
1.2 KX-DN5/7系列EDA/SOPC系统 394
1.3 EDA/SOPC设计实验标准扩展模块 395
1.4 MIF文件生成器使用方法 398
主要参考文献 401