目录 1
第1章 可编程逻辑器件与FPGA 1
1.1 可编程逻辑器件概述 1
1.1.1 可编程逻辑器件简介 1
1.1.2 发展历史 1
1.1.3 可编程逻辑器件与设计软件 2
1.2 FPGA概述 2
1.2.1 FPGA简介 2
1.2.2 FPGA的优点 3
1.2.3 FPGA的分类和使用 4
1.2.4 主要FPGA供应商一览 5
1.3 总结 6
第2章 VHDL与Verilog HDL 7
2.1 VHDL简介 7
2.1.1 VHDL的历史 7
2.1.2 VHDL的特点 7
2.2 VHDL程序基本结构 8
2.2.1 实体的申明方法 9
2.2.2 结构体的描述方法 10
2.2.3 程序包和程序包体 15
2.2.4 配置的申明方法 16
2.2.5 VHDL程序的库 17
2.3 VHDL语言的数据类型和运算符 19
2.3.1 VHDL语言的数据对象 20
2.3.2 VHDL语言的数据类型 21
2.3.3 VHDL语言的运算符 25
2.4 VHDL语言的描述语句 27
2.4.1 VHDL顺序语句描述方法 27
2.4.2 VHDL并行语句描述方法 32
2.5 VHDL语言的预定义属性 34
2.5.1 值类预定义属性 34
2.5.2 函数类预定义属性 34
2.5.3 信号类预定义属性 35
2.6 Verilog HDL简介 36
2.6.1 Verilog HDL的历史 36
2.6.2 Verilog HDL的特点 36
2.5.5 数据范围类预定义属性 36
2.5.4 数据类型类预定义属性 36
2.7 Verilog HDL程序基本结构 37
2.8 Verilog HDL语言的数据类型和运算符 38
2.8.1 标识符 38
2.8.2 数据类型 38
2.8.3 模块端口 39
2.8.4 值集合 39
2.8.5 表达式 41
2.9 Verilog HDL语言的描述语句 42
2.9.1 门级建模形式 42
2.9.2 数据流建模形式 43
2.9.3 行为建模形式 44
2.10 小结 50
3.1 ISE简介 51
第3章 使用ISE进行FPGA开发 51
3.2 ISE和ModelSim的安装 52
3.2.1 系统要求 52
3.2.2 ISE的安装 52
3.2.3 ModelSim安装 55
3.2.4 关联ISE和ModelSim 56
3.3 ISE的使用方法 57
3.3.1 ISE界面介绍 57
3.3.2 使用ISE的开发流程 60
3.3.3 使用ISE编写HDL模块 62
3.3.4 使用语言模版辅助设计 68
3.3.5 使用ISE编写测试平台 69
3.3.6 使用ISE编写顶层模块 75
3.3.7 使用ISE编写约束文件 79
3.3.8 设计的综合和实现 81
3.3.9 硬件编程和下载 82
3.4 小结 83
第4章 模拟I2C协议 84
4.1 I2C总线解析 84
4.1.1 I2C总线概述 84
4.1.2 I2C协议的基本概念 84
4.1.3 I2C协议的时序要求 85
4.2 模拟I2C接口程序的基本框架 87
4.3 I2C协议的具体实现 89
4.3.1 位传输的实现 89
4.3.2 字节传输的实现 99
4.3.3 程序主体的实现 106
4.4 程序的仿真与测试 110
4.4.1 主节点的仿真 111
4.4.2 从节点的仿真 113
4.4.3 仿真主程序 119
4.4.4 仿真结果 125
4.5 小结 126
第5章 UART控制器 127
5.1 计算机接口技术简介 127
5.1.1 常用的计算机接口简介 127
5.1.2 计算机接口的控制方式 128
5.2 RS-232串口通信简介 129
5.2.1 串口通信概述 129
5.2.2 RS-232协议 130
5.2.3 RS-232通信时序和UART 133
5.2.4 串口通信实现方案 134
5.3 使用FPGA实现UART 134
5.3.1 UART实现原理 134
5.3.2 UART工作流程 136
5.3.3 信号监测器模块的实现 137
5.3.4 波特率发生器模块的实现 139
5.3.5 移位寄存器模块的实现 143
5.3.6 奇偶校验器模块的实现 145
5.3.7 总线选择器模块的实现 147
5.3.8 计数器模块的实现 149
5.3.9 UART内核模块的实现 151
5.3.10 UART顶层模块的实现 164
5.3.11 测试平台的编写和仿真 172
5.4 小结 178
第6章 USB接口控制器 179
6.1 USB接口简介 179
6.1.1 USB发展历史 179
6.1.2 USB特点和应用 179
6.2 USB体系结构 180
6.2.1 USB系统描述 180
6.2.2 USB物理接口 181
6.2.3 USB电源管理 182
6.2.5 USB主机 183
6.3 USB通信原理 183
6.2.4 USB设备 183
6.3.1 USB传输模型 184
6.3.2 USB设备检测过程 188
6.4 USB系统开发 196
6.4.1 USB硬件系统 196
6.4.2 USB接口芯片PDIUSBD12 197
6.5 USB设计实例 210
6.5.1 设计需求分析 210
6.5.2 设计方案 211
6.6 FPGA固件开发 211
6.6.1 固件模块划分 211
6.6.2 自定义包编写 212
6.6.3 分频器模块的实现 215
6.6.4 沿控制模块的实现 216
6.6.5 输入/输出切换模块的实现 217
6.6.6 请求处理模块的实现 219
6.6.7 设备收发器模块的实现 222
6.6.8 测试平台的编写 233
6.7 USB驱动和软件开发 235
6.7.1 USB驱动编写 235
6.7.2 USB软件编写 241
6.8 小结 243
第7章 数字视频信号处理器 245
7.1 视频信号概述 245
7.1.1 视频信号处理的基本过程 246
7.1.2 数字图像处理技术概念 246
7.1.3 数字视频信号的格式 247
7.2 视频信号处理的框架 248
7.2.1 视频信号转换模块 248
7.2.2 视频数据计算模块 249
7.2.3 通信模块 249
7.3 视频信号处理的电路 250
7.3.1 中央控制器FPGA 250
7.3.2 电视信号转换模块电路 250
7.3.3 图像缓存部分电路 253
7.4 视频处理程序的具体实现 254
7.4.1 主体程序的实现 254
7.4.2 视频图像数据采集程序的实现 256
7.4.3 SRAM的读写控制 263
7.5.1 测试程序 266
7.5 程序测试与运行 266
7.5.2 测试结果 273
7.6 小结 274
第8章 VGA/LCD显示控制器 275
8.1 VGA显示原理 275
8.1.1 图像显示原理 275
8.1.2 常用视频显示标准 276
8.2 VGA/LCD显示控制器的基本框架 276
8.3 VGA/LCD显示控制器程序的实现 277
8.3.1 顶层程序——vga_top 277
8.3.2 颜色查找表——Color Lookup Table 278
8.3.3 颜色处理器——Color Processor 285
8.3.4 光标处理器——Cursor Processor 295
8.3.5 视频定时产生器——Video Timing Generator 301
8.3.6 输出FIFO 306
8.4 程序的仿真与测试 309
8.5 小结 322
第9章 CAN总线控制器 323
9.1 CAN总线协议解析 323
9.1.1 CAN总线通信模型 324
9.1.2 CAN总线协议中的基本概念 324
9.1.3 报文的数据结构 325
9.1.4 位时序(Bit Timing) 327
9.1.5 同步(Synchronization) 328
9.2 CAN通信控制器程序基本框架 328
9.2.1 SJA1000CAN通信控制器 328
9.2.2 CAN通信控制器程序框架 329
9.3 CAN通信控制器的具体实现 330
9.3.1 顶层控制程序——TOP 331
9.3.2 寄存器控制 332
9.3.3 位时序逻辑——Bit Timing Logic 339
9.3.4 位数据流处理器——Bit Stream Processor 342
9.3.5 CRC校验 357
9.3.6 FIFO 357
9.4 程序的仿真与测试 360
9.5 小结 365
第10章 以太网控制器(MAC) 366
10.1 以太网基本原理 366
10.1.1 以太网协议的参考模型 366
10.1.2 MAC子层 368
10.1.3 媒体无关接口(Media Independent Interface) 369
10.2 以太网控制器(MAC)的基本框架 370
10.3 以太网控制器(MAC)程序的实现 371
10.3.1 顶层程序——eth_top 371
10.3.2 媒体无关接口模块(Media Independent Interface Module) 373
10.3.3 数据发送模块 379
10.3.4 数据接收模块 392
10.3.5 控制模块 399
10.4 程序的仿真与测试 405
10.4.1 顶层程序 405
10.4.2 外部PHY芯片模拟程序 408
10.4.3 仿真结果 418
10.5 小结 419