FPGA学习——初识FPGA

  • Post author:
  • Post category:其他


认识FPGA

FPGA:一个可以通过

编程

(设计硬件描述语言)来改变

内部结构



芯片

(让芯片实现某种功能)。经过EDA工具

编译、综合、布局布线后转换为可烧录文件

、最终加载到FPGA器件中,改变改变FPGA内部连线,完成所实现功能。

FPGA一种

微处理器

,类似电脑的CPU,其结构是

查找表


,一般用于通信接口设计、数字信号 处理等,ASIC(专用集成电路)的原型验证。

比较FPGA时,可编程逻辑模块的数量、固定功能逻辑模块的数目、存储器资源的大小,这些都是重要的参考指标。最底层的可配置逻辑模块上,存在两个基本器件:触发器和查找表(LUT),其通过不同的组合方式,区别了不同的FPGA。

查找表(LUT:Look-Up-Table):本质为一个

RAM存储器

,目前多使用4输入的LUT,每一个LUT可以看做一个有4位地址线的RAM。用户在EDA工具上通过原理图或硬件描述语言设计一个逻辑电路后,FPGA开发软件会自动计算逻辑电路的所有可能结果,并将真值表存入事先写好的RAM中。这样每输入一个信号进行逻辑运算就等于输入一个地址进行查找表操作,通过地址找到对应的RAM中的结果,最终将其输出。

FPGA内部,有“软内核”“硬内核”之分,

软内核

——利用FPGA的可编程性在芯片内部构造实现了一个计数器逻辑,构造计数器逻辑中使用到的功能为“软功能”;

硬内核

——某个功能

直接利用芯片实现

,则为芯片内部的“硬功能”。软内核可以利用芯片资源的基础上利用编程设计让其完成需要实现的任何功能(

数字功能

);硬内核是实现固定功能的器件,资源利用率高且功耗低,占用硅片面积小,性能较高。区别在于:

硬内核

可用于实现

模拟功能

,如锁相环的倍频功能,需要在模拟电路下实现。

若需要提供一个占用较少硅片面积、消耗较低功率但性能更高的处理器,则需要将FPGA实现为硬内核,如果需要高速、高性能的处理器,并需要实现逻辑编程时,在电路板上放置处理(ARM、DSP)和FPGA协同。ARM、DSP实现软件部分。

数据存储及配置方式

FPGA内部存在着存储单元片RAM块,

数据是存放在RAM

中并由其来设置工作状态的,若要对FPGA进行工作,需对片内RAM进行编程,而若外部有大量数据交互时,要通过增加外设对数据进行暂时性的存储,最终通过FPGA内部的RAM进行存储与处理。EDA上程序设计完成后,将软件上程序进行烧录进FPGA内部,通过不同配置模式,FPGA有不同的编程方式,常用配置方式如下:

  1. 并行模式:并行PROM,Flash配置FPGA
  2. 主从模式:一片PROM配置多片FPGA
  3. 串行模式:串行PROM配置FPGA
  4. 外设模式:将FPGA作为微处理器的外设,由微处理器对其编程。

FPGA的开发流程

1、功能定义/器件选型

项目开始前需进行方案论证、系统设计、FPGA芯片选型等,确定评估好方案后进行系统功能模块的定义和模块划分。由任务要求中的功能及复杂度,对硬件工作速度和器件自身资源、成本、性能指标等综合考虑,选择合适的器件类型。设计方法上,一般为自顶向下,将整个系统分为若干模块,将每个模块划分为下一层次的基本单元,确定好各模块的输入输出信号,再通过EDA设计各模块。

2、设计输入

通过硬件描述语言(HDL)的方式描绘设计出最终的数字电路。再通过EDA工具对电路进行硬件语言进行文本描述。设计好文本之后编译器将硬件语言进行综合、布局布线、转换为逻辑门、寄存器、数据选择器等实际电路。

另一种方法是:原理图输入的方法进行设计输入,这是最直接的描述方式,通过从元件库中调出来需要的器件,画出原理图。

3、功能仿真(RTL)

综合前仿真,设计好的数字逻辑需要检查合理性,在功能仿真器件电路可以不用考虑延,仅对初步的功能进行检验。利用测试平台Testbench,波形编译器和硬件描述语言建立好波形文件和激励信号,在仿真软件上模拟实际电路的波形显示出输出波形信号,并生成报告文件。通过观察各时间点信号变化来验证逻辑的正确性。

4、综合优化

综合:对恰定的电路实现功能和实现该电路的约束条件(速度、功耗、成本、电路类型)。计算机进行优化处理获得一个满足上述要求的电路设计方案。被综合的文件是一个HDL文件,综合依据是逻辑设计的描述和各种约束条件,结果是一个硬件电路的实现方案,其既满足预期的功能,又满足约束条件。综合器会产生一个最优的或接近最优的结果。综合过程也是一个优化的过程,常用的综合工具Synplify/Synplify Pro。Quartus综合器

5、综合后仿真

检查综合结果是否与原设计一致,前仿真:如用Modelsim对撰写的代码直接进行仿真;后仿真:功能仿真。对实现不会有太大影响。

6、布局布线

利用实现工具把逻辑映射到目标器件结构的资源中,从而决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件(配置文件与相关报告)。

7、时序仿真

后仿真,将布局布线的延时信息反标注到设计网表中来检测有无时序违规现象。时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际的估计。时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的,差别在于:时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并在仿真结果波形图中时序仿真后的信号加载了时延,而功能仿真没有。因此,布局布线后,通过对系统的各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是必须的。

8、编程与调试

编程:将FPGA开发工具最后产生使用的数据文件加载到FPGA芯片中。



版权声明:本文为weixin_53881515原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。