我正试图从18输入开关平均分配3位变量。以下是我到目前为止所做的事情:
module part2(U, V, W, X, Y, Z, S, SW, M);
input [2:0]U, V, W, X, Y, Z, S;
input [17:0]SW;
wire[2:0]U, V, W, X, Y, Z;
assign U = SW[2:0];
assign V = SW[5:3];
endmodule
但是,当我尝试编译时,我收到错误“文本附近的HDL语法错误”[“;期望操作数”。 我错过了什么?我已经搞砸了一段时间,但我仍然没有得到我做错的事。
答案 0 :(得分:0)
您遇到的问题是您从未声明过M
端口。您使用非常旧的Verilog-1995语法来声明您必须多次重复端口名称的端口。使用所谓的 ANSI样式的端口标头,它将减少这样的错误。
module part2(
input [2:0]U, V, W, X, Y, Z, S,
input [17:0]SW,M);
wire[2:0]U, V, W, X, Y, Z;
assign U = SW[2:0];
assign V = SW[5:3];
endmodule
答案 1 :(得分:0)
您尚未在声明中声明端口M
。
您需要将其设为input/output
。
为了您的目的,在6个3位网络中平均分割18位SW
,您可以使用流媒体运算符,如下所示。
assign {>>{U, V, W, X, Y, Z}} = SW;