一种基于C64系列DSP的千兆以太网通信接口设计
0 引言
当前,DSP的发展如火如荼,在军事、雷达、通讯等各领域均广泛应用。但DSP如何与主控模块高速稳定通信,是一个需要迫切解决的问题。TMS320TCI6487[1]作为TI公司一款主打通信领域的芯片,具有较高的工作频率,内部集成硬件EMAC[2]接口,外接一个物理层芯片即可进行网络通信。本文介绍一种基于TMS320TCI6487的嵌入式千兆网接口设计,并通过SYS/BIOS[3]和NDK[4-5]实现TCP协议[6],从而方便主控模块开发并与之高速通信。因此,研究DSP千兆以太网通信接口具有重要意义。
1 硬件接口设计
TMS320TCI6487(下面简称6487)是TI公司的一款高性能DSP芯片,可支持EMDA3[7]、SRIO[8]、EMAC等高速接口,也含有TCP2[9]、VCP2[10] 等硬件译码器,广泛应用在通信领域。88E1111[11]作为Marvell公司的一款千兆物理层芯片具有稳定、纠错性强、速率高的优点,故本文选择此两款芯片作为研究对象。
1.1 千兆物理层芯片连接原理图
图1中6487提供phy_mdio、phy_mdc、DSP_SGMII等信号与88E1111千兆物理层芯片进行连接。88E1111使用25MHZ的时钟作为千兆网口的参考时钟,并与网口接插件直接相连。
1.2 硬件接口关键设计
1)电源稳定性。6487需要1.8 V和1.1 V电源供应,电源的稳定性为重中之重。为了增加电源的稳定性,增加二极管进行稳压,并使用电容进行匹配滤波。对于远端电压,需要进行补偿。
2)时钟稳定性。千兆以太网芯片需要稳定传输数据,因此对时钟的稳定性要求比较高。88E1111可使用25 MHz或125 MHz,但从布局布线、电磁兼容等方面考虑采用25 MHz时钟。
3)硬件稳定性。中频板与工控板通过网线互联,且仪表内部空间有限,为了增加硬件的稳定性且减少网口体积,网线从超五类线改变为扁平电缆,网口接插件从HR911130C改变为IDC10-2.0。
2 网口驱动程序
6487对网口芯片进行配置主要是针对MAC驱动进行配置,可依次按照SGMII模块、MDIO模块、EMAC模块进行配置。
2.1 SGMII模块配置
EMAC支持千兆媒体独立接口,它通过串行千兆媒体独立接口(SGMII)与SerDes连接到PHY外部设备。SGMII模块主要配置过程如图1所示。
图1 SGMII模块主要配置过程
2.2 MDIO模块配置
MDIO模块通过2个MDIO引脚(MDCLK和MDIO)与PHY设备连接,通过EMAC控制模块和配置总线与DSP核连接。MDIO模块主要完成MDIO时钟产生、全局PHY探测和链接状态监视、激活PHY监视、PHY寄存器访问的功能。MDIO模块主要配置过程如图2所示。
图2 MDIO模块主要配置过程
2.3 EMAC模块配置
EMAC模块通过MDIO和SGMII接口访问PHY组件和DSP核。EMAC模块提供一个独立的本地内存空间存放EMAC包缓冲区描述符,提供本地内存空间是为了避免与其他设备内存空间产生竞争。EMAC模块主要由以下逻辑组件组成:DMA引擎、FIFO、统计逻辑、状态RAM、中断控制器、控制寄存器和逻辑、时钟和复位逻辑。
EMAC模块配置主要配置过程如图3所示。
图3 EMAC模块配置主要配置过程
使用第二章的网口驱动程序可以直接发送以太网帧,但是作为接口与主控联调不方便,且速率过高时存在突发丢包现象。为了解决以上两个问题,本文采用TI公司的SYS/BIOS和NDK(网络开发者套件)实现了TCP协议。本文首先利用主控程序开启DHCP服务,DSP根据DHCP获得IP地址,然后利用此IP地址与主控程序进行TCP传输,具体过程如图4所示。
图4 实现TCP协议的过程
3.1 配置DHCP
当IP地址处于不确定时,我们可以开启DHCP服务。DHCP封包在传输层是采用UDP协议,而当 Client传送封包给 Server时,采用的是UDP 67端口,从 Server传送给 Client则是使用UDP 68端口。
本例将DSP配置为DHCP客户端,主控配置为DHCP服务器端,主控可以分配部分IP地址组供给DSP使用,DSP从而得到分配的IP地址。DSP初始未知本身的IP地址,故将源IP地址设置为0.0.0.0,目的IP地址设置为255.255.255.255(受限的广播地址)。
为了提高网口传输的速率,利用RTSC修改SYS/BIOS的内存分配空间,将NDK_OBJMEM、NDK_PACKETMEM等包缓冲区内存块分配在L2 RAM内。因cache的速率更快,但资源更有限,故L2 RAM不可全部占用,分配一部分留给cache使用。
3.2 配置TCP
为了开启TCP服务,我们需要创建3个回调函数NetworkOpen、NetworkClose、NetworkIPAddr。①NetworkOpen会创建一个守护进程,此守护进程定义了TCP连接的端口号、协议类型、中断服务程序等,NetworkOpen内部调用了NETTOOL、OS、STACK、HAL、NETCTRL等库,共同协作完成TCP协议的组包与拆包过程。②NetworkClose完成了socket套接字的关闭和释放,并删除创建的应用程序线程。③NetworkIPAddr完成了IP地址的转换。
为了进一步提升TCP传输的速率,使用recvnc函数,可以直接接收网口数据而不拷贝到内核。
4 结语
使用DSP与PC机通信的方式对千兆以太网速率进行测试。测试方法为6487通过TCP协议向主控PC发送1G字节数据,使用wireshark检测以太网效率约96%(961.142Mbps) ,如图5所示。
图5 使用DSP与PC机通信的方式对千兆以太网速率进行测试
参考文献:
[1] TI Inc. TMS320TCI6487/8 Communications Infrastructure Digital Signal Processor (SPRS358L)[EB/OL].(2007-04).[2011-04].http://www.ti.com.
[2] TI Inc. TMS320TCI6487/88 DSP Ethernet Media Access Controller (EMAC)/Management Data Input/Output (MDIO) User's Guide(SPRUEF0B)[EB/OL].(2006-04).[2010-02].http://www.ti.com.
[3] TI Inc. TI-RTOS Kernel (SYS/BIOS) User's Guide (SPRUEX3U)[EB/OL]. [2018-02].http://www.ti.com.
[4] TI Inc. TMS320C6000 Network Developer's Kit (NDK) Software User's Guid e (SPRU523G)[EB/OL].(2001-05).[2009-01].http://www.ti.com.
[5] TI Inc. TMS320C6000 Network Developer's Kit (NDK) v2.00 Software Programmer’s(SPRU524G)[EB/OL].(2001-05).[2009-01].http://www.ti.com.
[6] 范建华.TCP/IP 详解,卷1:协议.北京:机械工业出版社,2000.
[7] TI Inc. TMS320C6472/TMS320TCI648x DSP Enhanced DMA (EDMA3) Controller (SPRU727E)[EB/OL].(2005-12).[2011-01].http://www.ti.com.
[8 ]TI Inc. TMS320C6472/TMS320TCI648x DSP:Serial RapidIO (SRIO) User's Guide (SPRUE13J)[EB/OL].(2006-10).[2011-02].http://www.ti.com.
[9] TI Inc. TMS320TCI648x DSP Turbo-Decoder:processor 2 (TCP2 ) (SPRUE10A)[EB/OL].(2006-05).[2008-06].http://www.ti.com.
[10] TMS320TCI648x/9x DSP:iterbi-Decoder Coprocessor 2 (VCP2) (SPRUE09E)[EB/OL].(2006-05).[2009-12].http://www.ti.com.
[11] Marvell Inc.88E1111 Datasheet Integrated 10/100/1000 Ultra Gigabit Ethernet Transceiver(MV-S100649-00)[EB/OL].[ 2003-10-21].http://cn.marvell.com.
作者简介:刘小刚(1987—),男,工程师,研究方向:网络测试技术;周建烨,男,高级工程师,研究方向:网络测试技术;铁奎,男,研究员级高工,研究方向,网络测试技术。
(本文来源于《电子产品世界》杂志社2020年12月期)
评论