Verilog HDL基础知识 2
第1章VerilogHDL语言概述 2
1.1 HDL概念与发展历史 2
1.2 Verilog HDL语言特点 3
1.3 Verilog HDL语言开发流程 9
1.4 Verilog HDL程序的基本结构 11
1.4.1模块 11
1.4.2模块调用 20
第2章Verilog HDL语法基础 22
2.1程序格式 22
2.2注释 22
2.3间隔符 22
2.4数值 23
2.5字符串 25
2.6标识符 27
2.7系统任务和函数 28
2.8编译指令 34
2.9数据类型 43
2.9.1线网(Net)和变量(Variable) 43
2.9.2标量(Scalar)与矢量(Vector) 47
2.9.3线网(Net)数据类型 48
2.9.4变量(Variable)数据类型 53
2.9.5数组(Array)类型 54
2.9.6参数 56
2.9.7名字空间 59
2.10表达式 60
2.10.1操作符 61
2.10.2操作数 72
2.10.3延迟表达式 76
2.10.4表达式的位宽 77
2.10.5有符号表达式 80
第3章 行为级建模 82
3.1行为级建模的结构 82
3.1.1过程块结构 84
3.1.2 initial过程块 85
3.1.3 always过程块 87
3.2语句块 90
3.2.1顺序语句块(begin-end) 91
3.2.2并行语句块(fork-join) 92
3.2.3顺序块和并行块的混合使用 94
3.3时间控制 97
3.3.1延时控制 98
3.3.2边沿触发事件控制 99
3.3.3电平敏感事件控制(wait语句) 106
3.4赋值语句 108
3.4.1过程赋值语句 109
3.4.2阻塞型赋值语句和非阻塞型赋值语句 114
3.4.3连续赋值语句和过程连续赋值语句 119
3.5分支语句 131
3.5.1 if-else条件分支语句 131
3.5.2 case分支控制语句 136
3.6循环控制语句 141
3.6.1 forever循环语句 141
3.6.2 repeat循环语句 143
3.6.3 while循环语句 145
3.6.4 for循环语句 146
3.7任务(task)和函数(function) 148
3.7.1任务(task) 148
3.7.2函数(function) 152
第4章 结构级建模 160
4.1模块级建模 160
4.1.1模块的定义 160
4.1.2模块的端口 161
4.1.3模块的调用 164
4.1.4在模块调用时对参数值的更改 170
4.2门级建模 174
4.2.1内置基本门级元件 174
4.2.2用户自定义基本元件(UDP) 187
第5章Verilog HDL语句的综合 198
5.1综合概述 198
5.1.1综合的概念 198
5.1.2数值集合与数据类型 200
5.1.3储值单元的综合原则 201
5.2连续赋值语句的综合 201
5.3过程赋值语句的综合 202
5.3.1阻塞赋值语句 202
5.3.2非阻塞赋值语句 203
5.4逻辑运算符的综合 204
5.5算术运算符的综合 205
5.5.1无符号运算 205
5.5.2有符号运算 206
5.5.3进位与位宽 206
5.6关系运算符的综合 207
5.7移位(shift)运算符综合 208
5.8位选择综合 209
5.9条件表达式的综合 211
5.10 always语句的综合 212
5.11 if语句的综合 215
5.12 case语句的综合 216
5.12.1从case语句综合出锁存器 217
5.12.2 casez和casex语句的综合 221
5.12.3并行的case语句 223
5.12.4条件表达式使用常量的case语句 225
5.13锁存器的综合 227
5.14循环语句的综合 230
5.14.1静态循环的综合 231
5.14.2非静态循环的综合 233
5.15 阻塞和非阻塞赋值 234
5.16函数的综合 237
5.17任务的综合 238
5.18任意值/高阻的综合 239
第6章 设计验证 243
6.1后综合设计验证 243
6.1.1基于仿真的验证 244
6.1.2形式化验证 244
6.2面向验证的编码风格 244
6.2.1功能正确性 245
6.2.2时序正确性 248
6.3定时验证 249
6.4时序分析基础 250
6.4.1周期与最大时钟频率 250
6.4.2时钟建立时间 251
6.4.3时钟保持时间 251
6.4.4时钟输出延时 252
6.4.5引脚到引脚延时 252
6.5定时验证的系统任务 252
第7章Verilog HDL代码优化技巧 254
7.1资源共享 254
7.2公共子表达式 257
7.3代码调整 258
7.4公因子 260
7.5触发器和锁存器的优化 261
7.6代码大小 263
7.7算术表达式树高度优化 264
7.8运算符强度缩减 266
Veriloq HDL应用编程实例 268
第8章 组合电路设计实例 268
8.1基本门电路 268
8.2组合门电路 271
8.3三态门电路 273
8.4双向门电路 274
8.5数据选择器与数据分配器 276
8.5.1数据选择器 276
8.5.2数据分配器 278
8.6数据比较器 280
8.7各种加法器(减法器)设计 282
8.7.1行波进位加法器 282
8.7.2进位链加法器 283
8.7.3跳跃进位加法器 286
8.8常用乘法器设计 289
8.8.1基本乘法器 289
8.8.2时序乘法器 291
8.8.3阵列乘法器 293
8.9伽罗华域GF(q)乘法器设计 297
8.9.1应用背景 298
8.9.2理论算法 298
8.9.3基于弱对偶基的有限域比特并行乘法器建模 301
8.9.4弱对偶基有限域乘法器程序说明 304
8.10常用除法器设计 307
8.10.1二进制恢复除法器 307
8.10.2时序除法器设计 310
8.11本章小结 314
第9章 时序电路设计实例 315
9.1 D触发器设计 315
9.2四种计数器设计 316
9.2.1通用二进制计数器 316
9.2.2 Gray码计数器 317
9.2.3 Johnson计数器 319
9.2.4可预置加减计数器的设计 320
9.3两种分频器设计 322
9.3.1 Verilog HDL分频器 322
9.3.2 PLL分频器 324
9.4两种移位寄存器设计 329
9.4.1通用移位寄存器 330
9.4.2桶形移位寄存器 330
9.5本章小结 332
第10章 存储器电路设计实例 333
10.1片内ROM的Verilog HDL建模 333
10.2片内ROM的LPM应用 334
10.3片上SRAM的Verilog HDL建模 340
10.4片上SRAM的LPM建模 342
10.5片外SRAM的LPM建模 347
10.5.1 IS61LV25616芯片介绍 347
10.5.2 IS61LV25616控制模块 350
10.5.3 IS61LV25616控制器的测试模块 352
10.5.4 IS61LV25616控制器的仿真 354
10.6同步FIFO的Verilog HDL建模 355
10.7同步FIFO的LPM建模 360
10.8异步FIFO的Verilog HDL设计 364
10.8.1 FIFO“空”/“满”检测 364
10.8.2 FIFO模块结构 366
10.8.3 FIFO源代码说明 367
10.8.4异步FIFO的相关问题 372
10.9本章小结 373
第11章 数字通信与控制设计实例 374
11.1时序状态机的设计 374
11.1.1有限状态机(FSM)的分类 375
11.1.2有限状态机常用的描述、开发方法 375
11.1.3基于状态转移图(STG)的设计 376
11.1.4基于算法状态机(ASM )图的设计 384
11.2伪随机序列应用设计 388
11.2.1应用背景 388
11.2.2理论知识 390
11.2.3 PN序列应用实例 392
11.2.4程序说明 393
11.3积分梳状滤波器(CIC)设计 395
11.3.1应用背景 395
11.3.2理论算法 396
11.3.3三级CIC抽取滤波器建模 398
11.3.4程序说明 401
11.4 CORDIC数字计算机的设计 402
11.4.1应用背景 403
11.4.2理论算法 404
11.4.3用CORDIC计算正弦值、余弦值实例建模 414
11.4.4程序说明 416
11.5 UART收发器设计实例 419
11.5.1 UART界面介绍 419
11.5.2 UART传输时序 420
11.5.3 UART分频器 421
11.5.4 UART发送模块 422
11.5.5 UART接收模块 428
11.5.6 UART的硬件测试 432
11.612C Master控制器设计实例 434
11.6.1 I2C总线协议介绍 434
11.6.2 AT24C02介绍 434
11.6.3 I2C Master控制器代码设计 437
11.6.4I2C Master控制器硬件测试 444
11.7 SPI Master控制器设计实例 446
11.7.1 SPI界面介绍 446
11.7.2 SPI分频模块 447
11.7.3 SPI主端发送数据部分 449
11.7.4 SPI接收数据部分 455
11.8曼彻斯特编码器、译码器设计实例 460
11.8.1曼彻斯特码介绍 460
11.8.2曼彻斯特码编码器 460
11.8.3曼彻斯特译码器 463
11.9 RS编码器、译码器设计实例 465
11.9.1 RS编码器的设计 465
11.9.2 RS(204,188)译码器的设计 472
11.10本章小结 499
第12章 数字频率测量设计实例 500
12.1频率测量的常用方法 500
12.2直接测频法 502
12.2.1闸门产生模块 502
12.2.2计数模块 504
12.3周期测频法 507
12.3.1周期计数模块 508
12.3.2除法运算模块 509
12.4等精度测频法 511
12.4.1预设闸门模块 511
12.4.2实际闸门模块 512
12.4.3计数模块 514
12.4.4频率计算模块 516
12.5本章小结 518