Friendz 发表于 2013-8-1 18:12:12

请问影响FPGA运行速度的有哪些因素?

我使用XILINX spartan 3AN 系列FPGA,期望达到运行速度20M ,但经过仿真,只能达到15M 左右,再高的速度就会时状态机的状态乱飞了,请问这里面有什么诀窍,或者说用什么样的技巧可以提高系统运行速度的? 还有就是阻塞赋值和非阻塞赋值,会很大程度影响状态机的最高速度吗? 综合的选项,选哪个可以提高速度?

我使用VERILOG 编程,用了一个大状态机来做为主构架。


请不吝赐教!

多谢!

kingboy100 发表于 2013-8-1 21:03:49

需要严格的语法 比如用vhdl

lanqilove 发表于 2013-8-1 21:09:53

时序约束没做好

zkf0100007 发表于 2013-8-1 22:59:31

20M的要求不高啊,是不是状态机太复杂了,可以考虑把状态机分解一下

hhxb 发表于 2013-8-1 23:15:22

把格雷码换成独热码;
{:smile:}不过这个楼主应该试过了吧

zxq6 发表于 2013-8-1 23:15:32

我有个很复杂的状态机,都可以跑25M,楼主这个,估计是程序没写好。

pontiff 发表于 2013-8-1 23:43:15

你的设计肯定有问题,不知道你综合的结果是什么;一般时序设计的比较好的电路即使在高频时钟下工作也会很稳定。
我觉得你对于电路的理解还不够,HDL是用来描述电路而不是种编程语言。
另外对于FPGA来说,越简单的描述通常也是越好的。一个状态机的写法肯定有问题了,建议可以看下一些FPGA Coding Style相关的东西。
如果有时间也可以看看流水线相关的内容,这个才是FPGA与其他通用CPU最大的区别。

jay007 发表于 2013-8-2 09:54:39

LZ最好大致理解下RTL到门级的映射关系,一般组合逻辑不要超过5级,跑个百来M是没有问题的

heizenberg 发表于 2013-8-4 18:11:15

楼上正解

lwjconan 发表于 2013-8-4 18:37:22

速度啊,时序约束上会有很大影响,另外就是代码风格的问题了。
楼主的运行速度只有15MHz,确实有点慢状态机搞太大了吗?也不至于吧。。

zlpvch 发表于 2013-8-8 02:00:19

这个得看你怎么用了

tgyd 发表于 2013-8-8 08:03:45

一般组合逻辑不要超过5级

少用组合逻辑,多用同步

qinxg 发表于 2013-8-8 08:39:50

我曾经有过120个状态的一段式状态机, 轻松100M.把大组合逻辑尽量多成流水线的时序逻辑.
看看编译后的时序报告, 里面会说哪个逻辑是瓶颈, 然后把那个逻辑简化为流水线.

wjfblack 发表于 2013-8-9 09:19:15

qinxg 发表于 2013-8-8 08:39 static/image/common/back.gif
我曾经有过120个状态的一段式状态机, 轻松100M.把大组合逻辑尽量多成流水线的时序逻辑.
看看编译后的时 ...

膜拜。。。

Friendz 发表于 2013-8-15 22:10:11

多谢各位的回答,我试试各种可能性,再回来给分。

状态共有40多个,但出错的总在那1~2个,我把它拆分试试。

深海烟花 发表于 2013-8-16 00:18:20

受教了,获益良多
页: [1]
查看完整版本: 请问影响FPGA运行速度的有哪些因素?