第七章 实战项目提升,完善简历

19.OV7725摄像头实时采集送HDMI显示(一)

在例程“OV7725摄像头实时采集送HDMI显示”中,我们将走近FPGA图像处理的世界,图像处理、数字信号、高速接口也一直被业界公认为FPGA应用的三大主流领域,这个例程主要基于OV7725摄像头的视频图像采集项目,进行了详细地需求分析,从顶层到底层,从框架到功能,层层细分整个项目的模块,从而实现流程化项目设计,所以笔者在这一节里想多花些笔墨把FPGA图像处理的基本开发技巧和相关背景知识等整理清楚,同时也为大家再扩展一些知识面。

真诚地希望大家通过对本例程的学习,能更加深刻地了解到基于FPGA的视频图像开发流程,同时掌握摄像头开发的基本知识和调试方法,感兴趣的朋友可以在消化完例程后进行OV5640等其他CMOS摄像头视频采集系统的设计。

开门见山地在详细介绍OV7725摄像头之前,首先来了解CMOS和CCD Sensor传感器的背景知识,目前市面上主流的图像传感器Sensor主要有CMOS和CCD两种,CCD Sensor的技术相对成熟、其一致性较好、色彩更加逼真,但制作工艺复杂、成本功耗较高、像素很难提高,相比而言CMOS Sensor制作简单、成本低廉、开发灵活,更受到现在市场的青睐,大家每天使用的手机、笔记本电脑等移动端设备中一般也都选择CMOS Sensor。

CMOS Sensor的驱动电路相对于CCD Sensor而言简单很多,同时在成本上具有巨大的优势,成像质量上随着工艺技术的迭代更新有了显著提升,当然我们的手机之所以能取得如此清晰准确的图像质量还归功于与图像处理模块(ISP),感兴趣的朋友可以去了解一下相关知识。

目前市面上的CMOS Sensor,主要的生产厂家有Sony(日本索尼)、Panasonic(日本松下)、OmniVison(豪威)、Smartsens(思特微)等,虽然不同厂家生产的CMOS Sensor在工艺质量、成像效果、帧率色彩、感光噪声等方面有些许差别,但是对于FPGA开发而言,设计流程都基本一致,即只需要通过芯片手册进行寄存器配置就可以让CMOS Sensor输出预期格式的视频流数据。

在这个例程中,我们选取了OmniVision(豪威)所生产的OV7725 CMOS Sensor作为图像采集的前端,该传感器具有功耗低、可靠性高、采集速率快等优势,其广泛应用在电子玩具、安防监控、电脑多媒体等领域,如图1示是OV7725的实物照片,OmniVision生产的数字图像传感器,从最低VGA分辨率的CMOS Sensor到十几兆像素分辨率的输出Sensor,产品涵盖了低中高端,支持不同应用场景成为数字成像领域的主打品牌。

图1 OmniVision(豪威)的OV7725 CMOS Sensor实物图

OV7725拥有640像素*480像素的感光阵列,其最高支持640*480@60Hz图像输出,并且支持分辨率、输出视频格式、图像特征等可配置,满足很多产品的实际应用场景,笔者在这里也简单为大家归纳总结了这款经典的CMOS Sensors几项关键性特征参数。

  1. 具有标准的SCCB配置接口,可以配置输出RAW RGB、YUV422、RGB565、RGB444、YCbCr422这几种格式的视频流;
  2. 支持VGA、QVGA,以及40像素*30像素到352像素*288像素分辨率的图像尺寸;
  3. 支持AEC(自动曝光)、AWB(自动白平衡)、ABF(自动带通滤波)、ABLC(自动黑电平校准);
  4. 图像饱和度、色相、伽马、锐度、噪声比等参数可调节;
  5. 支持配置实现帧同步模式、自动调节边缘增强、自动调节噪声抑制;

如图2所示是OV7725 CMOS Sensor内部功能模块的框架,大家可以清楚地看到整个OV7725 CMOS Sensor在XCLK外部时钟的驱动下,感光元件阵列进行图像的采样输出640*480阵列的模拟数据,其次再通过内部12bit的A/D转换后,输入的模拟数据即变成了数字信号,再次通过DSP进行相关图像的前处理,最终会输出用户配置格式的10bit视频流数据。

图2 OV7725 CMOS Sensor内部功能模块的框架

