matlab制作以太网数据接收上位机_【正点原子FPGA连载】第四十六章以太网传输视频实验-摘自【正点原子】开拓者 FPGA 开发指南...

本实验使用正点原子开拓者FPGA开发板,结合OV7725摄像头,通过以太网接口将视频数据发送到上位机进行实时显示。介绍了以太网视频传输的原理,包括TCP与UDP的区别,以及在实时视频传输中为何选用UDP。硬件设计涉及OV7725和以太网接口,程序设计重点在图像数据的封装和UDP模块。实验验证部分展示了如何下载程序,以及在上位机通过RawNetCapture软件接收并显示视频画面。
摘要由CSDN通过智能技术生成

1)实验平台:正点原子开拓者FPGA 开发板

2)摘自《开拓者FPGA开发指南》关注官方微信号公众号,获取更多资料:正点原子

3)全套实验源码+手册+视频下载地址:正点原子资料下载中心 - 正点原子资料下载中心 1.0.0 文档

cdcabd535da63c2bd7d3f969bfc1bdba.png

第四十六章 基于OV7725的以太网传输视频实验

在“OV7725摄像头VGA显示实验”中,我们成功地在VGA显示器上实时显示出了摄像头采集

的图像;在“以太网通信实验”中,我们通过网口调试助手成功地和开发板完成了以太网通信

的功能。本章我们将使用FPGA开发板实现对OV7725的数字图像采集,并通过开发板上的以太网

接口发送给上位机实时显示。

本章包括以下几个部分:

46.1 以太网视频传输简介

46.2 实验任务

46.3 硬件设计

46.4 程序设计

46.5 下载验证

以太网视频传输简介

随着图像技术、监控技术的发展,通信的数据量越来越大,这无疑对数据传输系统的实时

性、稳定性和高效性都提出了苛刻的要求。对于大量数据的高速传输,一般使用以太网或者usb

传输方案,而以太网相比于usb,有着传输距离更远的优势。传统的以太网视频传输方案采用

百兆以太网进行传输,对于高帧率、高分辨率的视频才会用到千兆以太网,本章将使用开发板

上的百兆以太网PHY芯片学习如何使用以太网传输视频并通过上位机实时显示。

以太网实时视频传输采用的传输层方案一般有TCP和UDP两种。TCP协议能为两个端点间的

数据传输提供相对可靠的保障,这种保障是通过一个握手机制实现的。当数据发送给接收者时,

接收者要检查数据的正确性,当接收者接收到正确数据后给发送者一个确认报文信号,发送者

只有接收到接收者的确认报文信号后才能发送下一个数据块。如果没有接收到确认报文,这个

数据块就必须要重新发送。尽管这种机制对传输数据来说是非常合理的,但当它用在以太网视

频实时传输时就会引发很多问题。首先就是延迟问题,在传输信道丢包率较高时,TCP的传输

质量下滑严重,重传拥塞导致视频延时非常大,失去实时互通的意义。UDP同TCP相比能提供更

高的吞吐量和较低的延迟,非常适合低延时的视频传输场合。

UDP性能的提高是以不能保障数据完整性为代价的,它不能对所传数据提供担保,有时会

出现数据丢包的现象。为了降低丢包对视频显示带来的影响,我们为每帧图像添加一个帧头,

用于标志一帧图像的开始。上位机解析到图像帧头之后,接下来将接收到的像素数据重新放到

图像显示区域的起始位置,保证了在视频传输过程中,即使出现丢包的现象,视频也能恢复到

正常显示的画面。

实验任务

本节实验任务是使用FPGA开发板及OV7725摄像头实现图像采集,并通过开发板上的以太网

接口发送给上位机实时显示。

硬件设计

摄像头扩展接口原理图及OV7725模块说明与“OV7725摄像头VGA显示实验”完全相同,请

参考“OV7725摄像头VGA显示实验”硬件设计部分。以太网接口部分的硬件设计请参考“以太

网通信实验”中的硬件设计部分。

由于OV7725、以太网接口和SDRAM引脚数目较多且在前面相应的章节中已经给出它们的管

脚列表,这里不再列出管脚分配。

程序设计

OV7725在VGA(分辨率为640*480)帧模式下,以RGB565格式输出最高帧率可达60Hz,每秒

钟输出的数据量达到60*640*480*16bit = 294912000bit = 281.25Mbit。我们FPGA开发板上的

