第一章 数字信号处理、计算、程序、算法和硬线逻辑设计的基本概念 1
引言 1
1.1 数字信号处理 2
1.2 计算(Computing) 2
1.3 算法和数据结构 2
1.4 编程语言和程序 3
1.5 系统结构和硬线逻辑 3
1.6 设计方法学 3
1.8 C语言与硬件描述语言在算法运算电路设计中的关系和作用 4
1.7 专用硬线逻辑与微处理器的比较 4
思考题 8
第二章 Verilog HDL设计方法概述 9
引言 9
2.1 硬件描述语言HDL 9
2.2 Verilog HDL的历史 10
2.2.1 什么是Verilog HDL 10
2.2.2 Verilog HDL的产生及发展 10
2.3 Verilog HDL和VHDL的比较 11
2.5.1 传统设计方法——电路原理图输入法 12
2.5 采用Verilog HDL设计复杂数字电路的优点 12
2.4 Verilog HDL目前的应用情况和适用的设计 12
2.5.2 Verilog HDL设计法与传统的电路原理图输入法的比较 13
2.5.3 Verilog HDL的标准化与软核的重用 13
2.5.4 软核、固核和硬核的概念以及它们的重用 13
2.6 采用硬件描述语言(Verilog HDL)的设计流程简介 14
2.6.1 自顶向下(Top-Down)设计的基本概念 14
2.6.4 对应具体工艺器件的优化、映像和布局布线 15
2.7 小结 15
2.6.3 具体模块的设计编译和仿真的过程 15
2.6.2 层次管理的基本概念 15
思考题 17
第三章 Verilog HDL的基本语法 18
引言 18
3.1 简单的Verilog HDL模块 19
3.1.1 简单的Verilog HDL程序介绍 19
3.1.2 模块的结构 20
3.1.3 模块的端口定义 21
3.1.4 模块内容 21
3.2.1 常量 22
3.2 数据类型及其常量、变量 22
3.2.2 变量 25
3.3 运算符及表达式 27
3.3.1 基本的算术运算符 28
3.3.2 位运算符 28
3.3.3 逻辑运算符 30
3.3.4 关系运算符 31
3.3.5 等式运算符 31
3.3.7 位拼接运算符 32
3.3.6 移位运算符 32
3.3.8 缩减运算符 33
3.3.9 优先级别 33
3.3.10 关键词 33
3.4 赋值语句和块语句 34
3.4.1 赋值语句 34
3.4.2 块语句 35
3.5 条件语句 39
3.5.1 if else语句 39
3.5.2 case语句 42
3.5.3 使用条件语句不当生成多余的锁存器的情况 44
3.6.1 forever语句 45
3.6 循环语句 45
3.6.2 repeat语句 46
3.6.3 while语句 46
3.6.4 for语句 47
3.7 结构说明语句 48
3.7.1 initial语句 48
3.7.2 always语句 49
3.7.3 task和function说明语句 50
3.8.1 $display和$write任务 54
3.8 系统函数和任务 54
3.8.2 系统任务$monitor 58
3.8.3 时间度量系统函数$time 58
3.8.4 系统任务$finish 60
3.8.5 系统任务$stop 60
3.8.6 系统任务$readmemb和$readmemh 60
3.8.7 系统任务$random 61
3.9 编译预处理 62
3.9.1 宏定义define 63
3.9.2 “文件包含”处理include 65
3.9.3 时间尺度timescae 67
3.9.4 条件编译命令ifdef、else、endif 69
3.10 小结 70
思考题 70
第四章 不同抽象级别的Verilog HDL模型 82
引言 82
4.1 门级结构描述 82
4.1.1 与非门、或门和反向器等及其说明语法 82
4.1.3 由已经设计成的模块来构成更高一层的模块 83
4.1.2 用门级结构描述D触发器 83
4.1.4 用户定义的原语(UDP) 85
4.2 Verilog HDL的行为描述建模 86
4.2.1 仅用于产生仿真测试信号的Verilog HDL行为描述建模 86
4.2.2 Verilog HDL建模在TOP-DOwN设计中的作用和行为建模的可综合性问题 88
4.3 用Verilog HDL建模进行TOP-DOWN设计的实例 89
4.4 小结 99
5.1 加法器 101
引言 101
思考题 101
第五章 基本运算逻辑和它们的Verilog HDL模型 101
5.2 乘法器 103
5.3 比较器 106
5.4 多路器 107
5.5 总线和总线操作 108
5.6 流水线 109
思考题 114
6.1 数字逻辑电路的种类 115
6.2 数字逻辑电路的构成 115
引言 115
第六章 运算和数据流动控制逻辑 115
6.3 数据流动的控制 117
6.4 为什么在Verilog HDL设计中一定要用同步而不能用异步时序逻辑 119
思考题 121
第七章 有限状态机和可综合风格的Verilog HDL 122
引言 122
7.1 有限状态机 122
7.1.1 用Verilog HDL语言设计可综合的状态机的指导原则 128
7.1.2 典型的状态机实例 129
7.1.3 综合的一般原则 130
7.1.4 语言指导原则 131
7.2 可综合风格的Verilog HDL模块实例 132
7.2.1 组合逻辑电路设计实例 132
7.2.2 时序逻辑电路设计实例 137
7.2.3 状态机的置位与复位 140
7.2.4 深入理解阻塞(blocking)和非阻塞赋值(Nonblocking)的不同 143
7.2.5 复杂时序逻辑电路设计实践 159
思考题 185
8.1 什么是CPU 186
引言 186
第八章 可综合的Verilog HDL设计实例——简化的RISC CPU设计简介 186
8.2 RISC CPU结构 187
8.2.1 时钟发生器 188
8.2.2 指令寄存器 191
8.2.3 累加器 193
8.2.4 算术逻辑运算单元 194
8.2.5 数据控制器 195
8.2.6 地址多路器 196
8.2.7 程序计数器 196
8.2.8 状态控制器 197
8.2.9 外围模块 203
8.3 RISC CPU操作和时序 204
8.3.1 系统的复位和启动操作 204
8.3.2 总线读操作 205
8.3.3 写总线操作 205
8.4 RISC CPU寻址方式和指令系统 206
8.5 RISC CPU模块的调试 207
8.5.1 RISC CPU模块的前仿真 207
8.5.2 RISC CPU模块的综合 220
8.5.3 RISC CPU模块的优化和布局布线 228
思考题 233
第九章 虚拟器件和虚拟接口模型 234
引言 234
9.1 虚拟器件和虚拟接口模块的供应商 234
9.2 虚拟模块的设计 235
9.3 虚拟接口模块的实例 239
思考题 288
参考文献 289
编后记 290