PISO 寄存器输出不符合预期
PISO register output is not as expected
我在 PISO verilog 寄存器中遇到问题。
下面是我的代码
`timescale 1ns / 1ps
module PISO(
input clk,
input load,
input [3:0] d,
output reg Qout);
reg [3 : 0]Q;
always @ (posedge clk)
begin
if ( load )
Q <= d;
else
begin
Qout <= d[3];
Q<= { Q[2:0] , 1'b0 };
end
end
endmodule
和我的测试平台
`timescale 1ns / 1ps
module PISO_tb();
PISO uut(clk,load,d,Qout);
reg clk;
reg load;
reg [3:0]d;
wire Qout;
initial begin
clk=0;
forever #5 clk = ~clk;
end
initial begin
load = 1;
d[0] = 1'b0;
d[1] = 1'b1;
d[2] = 1'b0;
d[3] = 1'b1;
#6 load = 0;
end
endmodule
它没有正常工作,请帮助我进行测试?因为我觉得verilog代码没问题,应该可以正常使用。
您希望 Qout
信号成为移位寄存器 (Q
) 的输出而不是输入,以便输出切换而不是保持在 1。更改:
Qout <= d[3];
至:
Qout <= Q[3];
我在 PISO verilog 寄存器中遇到问题。 下面是我的代码
`timescale 1ns / 1ps
module PISO(
input clk,
input load,
input [3:0] d,
output reg Qout);
reg [3 : 0]Q;
always @ (posedge clk)
begin
if ( load )
Q <= d;
else
begin
Qout <= d[3];
Q<= { Q[2:0] , 1'b0 };
end
end
endmodule
和我的测试平台
`timescale 1ns / 1ps
module PISO_tb();
PISO uut(clk,load,d,Qout);
reg clk;
reg load;
reg [3:0]d;
wire Qout;
initial begin
clk=0;
forever #5 clk = ~clk;
end
initial begin
load = 1;
d[0] = 1'b0;
d[1] = 1'b1;
d[2] = 1'b0;
d[3] = 1'b1;
#6 load = 0;
end
endmodule
它没有正常工作,请帮助我进行测试?因为我觉得verilog代码没问题,应该可以正常使用。
您希望 Qout
信号成为移位寄存器 (Q
) 的输出而不是输入,以便输出切换而不是保持在 1。更改:
Qout <= d[3];
至:
Qout <= Q[3];