DM9000A在高清网络相机中的应用改进

2014-08-16 01:08郑雪丽
网络安全与数据管理 2014年9期
关键词:寄存器以太网传输

郑雪丽,汪 涛

(重庆大学 物理学院,重庆 400040)

随着嵌入式技术和网络技术的发展,各种应用设备的网络成为未来发展的一个重要方向,网络相机就是近年来在传统相机的基础上结合网络技术发展而来的。随着人们生活水平的提高,人们对相机图像分辨率不断提出新的要求,传统的基于ARM和DSP等技术的网络相机已经无法达到实时要求。本文采用集成度高、灵活性高以及并行处理能力强的FPGA作为系统核心器件来设计一款500万像素实时压缩与传输的高清网络相机,重点介绍在FPGA平台上提高DM9000A发送数据带宽的两点应用改进。

1 硬件设计

DM9000A是Davicom公司推出的一款高速以太网接口芯片,是完全集成的符合成本效益的单芯片快速以太网MAC控制器,其功耗低,处理性能高,而其操作又非常简单,具有通用的处理器接口,可以与多种处理器直接连接,数据总线宽度可设置为8 bit和16 bit,支持 3.3 V和5 V电源模式[1]。

EP3C55是Altera公司低成本、低功耗的CycloneⅢ系列FPGA器件,该器件具有5.5万个IE逻辑单元,2.4 MB的嵌入式RAM资源和312个硬件乘法器[2]。

在本设计中,EP3C55控制整个系统的运行。EP3C55首先需要完成对DM9000A的初始化。完成对CMOS摄像头的初始化,然后启动图像采集,对图像数据进行JPEG压缩,再通过 DM9000A发送至 PC,同时 DM9000A还接收从PC发送过来的控制数据帧,由FPGA负责对数据进行解析并进行相应的控制操作,系统的硬件设计框图如图1所示。

图1 系统硬件框图

系统中FPGA与DM9000A的接口如图2所示,DM9000A采用 16位总线操作模式,SD0~SD15、CMD、INT、IOR、IOW均与 FPGA的通用I/O口相连。

2 对FPGA操作DM9000A的改进

2.1 Nios CPU与硬件模块切换操作DM9000A

本设计使用DM9000A实时传输JPEG压缩后的500万像素图片,需要达到14帧/s的实时速度。为了保证图像质量,压缩比选择在25倍左右,通过计算可知DM9000A的速度需要达到55 Mb/s左右。由于DM9000A操作需要一个复杂的初始化流程,因此通常在FPGA驱动DM9000A时均采用如Nios或者Microblaze等FPGA内嵌CPU的形式[3-4]。因为使用FPGA内嵌CPU,通常都是使用GPIO模拟DM9000A接口时序,对DM9000A进行读写操作,DM9000A的并口最大支持100 MHz的操作速度,而嵌入CPU的GPIO通常最大频率也只能达到1 MHz~2 MHz的频率,最终导致DM9000A的网络速度不会大于10 Mb/s,所以采用内嵌CPU后,虽然提高了对DM9000A操作的灵活性,但却大幅度降低了对DM9000A的操作速度。为了消除该瓶颈,使网络速度达到要求,本文提出了如图3所示的NiosⅡ嵌入式CPU与硬件逻辑模块切换操作DM9000A的模式。

图2 FPGA与DM9000A之间的接口

图3 DM9000A控制模块

图3所示模块是一个自定义的AVALON-MM设计,由NiosⅡ CPU控制该模块的各种操作,该模块定义了一个状态寄存器IMAGE_STATE_REG和一个控制寄存器IMAGE_CONTROL_REG。32位状态寄存器的[4:0]代表FIFO1深度,[5]位代表 FIFO1错误,[6]位代表 FIFO2错误,[7]位代表硬件逻辑一次传输完成标志,[8:19]代表本次传输包序号,[20:31]代表本次传输包的有效数据长度。32位的控制寄存器的[0]位控制总线切换,[1]位控制硬件逻辑的发送使能,[2]位控制读取FIFO1,[3]位控制复位FIFO1和FIFO2。

