Xilinx 的XC2VP70要跑到160MHz容易实现吗?
告诉小弟一声
好吧
谢谢!
FPGA的速度和设计有很大的关系,如果仅仅是理论上能跑多块,那么只需去查查器件手册,一般手册中会给出FPGA的基本单元的时序延时特性,例如:LUT的延时,触发器的Tcq,管脚的延时等,通过这些参数可以“乐观”的估计FPGA理论最大速度,另外一个比较简单判断它能跑多块的方法是:看采用一些标准的设计,它的时序特性如何,例如小一点的例子是:16位/32位计数器,32选1的MUX,复杂的设计有FIR、FFT等,这些再器件中的datasheet也一般会给出,可以作为比较不同FPGA速度等级的一些参考,VP70是V2家族的一款FPGA,我认为它跑160M是没什么问题的。不过如果你的设计比较复杂,优化有没有做好的话,那么别说160M,可能10M都可能跑不了。
跑160M是可以的。 用面积换速度,流水,并行处理。
如果状态机在关键路径上的话,onthot 编码 或者用 srl 来实现。
复杂的控制逻辑,不要用大块的组合逻辑来实现,把时序存到rom里,然后读出来作为控制信号。
去掉ise综合属性里的 resource sharing,选择piplining、 retiming, 实现选项里选 timing driven,effort level 设到最高。
寄存模块的输入输出数据。寄存fpga的输出输入,并将该中寄存器pack到iob里
如果关键路径上的布线延迟太大,用寄存器复制的方法。
如果关键路径上扇出太大,改进rtl代码,或者在综合属性里 将fanout限到32或者64
最后时钟的问题很关键,直接用 dcm好了。
注意先要做好各模块在fpga里的位置规划,以数据流为走向,从左至右排,或者做左上至右下、左下至右上。
由于电路速度高的时候,为了满足时序需求(你要在ucf里至少加180m的约束),slice 的pack rate会很低,大约50%左右。所以FPGA的资源开销会很大,需要提醒你注意的一点是你需要看看设计的规模,估算一下资源需求量尤其是slice需求量。你的slice需求量需要少与 v2p70的40%,否则设计基本上没有放得进去的可能。
为了提高设计的可靠性和减少工作量,最好选用 xilinx 的IP 核。
记得vp2系列里也是有些 dsp slice的,算数运算直接映射到这个上好了,可以提高设计速度和将少slice使用量。
在架构设计上要避免大量的集中式存储。不要使用几个block ram 拼起来组成一个大ram 的存储器设计方式,采用高位地址译码的方式,分别选通几块小block ram 即可。
偶以前用v2p做过200M的高速接口,片子发热挺厉害的。所以如果板子设计得不强的话,这么高的时钟频率,还是得注意设计的功耗管理的。用好 bufgce 和bufgmux,在模块不需要时钟或者可以降频运行的时候给它关掉时钟或者切换到低频的时钟上。
模块不工作的时候,使其使能信号无效。数据运算模块不工作时,对它的输入数据进行隔离。
避免频繁的存取ram。存取ram比较耗能量。
对于组合逻辑电路 给逻辑表达式上添冗余项去毛刺,对降低功耗和提高电路速度都有好处。
okay, 就先说这么多吧,以后想起来了再继续添加。
太强了
挺有深度的
