Re: [問題] verilog有關輸入值未定時,assign輸出值
※ 引述《lueichun (no anonymous)》之銘言:
: 如果今天在輸入值尚未決定時,輸出值就用預設值q輸出,否則就將輸入值直接輸出,
: 那寫成以下這樣:
: always@(input or q)
: begin
: if(input==4'bxxxx)
: output=q;
: else
: output=input;
: end
: 會出現bug,if條件會進不去,那這樣的話該如何修改if( )內的判斷式呢??
以RTL-level的角度
==(兩個等於)是logical equality operator
==| 0 1 X Z
--+---------
0 | 1 0 X X
1 | 0 1 X X
X | X X X X
Z | X X X X
所以就算你input為X
條件判斷式運算結果為X
自然就不會執行
而===(三個等於)
是case equality operator
===| 0 1 X Z
---+---------
0 | 1 0 0 0
1 | 0 1 0 0
X | 0 0 1 0
Z | 0 0 0 1
我想這個看起來好像比較接近你要的意思
不過這個通常只是用來跑模擬或是debug用的
有可能無法合成出電路
若是實際設計電路時
就算有其他非理想的情況發生
通常都會歸到最後那個else去處理
個人淺見
以上
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.211.109
※ 編輯: lovepy 來自: 140.117.211.109 (03/29 13:40)
討論串 (同標題文章)