2009-09-09 01:10:48ZIP
[Bug]Verilog的時脈..為什麼都算不對!!!
你在寫Verilog的時候,有的時候程式寫大了..區塊連結變多了..是不是常常發生時脈算不對或是時脈亂掉的問題??
明明你拉了個16MHz的脈波當系統時脈..可是在你加了個除頻器到其他地方後發現系統時脈卻變慢了很多很多呢?
不管程式怎麼改..都改不好的這個問題,心裡一定在暗罵Altera罵到翻過來吧??
別擔心...其實你的程式未必有錯..說不定只是個小小的地方沒注意到...
在Verilog裡面,他有定義你的輸入是要Wire,但是你的輸出可以是Wire或是Reg..但是這樣在Quartus II上這樣是很容易出問題的.
特別是當你的輸出只有1bit卻是Reg形式的輸出的時候,這樣系統有時就會在這裡出問題..
這個問題一般人比較不會發現這個問題..因為若是你的輸出有超過1bit以上使用Reg輸出的話,這個輸出是不會有問題的..
所以你只要回頭找找程式,把每個Symble翻開來,看看只要有1bit的輸出,把他另外令個wire形式的輸出,把原本Reg的輸出透過Wire線輸出就可以解決問題...
不過比較好的還是自己養成習慣..只要有1輸出,通通用成Wire的輸出就不會出問題了..再有問題,你就只好回去查查看是不是自己程式沒寫好嚕..^^
明明你拉了個16MHz的脈波當系統時脈..可是在你加了個除頻器到其他地方後發現系統時脈卻變慢了很多很多呢?
不管程式怎麼改..都改不好的這個問題,心裡一定在暗罵Altera罵到翻過來吧??
別擔心...其實你的程式未必有錯..說不定只是個小小的地方沒注意到...
在Verilog裡面,他有定義你的輸入是要Wire,但是你的輸出可以是Wire或是Reg..但是這樣在Quartus II上這樣是很容易出問題的.
特別是當你的輸出只有1bit卻是Reg形式的輸出的時候,這樣系統有時就會在這裡出問題..
這個問題一般人比較不會發現這個問題..因為若是你的輸出有超過1bit以上使用Reg輸出的話,這個輸出是不會有問題的..
所以你只要回頭找找程式,把每個Symble翻開來,看看只要有1bit的輸出,把他另外令個wire形式的輸出,把原本Reg的輸出透過Wire線輸出就可以解決問題...
不過比較好的還是自己養成習慣..只要有1輸出,通通用成Wire的輸出就不會出問題了..再有問題,你就只好回去查查看是不是自己程式沒寫好嚕..^^
我也遇到同樣的問題,差點被搞瘋掉了!!
感謝大大的文章我才得以解掉這個問題。
真想不透為什麼會有這個問題
不過在其他的編輯軟體上我倒是不知道會不會有這個問題..但在Quartus II就是會有這個問題...
這個問題我也是搞了好久好久才解決的..^^ 2009-10-02 00:50:31