Я не могу понять эту ошибку в моем коде Verilog. Ошибка связана с моим выводом SIGNAL, но я не могу найти его, и я отчаянно пытался исправить это в течение нескольких часов.
module lab4(CLK, RESET, NEXT, PLAYER_A, PLAYER_B, TEST_LOAD, SIGNAL, SCORE_A, SCORE_B, WINNER, STATE, FALSE_START, ADDRESS, DATA);
input CLK;
input RESET;
input NEXT;
input PLAYER_A;
input PLAYER_B;
input TEST_LOAD;
output SIGNAL;
output [3:0] SCORE_A;
output [3:0] SCORE_B;
output [3:0] WINNER;
output [3:0] STATE;
output FALSE_START;
output [2:0] ADDRESS;
output [9:0] DATA;
reg [3:0] STATE;
reg [3:0] WINNER;
reg FALSE_START;
reg SIGNAL;
//CODE BELOW IS IRRELEVANT TO THE PROBLEM
address_generator gen(
.CLK(CLK),
.RESET(RESET),
.ADDRESS(ADDRESS)
);
prandom rand(
.ADDRESS(ADDRESS),
.DATA(DATA)
);
countdown count(
.CLK(CLK),
.RESET(RESET),
.LOAD(TEST_LOAD),
.DATA(DATA),
.DONE(SIGNAL)
);
//CODE ABOVE IS IRRELEVANT TO THE PROBLEM
always @(posedge CLK) begin
if (RESET == 1'b1) begin
STATE = 4'b0001;
SIGNAL = 1'b0;
WINNER = 4'b0000;
end else if (RESET == 1'b0 & NEXT == 1'b1 & STATE == 4'b0001) begin
STATE = 4'b0010;
end else if (RESET == 1'b1 & SIGNAL == 1'b1 & STATE == 4'b0010) begin
STATE = 4'b0011;
SIGNAL = 1'b1;
end else if (RESET == 1'b1 & SIGNAL == 1'b1 & STATE == 4'b0011) begin
STATE = 4'b0100;
WINNER = 4'b1010;
end else if (RESET == 1'b1 & SIGNAL == 1'b1 & STATE == 4'b0011) begin
STATE = 4'b0101;
WINNER = 4'b1011;
end else begin
STATE = 4'b0001;
WINNER = 4'b0000;
FALSE_START = 1'b0;
end
end
endmodule
Ошибка говорит:
Ошибка (( 12014): Net «СИГНАЛУ», который разветвляется на «всегда 0», нельзя присвоить более одного значения Ошибка (12015): Net подается на «Обратный отсчет: счет | ВЫПОЛНЕНО» Ошибка (12015): Net подается "SIGNAL ~ reg0"
Если бы вы могли дать мне любую идею, с чего начать, это было бы здорово! Спасибо!