learningAVR 发表于 2013-6-5 12:58:49

FPGA程序时好时坏

最近在用x家的FPGA做一个项目,程序算是写出来了,感觉逻辑上应该没有问题了,但是烧进去后,老是时好时坏,用逻辑分析仪发现是不行的时候一般都停在一个状态完成然后就停止在那里了,不进入下一个状态,各位大虾有遇见过这种情况吗,这要怎么解决

流氓马 发表于 2013-6-5 13:11:34

是因为晶振的问题吗?

learningAVR 发表于 2013-6-5 13:15:06

流氓马 发表于 2013-6-5 13:11 static/image/common/back.gif
是因为晶振的问题吗?

应该不是,这块板的硬件已经验证过了,没有问题

learningAVR 发表于 2013-6-5 13:28:23

还有,flip flop对timing会有影响吗

wye11083 发表于 2013-6-5 13:28:55

好好仿真。程序问题。

learningAVR 发表于 2013-6-5 13:54:51

额。。。FPGA真是个神奇的东西,还可以时好时坏的

lans0625 发表于 2013-6-5 14:52:46

这是FPGA具有智能的表现。{:lol:}{:lol:}

NJ8888 发表于 2013-6-5 15:16:06

可能是那个边沿相对时钟没处理好,亚稳态了

yuanbao502 发表于 2013-6-5 16:40:30

有没有时序约束??

learningAVR 发表于 2013-6-5 21:51:40

NJ8888 发表于 2013-6-5 15:16 static/image/common/back.gif
可能是那个边沿相对时钟没处理好,亚稳态了

这种一般要用什么方法解决呢,是不是加个触发器?我看有一些项目的代码,他们从外面引进来的一些信号线都经过了两三个FDRSE才用到状态机里面

learningAVR 发表于 2013-6-5 21:55:25

yuanbao502 发表于 2013-6-5 16:40 static/image/common/back.gif
有没有时序约束??

额,可以说基本上没加,我的项目是在之前的基础上修改的,原来的那部分代码的已经有约束了,但我增加的那部分没有,还是新手,约束还懂得不多。。。

learningAVR 发表于 2013-6-5 21:57:11

lans0625 发表于 2013-6-5 14:52 static/image/common/back.gif
这是FPGA具有智能的表现。

{:funk:} 搞了这么就感觉还是在被fpga虐

wangjun403 发表于 2013-6-6 00:41:44

你有没有仿真,这很关键

hyf88 发表于 2013-6-6 05:51:56

用ModelSim仿真看看

深海烟花 发表于 2013-6-6 09:03:39

learningAVR 发表于 2013-6-5 13:54 static/image/common/back.gif
额。。。FPGA真是个神奇的东西,还可以时好时坏的

同样的程序烧到不同的板子表现就不一样,,,,而且每次还有变化.

learningAVR 发表于 2013-6-6 13:48:42

wangjun403 发表于 2013-6-6 00:41 static/image/common/back.gif
你有没有仿真,这很关键

有,我用ise里面的isim仿的,是能自动跳到下一状态的,关键是程序时好时坏,而不是一直都有问题。

learningAVR 发表于 2013-6-6 13:51:46

解决了,在其中的用于状态跳转条件的一根线上串了3个FDRSE,然后才把线引导状态机里面就没问题了。估计就是8楼说的亚稳态问题八。

zkf0100007 发表于 2013-6-7 23:50:58

不稳定除了要考虑亚稳态以外,还要看时序是否收敛,是否满足运行频率,另外,一定要GCLK。如果用非GCLK的话,也有可能出现不稳定

learningAVR 发表于 2013-6-11 13:04:52

zkf0100007 发表于 2013-6-7 23:50 static/image/common/back.gif
不稳定除了要考虑亚稳态以外,还要看时序是否收敛,是否满足运行频率,另外,一定要GCLK。如果用非GCLK的话 ...

