3.1 概述在前面的章节,笔者非常详细的提供了一种数据缓存的构架,并且提供了完善的测试例子,对 构架的设计做了充分的测试验证。本章内容只要把 OV7725 摄像头的图像数据,作为数据源,替换上 一章节用代码参数的测试数据就可以。当然说起来简单做起来也不容易,各种小问题,经常会导致开发进度延误,所以读者必须自己学会克服困难的办法。 3.2 构架设计对于稍微复杂一点的工程项目必须要有优秀的构架设计,优秀的设计构架的意义比具体写代码 更有价值,所以笔者建议读者在以后自己的项目中要多学习和思考构架的设计。笔者设计了一种基于 消息缓存模式的构架,可以广泛用于图像缓存,数据采集缓存,通信数据缓存等项目中。如下图所示, 摄像头数据经过sensor_decode 模块解码摄像头数据后将RGB时序图像数据输入到MIG_BURTS_IMAGE, 然后再流出来到 vga_lcd_driver 模块,vga_lcd_driver 模块输出的是 RGB 时序,进过 HDMI IP模块 后接到 HDMI显示器显示输出。 1) 、OV7725摄像头接口:是连接到开发板的物理接口,摄像头模块安装FEP转CEP扩展卡上,默认安装CEP1接口。 2) 、HDMI 接口:是图形的输出接口,图像数据从 HDMI 接口输出 3) 、sensor_decode模块:解码 OV7725 摄像头的图像数据,然后转为 R/G/B 数据,同时需要产生 HS 信号、VS信号、de 信号提供给后续模块使用。如下面一段代码
4)、vga_lcd_driver 模块:产生 RGB(VGA)输出时序 5)、MIG_BURST_IMAGE 模块:管理图像数据和内存管理,MIG_BURST_IMAGE 模块中包括了 CH0_FIFO 模 块、CH6_FIFO 模块、MIG_DDR 控制器、MSG_FIFO 消息盒、M_S 内存管理状态机,此外还包括 CH0_FIFO 的读请求,以及 CH6_FIFO 的写请求。 3.3 主要模块源码分析3.3.1 sensor_decode.v
OV7725输入的图像是 640X480 分辨率的图形,为了观察数据的方便,未来观察行场信号是否正 确,笔者先利用上一课中用到的测试图形方案数据代码 OV7725 产生的 RGB数据,而行场信号继续使 用 OV7725 产生的行场信号。这么做的目的,主要是我们在对 OV7725 解码的时候可能采样的颜色时序会出问题,但是一开始又不能定位问题,这样可以循序渐进式解决问题。 3.3.2 vga_lcd_driver.v
vga_lcd_driver模块的作用是产生一副 640X480 分辨率的RGB使出时序,RGB 的数据来源来自 CH6_FIFO。读者可以修改不同分辨率输出不同的测试图形。 3.3.3 CH0_FIFO FIFO IP 设置Step1:设置 Native 和 Independent Clocks Block RAM Step2:设置 FIFO 采用 Firt Word Fall Through 模式,FIFO 的写是 64bit 2048 深度 FIFO 的读是 512bit 256 深度 Step3:默认设置 Step4:设置计数器
3.3.4 CH6_FIFO FIFO IP 设置Step1:设置 Native 和 Common Clocks Block RAM Step2:设置 FIFO 采用 Firt Word Fall Through 模式,FIFO 的写是 32bit 32 深度 FIFO 的读是 64bit 16 深度 Step3:这一页设置默认 Step4:设置读FIFO 的 counter 计数器宽度是6bit
发表评论
最新评论资讯幻灯片
热门评论
热门专题
排行榜
XILINX 官网|站点统计|Archiver|手机版|米联客品牌主页|UISRC工程师开源站 ( 苏ICP备19046771号-2 ) GMT+8, 2025-4-2 15:32 , Processed in 0.375301 second(s), 87 queries . |