1. 前言

1.1. 本教程编写目的

随着社会的发展和科技的进步,电子技术和微电子领域也呈现日新月异的景象,FPGA(Field Programmable Gate Array,现场可编程门阵列)越来越被人们所熟知,生产生活对FPGA的需求不断增加。近年来,FPGA在人工智能、机器学习的浪潮中又火了一把,这得益于IC技术和生产工艺的进步,使得更大规模集成度的FPGA 得以实现,一枚小小的FPGA在融合了可编程逻辑单元、ARM硬核、MPU等异构多核处理单元后,功能越来越强大。

生产生活对FPGA的需求不断增强,广大学习者趋之若鹜,纷纷加入到FPGA的学习行列。当前,许多高校在电子领域相关专业都会开设一门名为“EDA”的课程,这无疑为FPGA的学习拓宽了道路,但是又有多少同学真正的学会了该工具的使用。

我们不禁要问,导致这一状况的原因是什么?首先,学校中的课程安排在时间上是有限制的,学生没有足够的时间去思考、练习,没有足够的思考和练习时间,很难实现知识的巩固和水平的提高;其次,课本中大都是理论知识的讲解,近乎纯理论的讲解很难培养学生的学习兴趣,没有兴趣爱好作为动力支持,在FPGA的学习道路上很难走 下去;再次,学校的教学内容早已脱离了快速发展的社会,和最新的工程应用相差甚远,即便是最后坚持下来的为数不多的学生,他们的代码、工程往往也不是按照新的工程应用标准规范来编写的,而是沿袭了老旧的甚至是错误的方法。见过很多学习者设计的FPGA工程和代码,他们要么是使用传统原理图的设计方法,要么是直直白白C 思想的嫁接搬移,再或者是两个的任意结合,这无疑是一件十分悲哀的事情。

上述诸多原因导致一种严重情况,那就是学生经过课程的学习后不会使用FPGA作为一个强大工具来解决诸多实际问题。虽然一些明鉴的高校极力推进工程教学模式的改革,但想要改变这种局面,无疑是杯水车薪。

面对这一现状,不少市场敏锐的圈内人却早已酝酿了商机,林林总总的FPGA培训班和各种视频、教程层出不穷,笔者认为这倒也是好事,培训班的出现的的确确解决了一部分高校教育和社会工程应用脱节的问题,但也牺牲了学生大量的时间和金钱。

特别是近年来,随着FPGA的崛起,市面上关于FPGA的资料也越来越多,这些资料却也存在着各种各样的问题,比如:内容不系统、重点不突出、方法不详细,有些看似上千页的教学资料不过是一个个工程实例的罗列,然后进行简单的代码讲解,他们并没有详细介绍编写代码的思想方法,或许编者自身并没有站在学习者的角度上来编 写,使学习者无法学到真正的方法。见过不少学了很久FPGA的同学还依然停留在只会移植、修改别人代码的入门阶段,甚者连一个串口回环都无法独立完成,这并不是我们学习后想要的结果。

所以我们要做的就是尽最大努力,站在初学者的角度上,从最基础的内容开始逐步深入地讲解FPGA,并希望把FPGA最核心的东西——设计方法和思想,传递给学习者,使学习者可以自己独立设计优秀规范的Verilog代码。

本教程传承了野火STM32系列教程一如既往的编写风格,在此基础上致力于FPGA设计方法的教学,希望能够用最简洁清晰的语言把晦涩难懂的FPGA知识讲解的清晰透彻,能够让初学者真正掌握FPGA设计方法的精髓。

本教程适合FPGA初学者和没有掌握FPGA设计方法的学习者,对于FPGA芯片内部构成和原理以及高级应用不做详细的讲解,若读者想了解学习该方面的相关内容可查阅有关书籍,我们在后面的章节也会给大家推荐相关资料。

1.2. 本教程内容体系

本教程有50多个章节,按照先易后难的顺序进行讲解,分为硬件说明篇、软件安装篇、基础入门篇、学习强化篇、进阶提高篇五大板块。从最基础的软件安装和基本的软件操作手把手教学,考虑到大多数学习者为FPGA初学者,所以本书把操作中的每个步骤都尽可能详细的介绍和描述,并附上大量的截图以供学习者实操参考。各版块对 应章节和具体内容介绍如下。

硬件说明篇:本版块包括第2、第3两个章节。在第2章节中,主要讲述了FPGA的相关知识,包括FPGA简介、技术优势以及应用方向等内容;第3章节则主要对教程配套开发板“征途Mini”的硬件资源做了系统性的介绍,对FPGA的内部结构和资源做了简介。

