FPGA时序优化的几种方法

衡量FPGA设计的两个重要指标是吞吐率和延迟。

吞吐率:指系统每一个时钟周期内能够处理的数据数量,为了获得更高的吞吐率就需要减少组合逻辑延迟,在组合逻辑中间插入寄存器,也就是流水线设计。

延迟:指数据从输入系统到输出系统总共需要的时间,为了获得更短的延迟,可以减少组合逻辑延迟,或者删减路径上的寄存器,第二种方法显然不利于系统获得更好的性能。

时序优化的几种方法
这里说的优化是让FPGA设计获得更高的工作频率,也就是通常说的性能和吞吐率。

1.插入寄存器(pipeline)
这种方式会增加设计的时滞(clock latency)。插入了几个寄存器,结果输出就会延长几个周期,在不违反设计规格(对clock latency有要求)以及功能没有影响的时滞情况之下可以这么做。举例说明,如果下面一个FIR滤波器的设计没能满足时序要求。
在这里插入图片描述
 从代码可以看出,X2这条路径过长,是整个设计的Critical Path,如果采用流水线设计可以用寄存器暂存自已在执行Y的运算,改进如下:
 在这里插入图片描述
 2.并行化设计
  并行化设计的思想是将一个逻辑函数分解为几个小一些的逻辑函数并行计算,从而减少关键路径上的延迟 。
  例如计算两个8bits数的乘法,将8bits数分为两个4bits数,则乘法运算可以被分解为下面几个部分:
X∗X={A,B}∗{A,B}={(A∗A),(2∗A∗B),(B∗B)};X∗X={A,B}∗{A,B}={(A∗A),(2∗A∗B),(B∗B)};
  通过这种方法可以将设计简化为一系列4bits乘法器的实现。
  在这里插入图片描述
  通过优化掉设计中的优先级译码电路,逻辑结构被展平,路径延迟得以缩短,优先级译码电路常出现在IF/ELSE结构语句中出现。
  在这里插入图片描述
  
  上面代码综合后就会产生优先级译码器,通过各项平级的if语句或者case语句可以避免这样的优先级译码设计
  在这里插入图片描述

4.均衡设计
均衡设计的思想是把 Critical Path 上的组合逻辑拿出一部分放在 short path 上进行,从而缩短 Critical Path 的延迟。
下面举例一个8位加法器。
在这里插入图片描述
5.优化路径
最后一种方法也是我认为最难的,通过优化数据流的路径来缩短 Critical Path ,提升系统性能。重新布局和 Critical Path 在一起的路径,从而 Critical Path上的逻辑门可以更靠近目标寄存器。举一个栗子:
在这里插入图片描述

  • 11
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
赛灵思(Xilinx)FPGA时序优化方法有以下几种: 1. 时钟选择:选择合适的时钟频率可以有效地优化FPGA时序。根据设计的需求,选择适当的时钟频率,可以使FPGA在满足时序要求的同时充分发挥性能优势。 2. 约束设置:时序约束是指在设计中给出各个时序要求以及相关的产生时钟的周期。合理设置约束可以帮助FPGA在满足时序要求的前提下进行优化。通过对约束设置的优化,可以使信号的传输和处理更加高效。 3. 时钟域划分:将设计中的时钟划分为不同的时钟域,可以使时序的分析和优化更加容易。通过合理的时钟域划分,可以减少不同时钟域之间的时序冲突,从而提高FPGA的性能。 4. 流水线设计:流水线是一种常用的时序优化技术,可以将时序限制分散到多个时钟周期中。通过合理的流水线设计,可以有效地减少一个时钟周期内的逻辑操作,从而提高FPGA时序性能。 5. 时序分析与优化:使用FPGA设计工具进行时序分析,可以找出各个时序路径中存在的潜在问题,如信号延迟、时钟偏移等,并进行优化。通过优化逻辑资源的分配、信号的布局和布线等方面,可以改善时序路径的性能,提高FPGA设计的稳定性和可靠性。 总之,赛灵思FPGA时序优化方法是一个综合性的工作,需要考虑到时钟选择、约束设置、时钟域划分、流水线设计以及时序分析与优化等方面,以最大程度地发挥FPGA的性能优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值