2017-04-26 69 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 ;