第1章 EDA设计导论 1
1.1 EDA技术综述 1
1.1.1 EDA技术发展历史 1
1.1.2 EDA技术含义 3
1.1.3 EDA技术主要内容 3
1.2 PLD设计方法学 7
1.2.1 PLD设计概论 7
1.2.2 PLD设计流程 8
1.2.3 SOPC设计流程 11
1.3 HDL硬件描述语言 11
1.3.1 HDL硬件描述语言概念 11
1.3.2 HDL语言特点和比较 12
1.3.3 HDL语言最新发展 13
习题 14
第2章 可编程逻辑器件设计方法 15
2.1 可编程逻辑器件基础 15
2.1.1 可编程逻辑器件概述 15
2.1.2 可编程逻辑器件的发展历史 16
2.2 PLD芯片制造工艺 17
2.3 PLD芯片结构 18
2.3.1 CPLD原理及结构 18
2.3.2 FPGA原理及结构 20
2.3.3 CPLD和FPGA比较 24
2.3.4 PLD选择原则 25
2.4 Xilinx公司芯片简介 26
2.4.1 Xilinx CPLD芯片介绍 26
2.4.2 Xilinx FPGA芯片介绍 29
2.4.3 Xilinx PROM芯片介绍 40
习题 41
第3章 Verilog HDL语言基础 42
3.1 Verilog语言概述 42
3.1.1 Verilog HDL语言发展历史 42
3.1.2 Verilog HDL硬件描述语言功能 43
3.2 Verilog程序结构 44
3.2.1 模块声明 44
3.2.2 模块端口定义 45
3.2.3 信号类型声明 46
3.2.4 逻辑功能定义 46
3.3 Verilog语言要素 47
3.4 Verilog常量 48
3.4.1 整数型常量 48
3.4.2 实数型常量 50
3.4.3 字符串常量 50
3.5 Verilog数据类型 51
3.5.1 网络和变量 52
3.5.2 参数 56
3.5.3 向量 57
3.6 Verilog名字空间 59
3.7 Verilog语言表达式 60
3.7.1 操作符 60
3.7.2 延迟表达式 66
3.7.3 表达式的位宽 66
3.7.4 有符号表达式 67
3.8 Verilog行为描述语句 67
3.8.1 过程语句 68
3.8.2 语句块 70
3.8.3 赋值语句 72
3.8.4 分支语句 75
3.8.5 循环控制语句 78
3.9 Verilog门级描述语句 80
3.9.1 内置基本门级元件 81
3.9.2 用户自定义基本元件 85
3.10 Verilog生成语句及结构 89
3.11 Verilog编译指示语句 90
3.12 Verilog系统任务和函数 94
3.13 Verilog用户定义任务和函数 103
3.13.1 任务 103
3.13.2 函数 106
3.14 Verilog语言模块描述方式 108
3.14.1 层次化设计方法 108
3.14.2 模块的行为级描述 109
3.14.3 模块的数据流描述 109
3.14.4 模块的结构描述 111
习题 112
第4章 数字逻辑单元设计 113
4.1 组合逻辑电路设计 113
4.1.1 基本逻辑门电路设计 113
4.1.2 编码器和译码器设计 114
4.1.3 数据选择器设计 116
4.1.4 数字比较器设计 117
4.1.5 数据运算单元设计 117
4.1.6 总线缓冲器设计 119
4.2 时序逻辑电路设计 120
4.2.1 时钟和复位设计 120
4.2.2 触发器设计 121
4.2.3 锁存器设计 122
4.2.4 计数器设计 122
4.2.5 移位寄存器设计 124
4.3 存储器设计 125
4.3.1 ROM设计 125
4.3.2 RAM设计 127
4.4 有限自动状态机设计 127
4.4.1 有限状态机原理 128
4.4.2 有限状态机分类 128
4.4.3 有限状态机设计 131
习题 136
第5章 Verilog HDL高级设计技术 138
5.1 Verilog HDL代码风格 138
5.1.1 逻辑复制和复用技术 139
5.1.2 并行和流水线技术 141
5.1.3 同步和异步单元处理技术 143
5.1.4 逻辑处理技术 147
5.1.5 模块划分的设计原则 152
5.2 IP核技术 154
5.2.1 IP核分类 154
5.2.2 IP核优化 155
5.2.3 IP核生成 156
5.2.4 IP核应用 156
习题 162
第6章 基于HDL的设计输入 163
6.1 软件环境 163
6.2 综合工具介绍 165
6.3 工程建立 165
6.4 设计描述 167
6.5 添加设计和检查 168
6.6 创建基于HDL的模块 169
6.7 IP核产生和例化 170
6.7.1 IP核的生成 171
6.7.2 IP核的例化 172
习题 174
第7章 基于原理图的设计输入 175
7.1 工程建立 175
7.2 设计描述 176
7.3 创建原理图模块 178
7.3.1 原理图编辑器操作 178
7.3.2 定义模块符号 178
7.3.3 创建模块符号 182
7.4 创建状态图模块 182
7.4.1 添加状态 184
7.4.2 添加迁移 184
7.4.3 添加行为 184
7.4.4 添加复位条件 185
7.4.5 设计输出和添加 186
7.5 设计完成 186
习题 186
第8章 设计综合和行为仿真 187
8.1 设计综合 187
8.1.1 行为综合描述 187
8.1.2 综合属性设置 188
8.1.3 基于XST的综合概述 188
8.1.4 约束及设计综合的实现 189
8.1.5 RTL符号的查看 189
8.2 行为仿真的实现 190
8.2.1 生成测试向量 190
8.2.2 基于Modelsim行为仿真实现 193
8.2.3 基于ISE行为仿真实现 197
习题 200
第9章 设计实现和时序仿真 201
9.1 实现过程概述及约束 201
9.1.1 实现过程概述 201
9.1.2 建立约束文件 201
9.2 实现属性参数设置 202
9.3 创建分区 203
9.4 创建时序约束 204
9.5 设计翻译 204
9.6 设计约束 205
9.6.1 时序约束 205
9.6.2 管脚和面积约束 208
9.7 设计映射及时序分析 210
9.7.1 设计映射 210
9.7.2 使用时序分析评估块延迟 210
9.8 布局布线验证 212
9.8.1 用FPGA Editor验证布局布线 213
9.8.2 评估布局后时序 214
9.8.3 改变分区HDL 215
9.9 时序仿真实现 216
9.9.1 时序仿真概述 216
9.9.2 使用ModelSim进行时序仿真 216
9.9.3 使用ISE仿真器进行时序仿真 221
习题 224
第10章 设计下载和调试 225
10.1 可编程逻辑器件配置接口 225
10.2 创建配置数据 233
10.2.1 配置属性设置 233
10.2.2 创建PROM文件 234
10.3 下载实现 236
10.3.1 下载环境 236
10.3.2 下载实现 237
10.3.3 JTAG诊断 242
10.3.4 建立SVF文件 243
10.4 可编程逻辑器件调试 245
10.4.1 多路复用技术的应用 245
10.4.2 虚拟逻辑分析工具概述 246
10.4.3 ChipScope Pro调试工具概述 246
习题 248
第11章 数字系统设计实例 249
11.1 7段数码管显示功能设计 249
11.1.1 7段数码管基本显示功能设计 249
11.1.2 自动扫描复用7段数码管的设计 253
11.2 二进制码转换设计 256
11.2.1 4位二进制码到BCD码变换设计 256
11.2.2 8位二进制码到BCD码变换设计 257
11.2.3 4位二进制码到Gray码变换设计 260
11.2.4 4位Gray码到二进制码变换设计 261
11.3 基于移位相加运算的乘法器设计 262
11.3.1 设计原理 262
11.3.2 设计实现及验证 263
11.3.3 设计代码 264
11.4 基于移位相减运算的除法器设计 265
11.4.1 除法器设计原理 265
11.4.2 设计实现及验证 267
11.4.3 设计代码 267
11.5 4位ALU单元设计 269
11.5.1 设计原理 269
11.5.2 设计实现和验证 269
11.5.3 设计代码 270
11.6 伪随机序列产生器设计 271
11.6.1 伪随机序列生成原理 271
11.6.2 设计实现及验证 272
11.7 滚动7段数码显示设计 273
11.7.1 设计原理 273
11.7.2 设计实现和验证 274
11.7.3 设计代码 274
11.8 序列检测器设计 277
11.8.1 设计原理 277
11.8.2 设计实现及验证 278
11.8.3 设计代码 278
11.9 有限脉冲响应FIR滤波器设计 280
11.9.1 有限脉冲响应FIR滤波器设计原理 280
11.9.2 设计实现及验证 281
11.9.3 设计代码 282
11.10 异步先进先出队列FIFO设计 284
11.10.1 异步先进先出FIFO原理 284
11.10.2 设计实现及验证 284
11.10.3 设计代码 286
11.11 数字时钟的设计 288
11.11.1 数字时钟原理 288
11.11.2 设计实现及验证 289
11.11.3 设计代码 290
11.12 液晶显示模块应用设计 294
11.12.1 液晶显示模块原理 295
11.12.2 设计实现及验证 298
11.12.3 设计代码 298
11.13 VGA接口设计 300
11.13.1 设计原理 300
11.13.2 设计实现及验证 303
11.13.3 设计代码 304
11.14 PS/2键盘接口设计 309
11.14.1 设计原理 309
11.14.2 设计实现及验证 312
11.14.3 设计代码 312
11.15 串行A/D转换器应用设计 316
11.15.1 系统设计原理 316
11.15.2 设计实现及验证 318
11.15.3 设计代码 318
11.16 数字电压表的设计 324
11.16.1 数字电压表设计原理 324
11.16.2 设计实现及验证 327
11.16.3 设计代码 327
11.17 函数信号发生器的设计 332
11.17.1 函数信号发生器设计原理 332
11.17.2 设计实现及验证 333
11.17.3 设计代码 334
附录A XST支持的Verilog结构 337
附录B XST支持的Verilog语句 339
附录C XST支持的Verilog系统任务和函数 341
附录D XST支持的Verilog原语 342
附录E XST支持的Verilog关键字 343
参考文献 344