FPGA设计的四大基本原则

一、硬件原则

        FPGA设计采用的主要编程语言是VHDL、Verilog、SystemVerilog,三者都是硬件描述语言(Hardware Description Language,HDL),其中SystemVerilog因其在验证方面显示的强大功能又被称为硬件描述与验证语言(Hardware Description  and Verification Language,HDVL)。硬件描述语言,顾名思义,其描述对象是硬件电路,是实实在在存在的硬件电路。这就要求我们必须采用HDL可综合的部分进行电路设计,遵循可综合的代码规范。所以设计者需要了解所用的HDL哪些是可综合的,哪些是不可综合的。

        相比于软件编程语言(如C/C++),HDL具有两大特征:

                (1)并发性体现在同一模块中的不同进程是同时执行的,这反映了硬件电路的特征:一旦上电,同时工作。

                (2)时序性:体现了不同数据路径在时钟作用下的关系及时序路径与控制路径的关系。时序是设计出来的,不是凑出来的,更不是测出来的

        所以,在开始编程之前要有待设计电路的基本雏形。

        硬件原则还要求我们对所选用的FPGA的内部结构有所认识和了解,以确保RTL代码风格与FPGA内部结构相匹配,这样才能保证综合电路的质量。例如:7系列FPGA中的触发器复位信号只支持高电平有效,如果代码中的复位是低电平有效,就会消耗额外的查找表(用于逻辑取反),而UltraScale/UltraScale+ FPGA中的触发器既支持高电平有效,又支持低电平有效。7系列FPGA中的DSP48不支持异步复位,因此,如果代码中描述的乘法器使用了异步复位,那么相应的触发器是无法被吸收到DSP48内部的。

        综上所述,硬件原则如下:

                (1)使用可综合的HDL代码描述电路。

                (2)先有电路,再写代码。

                (3)RTL代码风格与FPGA内部结构相匹配。

二、同步原则

        同步原则指的是整个设计采用同步时序电路。“同步”意味着设计中的所有逻辑单元“步调保持一致”,即所有电路在同一时钟沿的触发下同步处理数据。这样看来,设计中只允许存在一个时钟,我们把这种“同步”称为“狭义的同步”。既然有“狭义的同步”,肯定也有“广义的同步”,了解“广义的同步”之前先来了解下什么是同步时钟。所谓同步时钟,是指时钟组(一个时钟组至少有两个时钟)内的时钟之间有明确的相位关系。反之,若时钟组内的时钟之间没有明确的相位关系,则认为他们是异步时钟。最典型的同步时钟场景是时钟组内的时钟由同一个MMCM/PLL生成的,而异步时钟场景是时钟组内的时钟是由不同的MMCM/PLL生成的。所以“广义的同步”就是指电路在同步时钟的作用下处理数据。

        尽管当前的FPGA设计允许存在多个时钟,仍要遵循“时钟个数尽可能少”的原则。一方面可以简化跨时钟域电路,另一方面有利于时序约束和时序收敛。之所以遵循同步原则,还因为相比异步设计,同步设计有着明显的优点:

        (1)同步设计可以有效避免毛刺的影响,增强设计的稳定性。(触发器仅在时钟有效沿才会有动作)

        (2)同步设计可以减少外部环境对芯片的影响。(异步设计的时序正确与否更多依赖于逻辑器件间的逻辑和布线延时,外界环境变化会使芯片内部延时发生微小变化)

        (3)同步设计更有利于静态时序分析和验证设计的时序性能。(同步设计时序约束更为简单)

三、流水原则

        流水原则是指要求我们在设计中使用流水线设计方法将数据处理流程分割为若干个子步骤,使数据在这些子步骤中流动起来。例如某处理流程分为读操作、计算操作、写操作三个步骤,采用流水线方式就是在这3个步骤之间插入流水寄存器,这样处理流程就由顺序方式变成了流水线方式。例如下图3.1和图3.2所示:

        这样做带来的好处也是显而易见的:不仅提高了处理速度,而且还降低了从输入到输出的总时钟周期个数(Latency)。但是使用流水线技术也是有要求的:数据流是单向流动,不存在反馈支路。流水线技术也体现了FPGA处理数据的特征:动态处理。除此之外,实现流水线方式的另一种形式还有乒乓操作,关于乒乓操作大家可以自行查询,原理非常简单。 

四、面积与速度的平衡与互换原则

        这里的面积指的是一个设计所消耗的FPGA的逻辑资源数量,其直观的体现就是资源利用率报告。速度指的是设计在FPGA上稳定运行时所能达到的最高频率,也就是我们常说的Fmax,可间接地通过时序报告中的WNS换算获得(Worst Negative Slack,建立时间最小裕量,若此值大于等于0,说明建立时间收敛;若此值小于0,说明建立时间存在时序为例)。面积和速度这两个指标贯穿FPGA设计的始终,是设计质量评价的终极标准。

        面积和速度是对立统一的。要求一个设计以最少的资源为代价运行在最高的时钟频率下是不可行的。科学的设计目标应该是在保证设计满足时序性能的前提下(能够达到预期的Fmax),尽可能地减少设计所消耗的资源;或者在限定的资源用量下,使设计的时序裕量更大,即使Fmax更高。这两种目标充分体现了面积和速度的平衡思想。

        面积和速度互换是FPGA设计的一个重要思想。从理论上讲,对于一个设计,如果Fmax远远高于实际需求,那么就可以通过功能模块复用减少整个设计消耗的逻辑资源,这其实就是用速度优势换面积节约。相反,如果一个设计对Fmax的要求很高,那么可以通过并行复制多个操作模块来提高Fmax,这其实就是通过增加面积换取Fmax的提升。那么,当面积和速度发生冲突时,该如何解决问题呢?此时,我们应遵循“速度优先“的原则。

~OVER~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Panda 皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值