Verilog中的模块不响应输入信号

Verilog中的模块不响应输入信号,verilog,hdl,shift-register,Verilog,Hdl,Shift Register,我当前的任务是创建一个内存驱动程序。具体的问题是,我有一个移位寄存器,用于将四个8位字串联成一个32位,然后将其发送到输出。模块在自身模拟时工作,但连接到其他模块时无法响应。代码如下: 移位寄存器代码: module shiftReg ( data_8, clk, valid1, rstn, data_32, valid_fifo, count, REGA, REGB, REGC, REGD ); input wire [7:0] data_8; input wire valid1; inp

我当前的任务是创建一个内存驱动程序。具体的问题是,我有一个移位寄存器,用于将四个8位字串联成一个32位,然后将其发送到输出。模块在自身模拟时工作,但连接到其他模块时无法响应。代码如下:

移位寄存器代码:

module shiftReg (

data_8,
clk,
valid1,
rstn,
data_32,
valid_fifo,
count,
REGA,
REGB,
REGC,
REGD
);

input wire [7:0] data_8;
input wire valid1;
input wire clk;
input wire rstn;
output reg [31:0] data_32;
output reg valid_fifo;
output reg [3:0] count;

output reg [7:0] REGA;
output reg [7:0] REGB;
output reg [7:0] REGC;
output reg [7:0] REGD;


initial 
begin
    count <= 4'b0001;
    REGA <= 8'b0;
    REGB <= 8'b0;
    REGC <= 8'b0;
    REGD <= 8'b0;
    valid_fifo <= 1'b0;
end

always @(posedge valid1)
begin
    if(~rstn)
        begin
            count = 4'b0001;
            REGA = 0;
            REGB = 0;
            REGC = 0;
            REGD = 0;
        end
else if(valid1 == 1'b1)
            begin
                case (count)
                    4'b0001: REGA = data_8;
                    4'b0010: REGB = data_8;
                    4'b0100: REGC = data_8;
                    4'b1000: REGD = data_8;
                endcase
                    valid_fifo = 1'b0;
            end
                if(count == 4'b1000)
                    begin

                        data_32 = {REGD,REGC,REGB,REGA};
                        valid_fifo = 1'b1;
                        count = 4'b0001;
                    end
            else 
                begin
                        count = count << 1;
                end
    end
endmodule

出于某种原因,当我将移位寄存器与其他所有内容放在一起时,
valid==1'b1
条件没有执行。我真的没什么主意了,希望有人能看看它,给我一个启示。

在合成过程中,你可能会得到警告,你正在使用
有效的信号,它没有驱动程序。这是因为在
模块声明中,您定义了
VALID1\u AT
signal(注意
信号名称中缺少)。这就是移位寄存器中的
valid1
根本不被驱动的原因

您应该更改:

.valid1(VALID_1_AT)
进入:

让它发挥作用

.valid1(VALID_1_AT)
.valid1(VALID1_AT)