推 hank821017: 把x[cnt]後面的for全刪掉就行了 11/02 10:49
→ gapuu: 請問這樣不會產生latch嗎 11/02 12:05
推 hsucheng: for的意義是複製電路,迴圈請改用fsm 11/02 12:21
→ hsucheng: 別把verilog當c寫 11/02 12:22
→ hank821017: 印象中sequential這樣沒事 comb的才會出現latch 11/02 12:59
→ gapuu: fsm還在熟悉中 比較習慣一個階段完成後再給另一個階段啟動 11/02 13:15
→ gapuu: 號 感謝兩位的回答~ 11/02 13:16
→ hsucheng: 一個階段完成之後做下一個,不就是fsm? 11/02 13:50
→ hsucheng: 你的always 都是同時執行,這樣寫又何來另外啟動? 11/02 13:50
→ hsucheng: verilog不能用你”習慣”的c語言寫 這是硬體 11/02 13:53
推 st955272: !rst 11/02 18:36
推 htps0763: 你可以試試再for迴圈裡寫if else,就會變成數個多工器, 11/03 11:14
→ htps0763: for迴圈只能用來複製電路所以執行次數不能是動態的 11/03 11:14
→ htps0763: 不過你這是循序,所以沒寫就會變成維持,組合電路就不 11/03 11:16
→ htps0763: 行了 11/03 11:16
推 bakerly: 針對你對合成latch的疑問,verilig always block 裡的訊 11/03 12:23
→ bakerly: 號不寫預設就是維持,所以如果寫齊只是為了寫出自已給自 11/03 12:24
→ bakerly: 己,那和預設是一樣的,不會影響到會不會合出latch. 11/03 12:24
推 rbufghj9713: 負緣出發reset好像一定要if(!rst),原因我不太清楚 11/03 14:19
推 bakerly: 因為負緣觸發,當負緣發生後進這個always執行,此時rst一 11/03 14:55
→ bakerly: 定為0,你寫if(rst)永遠不會成立等於沒寫,所以一定會寫i 11/03 14:55
→ bakerly: f(!rst)。話說原po這裡寫錯了,會沒有reset值。 11/03 14:55
→ gapuu: 啊真的 謝謝提醒 11/03 17:41
※ 編輯: gapuu (223.140.80.59), 11/03/2018 17:42:15
→ gapuu: 修正:rst -> !rst 11/03 17:43
推 mmonkeyboyy: for loop不能用來動態增加元件 11/03 22:51
→ mmonkeyboyy: 最多只能用來叫出已有元件 11/03 22:51
→ mmonkeyboyy: 你每一行code 如果是可以被synthesize 都是有對應元 11/03 22:53
→ mmonkeyboyy: 件 所以一般我都建議沒事不要用for 11/03 22:54
推 mmonkeyboyy: incomplete assignment 在combinational才有latch 11/03 23:02
→ mmonkeyboyy: 遇到可以用開頭default避掉(但也不建議) 11/03 23:03
→ mmonkeyboyy: 一般都寧願多寫點廢code少出錯 11/03 23:03
→ mmonkeyboyy: 在sequential裡 因為你本來就reg在維持了 所以可以 11/03 23:04
→ mmonkeyboyy: 不用管 另一個小技是在sequential logic裡 11/03 23:05
→ mmonkeyboyy: 一般 通常情況下 你只要寫你想變化的就好 11/03 23:05
→ mmonkeyboyy: 雖然大家現在都用SV啦 但有些語法其實不太適合硬體 11/03 23:07
→ mmonkeyboyy: 還是要有些區別 那些比較專屬verification用 11/03 23:07
→ gapuu: 學長說sv大部份都是驗證在用.. 所以其實變主流了嗎 11/03 23:26
推 mmonkeyboyy: 是subset superset的問題了 11/03 23:34
→ hsucheng: 套有一位版友說的,用for不是高手就是新手 11/04 00:11
推 mmonkeyboyy: 也沒這麼難懂 概念是需要把多行並一行的在用for 11/04 08:14
推 star99: 你!reset 那裡少了一個end 那樣會有些合成問題 11/19 02:04