verilog 这段代码仿真时候不对
时间:10-02
整理:3721RD
点击:
reg [2:1] mem_data_cnt = 2'b0;
reg [31:0] addr_mem;
always @(posedge clk)begin
addr_mem[31:4] <= 0;
addr_mem[3:0] <= addr_mem[3:0] + mem_data_cnt*4;
mem_data_cnt <= mem_data_cnt + 1'b1;
end
假设一开始addr_mem 值为0,仿真时候addr_mem值是0,4,12,8 变化的,但是我计算应该是0,4,8,12变化呀
reg [31:0] addr_mem;
always @(posedge clk)begin
addr_mem[31:4] <= 0;
addr_mem[3:0] <= addr_mem[3:0] + mem_data_cnt*4;
mem_data_cnt <= mem_data_cnt + 1'b1;
end
假设一开始addr_mem 值为0,仿真时候addr_mem值是0,4,12,8 变化的,但是我计算应该是0,4,8,12变化呀
就应该是0,4,12,8变化的,最后一次其实应该是24但你设置的addr_mem只有4位只能计数到16,因此最后一次仿真结果为8
mem_data_cnt 变化是0,1,2,3呀,乘以4 不就是0,4,8,12么?
。我才发现我搞错了,晕
