第1章 数字系统EDA设计概述 1
1.1 数字系统EDA技术的发展 2
1.1.1 数字系统设计技术发展历史 2
1.1.2 集成电路芯片的发展历史 7
1.2 数字系统设计方法 8
1.2.1 数字系统设计方法概述 8
1.2.2 SOP和POS表达式 9
1.2.3 传统数字系统设计流程 11
1.2.4 计算机最小化技术 12
1.2.5 现代数字系统设计流程 16
1.3 HDL语言 19
1.3.1 HDL语言概述 19
1.3.2 HDL语言的特点和发展 20
习题 22
第2章 可编程逻辑器件设计方法 23
2.1 可编程逻辑器件制造工艺 24
2.2 可编程逻辑器件结构 25
2.2.1 CPLD原理及结构 25
2.2.2 FPGA原理及结构 28
2.2.3 CPLD和FPGA比较 40
2.3 Xilinx可编程逻辑器件 41
2.3.1 Xilinx CPLD芯片介绍 41
2.3.2 Xilinx FPGA芯片介绍 43
2.3.3 Xilinx PROM芯片介绍 55
2.4 可编程逻辑器件的选择原则 57
习题 58
第3章 VHDL语言基础 59
3.1 VHDL程序结构 60
3.1.1 VHDL程序结构概述 60
3.1.2 VHDL程序实体 60
3.1.3 VHDL程序结构体 62
3.2 VHDL语言的描述风格 64
3.2.1 行为描述 65
3.2.2 数据流描述 65
3.2.3 结构描述 66
3.3 设计资源共享 67
3.3.1 库 67
3.3 2 包集合 69
3.3 3 子程序和函数 70
3.3.4 元件配置 72
3.4 VHDL语言的文字规则 73
3.4.1 数字型文字 73
3.4.2 字符型文字 74
3.4.3 标识符 75
3.4.4 下标名及下标段名 76
3.5 VHDL语言的数据对象、类型和属性 76
3.5.1 VHDL语言的数据对象 76
3.5.2 VHDL语言的数据类型 78
3.5.3 VHDL语言的预定义属性 85
3.6 VHDL语言的操作符 88
3.7 VHDL语言的顺序描述语句 90
3.7.1 对象赋值语句 90
3.7.2 转向控制语句 92
3.7.3 断言语句 98
3.8 VHDL语言的并发描述语句 100
3.8.1 进程描述语句 100
3.8.2 并行信号赋值语句 101
3 8.3 条件信号赋值语句 102
3 8.4 选择信号赋值语句 103
3.8.5 并行过程调用语句 103
3 8.6 块语句 104
3.9 VHDL元件声明及例化语句 105
3.9.1 元件声明 105
3.9.2 元件例化 106
3.9.3 生成语句 108
3.10 VHDL文件操作 109
习题 111
第4章 数字逻辑单元设计 113
4.1 组合逻辑电路设计 114
4.1.1 门电路设计 114
4.1.2 编码器和译码器设计 114
4.1.3 数据选择器设计 116
4.1.4 数字比较器设计 117
4.1.5 总线缓冲器设计 118
4.2 数据运算单元设计 119
4.2.1 加法器设计 119
4.2.2 减法器设计 120
4.2.3 乘法器设计 120
4.2.4 除法器设计 121
4.2.5 算术逻辑单元设计 123
4.3 时序逻辑电路设计 125
4.3.1 触发器和锁存器的设计 125
4.3.2 计数器设计 128
4.3.3 移位寄存器设计 131
4.3.4 脉冲宽度调制(PWM)设计 137
4.4 存储器设计 139
4.4.1 ROM设计 139
4.4.2 RAM设计 140
4.5 有限自动状态机设计 141
4.5.1 FSM设计原理 142
4.5.2 FSM的分类及描述 144
习题 152
第5章 数字系统高级设计技术 153
5.1 VHDL高级设计技巧 154
5.1.1 逻辑复制和复用技术 154
5.1.2 并行和流水线技术 157
5.1.3 同步和异步单元处理技术 160
5.1.4 逻辑结构处理技术 163
5.2 IP核设计技术 167
5.2.1 IP核的分类 167
5.2.2 IP核的优化 168
5.2.3 IP核的生成 169
5.2.4 IP核的应用 169
习题 174
第6章 基于HDL语言设计输入 176
6.1 ISE软件开发平台 177
6.2 建立工程 178
6.3 设计原理 182
6.4 添加设计和检查 183
6.5 创建基于HDL语言的模块 183
6.6 IP核的生成和例化 186
6.6.1 timer_preset模块的生成和例化 186
6.6.2 DCM模块的生成和例化 189
习题 191
第7章 基于原理图设计输入 192
7.1 建立工程 193
7.2 设计原理 194
7.3 创建原理图模块 196
7.3.1 设置原理图编辑器 196
7.3.2 定义模块符号 197
7.3.3 创建模块及相关模块原理图 200
7.3.4 顶层模块原理图的设计 201
7.3.5 分配引脚位置 203
习题 205
第8章 设计综合和行为仿真 206
8.1 设计综合的实现 207
8.1.1 设计综合原理 207
8.1.2 设计综合实现 207
8.2 行为仿真的实现 210
8.2.1 测试平台概述 210
8.2.2 仿真环境的设置 211
8.2.3 添加HDL测试平台 212
8.2.4 基于Modelsim实现行为仿真 212
8.2.5 基于ISim实现行为仿真 216
习题 220
第9章 设计实现和时序仿真 221
9.1 实现过程概述及约束 222
9.1.1 实现过程概述 222
9.1.2 继续前面的设计 222
9.2 设计实现过程 222
9.3 设置实现属性参数 223
9.4 创建时序约束 224
9.5 设计翻译 225
9.6 设计约束 226
9.6.1 编辑约束 226
9.6.2 使用PlanAhead分配I/O位置 229
9.7 设计映射及时序分析 232
9.7.1 设计映射 232
9.7.2 使用时序分析评估块延迟 233
9.8 布局布线验证 234
9.8.1 用FPGA Editor验证布局布线 235
9.8.2 评估布局后的时序 237
9.8.3 使用PlanAhead分析设计 237
9.9 时序仿真实现 238
9.9.1 时序仿真概述 238
9.9.2 使用ModelSim进行时序仿真 239
9.9.3 使用ISim仿真器进行时序仿真 243
习题 247
第10章 设计下载和调试 248
10.1 PLD配置接口 249
10.1.1 JTAG模式 249
10.1.2 串行模式 250
10.1.3 SelectMAP模式 253
10.1.4 主SPI模式 255
10.1.5 主BPI模式 257
10.2 创建配置数据 258
10.2.1 配置属性 258
10.2.2 创建PROM文件 259
10.3 下载实现 261
10.3.1 下载实现设置 261
10.3.2 JTAG诊断 266
10.3.3 建立SVF文件 267
10.4 PLD调试 269
10.4.1 应用多路复用技术 270
10.4.2 应用虚拟逻辑分析工具 270
10.4.3 应用ChipScope Pro调试工具 271
习题 273
第11章 数字时钟设计及实现 274
11.1 数字时钟的功能要求和结构 275
11.1.1 数字时钟的功能要求 275
11.1.2 数字时钟的整体结构 275
11.2 模块设计 275
11.2.1 数字时钟控制信号 275
11.2.2 控制模块结构 276
11.3 设计实现 278
习题 284
第12章 通用异步接收/发送器设计及实现 285
12.1 UART设计原理 286
12.1.1 UART原理和设计描述 286
12.1.2 接收模块设计 287
12.1.3 发送模块设计 288
12.1.4 UART的VHDL设计代码 289
12.2 UART设计验证 295
12.2.1 验证原理 295
12.2.2 验证代码 295
习题 297
第13章 数字电压表设计及实现 298
13.1 数字电压表的功能要求和结构 299
13.1.1 数字电压表的功能要求 299
13.1.2 数字电压表的整体结构 299
13.2 模块设计 299
13.2.1 数字电压表控制信号 299
13.2.2 ADC转换原理 300
13.2.3 控制模块结构 301
13.3 设计实现 302
13.3.1 ADC控制模块原理及实现 302
13.3.2 显示控制模块原理及实现 304
13.3.3 程序包的设计 306
13.3.4 顶层模块的设计 308
习题 309
第14章 软核处理器PicoBlaze的原理及应用 310
14.1 片上可编程系统概述 311
14.1.1 片上微控制器和专用微控制器的比较 311
14.1.2 片上微控制器和片上逻辑的比较 311
14.2 PicoBlaze微控制器的原理及结构分析 312
14.2.1 PicoBlaze微控制器概述 312
14.2.2 PicoBlaze微控制器应用框架 313
14.2.3 PicoBlaze微控制器的内部结构及分析 314
14.3 PicoBlaze微控制器指令集 317
14.3.1 PicoBlaze指令类型及编码 317
14.3.2 控制程序转移指令 317
14.3.3 中断指令 319
14.3.4 逻辑操作指令 320
14.3.5 算术运算指令 323
14.3.6 循环转移指令 326
14.3.7 输入和输出指令 327
14.4 PicoBlaze微控制器汇编程序 328
14.4.1 KCPSM3汇编器原理及操作 328
14.4.2 KCPSM3编程语法 333
14.4.3 KCPSM3中断处理 335
14.4.4 KCPSM3中的CALL/RETURN栈 338
14.4.5 KCPSM3共享程序空间 339
14.4.6 KCPSM3输出/输入端口的设计 340
14.5 基于PicoBlaze微控制器的PWM控制 342
14.5.1 系统性能要求和结构 342
14.5.2 系统PWM控制原理 344
14.5.3 系统UART模块设计 347
习题 349