Verilog:if if to Casex转换

时间:2017-09-16 22:21:30

标签: if-statement switch-statement case verilog

reg A, B, C, D, E, F, G, H;
always@(*)
if (A) H = F & G;
else if (B) H = F | G;
else if (C) H = F ^ G;
else H = D & E;

我必须用casex语句替换这些语句。有人可以帮我解决代码吗

我的代码是错的......

reg A, B, C, D, E, F, G, H;
always@(*)
begin
casex(A or B or C or D or E or F or G or H)
A: H= F & G;
B: H = F | G;
C: H = F ^ G;
default: H = D & E;
endcase

1 个答案:

答案 0 :(得分:1)

A or B or C在语法上是错误的,逻辑意图也是错误的,所以它不起作用。因此,您需要使用以下内容:

reg A, B, C, D, E, F, G, H;
always@(*)
begin
  casex(1'b1)
   A: H= F & G;
   B: H = F | G;
   C: H = F ^ G;
   default: H = D & E;
  endcase
end

原始帖子中的代码代表多路复用器。上面显示了使用“case”语句表达它的标准方法。代码表示如果任何变量'A','B'或'C'变为'1',相应的语句将在模拟中执行。