
本书以实用性为出发点,采取由浅入深、循序渐进的方式介绍了FPGA应用技术。 全书分为4个项目,项目1介绍FPGA的基础知识,使读者了解FPGA开发板和ModelSim仿真环境。项目2介绍了硬件描述语言Verilog HDL的基本语法知识,以及数字电路基本单元的描述、设计和仿真测试。项目3介绍了基于FPGA的单元电路设计调试。项目4介绍了基于FPGA技术的综合项目开发。本书以典型工作任务为主线编排教学内容,方便教师开展项目式教学,操作性强。 本书可作为高职高专院校电子信息类、计算机类、自动化类等专业的教材,也可作为应用型本科、开放大学、成人教育相关专业的教材,还是电子工程技术人员的参考工具书。
当前,我们正面临着一场前所未有的科技革命,以大数据、人工智能、5G、云计算等为代表的新兴技术正在推动人类社会向数字化、智能化转变。随着数字时代的科技进步,数字集成电路由早期的电子管、晶体管、中小规模集成电路,发展到超大规模集成电路(Very Large Scale Integrated Circuit,VLSIC)以及许多具有特定功能的专用集成电路(Application Specific Integrated Circuit,ASIC)。但是由于ASIC固有的灵活性较差、设计及改版周期较长等缺点,现场可编程门阵列(Field Programmable Gate Array,FPGA)在控制系统和通信领域开始得到广泛应用。近年来,FPGA又与嵌入式处理器结合日益紧密,构成了FPGA系统的新型应用方式。如今的FPGA早已实现简化数字逻辑的基本目标,并日益发展成为完成复杂信息处理任务不可或缺的重要工具之一。因此,相关企业需要大量的FPGA技术人才。为满足市场需要,许多高校已开设FPGA应用开发课程。本书以实用性为出发点,采取由浅入深、循序渐进的方式介绍了FPGA应用技术。全书分为4个项目,项目1介绍FPGA的基础知识,使读者了解FPGA开发板和ModelSim仿真环境。项目2介绍了硬件描述语言Verilog HDL的基本语法知识,并将其融入数字电路基本单元的描述、设计中,包括13个任务,主要内容有基本逻辑门电路、全加器、8线-3线编码器、优先编码器、3线-8线译码器、四选一选择器、数值比较器、触发器、计数器、分频器、移位寄存器、序列检测器、有限状态机。项目3介绍了基于FPGA的单元电路设计调试,包括7个任务,主要内容有流水灯、按键识别、数码管静态显示、数码管动态显示、蜂鸣器控制设计、LCD1602控制设计、步进电动机控制设计。项目4介绍了基于FPGA技术的综合项目开发,包括5个任务,主要内容有基本门电路测试平台设计、数字时钟设计、UART通信接口设计、I2C总线接口设计、基于软核Nios II的数码管动态扫描设计。本书基于一套开发环境:EP4CE6F17C8开发板、Quartus II开发软件和ModelSim仿真环境。本书的特色:(1)以典型任务为主线编排教学内容;(2)任务大多来源于实践,方便开展项目化教学和技能训练; (3)任务的设计由浅入深,贴合数字电路基础,方便读者入门和掌握。本书的参考学时为60~108学时,各院校可结合专业背景和实训环境对不同设计任务做适当选择,建议理论教学30学时左右,其余学时用于实践教学。本书由贵州电子信息职业技术学院张定祥副教授编著,在编写过程中得到了电子信息工程系应用电子技术教研组全体老师的支持和帮助。此外,在编写过程中参考了许多学者的著作和研究成果,在此表示衷心的感谢!由于时间仓促及作者水平有限,书中难免存在不妥之处,恳请读者批评指正。为了方便教师教学,本书还配有免费的电子教学课件、源代码,请有此需要的教师登录华信教育资源网(http://www.hxedu.com.cn)免费注册后进行下载。若有问题,请在网站留言板留言或与电子工业出版社联系(E-mail:hxedu@phei.com.cn)。
项目1 FPGA的基础知识 1 任务1.1 PLD的发展历程 1 任务1.2 FPGA的结构 2 1.2.1 FPGA的工作原理 2 1.2.2 FPGA芯片的结构 4 任务1.3 FPGA主要生产厂商与芯片说明 6 1.3.1 FPGA生产厂商 6 1.3.2 FPGA芯片说明 7 任务1.4 开发工具 8 任务1.5 技能实训:FPGA开发板认知 9 项目2 基于FPGA的数字电路基本单元仿真测试 14 任务2.1 描述基本逻辑门电路 14 2.1.1 理论知识 14 2.1.2 设计原理 16 2.1.3 模块符号 17 2.1.4 硬件描述代码 18 2.1.5 仿真测试 18 思考与练习 21 任务2.2 描述全加器 21 2.2.1 理论知识 21 2.2.2 设计原理 26 2.2.3 模块符号 27 2.2.4 硬件描述代码 27 2.2.5 仿真测试 28 思考与练习 30 任务2.3 描述8线-3线编码器 30 2.3.1 理论知识 30 2.3.2 设计原理 34 2.3.3 模块符号 35 2.3.4 硬件描述代码 36 2.3.5 仿真测试 36 思考与练习 37 任务2.4 描述优先编码器 38 2.4.1 理论知识 38 2.4.2 设计原理 40 2.4.3 模块符号 41 2.4.4 硬件描述代码 41 2.4.5 仿真测试 42 思考与练习 43 任务2.5 描述3线-8线译码器 43 2.5.1 理论知识 43 2.5.2 设计原理 46 2.5.3 模块符号 47 2.5.4 硬件描述代码 47 2.5.5 仿真测试 48 思考与练习 49 任务2.6 描述四选一选择器 49 2.6.1 理论知识 49 2.6.2 设计原理 51 2.6.3 模块符号 53 2.6.4 硬件描述代码 53 2.6.5 仿真测试 53 思考与练习 55 任务2.7 描述数值比较器 55 2.7.1 理论知识 55 2.7.2 设计原理 58 2.7.3 模块符号 59 2.7.4 硬件描述代码 59 2.7.5 仿真测试 60 思考与练习 61 任务2.8 描述触发器 61 2.8.1 理论知识 61 2.8.2 设计原理 66 2.8.3 模块符号 69 2.8.4 硬件描述代码 69 2.8.5 仿真测试 70 任务2.9 描述计数器 71 2.9.1 理论知识 71 2.9.2 设计原理 74 2.9.3 模块符号 77 2.9.4 硬件描述代码 77 2.9.5 仿真测试 78 任务2.10 描述分频器 79 2.10.1 理论知识 79 2.10.2 设计原理 80 2.10.3 模块符号 81 2.10.4 硬件描述代码 82 2.10.5 仿真测试 84 任务2.11 描述移位寄存器 85 2.11.1 理论知识:预处理语句 85 2.11.2 设计原理 88 2.11.3 模块符号 89 2.11.4 硬件描述代码 90 2.11.5 仿真测试 90 任务2.12 描述序列检测器 92 2.12.1 理论知识 92 2.12.2 设计原理 97 2.12.3 模块符号 98 2.12.4 硬件描述代码 98 2.12.5 仿真测试 98 任务2.13 有限状态机 100 2.13.1 理论知识 100 2.13.2 设计原理 102 2.13.3 模块符号 102 2.13.4 硬件描述代码 103 2.13.5 仿真测试 104 项目3 基于FPGA的单元电路设计调试 106 任务3.1 流水灯设计 106 3.1.1 流水灯简介 106 3.1.2 流水灯设计思路 108 3.1.3 设计源代码 108 3.1.4 RTL模型 109 3.1.5 项目调试 111 任务3.2 按键识别 115 3.2.1 按键抖动原理 115 3.2.2 去抖动设计思路 116 3.2.3 设计源代码 116 3.2.4 RTL模型 117 3.2.5 项目调试 118 任务3.3 数码管静态显示 120 3.3.1 数码管显示原理 120 3.3.2 数码管静态显示0~9设计思路 121 3.3.3 设计源代码 121 3.3.4 RTL模型 122 3.3.5 项目调试 123 任务3.4 数码管动态显示 125 3.4.1 数码管动态显示原理 125 3.4.2 动态显示设计思路 126 3.4.3 设计源代码 126 3.4.4 RTL模型 128 3.4.5 项目调试 128 任务3.5 蜂鸣器控制设计 130 3.5.1 蜂鸣器原理 130 3.5.2 蜂鸣器发声设计思路 131 3.5.3 设计源代码 131 3.5.4 RTL模型 132 3.5.5 项目调试 132 任务3.6 LCD1602控制设计 134 3.6.1 LCD1602显示原理 134 3.6.2 设计思路 137 3.6.3 设计源代码 137 3.6.4 RTL模型 143 3.6.5 项目调试 144 任务3.7 步进电动机控制设计 146 3.7.1 步进电动机概述 146 3.7.2 步进电动机的控制思路 147 3.7.3 设计源代码 148 3.7.4 RTL模型 149 3.7.5 项目调试 150 项目4 基于FPGA技术的综合项目开发 152 任务4.1 基本门电路测试平台设计 152 4.1.1 任务要求与分析 152 4.1.2 设计原理 152 4.1.3 顶层设计 153 4.1.4 设计源代码 154 4.1.5 项目调试 158 任务4.2 数字钟设计 161 4.2.1 任务要求与分析 161 4.2.2 设计原理 161 4.2.3 顶层设计 163 4.2.4 设计源代码 163 4.2.5 项目调试 168 任务4.3 UART通信接口设计 170 4.3.1 任务要求与分析 170 4.3.2 串口通信原理 171 4.3.3 顶层设计 172 4.3.4 设计源代码 173 4.3.5 项目调试 178 任务4.4 I2C总线接口设计 180 4.4.1 任务要求与分析 180 4.4.2 I2C总线通信原理 182 4.4.3 顶层设计 185 4.4.4 设计源代码 187 4.4.5 项目调试 198 任务4.5 基于软核Nios II的数码管动态扫描设计 200 4.5.1 任务要求与分析 200 4.5.2 设计原理 201 4.5.3 硬件环境设计 202 4.5.4 软件程序开发 205