第一部分 逻辑设计基础 3
第1章 逻辑设计概述及Vivado基础 3
1.1逻辑设计概况 3
1.2 Verilog HDL语言基础 6
1.2.1硬件描述语言概述 6
1.2.2 Verilog HDL语言要素和设计流程 9
1.3 PLD器件基础 11
1.3.1可编程逻辑器件技术发展历程 11
1.3.2 FPGA和CPLD简介 12
1.3.3 Xilinx FPGA介绍 12
1.3.4 FPGA选型应该考虑的问题 13
1.4 Vivado开发环境及设计流程 15
1.4.1 Vivado功能介绍 15
1.4.2 Vivado用户界面介绍和菜单操作 15
1.4.3 Vivado开发流程 18
第2章 布尔代数和Verilog HDL基础 30
2.1布尔代数 30
2.1.1三种基本逻辑门 31
2.1.2四种常用逻辑门 32
2.2布尔定律 33
2.2.1单变量布尔定律 33
2.2.2双变量和三变量的布尔定律 33
2.3布尔代数化简 37
2.3.1公式法化简 37
2.3.2卡诺图化简 38
2.4 Verilog HDL语言基础 42
2.4.1 Verilog HDL模块及端口 42
2.4.2 Verilog HDL数据类型声明 45
2.4.3 Verilog HDL运算操作 47
第3章 组合逻辑电路设计基础 53
3.1组合电路中的always块 53
3.1.1基本语法格式 54
3.1.2过程赋值 54
3.1.3变量的数据类型 55
3.1.4简单实例 55
3.2条件语句 56
3.2.1 if else语句 57
3.2.2 case语句 59
3.3循环语句 62
3.3.1 for语句 62
3.3.2 repeat语句 63
3.3.3 while语句 64
3.3.4 forever语句 65
3.4 always块的一般编码原则 65
3.4.1组合电路代码中常见的错误 65
3.4.2组合电路中always块的使用原则 68
3.5常数和参数 68
3.5.1常数 68
3.5.2参数 69
3.6设计实例 71
3.6.1多路选择器 71
3.6.2比较器 72
3.6.3译码器和编码器 74
3.6.4十六进制数七段LED显示译码器 77
3.6.5二进制—BCD码转换器 79
3.7练习题 81
第4章 时序电路设计基础 83
4.1触发器和锁存器 83
4.1.1基本D触发器 83
4.1.2含异步复位的D触发器 84
4.1.3含异步复位和同步使能的D触发器 85
4.1.4基本锁存器 87
4.1.5含清0控制的锁存器 88
4.2寄存器 89
4.2.1 1位寄存器 89
4.2.2 N位寄存器 90
4.2.3寄存器组 91
4.3移位寄存器 92
4.3.1具有同步预置功能的8位移位寄存器 92
4.3.2 8位通用移位寄存器 93
4.4计数器 94
4.4.1简单的二进制计数器 94
4.4.2通用二进制计数器 94
4.4.3模m计数器 95
4.5设计实例 97
4.5.1数码管扫描显示电路 97
4.5.2秒表 101
4.6练习题 103
第5章 有限状态机设计基础 104
5.1引言 104
5.1.1有限状态机的特点 104
5.1.2 Mealy状态机和Moore状态机 105
5.1.3有限状态机的表示方法 106
5.2有限状态机代码实现 107
5.3设计实例 110
5.3.1序列检测器设计 110
5.3.2 ADC采样控制电路设计 113
5.3.3按键消抖电路设计 116
5.4课程练习 118
第6章 逻辑设计工程技术基础 120
6.1数字电路稳定性 120
6.2组合逻辑与毛刺 121
6.2.1组合逻辑设计中的毛刺现象 121
6.2.2组合逻辑设计中毛刺的处理 122
6.3异步设计与毛刺 123
6.3.1异步时序电路中的毛刺现象 123
6.3.2异步时序电路中毛刺的处理 123
6.4 Verilog HDL设计中的编程风格 125
6.4.1强调代码编写风格的必要性 125
6.4.2强调编写规范的宗旨 125
6.4.3变量及信号命名规范 125
6.4.4编码格式规范 126
6.5 Xilinx开发环境中的其他逻辑设计辅助工具 128
第二部分 常用逻辑设计模块 131
第7章 Vivado数字积木流程 131
7.1 IP基础 131
7.2打包属于自己的IP 134
7.3 IP设计示例——二进制转格雷码 146
7.4练习题 152
第8章 串行通信接口控制器 153
8.1 UART串口通信协议及控制器设计 153
8.1.1 UART协议介绍 153
8.1.2 UART协议实例 154
8.2 PS/2协议及实例设计 158
8.2.1 PS/2协议介绍 158
8.2.2 PS/2设计实例 159
8.3 SPI同步串行总线协议及控制器设计 160
8.3.1 SPI协议介绍 160
8.3.2 SPI控制器模块实例 162
8.4 I2C两线式串行总线协议及控制器设计 164
8.4.1 I2C协议介绍 164
8.4.2 I2C模块设计实例 166
8.5练习题 168
第9章 RAM接口控制器 169
9.1内部存储器 169
9.1.1 FIFO 169
9.1.2单端口RAM设计 175
9.1.3双端口RAM设计 177
9.2外部存储器 180
9.2.1 DRAM介绍 180
9.2.2 DDR SDRAM原理 180
9.2.3 DDR SDRAM控制器原理 182
9.3练习题 200
第10章 字符点阵显示模块接口控制器 201
10.1字符型液晶控制器设计 201
10.1.1 LCD原理 201
10.1.2字符型LCD1602模块 202
10.1.3字符型液晶模块显示实例 206
10.2点阵OLED控制器设计 211
10.2.1 OLED原理 211
10.2.2 OLED驱动原理 212
10.2.3 OLED显示实例 214
10.3练习题 220
第11章 VGA接口控制器 221
11.1 CRT显示器原理 221
11.2 VGA控制器设计 221
11.2.1 VGA视频接口的概念 221
11.2.2 VGA的接口信号 222
11.2.3行同步和场同步 222
11.3 VGA接口设计实例 223
11.3.1 VGA显示条纹和棋盘格图像 223
11.3.2 VGA图像显示实例(文字/图片显示或者数码相框) 226
11.3.3 VGA IP的使用 230
11.4练习题 235
第12章 数字图像采集 236
12.1数字图像采集概述 236
12.2系统设计原理 236
12.2.1系统架构 236
12.2.2 OV7725芯片介绍 237
12.2.3 OV7725 SCCB协议 238
12.2.4 OV7725配置寄存器 239
12.2.5 OV7725图像采集 239
12.2.6 Block RAM存储单元 242
12.2.7 VGA显示的实现 243
12.3模块搭建与综合实现 243
12.4系统调试及板级验证 246
12.4.1引脚分配 246
12.4.2模块连接 246
12.5练习题 246
第三部分 逻辑系统设计案例 249
第13章 数字逻辑系统设计案例:数字钟 249
13.1数字钟设计案例 249
13.1.1实验原理 249
13.1.2实验设计流程 249
13.2基于集成逻辑分析仪的调试 253
13.3约束设计 257
13.3.1物理约束 257
13.3.2时序约束 260
13.4练习题 272
第14章 单周期处理器设计实例 273
14.1单周期处理器体系架构简介 273
14.1.1单周期处理器指令集简介 273
14.1.2单周期处理器系统结构 276
14.2设计流程 277
14.2.1实验原理 277
14.2.2设计与验证 279
第15章 数字信号处理实例:FIR滤波器 284
15.1 FIR滤波器简介 284
15.2基于HLS的FIR滤波器实现流程 284
15.3 工程测试 291
15.4生成IP 292
15.5练习题 293
第16章 数字图像处理设计案例 294
16.1项目概述 294
16.2硬件介绍 295
16.3模块介绍 295
16.3.1 RGB转HSV模块 295
16.3.2 Color Detect色彩检测及坐标计算 296
16.4舵机控制模块 300
16.5实例实现过程 300
16.6板级验证 301
16.7练习题 302
第17章 大学生FPGA设计案例 303
17.1逻辑控制 303
17.2图像处理 304
17.2.1 VGA控制颜色 305
17.2.2视力表 305
17.2.3手部运动检测系统 307
17.3仪表仪器 309
17.3.1数字示波器 309
17.3.2逻辑分析仪 309
17.3.3波形发生器 311
17.4其他 312
第18章 Xilinx资源导读 313
18.1获取本书参考例程 313
18.1.1 Github介绍及使用 313
18.1.2 OpenHW介绍 313
18.1.3 Xilinx各类比赛 315
18.2 Xilinx网站 315
18.2.1 FPGA应用与解决方案 315
18.2.2文档资料查找 315
18.2.3 Vivado工具和License的下载以及更新 317
18.2.4问题的查找 317
18.2.5 Xilinx社区 318
18.3视频教程 318
18.4 Vivado学习参考文档 318
参考文献 320