现场可编程逻辑阵列(FieldProgrammableGateArray,FPGA)器件广泛应用于汽车电子、多媒体广播、计算机和存储、消费电子、工业、医疗、军事、航空航天、通信、测量等领域。FPGA既广泛使用在通信基站、大型路由器等高端网络设备中,也使用在显示器(电视)、投影仪等日常家用电器里,FPGA已经从最早的只应用于辅助功能和胶合逻辑(连接各种功能块以及集成电路的逻辑电路)的简单器件,发展到现今成为众多产品的核心器件。使用FPGA器件,可以使开发时间缩短1/2~1/3,因此FPGA成为实现“少量多品种”和“产品周期短”市场中不可缺少的器件之一。
针对FPGA器件的使用和开发离不开EDA工具的支持,因此,一般FPGA器件厂商也会提供相应的EDA开发工具,比如Altera公司的QuartusⅡ/Qsys开发平台、Xilinx公司的ISE/Vivado开发平台。其他公司器件都有自己的开发工具,但开发流程基本保持一致。熟悉这些工具对FPGA的开发无疑是基础和重要的,因此本书的结尾部分主要侧重于通过一些实验来让大家了解和熟悉Quartus与Vivado工具的使用。
一般而言,使用FPGA有两个层次:电路级和系统级。简单来说,电路级侧重于在FPGA上实现某些功能电路,或者实现信号处理算法,如FFT、CORDIC、OFDM,或者实现通信系统中部分通信协议,如基站与射频覆盖设备中用得最广泛的通用公众无线接口协议(CPRI)。系统级这里主要是指FPGA中使用CPU,如NiosⅡ、MicroBlaze、ARM、PowerPC等软核、硬核,构成一个比较大的SoC系统,在此基础上可以进一步进行软件应用开发。因此,本书的编写也主要遵从这个思路,系统描述了从电路到系统的FPGA设计方法、流程、技巧以及工具使用。
第1章简要介绍了FPGA设计概论。
第2章对硬件描述语言VerilogHDL进行了简单介绍。
第3章对使用VerilogHDL对包括加法器在内的基础电路设计进行了概述。
第4章主要介绍了逻辑综合的概念以及Synplify、DC工具。
第5章主要介绍了测试平台的撰写以及行为级仿真工具ModelSim的使用。
第6章描述了在通信调制中使用较多的CORDIC算法。
第7章对无线通信系统中的CPRI等协议进行了阐述,并详述了其FPGA实现。
第8章描述了通信系统直放站中数字接口电路部分的FPGA设计。
第9章通过一个电机控制实例来描述FPGA系统级的设计过程,以NiosⅡ为核心处理器来搭建一个SoC系统。
由于FPGA器件的广泛应用,对于FPGA器件组成的系统的测试与认证也成了非常重要的一个课题,故第10章介绍了航空航天领域的一个硬件系统设计标准DO254,侧重介绍其适应于FPGA器件的流程与准则。
为了便于读者实践操作,第11章给出了丰富的FPGA设计实验,包括基础实验和基于Qsys、SOPC的综合实验,如μClinux在NiosⅡ上的移植;还特别介绍了VivadoHLS工具的使用。HLS作为一种目前商业化的高层次综合工具,对系统级设计人员及算法设计人员都具有非常大的吸引力。书中给出的源代码都经过了实际项目的检验,读者可在清华大学出版社网站下载相关的源代码。
本书可作为电子、通信、自动化、计算机科学与技术等相关专业的高年级本科生及研究生的教学用书,也可作为从事FPGA设计工作的工程师的参考图书。在编写本书的过程中,引用了大量参考文献,对此表示感谢。书中不少资料来自Altera和Xilinx公司,Altera大学计划负责人陈卫中博士和Xilinx大学计划负责人谢凯年博士均为本书的编写提供了大量资料与帮助,对两位致以谢意。感谢清华大学出版社的工作人员为本书顺利出版所付出的辛勤劳动。本科生张骏盛对VivadoHLS实验进行了验证,研究生李静园、林卓胜为本书提供了相关协助,谢志才、林燕云同学对本书亦有贡献,一并表示感谢。