2017-04-26 4 views
1

Was bedeutet der Verilog ? Betreiber in dem folgenden Code tun?Verilog HDL? Operator

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]); 

Antwort

2

In diesem Code ? ist ein Teil des "Conditional Operator" (?:). Siehe die kostenlose IEEE Std 1800-2012, Tabelle 11-1-Operatoren und Datentypen. Es wird verwendet, um einen Multiplexer zu modellieren. In Ihrem Fall ist first_din die Auswahl und 8'b0 und parity[127:120] sind die Dateneingänge.

+0

Hallo, wie kann ich einen Demultiplexer durch den "Conditional Operator" (?) Modellieren. – vapham

0

Ähnlich wie? : Operator in C, dieser Operator funktioniert so einfach, wenn er sonst blockiert.

b = exp. a ? value_1 : value_2 

gleich zu

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

dies wie eine typische Multiplexer 2-zu-1 ist.

Eingaben: A, B, SEL
Ausgänge: OUT

Funktion:

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

OUT = SEL ? B : A ; 

Achtung: Wenn SEL = Z (hohe Impedanz oder variabel) THEN = OUT A
Dies ist der Hauptunterschied mit dem typischen Multiplexer 2 zu 1

Die Funktion des typischen Multiplexers 2-zu-1 ist:

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