【发布时间】:2017-10-02 11:41:17
【问题描述】:
在 Quartus Prime V16.0 上编译时,我在 Verilog 中遇到了这个模块的问题。目标是如果 8 个总输入位中的任何一个位是 1,则返回一个特定的 8 位数字 [00011000] 的输出。这个 if 语句是否有效?如果没有,有什么更好的实施方法?运算符是否以这种方式返回 1?根据我的研究,它确实如此。
or 运算符的输入是 4 位 A (in[7:4]) 和 4 位 B (in[3:0])
module case3 (in, out);
input [7:0] in;
output [7:0] out;
wire x, y;
assign x = 1;
if (x == or(y, in[7:4], in[3:0]))
assign out[7:0] = 8'b00011000;
endmodule
我的主模块中的函数调用如下所示:
case3 u3(
.in(SW[7:0]),
.out(wire3)
);
Wire3 是一个连线变量,定义为从 Case3 模块检索输出以供进一步使用。
【问题讨论】:
-
很难知道从哪里开始,但我建议回到你的教科书并复习 1)Verilog 原语的用法(你的“或”那里)2)赋值语句的用法 3)总是阻塞。最后,您的问题陈述不完整。当输入全为 0 时会发生什么?即使这是合法的语法,也存在其他逻辑问题。
-
只是添加到 Brian 的评论中,请同时查看您的术语,
case3是不是函数。所以,首先开始阅读有关 verilog hdl 的概念。它不是通用编程语言。 -
如果您的问题得到解决,请标记答案。
标签: if-statement binary switch-statement logic verilog