第1章 Verilog HDL基础知识 1
1.1 Verilog HDL的基础语言知识 1
1.1.1 综述 1
1.1.2 Verilog HDL语法特性 2
1.1.3 Verilog HDL数据类型 4
1.1.4 Verilog HDL运算符 5
1.1.5 Verilog HDL程序结构 6
1.2 ModelSim SE使用简介 8
第2章 加法器/计数器实例 10
2.1 1bit半加法器adder设计实例 10
2.1.1 1bit半加法器adder设计 10
2.1.2 adder Testbench设计 11
2.1.3 adder Testbench执行结果及仿真波形 12
2.2 1bit全加法器full_add设计实例 13
2.2.1 1bit全加法器full_add设计 13
2.2.2 full_add Testbench设计 15
2.2.3 full_add Testbench执行结果及仿真波形 16
2.3 同步4bit全加法器adder4设计实例 17
2.3.1 同步4bit全加法器adder4设计 17
2.3.2 adder4 Testbench设计 18
2.3.3 adder4 Testbench执行结果及仿真波形 20
2.4 4bit计数器count4设计实例 22
2.4.1 4bit计数器count4设计 22
2.4.2 count4 Testbench设计 22
24.3 count4 Testbench执行结果及仿真波形 23
2.5 8bit BCD码计数器count60设计实例 24
2.5.1 8bit BCD码计数器count60设计 24
2.5.2 count60 Testbench设计 27
2.5.3 count60 Testbench执行结果及仿真波形 27
第3章 乘法器/除法器实例 29
3.1 加法树乘法器add_tree_mult设计实例 29
3.1.1 加法树乘法器add_tree_mult设计 29
3.1.2 add tree mult Testbench设计 32
3.1.3 add_tree_mult Testbench执行结果及仿真波形 33
3.2 查找表乘法器lookup_mult设计实例 34
3.2.1 查找表乘法器lookup_mult设计 34
3.2.2 lookup_mult Testbench设计 37
3.2.3 lookup_mult Testbench执行结果及仿真波形 37
3.3 布尔乘法器booth_mult设计实例 39
3.3.1 布尔乘法器booth_mult设计 39
3.3.2 booth_mult Testbench设计 42
3.3.3 booth_mult Testbench执行结果及仿真波形 44
3.4 移位除法器shift_divider设计实例 46
3.4.1 移位除法器shift_divider设计 46
3.4.2 shift_divider Testbench设计 52
3.4.3 shift_divider Testbench执行结果及仿真波形 55
第4章 编码器/译码器实例 57
4.1 二进制编码器bin_enc设计实例 57
4.1.1 二进制编码器bin_enc设计 57
4.1.2 bin_enc Testbench设计 59
4.1.3 bin_enc Testbench执行结果及仿真波形 60
4.2 曼彻斯特编译码器manch_ed设计实例 60
4.2.1 曼彻斯特编码器manch_en设计 60
4.2 manch_en Testbench设计 63
4.2 manch_en Testbench执行结果及仿真波形 64
4.2.4 曼彻斯特译码器manch_de设计 65
4.2.5 manch_de Testbench设计 67
4.2.6 manch_de Testbench执行结果及仿真波形 68
4.2.7 曼彻斯特编译码器manch_ed设计 69
4.3 密勒译码器miller_de设计实例 70
4.3.1 密勒译码器miller_de总体设计 70
4.3.2 检测模块signal_detect设计 71
4.3.3 signal_detect Testbench设计 73
4.3.4 signal_detect Testbench执行结果及仿真波形 75
4.3.5 译码模块decode设计 76
4.3.6 decode Testbench设计 79
4.3.7 decode Testbench执行结果及仿真波形 80
4.3.8 密勒译码器miller_de顶层设计 81
第5章 状态机实例 83
5.1 状态机介绍 83
5.2 16位乘法器状态机实现 84
5.2.1 16位乘法器mult16设计 84
5.2.2 mult16 Testbench设计 86
5.3 交通控制灯控制设计 87
5.3.1 交通控制灯traffic总体构架 87
5.3.2 traffic状态机设计 88
5.3.3 traffic Testbench设计 91
5.3.4 traffic Testbench执行结果及仿真波形 93
5.4 PCI总线目标接口状态机设计 93
5.4.1 PCI总线介绍 93
5.4.2 PCI总线目标接口总体构架 94
5.4.3 PCI总线目标接口State Machine设计 95
5.4.4 PCI Target Testbench设计 106
5.4.5 PCI Target Testbench执行结果及仿真波形 108
第6章 SPI Master Controller实例 111
6.1 SPI协议介绍 111
6.2 SPI Master Controller设计 113
6.2.1 SPI Master Controller总体构架 113
6.2.2 时钟产生模块spi_clgen设计 113
6.2.3 串行接口模块spi_shift设计 115
6.2.4 spi_top顶层模块设计 121
6.3 SPI Master Controller Testbench设计 126
6.3.1 spi_top Testbench总体构架 126
6.3.2 模拟Wishbone master模块设计 126
6.3.3 模拟SPI slave模块设计 128
6.3.4 spi_top Testbench顶层模块设计 129
6.3.5 spi_top Testbench执行结果及仿真波形 129
第7章 I2C Master Controller实例 132
7.1 I2C总线介绍 132
7.2 I2C Master Controller设计 135
7.2.1 I2C Master Controller总体构架 135
7.2.2 bit传输模块i2c_master_ bit_ctrl设计 136
7.2.3 byte传输模块i2c_master_byte_ctrl设计 142
7.2.4 i2c_master_top模块设计 146
7.3 I2C Master Controller Testbench设计 150
7.3.1 i2c_master_top Testbench总体构架 150
7.3.2 Wishbone master模块设计 150
7.3.3 i2c_slave_model模块设计 151
7.3.4 i2c_master_top Testbench顶层模块设计 155
7.3.5 i2c_master_top Testbench执行结果及仿真波形 160
第8章 CAN Protocol Controller实例 162
8.1 CAN Protocol Controller总体构架 162
8.2 CAN Protocol Controller模块设计 165
8.2.1 CAN Protocol Controller总体构架 165
8.2.2 位时序操作模块can_btl设计 166
8.2.3 bit stream处理模块can_bsp设计 171
8.3 CAN Protocol Controller Testbench设计 181
8.3.1 can_top Testbench总体构架 181
8.3.2 Test task设计 181
8.3.3 can_top Testbench顶层模块设计 185
8.3.4 can_top Testbench执行结果及仿真波形 187
第9章 Memory模块实例 190
9.1 异步FIFO设计实例 190
9.1.1 异步FIFO简介 190
9.1.2 异步FIFO设计 192
9.1.3 异步FIFO Testbench设计 194
9.2 DDR SDRAM Controller设计实例 200
9.2.1 SDRAM简介 200
9.2.2 DDR SDRAM Controller设计 201
9.2.3 DDR SDRAM Controller Testbench设计 212
第10章 JPEG图像压缩模块实例 218
10.1 JPEG图像压缩模块简介 218
10.2 色度空间转换CSC设计实例 219
10.2.1 色度空间简介 219
10.2.2 色度空间转换CSC设计 220
10.2.3 色度空间转换CSC Testbench设计 223
10.3 离散余弦变换DCT设计实例 226
10.3.1 离散余弦变换简介 226
10.3.2 离散余弦变换DCT设计 227
10.3.3 离散余弦变换DCT Testbench设计 235
10.4 量化取整QNR设计实例 238
10.4.1 量化取整简介 238
10.4.2 量化取整QNR设计 239
10.4.3 量化取整QNR Testbench设计 244
10.5 哈夫曼编码huffman_enc设计实例 248
10.5.1 哈夫曼编码简介 248
10.5.2 哈夫曼编码huffman_enc设计 248
10.5.3 哈夫曼编码huffman_enc Testbench设计 252
第11章 DES/AES加密模块实例 258
11.1 DES加密模块设计 258
11.1.1 DES加密算法介绍 258
11.1.2 DES加密模块设计 260
11.1.3 DES加密模块Testbench设计 276
11.2 AES加密模块设计 279
11.2.1 AES加密算法介绍 279
11.2.2 AES加密模块设计 280
11.2.3 AES加密模块Testbench设计 295
第12章 ATA主机控制器实例 300
12.1 ATA协议介绍 300
12.1.1 ATA协议 300
12.1.2 ATA数据传输方式 300
12.1.3 ATA命令传输 301
12.2 ATA主机控制器设计 302
12.2.1 ATA主机控制器总体构架 302
12.2.2 atahost_controller设计 304
12.2.3 PIO时序控制器atahost_pio_tctrl设计 307
12.2.4 运行计数器模块ro_cnt设计 310
12.2.5 atahost_wb_slave设计 311
12.3 ATA主机控制器Testbench设计 317
12.3.1 ATA主机控制器Testbench总体构架 317
12.3.2 ATA设备ata_device设计 317
12.3.3 io_test1 Task设计 321
12.3.4 io_test2 Task设计 323
12.3.5 int_test Task设计 327
12.3.6 rst_test Task设计 329
12.3.7 test_bench_top设计 330
12.3.8 ATA主机控制器Testbench执行结果及仿真波形 332
第13章 8位RISC-CPU实例 335
13.1 RISC-CPU介绍 335
13.1.1 RISC-CPU基本构架 335
13.1.2 RISC-CPU的功能及模块的划分 336
13.2 RISC-CPU设计 336
13.2.1 RISC-CPU总体构架 336
13.2.2 算术逻辑单元alu设计 339
13.2.3 可选扩展模块exp设计 340
13.2.4 指令译码器idec设计 342
13.2.5 寄存器文件regs设计 345
13.2.6 可编程存储器pram设计 346
13.2.7 cpu设计 347
13.3 RISC-CPU Testbench设计 358
13.3.1 RISC-CPU Testbench总体构架 358
13.3.2 RISC-CPU Task设计 359
13.3.3 RISC-CPU Testbench顶层设计 363
13.3.4 RISC-CPU Testbench执行结果及仿真波形 364
缩略语 366
参考文献 368