CrazyBingo

VGA 全图单色Logo的实现-巧用PS+pic2mif软件

0
阅读(4126)

VGA 全图单色Logo的实现-巧用PS+pic2mif软件

首先感谢网友【非洲爷爷跳得高】想我推荐的图片转mif的软件。。。还是有人写了现成的软件,哈哈。。。。

想要实现图片的Logo,在VGA中显示,我们需要生成Mif/Hex文件,存入ROM读取,刷VGA实现。。而原本本人设计了C2Mif软件,可以通过PS/Img2LCD转换得到单色图,既而通过PC2LCD2002得到图片的字模提取(按列取模),最后通过C2mif软件转换为Mif文件,存入ROM即可。。。而单纯的字符而言,直接通过PC2LCD2002取模,用C2mif软件转换为Mif文件非常的简单,本人曾在博客中多次介绍这种简单的方式。。

不过今天有幸认识了这一款pic2mif的软件,直接将【图片】转换为mif,信誓旦旦的尝试一下。。该软件界面如下所示,该软件由Laputa Develop Group提供,免费,可任意传播(我竟然才知道):

clip_image001

既然采用VGA来全屏显示一张单色图片,在640*480分辨率下需要307200bit的Memory。那容量够不够用是个问题,09年我执迷于VGA 图文显示的时候,用EP2C8没办法做到全屏。。。不过有幸深受大家喜爱的VIP_Board Mini FPGA为EP4CE10E22C8N,有那么多的Memory,够用了:

clip_image003

OK,开干。强迫症。。即便是显示一个图片,也要追求完美的机制,一步到位,以后VGA/LCD神马的都用这个图片了,于是打开PS,放上了我钟爱的松树,2个二维码,简单的做了下面这个彩色的图片【第一次自称CB科技,哈哈哈】:

clip_image005

由于最终我们要得到二值化的图像,于是先把他转换为了灰度,一边观察,如下:

clip_image007

为了边缘能够更清晰,进行对比度、亮度的调整,反复的试验后,得到下面的结果,还算是可以的。。。。。

clip_image008clip_image009

OK。用NB哄哄的pic2mif软件打开我生成的最后的图像,预览如下:640*480,选项如下所示:

clip_image011

最后,生成CrayzBingo.mif,如下所示,一步到位呵呵思密达:

clip_image013

采用Notepad++软件打开后,如下所示,必要的文件头,看结尾的长度,是OK的。。

clip_image015

clip_image016

看看格式对不对,用Quartus II直接打开Mif文件,如下所示,能正常打开说明是对的。。

clip_image018

这里需要注意了,这里1 表示原先的255灰度,即最初的白色RGB 255/255/2552,因此从ROM中读取到1表示白色、0表示黑色。回到Quartus II中,开始定制ROM模块,流程如下图所示:

clip_image020

长度是640*480 = 307200,宽度是1bit,如下所示:

clip_image022

初始化数据,为pic2mif软件生成的CrazyBingo.mif软件,如下所示:

clip_image024

clip_image026

最后添加生成的rom.v文件,如下所示:

clip_image028

修改本人VIP_Board Mini板卡 第二个工程中的02_VGA_Display_Test640480,改为02_VGA_Display_Test640480-Logo,代码只需要修改lcd_display文件,如下所示

clip_image030

功能如下:

【1】 根据lcd_driver输入的xpos和ypos,计算出当前像素的计数值,即ROM的地址vip_addr1.

【2】 例化ROM,即输入clk与vip_addr1,输出的vip_data

【3】 判断vip_data1值,如为1,则显示白色;反之,则显示黑色。

最后全编译,下载测试。编译报告如下所示,耗用了307200bit的Memory,即72%的容量:

clip_image031

下载测试,VGA显示前面设计的Logo图,哈哈,轻松愉快,从此屌起来!!!

clip_image033

最后给你们分布一下Quartus II工程等相关资料,其他相关资料都在工程的doc文件夹下,自己消化吧。。。

02_VGA_Display_Test640480-Logo.rar