我正在尝试对八进制(8位输入(2对1多路复用器进行编码。这是我的代码:
module octal2to1mux(input [7:0] a, input [7:0] b, input s, output w);
assign w= (s=1'b0) ? a:
(s=1'b1) ? b: 1'bx;
endmodule
当我尝试编译时,我得到以下错误:
octal2to1mux.sv(3): Illegal assignment expression in continuous assignment.
如果s=0,我只想得到w=a,如果s=1,我只想要得到w=b。a和b都是8位输入。我在测试台上使用了两次这个模块。
对可合成多路复用器进行编码的推荐方法是:
module octal2to1mux (input [7:0] a, input [7:0] b, input s, output [7:0] w);
assign w = (s) ? a : b;
endmodule
它更简单、更容易理解并修复您的语法错误。此外,如果s
是X
或Z
,则w
将是X
;不需要将其明确地设置为CCD_ 6。
注意,w
必须与a
和b
输入具有相同的位宽。
输出w
的宽度应为8。正如@Serge评论的那样,在进行比较时,应该使用==
或===
(不可合成(。