|
发表于 2017-9-16 10:49:48
|
显示全部楼层
ise只有worst case。另外LUT延时并不是可控的——从idelay_tap可以计算出,xilinx手册上给的是接近50ps,但实际上每个tap只有22ps左右,40度。
你在时钟上串个lut,那么这个lut会导致额外的hold time。虽然在绝大多数时间内都能正常工作,但是你能保证LUT在任何时间内都是在这个范围内吗?显然保证不了,电子芯片就是量子效应,测不准,你不知道它到底会在什么时间达到什么状态,你只能知道它大概在哪个时间段达到什么状态。就算它best case,就算它是覆盖了99.9999%的情况,它还有0.0000001的几率是会出错的。而这一个错,就叫你心血白费了。
所以啊,我还是建议你尽量避免用这么个方法。FPGA里面的clock gating资源很丰富,xilinx有global,regional等多组时钟,完全可以进行分块设计。串lut是最坏的选择。别的我也不多说了,你做的接口之类的,以及跨时钟域之类的多了就知道了。像我用spartan6跑800Mbps的IO,都要手动摆放关键寄存器的,否则根本跑不起来(因为xilinx的selectio根本不好用,约束条件无比多)。
争论这个意义其实不大,我们设计基本都到了纯verilog的峰顶,进一步就是做算法芯片,cnn加速,之类的。为了达到目的,可以使用任何方法。但是FPGA毕竟有它的局限性。 |
|