利用FPGA设计万兆网络摄像头

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用FPGA设计万兆网络摄像头
摘要: 随着网络技术的飞速发展,安防领域的需求不断提升,网络摄像头越来越
多的被应用在各个领域,传统的网络摄像头多采用硬件、操作系统、软件的形式
实现,在一些持续性的不间断的场景下可尝试纯硬件结构设计。

本设计采用以FPGA为核心器件,将图像的采集算法、UDP协议传输,通过VHDL语言和Vivado
集成开发环境完成顶层文件、COMS控制、FIFO控制、UDP发送、参数配置等模
块的设计并进行时序测试等工作,实现以FPGA为核心元器件的硬件式万兆以太
网络摄像头的设计。

其并行运算模式大大提升了数据处理速度,硬件电路设计大
大提高了稳定性与安全性。

关键词:FPGA 网络摄像头 VHDL语言 UDP协议
一、FPGA与其内部结构
FPGA通常来说全称为现场可编程门阵列,该芯片实则是在传统的逻辑电路以
及门阵列之中开拓而来。

该芯片与ASIC有差异的是,前者实则为半定制的传统电路,该芯片的功能可依靠重复编程以实现所需要的功能,同时在该芯片内部蕴含
数量巨大的可编程逻辑器件以及布线资源[1]。

该芯片内涵含有逻辑模块、IO模块以及由内部的连线组建而成的基本逻辑模
块阵列,这也是该芯片内的基础单元。

该芯片逻辑功能可以依靠芯片内部的查找
表以此实现其预期功能。

触发器可以连接并驱动其他的逻辑电路从而实现各式各
样的组合电路和时序电路功能。

二、VHDL语言
VHDL语言于上世纪80年代后期开发,是一种电路设计的高级语言。

该语言
全称为超高速集成电路硬件描述语言,通常来说大部分应用于数字电路领域。


实体模块的内外部预期功能开发结束后,其余部分的功能需求设计均可以直接调
用该模块。

这是使用该语言进行程序设计的一个独有特点,该特点与模块组合的
概念雷同[2]。

该语言可依靠自身的科学语言架构以及其语言代码以实现对预期功
能的设计。

通过对实体模块的选用,预期功能的详细描述,最终可以完成电路级
描述的设计。

该语言的设计形式多种多样,用户可选择自下而上的程序设计流程,亦可以选择自上而下的设计流程;可完成同步异步的电路流程设计。

三、UDP协议
UDP协议全称为用户数据报协议,该协议实则为OSI参考模块中的一种无线
传输协议。

它的特点是数据包不要求按照排序先手传输,而只提供数据包的序号,排序的内容交给应用层来完成。

该协议传输方式相对来说比较简易,虽然该协议
的报文并无可靠性、顺序性以及控制性的要求,但是相反也在很大程度上简化了
传输流程,以此提高速率。

在对速度要求很高,精确度不是特别高的场合比较实用,比如视频图像传输[3]。

该协议的数据报主要来说是通过协议报文头以及协议数据相之构成,该协议
的报文头主要通过源端口号、目的端口号、数据报长度以及校验相互组建而成。

数据报的长度是整个报文的长度,单位为字节。

理论上数据报总字节数是65535,通常会小于这个值[4]。

UDP协议的组成如表3-1所示。

表3-1 UDP协议组成部分
Tab.3-1 UDP protocol components
四、功能模块与程序设计
总程序实现COMS视频采集控制、视频图像的网络传输等功能,硬件采用COMS模组,通过配置COMS模组的相关寄存器实现JPG视频压缩的图像输出。

网络传输用Ethernet UDP通信协议,达到视频图像数据的快速传输,上位机通过网口接收UDP数据包,提取JPG的图像数据并显示在电脑上。

在FPGA内部,设计使用一个FIFO控制模块用于存储摄像头COMS模组采集的JPG图像数据,当FIFO数据的数量达到一个UDP数据包的长度时,触发一次UDP的数据包发送。

总设计逻辑框如图4-2所示。

设计是一个顶层设计包含6个子模块,分别是UDP数据发送模块、FIFO读写控制模块、PLL模块、图像获取模块、寄存器配置模块,以及上电延迟模块。

下面分别介绍各个模块的设计过程。

4.1 TOP程序
该程序定义了完整程序的IO接口以及接口端位数,与此同时实例化了协议数据,另外调用了一个PLL IP来产生24Mhz的时钟提供给COMS模组。

设计采用自上而下分层次分模块的方法,TOP程序中各子模块的编写见图4-3所示。

在编写完总模块的接口与连线后,在编译平台的Synthesize-XST的子目录ViewRTL Schematic可以查看TOP程序的原理图,如图4-4。

