我试图在verilog Quartus中为8位2x1 MUX编写代码,但是我在代码中有错误

时间:2018-10-16 17:17:11

标签: verilog quartus

module muxx(M, X, Y, S, SW,LEDR,LEDG)    
(
input [17:0]X,
 input [17:0]Y,
output [15:0]LEDR,
output [7:0]LEDG,
output [7:0]M
);
if
S=0;
M=X;
while if
S=1;
M=Y;
wire [7:0] X = SW[7:0];
wire [7:0] Y = SW[15:8];
wire S = SW[17];
input SW[17];
input[17:0]SW;
muxx ex(.M(LEDG), .S(SW[17]), .X(SW[7:0]), .Y(SW[15:8]));
assign LEDR[7:0] = X;
assign LEDR[15:8] = Y;
assign M[0] = X[0] & ~S | Y[8] & S;
assign M[1] = X[1] & ~S | Y[9] & S;
assign M[2] = X[2] & ~S | Y[10] & S;
assign M[3] = X[3] & ~S | Y[11] & S;
assign M[4] = X[4] & ~S | Y[12] & S;
assign M[5] = X[5] & ~S | Y[13] & S;
assign M[6] = X[6] & ~S | Y[14] & S;
assign M[7] = X[7] & ~S | Y[15] & S;
 endmodule

我正在学习NCE,并且正在参加SE课程,但是我不知道如何编写这个MUX 2对1 8位代码,但是我遇到了以下错误:

  

错误(13411):文本附近的MUXX.v(3)处的Verilog HDL语法错误(
  错误:流程失败:
  错误:Quartus Prime综合失败。 2个错误,0个警告
      错误:虚拟内存峰值:4972兆字节
  错误:处理已结束:2018年10月16日星期二20:53:12
  错误:经过时间:00:00:03
  错误:CPU总时间(在所有处理器上):00:00:03
  错误(293001):Quartus Prime完全编译失败。 4个错误,0个警告

1 个答案:

答案 0 :(得分:1)

您实际上混合了两种不同的端口声明样式,请参见IEEE1800-2017,第ch。 23.2。您需要选择要使用的那个。

ANSI样式:

module muxx   
(
   input [17:0] X,
   input [17:0] Y,
   output [15:0] LEDR,
   output [7:0] LEDG,
   output [7:0] M
);
//...
endmodule

非ANSI风格:

module muxx(M, X, Y, S, SW,LEDR,LEDG);   
   input [17:0] X;
   input [17:0] Y;       
   output [15:0] LEDR;       
   output [7:0] LEDG;
   output [7:0] M;
//...
endmodule