(小白记录实验室调试过程)
导入
过程:数据首先要经过一个“筛选模块”比如选定在vs有效后再开始读,然后进入FIFO缓存,经过基于AXI协议的写控制 模块,然后通过AXI总线进入DDR_CTRL模块,然后读模块由AXI总线通过DDR_CTRL读数据,读完后给FIFO,FIFO给HDMI控制模块,然后输出给显示屏
data“筛选”模块,data_into模块跟AXI写控制进行交互,FIFO只是在其间进行数据缓存,data模块执行判断条件后会给AXI写控制模块发信号,例如‘ready’,‘busy’,AXI写控制模块也会给data模块发送反馈信号,比如‘done’
例如图片640*512,每个像素占地址位8bit,则一幅图数据总量为640*512*8bit(桶里的水)
突发长度1-256任意,假设突发长度256,突发长度单位为B,突发长度数据总量为256*8bit(一次接的水量)
DDR数据位宽(IP里面设置的),假设是32bit(出水口)
则 突发次数即为 (640*512*8bit)/[(256*8bit)*32bit](接几杯水)
moni模块的时序是为了筛选有效数据,hdmi模块的时序是为了从ddr通过axi读取需要的数据
改AXI读写数据位宽的时候在axi interconnect的外接端口上改,比如双击S00_AXI_WR
在data width进行修改,最大是1024,但是ddr最大传输的数据位宽是64,所以axi设置最大64,此处设置32
修改完BD后还需要在代码里进行修改,对设置AXI类型的模块参数进行修改,此处是AXI_write
模块
需要改S_awsize和S_wstrb,S_awsize对应axi读取的数据位宽,此处是32,对应手册的010,S_wstrb是数据掩码,不同的awsize对应着不同的数据掩码,需要查手册修改
还需要改axi里的wire声明AXI_WR_DATA,AXI_RD_DATA