关注、星标公众号,精彩内容每日送达
来源:网络素材
reference
来自中国大学MOOC上西南交通大学的慕课《芯动力-硬件加速设计方法》,这里放的是笔者的一些学习笔记,示例代码修正等,以下是他们的课程大纲,有兴趣的朋友也可以看看
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设计,关注我们的公众号,探索