针对目前嵌入式智能图像处理系统中的图像数据的传输问题与多DSP、多FPGA间的并行问题,提出并设计了以DSP+FPGA为系统核心,通过TMS320C6455 DSP外设接口进行扩展的嵌入式智能图像处理系统,能够实现图像的实时采集、解析及处理功能;同时开发了基于TMS320C6455 DSP的千兆以太网数据传送接口和高速串行接口,实现了图像处理的网络化和并行化。最后对以太网的数据传输进行了测试,测试结果表明,开发的以太网数据传送接口达到了千兆以太网的要求。
0 引 言
近年来随着现场可编程门阵列芯片与高性能数字处理器的快速发展,嵌入式计算机智能图像信息处理技术也获得了较大的进步,这就需要更高性能的图像处理系统[1]。但目前图像处理与数据传输的速度间一直存在不协调问题[2?3],总是造成一方资源的浪费。针对此问题,设计了以DSP +FPGA为核心的图像处理系统,用DSP芯片处理控制结构复杂的高层算法,用FPGA芯片处理数据量大的低层算法;同时通过对TMS320C6455 DSP的千兆以太网数据传送接口和高速串行接口的开发,大大提高了图像的处理速度和传输速度。
1 嵌入式智能图像处理系统总体设计
图像识别和跟踪算法复杂且运算量大,对系统的实时性和可靠性都有很高的要求,为此采用TI公司的高端DSP芯片TMS320C6455作为系统的处理核心;同时配合Altera公司的CycloneIII系列可编程逻辑芯片,其主要完成时序控制、图像的预处理和图像的叠加等辅助功能,从而大大提高了系统的可扩展性和灵活性。嵌入式智能图像处理系统的总体结构如图1所示。
设计的嵌入式智能图像处理系统由视频信号转换模块,图像数据处理模块和数据通信模块组成,各模块的主要功能如下:
视频信号转换模块:实现视频编码及视频解码功能,同时完成各种视频信号的收集和转换。
图像数据处理模块:是整个系统的核心模块,由DSP和FPGA组成,FPGA完成视频数据的实时采集、解析及处理,DSP运算资源则尽可能的用于算法处理。
数据通信模块:完成图像数据的传送及多芯片间的通信,由开发的千兆以太网数据传送接口和高速串行接口组成。
2 视频信号转换硬件设计
图像主要是从CCD拍摄到的模拟视频中提取,然后进行数字化处理,最后通过智能图像处理系统进行分析。此处通过专用的视频解码芯片SAA7113[4]、视频编码芯片SAA7121和高速数模转换芯片ADV7123实现视频信号的模数转换,同时专用的视频信号处理芯片也完成了抗混叠滤波、多制式解码和时钟产生等功能,这样既减轻了处理器的压力,又减少了外围芯片的数量。
其中控制模块通过FPGA中的EP3C40实现,具体完成三个功能:视频采集过程与检测的时序控制;由于视频解码芯片SAA7113可支持I2C总线接口,所以采用I2C总线能够选择视频信号的输入格式、输出格式和视频信号通道等,还能对带通滤波频率范围、对比度和亮度进行设定;由于经视频解码芯片SAA7113处理后的信号会送到DSP处理,中间过程图像的缓存也是采用EP3C40控制。
系统采用的视频解码芯片SAA7113可支持4路标准模拟视频的输入,输出8位“VPO”总线,分别为YUV4[∶]2[∶]2和ITU656格式,且能够在NTSC和PAL 格式间自动切换。
系统的视频输出由多级放大后的模拟视频信号送至字符叠加单元后显示输出和经过前端模拟电路、FPGA与DSP处理、然后进行D/A转换的模拟视频输入信号显示两部分组成。具体的视频显示由1 路VGA和2路CVB复合视频组成,VGA视频输出采用ADV7123高速数模转换芯片,能够在液晶屏显示;2路CVB复合视频采用SAA7121视频编码芯片,一路输出字符、图形混合的视频图像,另一路输出未经处理的原始采集的视频图像。
FPGA芯片负责系统叠加显示的软件部分,图像字符叠加模块能够实现在视频输出信号上叠加波门、标志线、跟踪时间、跟踪状态、跟踪模式等字符信息,以便能够在显示器上查看到上述信息,使操作人员方便地对系统运行情况进行监视。
3 图像数据处理软件设计
图像数据处理模块是系统的核心模块,由DSP芯片和FPGA芯片组成[5],其中DSP芯片的运算资源尽可能分配给算法运行,视频数据的采集、解析与处理回放则由FPGA芯片完成。
FPGA芯片通过解码器的同步信号,把各帧数据中的Y,U,V信息提取出来,实现分帧解析。然后根据DSP芯片中的算法要求,有选择地或以帧为单位通过DSP EMIFA接口将图片传送至DSP芯片处理。DSP芯片以帧为单位将回放数据传送至FPGA,FPGA芯片根据视频编码芯片的接口时序,按要求给编码器传送回放数据。
DSP和FPGA使用外接的大容量SDRAM提供回放数据与捕获数据的缓存。DSP芯片外挂大容量的FLASH,FPGA芯片外挂大容量的CF card,从而能够实现芯片上电时从外挂的大容量FLASH中引导数据和程序。
4 数据通信模块设计
在实际的图像处理系统中,图像处理芯片与其他模块的通信能力是系统处理能力提升的瓶颈,为此采用以太网作为底层传输网络,通过TCP/IP协议进行数据通信,应用DSP+PHY结构实现千兆以太网接口的开发。
4.1 基于DSP的千兆以太网总体设计
为满足系统的通信要求,选取包括MDIO接口和EMAC接口的BCM5461S芯片作为千兆以太网控制器,能够与DSP芯片中的MDIO/EMAC模块无缝对接。
本文选用的TMS320C6455芯片的EMAC接口与PHY芯片的连接方式有4种[6],但只有RGMII和GMII连接方式能够实现千兆以太网接口。通过在上电和复位时配置管脚MACSEL[1:0]选择工作模式,具体如下:
MII模式:MACSEL[1:0]=00;
RMII模式:MACSEL[1:0]=01;
RGMII模式:MACSEL[1:0]=11;
GMII模式:MACSEL[1:0]=10。
4.2 基于DSP的千兆以太网硬件设计
千兆以太网中EMAC模块的信号连接原理图如图2所示。
DSP芯片利用MDIO接口和EMAC接口共8根数据线和7根控制线实现与千兆以太网控制器BCM5461S芯片的连接,芯片间各接口完成的功能如下:
TXC:发送时钟。系统在100 Mb/s工作时的频率为25 MHz;系统在1 000 Mb/s工作时的频率为125 MHz;
TXD[3~0]:发送数据总线。数据总线上的数据只有在使能信号TXCTL正常时才有效,数据的低4位在时钟上升沿时传输,数据的高4位在时钟的下降沿时传输;
TXCTL:使能信号发送;
REFCLK:频率为125 MHz的参考时钟;
RXC:接收时钟。系统在100 Mb/s工作时的频率为25 MHz,在1 000 Mb/s工作时的频率为125 MHz;
RXD[3~0]:数据接收总线。数据总线上的数据只有在使能信号RXCTL正常时才有效,数据的低4位在时钟上升沿时传输,数据的高4位在时钟的下降沿时传输;
RXCTL:使能信号接收;
MDCLK:管理时钟数据。DSP芯片上的MDIO模块提供该时钟信号,MDIO模块中的控制寄存器的CLKDIV位控制时钟的具体频率;
MDIO:管理数据线。通过向PHY芯片读出或写入数据帧对PHY芯片配置。该数据帧包括一个帧头、寄存器地址、PHY地址和读写指示。
选取的DSP芯片支持多种接口模式,为方便DSP芯片与PHY芯片的接口,使用RGMII模式进行通信。
4.3 基于DSP的千兆以太网软件设计
通信模块采用TCP/IP协议,软件的执行流程如图3所示。
在任务线程中完成协议的配置,主要包括网关与IP地址的配置。当协议的配置完成后,会触发一个软件中断,中断程序会创建一个侦听端口对网络上的请求进行侦听。当软件检测到上位机有数据传输请求时,会发送一个中断至DSP芯片,DSP芯片通过增强型直接存储器接口对控制器进行访问。当软件接收到一个完整的数据包后,会通过创建硬件EDMA中断设置标志位,之后从硬件中断中退出并回到软件中断中。当软件中断程序检测到标志位置为1时,就开始处理数据。当一个完整的数据包传送完后,会将标志位置为0,重新等待下一个完整的数据包。当完成一次数据传输后,DSP芯片重新开始监听网络端口,等待下次的数据传送。
上位机采用Socket套接字方式进行驱动,该驱动方式无需进行VXD虚拟设备程序的编写,能够直接从网卡中读取数据,软件采用的几个基本套接字程序如下:
(1) 创建套接字?socket():系统通过socket()向应用程序提供创建套接字的方法,调用形式如下:
SOCKET = Socket(int type, int af, int protocol);
该套接字创建函数包括type,af和protocol三个参数。其中,参数type用来描述要创建套接字的类型,参数af用来指定通信区域,参数protocol用来说明套接字所使用的协议,如果操作者无需对使用的协议特别指定,则使用软件默认的连接方式。根据上述参数创建一个套接字,并分配给其相应的资源,同时返回一个套接字号。
(2) 将套接字与本地网卡绑定?bind():当使用socket()创建一个套接字后,就产生了一个未命名的名字空间,然后bind()将本地端口地址、本地主机地址与建立的套接字号相联系,调用形式如下:
Bind (SOCKET s, const struct sockaddr FAR * name, int namelen);
参数[s]表示用socket()调用的且未连接的套接字描述符;参数name表示长度可变的赋给套接字[s]的本地地址;参数namelen表示name的长度。如果绑定过程中无错误产生,bind()的返回值为0,否则返回SOCKET_ERROR。
(3) 建立套接字连接?connect()和accept():connect()用于建立套接字连接,调用形式如下:
connect(SOCKET [s,] const struct sockaddr FAR * name, int namelen);
参数[s]表示创建连接的本地套接字描述符;参数name表示对方套接字地址结构的指针;namelen表示对方套接字地址长度。如果建立套接字连接过程中无错误产生,connect()的返回值为0,否则返回SOCKET_ERROR。
(4) 接收数据包并将其存储在缓存Recv Buf[ ]中,缓冲区的长Size为65 535,recv()的调用形式如下:
ret= recv( SOCKET [s,] struct sockaddr FAR * recv Buf, int FAR * addrlen);
参数[s]表示本地套接字的描述符;recv Buf表示接收数据包的头指针;addrlen表示套接字的地址字节数。如果在数据包的接收过程中无错误产生,accept()返回SOCKET类型的值,其含义为所接收到套接字的描述符,否则返回INVALID_SOCKET。
5 DSP芯片的SRIO接口设计
对于一些实时性要求高、运算量大的系统来说,需要多DSP间、DSP与FPGA间、DSP与高速A/D系统间进行高速数据传送,这些可通过SRIO接口[7?8]实现。
5.1 DSP间的SRIO通信设计
5.1.1 DSP间的SRIO接口互连设计
TMS320C6455芯片中内嵌有4个全双工端口的SRIO模块。各端口可实现1.25 Gb/s,2.5 Gb/s,3.125 Gb/s的波特率,且各端口既能单独形成1×模式,也能够共同形成4×模式。SRIO模块的数据传输使用速度高、抗干扰强的差分交流耦合信号。在电路板布线时,为了最大程度地降低接收方终端电阻的反射,差分布线应等长并在接收端串联0.1 μF的电容,以隔离直流偏置。两片DSP间的SRIO连接如图4所示。
对于多DSP芯片间的SRIO连接,必须保证其差分时钟的一致性,所以要采用一个时钟源给多个DSP芯片提供时钟,同时为了稳定时钟信号,还要在线路上增加一个SN65LVDS105D时钟驱动芯片。
5.1.2 数据传输设计
SRIO的数据采用包的形式进行传输,请求包与响应包的数据格式如图5所示。
其传输过程为:首先发起者创建一个传输请求,请求包被传送至与其相邻的交换器件,然后通过交换机构将请求包发送至目标器件;根据请求内容,目标器件完成操作后,通过交换机构将响应包发送回发起者,完成整个数据传输过程。
5.1.3 SRIO的基本读写操作设计
在SRIO总线上,全部SRIO设备都有惟一的设备地址进行区别。SRIO总线上的SRIO设备进行读写时,会发送包含设备地址的数据包,只有数据包的设备地址与当前设备地址相符合,SRIO设备才会对此次数据传输产生响应。
5.2 DSP芯片与FPGA芯片构建SRIO
SRIO接口在硬件中完成分组处理和器件与存储器的寻址,大幅度地减少了系统的I/O开销。一个4通道SRIO链路,在保证数据完整的条件下能提供25 Gb/s的流量,从而实现数据的实时传输。
SRIO网络是通过端点设备和交换设备创建的,包含两种连接方式:一种是端点与端点互联;一种是交换设备与端点互联,由端点设备进行数据收发,交换设备进行端口间的数据传递,但不对数据包进行解析。通过交换设备,能够创建一个CPU,DSP和FPGA不同平台间的互通数据网进行数据的分布或共享处理。SRIO网络的结构如图6所示。
6 以太网连接及速度测试实验
通过DSP芯片与PC机进行通信的方式测试千兆以太网的通信速率。其中PC机、千兆网卡及操作系统如下:PC机:Intel[?]Pentium[?] Daul E2180 2.0 GHz;千兆网卡:Attansic L1 GigabitEthernet;操作系统:WINDOWS XP。
6.1 以太网连接测试
网线一端接在DSP芯片的RJ45接口上,一端接在计算机网卡上,然后将计算机的IP 地址设置为192.168.1.1,子网掩码设置为255.255.255.0,NDS不填。打开PC机的IE浏览器,并在IE地址栏输入图像处理系统平台的IP地址192.168.1.2,刷新IE,若在显示器上能够看到由以太网传送的摄像头所拍摄的图像,则说明以太网连接成功,否则继续调试。
6.2 网络传输速度测试
通过EtherPeek NX软件对数据传输速度进行测试,在本文选取的网卡、DSP芯片的条件下,并将Socket缓存设置为8 KB。测试数据表明,TCP/IP协议包的数据传输峰值速率能够达到120 Mb/s,平均数据传输速率能达到80 Mb/s,满足图像处理系统的数据传输要求。
7 结 论
针对嵌入式智能图像处理系统中的图像数据传输问题与多DSP、多FPGA间的并行问题,通过C6455的以太网控制接口与PHY芯片结合,实现了DSP+FPGA与PC机的网络传输功能,同时设计了多DSP、多FPGA间的SRIO结构,实现了智能图像处理系统的网络化和并行化,有效地提高了图像的处理速度与数据传输速度。但相关的智能图像处理算法还无法在硬件系统上实现移植,还需在后续的工作中继续研究。
作者:吕星宇 来源:现代电子技术 2016年21期