
利用FPGA设计万兆网络摄像头.docx
12页利用FPGA设计万兆网络摄像头 摘要: 随着网络技术的飞速发展,安防领域的需求不断提升,网络摄像头越来越多的被应用在各个领域,传统的网络摄像头多采用硬件、操作系统、软件的形式实现,在一些持续性的不间断的场景下可尝试纯硬件结构设计本设计采用以FPGA为核心器件,将图像的采集算法、UDP协议传输,通过VHDL语言和Vivado集成开发环境完成顶层文件、COMS控制、FIFO控制、UDP发送、参数配置等模块的设计并进行时序测试等工作,实现以FPGA为核心元器件的硬件式万兆以太网络摄像头的设计其并行运算模式大大提升了数据处理速度,硬件电路设计大大提高了稳定性与安全性关键词:FPGA 网络摄像头 VHDL语言 UDP协议1. 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 components16位源端口号16位目的端口号16位UDP长度16位UDP检验和数据四、功能模块与程序设计总程序实现COMS视频采集控制、视频图像的网络传输等功能,硬件采用COMS模组,通过配置COMS模组的相关寄存器实现JPG视频压缩的图像输出网络传输用Ethernet UDP通信协议,达到视频图像数据的快速传输,上位机通过网口接收UDP数据包,提取JPG的图像数据并显示在电脑上在FPGA内部,设计使用一个FIFO控制模块用于存储摄像头COMS模组采集的JPG图像数据,当FIFO数据的数量达到一个UDP数据包的长度时,触发一次UDP的数据包发送总设计逻辑框如图4-2所示图4-1信号触发时序图4-2设计逻辑框图Fig.4-2 Signal Trigger TimingFig.4-2 Design logic diagram设计是一个顶层设计包含6个子模块,分别是UDP数据发送模块、FIFO读写控制模块、PLL模块、图像获取模块、寄存器配置模块,以及上电延迟模块。
下面分别介绍各个模块的设计过程4.1 TOP程序该程序定义了完整程序的IO接口以及接口端位数,与此同时实例化了协议数据,另外调用了一个PLL IP来产生24Mhz的时钟提供给COMS模组设计采用自上而下分层次分模块的方法,TOP程序中各子模块的编写见图4-3所示在编写完总模块的接口与连线后,在编译平台的Synthesize-XST的子目录ViewRTL Schematic可以查看TOP程序的原理图,如图4-4a) 上电延迟实例化b) 寄存器配置实例化a) Power on delayb) Register configurationc) COMS控制实例化d) FIFO控制实例化c) COMS controld) FIFO controle) UDP实例化f) PLLl实例化e) UDP sendf) PLL model图 4-3 TOP程序各部分Fig.4-3 TOP program parts图4-4 TOP程序结构Fig.4-4 TOP program structure4.2 FIFO控制模块Xilinx的FPGA集成开发环境已经有FIFO控制器的内核,这里直接调用即可,在调用前需要根据设计配置数据参数,这里设置输入输出数据统一为8位,写深度为2048位。
FIFO 的具体配置过程如图4-5所示图4-5 FIFO内核初始化Fig.4-5 FIFO core initialization图4-6 数据计数程序Fig.4-6 Data counting program另外 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-7 UDP结构Fig.4-7UDP structure图4-8 Crc与Ipsend连线Fig.4-8 Crc connection with Ipsend图4-9 数据发送程序Fig.4-9 Data transmission programming编程后的部分结构原理图如图4-10所示。
图4-10UDP内部分原理图Fig.4-10 UDP internal schematic4.4寄存器配置我们可以据用户所需要的COMS模组摄像头的储存器,使得储存器输出的图像像素选择为800*600,图像格式所输出图像的每帧所显示视频数据均有所差异,该模式下所输出模式总计共6种,论文所述的程序流程中将图像设置为JPEG模式,该图像格式每行的长度均为定值,图像各帧均由不同行数组成,程序参数的匹配可以通过数据编程以实现预期设定,如图4-11所示图4-11 COMS寄存器配置编程Fig.4-11 COMS register configuration programming部分内部结构如图4-12所示图4-12寄存器配置模块部分内部原理图Fig.4-12The internal schematic diagram of the register configuration module4.5 PLL锁相环PLL通常称为锁相环,是前文所述芯片中的一项重要资源,因为通常来说一个相对较为复杂的芯片系统,经常需多种频率以及各种相位的信号因此,一个芯片中所含的锁相环数量,通常来说是判断芯片性能的一项参数指标。
在芯片的程序设计中,时钟系统的高速设计相对来说比较重要,系统中如果产生略微抖动以及延迟,系统时钟将会提升芯片的成功率赛灵思品牌在该芯片中,给予了大量的有效资源,其中大量的设计人员在其自身的芯片设计之中均可直接使用[5]在Spartan6的芯片中,含有大量的数字时钟管理器(DCM)以及锁相环(PLL)时钟产品使用者可直接使用芯片中的管理器以及锁相环资源,以便于实现延迟与抖动的需求锁相环以及管理器有其各自的功能锁相环大部分应用于频率比较综合的场合通过使用一个锁相环,便通过利用一个输入信号便可以衍生出多个信号将此结合管理器的应用,便可以用作抖动滤波器Spartan-6有专用于的管理器到锁相环以及从锁相环至管理器的线路Spartan-6中的锁相环输出属于非扩频模式设计人在使用不同种类的时钟信号时,均能够直接调用锁相环来调换管理器锁相环时钟信号所输出的宽范设置范围,然而管理器所输出的信号均属于实现设定,不能在日后的调配中设定,锁相环以及管理器所选择的程序均可以满足设计的要求然而如果相移是程序中所需要的,首先应选择管理器模式锁相环内部框图如下图4-13所示图4-13 PLL内部功能Fig.4-13 PLL internal functions其内部结构如图4-14所示。
图4-14 PLL内部结构Fig.4-14 PLLinside structure5. 效果展示在上位机配置好IP地址等信息,抓包成功后,利用上位机网络视频接收软件进行图像显示效果如图5-1所示图5-1 视频效果Fig.5-1 Video result1. 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]. Microel。
