摘 要:由于DM9000A需要复杂的初始化流程,因此多采用ARM或者内嵌CPU的FPGA驱动,而使用这两者通常都不能充分利用DM9000A的网络带宽。将DM9000A应用在以FPGA器件为核心器件的网络相机系统中。为了提高DM9000A的网络发送带宽,对DM9000A在FPGA平台上的使用提出两点改进,并在应用系统中验证了改进的可行性。
关键词:DM9000A;高清网络相机;FPGA
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所示。
系统中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的模式。
图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所示。
使用该方法可以完全清楚因为读写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在嵌入式网络设计方面的应用范围。
参考文献
[1] DAVICOM Semiconductor Inc. DM9000A技术手册[Z].DVICOM开云棋牌官网在线客服有限公司,2006.
[2] Altera Corporation. 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.