本帖最后由 mdyfpga 于 2022-6-8 08:53 编辑
手把手教你学FPGA设计——基于大道至简的至简设计法
本书介绍利用硬件描述语言(VerilogHDL)设计数字系统的方法,提出计数器、状态机、FIFO的三大架构,采用理论与实践相结合的方式,详细介绍各个架构的实现步骤———“八步法”,并配以相应的项目练习。在书的后半部分,介绍模块划分的基本方法,总结并提出了模块间的交互架构,在项目实践中给出了温度监控系统、边缘检测系统等综合性项目的模式。本书可作为高等院校电子工程类、自动控制类、计算机类等专业的教材,亦可供FPGA相关行业的爱好者和从业人员自学与参考。
手把手教你学FPGA设计——基于大道至简的至简设计法
序随着微电子技术的发展,可编程门阵列(FPGA)技术已经成为信息产业热门的技术之一,其应用范围遍及电子、通信、自动化、医疗、军事和航空航天等多个热门领域。在数字集成电路设计领域,前端验证工作通常依托FPGA,并由那些精通硬件构架的FPGA系统工程师来完成。因此,FPGA技术的设计和开发已成为当前发展迅速的朝阳行业之一。作者曾在华为海思、展讯通信等集成电路设计企业参与了FPGA大型项目的开发设计,近年来又在明德扬科技教育公司从事FPGA的教学培训,从而有机会深入研究和采用多种教学方法进行试验,以便把那些构成FPGA设计基础的知识模块和工具平台,变成FPGA学习者能够实际运用的方法,而更重要的是能够帮助学习者消化核心功能及其设计流程。于是,本书便应运而生,旨在为FPGA学习者提供一种FPGA的至简设计方法。与一些将FPGA设计的理论知识和软件工具作为叙述重点的教程不同,本书的重点不在于介绍FPGA设计“是什么”,而侧重于引导学习者“怎么做”。经过这样设计后的内容可以引起学习者浓厚的兴趣,并使学习者在短时间内快速掌握FPGA设计方法,正如诺贝尔文学奖获得者、法国作家AnatoleFrance的精辟格言:“教学的全部艺术就是唤醒年轻心灵的天然好奇心。”
黄君凯
目 录
第一篇模块设计 1
第一章模块 2
§1.1 模块结构 2
§1.2 模块三大架构 4
1.2.1 计数器架构 4
1.2.2 状态机架构 4
1.2.3 FIFO架构 4
第二章计数器架构 5
§2.1 计数器架构八步法 5
2.1.1 概述 5
2.1.2 第一步:明确功能 8
2.1.3 第二步:功能波形 8
2.1.4 第三步:计数结构 8
2.1.5 第四步:加一结束条件 9
2.1.6 第五步:定义特殊点 10
2.1.7 第六步:完整性检查 11
2.1.8 第七步:计数器代码 12
2.1.9 第八步:功能代码 12
2.1.10总结 13
§2.2 项目实践 14
2.2.1 项目一:PWM流水灯 14
2.2.2 项目二:UART接口 19
2.2.3 项目三:VGA接口 30
2.2.4 项目四:SCCB(IIC)接口 37
第三章状态机架构 47
§3.1 状态机架构八步法 47
3.1.1 概述 47
3.1.2 第一步:明确功能 50
3.1.3 第二步:输出分析 50
3.1.4 第三步:状态合并 51
3.1.5 第四步:状态转移 52
3.1.6 第五步:转移条件 53
3.1.7 第六步:完整性检查 54
3.1.8 第七步:状态机代码 55
3.1.9 第八步:功能代码 58
3.1.10总结 58
§3.2 项目实践 59
3.2.1 项目一:简易包文类型识别器 59
3.2.2 项目二:SPI接口 67
3.2.3 项目三:SDRAM接口 76
第四章FIFO架构 95
§4.1 FIFO架构八步法 95
4.1.1 概述 95
4.1.2 第一步确认FIFO架构 104
4.1.3 第二步读状态 105
4.1.4 第三步读状态启动和结束条件 106
4.1.5 第四步信息FIFO读清条件 106
4.1.6 第五步生成FIFO IP核 107
4.1.7 第六步其他信号产生条件 107
4.1.8 第七步FIFO代码 107
4.1.9 第八步其他信号代码 108
4.1.10 总结 109
§4.2 FIFO项目实践 110
4.2.1 项目一:包文汇聚模块 110
4.2.2 项目二:以太网切包模块 114
4.2.3 项目三:UDP打包模块 120
第二篇模块划分 132
第五章模块划分核心知识 133
§5.1 模块划分概述 133
5.1.1 模块划分原则 133
5.1.2 模块划分端口规范 133
§5.2 模块划分过程 134
5.2.1 模块划分思路 134
5.2.2 模块的端口及模块之间数据流向 136
第六章模块划分常用架构 138
§6.1 直接交互架构 138
§6.2 无缓存rdy交互架构 138
§6.3 有缓存rdy交互架构 139
§6.4 请求应答交互架构 139
§6.5 外设交互架构 140
§6.6 项目实践 141
6.6.1 项目一:AT93C46的存储与读取 141
6.6.2 项目二:温度采集与显示 143
6.6.3 项目三:OV7670图像采集 145
第三篇项目实践 148
第七章基于FPGA的温度监控系统 149
§7.1 背景介绍 149
§7.2 项目要求 149
§7.3 基本原理 151
7.3.1 PC端(串口调试助手) 151
7.3.2 温度传感器DS18B20 152
7.3.3 数码管显示 154
7.3.4 蜂鸣器 155
§7.4 设计方案 155
§7.5 FPGA 设计实现 159
7.5.1 硬件 159
7.5.2 verilog代码设计 160
§7.6 功能仿真 187
§7.7 板级调试 192
§7.8 总结 192
第八章基于FPGA的图像边缘检测系统 193
§8.1 背景介绍 193
§8.2 设计要求 193
§8.3 基本原理 193
8.3.1 PLL 193
8.3.2 OV7670配置与采集 197
8.3.3 灰度转换 198
8.3.4 高斯滤波器 200
8.3.5 SOBEL边缘检测原理 201
8.3.6 乒乓操作原理 202
§8.4 设计方案 203
§8.5 FPGA设计实现 205
8.5.1 硬件 205
8.5.2 verilog代码设计 206
§8.6 功能仿真 234
§8.7 板级调试 242
§8.8 总结 242
|