基于串口的HDMI图像显示实验

本实验的任务要求是利用串口像开发板发送图片数据,比较简单,因为是采用了ram来做缓存,最终显示出来的图片分辨率非常小,下一步学习完SDRAM,做个SDRAM控制器,就可以传大图了,本小白还在学习中,后续争取搞出来上传到博客上。

        这里本人是借鉴了野火FPGA学习的第40章基于RS232的VGA图像显示,在此进行实验的一个扩展学习。

实验总体框架:

1.图像数据处理

2.模块搭建以及修改

3.实验效果

1.主要是利用Matlab进行对图片的数据进行处理,处理代码如下:

clc; %清理命令行窗口

clear all; %清理工作区

RGB=imread('test2.bmp'); %使用imread函数读取图片数据

[ROW,COL,D]=size(RGB); %图片行,列,维度

R=RGB(:,:,1); %提取图片中的红色分量

G=RGB(:,:,2); %提取图片中的绿色分量

B=RGB(:,:,3); %提取图片中的蓝色分量

imgdata=zeros(1,ROW*COL); %定义一个初值为0的数组,存储转换后的图片数据

%转换为RGB332格式

for r=1:ROW

for c=1:COL

imgdata((r-1)*COL+c)=bitand(R(r,c),224)+bitshift(bitand(G(r,c),224),-3)+bitshift(bitand(B(r,c),192),-6);

end

end

%打开或生成txt文件,将格式转换完成的数据写入txt文件

fidc=fopen('data_test.txt','w+');

for i =1:ROW*COL

fprintf(fidc,'%02x ',imgdata(i));

end

fclose(fidc);

2.主要是在原框架上进行修改,在VGA的基础上,加入HDMI控制模块,实现VGA转HDMI的控制效果,在基于RS232的VGA图像显示实验基础上,主要做了几处修改,一是把修改时钟,这个主要取决于你所实验的图像显示分辨率以及帧率,比如我这次用HDMI所显示的分辨率是640*480,60帧,算下来差不多需要25M的工作时钟,并且后面HDMI差分输出时钟也需要125M的时钟(可以参考野火FPGA学习内容HDMI的驱动显示[野火]FPGA Verilog开发实战指南——基于Altera EP4CE10 征途Pro开发板 — [野火]FPGA Verilog开发实战指南——基于Altera EP4CE10 征途Pro开发板 文档)。二是修改接口数据RGB的分量,因为是采用的RGB332格式,在基于RS232的VGA图像显示实验中,传输的RGB数据是16bit,而在本实验是8bit,这就需要做一些处理和修改了。

3.最终实验结果如下图

源码放在这了:

链接:https://pan.baidu.com/s/1M-Me62NSP-jIJRt0tHTi8Q?pwd=hcbw 
提取码:hcbw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值