前 言
第1 章 FPGA基础及电路设计 1
1. 1 FPGA 基础及7 系列FPGA 基本原理 1
1. 1. 1 FPGA 概述 1
1. 1. 2 FPGA 基本逻辑结构 2
1. 1. 3 7 系列FPGA CLB 4
1. 1. 4 7 系列FPGA 的IOB 8
1. 1. 5 7 系列FPGA 及7a35tftg256 ̄1 特性 9
1. 2 FPGA 电路设计 11
1. 2. 1 FPGA 的BANK 电路 11
1. 2. 2 LED 驱动电路 13
1. 2. 3 拨码开关电路 13
1. 2. 4 按键电路 14
1. 2. 5 七段数码管驱动电路 15
1. 2. 6 VGA 显示驱动电路 17
1. 2. 7 RS ̄232 驱动电路 19
1. 2. 8 配置电路 20
1. 2. 9 XADC 接口和扩展接口 22
习题 24
第2 章 Verilog HDL 语言与Vivado 25
2. 1 Verilog HDL 基本结构 25
2. 1. 1 一个简单的组合逻辑实例 25
2. 1. 2 一个简单的时序逻辑实例 27
2. 1. 3 Verilog HDL 结构要求 28
2. 2 数据类型及变量、常量 29
2. 2. 1 逻辑值和常量 30
2. 2. 2 线网型变量wire 30
2. 2. 3 寄存器类型reg 31
2. 2. 4 符号常量 32
2. 2. 5 存储器型变量 32
2. 3 运算符 33
2. 3. 1 算术运算符 33
2. 3. 2 逻辑运算符 33
2. 3. 3 按位运算符 34
2. 3. 4 关系运算符 34
2. 3. 5 等式运算符 35
2. 3. 6 缩减运算符 35
2. 3. 7 移位运算符 35
2. 3. 8 条件运算符和拼接运算符 36
2. 3. 9 运算符的优先级 37
2. 4 语句 37
2. 4. 1 赋值语句、结构说明语句、阻塞与非阻塞 38
2. 4. 2 条件语句 41
2. 4. 3 循环语句 43
2. 5 Vivado 初步 46
2. 5. 1 Vivado 获取和安装 47
2. 5. 2 Vivado 主界面 47
习题 50
第3 章 组合逻辑电路与Vivado 进阶 51
3. 1 我的第一个工程———多数表决器 51
3. 1. 1 多数表决器的分析和逻辑实现 51
3. 1. 2 多数表决器的工程创建 52
3. 1. 3 多数表决器的Verilog HDL 源文件创建 56
3. 1. 4 多数表决器的Verilog HDL 代码实现及RTL 分析 58
3. 1. 5 综合 59
3. 1. 6 约束 60
3. 1. 7 实现 62
3. 1. 8 仿真 63
3. 1. 9 编程和调试 65
3. 2 3 ̄8 译码器设计和IP 核 70
3. 2. 1 译码器的实现 70
3. 2. 2 译码器IP 核生成 75
3. 3 调用IP 核实现多数表决器 78
3. 3. 1 使用74x138 实现多数表决器的设计 78
3. 3. 2 构建新工程并调用IP 核 78
习题 83
目 录Ⅶ
第4 章 时序逻辑电路FPGA实现 84
4. 1 时钟同步状态机的设计 84
4. 1. 1 时钟同步状态机及其设计流程 84
4. 1. 2 时钟同步状态机设计方法构建序列发生器 86
4. 1. 3 状态图直接描述法实现序列发生器 90
4. 2 同步计数器74x163 的实现 94
4. 3 移位寄存器的实现和应用 97
4. 3. 1 74x194 的实现 97
4. 3. 2 使用74x194IP 核实现11001 序列发生器 100
习题 104
第5 章 FPGA基本实践 105
5. 1 流水灯实践 105
5. 1. 1 流水灯的关键设计 105
5. 1. 2 流水灯工程的Vivado 实现 106
5. 2 数码管动态显示实践 111
5. 2. 1 数码管动态显示原理分析 111
5. 2. 2 数码管动态显示设计 112
5. 2. 3 数码管动态显示工程的Vivado 实现 113
5. 2. 4 数码管动态显示IP 核设计与实现 117
5. 2. 5 调用IP 核实现动态显示 120
5. 3 VGA 显示的实现 123
5. 3. 1 VGA 显示基本原理 123
5. 3. 2 VGA 显示设计与实现 125
习题 132
第6 章 FPGA综合实践 133
6. 1 电子秒表的设计与实现 133
6. 1. 1 按键消抖 133
6. 1. 2 秒表综合设计 136
6. 2 UART 串行接口设计及通信实现 142
6. 2. 1 异步串行接口原理分析 142
6. 2. 2 波特率及其他时钟信号发生模块设计 143
6. 2. 3 串行发送程序设计 145
6. 2. 4 串行接收程序设计 148
6. 2. 5 串行通信顶层程序设计 152
6. 2. 6 串行通信功能测试 153
习题 155
Ⅷ Xilinx FPGA 原理与实践———基于Vivado 和Verilog HDL
第7 章 FPGA 进阶——XADC、BRAM原理及电压表、示波器设计 156
7. 1 XADC 基本结构及寄存器 156
7. 1. 1 XADC 逻辑结构 156
7. 1. 2 XADC 对外连接说明 156
7. 1. 3 XADC 端口 159
7. 1. 4 XADC 状态寄存器和控制寄存器 160
7. 1. 5 操作模式 166
7. 1. 6 XADC 操作时序 167
7. 2 应用XADC 实现多路电压采集及显示 168
7. 2. 1 生成XADC IP 核实例 168
7. 2. 2 使用XADC IP 核实现XADC 序列模式访问模块 171
7. 2. 3 A/ D 序列采集和显示实现 175
7. 2. 4 序列采集及显示测试 179
7. 3 应用XADC 及BRAM 实现多通道示波器 181
7. 3. 1 块存储器BRAM 原理 181
7. 3. 2 块内存生成IP 的使用和仿真验证 186
7. 3. 3 多通道示波器的设计思路 192
7. 3. 4 显示内存设计及其访问模块构建及仿真 193
7. 3. 5 波形发生器模块设计及仿真 196
7. 3. 6 VGA 显示驱动模块设计及仿真 202
7. 3. 7 加入逻辑分析仪模块及顶层模块实现 206
7. 3. 8 功能测试 209
习题 209
附录 211
附录A xc7a35tftg256 ̄1 引脚说明 211
附录B 口袋实验板资源 218
附录C 实验或课程设计教学安排 229
附录D 分章节代码汇总 230
附录E A 型实验板参考约束文件 232
参考文献 236