FPGA/CPLD技术初探<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
侯作凤
哈尔滨工业大学(威海)
通讯地址:山东威海 文化西路2号90#信箱 PC:264209
毫无疑问, CPLD/FPGA.DSP和MCU是未来数字电路系统的三块基石。本文将对CPLD/FPGA技术做初步的介绍.
首先简单地介绍EDA技术的特点。EDA(Electronic Design Automation)就是利用计算机作为工作平台进行电子自动化设计的一项技术。是电子技术.微电子技术和计算机技术进步的共同产物近十年迅速发展,涵盖设计.电子仿真验证.制造全过程的所有技术。如:系统设计与仿真.印刷电路板(PCB Print Cricuit Board)设计与校验.集成电路版图设计验证和测试.数字逻辑电路设计.模拟电路设计.数模混合设计.嵌入式系统设计.软硬件系统协同设计.系统芯片(SOC)设计.PLD.SOPC.ASSP.ASIC设计技术等。大致可以分为两类:一种是基于PCB的电路;另一种是集成电路(IC,含PLD.ASIC)。实现PCB和IC电路的思想方法过程,就是构成EDA的全部内容。
因此现代电路设计方法已经由传统设计方法转变为全新的EDA设计方法:
一般是自顶向下的设计流程,并且这种设计是利用EDA软件完成的,主要步骤:系统设计与仿真——电路级设计与仿真——版图级设计.验证等。
这与过去传统意义的电子设计大不相同。尤其表现在:传统设计是自底向上的设计,合格产品的设计总要反复多次试验,次数主要取决于经验而且必须制成成品才能进行仪器测量。因此现代EDA缩减了设计成本,缩短了设计周期,更接近于常规思维方式,标准产品方便测试,对设计者经验要求低,保密性强集成度高。使大规模电子设计成为可能。它带来了电子设计领域一场革命。限于篇幅,本文对EDA技术发展历程不再多述。
CPLD/FPGA正是EDA技术前沿分支之一。CPLD(Complex Programmable Logic Device)是一种较为复杂的可编程逻辑器件;FPGA(Field Programmable Gate Arrary)是现场可编程逻辑门阵列。两者基本功能相同,只是实现原理不同,在此可以忽略两者的区别,统称为可编程逻辑器件或CPLD/FPGA。
CPLD/FPGA是电子设计领域中最具活力和发展前途的一项技术,那么它能做什么呢?CPLD/FPGA可以完成任何数字器件功能,设计者可以通过传统原理图输入法(GDF)或硬件描述语言(VHDL,AHDL)设计一个数字系统通过软件仿真我们可以事先验证设计正确性,在PCB完成后还可以利用CPLD在线修改能力随时修改设计而不必改动硬件电路。
如何使用呢?很简单,只要有数字电路基础,会使用计算机,一个实践者很快会发现在PC机.试验箱和EDA软件的环境下跟随指导书就可以发挥自己的聪明才智进行主动学习。而数字电路理论知识则能迅速得到直观认识和应用。大致设计流程为:通过传统原理图输入法(GDF)或硬件描述语言(VHDL,AHDL)设计一个数字系统——生成相应的目标文件程序,通过下载电缆将代码下载到目标芯片。
具体为:
1、电路设计与输入
电路设计与输入是指通过某些规范的描述方式,将工程师电路构思输入给EDA工具。常用的设计方法有硬件描述语言(HDL)和原理图设计输入方法等。原理图设计输入法在早期应用得比较广泛,它根据设计要求,选用器件、绘制原理图、完成输入过程。这种方法的有点是直观、便于理解、元器件库资源丰富。但是在大型设计中,这种方法的可维护性较差,不利于模块构造与重用。更主要的缺点就是当所选用芯片升级换代后,所有的原理图都要做相应的改动。目前进行大型工程设计时,最常用的设计方法是HDL设计输入法,其中影响最为广泛的HDL语言是VHDL和Verilog HDL。他们的共同特点是利用由顶向下设计,利于模块的划分与复用,可移植性好,通用性好,设计不因芯片的工艺与结构不同而变化,更利于向ASIC的移植。波形输入和状态机输入方法是两种常用的辅助设计输入方法:使用波形输入时,志耘爱绘制出激励波形与输出波形,EDA软件就能自动地根据响应关系进行设计;使用状态机输入法时,设计者只需要画出状态转移图,EDA软件就能生成相应的HDL代码或原理图,使用十分方便。但是需要指出的是,波形输入和状态机输入方法只能在某些特殊情况下缓解设计者的工作量,并不适合所有的设计。
2、功能仿真
电路设计完成以后,要用专用的仿真工具对设计进行功能仿真,验证电路功能是否符合设计要求。功能仿真有时也称为前仿真。通过仿真能及时发现设计中的错误,加快设计进度,提高设计的可靠性。
3、综合优化
综合优化(Synthesize)是指将HDL语言、原理图等设计输入翻译成由与、或、非门,RAM,触发器等基本逻辑单元组成的逻辑连接(网表),并根据目标与要求(约束条件)优化所生成的逻辑连接,输出edf和edn等标准格式的网表文件,供FPGA/CPLD厂家的布局布线器进行实现。
4、综合后仿真
综合完成后需要检查综合结果是否与设计一致,做综合后仿真。在仿真时,把综合生成的标准延时文件反标志到综合仿真模型中去,可估计门延时带来的影响。综合后仿真虽然比功能仿真精确一些,但是只能估计门延时,不能估计线延时,仿真结果与布线后的实际情况还有一定的差距,并不十分准确。这种仿真的主要目的在于检查综合器的综合结果是否与设计输入一致。目前主流综合工具日益成熟,对于一般性的设计,如果设计者确信自己标注明确,没有综合歧义发生,则可省略该步骤。但是如果在布局布线后仿真时发现有电路结构与设计意图不符的现象,则常常需要回溯到综合后仿真以确认是否时由于综合歧义造成的问题。
5、实现与布局布线
综合结果的本质是一些由与、或、非门,触发器,RAM等基本逻辑单元组成的逻辑网表,它与芯片的实际的配置情况还有较大的差距。此时应该使用 FPGA/CPLD厂商提供的软件工具,根据所选芯片的型号将综合输出的网表适配到具体FPGA/CPLD器件上,这个过程就叫做实现过程。因为只有器件的开发商最了解器件的内部结构,所以实现步骤必须选用器件开发商提供的工具。在实现过程中最主要的过程是布局布线(PAR)。所谓布局(Place),就是指将逻辑网表中的硬件原语或者底层单元合理地适配到FPGA内部的固有硬件结构上,布局的优劣对设计的最终结果(在速度和面积两个方面)影响很大。所谓布线(Route),是指根据布局的拓扑结构,利用FPGA内部的各种连线资源,合理正确连接各个元件的过程。FPGA的结构相对复杂,为了获得更好的实现结果,特别是保证能够满足设计的时序条件,一般采用时序驱动的引擎进行布局布线,所以对于不同的设计输入,特别是不同的时序约束,获得的布局布线结果一般有较大的差异。CPLD结构相对简单得多,其资源有限而且布线资源一般为交叉连接矩阵,故CPLD的布局布线过程相对简单明朗的多,一般称为适配过程。一般情况下,用户可以通过设置参数指定布局布线的优化准则,总的来说优化目标主要有两个方面,面积和速度。一般根据设计的主要矛盾,选择面积或者速度或者是两者平衡等优化目标,但是当两者冲突时,一般满足时序约束要求更重要一些,此时选择速度或时序优化目标更佳。
6、时序仿真与验证
将布局布线的延时信息反标注到设计网表中,所进行的仿真就叫时序仿真或布局布线后仿真,也叫后仿真。该仿真的仿真延时文件包含的延时信息最全,不仅包含了门延时,还包含了实际布线延时,所以布局布线后仿真最准确,能够较好的反映芯片的实际工作情况。一般来说,布线后仿真步骤必须进行,通过布局布线后仿真能检查设计时序与FPGA实际运行情况是否一致,确保设计的可靠性和稳定性。
<3个不同阶段的仿真小结>:
--功能仿真主要目的在于验证语言设计的电路结构和功能是否和设计意图相符。
--综合后仿真主要目的在于验证综合后电路结构是否与设计意图相符,是否存在歧义综合结果。
--布局布线后仿真主要目的是验证是否存在时序违规。
7、板级仿真与验证
有些高速设计情况下还需要使用第三方的板级验证工具进行仿真与验证。这些工具通过对设计的IBIS、HSPICE等模型的仿真,能较好地分析高速设计的信号完整性、电磁干扰等电路特性。
8、调试与加载配置
设计开发的最后步骤就是在线调试或者将生成的配置文件写入芯片中进行测试。示波器和逻辑分析仪是逻辑设计的主要调试工具。传统的逻辑功能板级验证手段是用逻辑分析仪分析信号,设计时要求FPGA和PCB设计人员保留一定数量FPGA管脚作为测试管脚,编写FPGA代码时将需要观测的信号作为模块的输出信号,在综合实现时在把这些输出信号锁定到测试管脚上,然后连接逻辑分析仪的探头到这些测试管脚,设定触发条件,进行观测。
任何仿真或验证步骤出现问题,就需要根据错误定位返回到相应的步骤更改或者重新设计
在明确了CPLD/FPGA的设计流程后,简单介绍一下FPGA的优势:自从FPGA问世以来,就以强大的灵活性著称。FPGA最大的特点就是可以反复的编程.擦写.使用或者在外围电路不变的情况下用不同的硬件电路实现各异的功能,并且,随着技术的进步。功耗也不断下降,速度逐渐提高,成本不断降低。此外CPLD/FPGA又很强的融合力,新的应用领域显示,与DSP有一定的互补能力,它可以非常自然地实现大部分的数字信号处理的算法,可以根据任务要求分配资源。更大胆的讲FPGA和DSP处理器的平台将可能产生。由于CPLD/FPGA的种种优点,它非常适合原型产品的开发。
文章评论(0条评论)
登录后参与讨论