书籍详情
零基础学FPGA设计:理解硬件编程思想
作者:杜勇
出版社:电子工业出版社
出版时间:2023-04-01
ISBN:9787121452154
定价:¥88.00
购买这本书可以去
内容简介
本书是针对FPGA初学者编著的入门级图书,以高云公司的FPGA和Verilog HDL为开发平台,详细阐述FPGA设计所需的基础知识、基本语法、设计流程、设计技巧,全面、细致、深刻地剖析了Verilog HDL与C语言等传统顺序语言的本质区别,使读者通过简单的实例逐步理解FPGA的硬件设计思想,实现快速掌握FPGA设计方法的目的。本书思路清晰、语言流畅、分析透彻,在简明阐述设计方法的基础上,重点辨析读者易于与常规顺序语言混淆的概念,力求使读者在较短的时间内理解硬件编程思想,掌握FPGA设计方法。
作者简介
杜勇,四川省广安市人,高级工程师。1999年于湖南大学获电子工程专业学士学位,2005年于国防科技大学获信息与通信工程专业硕士学位。主要从事数字信号处理、无线通信以及FPGA应用技术研究。发表学术论文十余篇,出版《数字滤波器的MATLAB与FPGA实现(第2版)》、《数字通信同步技术的MATLAB与FPGA实现》、《数字调制解调技术的MATLAB与FPGA实现》等多部著作。
目录
目录
篇 基础篇
第1章 的数字逻辑电路知识 3
1.1 数字逻辑和逻辑电平 3
1.1.1 模拟器件构成的数字电路 3
1.1.2 TTL反相器电路 4
1.1.3 现实中的数字信号波形 5
1.1.4 了解常用的逻辑电平 6
1.2 布尔代数 7
1.2.1 布尔和几个基本运算规则 7
1.2.2 常用的布尔代数法则 8
1.3 组合逻辑电路基础 9
1.3.1 组合逻辑电路的表示方法 9
1.3.2 为什么会产生竞争冒险 10
1.4 时序逻辑电路基础 11
1.4.1 时序逻辑电路的结构 11
1.4.2 D触发器的工作波形 12
1.4.3 计数器与寄存器电路 13
1.5 小结 16
第2章 可编程逻辑器件基础 17
2.1 可编程逻辑器件的历史 17
2.1.1 PROM是可编程逻辑器件 17
2.1.2 从PROM到GAL 19
2.1.3 从SPLD到CPLD 21
2.1.4 FPGA的时代 22
2.2 FPGA的发展趋势 24
2.3 FPGA的结构 26
2.4 FPGA与其他处理平台的比较 28
2.4.1 ASIC、DSP、ARM的特点 29
2.4.2 FPGA的特点及优势 30
2.4.3 FPGA与CPLD的区别 31
2.5 工程中如何选择FPGA器件 31
2.6 小结 32
第3章 准备好开发环境 33
3.1 安装FPGA开发环境 33
3.1.1 安装高云云源软件 33
3.1.2 安装ModelSim软件 35
3.2 开发平台CGD100简介 38
3.3 Verilog HDL基本语法 39
3.3.1 Verilog HDL的程序结构 39
3.3.2 数据类型及基本运算符 42
3.3.3 运算符优先级及关键词 44
3.3.4 赋值语句与块语句 44
3.3.5 条件语句和分支语句 47
3.4 小结 48
第二篇 初识篇
第4章 FPGA设计流程—LED流水灯电路 51
4.1 FPGA设计流程 51
4.2 流水灯设计实例要求 54
4.3 读懂电路原理图 55
4.4 流水灯的设计输入 57
4.4.1 建立FPGA工程 57
4.4.2 Verilog HDL程序输入 59
4.5 程序文件下载 62
4.6 小结 64
第5章 从组合逻辑电路学起 65
5.1 从简单的与非门电路开始 65
5.1.1 调用门级结构描述与非门 65
5.1.2 二合一的命名原则 66
5.1.3 用门级电路搭建一个投票电路 67
5.2 设计复杂一点的投票电路 68
5.2.1 门电路设计方法的短板 68
5.2.2 利用assign语句完成门电路功能 69
5.2.3 常用的if…else语句 71
5.2.4 reg与wire的用法区别 73
5.2.5 记住“<=”与“=”赋值的规则 74
5.2.6 非常重要的概念—信号位宽 75
5.2.7 行为级建模的5人投票电路 75
5.3 ModelSim仿真电路功能 76
5.3.1 4线-2线编码器设计 77
5.3.2 建立ModelSim工程 78
5.3.3 设计测试激励文件 79
5.3.4 查看ModelSim仿真波形 82
5.4 典型组合逻辑电路Verilog HDL设计 84
5.4.1 8421BCD编码器电路 85
5.4.2 8线-3线优先编码器电路 86
5.4.3 74LS138译码器电路 88
5.4.4 与if…else语句齐名的case语句 90
5.4.5 数据分配器与数据选择器电路 91
5.5 数码管静态显示电路设计 93
5.5.1 数码管的基本工作原理 93
5.5.2 实例需求及电路原理分析 94
5.5.3 数码管显示电路Verilog HDL设计 95
5.5.4 板载测试 97
5.6 小结 98
第6章 时序逻辑电路的灵魂—D触发器 101
6.1 深入理解D触发器 101
6.1.1 D触发器产生一个时钟周期的延时 101
6.1.2 D触发器能工作的时钟频率分析 102
6.2 D触发器的描述方法 104
6.2.1 单个D触发器的Verilog HDL设计 104
6.2.2 异步复位的D触发器 106
6.2.3 同步复位的D触发器 108
6.2.4 时钟使能的D触发器 109
6.2.5 D触发器的ModelSim仿真 111
6.2.6 其他形式的D触发器 112
6.3 初试牛刀—边沿检测电路设计 113
6.3.1 边沿检测电路的功能描述 113
6.3.2 边沿检测电路的Verilog HDL设计 114
6.3.3 改进的边沿检测电路 115
6.4 连续序列检测电路—边沿检测电路的升级 116
6.4.1 连续序列检测电路设计 116
6.4.2 分析Verilog HDL并行语句 118
6.4.3 再论“<=”与“=”赋值 119
6.4.4 序列检测电路的ModelSim仿真 121
6.5 任意序列检测器—感受D触发器的强大 124
6.5.1 完成饮料质量检测电路功能设计 124
6.5.2 优化检测电路的设计代码 128
6.6 小结 129
第7章 时序逻辑电路的精华—计数器 131
7.1 简单的十六进制计数器 131
7.1.1 计数器设计 131
7.1.2 计数器就是加法器和触发器 133
7.2 十进制计数器 134
7.2.1 具有复位及时钟使能功能的计数器 134
7.2.2 讨论计数器的进制 135
7.2.3 计数器代码的花式写法 136
7.3 计数器是流水灯的核心 137
7.3.1 设计一个秒信号 137
7.3.2 流水灯电路的设计方案 139
7.3.3 闪烁频率可控制的流水灯 140
7.3.4 采用移位运算设计流水灯电路 142
7.4 Verilog的本质是并行语言 142
7.4.1 典型的Verilog错误用法—同一信号重复赋值 142
7.4.2 并行语言与顺序语言 144
7.4.3 采用并行思维分析信号重复赋值问题 145
7.5 呼吸灯电路设计 146
7.5.1 呼吸灯的工作原理 146
7.5.2 设计思路分析 147
7.5.3 亮度实现模块Verilog HDL设计 147
7.5.4 亮度控制模块Verilog HDL设计 148
7.5.5 顶层模块Verilog HDL设计 150
7.6 小结 151
第三篇 入门篇
第8章 设计简洁美观的秒表电路 155
8.1 设定一个目标—4位秒表电路 155
8.1.1 明确功能需求 155
8.1.2 形成设计方案 156
8.2 顶层文件的Verilog HDL设计 157
8.3 设计一个完善的数码管显示模块 158
8.4 秒表计数模块的Verilog HDL设计 160
8.4.1 秒表计数电路设计 160
8.4.2 秒表计数电路的ModelSim仿真 162
8.4.3 简洁美观的秒表计数器设计 163
8.4.4 实现秒表的启停功能 166
8.5 按键消抖模块的Verilog HDL设计 166
8.5.1 按键消抖产生的原理 166
8.5.2 按键消抖模块Verilog HDL设计 167
8.5.3 将按键消抖模块集成到秒表电路中 169
8.6 小结 169
第9章 数字密码锁电路设计 171
9.1 数字密码锁的功能描述 171
9.2 规划好数字密码锁的功能模块 172
9.2.1 数字密码锁总体结构框图 172
9.2.2 数字密码锁的顶层模块设计 172
9.3 数字密码锁功能子模块设计 174
9.3.1 按键消抖模块Verilog HDL设计 174
9.3.2 计数模块Verilog HDL设计 175
9.3.3 密码设置模块才是核心模块 176
9.4 小结 178
第10章 简易电子琴电路设计 179
10.1 音符产生原理 179
10.2 琴键功能电路设计 180
10.2.1 顶层模块设计 180
10.2.2 琴键模块设计 182
10.2.3 音符产生模块设计 183
10.3 自动演奏乐曲《梁祝》 185
10.3.1 自动演奏乐曲的原理 185
10.3.2 自动演奏乐曲《梁祝》片段 186
10.4 完整的电子琴电路设计 189
10.5 小结 190
第11章 应用广泛的串口通信电路 191
11.1 RS-232串口通信的概念 191
11.2 串口硬件电路原理分析 192
11.3 串口通信电路Verilog HDL设计 193
11.3.1 顶层文件的Verilog HDL设计 193
11.3.2 时钟模块的Verilog HDL设计 195
11.3.3 接收模块的Verilog HDL设计 196
11.3.4 发送模块的Verilog HDL设计 198
11.3.5 FPGA实现及板载测试 199
11.4 采用串口控制秒表电路 201
11.4.1 设计需求分析 201
11.4.2 顶层文件的Verilog HDL设计 202
11.4.3 秒表时间获取模块Verilog HDL设计 204
11.4.4 完善秒表电路顶层模块Verilog HDL代码 205
11.4.5 完善秒表计数模块Verilog HDL代码 207
11.4.6 FPGA实现及板载测试 210
11.5 小结 210
第12章 对状态机的讨论 211
12.1 有限状态机的概念 211
12.2 状态机的Verilog设计方法 212
12.2.1 一段式状态机Verilog代码 212
12.2.2 二段式状态机Verilog代码 213
12.2.3 三段式状态机Verilog HDL代码 215
12.3 计数器电路的状态机描述方法 216
12.4 序列检测器的状态机描述方法 218
12.5 小结 221
第四篇 提高篇
第13章 基本的时序约束方法 225
13.1 电路的速度极限 225
13.2 时序约束方法 227
13.2.1 查看计数器的逻辑电路结构 227
13.2.2 计数器电路添加时钟周期约束 229
13.3 速度与面积的取舍 231
13.3.1 多路加法器电路的结构分析 231
13.3.2 流水线操作的本质—讨论多路加法器的运行速度 233
13.3.3 用一个加法器完成4路加法 235
13.3.4 串行加法器时序分析 238
13.4 小结 238
第14章 采用IP核设计 241
14.1 FPGA设计中的“拿来主义”—使用IP核 241
14.1.1 IP核的一般概念 241
14.1.2 FPGA设计中的IP核类型 242
14.2 时钟IP核 244
14.2.1 全局时钟资源 244
14.2.2 采用时钟IP核生成多路时钟信号 244
14.3 乘法器IP核 248
14.3.1 乘法器IP核参数的设置 248
14.3.2 乘法器IP核的功能仿真 250
14.4 存储器IP核 251
14.4.1 ROM核 251
14.4.2 RAM核 255
14.5 小结 260
第15章 采用在线逻辑分析仪调试程序 261
15.1 在线逻辑分析仪的优势 261
15.2 GAO的使用流程 262
15.3 采用GAO调试串口通信程序 263
15.3.1 调试目的 263
15.3.2 添加GAO到项目中 263
15.3.3 设置触发信号及触发条件 264
15.3.4 设置捕获信号参数 265
15.3.5 观察串口收发信号波
篇 基础篇
第1章 的数字逻辑电路知识 3
1.1 数字逻辑和逻辑电平 3
1.1.1 模拟器件构成的数字电路 3
1.1.2 TTL反相器电路 4
1.1.3 现实中的数字信号波形 5
1.1.4 了解常用的逻辑电平 6
1.2 布尔代数 7
1.2.1 布尔和几个基本运算规则 7
1.2.2 常用的布尔代数法则 8
1.3 组合逻辑电路基础 9
1.3.1 组合逻辑电路的表示方法 9
1.3.2 为什么会产生竞争冒险 10
1.4 时序逻辑电路基础 11
1.4.1 时序逻辑电路的结构 11
1.4.2 D触发器的工作波形 12
1.4.3 计数器与寄存器电路 13
1.5 小结 16
第2章 可编程逻辑器件基础 17
2.1 可编程逻辑器件的历史 17
2.1.1 PROM是可编程逻辑器件 17
2.1.2 从PROM到GAL 19
2.1.3 从SPLD到CPLD 21
2.1.4 FPGA的时代 22
2.2 FPGA的发展趋势 24
2.3 FPGA的结构 26
2.4 FPGA与其他处理平台的比较 28
2.4.1 ASIC、DSP、ARM的特点 29
2.4.2 FPGA的特点及优势 30
2.4.3 FPGA与CPLD的区别 31
2.5 工程中如何选择FPGA器件 31
2.6 小结 32
第3章 准备好开发环境 33
3.1 安装FPGA开发环境 33
3.1.1 安装高云云源软件 33
3.1.2 安装ModelSim软件 35
3.2 开发平台CGD100简介 38
3.3 Verilog HDL基本语法 39
3.3.1 Verilog HDL的程序结构 39
3.3.2 数据类型及基本运算符 42
3.3.3 运算符优先级及关键词 44
3.3.4 赋值语句与块语句 44
3.3.5 条件语句和分支语句 47
3.4 小结 48
第二篇 初识篇
第4章 FPGA设计流程—LED流水灯电路 51
4.1 FPGA设计流程 51
4.2 流水灯设计实例要求 54
4.3 读懂电路原理图 55
4.4 流水灯的设计输入 57
4.4.1 建立FPGA工程 57
4.4.2 Verilog HDL程序输入 59
4.5 程序文件下载 62
4.6 小结 64
第5章 从组合逻辑电路学起 65
5.1 从简单的与非门电路开始 65
5.1.1 调用门级结构描述与非门 65
5.1.2 二合一的命名原则 66
5.1.3 用门级电路搭建一个投票电路 67
5.2 设计复杂一点的投票电路 68
5.2.1 门电路设计方法的短板 68
5.2.2 利用assign语句完成门电路功能 69
5.2.3 常用的if…else语句 71
5.2.4 reg与wire的用法区别 73
5.2.5 记住“<=”与“=”赋值的规则 74
5.2.6 非常重要的概念—信号位宽 75
5.2.7 行为级建模的5人投票电路 75
5.3 ModelSim仿真电路功能 76
5.3.1 4线-2线编码器设计 77
5.3.2 建立ModelSim工程 78
5.3.3 设计测试激励文件 79
5.3.4 查看ModelSim仿真波形 82
5.4 典型组合逻辑电路Verilog HDL设计 84
5.4.1 8421BCD编码器电路 85
5.4.2 8线-3线优先编码器电路 86
5.4.3 74LS138译码器电路 88
5.4.4 与if…else语句齐名的case语句 90
5.4.5 数据分配器与数据选择器电路 91
5.5 数码管静态显示电路设计 93
5.5.1 数码管的基本工作原理 93
5.5.2 实例需求及电路原理分析 94
5.5.3 数码管显示电路Verilog HDL设计 95
5.5.4 板载测试 97
5.6 小结 98
第6章 时序逻辑电路的灵魂—D触发器 101
6.1 深入理解D触发器 101
6.1.1 D触发器产生一个时钟周期的延时 101
6.1.2 D触发器能工作的时钟频率分析 102
6.2 D触发器的描述方法 104
6.2.1 单个D触发器的Verilog HDL设计 104
6.2.2 异步复位的D触发器 106
6.2.3 同步复位的D触发器 108
6.2.4 时钟使能的D触发器 109
6.2.5 D触发器的ModelSim仿真 111
6.2.6 其他形式的D触发器 112
6.3 初试牛刀—边沿检测电路设计 113
6.3.1 边沿检测电路的功能描述 113
6.3.2 边沿检测电路的Verilog HDL设计 114
6.3.3 改进的边沿检测电路 115
6.4 连续序列检测电路—边沿检测电路的升级 116
6.4.1 连续序列检测电路设计 116
6.4.2 分析Verilog HDL并行语句 118
6.4.3 再论“<=”与“=”赋值 119
6.4.4 序列检测电路的ModelSim仿真 121
6.5 任意序列检测器—感受D触发器的强大 124
6.5.1 完成饮料质量检测电路功能设计 124
6.5.2 优化检测电路的设计代码 128
6.6 小结 129
第7章 时序逻辑电路的精华—计数器 131
7.1 简单的十六进制计数器 131
7.1.1 计数器设计 131
7.1.2 计数器就是加法器和触发器 133
7.2 十进制计数器 134
7.2.1 具有复位及时钟使能功能的计数器 134
7.2.2 讨论计数器的进制 135
7.2.3 计数器代码的花式写法 136
7.3 计数器是流水灯的核心 137
7.3.1 设计一个秒信号 137
7.3.2 流水灯电路的设计方案 139
7.3.3 闪烁频率可控制的流水灯 140
7.3.4 采用移位运算设计流水灯电路 142
7.4 Verilog的本质是并行语言 142
7.4.1 典型的Verilog错误用法—同一信号重复赋值 142
7.4.2 并行语言与顺序语言 144
7.4.3 采用并行思维分析信号重复赋值问题 145
7.5 呼吸灯电路设计 146
7.5.1 呼吸灯的工作原理 146
7.5.2 设计思路分析 147
7.5.3 亮度实现模块Verilog HDL设计 147
7.5.4 亮度控制模块Verilog HDL设计 148
7.5.5 顶层模块Verilog HDL设计 150
7.6 小结 151
第三篇 入门篇
第8章 设计简洁美观的秒表电路 155
8.1 设定一个目标—4位秒表电路 155
8.1.1 明确功能需求 155
8.1.2 形成设计方案 156
8.2 顶层文件的Verilog HDL设计 157
8.3 设计一个完善的数码管显示模块 158
8.4 秒表计数模块的Verilog HDL设计 160
8.4.1 秒表计数电路设计 160
8.4.2 秒表计数电路的ModelSim仿真 162
8.4.3 简洁美观的秒表计数器设计 163
8.4.4 实现秒表的启停功能 166
8.5 按键消抖模块的Verilog HDL设计 166
8.5.1 按键消抖产生的原理 166
8.5.2 按键消抖模块Verilog HDL设计 167
8.5.3 将按键消抖模块集成到秒表电路中 169
8.6 小结 169
第9章 数字密码锁电路设计 171
9.1 数字密码锁的功能描述 171
9.2 规划好数字密码锁的功能模块 172
9.2.1 数字密码锁总体结构框图 172
9.2.2 数字密码锁的顶层模块设计 172
9.3 数字密码锁功能子模块设计 174
9.3.1 按键消抖模块Verilog HDL设计 174
9.3.2 计数模块Verilog HDL设计 175
9.3.3 密码设置模块才是核心模块 176
9.4 小结 178
第10章 简易电子琴电路设计 179
10.1 音符产生原理 179
10.2 琴键功能电路设计 180
10.2.1 顶层模块设计 180
10.2.2 琴键模块设计 182
10.2.3 音符产生模块设计 183
10.3 自动演奏乐曲《梁祝》 185
10.3.1 自动演奏乐曲的原理 185
10.3.2 自动演奏乐曲《梁祝》片段 186
10.4 完整的电子琴电路设计 189
10.5 小结 190
第11章 应用广泛的串口通信电路 191
11.1 RS-232串口通信的概念 191
11.2 串口硬件电路原理分析 192
11.3 串口通信电路Verilog HDL设计 193
11.3.1 顶层文件的Verilog HDL设计 193
11.3.2 时钟模块的Verilog HDL设计 195
11.3.3 接收模块的Verilog HDL设计 196
11.3.4 发送模块的Verilog HDL设计 198
11.3.5 FPGA实现及板载测试 199
11.4 采用串口控制秒表电路 201
11.4.1 设计需求分析 201
11.4.2 顶层文件的Verilog HDL设计 202
11.4.3 秒表时间获取模块Verilog HDL设计 204
11.4.4 完善秒表电路顶层模块Verilog HDL代码 205
11.4.5 完善秒表计数模块Verilog HDL代码 207
11.4.6 FPGA实现及板载测试 210
11.5 小结 210
第12章 对状态机的讨论 211
12.1 有限状态机的概念 211
12.2 状态机的Verilog设计方法 212
12.2.1 一段式状态机Verilog代码 212
12.2.2 二段式状态机Verilog代码 213
12.2.3 三段式状态机Verilog HDL代码 215
12.3 计数器电路的状态机描述方法 216
12.4 序列检测器的状态机描述方法 218
12.5 小结 221
第四篇 提高篇
第13章 基本的时序约束方法 225
13.1 电路的速度极限 225
13.2 时序约束方法 227
13.2.1 查看计数器的逻辑电路结构 227
13.2.2 计数器电路添加时钟周期约束 229
13.3 速度与面积的取舍 231
13.3.1 多路加法器电路的结构分析 231
13.3.2 流水线操作的本质—讨论多路加法器的运行速度 233
13.3.3 用一个加法器完成4路加法 235
13.3.4 串行加法器时序分析 238
13.4 小结 238
第14章 采用IP核设计 241
14.1 FPGA设计中的“拿来主义”—使用IP核 241
14.1.1 IP核的一般概念 241
14.1.2 FPGA设计中的IP核类型 242
14.2 时钟IP核 244
14.2.1 全局时钟资源 244
14.2.2 采用时钟IP核生成多路时钟信号 244
14.3 乘法器IP核 248
14.3.1 乘法器IP核参数的设置 248
14.3.2 乘法器IP核的功能仿真 250
14.4 存储器IP核 251
14.4.1 ROM核 251
14.4.2 RAM核 255
14.5 小结 260
第15章 采用在线逻辑分析仪调试程序 261
15.1 在线逻辑分析仪的优势 261
15.2 GAO的使用流程 262
15.3 采用GAO调试串口通信程序 263
15.3.1 调试目的 263
15.3.2 添加GAO到项目中 263
15.3.3 设置触发信号及触发条件 264
15.3.4 设置捕获信号参数 265
15.3.5 观察串口收发信号波
猜您喜欢