verilog菜鸟问题请教
时间:10-02
整理:3721RD
点击:
module V3_DDR2_MT46H64M16(
input sys_clk_ibufg,
input c3_p0_wr_full,
output test1
);
reg [29:0] c3_p0_cmd_byte_addr;
reg test1_1;
always@ (posedge sys_clk_ibufg)
if (c3_p0_cmd_byte_addr ==30'b10000_00000_00000_00000_00000_00000)
begin
c3_p0_cmd_byte_addr <=30'b00000_00000_00000_00000_00000_00000;
if(!c3_p0_wr_full)
test1_1 <= 1'b1;
else
test1_1 <= 1'b0;
end
else
c3_p0_cmd_byte_addr<=c3_p0_cmd_byte_addr+1;
assign test1=test1_1;
endmodule
初学verilog,
就这么简单的几行,仿真的时候c3_p0_cmd_byte_addr一直是红色,为何?
谢谢!
input sys_clk_ibufg,
input c3_p0_wr_full,
output test1
);
reg [29:0] c3_p0_cmd_byte_addr;
reg test1_1;
always@ (posedge sys_clk_ibufg)
if (c3_p0_cmd_byte_addr ==30'b10000_00000_00000_00000_00000_00000)
begin
c3_p0_cmd_byte_addr <=30'b00000_00000_00000_00000_00000_00000;
if(!c3_p0_wr_full)
test1_1 <= 1'b1;
else
test1_1 <= 1'b0;
end
else
c3_p0_cmd_byte_addr<=c3_p0_cmd_byte_addr+1;
assign test1=test1_1;
endmodule
初学verilog,
就这么简单的几行,仿真的时候c3_p0_cmd_byte_addr一直是红色,为何?
谢谢!
初始化个值 0
是不是c3_p0_cmd_byte_addr的初始值问题,你没赋初始值,所以c3_p0_cmd_byte_addr初始值是x,你赋初始值再试试
没有初始化
代码中c3_p0_cmd_byte_addr没有初始化(即:没有赋初值),也就是说该信号在至始至终都是不确定的,因此仿真过程中一直为红色的不确定态。须在always语句前作初始化,例如:
initial
begin
c3_p0_cmd_byte_addr ==30'b00000_00000_00000_00000_00000_00000;
end
