Verilog-HDL实用设计与工程制作
本书从实践的角度出发,全面介绍硬件描述语言Verilog-HDL,通过与具体电路实验的结合,使读者能够轻松地掌握Verilog-HDL的语法、结构、功能及简单应用。
全书共分8章,第1~5章,通过应用Verilog-HDL描述的各种逻辑电路实例,详细讲解该语言的语法结构和FPGA的开发流程;第6章,介绍硬件开发应具备的条件;第7章,讲解数字电路系统的设计思路;第8章,通过列举12个简单的应用实例,详细介绍工程应用系统的设计与实现的全过程。书中给出的全部仿真结果和硬件实现均经过验证。全书的所有Verilog-HDL实例文件可在北京航空航天大学出版社网站www.buaapress.com.cn的“下载专区”进行下载。
本书可作为学习数字设计的初学者和工程技术人员的入门书、工具书和参考资料。
第1章 硬件描述语言………………………………………………………………… 1
1.1 什么是硬件描述语言HDL ………………………………………………… 1
1.2 基本逻辑电路的Verilog-HDL描述………………………………………… 1
1.2.1 与门逻辑电路的描述…………………………………………………… 1
1.2.2 与非门逻辑电路的描述………………………………………………… 5
1.2.3 非门逻辑电路的描述…………………………………………………… 6
1.2.4 或门逻辑电路的描述…………………………………………………… 6
1.2.5 或非门逻辑电路的描述………………………………………………… 7
1.2.6 缓冲器逻辑电路的描述………………………………………………… 8
1.3 逻辑仿真……………………………………………………………………… 8
1.3.1 顶层模块的编写………………………………………………………… 9
1.3.2 寄存器类型定义………………………………………………………… 10
1.3.3 线网类型定义…………………………………………………………… 10
1.3.4 底层模块的调用………………………………………………………… 10
1.3.5 输入端口波形的描述…………………………………………………… 10
1.3.6 二与门逻辑电路的逻辑仿真结果……………………………………… 11
第2章 AlteraFPGA开发板及开发流程简介……………………………………… 12
2.1 FPGA 开发板及开发环境…………………………………………………… 12
2.1.1 FPGA 开发板简介……………………………………………………… 12
2.1.2 FPGA 开发环境………………………………………………………… 17
2.2 二与门逻辑电路的开发实例………………………………………………… 20
2.2.1 工程文件的建立………………………………………………………… 20
2.2.2 源文件的建立…………………………………………………………… 23
2.2.3 综合分析………………………………………………………………… 27
2.2.4 ModelSim 仿真………………………………………………………… 27
2.2.5 引脚配置………………………………………………………………… 32
2.2.6 编译与下载……………………………………………………………… 32
2.2.7 硬件测试………………………………………………………………… 34
第3章 组合逻辑电路……………………………………………………………… 35
3.1 数据选择器…………………………………………………………………… 35
3.1.1 2 1数据选择器……………………………………………………… 35
3.1.2 2 1数据选择器的Verilog-HDL描述……………………………… 36
3.1.3 4 1数据选择器……………………………………………………… 37
3.1.4 4 1数据选择器的Verilog-HDL描述……………………………… 37
3.1.5 条件操作符的使用方法………………………………………………… 38
3.1.6 数据选择器的行为描述方式…………………………………………… 39
3.1.7 case语句的使用方法…………………………………………………… 40
3.1.8 if else语句的使用方法……………………………………………… 41
3.1.9 function函数的使用方法……………………………………………… 42
3.1.10 用于仿真的顶层模块………………………………………………… 42
3.1.11 数据选择器的逻辑仿真结果………………………………………… 43
3.2 数据比较器…………………………………………………………………… 44
3.2.1 最简单的数据判断方法………………………………………………… 45
3.2.2 2位数据比较器………………………………………………………… 45
3.2.3 2位数据比较器的Verilog-HDL描述……………………………… 48
3.2.4 2位数据比较器的逻辑仿真结果……………………………………… 49
3.2.5 数据比较器的数据宽度扩展…………………………………………… 50
3.2.6 4位数据比较器的Verilog-HDL描述……………………………… 52
3.2.7 4位数据比较器的逻辑仿真结果……………………………………… 54
3.3 编码器………………………………………………………………………… 55
3.3.1 2位二进制编码器……………………………………………………… 55
3.3.2 2位二进制编码器的Verilog-HDL描述…………………………… 56
3.3.3 2位二进制编码器的逻辑仿真结果…………………………………… 57
3.4 译码器………………………………………………………………………… 58
3.4.1 BCD码译码器………………………………………………………… 58
3.4.2 非完全描述的逻辑函数和逻辑表达式的简化………………………… 60
3.4.3 BCD码译码器的Verilog-HDL描述………………………………… 61
3.4.4 BCD码译码器的逻辑仿真结果……………………………………… 63
第4章 触发器……………………………………………………………………… 64
4.1 异步RS触发器……………………………………………………………… 64
4.1.1 异步RS触发器的逻辑符号…………………………………………… 64
4.1.2 异步RS触发器的Verilog-HDL描述……………………………… 65
4.1.3 异步RS触发器的逻辑仿真结果……………………………………… 66
4.1.4 always块语句的使用方法…………………………………………… 67
4.2 同步RS触发器……………………………………………………………… 67
4.2.1 同步RS触发器的逻辑符号…………………………………………… 67
4.2.2 同步RS触发器的Verilog-HDL描述……………………………… 68
4.2.3 同步RS触发器的逻辑仿真结果……………………………………… 69
4.3 异步T触发器……………………………………………………………… 69
4.3.1 异步T触发器的逻辑符号…………………………………………… 69
4.3.2 异步T触发器的Verilog-HDL描述………………………………… 70
4.3.3 异步T触发器的逻辑仿真结果……………………………………… 71
4.4 同步T触发器……………………………………………………………… 72
4.4.1 同步T触发器的逻辑符号…………………………………………… 72
4.4.2 同步T触发器的Verilog-HDL描述………………………………… 72
4.4.3 同步T触发器的逻辑仿真结果……………………………………… 73
4.5 同步D触发器……………………………………………………………… 74
4.5.1 同步D触发器的逻辑符号…………………………………………… 74
4.5.2 同步D触发器的Verilog-HDL描述………………………………… 75
4.5.3 同步D触发器的逻辑仿真结果……………………………………… 76
4.6 带有复位端的同步D触发器……………………………………………… 76
4.6.1 带有复位端的同步D触发器的逻辑符号…………………………… 76
4.6.2 带有复位端的同步D触发器的Verilog-HDL描述………………… 77
4.6.3 带有复位端的同步D触发器的逻辑仿真结果……………………… 78
4.7 同步JK触发器……………………………………………………………… 79
4.7.1 同步JK触发器的逻辑符号…………………………………………… 79
4.7.2 同步JK触发器的Verilog-HDL描述……………………………… 80
4.7.3 同步JK触发器的逻辑仿真结果……………………………………… 82
第5章 时序逻辑电路……………………………………………………………… 83
5.1 寄存器………………………………………………………………………… 83
5.1.1 寄存器的组成原理……………………………………………………… 83
5.1.2 寄存器的Verilog-HDL描述………………………………………… 85
5.1.3 寄存器的逻辑仿真结果………………………………………………… 86
5.2 移位寄存器…………………………………………………………………… 86
5.2.1 串行输入/并行输出移位寄存器的组成原理………………………… 86
5.2.2 并行输入/串行输出移位寄存器的组成原理………………………… 87
5.2.3 移位寄存器的Verilog-HDL描述…………………………………… 89
5.2.4 移位寄存器的逻辑仿真结果…………………………………………… 91
5.3 计数器………………………………………………………………………… 92
5.3.1 二进制非同步计数器…………………………………………………… 92
5.3.2 四进制非同步计数器…………………………………………………… 93
5.3.3 下降沿触发型计数器及2N 进制非同步计数器的组成原理………… 94
5.3.4 非同步计数器的Verilog-HDL描述………………………………… 96
5.3.5 多层次结构的Verilog-HDL设计…………………………………… 98
5.3.6 非同步计数器的逻辑仿真结果………………………………………… 99
5.3.7 四进制同步计数器…………………………………………………… 100
5.3.8 四进制同步计数器的Verilog-HDL描述…………………………… 100
5.3.9 任意进制同步计数器的Verilog-HDL描述………………………… 101
5.3.10 同步计数器的逻辑仿真结果………………………………………… 103
第6章 硬件开发应具备的条件…………………………………………………… 105
6.1 贴片元件的手工焊接……………………………………………………… 105
6.1.1 什么是贴片元件? …………………………………………………… 105
6.1.2 为什么要采用贴片元件? …………………………………………… 108
6.1.3 如何进行贴片元件的手工焊接? …………………………………… 108
6.2 一些常用贴片元件的封装………………………………………………… 112
6.2.1 贴片电阻……………………………………………………………… 112
6.2.2 贴片电容……………………………………………………………… 113
6.2.3 贴片三极管…………………………………………………………… 115
6.2.4 贴片集成电阻………………………………………………………… 118
6.2.5 贴片集成电路………………………………………………………… 118
6.3 硬件开发应具备的工具和材料…………………………………………… 122
6.3.1 必备的工具和材料…………………………………………………… 122
6.3.2 更方便工作的工具和材料…………………………………………… 126
6.4 硬件开发应具备的仪器仪表……………………………………………… 131
6.4.1 必备的仪器仪表……………………………………………………… 131
6.4.2 更方便工作的仪器仪表……………………………………………… 132
6.5 硬件开发应具备的基本常识……………………………………………… 134
6.5.1 常用电路符号的表示方法…………………………………………… 134
6.5.2 电子电路的基本单位………………………………………………… 135
6.5.3 逻辑门的正确描述法………………………………………………… 136
6.5.4 其他知识……………………………………………………………… 137
第7章 数字电路系统的实用设计………………………………………………… 139
7.1 简单的可编程单脉冲发生器……………………………………………… 139
7.1.1 由系统功能描述时序关系…………………………………………… 139
7.1.2 流程图的设计………………………………………………………… 140
7.1.3 系统功能描述………………………………………………………… 140
7.1.4 逻辑框图……………………………………………………………… 141
7.1.5 延时模块的详细描述及仿真………………………………………… 142
7.1.6 功能模块Verilog-HDL描述的模块化方法………………………… 146
7.1.7 输入检测模块的详细描述及仿真…………………………………… 147
7.1.8 计数模块的详细描述………………………………………………… 151
7.1.9 可编程单脉冲发生器的系统仿真…………………………………… 151
7.1.10 电路设计中常用的几个有关名词…………………………………… 156
7.2 脉冲计数…………………………………………………………………… 162
7.2.1 脉冲计数器的设计…………………………………………………… 162
7.2.2 parameter的使用方法……………………………………………… 165
7.2.3 repeat循环语句的使用方法………………………………………… 165
7.2.4 系统函数$random 的使用方法……………………………………… 165
7.2.5 特定脉冲序列的发生………………………………………………… 166
7.3 脉冲频率的测量…………………………………………………………… 171
7.3.1 脉冲频率测量的原理………………………………………………… 172
7.3.2 频率测量模块的设计………………………………………………… 172
7.3.3 while循环语句的使用方法………………………………………… 178
7.4 脉冲周期的测量…………………………………………………………… 178
7.4.1 脉冲周期测量的原理………………………………………………… 179
7.4.2 周期测量模块的设计(一)…………………………………………… 179
7.4.3 forever循环语句的使用方法………………………………………… 185
7.4.4 disable禁止语句的使用方法………………………………………… 185
7.4.5 周期测量模块的设计(二)…………………………………………… 186
7.4.6 两种周期测量模块设计的对比……………………………………… 191
7.5 脉冲高电平和低电平持续时间的测量…………………………………… 192
7.5.1 脉冲高电平和低电平持续时间测量的工作原理…………………… 192
7.5.2 高低电平持续时间测量模块的设计………………………………… 192
7.5.3 改进型高低电平持续时间测量模块的设计………………………… 201
7.5.4 begin声明语句的使用方法………………………………………… 208
7.5.5 initial语句和always语句的使用方法……………………………… 209
第8章 实用设计与工程制作……………………………………………………… 211