2017-04-26 33 views
1

什麼Verilog的運算符在下面的代碼中做了什麼?Verilog HDL?運營商

input first_din; 
input [7:0] din; 
output [127:0] parity; 
reg [127:0] parity; 
wire [7:0] feedback; 

assign feedback = din^(first_din ? 8'b0 : parity[127:120]); 

回答

2

在此代碼,?是 「條件運算符」(?:)的一部分。是指遊離IEEE標準1800至2012年,表11-1運營商和數據類型。它用於模擬多路複用器。在你的情況,first_din是選擇和8'b0parity[127:120]是數據輸入。

+0

嗨,我如何可以模擬由「條件運算符」解複用器(?)。 – vapham

0

類似? :C中的運算符,該運算符在else塊中工作簡單。

b = exp. a ? value_1 : value_2 

等於

if (exp. a)//if true 
    b = value_1; 
else 
    b = value_2; 
0

這就如同一個典型的多路轉換器2對1。

輸入:A,B,SEL
輸出:OUT

功能:

IF (SEL = 1) THEN OUT = B , ELSE OUT = A 

OUT = SEL ? B : A ; 

警告:如果SEL = Z(高阻抗或浮動)THEN OUT = A
這是與典型多路複用器2到1的主要區別是:
(典型多路複用器2到1的功能是:

IF (SEL = 1) THEN OUT = B , ELSE IF(SEL = 0) OUT = A ;