目 录Contents
前言
第1章 数字电路基础1
1.1 模拟电路与数字电路1
1.2 二进制相关知识3
1.2.1 二进制和其他进制3
1.2.2 进制间的相互转换4
1.2.3 二进制的四则运算5
1.3 二进制在电路中的表达6
1.3.1 有限字长和补码6
1.3.2 负数、有符号数和无符号数6
1.4 门电路和基本逻辑运算10
1.4.1 非门、与门和或门11
1.4.2 与非门和或非门12
1.4.3 异或门和同或门12
1.4.4 三种表达形式的转换13
1.4.5 基本门的电路实现14
1.4.6 三态输出和漏极开路输出15
1.4.7 波形图17
1.4.8 门电路的一些非典型应用18
1.5 逻辑代数22
1.5.1 基本定律22
1.5.2 表达式的代数化简法23
1.5.3 卡诺图化简法23
1.6 基本组合逻辑24
1.6.1 编码器和译码器24
1.6.2 未定义的输入状态26
1.6.3 数据选择器27
1.6.4 延迟和竞争冒险27
1.6.5 加法器28
1.6.6 乘法器31
1.6.7 数值比较器32
1.7 锁存器32
1.7.1 SR锁存器32
1.7.2 D锁存器33
1.8 触发器34
1.8.1 D触发器、时钟和使能34
1.8.2 D触发器的异步和同步复位36
1.8.3 D触发器的建立时间、保持时间和传输延迟37
1.8.4 其他触发器38
1.9 时序逻辑40
1.9.1 移位寄存器和串-并互换40
1.9.2 延迟链42
1.9.3 分频器43
1.9.4 计数器44
1.9.5 同步时序逻辑46
1.9.6 累加器48
1.10 存储器49
1.10.1 存储器容量和类型49
1.10.2 SRAM50
1.10.3 双端口SRAM54
1.10.4 同步SRAM54
1.11 小数55
1.11.1 定点小数及其范围和误差55
1.11.2 定点小数的运算56
1.11.3 浮点小数58
第2章 Verilog HDL和SystemVerilog60
2.1 硬件描述语言简介60
2.2 设计方法和流程62
2.3 标识符和关键字63
2.4 值、数和字面量63
2.4.1 整型常数64
2.4.2 浮点常数65
2.4.3 时间常数和字符串常数65
2.5 线网66
2.6 变量67
2.7 参数和常量68
2.8 类型和位宽转换70
2.9 操作符和表达式71
2.9.1 位选取操作符74
2.9.2 位拼接和流运算符74
2.9.3 按位逻辑运算符76
2.9.4 缩减运算符76
2.9.5 移位77
2.9.6 自增赋值和自减赋值77
2.9.7 条件判断相关运算符78
2.9.8 条件运算符79
2.9.9 let语句79
2.10 结构和联合80
2.11 数组82
2.12 赋值、过程和块83
2.12.1 赋值的延迟84
2.12.2 赋值的强度85
2.12.3 流程控制语句86
2.12.4 always过程88
2.12.5 阻塞和非阻塞赋值91
2.13 模块93
2.14 接口97
2.15 生成块100
2.16 任务和函数101
2.17 包102
2.18 系统任务和函数103
2.18.1 显示相关104
2.18.2 文件相关105
2.18.3 存储器相关106
2.18.4 仿真相关107
2.18.5 错误和信息107
2.18.6 类型转换和数学函数107
2.19 编译指令108
第3章 ModelSim和仿真111
3.1 仿真和测试的相关概念111
3.2 测试代码编写112
3.2.1 时钟的产生112
3.2.2 复位的产生114
3.2.3 一般输入的产生115
3.3 ModelSim软件仿真流程118
3.3.1 主界面简介118
3.3.2 创建工程119
3.3.3 向工程中添加文件121
3.3.4 开始仿真122
3.3.5 带有信号和波形的例子124
3.4 波形和格式127
第4章 Verilog基本应用130
4.1 代码风格130
4.2 常用组合逻辑单元的描述132
4.2.1 编码器和译码器132
4.2.2 数据选择器133
4.3 常用时序逻辑单元的描述133
4.3.1 移位寄存器133
4.3.2 延迟链134
4.3.3 计数器134
4.3.4 累加器136
4.4 时钟域和使能137
4.5 跨时钟域问题138
4.5.1 域外慢速跳沿138
4.5.2 域间状态传递140
4.5.3 域间事件传递142
4.5.4 域间数据传递144
4.6 存储器及其初始化144
4.6.1 各种模式的存储器描述145
4.6.2 存储器的初始化148
4.7 用存储器实现延迟链151
4.8 单时钟FIFO152
4.9 双时钟FIFO156
4.10 用户按键和数码LED157
4.10.1 用户按键处理157
4.10.2 数码LED159
4.11 PWM和死区161
4.11.1 单端PWM161
4.11.2 差分PWM162
4.11.3 死区165
4.12 正交增量编码器接口166
4.13 有限状态机170
4.13.1 秒表例子171
4.13.2 数字示波器触发采样例子175
第5章 IO规范与外部总线182
5.1 单端信号和地182
5.2 传输线与端接184
5.3 差分信号185
5.4 高速串行接口188
5.5 UART189
5.5.1 UART规范介绍189
5.5.2 发送器的设计190
5.5.3 接收器的设计193
5.5.4 UART收发仿真195
5.6 SPI197
5.6.1 SPI规范介绍197
5