串口传输数据到FPGA上用VGA显示的可能问题及注意事项

文章讨论了VGA分辨率与显示器的关系,强调了UART接收模块的busy信号管理,以及XCOM软件在16进制发送数据时的处理方式。同时,提到了RGB格式转换和图片大小对显示效果的影响,以及FPGA开发中的优化点,如使用摄像头和更换接口技术。
摘要由CSDN通过智能技术生成

1.vga分辨率的选择和显示屏分辨率、显示屏尺寸、型号无关。显示器能自动识别输入信号并调整分辨率,输入640*480信号就自动分配到整个屏幕上。PLL的时钟配置时注意别填错,显示器会报错 输入信号不匹配。

2.注意uart 接受模块rx的busy端口,也就是接受完一个字节后拉高的信号。拉高后在下一个时钟沿就要立刻拉低。因为双端口ram写入的使能信号是busy,若拉高时间过长则导致rom_addra不能按一个字节接受完写入一次的时序递增。

3.串口助手的选择及xcom发送数据的格式。
所有串口发送的都是2进制数。
XCOM 正点原子的免费软件。
发送时:
勾选 以16进制发送 代表要发的都是纯数字,则xcom会在缓冲区里每两位16进制数读取一次,加入开始和终止信号制成一帧发送。比如以16进制发送数据 12 ,则发送0-00010011-1(开始信号,数据,终止信号),注意,12不是10进制数,即不是00001100。(12)H = 18 = 00010011 。

不勾选 以16进制数发送 代表要发的数据是字符串格式。xcom会一位一位的读取并发送。比如发送12 ,则实际发送0-00110001-1 0-00110010-1(1的ASCII码是49,转换为16进制是31(00110001),2的ASCII码是50,转换为16进制32(00110010))。

接收时:
勾选以16进制接收:在串口回环实验中,以16进制发送12,则接收12。
不勾选以16进制接收:发送31,会在屏幕上显示接收到1。

xcom有一个发送文件的功能,文件默认是txt格式,根据我实践出的结论,发送文件默认是以字符串格式发送,不论有没有勾选以16进制发送。 所以想发送大文件只能复制到缓冲区里发送,但缓冲区有存储上限,过大的文件只能分别复制然后发送。这篇说的很清楚了。常见串口工具比较(详细)

友善串口调试助手。
没有发送文件的功能,至少我现在没找到。但是发送缓冲区的容量很大,我试过将38.6k的txt直接复制到缓冲区,换成xcom至少要分段复制三次。

4.图片格式转换为RGB444或RGB332可以尝试用MATLAB,非常方便,但是要注意三种颜色分量的顺序,一般是B-G-R,高字节在前串口传图 不注意顺序结果能显示但颜色对不上。红橙黄绿蓝靛紫黑白灰彩条,下图是RGB分量没对上时的显示结果。
在这里插入图片描述

在这里插入图片描述

5.注意图片大小和显示区域。哪怕显示区域长宽只多了一个像素,显示的图片就会扭曲很多,运气好的话还能看出原本的图案从而改进,运气不好的话就是一堆像素块,完全找不到代码要修改的地方在哪里。

6.RGB332对画面色彩降低非常多,整体偏暗,实用性不强。可以尝试把rx接受模块改造成接收16位bit,效果大概会好很多。

video_20230328_103309

7.有很多可以改进的点。比如设定串口发送的前几位数据为图片长,图片宽,图片大小,这样就不局限于只能显示分辨率一样的图片。代价是ram的容量必须设计成640480rgb位宽,因为必须容纳最大的图片,图片小的话空间就浪费了。8位宽的话容量是2.34MB,看FPGA资源再改进。
uart接收模块也可以替换为摄像头OV5640。
VGA替换成HDMI或DDR3。

8.杂项
FPGA开发板是EG01,里面有vga显示rom图像的工程。EG01用户手册

uart模块是从一个非易失性存储器开源项目open-fpga-nvm里拿来用的,里面的uart在接受完一个字节busy信号拉高后不会立刻拉低,要等到下一个开始信号到来后才拉低,这个特点对于这个项目来说无所谓,甚至下板做数据回环也可以正常运行,但是加上vga和rom后就不行,参考2 。当时先做完数据回环和vga显示rom图像后想当然的认为所有模块没有问题,以为简单的模块组合就能完成,大意了。。。

还有学姐的博客对我帮助非常大。基于RS232的VGA图像显示

最后,别放弃,成功不远。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值