第1章 概述 1
1.1 EDA技术及其发展 1
1.2 EDA技术实现目标 3
1.3硬件描述语言VHDL 4
1.4 VHDL综合 5
1.5基于VHDL的自顶向下设计方法 7
1.6 EDA与传统电子设计方法的比较 10
1.7 EDA的发展趋势 12
习题 14
第2章 EDA设计流程及其工具 15
2.1 FPGA/CPLD设计流程 15
2.1.1设计输入(原理图/HDL文本编辑) 15
2.1.2综合 17
2.1.3适配 17
2.1.4时序仿真与功能仿真 17
2.1.5编程下载 18
2.1.6硬件测试 18
2.2 ASIC及其设计流程 18
2.2.1 ASIC设计方法 19
2.2.2一般ASIC设计的流程 20
2.3常用EDA工具 22
2.3.1设计输入编辑器 22
2.3.2 HDL综合器 23
2.3.3仿真器 24
2.3.4适配器(布局布线器) 25
2.3.5下载器(编程器) 25
2.4 MAX+plus Ⅱ概述 25
2.5 IP核 27
习题 29
第3章 FPGA/CPLD结构与应用 30
3.1概述 30
3.1.1可编程逻辑器件的发展历程 30
3.1.2可编程逻辑器件的分类 31
3.2简单PLD原理 32
3.2.1电路符号表示 32
3.2.2 PROM 33
3.2.3 PLA 35
3.2.4 PAL 36
3.2.5 GAL 37
3.3 CPLD结构与工作原理 40
3.4 FPGA结构与工作原理 44
3.4.1查找表 44
3.4.2 FLEX10K系列器件 44
3.5 FPGA/CPLD测试技术 49
3.5.1内部逻辑测试 49
3.5.2 JTAG边界扫描测试 50
3.5.3嵌入式逻辑分析仪 53
3.6 FPGA/CPLD产品概述 54
3.6.1 Lattice公司CPLD器件系列 54
3.6.2 Xilinx公司的FPGA和CPLD器件系列 55
3.6.3 Altera公司FPGA和CPLD器件系列 57
3.6.4 Actel公司的FPGA器件系列 60
3.6.5 Altera公司的FPGA配置方式与器件系列 60
3.7 CPLD和FPGA的编程与配置 61
3.7.1 CPLD的ISP方式编程 62
3.7.2使用PC并行口配置FPGA 63
3.7.3使用专用配置器件配置FPGA 65
3.7.4使用单片机配置FPGA 67
3.7.5使用CPLD配置FPGA 68
习题 68
实验与设计 69
3-1单片机或CPLD及EPROM配置FPGA电路设 69
第4章 VHDL设计初步 70
4.1多路选择器VHDL描述 70
4.1.1 2选1多路选择器的VHDL描述 70
4.1.2 VHDL相关语法说明 72
4.1.3 VHDL设计的基本概念和语句小节 76
4.2寄存器描述及其VHDL语言现象 77
4.2.1 D触发器的VHDL描述 77
4.2.2 D触发器VHDL描述的语言现象说明 78
4.2.3实现时序电路的VHDL不同表达方式 82
4.2.4异步时序电路设计 85
4.3 1位二进制全加器的VHDL设计 86
4.3.1半加器描述和CASE语句 88
4.3.2全加器描述和例化语句 90
4.3.3 VHDL设计基本概念和语言现象小节 92
4.4 VHDL文本输入设计方法初步 92
4.4.1编辑输入并保存VHDL源文件 92
4.4.2将当前设计设定为工程和选定目标器件 94
4.4.3选择VHDL文本编译版本号和排错 95
4.4.4时序仿真 96
4.4.5设计项目的其他信息和资源配置 100
4.4.6引脚锁定 101
4.4.7编程下载和测试 102
4.4.8设计流程归纳 103
4.4.9 MAX+plus Ⅱ在Windows 2000/XP上的安装设置 104
习题 105
实验与设计 106
4-1简单组合电路的设计 106
4-2简单时序电路的设计 107
第5章 VHDL设计进阶 108
5.1 4位加法计数器的VHDL描述 108
5.1.1 4位加法计数器 108
5.1.2整数、自然数和正整数数据类型 109
5.1.3 4位加法计数器的另一种表达方式 110
5.2不同工作方式的时序电路设计 112
5.2.1相关语法 112
5.2.2带有复位和时钟使能的十进制计数器 113
5.2.3带有并行置位的移位寄存器 115
5.3数据对象DATA OBJECTS 116
5.3.1常数(CONSTANT) 117
5.3.2变量(VARIABLE) 117
5.3.3信号(SIGNAL) 118
5.3.4进程中的信号与变量赋值语句 119
5.4双向电路和三态控制电路设计 127
5.4.1三态门设计 127
5.4.2双向端口设计 128
5.4.3三态总线电路设计 130
5.4.4顺序条件语句IF语句 132
5.5进程语句结构 135
5.5.1进程语句格式 135
5.5.2 PROCESS组成 136
5.5.3进程要点 136
5.6仿真延时 139
5.6.1固有延时 139
5.6.2传输延时 140
5.6.3仿真δ 140
习题 141
实验与设计 142
5-1设计含异步清零和同步时钟使能的加法计数器 142
5-2 7段数码显示译码器设计 142
5-3 8位数码扫描显示电路设计 144
5-4 数控分频器的设计 146
5-5 8位十六进制频率计设计 147
5-6 32位并进/并出移位寄存器设计 151
第6章 原理图输入设计方法 152
6.1原理图方式设计初步 152
6.2较复杂电路的原理图设计 156
6.2.1设计有时钟使能的2位十进制计数器 156
6.2.2频率计主结构电路设计 158
6.2.3测频时序控制电路设计 159
6.2.4频率计顶层电路设计 160
6.3参数可设置LPM宏功能块应用 161
6.3.1基于LPM_COUNTER的数控分频器设计 161
6.3.2基于LPM_ROM的4位乘法器设计 162
6.4波形输入设计方法 165
习题 166
实验与设计 167
6-1用原理图输入法设计8位全加器 167
6-2用原理图输入法设计较复杂数字系统 167
6-3 LPM模块使用 168
第7章 有限状态机设计与LPM应用 169
7.1一般有限状态机的设计 169
7.1.1用户自定义数据类型定义语句 169
7.1.2为什么要使用状态机 171
7.1.3一般有限状态机的设计 172
7.2 Moore型有限状态机的设计 175
7.2.1多进程有限状态机 176
7.2.2单进程Moore型有限状态机 180
7.3 Mealy型有限状态机的设计 182
7.4状态编码 185
7.4.1状态位直接输出型编码 185
7.4.2顺序编码 187
7.4.3一位热码编码(One-Hot Encoding) 188
7.5状态机剩余状态处理 189
7.6 LPM模块的VHDL文本方式调用 191
7.6.1 A/D采样系统顶层电路设计 191
7.6.2编辑定制LPM_RAM模块 192
7.6.3双口RAM定制 194
7.6.4正弦信号发生器设计与LPM ROM定制 195
7.6.5编辑定制LPM_FIFO模块 199
7.6.6 LPM_FIFO定制文件的仿真测试 201
习题 202
实验与设计 204
7-1用状态机实现序列检测器的电路设计 204
7-2用状态机实现对ADC0809的采样控制电路 204
7-3波形发生与扫频信号发生器电路设计 205
7-4简易存储示波器设计 206
7-5用比较器和D/A器件实现A/D转换功能的电路设计 209
第8章 VHDL结构与要素 211
8.1实体 211
8.1.1实体语句结构 211
8.1.2 GENERIC类属说明语句 211
8.1.3类属映射语句 213
8.1.4 PORT(端口)说明 214
8.2结构体 214
8.3子程序 215
8.3.1函数(FUNCTION) 216
8.3.2重载函数(OVERLOADED FUNCTION) 218
8.3.3过程(PROCEDURE) 221
8.3.4重载过程(OVERLOADED PROCEDURE) 222
8.4 VHDL库 223
8.4.1库的种类 224
8.4.2库的用法 225
8.5 VHDL程序包 225
8.6配置 228
8.7 VHDL文字规则 229
8.7.1数字 229
8.7.2字符串 229
8.7.3标识符 230
8.7.4下标名 230
8.8数据类型 231
8.8.1 VHDL的预定义数据类型 231
8.8.2 IEEE预定义标准逻辑位与矢量 233
8.8.3其他预定义标准数据类型 234
8.8.4数组类型 235
8.9 VHDL操作符 237
8.9.1逻辑操作符 237
8.9.2关系操作符 239
8.9.3算术操作符 241
习题 244
实验与设计 245
8-1移位相加8位硬件乘法器电路设计 245
8-2乐曲硬件演奏电路设计 250
8-3乒乓球游戏电路设计 255
第9章 VHDL基本语句 262
9.1顺序语句 262
9.1.1赋值语句 262
9.1.2 IF语句 262
9.1.3 CASE语句 263
9.1.4 LOOP语句 266
9.1.5 NEXT语句 267
9.1.6 EXIT语句 268
9.1.7 WAIT语句 269
9.1.8子程序调用语句 272
9.1.9返回语句(RETURN) 274
9.1.10空操作语句(NULL) 275
9.2 VHDL并行语句 275
9.2.1并行信号赋值语句 276
9.2.2块语句 279
9.2.3并行过程调用语句 281
9.2.4元件例化语句 282
9.2.5生成语句 283
9.3属性描述与定义语句 288
习题 291
实验与设计 293
9-1 VGA彩条信号显示控制器设计 293
9-2 VGA图像显示控制器设计 298
9-3循环冗余校验(CRC)模块设计 300
9-4 EDA技术在步进电机细分驱动控制中的应用 302
9-5直流电机PWM控制的FPGA实现 308
第10章 设计优化和设计方法 311
10.1面积优化 311
10.1.1资源共享 311
10.1.2逻辑优化 313
10.1.3串行化 314
10.2速度优化 317
10.2.1流水线设计 317
10.2.2寄存器配平 320
10.2.3关键路径法 320
10.3使用MAX+plus Ⅱ优化设计 321
10.3.1全局逻辑综合选项 321
10.3.2时间需求选项 323
10.3.3打包 325
10.3.4局部逻辑综合选项 327
10.3.5探针的使用 329
10.4其他设置 330
10.4.1 Slow Slew Rate设置 331
10.4.2 FPGA配置器件设置与编程 331
10.4.3编程文件转换 333
10.4.4手工分配逻辑宏单元LC 333
习题 334
实验与设计 336
10-1采用流水线技术设计高速数字相关器 336
10-2线性反馈移位寄存器(LFSR)设计 337
10-3直接数字式频率合成器(DDS)设计 338
10-4数控移相正弦信号发生器设计 344
第11章 EDA工具软件接口 346
11.1 EDA软件接口流程 346
11.2 Synplify与MAX+plus Ⅱ的接口 347
11.3 ModelSim与MAX+plus Ⅱ的接口 352
习题 360
实验与设计 360
11-1 EDA工具接口实验 360
11-2 采用高速ADC TLC5510的简易存储示波器设计 360
第12章 电子系统设计实践 368
12.1等精度频率计设计 368
12.1.1主系统组成 368
12.1.2测频原理 369
12.1.3 FPGA/CPLD开发的VHDL设计 370
12.1.4测试与设计步骤 374
12.1.5相位测试 375
12.2使用IP Core设计FIR滤波器 376
习题 380
实验与设计 381
12-1多功能测试仪设计 381
12-2 FIR滤波器设计 381
附录 382
附录1 部分习题参考答案 382
附录2 EDA实验开发系统使用介绍 398
主要参考文献 406