基于FPGA的Uart接收图像数据至VGA显示

系统框图

  前面我们设计了基于FPGA的静态图片显示,并对一幅彩色图片提取了灰度,学习了RGB转Gray算法。这是基于一幅静态图片的,那么后面我们要怎么模拟一下一幅动态图片的显示,最终对动态数据进行滤波、边缘检测等算法,下来我们首先来建立一个基于FPGA的动态图片显示基础框架,本实验内容为:由PC端上位机软件通过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描到VGA屏幕上显示。

  从系统框图上我们可以看到,可以划分为三个部分进行设计,一个是串口接收部分,然后是RAM数据存储部分,最后是VGA驱动显示部分。这里串口接收部分只需要用到串口接收代码,代码很多书上都有,我这里就不贴出来了,

  数据存储部分需要使用的是双口RAM IP Core,一端将数据写入RAM中,一端将数据读出来用VGA显示,下面是基于Vivado的双口RAM IP Core调用方法。

打开IP Catalog,选择block memory Generater

这里按如图所示选择,我这里将写使能信号去掉,wea也可以代表写使能

设置写数据位宽和深度,使能选择always enable

设置读数据参数

这里因为我们是往RAM里面写数据,所以这里不需要添加初始化RAM文件

点击OK

最后generate综合完成。

         双口RAM IP调用完成以后,接下来是在用顶层文件把串口接收模块和存储模块和VGA驱动模块连接起来。这里需要注意的是,双口RAM的读地址和写地址都是需要在外面自己计数的,我这里把写使能信号设置为串口接收完成标志,读使能设置为always enable。对于VGA显示图片部分可以参考我写的另外一篇博客:基于FPGA的VGA显示静态图片。对于这个工程的仿真技巧可以参考我的另一篇博客:FPGA计算3行同列数据之和,里面有串口接收发送的仿真技巧。

         这样硬件部分其实就已经完成了,现在我们需要的是一幅图片的像素数据然后通过上位机串口调试助手发送给FPGA开发板,首先找一幅200x200的图像数据,因为我这里是开出的200x200的显示区域(参考如上链接),使用MATLAB就可以直接生成你想要的这幅图像的像素数据,这里的MATLAB代码我给出链接:http://pan.baidu.com/s/1dFAMPjj  密码:uu71,只需要修改下面如图所示的imread(””)这里就好了,就可以直接转化你想转化的图片。注意图片必须和这个.m文件在同一个文件夹,最后生成一个txt文件,这个txt文件里面的数据就是我们所需要的图像数据

其实这三个文件里面的数据是完全相同的,那为什么不直接用前面那两个文件的数据呢?这里博主亲身体验过,那是绝对不行的,因为前面两个文件的数据其实是有回车的,可能会被串口默认为一个字符,txt文件中是没有的,空格的话这里被串口调试助手忽略了!如下图,点击发送就OK啦!

         最后通过串口发送到开发板最终显示的效果如图所示,我们可以看到这里MATLAB代码生成的就直接是彩色图像,最终发送过程中其实是动态显示的,因为串口波特率的速度比VGA的扫描速度是要慢很多的,这里的动态显示视频请看我的微博链接:http://t.cn/RO7UsfK

  最后经过测试我们的lena女神的显示效果最好了,看来真不愧是我们图像处理届的模特鼻祖呀!最后看来,显示效果还是不错的呢!

  本文之前还有一点小问题,现在博主已经修改,请查看该链接查看错误原因:纠错:基于FPGA串口发送彩色图片数据至VGA显示

如果你想获得本文的所有课件和工程代码,请关注本人的个人微信订阅号:开源FPGANingHeChuan或扫描下方二维码关注订阅号,在后台回复图像处理,即可获得本文的所有课件、资料、和工程源码哦!

转载请注明出处:NingHeChuan(宁河川)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

Ray:AI的分布式系统

随着机器学习的算法和技术的进步,越来越多的机器学习应用程序需要多台机器,并且必须利用并行性。但是,在集群上进行机器学习的基础设施仍然是特设的。尽管针对特定用例(...

3116
来自专栏后端云

compute node ha 主流开源实现

nova evacuate和热迁移很像。都是想实例从一个节点转移到另外一个节点。区别主要是热迁移在正常状态下进行的,疏散时在异常状态下进行的。用一个形象的比如就...

1303
来自专栏知识分享

STM32采集电阻触摸贴膜

公司的项目用电阻屏,触摸的时候发现获取的位置会漂,后来自己发现是由于压力的问题....如果亲们用电阻屏发现触摸的位置有问题,可以看一下这篇文章,,先测量触摸的压...

2926
来自专栏维C果糖

GitHub 主页介绍及修改个人信息

接着「敲开 GitHub 的大门 - 注册账号」一文的内容,我们继续往下介绍: ? 标注 1:View profile and more,更多选项视图; 标注 ...

1967
来自专栏州的先生

重新开始一个完整的Django Restful WEB项目

在前面7章中,我们首先编写了一个简单的电影爬虫,采集了猫眼电影的部分电影数据,再通过Django框架的2.0版本创建了一个Python WEB应用,并且借助于d...

1131
来自专栏FreeBuf

一种绕过限制下载论文的思路

注:本文下面的内容仅讨论绕过思路,作为技术交流之用。大家下载论文还是应该通过正规渠道,付费下载,尊重各位站长的劳动成果。敏感图片和代码中涉及站点的内容均已打码。

1342
来自专栏小白课代表

无需PS 一键编辑、压缩GIF。

微信公众平台规定GIF图不得超过2M,但是一张清楚的时间长的动图录制出来怎么可能那么小呢!还有聊天的时候,看到好玩的动图想要添加到表情,然后。。。

2761
来自专栏测试开发架构之路

MatlabR2014a 安装破解详细图文教程(附下载链接(内附CVX工具箱))

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据...

3177
来自专栏IT技术精选文摘

LVS集群的负载调度

1. 前言 本文将主要讲述在负载调度器上的负载调度策略和算法,如何将请求流调度到各台服务器,使得各台服务器尽可能地保持负载均衡。文章主要由两个部分组 成。第...

2139
来自专栏WeTest质量开放平台团队的专栏

深度了解Android 7.0 ,你准备好了吗?

2016年8月22日,谷歌正式推送Android 7.0 Nougat(牛轧糖)正式版,首发推送了多款Nexus设备。除了修复常规BUG,Android 7.0...

813

扫码关注云+社区