|
100资产
模块代码:module fpga_rst(
input clk,
input rst,
output [7:0] dout
);
reg [7:0] data = 8'h5a;
always @ (posedge clk or negedge rst)begin
if(rst==1'b0)begin
data <= 8'h0;
end
else begin
data <= data + 1;
end
end
assign dout = data;
endmodule
测试代码:
module tb_fpga_test;
reg clk;
reg rst;
wire [7:0] dout;
fpga_rst uut (
.clk(clk),
.rst(rst),
.dout(dout)
);
initial begin
clk = 0;
forever #5 clk = ~ clk;
end
initial begin
rst = 0;
#111;
rst = 1;
end
endmodule
实际的仿真波形:
问题:
为什么从一开始 输出就被复位了?我的理解是dout的初始值应该为5a,然后在clk的第一个上升沿的时候检测到rst=0才复位到0;但是实际的仿真结果给我的感觉是negedge rst这个条件被触发了,但是我给的rst信号一开始就是0然后才为1,就没有下降沿,怎么会触发呢? |
|