FPGA设计——CMOS图像采集与以太网传输显示(MT9V011)

简介:

1. 概述

本设计采用FPGA技术,将CMOS摄像头(DVP接口)的视频数据采集,并通过以太网传输(UDP方式)给PC机,上位机DEMO通过套接字编程,将视频实时显示在屏幕上。

2. 硬件系统框图

CMOS采用MT9V011(30万像素),FPGA采用ALTERA公司的CYCLONE IV,以太网卡采用REALTK公司的100M网卡芯片,硬件框图如下:

wKiom1nS6eSiGqN5AACOInS1NTg961.png


硬件平台采用ETree的FPGA开发板(某宝提供),如下图所示:

wKiom1nS6FmhvKdDAAFKKj1sHt0566.jpg-wh_50

3. UDP/IP协议

UDP(User Datagram Protocol)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。UDP协议经常用于图像传输、网络监控数据交换等数据传输速度要求比较高的场合。

wKioL1nS6Nzjj4FwAAA2QS0P4nQ938.jpg

IP(Internet Protoco)包位于网络层,功能是把分组发往目标网络或主机。所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。

wKiom1nS6VyS8u0WAAAf9ftXyRg305.png

以太网的数据帧的传输过程中,包长一般在46~1500字节,这里将UDP包长设计为:(8+20+640*2)=1308字节,以提高传输效率。

4. FPGA逻辑设计

FPGA各部分逻辑模块如下图所示:

wKioL1nS6XTDpJyVAAAfK_Q16Yg945.jpg


  • CMOS Capture,采集CMOS的DVP视频流;

  • I2C Config,配置CMOS芯片;

  • FIFO,实现CMOS时钟域到以太网时钟域之间的转换;

  • UDP Pack,实现UDP/IP协议的实现。

下面为MT9V011的初始化配置代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
reg [23:0]lut_data;
 
reg [7:0]lut_index;   
 
always @(*)
begin
     case (lut_index)
     0   :   lut_data     <= 24'h01_000b;        //First row to read
     1   :   lut_data  <= 24'h02_0012;      //Firts column to read
     2   :   lut_data  <= 24'h05_0083;      //bit 0-9 h-blank
     3   :   lut_data  <= 24'h06_001c;      //bit 0-11 v-blank
     4  :  lut_data  <= 24'h35_0313;      //global gain: 0-6(initial gain) 7-8(analog gain) 9-10(total gain)
     5  :  lut_data  <= 24'h20_1000;        //bit 15: upside down, bit 14: mirror(right to left)
//  6  :  lut_data  <= 24'h07_3302;       //bit 2: chip enable, bit 15: pclk invert, 8-11 
         7  :  lut_data  <= 24'h09_01cf;        //bit 0-11, shutter width
     
     default :lut_data    <=   24'h000000;
     endcase
end

5. 上位机Demo实现

本设计采用VC++ 2010设计了一款简易的UDP网络视频流播放器,视频源为RAW8格式,分辨率640*480,帧率25Hz。Windows为我们提供了便捷的套接字(socket)编程方式,软件工程师方便实现网络编程。

wKiom1nS6qXSd8d3AAEK52sAVsc924.png-wh_50

6. 视频显示结果

给FPGA板卡上电,打开UDP demo软件,视频正常显示,效果比OV7670好很多,如下图所示。

wKiom1nS6wPCiI6NAAEIUx68AJA054.jpg



本文转自 shugenyin 51CTO博客,原文链接:http://blog.51cto.com/shugenyin/1970271

相关文章
|
6月前
|
存储 缓存 算法
基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像RGB转HSV实现,包含testbench和MATLAB辅助验证程序
基于FPGA的图像RGB转HSV实现,包含testbench和MATLAB辅助验证程序
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像PSNR质量评估计算实现,包含testbench和MATLAB辅助验证程序
基于FPGA的图像PSNR质量评估计算实现,包含testbench和MATLAB辅助验证程序
|
6月前
|
算法 异构计算
基于FPGA的图像高斯滤波实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像高斯滤波实现,包括tb测试文件和MATLAB辅助验证
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像形态学腐蚀算法实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像形态学腐蚀算法实现,包括tb测试文件和MATLAB辅助验证
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像差分运算及目标提取实现,包含testbench和MATLAB辅助验证程序
基于FPGA的图像差分运算及目标提取实现,包含testbench和MATLAB辅助验证程序
|
5月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```
|
5月前
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
6月前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到&quot;result.txt&quot;以供MATLAB显示图像分割效果。
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证
该内容展示了FPGA实现图像累积直方图的算法。使用Vivado2019.2和matlab2022a,通过FPGA的并行处理能力优化图像处理。算法基于像素值累加分布,计算图像中像素值小于等于特定值的像素个数。核心代码为`test_image`模块,读取二进制图像文件并传递给`im_hist`单元,生成直方图和累积直方图。

热门文章

最新文章