我正在开发一个基于BCH码的解码器模块。该设计将在Virtex-7 FPGA上实现。我基本上有三个街区。校正子计算块、错误定位器发现器和错误定位器求解器块。校正子计算模块在现场可编程门阵列上工作正常,并以225 MHz的时钟工作。我正在研究错误定位器模块,它给了我一些时间问题。问题本质上是这样的:
1)我有一个模块,它只有一个case语句。case块有1024个条目。失败的路径包含此模块。如果我注释掉这个模块,设计就能正常工作。在实现的设计中,这个模块放得太远了,因此,我得到了一个巨大的网络/线路延迟。有没有办法让基于案例的模块更接近我的实际设计??
任何帮助都将不胜感激。净延迟至少占总延迟的60%。这对于我试图解决的问题来说是不可接受的,因为这个解码器需要至少工作200 MHz
发布于 2019-02-11 21:41:21
在之前的名为ISE的Xilinx FPGA工具套件中,您可以改变贴片成本表(PCT),这会导致逻辑单元的不同位置放置,从而导致不同的时序结果。可以在不同的实现运行中迭代PCT (使用SmartXplorer),这将停止,直到找到具有有效计时结果的PCT。
Xilinx放弃了这一策略,因为它在大型FPGA中无效(就像你的Virtex 7设备一样)。但是你有几个预定义的策略,它们也可以并行运行。只需打开Implementation Settings并尝试不同的策略,看看其中一种是否有效。
如果没有,你必须在HDL级别上优化你的设计。一般来说,流水线是一个很好的策略,但它很大程度上依赖于您的代码。通常,您必须减少大型组合构造,而具有1024个条目的case语句就是大型组合构造的候选者。
编辑:查看Xilinx UG904以获得不同实现策略的概述和简要描述。
https://stackoverflow.com/questions/54623424
复制相似问题