PHY芯片类型为百兆以太网,理论上最大传输速率为100Mbit/s,加上帧头、CRC校验以及帧间

隙带来的额外开销,实际上能达到的最大传输速率比理论上最大传输速率低。如果直接通过以

太网发送图像数据,由于数据传输速度不够而无法实时发送摄像头采集的一帧完整图像,因此

必须先缓存一帧图像之后再通过以太网发送出去。我们FPGA开发板芯片型号为 EP4CE10F17C8,

从Altera提供的Cyclone IV器件手册可以发现,EP4CE10的片内存储资源为414Kbit,远不能达

到存储要求。因此只能使用板载的外部存储器:SDRAM。我们FPGA开发板上的SDRAM容量为

256Mbit,足以满足缓存图像数据的需求。

图 46.4.1是根据本章实验任务画出的系统框图。PLL时钟模块用于为IIC驱动模块、SDRAM

控制模块提供驱动时钟,而UDP模块的驱动时钟是由开发板上的PHY芯片提供。I2C驱动模块和

I2C配置模块用于初始化OV7725图像传感器;摄像头采集模块负责采集摄像头图像数据,并且

把图像数据写入SDRAM读写控制模块中;SDRAM读写控制模块负责将用户数据写入和读出片外

SDRAM存储器;图像数据封装模块从SDRAM读写控制模块中读出数据,封装成以太网发送模块的

数据格式,包括添加图像的帧头;以太网发送模块发送封装后的图像数据,其发送的CRC校验

值由CRC32校验模块负责计算。

OV7725的以太网视频传输系统框图如下图所示:

0b3862c40c1b5770202944e3510b5f32.png

图 46.4.1 基于OV7725的以太网视频传输系统框图

顶层模块的原理图如下图所示:

cc9d232498c6814f8463bb2039f40890.png

图 46.4.2 顶层模块原理图

由上图可知,FPGA顶层模块(ov7725_rgb565_640x480_udp_pc)例化了以下七个模块:PLL

时钟模块(pll_clk)、I2C驱动模块(i2c_dri)、I2C配置模块(i2c_ov7725_rgb565_cfg)、

摄像头图像采集模块(cmos_capture_data)、SDRAM读写控制模块(sdram_top)、图像数据封装模块(img_data_pkt)和UDP模块(udp)。

PLL时钟模块(pll_clk):PLL时钟模块通过调用锁相环(PLL)IP核来实现,总共输出3

个时钟,频率分别为100Mhz、100Mhz(SDRAM相位偏移时钟)和25Mhz时钟。100Mhz时钟和100Mhz

相位偏移时钟作为SDRAM读写控制模块的驱动时钟,25Mhz时钟作为I2C驱动模块的驱动时钟。

I2C驱动模块(i2c_dri):I2C驱动模块负责驱动OV7725 SCCB接口总线,用户可根据该模

块提供的用户接口可以很方便的对OV7725的寄存器进行配置,该模块和“EEPROM读写实验”章

节中用到的I2C驱动模块为同一个模块,有关该模块的详细介绍请大家参考“EEPROM读写实验”

章节。

I2C配置模块(i2c_ov7725_rgb565_cfg):I2C配置模块的驱动时钟是由I2C驱动模块输出

的时钟提供的,这样方便了I2C驱动模块和I2C配置模块之间的数据交互。该模块寄存需要配置

的寄存器地址、数据以及控制初始化的开始与结束,同时该模块输出OV7725的寄存器地址和数

据以及控制I2C驱动模块开始执行的控制信号,直接连接到I2C驱动模块的用户接口,从而完成

对OV7725传感器的初始化。有关该模块的详细介绍请大家参考“OV7725摄像头VGA显示实验”

章节。

摄像头图像采集模块(cmos_capture_data):摄像头采集模块在像素时钟的驱动下将传

感器输出的场同步信号、行同步信号以及8位数据转换成SDRAM读写控制模块的写使能信号和16

位写数据信号,完成对OV7725传感器图像的采集。有关该模块的详细介绍请大家参考“OV7725

摄像头VGA显示实验”章节。

SDRAM读写控制模块(sdram_top):SDRAM读写控制器模块负责驱动SDRAM片外存储器,缓

存图像传感器输出的图像数据。该模块将SDRAM复杂的读写操作封装成类似FIFO的用户接口,

非常方便用户的

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值