RTL设计指导原则-面积与速度互换

关注、星标公众号,精彩内容每日送达
来源:网络素材

reference

来自中国大学MOOC上西南交通大学的慕课《芯动力-硬件加速设计方法》,这里放的是笔者的一些学习笔记,示例代码修正等,以下是他们的课程大纲,有兴趣的朋友也可以看看

image-20221007214614267

RTL 级设计的评判标准

RTL 级设计的评判标准很多,如

  • 时序性能

  • 所占面积

  • 可测试性

  • 可重用性

  • 功耗

  • 时钟域的分配

  • 复位信号设计

  • 是否与所用 EDA 工具匹配。

对FPGA/CPLD : 是否能发挥这些PLD的结构特点等

根据这些目标的组合和优先级设置,可以派生出就唔多不同的设计原则:

  • 面积与速度互换

  • 乒乓操作

  • 流水线设计

面积

一个设计所消耗的目标器件(如FPGA CPLD 和 ASIC 等)的硬件资源或者ASIC芯片的面积。

  • 对于FPGA /CPLD来说,可以用所消耗的触发器FF和查找表 LUT数量来衡量,

  • 对于 ASIC 来说,则可以用设计的面积、门数等衡量。

速度

指设计在芯片上稳定运行时所能够达到的最高频率,这个频率由设计的时序状况决定

与设计满足的:

  • 时钟周期

  • PAD to PAD Time

  • Clock Setup Time

  • Clock Hold Time

  • Clock-to-Output Delay

等众多时序特征量密切相关。

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

科学的设计目标:

  • 面积:在满足设计时序要求(包含对设计最高频率的要求)的前提下 ,占用最小的芯片面积;

  • 速度:在所规定的面积下,使设计的时序余量更大,频率更高。

  • 要求: 应该认识到它们是和产品的质量、成本直接相关的。

如果设计的时序余量比较大,运行的频率比较高

设计的健壮性更强

整个系统的质量更有保证

设计所消耗的面积更小

在单位芯片上实现的功能模块更多

需要的芯片数量更少

整个系统的成本也随之大幅度削减

相比之下,面积和速度的地位是不一样的。相比之下,满足时序、工作频率的要求更重要一些,

所以当两者发生冲突时,应采用速度优先的原则。面积和速度的互换是 RTL 设计的一个重要思想。

从理论上讲,一个设计如果时序余量较大,所能跑的频率远远高于设计要求:

可以通过功能模复用减少整个设计所消耗的芯片面积

用速度的优势对换面积的节约。

反之,如果一个设计的时序要求很高,普通方法达不到设计频率,可以:

那么一般可以通过将数据流串并转换

并行复制多个操作模块

对整个设计采取"乒乓操作"和"串并转换"的思想进行处理

在芯片输出模块处再对数据进行"并串转换"

从宏观来讲,整个芯片满足了处理速度的要求,这相当于用面积复制换取速度的提高。面积和速度互换的操作技巧很多,比如模块复用、“乒乓操作”、"串井转换”等,这些技巧需要不断积累。

面积换速度

本例是一个路由器设计实例。假设输入数据流的速率是 450Mbit/s的,而在FPGA上设计的数据处理模块的处理速度最大为 150Mbit/s,由于处理模块的数据吞吐量满足不了要求,因此直接在FPGA 上实现是一个“不可能完成的任务”。在这种情况下,就应该利用“面积换速度”的思想,至少复制3个处理模块。首先将输入数据进行串并转换,然后利用这3个模块并行处理分配的数据,最后将处理结果“并串转换"以满足数据速率的要求。在处理模块的两端,其数据速率是 450Mbit/s,而在FPGA的内部,每个子模块处理的数据速率是150Mbit/s。其实个数据吞吐量的保障是依赖于3个子模块的并行处理来完成的,也就是说通过占用更多的芯片面积来实现高速处理。设计示意图如所示。

乒乓操作

“乒乓操作” 是一个常常应用于数据流控制的处理技巧,如下图:

乒乓操作的最大特点是

  • 通过“输入数据选择单元”和“输出数据选择单元”按节拍、相互配合的切换,

  • 将经过缓冲的数据流没有停顿地送到“数据流运算处理模块”进行运算与处理。

  • 把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。

  • 所以乒乓操作常常应用于流水线式算法,完成数据的无缝缓冲与处理。

  • 乒乓操作的第二个优点是可以节约缓冲区空间。

另外,巧妙运用乒乓操作还可以达到用低速模块处理高速数据流的效果。

通过乒乓操作实现低速模块处理高速数据的实质是:通过 DPRAM 这种缓存单元实现了数据流的串并转行用“数据预处理块 1”和“数据预处理模块 2”处理分流的数据,是面积与速度互换原则的体现!

流水线

电路运行的最高频率,取决于最长的组合逻辑链路的延迟值

如将组合逻辑拆分为多个小逻辑块,则组合逻辑会出现串行闲置:

实例,计算c = log ⁡ ( ∣ a + b ∣ ) c=\log(|a + b|)c=log(∣a+b∣),硬件电路为:

此时,组合逻辑最大延迟为:

如果在图中插入两级寄存器:

此时,组合逻辑最大延迟为:

则此时一个经典的四级流水线的结构为:

注意此处划分由延时划分,而非功能划分。流水线和非流水线的延时对比:

特点:

  • 通过插入寄存器,将长的串行逻辑链分成较小的部分

  • 当系统运算是串行的时候,利用时控制,使运算依照 顺序接续进行

  • 在任何给定时刻,大部分电路都在工作好处

好处:

  • 每一部分延时较小->可使用更快的时钟

  • 大部分电路同时进行运算->可提高数据通过量

流水线的参数设计

流水线分割点及级数的确定要考虑的因素包括:

单元延迟时间及时钟频率的大小决定了数据通过速率

过多的级数不一定能产生最快的结果

太多寄存器的插入会导致芯片面积增加,布线困难,时钟偏差增加

小结

我在流水线上拧螺丝,螺丝在流水线上拧我,我们是两颗狭路相逢的螺丝

(全文完)

图片

想要了解FPGA吗?这里有实例分享,ZYNQ设计,关注我们的公众号,探索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值