Re: [問題] 請問VHDL的運算速度以及Count的用法

看板Programming作者 (big)時間14年前 (2010/07/07 19:48), 編輯推噓2(2014)
留言16則, 2人參與, 最新討論串2/2 (看更多)
我來解釋看看 你附上的程式,我想是放置在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

07/07 22:45, , 1F
感謝回答,其實我還有模擬方面的問題
07/07 22:45, 1F

07/07 22:47, , 2F
雖然程式可以燒到版子上,但是看模擬的
07/07 22:47, 2F

07/07 22:48, , 3F
時候,只要一遇到有使用IP的地方就無法
07/07 22:48, 3F

07/07 22:48, , 4F
跨過,但是我把IP個別拿出來測試的結果
07/07 22:48, 4F

07/07 22:48, , 5F
是可以用的
07/07 22:48, 5F

07/07 22:49, , 6F
所以我不知道該如何從模擬去下手
07/07 22:49, 6F

07/07 22:50, , 7F
上面的可以用是指把各別IP拿出來使用
07/07 22:50, 7F

07/07 22:51, , 8F
燒在版子上後 結果是對的
07/07 22:51, 8F

07/07 23:49, , 9F
一般而言 不致於使用到ip會無法模擬才是
07/07 23:49, 9F

07/07 23:50, , 10F
不過 xilinx我不熟悉 我本身是用ACTEL
07/07 23:50, 10F

07/07 23:50, , 11F
不過模擬應該都是相同的才是
07/07 23:50, 11F

07/07 23:50, , 12F
會不會是因為 testbench沒做好?
07/07 23:50, 12F

07/08 14:59, , 13F
使用IP可以模擬,但是一遇到有IP的地方
07/08 14:59, 13F

07/08 14:59, , 14F
他就無法顯示出結果
07/08 14:59, 14F

07/08 14:59, , 15F
例如我丟16去開根號
07/08 14:59, 15F

07/08 15:00, , 16F
不管怎麼跑輸出永遠都是0
07/08 15:00, 16F
文章代碼(AID): #1CD6cV4v (Programming)
文章代碼(AID): #1CD6cV4v (Programming)