
本书以Intel的FPGA芯片为目标器件,以Quartus Prime、Platform Designer(PD)、Nios II-Eclipse为软件工具,以Verilog HDL为设计语言,选择C4_MB“口袋实验板”为目标板,通过精选设计案例,诠释用FPGA实现数字系统设计的思路与方法。本书的案例涵盖常用的FPGA数字电路与系统,从复杂的逻辑设计和控制电路,到Nios II嵌入式处理器开发;从状态机单步控制电路,到各种数学运算和并行处理系统;从通信和接口电路,到数字信号处理和复杂算法的实现,以及用FPGA驱动各种常用的I/O外设均有涉及。有的案例同时给出采用IP核和Verilog HDL编程两种实现方案,以便于从不同的角度对两种方案进行比较;有的设计案例来自大学生电子设计竞赛的赛题,因此本书对参加电子设计竞赛的学生和指导老师也具有参考价值。
序 众所周知,我们正在进入一个全面科技创新的时代。科技创新驱动并引领着人类社会的发展,从人工智能、自动驾驶、5G,到精准医疗、机器人等,所有这些领域的突破都离不开科技的创新,也离不开计算的创新。 从CPU、GPU,到FPGA、ASIC,再到未来的神经拟态计算、量子计算等,英特尔正在全面布局未来的端到端计算创新,以充分释放数据的价值。中国拥有巨大的市场和引领全球创新的需求,其产业生态的全面性以及企业创新的实力、活力和速度都令人瞩目。英特尔始终放眼长远,以丰富的生态经验和广阔的全球视野,持续推动与中国产业生态的合作共赢。以此为前提,英特尔在2018年建立了英特尔 FPGA中国创新中心,与戴尔、海云捷迅等合作伙伴携手共建AI和FPGA生态,并通过组织智能创新大赛、产学研合作及高新人才培训等,发掘优秀团队,培养专业人才,孵化应用创新,加速智能产业发展。 该系列丛书是英特尔FPGA中国创新中心专为AI和FPGA领域的人才培养而设计编撰的,非常高兴作为英特尔FPGA中国创新中心总经理为丛书写序。同时也希望该系列丛书能为中国AI和FPGA相关产业的生态建设和人才培养添砖加瓦! 张 瑞 英特尔? FPGA中国创新中心 总经理 2020年秋 本书以Intel FPGA芯片为目标器件,以Quartus Prime、Platform Designer(PD)、Nios II-Eclipse为工具软件,以Verilog HDL(以下或简称Verilog)作为设计语言,选择C4_MB“口袋实验板”作为目标板,通过精选设计案例,诠释用FPGA实现数字系统设计的思路与方法。 本书的案例涵盖常用的FPGA数字电路与数字系统,从复杂的逻辑电路和控制电路,到Nios II嵌入式处理器开发;从状态机单步控制电路,到各种数学运算和并行处理系统;从通信和接口电路,到数字信号处理和复杂算法的实现,以及用FPGA驱动各种常用的IO外设均有涉及。有的案例同时给出采用IP核和Verilog HDL编程两种实现方案和实现方法,以便于从不同的角度对两种方案进行比较;有的案例运算复杂,耗用的FPGA资源多,为了能将设计适配进EP4CE6目标器件,专门对耗用FPGA资源多的模块进行重新设计以减少资源耗用;有的设计案例来自大学生电子设计竞赛的赛题,编者连续指导全国大学生电子设计竞赛十几年,指导的学生多次荣获全国一等奖,在此方面积累了一定的经验,因此本书对参加电子设计竞赛的学生和指导老师也具有参考价值。 部分案例借鉴了同行的设计,并在参考文献中列出,在此表示诚挚的感谢。 每个FPGA设计的爱好者、从业者和学习者都应该建立一个自己的设计库和模块库,并不断添加,不断更新和完善,在此过程中提高自己的设计技能,拓展自己的设计思路,丰富自己的设计领域,使FPGA变成自己实现各种功能的工具。FPGA的开发涉及方法、语言、工具和器件,每个领域又有多种选择并不断更新换代,所以FPGA的开发需要不断地探索和不断地积累、完善。 FPGA“口袋实验板”便携易用,可随时随地进行设计和验证,非常便于自主学习与创新实践。本书以C4_MB“口袋实验板”为目标板,由于目标板的EP4CE6芯片资源有限,因此本书的案例几乎可以移植到市面上绝大多数的开发板。 本书由王金明、曹阳、黄颖、倪雪编著,李超群参与了部分程序的调试,参加本书编写的还有朱莉莉、王婧菡、王兰皊等,在此一并表示诚挚的感谢。 由于编者水平、时间和精力所限,本书不免有诸多错误和疏漏,希望读者和同行给予批评指正。 编 者 2022年1月
第1章 LED流水灯 1 1.1 任务与要求 1 1.2 原理与实现 1 1.2.1 流水灯控制器 1 1.2.2 引脚分配与锁定 2 1.3 下载与验证 7 1.3.1 JTAG编程下载 7 1.3.2 配置数据固化与脱机运行 7 第2章 4×4矩阵键盘 11 2.1 任务与要求 11 2.2 原理与实现 11 2.3 下载与验证 15 第3章 Hello World 17 3.1 任务与要求 17 3.2 原理与实现 17 3.2.1 硬件设计 17 3.2.2 软件设计 25 3.3 下载与验证 27 第4章 SOPC流水灯 30 4.1 任务与要求 30 4.2 基于NIOS II的SOPC设计流程 30 4.3 原理与实现 32 4.3.1 硬件设计 32 4.2.3 软件设计 34 4.3 下载与验证 36 第5章 SOPC控制RTC实时时钟 37 5.1 任务与要求 37 5.2 原理与实现 37 5.2.1 硬件设计 38 5.2.2 软件设计 47 5.3 下载与验证 54 5.3.1 在线下载 54 5.3.2 程序固化 54 第6章 I2C接口读/写EEPROM 56 6.1 任务与要求 56 6.2 原理与实现 56 6.2.1 硬件设计 57 6.2.2 软件设计 59 6.3 下载与验证 61 第7章 SDRAM存取 62 7.1 任务与要求 62 7.2 原理与实现 62 7.2.1 硬件设计 63 7.2.2 软件设计 72 7.3 下载与验证 74 第8章 中断控制 75 8.1 任务与要求 75 8.2 原理与实现 75 8.2.1 硬件设计 75 8.2.2 软件设计 78 8.3 下载与验证 80 第9章 SOPC定时器 81 9.1 任务与要求 81 9.2 原理与实现 81 9.2.1 硬件设计 82 9.2.2 软件设计 84 9.3 下载与验证 86 第10章 JTAG UART通信 87 10.1 任务与要求 87 10.2 原理与实现 87 10.2.1 硬件设计 87 10.2.2 软件设计 89 10.3 下载与验证 91 第11章 LCD显示字符 92 11.1 任务与要求 92 11.2 原理与实现 92 11.3 下载与验证 98 第12章 图形点阵液晶显示汉字 99 12.1 任务与要求 99 12.2 原理与实现 99 12.2.1 LCD12864B汉字图形 点阵液晶 99 12.2.2 汉字图形点阵液晶静态 显示 100 12.2.3 汉字图形点阵液晶动态 显示 103 第13章 TFT屏彩条显示 105 13.1 任务与要求 105 13.2 原理与实现 105 13.2.1 TFT液晶屏 105 13.2.2 TFT液晶屏的驱动 108 13.3 下载与验证 116 13.3.1 7寸TFT屏下载验证 116 13.3.2 4.3寸TFT屏下载 验证 118 第14章 TFT液晶屏图像显示 120 14.1 任务与要求 120 14.2 原理与实现 120 14.3 下载与验证 127 第15章 TFT屏显示汉字字符 128 15.1 任务与要求 128 15.2 原理与实现 128 15.3 下载与验证 133 第16章 OV5640摄像头的视频采集与 TFT显示 134 16.1 任务与要求 134 16.2 原理与实现 134 16.2.1 OV5640摄像头模块 134 16.2.2 视频采集与显示 137 16.3 下载与验证 153 第17章 TFT彩色显示转换灰度显示 156 17.1 任务与要求 156 17.2 原理与实现 156 17.2.1 彩色图像转换灰度 图像 156 17.2.2 程序设计 157 17.3 下载与验证 165 第18章 OV5640摄像头的SOBEL 边缘检测与TFT显示 166 18.1 任务与要求 166 18.2 原理与实现 166 18.2.1 图像边缘检测 166 18.2.2 Sobel边缘检测 的实现 167 18.3 下载与验证 173 第19章 VGA彩条显示 174 19.1 任务与要求 174 19.2 原理与实现 174 19.2.1 VGA显示原理与 时序 174 19.2.2 VGA彩条信号 发生器 176 19.3 下载与验证 180 第20章 VGA图像显示 181 20.1 任务与要求 181 20.2 原理与实现 181 20.3 下载与验证 186 第21章 OV5640摄像头的视频采集 与VGA显示 187 21.1 任务与要求 187 21.2 原理与实现 187 21.3 下载与验证 193 第22章 OV5640摄像头的Sobel 边缘检测与VGA显示 195 22.1 任务与要求 195 22.2 原理与实现 195 22.3 下载与验证 198 第23章 按键消抖 200 23.1 任务与要求 200 23.2 原理与实现 200 23.3 下载与验证 204 23.3.1 按键消抖电路的仿真 204 23.3.2 下载与验证 208 第24章 标准PS/2键盘 209 24.1 任务与要求 209 24.2 原理与实现 209 24.3 下载与验证 214 第25章 TFT显示色环 216 25.1 任务与要求 216 25.2 原理与实现 216 25.3 下载与验证 219 第26章 TFT显示动态矩形 221 26.1 任务与要求 221 26.2 原理与实现 221 26.3 下载与验证 223 第27章 乐曲演奏 225 27.1 任务与要求 225 27.2 原理与实现 225 27.3 下载与验证 231 第28章 RTC实时时钟 232 28.1 任务与要求 232 28.2 原理与实现 232 28.3 下载与验证 246 第29章 UART串口通信 247 29.1 任务与要求 247 29.2 原理与实现 247 29.3 下载与验证 255 第30章 PWM驱动蜂鸣器 257 30.1 任务与要求 257 30.2 原理与实现 257 30.3 下载与验证 269 第31章 PWM信号驱动步进电机 270 31.1 任务与要求 270 31.2 原理与实现 270 31.3 下载与验证 274 第32章 超声波测距 275 32.1 任务与要求 275 32.2 原理与实现 275 32.3 下载与验证 278 第33章 FIR滤波器 280 33.1 任务与要求 280 33.2 原理与实现 280 33.3 下载与验证 288 第34章 CORDIC运算 290 34.1 任务与要求 290 34.2 原理与实现 290 34.3 下载与验证 298 第35章 FFT运算 300 35.1 任务与要求 300 35.2 原理与实现 300 35.3 下载与验证 310 第36章 整数开方运算 314 36.1 任务与要求 314 36.2 原理与实现 314 36.3 下载与验证 317 第37章 总谐波失真度测量 319 37.1 任务与要求 319 37.2 原理与实现 319 37.2.1 总谐波失真的定义和 仿真 319 37.2.2 总谐波失真度测量的 实现 321 37.3 下载与验证 328 参考文献 330