1. 9344 x 7000图像地址排列
图像大小为9344*7000,图像写入ddr3时候为顺序存入,读出时进行1/4分割读写。
2. ddr3每次初始地址逻辑推理过程
因为ddr3 ip是8突发,所以每次读出后地址加8,故
第一次写入是0
第二次写入是8
第三次写入是16
……
根据以上推理,结合上述表格
左上图像,第一行结束的突发读起始地址为1167-7=1160,
右上图像,第一行结束的突发读起始地址为2335-7=2328.
3. 右上图像地址递增逻辑推理过程
///====================== addr_lu
always @ (posedge I_ui_clk or posedge I_ui_rst)
begin
if(I_ui_rst)
addr_lu <= 28'd0;
else if(cur_state==LEFT_UP)
if(toggle_flag==1'b1)
if(cnt_toggle==6'd60)
addr_lu <= 28'd0;
else
addr_lu <= addr_lu + 28'd8177176;
else if(half_line_flag==1'b1)
addr_lu <= addr_lu + 11'd1176;
else if(ddr_div_rd_en_d1==1'b1)
addr_lu <= addr_lu + 4'd8;
else
addr_lu <= addr_lu;
else
addr_lu <= addr_lu;
end
```注意本代码描述的是右上图像在分割读过程中的初始地址地址
地址递增的时序点:1.每次ddr3读时候地址+8;2.每半行结束地址+1176,每1/4图像结束地址增加8177176。
下面对上述地址递增时序点分别进行逻辑推理:
1. 每次ddr3读,地址加8,因为ddr3读是8突发的;
2. 右上最后一行的起始地址2335-7=2328;右上第二行的起始地址为3504,所以当右上半行结束后,下一个图像的递增地址为3504-2328=1176.
**有点不明白的是,每次读已经+8了,所以最后一次的地址是2335,
半行结束地址应该为3504-2335=1169。**
右上1/4图像结束地址计算方式:
第二帧1/4图像的初始地址-第一帧1/4图像的结束地址
(9344*7000/4+1168 )-(9344*7000/4/2-8)=8,177,176。