作者jb679123 (straw man)
看板Electronics
標題[問題] verilog bus signal
時間Tue May 26 20:10:05 2015
各位先進好
請教一下一個verilog問題
以下是我的部分程式碼:
always@(posedge CLK)
begin
if(RST)
b <= 1'b0;
else if(in_data[left:right] == 4'd7)
b <= 1'b1;
end
in_data是個10bit暫存器 left和right每個clk會改變數值
這寫法在模擬時就會出錯
我的猜測是參數化的寫法在bus信號不能被接受
不知道這想法是否有錯?
還是有其他寫法可以支援
希望大家不吝指教
謝謝
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.103.109
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1432642208.A.1E0.html
※ 編輯: jb679123 (140.123.103.109), 05/26/2015 20:27:59
1F:→ TripleC: 把所有狀況寫出來. 會改變數值應該連compile都不會過 05/26 23:21
2F:→ TripleC: 喔 我看錯了 變數是在if statement裡面 05/26 23:22
T大有什麼看法嗎?
※ 編輯: jb679123 (140.123.103.109), 05/26/2015 23:26:14
3F:推 kyo547896321: 看看想抓出來看的那些bit的位置有沒有規律或是 05/26 23:44
4F:→ kyo547896321: 固定會發生的某些case,再用判斷式寫在組合邏輯裡吧 05/26 23:45
5F:→ kyo547896321: 而且有4個連續的bit,在10bit裡也只有7種case 05/26 23:47
6F:推 kyo547896321: [9:6][8:5][7:4][6:3][5:2][4:1][3:0]全列出來 05/26 23:50
7F:→ kyo547896321: 另外不建議把判斷的邏輯放在flip-flop裡面 05/26 23:51
8F:→ kyo547896321: 有時候debug會很亂,或是容易出現multiple driver 05/26 23:52
9F:推 kyo547896321: 一點小建議,其他留待版上大大補充 05/26 23:55
感謝K的說明,上敘的部分我都有考慮過,因為抓的信號長度會依某些條件改變
(left right的變量不相同),所以可能沒辦法全部列出
另外K大提到的"不建議把判斷的邏輯放在flip-flop"
不太清楚您的意思是.....說在always block中若是以clk正負源觸發信號的話
裡面不要寫判斷式的意思?
※ 編輯: jb679123 (140.123.103.109), 05/27/2015 00:43:45
10F:→ kyo547896321: 如果長度會改變,那應該就不能只用4'd7來判斷吧 05/27 00:59
11F:→ kyo547896321: 或是其他地方還有判斷式我不曉得,如果left right 05/27 01:00
12F:→ kyo547896321: 變化不會太多情況,還是一個個列舉吧 05/27 01:02
13F:推 kyo547896321: 另外我說的判斷式,指得是在沒有reset下 05/27 01:04
14F:→ kyo547896321: flip-flop把資料推出去的情況,個人是都習慣把 05/27 01:06
15F:→ kyo547896321: 裡面寫成b<=b_next,把b_next用組合邏輯來判斷 05/27 01:07
16F:→ kyo547896321: 太多if else或case在flip-flop裡面就感覺很亂XD 05/27 01:08
17F:→ kyo547896321: 一點coding style的不同而已啦 05/27 01:09
18F:推 Leadgen: 如果你都沒辨法全列出,Compiler也沒辨法全列出呀~ 05/27 08:43
感謝兩位的建議,上面程式碼是個示意部分,原本只想列出bus出問題的部分 sor
如果要列出所有情況是可以的,但因為情況還不少且我有想到一個公式去計算left right
就可以省去逐條列出的方式,所以才會想用參數方式來寫
btw:逐條列出跟參數方式的寫法,合出來的效果(area)哪一種會比較好?
※ 編輯: jb679123 (140.123.103.109), 05/27/2015 13:57:04
19F:推 n052111089: Generate 05/27 17:31
20F:推 mmonkeyboyy: compiler錯誤啊 這情況在於那個是signal 05/29 12:47
21F:→ mmonkeyboyy: 那必需是要有實際連線的 05/29 12:47
22F:→ mmonkeyboyy: 雖然還是老話一句 請不要拿寫高階語言想法來寫 05/29 12:48
23F:→ mmonkeyboyy: 寫法應該是你要寫個狀態機 rst 檢查 移位 05/29 12:49
24F:→ mmonkeyboyy: 你可以select 把幾種組合都寫進去變成comb羅輯 05/29 12:51