龙空技术网

浅谈FPGA技术(二)-- 基本原理和开发流程

单眼皮老王 399

前言:

现在我们对“fpga开发方法”大约比较关注,兄弟们都需要知道一些“fpga开发方法”的相关内容。那么小编同时在网摘上网罗了一些对于“fpga开发方法””的相关知识,希望咱们能喜欢,各位老铁们一起来学习一下吧!

在昨天文章中,我们回顾了FPGA的发展历史、当前的现状以及未来可能的发展方向,今天我们再来聊一聊FPGA的基本结构、原理和开发流程。

FPGA基本结构

FPGA的结构大致分为两种,第一种是基于乘积项的PLD结构。这种结构是由EEPROM和Flash工艺制造,一种是通电就可以工作,无需其他芯片配合,所以今天暂不讨论。第二种是基于查找表(Look-Up-Table)的结构。今天我们就来看看它的基本原理。

基于查找表(Look-Up-Table)结构的基本原理

查找表结构(Look-Up-Table)简称LUT,LUT其实就是一个RAM。目前的FPGA多使用4输入LUT,每个LUT可以看成是一个有着4位地址线的16x1RAM。

每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。

FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值,决定了逻辑单元的逻辑功能,以及各模块之间或模块与I/O间的连接方式,并最终决定了FPGA所能实现的功能。

当用户通过原理图或HDL语言描述一个逻辑电路后,FPGA开发软件会自动计算所有可能的结果,并把结果预先写到RAM中,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出。

FGPA开发流程

一般FPGA的开发流程如下图所示:

图一 FPGA开发流程图

下面以Xilinx公司的开发环境ISE以及第三方仿真软件Modelsim为例,给出完整的FPGA设计流程,包括设计输入、功能仿真、综合、综合后仿真、布局布线、布局布线后仿真和下载配置。

设计输入。ISE支持的输入方式主要有HDL语言输入,状态图和原理图输入。HDL语言有VHDL和verilog两种,在国内多采用verilog语言进行编程输入。功能仿真。电路设计完成后要进行功能验证,看是否符合功能要求,通过仿真可以提前发现设计中的错误,提高设计的速度和准确度,提高可靠性。设计综合。设计综合是在功能仿真的基础上,根据电路的功能和约束条件,约束条件如速度、功耗、资源利用率、成本等,通过计算机进行优化,将设计(verilog语言)翻译成FPGA的基本逻辑结构与、或、非门、RAM、寄存器等基本逻辑单元组成的网表,并根据要求,获得一个满足要求的电路设计方案。综合后仿真。综合完成后需要做综合后仿真,主要是用来检查综合后的结果与设计初衷是否一致。在仿真时把综合时产生的延时文件(主要是门延时)加入仿真中,估计出门延时可能带来的影响。综合后仿真主要是为了检查综合器综合的结果是否与设计输入一致。布局布线。综合完成后,根据所选芯片的型号,将综合输出的逻辑网表配到所选的FPGA上,即布局布线。布局是指从映射取出的逻辑和输入输出模块,并把他们分配到FPGA的内部物理位置;布线是利用自动布线软件使用布线资源选择路径完成所有的逻辑连接。布局布线后仿真。布局布线后仿真,就是将所有的延时信息,包括门延时、线延时,放入设计中进行延时。布局布线后仿真全面、准确,能较好的反应芯片的实际工作情况,可以有效的分析设计中的竞争与冒险。下载配置。设计开发的最后步骤就是将生成的配置文件写入芯片中进行测试,从硬件上验证整个设计,将生成后的位流数据文件下载到具体的FPGA中。小结

在本文中,我们分析了FPGA技术的基本原理和开发流程,相信大家已经对如何使用FPGA进行硬件开发,有了一个整体的认识。

个人认为,如果想用好FPGA,必须在以下这些方面下大功夫,包括:提高电路设计能力,提升对时序约束,布局布线的认知程度,以及增加对FPGA资源的熟悉程度和利用能力等等。所以,需要扎扎实实的走好每一步。

标签: #fpga开发方法 #fpga开发流程图