FPGA通过DM9000A发送出的图像帧长度固定为1 442 B,其中 42 B为包头,1 400 B为图像数据,而图像数据中最开始的4个字节是从ISR读出来的图像帧符号和有效图像长度,JPEG压缩模块按照该格式对压缩后的数据进行打包,先往FIFO2中不断写入图像数据,当图像数据满1 400 B时即往FIFIO1写入一个命令数据,当每一帧图像的最后一个包不满1 400 B时,将向FIFO2中写0补足1 400 B,同时在FIFO1中写入命令数据时指示本包中的有效图像长度。CPU初始化DM9000A以及从FIFO1、FIFO2读出数据的具体流程如图4所示。

图4 NiosⅡ与硬件逻辑切换操作DM9000A发送包流程

使用该方法可以完全清楚因为读写DM9000A接口引起的网络速度瓶颈,然而使用该方法后,DM9000A最大速度还只能达到50 Mb/s左右,因此又提出如下的改进。

2.2 发送数据包程序的优化

通常控制DM9000A发送一包网络数据的流程是首先向DM9000A缓冲区写入数据,然后写入本次需要发送数据的长度至DM9000A寄存器,再启动发送使能,发送下一帧数据之前首先不断读取DM9000A的发送完成状态寄存器。通过分析这种流程发现,向DM9000A缓冲区写入数据需要大量时间,另外DM9000A发送一包数据又需要大量时间,而这两部分时间又是完全不重叠的,由此才导致DM9000A速度最大只能达到50 Mb/s。如何进一步提高DM9000A的网络速度?通过仔细查看DM9000A的数据手册发现,DM9000A支持最多在发送缓冲区存放两帧数据,DM9000A会自动根据写入的先后顺序对数据帧编号,同时又针对不同帧的状态寄存器。本文发送的一个数据包长度为1 400 B,发送缓冲区大小为3 KB,因此缓冲区大小满足同时存在两个帧的需求,本应用中可以采用DM9000A发送数据的同时写入数据,优化后的数据发送流程如图5所示。

使用该优化方法后,DM9000A的数据发送带宽可以稳定达到75 Mb/s,满足了本设计对网络带宽的需求。

系统采用Altera FPGA EP3C55控制DM9000A以太网控制器实现压缩图像的以太网传输,创新性地提出了采用FPGA内嵌CPU与硬件逻辑交替控制DM9000A的方式来提高DM9000A的网络带宽,另外还通过优化DM9000A的软件程序,使得FPGA使用DM9000A发送网络数据的带宽稳定达到75 Mb/s。本系统最终使得DM9000A网络部分满足高清图像压缩后实时传输的需求,同时有力地拓宽了FPGA在嵌入式网络设计方面的应用范围。

图5 优化后的DM9000A发包程序流程

[1]DAVICOM SemiconductorInc.DM9000A技术手册[Z].DVICOM半导体有限公司,2006.

[2]AlteraCorporation.CYCLONE III.技术手册[Z].Altera Corporation,2008.

[3]薛吴,佘勇,姚振东,等,基于 MicroBlaze和 DM9000A的以太网接口设计[J].通信技术,2013,46(2):32-34.

[4]徐洪建.基于DM9000A的网络接口设计[J].现代电子技术,2012,35(12):19-21

[5]徐晶晶.基于FPGA的交通监控视频采集系统研究[D].大连:大连海事大学,2009.

猜你喜欢
寄存器以太网传输
STM32和51单片机寄存器映射原理异同分析
混合型随机微分方程的传输不等式
牵引8K超高清传输时代 FIBBR Pure38K
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
Lite寄存器模型的设计与实现
关于无线电力传输的探究
移位寄存器及算术运算应用
支持长距离4K HDR传输 AudioQuest Pearl、 Forest、 Cinnamon HDMI线
谈实时以太网EtherCAT技术在变电站自动化中的应用
浅谈EPON与工业以太网在贵遵高速公路中的应用