请问影响FPGA运行速度的有哪些因素?
我使用XILINX spartan 3AN 系列FPGA,期望达到运行速度20M ,但经过仿真,只能达到15M 左右,再高的速度就会时状态机的状态乱飞了,请问这里面有什么诀窍,或者说用什么样的技巧可以提高系统运行速度的? 还有就是阻塞赋值和非阻塞赋值,会很大程度影响状态机的最高速度吗? 综合的选项,选哪个可以提高速度?我使用VERILOG 编程,用了一个大状态机来做为主构架。
请不吝赐教!
多谢!
需要严格的语法 比如用vhdl 时序约束没做好 20M的要求不高啊,是不是状态机太复杂了,可以考虑把状态机分解一下 把格雷码换成独热码;
{:smile:}不过这个楼主应该试过了吧 我有个很复杂的状态机,都可以跑25M,楼主这个,估计是程序没写好。 你的设计肯定有问题,不知道你综合的结果是什么;一般时序设计的比较好的电路即使在高频时钟下工作也会很稳定。
我觉得你对于电路的理解还不够,HDL是用来描述电路而不是种编程语言。
另外对于FPGA来说,越简单的描述通常也是越好的。一个状态机的写法肯定有问题了,建议可以看下一些FPGA Coding Style相关的东西。
如果有时间也可以看看流水线相关的内容,这个才是FPGA与其他通用CPU最大的区别。 LZ最好大致理解下RTL到门级的映射关系,一般组合逻辑不要超过5级,跑个百来M是没有问题的 楼上正解 速度啊,时序约束上会有很大影响,另外就是代码风格的问题了。
楼主的运行速度只有15MHz,确实有点慢状态机搞太大了吗?也不至于吧。。 这个得看你怎么用了 一般组合逻辑不要超过5级
少用组合逻辑,多用同步 我曾经有过120个状态的一段式状态机, 轻松100M.把大组合逻辑尽量多成流水线的时序逻辑.
看看编译后的时序报告, 里面会说哪个逻辑是瓶颈, 然后把那个逻辑简化为流水线. qinxg 发表于 2013-8-8 08:39 static/image/common/back.gif
我曾经有过120个状态的一段式状态机, 轻松100M.把大组合逻辑尽量多成流水线的时序逻辑.
看看编译后的时 ...
膜拜。。。 多谢各位的回答,我试试各种可能性,再回来给分。
状态共有40多个,但出错的总在那1~2个,我把它拆分试试。 受教了,获益良多
页:
[1]