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