软件安装篇:本版块包括4~7章,共4个章节。主要对FPGA开发软件Quartus II、ModelSim、NotePad++、Visio的安装,以及Quartus软件与ModelSim、NotePad++关联方法做了详细介绍。

基础入门篇:本版块包括8~30章,共23个章节,在这一版块我们才真正意义上开始了FPGA的学习。在第8章节,我们对FPGA编程语言Verilog HDL做了系统性的讲解;第9章节中,通过 “点亮LED灯”的实验工程,为读者详细说明FPGA的完整的、正确的设计流程;第10、11、12、15 章节中,使用若干实例对FPGA中的常用的组合逻辑、时序逻辑做了介绍;第13、14、16章节中,我们为读者介绍了层次化设计的设计思想、说明了避免Latch产生的具体方法,以及对阻塞赋值和和非阻塞赋值的概念做了做了详细讲解;随后的14个章节(17~29章),我们由浅入深的为读者引入了若干个开发例程,帮助 读者掌握了计数器、分频器的使用,以及学习理解并实现了开发板部分外设的驱动控制;在本模块的最后一个章节第30章,我们为读者介绍了FPGA快速开发的的法宝—IP核,并通过实例对常用的PLL、FIFO、RAM、ROM 4种IP核的调用及参数配置做了解释说明。

学习强化篇:本版块包括31~41章,共11个章节,在这一板块我们引入了诸多工程实例供读者学习。经过第31章节的学习,读者会掌握等精度频率计的设计思想和实现方法;学习完32、33章节,读者在掌握DDS信号发生器和电压表设计思想和方法的同时,对AD/DA的相关知识也会有全面的了解;在第35~ 37章节,我们通过相关实例对HDMI和TFT_LCD的相关知识做了系统性的讲解;在34、38~41章节,我们从多个实例入手,对RS232、SPI以及I2C通信协议做了最为系统的讲解和说明。

进阶提高篇:本版块包括42~52章,共11个章节,主要讲解了SDRAM、摄像头、SD卡的相关知识。第43~45章节,通过实验工程实现基于SDRAM的数据读写控制器和HDMI、TFT_LCD液晶屏的图像显示;第46~49章节,基于前面设计的SDRAM数据读写控制器,实现摄像头采集图像的HD MI或TFT_LCD液晶屏的实时显示;第50~52章节,实现SD卡数据读写控制器,以及SD卡存储图像的显示。

最后我们还增加了附录部分,这一章节我们会为读者介绍一些FPGA的设计技巧和实用工具,对初学者而言,掌握了这些技巧和工具,可以提高自身的代码纠错能力,大大缩短工程开发时间。

希望初学者能够按照本书的编写顺序,循序渐进、步步为营的进行FPGA的学习,切莫好高骛远、眼高手低。学完本书后,希望学习者能够掌握正确规范的设计方法,为之后的FPGA进阶提高和实际应用打下坚实的基础。

1.3. 本教程编写风格

本书着重讲解部分常用工程实例以及相关外设的驱动与应用,力争全面分析每个工程的设计思想与实现方法。一个实例工程或外设对应一个或多个章节,每章节的主要内容大概分为五个部分。

第一部分为章节导读,在这一章节,我们会对整个章节的内容做一个系统说明,告知读者本章节需要掌握的相关理论知识和设计方法。

第二部分为理论学习,在这一章节,笔者会将本章节涉及的相关理论知识做一个系统性的全方位解读,力求简洁明了、通俗易懂。

第三部分为实战演练,这一章节中,我们会结合理论学习部分的内容,带领读者设计并实现一个实验工程,通过模块框图设计、波形图绘制、代码编写、仿真验证、上板验证一系列的FPGA设计流程,从无到有实现切实可行的实验工程,使读者切实掌握实验工程的设计思想与具体实现方法,加深读者对理论知识的理解与掌握。

第四部分为章末总结,这一部分主要对本章节的学习内容做一个全面总结,加深读者对相关知识的认识和理解,帮助读者尽快掌握相关设计思想与方法。

第五部分为拓展训练,这一部分是本章节知识点的拓展与延伸,笔者会根据章节涉及知识点,结合技术现状,对读者提出新的设计要求,进一步提高读者独立解决问题的能力。

1.4. 本教程配套开发平台

