FPGA开发流程简介

  典型的fpga开发流程一般包括功能定义/器件选型、设计输入、功能仿真(RTL级仿真)、综合优化、综合后仿真(静态仿真)、实现(布局布线)、布线后仿真(静态时序分析及时序仿真)、板级仿真以及芯片编程与调试等主要步骤。

1,功能定义/器件选型:
  在系统设计之前,首先要进行的是方案的论证、系统设计和fpga芯片的选择等准备工作。工程师要根据任务要求,比如系统的指标和复杂度,对工作速度和芯片本身的各种资源、成本等方面的权衡,选择合适的设计方案和器件类型。一般都是采用自顶向下的设计方法,把系统分为若干个基本单元,然后把每个基本单元划分为下一层次的基本单元。

2,设计输入:
  设计输入有三种形式,IP核、原理图、HDL;

  • 原理图:是一种最直接的描述方式,虽然直观且易于仿真,但效率很低,不易于维护,不利于某块的构造和重用以及移植性差。

  • HDL:HDL语言具有不同的抽象层次,这些抽象层有开关机、逻辑门级、RTL级、行为级和系统级。其中前两级又叫结构级,直接反映的是结构上的特性;RTL级又可以称为功能级。

  • IP核:实现一定功能的模块叫IP。IP核按来源可以分为三类:来自前一个设计的内部创建模块;FPGA厂家;IP厂商。IP核的分类:

  • (1)软核:是用硬件描述语言描述的功能块(即RTL级模块),不涉及电路实现,通常以硬件描述语言HDL源文件的形式以及加密形式呈现。软核只经过功能仿真,需要经过综合以及布局布线后才能使用。优点:灵活性高、可移植性强、允许用户自配置。缺点是对模块的预测性较低,在后续的设计中存在发生错误的可能性。

  • (2)固核:是指带有布局布线规划的软核,通常以RTL代码核对应具体工艺网表的混合形式提供。将RTL描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。核软核相比,固核的设计灵活性较差,但可靠性有较大提高。

  • (3)硬核:是指布局布线和工艺固定、经过前端和后端验证的设计,通常以网表形式提供,不能修改。硬核复用困难,使用范围较窄,只能用于某些特定应用。

3,功能仿真:
  也称为前仿真,是再编译之前对用户所设计的电路进行逻辑功能验证,此时仿真没有延迟信息,仅对功能进行验证。

4,综合优化:
  综合就是将高级抽象层次的描述转化成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。综合优化是指将设计编译成由逻辑门、RAM\触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。在Altera的开发流程中,将编译、映射过程合称为综合,在Xilinx开发流程中,由设计输入得到门级网表的过程叫做综合,而映射过程归结到实现的步骤中。

  • 编译:将原理图、HDL、IP核通过编译过程生成门级网表,此时的网表文件与具体的器件无关。
  • 映射:将编译得到的门级网表与选择的硬件平台(LUT)连接起来的过程。

5,综合后仿真:
  检查综合结果是否与原设计一致,在仿真时,把综合生成的标准延时文件反标注到综合仿真的模型中去,可估计门延时带来的影响,但不能估计线延时。

6,布局布线:
  利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能连接的布线通道进行连线,并产生相应文件;实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。

  • 布局将逻辑网表中的硬件原语核底层单元合理的配置到芯片内部固有硬件结构上,并且往往需要在速度核和面积最优之间做出选择。
  • 布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确的连接各个元件。

7,时序仿真:
  也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规现象。时序仿真包含的延迟信息最全,最精确,能较好的反应芯片的实际工作情况。

8,板级仿真与验证:
  主要应用与高速电路设计,对高速系统的信号完整性、电磁干扰等特征进行分析。

9,芯片编程与调试:
  芯片编程是指生产使用的数据文件,然后将编程数据下载到FPGA芯片中。芯片编程需要满足一定的条件,如编程电压、编程时序和编程算法等方面。逻辑分析仪是FPGA设计的主要调试工具,但需要引出大量的测试管脚。

10,约束:
  是指对相关环节操作制定规则,分为综合约束和布局布线约束(位置约束,时序约束)

  • 综合约束:实现速度与面积的平衡
  • 位置约束:是指布局的策略。最典型的就是I/O约束。还有增量编译里的物理界定。
  • 时序约束:主要包括周期约束、输入偏移约束、输出偏移约束。

FPGA配置过程
  在FPGA正常工作时,配置数据存储在SRAM中,这个SRAM单元也被称为配置存储器(configure RAM)。由于SRAM是易失性存储器,因此在FPGA上电之后,外部电路需要将配置数据重新载入到芯片内的配置RAM中。在芯片配置完成之后,内部的寄存器以及I/O管脚必须进行初始化(initialization),等到初始化完成以后,芯片才会按照用户设计的功能正常工作,即进入用户模式。
  FPGA上电以后首先进入配置模式(configuration),在最后一个配置数据载入到FPGA以后,进入初始化模式(initialization),在初始化完成后进入用户模式(user-mode)。在配置模式和初始化模式下,FPGA的用户I/O处于高阻态(或内部弱上拉状态),当进入用户模式下,用户I/O就按照用户设计的功能工作。
  配置模式分为在线调试配置和固化。在线调试配置是通过JTAG模式完成的。JTAG接口时业界标准接口,主要用于芯片测试等功能。固化程序到存储器的过程可以分为两种方式,主模式和从模式。主模式下FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程;从模式下则由外部计算机或控制器控制配置过程。主、从模式从传输数据宽度上,又可以分为串行和并行。

你可能感兴趣的:(fpga开发)