打印
[modelsim]

Zedboard使用评测+HDMI显示与SD读取

[复制链接]
1617|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2012-11-19 23:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
其工作原理的就是讲数据写入到显存(DRAM)中,然后再按照行场模式或者是使能DE模式读出DRAM中的数据,按照屏的显示时序,发送给屏完成显示。具体的功能框图如下:
ZYNQ作为整个系统的控制核心,提供HDMI的显示数据,以及时读写显存的控制,以及DDC的数据产生。PL部分主要是ADV7511的控制,还有将24bit的RGB数据转换为16bit的YCBCR422的数据发送给ADV7511



EDK中的数据到显存的函数如下:
#define  img_length 2073600  //1920*1080
void ddr_video_wr(u32 write_addr){
  u32 n;
  u32 dcnt;
  dcnt = 0;
  xil_printf("DDR write start:nr");
  for (n=0; n< img_length; n++){
   Xil_Out32((write_addr+(dcnt*4)),write_data);  // RGB
       dcnt = dcnt + 1;
  }
  Xil_DCacheFlush();
  xil_printf("DDR write: completed (total %d)nr", dcnt);
}
说明:write_data的数据位十六进制的RGB数据的组合。整个一幅图片的RGB值的大小为1920*1080的数据。因为此时没有存取数据的地方,所以测试的图片显示的时候,将write_data 设定为固定值,让全篇显示红色的背景。当时的设想是从SD卡中国读取过数据,毕竟以前用HDL语言做过读取SD的数据,实际上就是把他单过flah来操作。于是在zynq_fsbl/src/下看到了关于SD卡两个文件,sd.c以及sd.h在SD.C中看到了能使用的3个函数,如下:1.InitSD(char *filename)  功能是读取sd中的指定的文件2. u32 SDAccess( u32 SourceAddress,u32 DestinationAddress,u32 LengthWords); 功能就是讲原地的数据,复制一定长度的数据到目的地址。算作读数据。3.void ReleaseSD(void); 功能就是算作释放掉SD卡操作完成。于是就想用来试试看,新建了一个功能,当然还是用14.2.程序如下: #include <stdio.h>
#include "platform.h"
#include "sd.h"
#include "xbasic_types.h"
void xil_printf( const char *ctrl1, ...);int main(){  u32 data;
  init_platform();
  InitSD(“123.bin”);
  xil_printf("@@read 123.bin success!@@@");
  cleanup_platform();
  return(0);
};
功能就是读取SD卡文件中的123.bin的文件。记过一编译就开始缺少文件,然后我就在电脑里找啊找,找了7.8文件的.h到目前为止还剩下ff.h下的integer.h还没找到。我想既然能从SD卡boot启动,应该可以自己操作SD卡,可是遇到这文件找不到,一切都没辙了。上次AET提醒过14.2容易少静态库,这次编译的时候特地选上所有standalone。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1025

主题

11271

帖子

25

粉丝