DDR3读取640*480@60Hz图片在HDMI显示(ZYNQ 7020)

(小白记录实验室调试过程)

导入

过程:数据首先要经过一个“筛选模块”比如选定在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

DDR调试框架搭建

BD搭建

ZYNQ

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值