我正在研究基于BCH代码的解码器模块。该设计将在Virtex-7 FPGA上实现。我基本上有三个街区。综合征计算块,错误定位器和错误定位器求解器块。校正子计算模块在FPGA上运行良好,工作在225 MHz时钟。我正在研究错误定位器查找器块,它给了我一些计时问题。问题本质上是这样的:
1)我有一个只有case语句的模块。案例块有1024个条目。失败的路径包含此模块。如果我注释掉此模块,则设计工作正常。在实现的设计中,该模块放置得太远了,因此,我得到了巨大的网络/线路延迟。有没有办法让基于案例的模块更接近我的实际设计?
任何帮助将不胜感激。净延迟至少占总延迟的60%。对于我要解决的问题,这是无法接受的,因为此解码器需要至少在200 MHz上工作
答案 0 :(得分:1)
在以前称为ISE的Xilinx FPGA工具套件中,您可以更改Places Cost Table(PCT),从而导致逻辑单元的位置不同,从而导致时序结果变化。可以在不同的实现运行中(使用SmartXplorer)对PCT进行迭代,直到发现具有有效计时结果的PCT为止。
由于大型FPGA无效(例如您的Virtex 7器件),Xilinx放弃了此策略。但是您有几种预定义的策略,这些策略也可以并行运行。只需打开“实施设置”,然后尝试其他策略,看看是否可行。
如果没有,则必须在HDL级别上优化设计。通常,流水线是一个不错的策略,但是它很大程度上取决于您的代码。通常,您必须减少大型组合结构,而具有1024个条目的case语句就是大型组合结构的候选对象。
编辑:请参阅Xilinx UG904以获得不同实现策略的概述和简要说明。