完整的FPGA设计流程包括哪些?

FPGA是FieldProgrammableGateArray的缩写,即现场可编程门阵列。FPGA是在CPLD的基础上发展起来的新型高性能可编程逻辑器件,它一般采用SRAM工艺,也有一些专用器件采用Flash工艺或反熔丝(Anti-Fuse)工艺等。FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。FPGA的基本组成部分有可编程输入/输出单元、基本可编程逻辑单元、嵌入式RAM、丰富的布线资源、底层嵌入功能单元、内嵌专用硬核等。

系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。

FPGA一般来说比ASIC(专用集成电路)的速度要慢,实现同样的功能比ASIC电路面积要大。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)。

一般来说,完整的FPGA设计流程包括电路设计与输入、功能仿真、综合优化、综合后仿真、布局布线、布局布线后仿真、板级验证与加载配置调试等主要步骤。

(1)电路设计与输入。电路设计与输入是指通过某些规范的描述方式,将工程师电路构思输入给EDA工具。常用的设计输入方法有硬件描述语言(HDL)和原理图设计输入方法等。HDL语言中,应用最为广泛的是VHDL和VerilogHDL。

(2)功能仿真。电路设计完成后,要用专用的仿真工具对设计进行功能仿真,验证电路功能是否符合设计要求。功能仿真有时也被称为前仿真。常用的仿真工具有ModelSim、VCS、NC.Verilog和NC.VHDL等。

(3)综合优化。综合优化(Svnthesize)是指将HDL语言、原理图等设计输入翻译成由与、或、非门,RAM,触发器等基本逻辑单元组成的逻辑连接(网表),并根据目标与要求(约束条件)优化所生成的网表,输出edf和edn等标准格式的网表文件,供FPGA厂家的布局布线器进行实现。

(4)综合后仿真。综合完成后需要检查综合结果是否与原设计一致,做综合后仿真。在仿真时,把综合生成的标准延时文件反标到综合仿真模型中去,可估计门延时带来的影响。

(5)实现与布局布线。综合结果的本质是一些与、或、非门、触发器,RAM等基本逻辑单元组成的逻辑网表,它与芯片实际的配置情况有较大差距。此时,应该使用FPGA厂商提供的软件工具,根据所芯片型号,将综合输出的逻辑网表适配到具体FPGA器件上,这个过程叫做实现过程。在实现过程中,最主要的过程就是布局布线。所谓布局(Place)是指将逻辑网表中的硬件原语或者底层单元合理地适配到FPGA内部的固有硬件结构上;所谓布线(Route)是指根据布局的拓扑结构,利用FPGA内部的各种连线资源,合理正确连接各个元件的过程。

(6)时序仿真与验证。将布局布线的时延信息反标到设计网表中,所进行的仿真就叫时序仿真或布局布线后仿真,简称后仿真。布局布线后仿真的主要目的在于发现时序违规(TimingViolation),即不满足时序约束条件或者器件固有时序规则(建立时间、保持时间)的情况。

(7)板级仿真与验证。在有些高速设计情况下还需要使用第三方的板极验证工具进行仿真与验证。这些工具通过对设计的IBIS、HSPICE等模型的仿真,能较好地分析高速设计的信号完整性、电磁干扰(EMI)等电路特性等。

(8)对器件下载调试。设计开发的最后步骤是在线调试或者将生成的配置文件写入芯片中进行测试。示波器和逻辑分析仪是逻辑设计的主要测试工具。以上任何仿真或者验证步骤出现问题,就需要根据错误的定位返回到相应的步骤更改或者重新设计。

目前主要的FPGA器件生产厂商有两家,即美国的Altera公司和软件开发平台,其中Altera公司的FPGA产品主要有Cyclone系列和Stratix系列等,软件开发平台为OuartusⅡ,而Xilinx公司的FPGA产品主要有Virtex系列和Spartan系列等,软件开发平台为ISE。

相关推荐
风_峰3 天前
Ubuntu Linux SD卡分区操作
嵌入式硬件·ubuntu·fpga开发
FPGA_Linuxer3 天前
FPGA 40 DAC线缆和光模块带光纤实现40G UDP差异
网络协议·fpga开发·udp
风_峰3 天前
Petalinux相关配置——ZYNQ通过eMMC启动
嵌入式硬件·ubuntu·fpga开发
风_峰3 天前
【ZYNQ开发篇】Petalinux和电脑端的静态ip地址配置
网络·嵌入式硬件·tcp/ip·ubuntu·fpga开发
碎碎思3 天前
一块板子,玩转 HDMI、USB、FPGA ——聊聊开源项目 HDMI2USB-Numato-Opsis
fpga开发
ooo-p4 天前
FPGA学习篇——Verilog学习Led灯的实现
学习·fpga开发
嵌入式-老费4 天前
Zynq开发实践(FPGA之选择开发板)
fpga开发
风_峰4 天前
PuTTY软件访问ZYNQ板卡的Linux系统
linux·服务器·嵌入式硬件·fpga开发
电子凉冰4 天前
FPGA入门-状态机
fpga开发
Aczone284 天前
硬件(十)IMX6ULL 中断与时钟配置
arm开发·单片机·嵌入式硬件·fpga开发