• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > Zedboard使用评测+HDMI显示与SD读取

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

录入:edatop.com    点击:

上次搭好了硬件平台,后面立马开始了软件方面的调试。

因为以前做的都是些用HDL做过显示,比如VGA,以及最近用FPGA做的LVDS屏的显示。其工作原理的就是讲数据写入到显存(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。

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:ZedBoard试用测评+HDMI接口硬件平台
下一篇:浅析选用高斯计的方法

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图