随着现场可编程逻辑器件结构和工艺的发展,FPGA的性能和容量逐年提升,同时功耗和价格持续降低。近年来,已经有越来越多的企业考虑并在其实际项目或产品中加入FPGA,或者直接以FPGA作为核心控制单元。FPGA作为一种硬件逻辑器件,其开发思路与常规的MCU或处理器有较大的差别,如何正确地学习并掌握FPGA的开发方法,对于高效地使用FPGA至关重要。
笔者曾自学FPGA近两年,但始终不得要领,后经专业人士指点,方才领悟FPGA之所以难学,是难在没有掌握正确的学习和开发方法。一旦掌握了正确的学习方法,一切就变得轻松了。在FPGA的学习和开发中为关键的一点就是验证。
作为一本入门级的FPGA技术教材,本书主要针对刚接触FPGA的读者。这一类读者,往往都有一定的MCU开发经验,也正是这一点,让很多自学FPGA的人往往一开始就按照MCU开发的惯性思维来对待FPGA,结果就是耗费了几倍的精力,却没有太大的进步。所以本书在编排时,重点关注FPGA的开发流程。每个实验,无论是基础的点亮LED灯,还是综合的多模块数字系统设计,以及复杂的SDRAM控制器设计,都严格按照“设计 验证”的流程进行。首先,通过知识背景的介绍,讲解设计中需要注意的问题;接着,一步一步地根据设计需求完成设计中的每一个部分;然后,编写Testbench文件,使用ModelSim软件对设计进行仿真验证;后,仿真验证通过后,再配置到FPGA器件中运行,如果板级运行不正确,则再回到仿真波形中查找可能的错误原因,在必要时使用板级验证工具如SignaltapⅡ进行板级调试。
本书按照循序渐进的过程,分成6章,具体内容如下:
第1章,主要介绍了FPGA的硬件架构,软件开发工具的安装与基本使用。
第2章,介绍了本书所依靠的FPGA学习平台AC620开发板的相关特性,并通过一个实例介绍了FPGA的开发流程。
第3章,介绍了基于FPGA的一些基本数字逻辑电路设计,这些设计所依靠的背景都是大家所熟悉的一些内容,因此较容易接受,方便大家能够轻松入门。
第4章,介绍了CycloneⅣEFPGA上专用硬件资源PLL、嵌入式块RAM的使用;同时,本章通过这些硬件资源的使用,介绍了在QuartusPrime软件中调用IP进行设计的方法。
第5章,为进阶数字系统设计,主要介绍了项目中比较实用的一些外设的驱动。
第6章,为综合数字系统设计,通过若干个具有一定难度的综合实例,展示了FPGA复杂系统开发的常见思路和实现方法。