Verilog "Net 'SIGNAL", который выдает "всегда0", нельзя присвоить более одного значения - PullRequest
0 голосов
/ 14 апреля 2020

Я не могу понять эту ошибку в моем коде 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"

Если бы вы могли дать мне любую идею, с чего начать, это было бы здорово! Спасибо!

...