作者bearpower (big)
看板Programming
标题Re: [问题] 请问VHDL的运算速度以及Count的用法
时间Wed Jul 7 19:48:45 2010
我来解释看看
你附上的程式,我想是放置在process里面吧?
如果是放置再process里面的话,基本上,再cnt2=1000时,
你所要做的事情会全部做完
那您提到用VHDL与Matlab做差异很大,
由於你未将要做的运算列出来,这会影响很大
不过,这主要牵涉到您是使用signal还是variable
如果是signal,则这个时间的用的值会是上一个时间的点值(因为是flip-flop)
例如:你要写 A <= B;
C <= A;
虽然是同时做完,不过结果不会变成 C <= B;,因为是flip-flop,所以会差一个CLOCK
如果是variable的话,那就会有delay-time,这就不一定来得及做完了。
再者,您使用到加减乘除以及开根号,(如果可以合成的话)
基本上都很耗时间(or耗clock),也就是说,可能在一个CLOCK里面无法即时做完,
这也可能是与matlab误差来源,所以建议您可以用模拟来检查时序与资料看看
应该很容易可以找出问题。
个人浅见,如有错误,欢迎讨论。
※ 引述《ga006736 (cloudking)》之铭言:
: 目前我是用ADC来撷取外部讯号
: if Khertz_800'event and Khertz_800= '1' then --800K的频率撷取一次
: ar1(cnt1) <= ("0000"& ADC2IN(12 downto 1));
: cnt1 <= cnt1 + 1;
: if cnt1 = 20 then
: 这边开始做运算,然後驱动另一个cnt
: 但是下面存的直相当多所以我是用变数来存
: xpoint := data1(32 downto 1);--data1是我在这个cnt内运算的结果
: cnt1<= 1;
: cnt2<= cnt2 + 1;
: if cnt2 = 1000 then
: 这边开始做相当多的运算
: 开根号与加减乘除
: 最後将我所求得的值丢至LCM观看
: LCM <= data2;--data2是最後运算的结果
: cnt2<= 1;
: end if;
: end if;
: end if;
: 我想请教的是,我後面一大串的运算
: 能够在我cnt2变为1之前执行完成吗?
: 因为我用MATLAB跑的结果跟用VHDL跑出来的结果差异蛮大的
: 想说是不是运算时间拖的过长,导致结果错误
: 如果有人有写过类似程式 也麻烦请提供我一些意见 谢谢
: ps:因为程式有点冗长,所以我尽量简化
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.235.70
1F:推 ga006736:感谢回答,其实我还有模拟方面的问题175.180.225.163 07/07 22:45
2F:→ ga006736:虽然程式可以烧到版子上,但是看模拟的175.180.225.163 07/07 22:47
3F:→ ga006736:时候,只要一遇到有使用IP的地方就无法175.180.225.163 07/07 22:48
4F:→ ga006736:跨过,但是我把IP个别拿出来测试的结果175.180.225.163 07/07 22:48
5F:→ ga006736:是可以用的175.180.225.163 07/07 22:48
6F:→ ga006736:所以我不知道该如何从模拟去下手175.180.225.163 07/07 22:49
7F:→ ga006736:上面的可以用是指把各别IP拿出来使用175.180.225.163 07/07 22:50
8F:→ ga006736:烧在版子上後 结果是对的175.180.225.163 07/07 22:51
9F:→ bearpower:一般而言 不致於使用到ip会无法模拟才是 220.132.235.70 07/07 23:49
10F:→ bearpower:不过 xilinx我不熟悉 我本身是用ACTEL 220.132.235.70 07/07 23:50
11F:→ bearpower:不过模拟应该都是相同的才是 220.132.235.70 07/07 23:50
12F:→ bearpower:会不会是因为 testbench没做好? 220.132.235.70 07/07 23:50
13F:推 ga006736:使用IP可以模拟,但是一遇到有IP的地方 203.68.164.75 07/08 14:59
14F:→ ga006736:他就无法显示出结果 203.68.164.75 07/08 14:59
15F:→ ga006736:例如我丢16去开根号 203.68.164.75 07/08 14:59
16F:→ ga006736:不管怎麽跑输出永远都是0 203.68.164.75 07/08 15:00