本书配套的硬件开发平台为:野火Altera-EP4CE10-FPGA开发板-征途Mini开发平台,型号简称“征途Mini”。初学者在进行本教程的学习时,如果配套该硬件平台进行实际操作,可避免工程移植时遇到的各种问题,节省学习时间,提高学习效率,达到事半功倍的效果。

征途Mini FPGA开发平台,延续野火一如既往的设计风格,高端大气且资源丰富,充分展现FPGA的强悍性能。征途Mini采用Intel(Altera)公司Cyclone IV系列芯片作为主芯片,型号为EP4CE10F17C8N,内部逻辑资源丰富且具有超高性价比;板卡上的有源晶振为主芯片提供质高稳定的 时钟信号,频率为50MHz;板载容量为16Mbit的Flash芯片,作为外部存储芯片负责FPGA程序的存储,保证FPGA掉电后程序不丢失,同时可用于SPI通讯协议的学习;征途Mini还板载了容量为256Mbit的SDRAM存储芯片,用于实现图像以及大容量数据缓存;此外板卡还支持SD卡进行数据存储。

征途Mini开发板上还具备EEPROM存储芯片(64Kbit)、USB转串口接口,可满足I2C通讯协议、UART串口通讯协议的学习要求;温度传感器DS18B20、温湿度传感器DHT11、环境光传感器AP3216C、红外接收器4种传感器,全方位满足读者对温度、湿度、光照、红外等模拟信号的采集,掌握传感 器的驱动控制;摄像头接口支持OV5640、OV7725摄像头,可实现多分辨率图像数据采集; HDMI接口、RGB TFT-LCD接口支持多种分辨率图像的显示。

PCF8563芯片,结合六位八段数码管可实现RTC实时时钟显示;独立机械按键4个、电容触摸按键1个,可作为触发信号输入;4个LED灯、1个无源蜂鸣器,作为状态指示;此外还有诸多扩展I/O口,方便外载板卡或传感器的使用。在供电方面板卡使用可以稳定输入5V直流电的电源适配器,并加入过流保护。

此处只是对“征途Mini”FPGA开发板的简单介绍,详细说明详见“硬件开发平台详解”章节。

1.5. 推荐参考资料

由于本书的侧重点和编者知识水平的局限性,不能保证对所有的知识点都能面面俱到,为了更好的帮助读者认识了解、学习掌握FPGA,我们真诚的为读者推荐部分优秀的工具书,如有相关需求,读者可自行购买。

(1) 数字电路工具书:为什么要推荐有关数字电路的工具书?数字电路基础很重要吗?其实发出这种疑问的往往是一些初学者,虽然FPGA是数字电路应用的终极形式,但没有数字电路基础的同学并不影响学习,因为本教程的实验案例也是从数字电路最基础的内容讲起的,当同学们学习本教程的内容时,对数字电路的某些专业术语、 符号表示、语言描述不太明了时,就可以翻阅数字电路基础的相关工具书进行查阅式学习。

  • 《零起步轻松学数字电路》,人民邮电出版社,蔡杏山、蔡玉山主编。这本书讲解的内容非常基础,从最简单的门电路到AD/DA的应用介绍都做了很详细的描述,非常适合没有数字电路基础的初学者入门学习。

  • 《数字电子技术基础》,高等教育出版社,阎石主编。作为高校数字电路教学的指定教材,对于很多同学来说是相当熟悉而富有亲切感。该书讲解的内容较为全面且详细,十分注重理论部分的讲解,其内容几乎涵盖了所有数字电路的基础部分,从MOS管到FPGA基础都有涉及,可谓是经典中的经典。

(2) 详解Verilog语法和FPGA知识点的工具书:推荐这类书的主要目的是希望学习者能够在初学时进一步了解FPGA是什么,怎么个工作原理,并在学习Verilog语法的时候有一本可以参考的工具书以供随时翻阅,毕竟初学的时候不一定能够一下子把所有的关键词和语法都记住,写的代码多了、翻书翻的多了自然就 够熟能生巧。 这类书就像是FPGA的百科全书一样,在学习FPGA的时候随手一本能够及时的答疑解惑。

  • 《Verilog数字系统设计教程》,北京航空航天大学出版社,夏宇闻主编。这本书由业内元老北航夏宇闻教授所撰写,被十一五规划列为高校指定教材。因为书出的比较早,而且当时国内关于FPGA的资料较少,所以这本书也是很多业内技术大牛的FPGA启蒙书。该书从FPGA是什么、硬件结构、设计验证方法、Veril

