系统框图html
前面咱们设计了基于FPGA的静态图片显示,并对一幅彩色图片提取了灰度,学习了RGB转Gray算法。这是基于一幅静态图片的,那么后面咱们要怎么模拟一下一幅动态图片的显示,最终对动态数据进行滤波、边缘检测等算法,下来咱们首先来创建一个基于FPGA的动态图片显示基础框架,本实验内容为:由PC端上位机软件经过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描到VGA屏幕上显示。算法
从系统框图上咱们能够看到,能够划分为三个部分进行设计,一个是串口接收部分,而后是RAM数据存储部分,最后是VGA驱动显示部分。这里串口接收部分只须要用到串口接收代码,代码不少书上都有,我这里就不贴出来了,微信
数据存储部分须要使用的是双口RAM IP Core,一端将数据写入RAM中,一端将数据读出来用VGA显示,下面是基于Vivado的双口RAM IP Core调用方法。框架
打开IP Catalog,选择block memory Generaterpost
这里按如图所示选择,我这里将写使能信号去掉,wea也能够表明写使能学习
设置写数据位宽和深度,使能选择always enable测试
设置读数据参数url
这里由于咱们是往RAM里面写数据,因此这里不须要添加初始化RAM文件spa
点击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(宁河川)
我的微信订阅号:开源FPGANingHeChuan
若是你想及时收到我的撰写的博文推送,能够扫描左边二维码(或者长按识别二维码)关注我的微信订阅号
知乎ID:NingHeChuan
微博ID:NingHeChuan