看板 Electronics 關於我們 聯絡資訊
常常在Verilog有時會有latch作怪 通常是因為case或是if寫得不完整 但是以下本人設計的狀態機output已經將case內的output每一項都列出來了,卻發現仍有 latch產生 但產生的卻不是全部變數,反而是其中一個,關於此always內所有變數的波行顯示出來 A=1,但OUT卻顯示為0,其他變數則正常無誤... 請問有哪位好心大大能解釋一下,謝謝! always@(CS or B) case(CS) ST0:begin A=0;OUT=B; end ST1:begin if(B==C) begin A=1; OUT=B; end else begin A=0; OUT=B; end end ST2:begin A=A;OUT=A;end endcase CS為狀態機目前state狀態,B會隨著現在STATE不同而改變 模擬結果OUT沒有LATCH,反而A產生LATCH 完整版(若需要進一步資訊再看,整行註解部分刪掉即為完整程式碼,使用鍵盤為input): http://www.mediafire.com/?al59d3uol347ua4 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.190.178 ※ 編輯: dinex 來自: 114.34.25.243 (06/24 02:12)
b9002053:a不能等於a 06/24 02:21
dinex:那是要刪掉?這樣更有LATCH吧(每CASE內指令數不是要相同?) 06/24 02:31
※ 編輯: dinex 來自: 118.160.190.178 (06/24 02:50)
Pash77:sensitivity list 沒把握寫全就用 "*" 代替就好 06/24 03:29
Pash77:再多看幾次,也許你就知道少了哪一個 06/24 03:29
dinex:本人所使用ISE若上述內容沒寫足似乎會自動補... 06/24 06:37
dinex:我指的是sensitive list 06/24 06:51
ViewMoon:你可以寫 A=A 呀, 只是寫了等於沒寫, 既然等於沒寫, 你就 06/24 07:11
ViewMoon:知道為什麼會是 latch 了 06/24 07:12
ViewMoon:更正, 你的完整版, m=m;n=n; 留著會有 comb loop 06/24 08:48
ViewMoon:comment out 掉會有 latch 06/24 08:48
dinex:謝謝大大們幫忙,本人把ST2重複ST1寫法,但OUT=A就好了:) 06/24 08:58
sneak: 更正, 你的完整版, https://muxiv.com 08/13 19:14
sneak: sensitivity https://daxiv.com 09/17 23:08