尝试在Verilog中将18个输入开关分配到6个3位变量中

时间:2017-09-24 05:00:30

标签: verilog

我正试图从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语法错误”[“;期望操作数”。 我错过了什么?我已经搞砸了一段时间,但我仍然没有得到我做错的事。

2 个答案:

答案 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;