Использование reg в качестве входа путем подключения его к другому модулю - PullRequest
0 голосов
/ 13 июля 2020

Я использую регистры «TX» и «TX_data_bit» в качестве входных данных в другом модуле, как в приведенных ниже примерах.

module LPT_ASK(input wire clk, 
                    input wire [7:0]Data, 
                    input wire strobe, 
                    output reg TX, 
                    output reg [3:0]TX_data_bit);

reg [7:0]TX_data = 8'b00000000;
reg TX_in_progress = 0;
reg TX_ended = 1;
reg [1:0]strobe_reg;
reg flag;

always @(posedge strobe) begin
    
    TX_data = Data;
    
end

always @(posedge clk) begin

    strobe_reg[0] <= strobe_reg[1];
    strobe_reg[1] <= strobe;
    
    if ((strobe_reg[1] == 1)&&(strobe_reg[0] == 0)) begin
        flag =  1;
    end
    
    if ((flag == 1)&&(TX_in_progress == 0)) begin
        TX_in_progress = 1;
        TX_data_bit = 4'b0000;
        TX = 0;
    end
    
    if ((TX_in_progress == 1)&&(TX_data_bit < 4'b1000)) begin
        TX = TX_data[TX_data_bit];
        TX_data_bit = TX_data_bit + 4'b0001;
    end else begin
        TX_in_progress = 0;
        TX = 1;
        flag = 0;
    end
end
endmodule
module assignerer
(
                    input wire clk, 
                    input wire [7:0]Data, 
                    input wire strobe, 
                    output wire TX_final,
                    output wire [3:0] TX_final_data_bit
);

wire LPT_ASK_to_assignerer;
wire LPT_ASK_to_assignerer2;

LPT_ASK LPT_ASK1
    (
        .clk (clk),
        .Data (Data),
        .strobe (strobe),
        .TX (LPT_ASK_to_assignerer),
        .TX_data_bit (LPT_ASK_to_assignerer2)
    );

    assign TX_final = LPT_ASK_to_assignerer;
    assign TX_final_data_bit = LPT_ASK_to_assignerer2;
endmodule

Ошибок нет, но похоже не работает , потому что на диаграмме осциллограмм в строке ниже нет назначения.

assign TX_final = LPT_ASK_to_assignerer;

Я пытался использовать другие конструкции, как, например. Но компилятор выдает ошибку.

всегда @ (*) TX_final = LPT_ASK_to_assignerer; Ошибка (10137): Ошибка процедурного назначения Verilog HDL в assignerer.v (26): объект «TX_final» в левой части назначения должен иметь переменный тип данных.

На первом рисунке ниже есть некоторые прогресс для модуля «LPT_ASK» в регистрах «TX» и «TX_data_bit». Но когда я пытаюсь назначить этот результат второму модулю в проводе «TX_final», ничего не происходит.

Если я изменю тип данных с провода на reg, ошибка 10137 исчезнет, ​​но изображение останется прежним. Назначения нет.

Надеюсь, я смог правильно представить свою основную идею на второй картинке. Я хочу использовать вывод в качестве ввода в другом модуле и работать с ним.

  1. Элемент списка

enter image description here

введите описание изображения здесь

...