FPGA 20个例程篇:17.SD卡存放图片逐一送VGA显示(下)

第六章 图像显示处理,经典再现

17.SD卡存放图片逐一送VGA显示

       接着我们再来看一看video_driver即VGA图像显示模块,在这个模块中我们需要和上游DDR3读写控制模块进行数据交互,并根据VGA到显示逻辑,在扫描到有效区域的时候,通过video_rdy信号,触发上游模块的读FIFO使能信号,再依次从上游模块中读取128位的数据,因为在这里一个RGB565像素点恰好是16位,所以把128位数据拆分成8个16位数据传给VGA显示,如表1所示是video_driver模块信号列表。

信号列表

信号名

I/O

位宽

pixel_clk

I

1

rst_n

I

1

video_din

I

128

video_din_vld

I

1

video_hs

O

1

video_vs

O

1

video_rgb

O

16

video_rdy

O

1

表1 video_driver模块信号列表

图1 VGA送显数据拆报时序逻辑示意图

        在本模块中需要实现3个核心功能:1.实现分辨率640*480下VGA显示的时序逻辑;2. 在扫描到有效区域的时候,使用一个计数器cnt0来计数128位数据拆分成16位数据,使用一个计数器cnt1来计数每行送显有效区域的640个16位数据,即80个128位数据;3. 在扫描到有效区域的时候,合理控制video_rdy信号触发上游模块FIFO的读使能,如图6-31所示是VGA送显数据拆报时序逻辑示意图,注意到我们需要在扫描到有效区域前一拍拉高video_rdy信号,并在扫描到有效区域中cnt0每次计数到8,即当end_cnt0时再拉高video_rdy信号再从上游模块读取128位像素数据,当然在end_cnt0且end_cnt1时不再拉高video_rdy信号,此时一行数据已按照VGA时序逻辑送显完毕,并按照相同的逻辑送显下一行像素数据即可,如图2所示是VGA驱动模块的代码设计。

图2 VGA驱动模块的代码设计

        如图3 所示是SD卡存放图片逐一送VGA显示顶层文件的例化,在顶层文件中大家只需要把各个模块的相关信号例化到一起即可,这里需要用PLL IP核分频一个25Mhz时钟用作640*480分辨率的VGA驱动时钟,一个200Mhz时钟用作MIG IP核的输出时钟,此外用一个LED知识灯,当SD卡和DDR3均初始化完成后点亮作为外部标志!

图3 SD卡存放图片逐一送VGA显示顶层文件的例化

       如图4到图8所示是SD卡存放图片逐一送VGA显示风景图1到图5,下载程序到豌豆开发板,顺序按下按键屏幕上会依次显示不同的风景图片。

图4 SD卡存放图片逐一送VGA显示风景图1

图5 SD卡存放图片逐一送VGA显示风景图2

图6 SD卡存放图片逐一送VGA显示风景图3

图7 SD卡存放图片逐一送VGA显示风景图4

图8 SD卡存放图片逐一送VGA显示风景图5

                                                                               

SD卡图片VGA显示

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值