额。。。貌似时序不算很收敛,ise给的timing score有200w左右{:sweat:}

bob_lee 发表于 2013-6-11 17:26:54

最近我也遇到的,我是用一段式写的一个比较烦的状态机出现的。我用逻辑分析仪把状态机信号印出来采集发现状态机进入了一个不存在的状态,我也加了default来完善case语句,所以我也头疼,没道理的事。至今也没解决,有时候吧两个状态的位置调换一下,就不死机了,FPGA真是个神奇的东西。后来我发现我有几点不足,一个是我不会加约束。最近在看这方面东西,还一个是感觉要用三段式状态机拆开比较好,因为每个状态机里面的东西比较多。第三个也是我最担心的,我在很多状态里面都用到乘法“*”运算,功能没问题,但是感觉偶尔有算不完全的情况,我是寄存器和常数相乘。还是16位的乘法,编译没问题,但是感觉在一个周期做乘法实在不靠谱,最近想换算法,但是不知道乘法该怎么处理。我就说说我的郁闷指出,FPGA刚接触,感觉太烦人了!不过搞起来挺有意思的

learningAVR 发表于 2013-6-12 14:30:01

bob_lee 发表于 2013-6-11 17:26 static/image/common/back.gif
最近我也遇到的,我是用一段式写的一个比较烦的状态机出现的。我用逻辑分析仪把状态机信号印出来采集发现状 ...

有同感,我接触FPGA算起来也有一年了,过去的一年里,靠着几本vhdl的书和无数的datasheet,断断续续地用x家的spartan6做了一些外围器件的驱动,像CMOS摄像头、ddr2.ddr3、sd卡、vga、adc等等。这些都只是按照手册把时序写好就行,用到的状态机也很简单,我也是基本上靠if elsif else就搞定了,状态机这些基本上没有考虑过,神马timing constrain 也不懂。一直到最近这几个月接触到需要用到复杂状态跳转的状态机,我还是之前那种方法来做,终于这次碰了一鼻子灰,写出来的状态机老是出现莫名其妙的错误,各种时好时坏,明明这次可以了,调整一下其中的一个参数就又不行了。这次总算要好好地看一下这些东西了,不然只能一直在FPGA门口徘徊了。

bob_lee 发表于 2013-6-12 15:14:56

learningAVR 发表于 2013-6-12 14:30 static/image/common/back.gif
有同感,我接触FPGA算起来也有一年了,过去的一年里,靠着几本vhdl的书和无数的datasheet,断断续续地用x ...

呵呵,我比你还没入门才三个月吧,就这个项目开始的。ddr2/3都还不懂,不过状态机写过都没啥问题,就这次太大了问题莫名其妙的多,也是在看书中,对了以后有ddr方面的问题就要请教你了啊。我们用sram 贵,不过控制简单。开发快。以后降成本,我还没考虑呢,不过现在忙的焦头烂额的没时间想了。

learningAVR 发表于 2013-6-12 15:32:42

bob_lee 发表于 2013-6-12 15:14 static/image/common/back.gif
呵呵,我比你还没入门才三个月吧,就这个项目开始的。ddr2/3都还不懂,不过状态机写过都没啥问题,就这次 ...

共勉之!

7802848 发表于 2013-6-15 12:22:59

状态机死机了
fpga不是那么容易搞的,fpga的.v .vhd也不叫程序

yanglishanlctu 发表于 2013-6-17 14:11:17

肯定是时序问题,好好仿真,注意不同时钟域之间的数据连接。

zouyf12 发表于 2013-6-19 09:35:22

硬件描述语言不是程序,程序你怎么写只要语法没错都可以编译过,也可以执行。   但是硬件描述语言是描述一个具体的电路的, 如果你描述的电路逻辑根本无法实现(一般是描述的逻辑存在歧义), 那综合出来的东西可能和你想象的天差地别,
页: [1]
查看完整版本: FPGA程序时好时坏