第1章 Verilog语言入门辅导 1
1.1 开始 1
1.1.1 结构描述 1
1.1.2 模拟binary ToESeg驱动源 3
1.1.3 为模块建立端口 5
1.1.4 为模块建立测试台 6
1.2 组合电路的行为建模 9
1.2.1 过程模型 9
1.2.2 综合组合电路的规则 11
1.3 时钟时序电路的行为建模 11
1.3.1 建立有限状态机模型 12
1.3.3 非阻塞赋值(“<=”) 15
1.3.2 综合时序系统的规则 15
1.4 模块的层次 17
1.4.1 计数器 17
1.4.2 系统时钟 18
1.4.3 将整个电路结合在一起 19
1.4.4 将行为模块和结构模块连接在一起 22
1.5 有限状态机和数据通道 23
1.5.1 简单计算示例 24
1.5.2 系统的数据通道 24
1.5.3 数据通道功能模块的细节 25
1.5.4 用连线将数据通道连在一起 27
1.5.5 FSM说明 28
1.6 周期精确的行为描述 32
1.6.1 规范方法 33
1.7 赋值语句的总结 35
1.6.2 几点注释 35
1.8 小结 37
1.9 练习 37
第2章 行为建模 39
2.1 进程模型 39
2.2 If-Then-Else 40
2.2.1 else如何与if语句配对 44
2.2.2 条件操作符 45
2.3 循环语句 46
2.3.1 四种基本循环语句 46
2.3.2 循环的异常退出 49
2.4 多分支语句 50
2.4.1 If-Else-If 50
2.4.2 Case 50
2.4.4 Casez和Casex 53
2.4.3 Case和If-Else-If的比较 53
2.5 函数和任务 54
2.5.1 任务 56
2.5.2 函数 59
2.5.3 结构视域 61
2.6 作用域规则和层次名 63
2.6.1 作用域规则 64
2.6.2 层次名 66
2.7 小结 66
2.8 练习 67
第3章 并发进程 69
3.1 并发进程 69
3.2 事件 70
3.2.1 事件控制语句 71
3.2.2 有名事件 72
3.3 等待语句 75
3.3.1 一个完整的生产者和消费者握手示例 76
3.3.2 Wait语句和While语句的对比 79
3.3.3 Wait语句和事件控制语句的比较 80
3.4 并发进程示例 80
3.5 简单流水线处理器 86
3.5.1 基本处理器 86
3.5.2 流水线之间的同步 88
3.6 有名块的终止 89
3.7 赋值语句内部控制和定时事件 91
3.8 过程持续赋值 94
3.9 顺序模块和并行模块 95
3.10 练习 98
4.1 引言 100
第4章 逻辑级建模 100
4.2 逻辑门与线网 101
4.2.1 用基元逻辑门建模 101
4.2.2 四级逻辑值 104
4.2.3 线网 105
4.2.4 模块例示与端口规范 108
4.2.5 有关逻辑级的一个示例 109
4.3 示例数组 115
4.4 持续赋值 118
4.4.1 组合电路的行为建模 119
4.4.2 线网与持续赋值语句声明 120
4.5 参数化定义 123
4.6 行为级/结构级的混合示例 127
4.7.1 门级建模示例 131
4.7 逻辑延迟建模 131
4.7.2 门和线网延迟 133
4.7.3 时间单位的规定 135
4.7.4 最小延迟、典型延迟和最大延迟 136
4.8 模块中的延迟路径 137
4.9 小结 139
4.10 练习 139
第5章 高级时序 142
5.1 Verilog时序模型 142
5.2 模拟器的基本模型 145
5.2.1 门级模拟 145
5.2.2 更通用的模型 146
5.2.3 行为级模型的调度 148
5.3.1 临近不确定区 150
5.3 模拟算法的不确定行为 150
5.3.2 Verilog是一种并发语言 152
5.4 非阻塞过程赋值语句 155
5.4.1 阻塞和非阻塞赋值的比较 155
5.4.2 非阻塞赋值的一般用法 156
5.4.3 事件驱动调度算法的扩展 157
5.4.4 非阻塞赋值的举例分析 159
5.5 小结 162
5.6 练习题 162
第6章 逻辑综合 167
6.1 综合概述 167
6.1.1 寄存器传输级系统 167
6.1.2 限制声明 168
6.2 使用门和持续赋值的组合逻辑 168
6.3 用来说明组合逻辑的过程语句 170
6.3.1 基础 171
6.3.2 复杂形式——推断出的锁存器 172
6.3.3 说明无关项 174
6.3.4 过程循环结构 175
6.4 时序元件的推断 176
6.4.1 锁存器的推断 176
6.4.2 触发器的推断 178
6.4.3 小结 180
6.5 三态器件的推断 180
6.6 有限状态机的描述 181
6.6.1 有限状态机的示例 181
6.6.2 FSM说明的另一种方式 184
6.7 逻辑综合的总结 185
6.8 习题 186
第7章 行为综合 188
7.1 行为综合的介绍 188
7.2 周期精确的说明 189
7.2.1 always块的输入和输出 189
7.2.2 always块的输入和输出关系 190
7.2.3 复位功能说明 193
7.3 米利/摩尔机的说明 194
7.3.1 复杂控制的说明 195
7.3.2 数据与控制路径的折中 196
7.4 小结 199
第8章 用户定义的基元 200
8.1 组合基元 200
8.1.1 用户定义基元的基本特征 200
8.1.2 组合逻辑电路的描述 202
8.2 时序基元 203
8.2.1 电平敏感的基元 204
8.2.2 边沿敏感的基元 205
8.3 速记表示法 207
8.4 电平敏感与边沿敏感混合的基元 208
8.5 小结 210
8.6 练习 210
第9章 开关级建模 212
9.1 动态MOS移位寄存器示例 212
9.2 开关级建模 216
9.2.1 强度建模 216
9.2.2 强度的定义 218
9.2.3 使用强度的示例 220
9.2.4 电阻型MOS门 221
9.3.1 二义性强度的说明 223
9.3 二义性强度 223
9.3.2 基本计算 224
9.4 miniSim示例 228
9.4.1 概述 228
9.4.2 miniSim的源码 229
9.4.3 模拟结果 239
9.5 小结 241
9.6 练习 241
第10章 工程项目 243
10.1 建立功耗模型 243
10.1.1 对功耗进行建模 243
10.1.2 需要做什么 243
10.1.3 步骤 244
10.2.2 磁盘格式 245
10.2 软盘控制器 245
10.2.1 介绍 245
10.2.3 功能描述 247
10.2.4 真实设备 248
10.2.5 你一直想知道的有关CRC的各种情况 249
10.2.6 起支持作用的Verilog模块 249
附录A 学习指南 251
A.1 结构描述 251
A.2 测试台模块 259
A.3 使用always的组合电路 259
A.4 时序电路 262
A.5 层次化描述 264
A.6 有限状态机和数据通道 264
A.7 周期精确描述 265
附录B 词法 266
B.1 空白符和注释 266
B.2 操作符 266
B.3 数字 266
B.4 字符串 267
B.5 标识符、系统名和关键字 268
附录C Verilog操作符 270
C.1 操作符表 270
C.2 操作符优先级 272
C.3 操作符真值表 273
C.4 表达式的位数 273
附录D Verilog门类型 275
D.1 逻辑门 275
D.3 BUFIF和NOTIF门 276
D.2 BUF和NOT门 276
D.4 MOS门 277
D.5 双向门 278
D.6 CMOS门 278
D.7 Pullup和Pulldown门 278
附录E 寄存器、存储器、整数和时间 279
E.1 寄存器 279
E.2 存储器 280
E.3 整数和时间 280
附录F 系统任务和函数 282
F.1 Display和Write任务 282
F.2 持续监视 283
F.3 选通监视 283
F.4 文件输出 283
F.6 停止和完成 284
F.5 模拟时间 284
F.7 随机函数 285
F.8 从磁盘文件读数据 285
附录G 形式化语法定义 286
G.1 形式化语法规范指南 286
G.2 源文本 290
G.3 声明 291
G.4 基元示例 293
G.5 模块例示 294
G.6 UDP的声明和例示 295
G.7 行为语句 296
G.8 Specify部分 298
G.9 表达式 301
G.10 通用说明 304