FPGA设计流程

2022-04-14 10:28:31 浏览数 (1)

FPGA设计流程

FPGA设计流程包括以下关键步骤,如图9.8所示。

1. 设计输入

2. 设计仿真与综合

3.设计实现

4.设备编程。

图9.8 FPGA设计流程

设计输入

在设计进入之前,需要根据设计规范进行设计规划。设计规范需要转换为体系结构和微体系结构。设计架构和微架构包括将总体设计分解为小模块,以实现预期功能。在架构设计阶段,需要估计内存、速度和功率的需求。根据需要,需要为实现选择FPGA设备。

使用Verilog(.v)或VHDL(.vhd)文件完成设计输入。设计输入后,需要对设计进行仿真,以确保设计的功能正确性。这称为功能仿真。

设计仿真与综合

在功能仿真期间,将输入集应用于设计,以检查设计的功能正确性。尽管在后期的设计周期中可能会出现时间或面积、电源问题,但设计师至少对设计的功能有把握。

硬件设计工程师的主要目标是生成高效的硬件。综合是将设计抽象的一个层次转换为另一个层次的过程。在逻辑综合中,HDL被转换成网络表。网络列表独立于设备,可以采用标准格式,如电子设计互换格式(EDIF)。

设计实施

该设计经历了translate, map and place and route等步骤。在设计实现过程中,EDA工具将设计转换为所需格式,并根据所需区域将其映射到FPGA。EDA工具通过使用实际逻辑单元或宏单元来执行映射。在映射过程中,EDA工具使用宏单元、可编程互连和IO块。专用模块,如乘法器、DSP和BRAM,也使用供应商工具进行映射。这些块被放置在FPGA内部的预定义几何体上,并通过使用可编程互连来实现预期功能。这一步称为布局和布线。

为了检查设计计时性能以及是否满足约束,将执行时序分析,该分析称为布局后STA。在STA期间,使用与可编程互连相关联的延迟来检查时序路径。提取RC延迟并将其用于时序分析也称为反向注释。

设备编程

FPGA通过使用特定于供应商或专有的位流文件进行编程。位流是需要加载到FPGA中以执行特定硬件设计的二进制数据文件。

如果设计针对特定的FPGA,则EDA工具将生成设备利用率摘要。

用FPGA实现逻辑

现代FPGA的体系结构包括CLB阵列、块RAM、乘法器、DSP、IOB和数字时钟管理器(DCM)。延迟锁定环(DLL)用于赋值具有均匀时钟偏移的时钟。XILINX SPARTAN系列FPGA的平面图如下图所示。

可配置逻辑块

如下图所示,基本CLB由LUT、触发器和多路复用器逻辑组成。配置数据保存在锁存器中。CLB体系结构取决于供应商,由多个LUT、触发器、多路复用器和锁存器组成。下面的Verilog代码是使用单个四输入LUT实现的,称为组合逻辑。

图9.9 Xilinx基本CLB结构

下面的Verilog功能块在实现过程中使用单LUT和单寄存器,因此该逻辑称为时序逻辑。

图9.9所示的CLB也用于实现16位移位寄存器。LUT可以级联以设计较长尺寸的移位寄存器,也可以用于设计的流水线。

输入-输出块(IOB)

输入-输出块用于建立逻辑与外部世界的接口,由具有三态控制机制的寄存器和缓冲器的数量组成。该块可用于寄存器输入和寄存器输出。

图9.10 Xilinx基本IO块

现代FPGA的IOB结构非常复杂,可以包含许多IO控制支持,其中可能包括DDR、专用高速接口。基本IO块结构如图9.10所示。

Block RAM

XILINX Spartan-7系列支持可配置18 kbit块的形式组织的200 MHz块RAM。每个块RAM包含18432位,其中16kbit赋值用于数据存储,其余2kbit赋值用于奇偶校验。块RAM可用作单端口存储器或双端口存储器,并具有独立的端口访问。每个端口与独立时钟、时钟启用和写启用同步。读取操作本质上也是同步的,需要启用时钟。块RAM的应用是存储数据、FIFO设计、缓冲区和堆栈,甚至是在设计复杂的状态机时。单端口RAM如图9.11所示。

图9.11 Xilinx单端口Block RAM

数字时钟管理器(DCM)

Xilinx设备系列使用延迟锁定环(DLL),Altera使用锁相环(PLL)作为时钟管理器。DCM、DLL的作用是提供对相移、时钟偏移和时钟频率的完全控制。DCM、DLL支持以下功能。

  • 相移•时钟偏移消除
  • 频率综合。

DCM由可变延迟线和时钟赋值网络组成,基本框图如图9.12所示。

图9.12 Xilinx基本DLL块

乘法器

所有Spartan7 FPGA都有两个18位输入,并生成36位输出。乘法器为嵌入式块,每个设备有4~104个嵌入式乘法器块。嵌入式乘法器的主要优点是,与基于CLB的乘法器相比,它需要更少的功耗。它们用于以最小的通用资源实现快速算术函数。可以使用路由资源级联乘法器,下图显示了配置为22位乘以16位的乘法器,以生成38位输出的乘法器可用于有符号或无符号数字乘法。乘法器广泛应用于DSP应用中。基本块如图9.13所示。

图9.13 Xilinx基本乘法器块

0 人点赞