首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连续赋值中的赋值表达式非法。Verilog Octal 2到1复用器

连续赋值中的赋值表达式非法。Verilog Octal 2到1复用器
EN

Stack Overflow用户
提问于 2020-07-26 20:17:43
回答 2查看 112关注 0票数 0

我正在尝试编写一个八进制(8位输入)2对1多路复用器。下面是我的代码:

代码语言:javascript
复制
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

当我尝试编译时,我得到以下错误:

代码语言:javascript
复制
octal2to1mux.sv(3): Illegal assignment expression in continuous assignment.

如果是s=0,我只想得到w=a;如果s=1,a和b都是8位输入,我只想得到w=b。我在testbench中使用了这个模块两次。

EN

回答 2

Stack Overflow用户

发布于 2020-07-31 19:14:38

编写可合成多路复用器的推荐方法是:

代码语言:javascript
复制
module octal2to1mux (input [7:0] a, input [7:0] b, input s, output [7:0] w);
    assign w = (s) ? a : b;
endmodule

它更简单,更容易理解,并修复你的语法错误。此外,如果sXZ,则w将为X;不需要将其显式设置为X

请注意,w必须与ab输入的位宽相同。

票数 1
EN

Stack Overflow用户

发布于 2020-07-27 16:44:23

输出w的宽度应该是8。正如@Serge评论的那样,在进行比较时,应该使用===== (不可合成)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63100017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档