一種基于C64系列DSP的千兆以太網(wǎng)通信接口設(shè)計
0 引言
當(dāng)前,DSP的發(fā)展如火如荼,在軍事、雷達(dá)、通訊等各領(lǐng)域均廣泛應(yīng)用。但DSP如何與主控模塊高速穩(wěn)定通信,是一個需要迫切解決的問題。TMS320TCI6487[1]作為TI公司一款主打通信領(lǐng)域的芯片,具有較高的工作頻率,內(nèi)部集成硬件EMAC[2]接口,外接一個物理層芯片即可進(jìn)行網(wǎng)絡(luò)通信。本文介紹一種基于TMS320TCI6487的嵌入式千兆網(wǎng)接口設(shè)計,并通過SYS/BIOS[3]和NDK[4-5]實現(xiàn)TCP協(xié)議[6],從而方便主控模塊開發(fā)并與之高速通信。因此,研究DSP千兆以太網(wǎng)通信接口具有重要意義。
1 硬件接口設(shè)計
TMS320TCI6487(下面簡稱6487)是TI公司的一款高性能DSP芯片,可支持EMDA3[7]、SRIO[8]、EMAC等高速接口,也含有TCP2[9]、VCP2[10] 等硬件譯碼器,廣泛應(yīng)用在通信領(lǐng)域。88E1111[11]作為Marvell公司的一款千兆物理層芯片具有穩(wěn)定、糾錯性強、速率高的優(yōu)點,故本文選擇此兩款芯片作為研究對象。
1.1 千兆物理層芯片連接原理圖
圖1中6487提供phy_mdio、phy_mdc、DSP_SGMII等信號與88E1111千兆物理層芯片進(jìn)行連接。88E1111使用25MHZ的時鐘作為千兆網(wǎng)口的參考時鐘,并與網(wǎng)口接插件直接相連。
1.2 硬件接口關(guān)鍵設(shè)計
1)電源穩(wěn)定性。6487需要1.8 V和1.1 V電源供應(yīng),電源的穩(wěn)定性為重中之重。為了增加電源的穩(wěn)定性,增加二極管進(jìn)行穩(wěn)壓,并使用電容進(jìn)行匹配濾波。對于遠(yuǎn)端電壓,需要進(jìn)行補償。
2)時鐘穩(wěn)定性。千兆以太網(wǎng)芯片需要穩(wěn)定傳輸數(shù)據(jù),因此對時鐘的穩(wěn)定性要求比較高。88E1111可使用25 MHz或125 MHz,但從布局布線、電磁兼容等方面考慮采用25 MHz時鐘。
3)硬件穩(wěn)定性。中頻板與工控板通過網(wǎng)線互聯(lián),且儀表內(nèi)部空間有限,為了增加硬件的穩(wěn)定性且減少網(wǎng)口體積,網(wǎng)線從超五類線改變?yōu)楸馄诫娎|,網(wǎng)口接插件從HR911130C改變?yōu)镮DC10-2.0。
2 網(wǎng)口驅(qū)動程序
6487對網(wǎng)口芯片進(jìn)行配置主要是針對MAC驅(qū)動進(jìn)行配置,可依次按照SGMII模塊、MDIO模塊、EMAC模塊進(jìn)行配置。
2.1 SGMII模塊配置
EMAC支持千兆媒體獨立接口,它通過串行千兆媒體獨立接口(SGMII)與SerDes連接到PHY外部設(shè)備。SGMII模塊主要配置過程如圖1所示。
圖1 SGMII模塊主要配置過程
2.2 MDIO模塊配置
MDIO模塊通過2個MDIO引腳(MDCLK和MDIO)與PHY設(shè)備連接,通過EMAC控制模塊和配置總線與DSP核連接。MDIO模塊主要完成MDIO時鐘產(chǎn)生、全局PHY探測和鏈接狀態(tài)監(jiān)視、激活PHY監(jiān)視、PHY寄存器訪問的功能。MDIO模塊主要配置過程如圖2所示。
圖2 MDIO模塊主要配置過程
2.3 EMAC模塊配置
EMAC模塊通過MDIO和SGMII接口訪問PHY組件和DSP核。EMAC模塊提供一個獨立的本地內(nèi)存空間存放EMAC包緩沖區(qū)描述符,提供本地內(nèi)存空間是為了避免與其他設(shè)備內(nèi)存空間產(chǎn)生競爭。EMAC模塊主要由以下邏輯組件組成:DMA引擎、FIFO、統(tǒng)計邏輯、狀態(tài)RAM、中斷控制器、控制寄存器和邏輯、時鐘和復(fù)位邏輯。
EMAC模塊配置主要配置過程如圖3所示。
圖3 EMAC模塊配置主要配置過程
使用第二章的網(wǎng)口驅(qū)動程序可以直接發(fā)送以太網(wǎng)幀,但是作為接口與主控聯(lián)調(diào)不方便,且速率過高時存在突發(fā)丟包現(xiàn)象。為了解決以上兩個問題,本文采用TI公司的SYS/BIOS和NDK(網(wǎng)絡(luò)開發(fā)者套件)實現(xiàn)了TCP協(xié)議。本文首先利用主控程序開啟DHCP服務(wù),DSP根據(jù)DHCP獲得IP地址,然后利用此IP地址與主控程序進(jìn)行TCP傳輸,具體過程如圖4所示。
圖4 實現(xiàn)TCP協(xié)議的過程
3.1 配置DHCP
當(dāng)IP地址處于不確定時,我們可以開啟DHCP服務(wù)。DHCP封包在傳輸層是采用UDP協(xié)議,而當(dāng) Client傳送封包給 Server時,采用的是UDP 67端口,從 Server傳送給 Client則是使用UDP 68端口。
本例將DSP配置為DHCP客戶端,主控配置為DHCP服務(wù)器端,主控可以分配部分IP地址組供給DSP使用,DSP從而得到分配的IP地址。DSP初始未知本身的IP地址,故將源IP地址設(shè)置為0.0.0.0,目的IP地址設(shè)置為255.255.255.255(受限的廣播地址)。
為了提高網(wǎng)口傳輸?shù)乃俾?,利?/span>RTSC修改SYS/BIOS的內(nèi)存分配空間,將NDK_OBJMEM、NDK_PACKETMEM等包緩沖區(qū)內(nèi)存塊分配在L2 RAM內(nèi)。因cache的速率更快,但資源更有限,故L2 RAM不可全部占用,分配一部分留給cache使用。
3.2 配置TCP
為了開啟TCP服務(wù),我們需要創(chuàng)建3個回調(diào)函數(shù)NetworkOpen、NetworkClose、NetworkIPAddr。①NetworkOpen會創(chuàng)建一個守護(hù)進(jìn)程,此守護(hù)進(jìn)程定義了TCP連接的端口號、協(xié)議類型、中斷服務(wù)程序等,NetworkOpen內(nèi)部調(diào)用了NETTOOL、OS、STACK、HAL、NETCTRL等庫,共同協(xié)作完成TCP協(xié)議的組包與拆包過程。②NetworkClose完成了socket套接字的關(guān)閉和釋放,并刪除創(chuàng)建的應(yīng)用程序線程。③NetworkIPAddr完成了IP地址的轉(zhuǎn)換。
為了進(jìn)一步提升TCP傳輸?shù)乃俾?,使用recvnc函數(shù),可以直接接收網(wǎng)口數(shù)據(jù)而不拷貝到內(nèi)核。
4 結(jié)語
使用DSP與PC機通信的方式對千兆以太網(wǎng)速率進(jìn)行測試。測試方法為6487通過TCP協(xié)議向主控PC發(fā)送1G字節(jié)數(shù)據(jù),使用wireshark檢測以太網(wǎng)效率約96%(961.142Mbps) ,如圖5所示。
圖5 使用DSP與PC機通信的方式對千兆以太網(wǎng)速率進(jìn)行測試
參考文獻(xiàn):
[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:協(xié)議.北京:機械工業(yè)出版社,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—),男,工程師,研究方向:網(wǎng)絡(luò)測試技術(shù);周建燁,男,高級工程師,研究方向:網(wǎng)絡(luò)測試技術(shù);鐵奎,男,研究員級高工,研究方向,網(wǎng)絡(luò)測試技術(shù)。
(本文來源于《電子產(chǎn)品世界》雜志社2020年12月期)
評論