advanced FPGA --- 优秀的代码风格

Achievements provide the only real pleasure in life.

同一个实现,会有各种各样的代码风格,那么就会有优劣,下面说一下,什么是优秀的代码风格。总体来说,分为两大方向:第一性能最优,第二就是功耗最低。

1.关键路径的高扇出

采用寄存器复制的方式。具体来说,分为两种:综合工具选项和用户控制。综合工具选项是使用扇出阈值来自动判断是否需要逻辑复制,但是对于控制级信号不能复制。更好的办法就是针对特定的寄存器或者层级级数施加属性,确定哪些寄存器能够或者不能被复制。下面是经验扇出法则:

                     

2.流水线设计

对拥有多个逻辑级数的数据路径,进行重新组织,并将其分配在多个时钟周期上。以牺牲延迟和流水线开销逻辑管理为代价,来加快时钟周期和提高数据吞吐量为目的。由于FPGA有最少有几百k的寄存器,额外的开销不是问题,不过相应的必须对设计其余部分进行特殊考虑,容纳增加的延迟。典型的应用流水线的场景如下:

   a. 带有大扇入的逻辑锥

       例如需要大量总线或者多个组合信号来计算输出的代码。

   b. 有布局限制,低时钟到输出速度或大量建立要求的模块。

       例如:没有输出寄存器的block ram或者没有正确流水线化的算术代码。

   c. 当强制布局导致长布线时

      例如:一个管脚强制跨越一条芯片的布线,需要流水线来实现高速运行。

典型应用场景如下:

                 

可以看出系统时钟速度被源触发器到输出时间/逻辑级数/内部逻辑布线/目的寄存器建立时间限制。修改后的流水线设计如下:

               

触发器与函数发生器在相同的slice中,现在的时钟速度受限于源触发器到输出时间/贯穿一个逻辑级数的逻辑延迟/一个布线延迟/目的寄存器的建立时间。

okay,那我们回顾一下,系统设计的最高时钟频率怎么计算?参见advancedFPGA --- 时序分析

Fmax <= 1 / (Tsu + Tco + Tcomb - Tskew)

因为 Tco, Tsu 都是固定值,所以一个系统的最大工作频率取决 Tcomb,加入流水线之后Tcomb变小,导致Fmax变大。这是通过均衡寄存器之间的逻辑级数数量来改善设计性能。

3.宽总线设计

对高吞吐量的需求催生对高频率下更大宽度总线功能的需求。例如,要实现每秒200GB 的吞吐量数据传输,需1024 位宽总线以200MHz 频率传输数据。尤其是在实现大宽度算数功能和缩减运算符时,要充足的使用流水线级数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值