4.2 FIFO控制模块
Xilinx的FPGA集成开发环境已经有FIFO控制器的内核,这里直接调用即可,在调用前需要根据设计配置数据参数,这里设置输入输出数据统一为8位,写深度为2048位。

FIFO 的具体配置过程如图4-5所示。

另外 FIFO 会输出一个rd_data_count信号指示FIFO内部可读数据的长度,程序中会判断此信号来决定发送 UDP 的数据包。

如图4-6所示。

4.3 UDP 网络数据发送
整个硬件设计主要由一个顶层模块UDP和两个子模块:UDP发送模块和CRC 校验模块组成。

UDP顶层程序实例化了UDP模块,定义了UDP模块接口,为总程序调用,UDP的顶层模块示意图如图4-7。

双击顶层模块示意图出现了UDP发送模块和CRC校验模块并且给出二者连线如图4-8所示。

程序中会用FIFO的数据长度信号fifo_data_count来判断是否触发UDP数据的发送,如果fifo_data_count 长度大于1024,发送一个UDP数据包。

该部分程序如图4-9。

程序中发送frame_index的参数给PC,这样PC软件可以用这个信号来确认这是一帧中的第几个数据包。

编程后的部分结构原理图如图4-10所示。

4.4寄存器配置
我们可以据用户所需要的COMS模组摄像头的储存器,使得储存器输出的图
像像素选择为800*600,图像格式所输出图像的每帧所显示视频数据均有所差异,该模式下所输出模式总计共6种,论文所述的程序流程中将图像设置为JPEG模式,该图像格式每行的长度均为定值,图像各帧均由不同行数组成,程序参数的
匹配可以通过数据编程以实现预期设定,如图4-11所示。

4.5 PLL锁相环
PLL通常称为锁相环,是前文所述芯片中的一项重要资源,因为通常来说一个相对较为复杂的芯片系统,经常需多种频率以及各种相位的信号。

因此,一个芯
片中所含的锁相环数量,通常来说是判断芯片性能的一项参数指标。

在芯片的程
序设计中,时钟系统的高速设计相对来说比较重要,系统中如果产生略微抖动以
及延迟,系统时钟将会提升芯片的成功率。

赛灵思品牌在该芯片中,给予了大量的有效资源,其中大量的设计人员在其
自身的芯片设计之中均可直接使用[5]。

在Spartan6的芯片中,含有大量的数字时
钟管理器(DCM)以及锁相环(PLL)时钟产品。

使用者可直接使用芯片中的管理器以
及锁相环资源,以便于实现延迟与抖动的需求。

锁相环以及管理器有其各自的功能。

锁相环大部分应用于频率比较综合的场合。

通过使用一个锁相环,便通过利
用一个输入信号便可以衍生出多个信号。

将此结合管理器的应用,便可以用作抖
动滤波器。

Spartan-6有专用于的管理器到锁相环以及从锁相环至管理器的线路。

Spartan-6中的锁相环输出属于非扩频模式。

设计人在使用不同种类的时钟信号时,均能够直接调用锁相环来调换管理器。

锁相环时钟信号所输出的宽范设置范围,
然而管理器所输出的信号均属于实现设定,不能在日后的调配中设定,锁相环以
及管理器所选择的程序均可以满足设计的要求。

然而如果相移是程序中所需要的,首先应选择管理器模式。

锁相环内部框图如下图4-13所示。

五、效果展示
在上位机配置好IP地址等信息,抓包成功后,利用上位机网络视频接收软件
进行图像显示效果如图5-1所示。

图5-1 视频效果
Fig.5-1 Video result
[1]Tlelo-Cuautle E, Rangel-Magdaleno J J, Pano-Azucena A D, et al. FPGA realization of multi-scroll chaotic oscillators[J]. Communications in Nonlinear Science and Numerical Simulation, 2015, 27(1-3): 66-80.
[2]Gil P J, Gil D, Gracia J, et al. A Prototype of a VHDL-Based Fault Injection Tool[J]. Journal of Systems Architecture, 2002, 47(10):847-867.
[3]戴卫兵, 陈欣荣, 黄建文. VHDL 行为描述的功能模拟[J]. 江苏大学学报:自然科学版, 1998(6):50-55.
[4]Parker W J, Jenkins R J, Butler C P, et al. Flash Method of Determining Thermal Diffusivity, Heat Capacity, and Thermal Conductivity[J]. Journal of Applied Physics, 2004, 32(9):1679-1684.
[5]Arnold M. Verilog Digital Computer Design: Algorithms Into Hardware[J]. Microelectronics Journal, 1998, 31(5):371-372.。

相关文档
最新文档