Я пытаюсь сделать код в Verilog Quartus для 8-битного 2x1 MUX, но у меня есть ошибки в коде
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, и я не знаю, как кодировать этот 8-битный MUX 2-в-1, я пытался кодировать, но получил следующие ошибки:
Ошибка (13411): синтаксическая ошибка Verilog HDL в MUXX.v(3) рядом с текстом (
Ошибка: поток не удалось:
Ошибка: Синтез Quartus Prime был неудачным. 2 ошибки, 0 предупреждений
Ошибка: пиковая виртуальная память: 4972 мегабайта
Ошибка: обработка завершена: вторник, 16 октября 20:53:12 2018
Ошибка: прошедшее время: 00:00:03
Ошибка: общее время процессора (на всех процессорах): 00:00:03
Ошибка (293001): полная компиляция Quartus Prime не удалась. 4 ошибки, 0 предупреждений
1 ответ
Вы фактически смешали два разных стиля объявлений портов, см. IEEE1800-2017, гл. 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