og语法、建模方式、各种类型的应用案例等都做了详细的讲解。因为这本书讲的太全面,内容过多,很容易把初学者搞晕,本来内容丰富的教材是好的,但是尺度把握不好也会适得其反,要把最重要最基础先讲给初学者,再去提高才会更容易让初学者接受。

  • 《设计与验证:Verilog HDL》:这本书相对于夏教授的书来说内容上做了精简,全书200页左右,其主要内容更易于初学者接受,可作为初学者的参考工具书。书中对一些重要的知识点,比如开发流程、验证方法、可综合语法和不可综合语法、发展趋势等都有比较详细的介绍和说明,是一本不错的启蒙工具书。

  1. 详解FPGA开发流程的工具书:这类书的重点就不再是语法了,而是开发流程,着重讲解了FPGA开发过程中的一些常见问题,有助于更加深入全面的提高初学者对FPGA的认识,进一步拓宽初学者的视野,为FPGA学习者进阶之路做铺垫。

  • 《FPGA设计指南:器件、工具和流程》,人民邮电出版社,杜生海、刑闻译。这本书是国外工具书的翻译版,其中对FPGA的前世今生和内部结构都做了很详细的讲解,还包括全套的设计流程、开发工具的使用、器件的选型、常用术语的介绍和一些高级应用,可以说是一本除了语法之外的FPGA百科全书,该书的讲解角度也有别

于其他工具书,很有特色。

(4) 详解Altera IP核的工具书:为了缩短开发周期,工程师往往会选择使用一些好用又省事的IP核。网上关于IP核的资料都是一些工程笔记,资料比较分散、内容不够全面,虽然直接阅读英文的官方手册是最好的方法,但对于经验不足的初学者来说较难抓到手册重点,从而增加学习的难度,所以在此学习者推荐一本详解IP核的工具书。

  • 《Altera系列FPGA芯片IP核详解》,电子工业出版社,刘东华主编。该书几乎覆盖了QuartusII中所有常用的免费IP核,是市面上关于IP核总结较为全面的一本工具书,该书对IP核的设置、使用方法都进行了详细的讲解,这能使学习者节省大量的开发时间。

  1. 详解Modelsim仿真的书:关于仿真其实大家只需要会一些基本的操作和应用就可以了,但是如果需要使用Modelsim更强大的功能还需要找一本Modelsim相关的工具书作为参考,当你能够熟练使用Modelsim的时候一定会大大提高开发效率。

  • 《Modelsim电子系统分析及仿真》,电子工业出版社,于斌、米秀杰主编。该书主要是介绍Modelsim的使用和操作,从能够满足最基本仿真需求的操作到更高级的应用操作都有很详细的介绍,看完本书后你会感慨Modelsim的强大,才真正体会到为什么Modelsim作为一个第三方仿真工具却是无数FPGA

工程师的选择。

以上就是推荐书目的简单介绍,作为FPGA的基础学习,重点是要掌握逻辑的设计方法,在掌握了基本的设计方法并拥有一定的逻辑代码编写能力后,可以开始实际项目的设计与实现。实际的工程项目往往会有侧重点,如SOC、图像处理、数字信号处理、高速接口、ASIC验证等,这一切一切的基础都是要掌握基本的逻辑设计方法, 当学习者达到这个高度后再去看相关方面的资料。

总述:以上推荐的参考工具书各有特点,写作风格、学习方法、编码风格都不尽相同,毕竟FPGA是一个不断发展的技术工具,相关内容实时更新,所以有一些老旧的方法、习惯都需要适当摒弃,笔者希望初学者能够按照本书的方法由浅入深的进行FPGA的学习,学成之时必定受益匪浅。

1.6. 野火技术论坛

读者如果在学习过程中遇到问题,可以到论坛:www.firebbs.cn发帖交流 ,开源共享,共同进步。

鉴于笔者水平有限,本书难免出现纰漏,读者若发现不足之处望及时反馈,帮助我们优化教程,祝您学习愉快。FPGA的世界,野火与您同行。

1.7. 联系我们

Preface002东莞野火电子技术有限公司

官网:www.embedfire.com

论坛:www.firebbs.cn

淘宝:fire-stm32.taobao.com

邮箱:firege@embedfire.com

电话:0769-33894118

关注野火公众号,可下载野火全部产品的资料(书籍、视频、程序)

Preface003

野火STM32系列图书,关注公众号即可下载电子版