如图3所示是OV7725 CMOS Sensor的DC特性参数,对于OV7725一共需要3种电压,在这里主要关注VDD_A、VDD_C、VDD_IO这3组电压,其中VDD_A即OV7725的模拟电压范围是3.0-3.6V,推荐值是3.3V,VDD_IO即I/O驱动电压范围是2.5-3.3V,VDD_C是OV7725内部的数字内核电压可以由其内部的LDO直接给出,为了电路设计更加方便,大部分OV7725模块把模拟电压VDD_A和I/O驱动电压VDD_IO均设置成3.3V。

值得注意的是虽然OV7725内部非常复杂,但是由于OmniVision公司对CMOS Sensor做了集成封装,使其集图像采集、模数转换、DSP计算功能于一体,所以对于用户二次开发来说,硬件上不需要太多外围电路做支持。

图3 OV7725 CMOS Sensor的DC特性参数

大家可以对照如图4所示“骑远飞电子科技”推出的OV7725 CMOS Sensor模块来观察,如图5所示是对应的硬件模块的内部构造,如表1所示是OV7725 CMOS Sensor控制信号引脚定义,在模块二次开发的硬件电路设计中应该需要注意几个地方:

  1. AVDD(VDD_A)是模拟电源,而DOVDD(VDD_IO)是数字电源,为了保证电源的稳定性,一般情况下都会选择通过0欧电阻或者磁珠进行隔离;
  2. 对于摄像头的SCCB接口,实际上是一种和IIC相似的通信协议,所以需要对SCL和SDA进行4.7K电阻上拉;
  3. DOVDD、AVDD电源按照电路设计的一般规则,需要通过10uf、4.7uf、0.1uf电容进行滤波,保证电源的稳定性;
  4. DVDD(VDD_C)1.8V电源由OV7725 CMOS Sensor内部直接产生,最好也用常规容值的电容10uf、4.7uf、0.1uf进行滤波;
  5. 一般情况下不对OV7725 CMOS Sensor复位,只需把RESET拉高即可,所以在模块的二次开发中可以用典型的RC复位电路,并把RESET上拉3.3V这样FPGA把对应的IO口置高即把RESET上拉到3.3V电平;
  6. 模拟地和数字地直接需要用0欧电阻或者磁珠进行隔离;
  7. PWDN引脚低电平代表正常工作,高电平代表低功耗模式,在模块的二次开发中可以将其引出,也可以直接下拉到数字地上,这里用户基本都会去选择低电平的正常工作模式;

序号

引脚

说明

1

PWDN

低电平代表正常工作;高电平代表低功耗模式

2

RSTB

传感器复位输入,低电平有效

3

SCL

SCCB接口的串行时钟信号

4

SDA

SCCB接口的串行数据信号

5

FSIN

帧同步输入,高电平有效

6

XCLK

传感器内部驱动时钟的输入

7

PCLK

像素输出时钟

8

VSYNC

像素数据的场同步信号输出

9

HREF

像素数据的行同步信号输出

10

DATA

10bit固定格式的数据输出

表1 OV7725 CMOS Sensor的控制信号引脚定义

图4 OV7725 CMOS Sensor模块的硬件电路图

图5 OV7725 CMOS Sensor模块的内部构造

在这个例程中我们通过OV7725模块实时采集图像视频并使用640*480分辨率一帧一帧地通过HDMI传输视频流给屏幕显示,这也是一个比较有代表性的项目类例程,如图6所示是豌豆开发板Artix7上CMOS模块统一接口的电路。

实际上笔者在绘制豌豆开发板原理图时,也参考了市面上大量开发板,但遗憾的是会发现不同开发板几乎都有自己一套自定义的接口,导致了很多不能兼容,也意味着当用了一家的开发板,如果想要做摄像头实验就必须购买对应的接口板和摄像头模块,不同开发板之间的摄像头模组不能通用,模块转接板不能通用,甚至连JTAG下载器接口也不能通用,就带来很多不必要的麻烦,所以笔者在这里采用了CMOS模块的统一接口,使其可以兼容市面上各家开发板的摄像头模块。

图6 豌豆开发板Artix7上CMOS模块统一接口的电路

FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(一)相关推荐

  1. FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(三)

    第七章 实战项目提升,完善简历 19.OV7725摄像头实时采集送HDMI显示(三) 在详细介绍过OV7725 CMOS Sensor的相关背景知识和如何初始化其内部寄存器达到输出预期视频流的目的后, ...

  2. FPGA 20个例程篇:18.SD卡存放音频WAV播放(上)

    第七章 实战项目提升,完善简历 18.SD卡存放音频WAV播放(上) 在最后一章里,我们来做几个实战项目,一方面是对前面学习知识的一种回顾,另一方面这几个小项目也非常贴近实际工程,其中例程" ...

  3. FPGA 20个例程篇:9.DDR3内存颗粒初始化写入并通过RS232读取(上)

    四.内存颗粒缓存,进阶之路 9.DDR3内存颗粒初始化写入并通过RS232读取 在做嵌入式开发过程中"内存"仿佛是无处不在.DDR3颗粒作为当前较为常见的一种储存器,在计算机和嵌入 ...

  4. FPGA 20个例程篇:9.DDR3内存颗粒初始化写入并通过RS232读取(下)

    四.内存颗粒缓存,进阶之路 9.DDR3内存颗粒初始化写入并通过RS232读取 在介绍了DDR3内存颗粒的硬件设计.总结了MIG IP核官方手册的关键时序.说明了MIG IP核初始配置的详细细节后,就 ...

  5. FPGA 20个例程篇:11.USB2.0接收并回复CRC16位校验

    第五章 外设接口通信,举一反三 11.USB2.0接收并回复CRC16位校验 外设接口通信底层设计也是FPGA广泛应用的领域,常用的外设接口按照通信速度由慢到快排列又有:串口.USB2.0.千兆网口. ...

  6. FPGA 20个例程篇:18.SD卡存放音频WAV播放(中)

    第七章 实战项目提升,完善简历 18.SD卡存放音频WAV播放(中) 如图1所示是WM8731中11个寄存器功能说明概况图,我们需要对照手册,再去深入了解WM8731中的11个寄存器,怎么去配置这些寄 ...

  7. FPGA 20个例程篇:15.VGA显示八种颜色的彩条

    第六章 图像显示处理,经典再现 15.VGA显示八种颜色的彩条 图像和视频处理可以说是FPGA中又一个经典地应用,使用FPGA做图像处理最核心的优势就在于:FPGA能进行实时流水线运算,从而达到更高的 ...

  8. FPGA 20个例程篇:18.SD卡存放音频WAV播放(下)

    第七章 实战项目提升,完善简历 18.SD卡存放音频WAV播放(下) 进一步地我们再结合图1的示意图来分析wav_play模块的时序逻辑设计,大家可以清楚地看到WM8731在Right justifi ...

  9. FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(二)

    通过上面的介绍相信大家对数字变频已经有了一个较为整体性的认识,下面笔者来对照XILINX的DDS IP核对数字变频技术展开更进一步的说明,做到了理论和实践很好地结合,这样大家再带入Modelsim进行 ...

最新文章

  1. Maven就是这么简单
  2. mysql动态规划_动态规划《开篇》
  3. git代码回滚的几种方式
  4. zookeeper客户端库curator分析
  5. C++ 20发布后,这个老牌编程语言又“真香”了
  6. 关于多线程编程您不知道的5 件事---有关高性能线程处理的微妙之处 (转)
  7. 安卓玩机教程---全机型安卓4----安卓12 框架xp edx lsp安装方法
  8. 省会、自治区、直辖市、特别行政区
  9. linux只能单向ping通,两机只能单向Ping通的原因、ping的原理
  10. Makefile隐含规则
  11. MIPS汇编程序设计——Cousera
  12. linux启动速度优化
  13. Scrapy爬虫案例-淘宝比价定向爬虫学习笔记
  14. Geek生活--netHack
  15. 数学:一夜读罢头飞雪
  16. 结对项目——最大联通子数组
  17. iOS Crash报告分析
  18. Springboot中设置response直接在线打开文件
  19. 图像处理 有损压缩-变换编码
  20. php融云开源sdk使用im,融云 IM SDK 集成 --- 刷新会话界面和会话列表界面

热门文章

  1. 如何优化 Compose 的性能?通过「底层原理」寻找答案 | 开发者说·DTalk
  2. 【机会约束、鲁棒优化】具有排放感知型经济调度中机会约束和鲁棒优化研究【IEEE6节点、IEEE118节点算例】(Matlab代码实现)
  3. img图片实现背景图片的效果、img平铺、object-fit
  4. 记录与html的第一次正式相遇
  5. 调节e18-d80nk的测量距离_线缆太长负载太远,负载端电压难测量?三种方法帮你搞定...
  6. smartgit破解
  7. [转]Smartgit :Remove Discard Delete
  8. EPC术语(英中文对照)
  9. java合并排序_Java中的合并排序算法
  10. 我出了道面试题,然后差点被打了