verilog中的三目運算子

2021-09-28 19:17:59 字數 1263 閱讀 1142

發表於 2012-9-25 21:18 | 只看該作者

第一種好。

if else的邏輯是:只要條件不符合,就走else路。

試想如果上級電路出錯,出現sel=1'bx的時候,那麼**(2)的c就會走else路=b。

而? :的執行結果跟實際電路更接近:連控制端sel都是不定值了,那c毫無疑問地應該是x,除非a=b。

總之,**(1)在綜合結果、資源利用等方面和(2)是完全一致的,但(1)的前仿結果跟後仿、跟實際電路更接近。

發表於 2012-10-1 09:46 | 只看該作者

編碼規範嚴格的企業裡,是規定要用第二種的,

可靠性比第一種高,不容易寫錯

請教各位大蝦,關於verilog中三目運算子的用法

就是這個 out=s?a:b;這個用法只能用在assign中嗎?謝謝各位了

well_fish (2010-7-12 11:39:09)

always initial都可以

gdarboux (2010-7-12 17:17:28)

樓上正解

shxr (2010-7-13 09:21:40)

那能夠用非阻塞賦值如「out<=s?a:b;」嗎?

mosfet (2010-7-13 16:58:17)

回樓上可以你這相當於 assign out_t=s?a:b; always@(...) out<=out_t;

xinyuliujian (2010-7-14 17:06:17)

謝謝!指點

neptune1983 (2010-7-14 20:24:15)

這條語句就相當於乙個if---else語句

注意:if語句和case語句都只能用於always語句內部,如果要在always語句之外應用條件語句,可用三目運算子:如下:

assign data = ( sel ) ? a : b ;

三目運算子

1 概念 根據不同的條件,執行不同的操作 返回不同的值。條件1?值1 或操作1 如果滿足條件 1,就返回值 1或執行操作1 條件2?值2 或操作2 否則,如果滿足條件 2,就返回值 2或執行操作2 總結 表示式 閏年 平年 多種條件 條件 1?值1 條件2?值 值3例子 1 輸入星期四 就輸出 班級...

三目運算子

單目運算子 3 雙目運算子 3 4 三目運算子 格式 表達關係式 表示式1 表示式2 如果條件為true,運算後的結果是表示式1 如果條件為false,運算後的結果是表示式2 比較表示式 結果是乙個boolean型別 執行流程 根據比較表示式的計算返回乙個true或者false。如果是true,就把...

三目運算子

1.用控制台輸入3個整數,必須使用三目運算子使其顯示出最大值。int a,b,c console.writeline 請輸入第1個數 a int.parse console.readline console.writeline 請輸入第2個數 b int.parse console.readline...