(重慶郵電大學(xué)移動(dòng)通信協(xié)議研究所,重慶 400065)
現(xiàn)代數(shù)字信號(hào)處理技術(shù)已經(jīng)應(yīng)用于通信雷達(dá)圖像處理等領(lǐng)域。隨著現(xiàn)代科學(xué)技術(shù)和國際半導(dǎo)體制造工藝的發(fā)展,各種高性能的DSP芯片相繼推出(尤其C6000系列之后),使圖像處理的速度問題得到極大解決。然而圖形處理速度過高而傳輸速度跟不上會(huì)使處理器出現(xiàn)閑置,浪費(fèi)資源。在長(zhǎng)期演進(jìn)項(xiàng)目(long term evolution,LTE)中,下行小區(qū)搜索、信道模擬、FFT變換等模塊數(shù)據(jù)量大、處理復(fù)雜等因素對(duì)接口的傳輸速率提出了新的挑戰(zhàn)。目前,人們用于圖像數(shù)據(jù)傳輸?shù)耐ㄐ沤涌谥饕蠻SB接口、Cameralink接口、UART接口等,這些接口雖然有的也能達(dá)到幾百兆字節(jié)的通信速率,但仍然不能滿足高性能處理器的通信需求,如UART接口[1]。
本文針對(duì)TMS320C6A8168Xc6 芯片的特點(diǎn)和資源,擴(kuò)展了以太網(wǎng)接口。該接口主要完成接口電路的設(shè)計(jì)、底層驅(qū)動(dòng)程序的開發(fā)等工作,實(shí)現(xiàn)了數(shù)字處理信號(hào)的網(wǎng)絡(luò)傳輸。
TMS320C6A8168Xc6是TI推出的一款面向高端用戶的高性能、浮點(diǎn)、超長(zhǎng)指令字結(jié)構(gòu)(VLIW)的數(shù)字信號(hào)處理器,最高工作頻率為1.5 GHz。片內(nèi)除了高性能的674X DSP內(nèi)核外,還集成了豐富的外設(shè)資源,比如用于片級(jí)互聯(lián)的RapidIO接口、PCI接口、MCBSP接口、UART接口、USB接口、千兆以太網(wǎng)控制器等。本文利用TMS320C6A8168Xc6片內(nèi)的千兆以太網(wǎng)接口模塊MDIO/EMAC,結(jié)合片外的PHY芯片ET1011C以及簡(jiǎn)單的外圍電路,擴(kuò)展了TD-LTE射頻一致性開發(fā)平臺(tái)的以太網(wǎng)通信接口,實(shí)現(xiàn)了系統(tǒng)的網(wǎng)絡(luò)化。
EMAC模塊是DSP處理器內(nèi)核與另一個(gè)主機(jī)(在片外與DSP處理器內(nèi)核連接在同一網(wǎng)絡(luò)上)之間的網(wǎng)絡(luò)物理層數(shù)據(jù)傳輸接口,并負(fù)責(zé)以太網(wǎng)數(shù)據(jù)的接收和發(fā)送。它將從上層協(xié)議棧傳來的數(shù)據(jù)打包為符合IEEE 802.3標(biāo)準(zhǔn)的以太網(wǎng)數(shù)據(jù)包,并從收到的包中分離出載荷數(shù)據(jù),提供給上層進(jìn)行分析和處理,實(shí)現(xiàn)了IEEE 802.3標(biāo)準(zhǔn)的以太網(wǎng)MAC層協(xié)議功能。EMAC模塊具有以下特點(diǎn):同步10/100/1 000 Mbit/s操作;與物理層器件PHY之間的GMII接口;充當(dāng)?shù)狡瑑?nèi)外的內(nèi)存DMA 主控制器;包括CRC的硬件錯(cuò)誤處理;擁有8個(gè)接收通道,帶VLAN tag辨識(shí),用于支持接收QOS;8個(gè)發(fā)送通道,支持Round-Robin或固定優(yōu)先級(jí),用于支持發(fā)送QOS、Ether-Stats或802.3-Stats RMON統(tǒng)計(jì)值收集;在單個(gè)通道上選擇接收廣播幀;8 kB本地EMAC描述符內(nèi)存,允許外設(shè)操作描述符(無需CPU參與),描述符內(nèi)存保持足夠的信息,用于傳輸多達(dá)512個(gè)以太網(wǎng)包,而無需CPU干擾;TI自適應(yīng)性能優(yōu)化,改善半雙工的運(yùn)行性能;可配置的接收地址匹配/過濾、接收FIFO深度、發(fā)送FIFO深度;回環(huán)模式等。
系統(tǒng)平臺(tái)基于TMS320C6A8168Xc6片內(nèi)EMAC/EMAC控制/MDIO模塊、片外PHY芯片ET1011C以及外圍接口電路的設(shè)計(jì),能夠快速實(shí)現(xiàn)OSI模型中DL和PHY層的功能。GMII接口以太網(wǎng)配置框圖如圖1所示。GMII接口支持10/100/1 000 Mbit/s模式,在1 000 Mbit/s下支持全雙工模式;在10/100 Mbit/s下,GMII與MII功能基本相同。
圖1 GMII接口以太網(wǎng)配置框圖
圖1中的主要信號(hào)分別描述如下。
① EMAC_TXCLK:發(fā)送時(shí)鐘,是一個(gè)連續(xù)的時(shí)鐘,提供10/100 Mbit/s模式下發(fā)送操作的定時(shí)基準(zhǔn)。EMAC_TXD和EMAC_TXEN信號(hào)在10/100 MHz時(shí)參考這個(gè)時(shí)鐘,時(shí)鐘由PHY產(chǎn)生。在10 Mbit/s時(shí),時(shí)鐘頻率為2.5 MHz;在100 Mbit/s時(shí),時(shí)鐘頻率為25 MHz。
② EMAC_GMTCLK:GMII源異步發(fā)送時(shí)鐘,僅在1 000 Mbit/s模式下使用,用來提供連續(xù)的125 MHz頻率的發(fā)送時(shí)鐘。EMAC_TXD和EMAC_TXEN信號(hào)在1 000 Mbit/s下同步于該時(shí)鐘,125 MHz時(shí)鐘是由EMAC產(chǎn)生的。
③ EMAC_TXD[0~7]:發(fā)送數(shù)據(jù)信號(hào),同步于EMAC_TXCLK(10/100 Mbit/s)、EMAC_GMTCLK(1 000 Mbit/s)。
④ EMAC_TXEN:發(fā)送數(shù)據(jù)使能。發(fā)送數(shù)據(jù)使能指示EMAC_TXD[0~7]管腳產(chǎn)生有效數(shù)據(jù),供PHY使用。
⑤ MDIO_MCLK:管理數(shù)據(jù)串行時(shí)鐘,由MDIO產(chǎn)生,同步MDIO的數(shù)據(jù)接入操作且其頻率受控于MDIO控制寄存器的CLKDIV比特位。
⑥ MDIO_MDIO:管理數(shù)據(jù)輸入輸出。該管腳通過接入幀管理PHY的數(shù)據(jù)輸入輸出。接入幀由開啟位、讀寫標(biāo)志位、PHY地址位、寄存器地址位和數(shù)據(jù)位組成。MDIO_MDIO管腳充當(dāng)這些位的數(shù)據(jù)輸出,僅在讀操作時(shí)作為數(shù)據(jù)位的輸入。
本系統(tǒng)采用84腳的千兆物理層芯片ET1011C。該芯片采用低功耗設(shè)計(jì)并使用0.13微米技術(shù)制造,廣泛應(yīng)用于服務(wù)器和PC機(jī)的網(wǎng)絡(luò)接口卡。其集成在單塊CMOS芯片上,也可用于Gigabit傳輸?shù)囊蕴W(wǎng)收發(fā)設(shè)備,并兼容IEEE 802.3、802.3u和802.ab標(biāo)準(zhǔn),支持10、100、1000Base-T設(shè)備。TMS320C6A8168Xc6片上EMAC模塊和ET1011芯片均支持GMII接口模式,因此兩芯片之間可以進(jìn)行無縫連接[2]。
2.1.1 幀格式
以太網(wǎng)為網(wǎng)絡(luò)應(yīng)用提供的是一個(gè)不可靠的、無連接服務(wù)。以太網(wǎng)數(shù)據(jù)包的大小為1 514 B,其中幀格式由源MAC地址、目的MAC地址、數(shù)據(jù)、幀檢測(cè)序列、長(zhǎng)度/類型域等組成。在編寫底層軟件時(shí),應(yīng)注意以太網(wǎng)數(shù)據(jù)包的數(shù)據(jù)是從第18字節(jié)開始的。以太網(wǎng)幀格式如圖2所示[3-4]。
圖2 以太網(wǎng)幀格式
圖2中,幀界定符(SFD)緊隨前綴,表示重要數(shù)據(jù)的開始。數(shù)據(jù)域攜帶包含上層協(xié)議幀的數(shù)據(jù)報(bào),即IP數(shù)據(jù)報(bào)。以太網(wǎng)最大發(fā)送單位為RXMAXLEN-18個(gè)字節(jié),這意味著上層協(xié)議數(shù)據(jù)報(bào)長(zhǎng)度如果超過RXMAXLEN-18個(gè)字節(jié),主機(jī)就必須將數(shù)據(jù)報(bào)拆分成多個(gè)以太網(wǎng)包來發(fā)送。數(shù)據(jù)域的最小尺寸為46 B,如果上層協(xié)議數(shù)據(jù)報(bào)的數(shù)據(jù)長(zhǎng)度小于46 B,數(shù)據(jù)必須通過在數(shù)據(jù)域后面添加冗余位來擴(kuò)展到46 B,且添加冗余位應(yīng)在計(jì)算和附加幀校驗(yàn)序列(FCS)之前,即先添加后計(jì)算CRC[5]。
2.1.2 編程接口
經(jīng)信號(hào)處理器處理過的數(shù)據(jù)要發(fā)送到外圍設(shè)備必須用到編程接口。編程接口包括包緩沖描述符、收發(fā)描述符隊(duì)列和收發(fā)緩沖描述符。緩沖描述符是EMAC模塊的一個(gè)重要部分,它描述了應(yīng)用軟件怎樣發(fā)送與接收以太網(wǎng)包以及如何用輸入的數(shù)據(jù)包填充空緩沖器。包緩沖描述格式如圖3所示。
圖3 包緩沖描述格式
下一個(gè)描述符指針用于創(chuàng)建單連接描述符列表,每個(gè)描述符都描述一個(gè)包或者一個(gè)包的片段。當(dāng)一個(gè)描述符指向單個(gè)緩沖包或者包的第一個(gè)片段時(shí),包開始(SOP)標(biāo)志被設(shè)置;當(dāng)指向緩沖包或者包的最后一個(gè)片段時(shí),包結(jié)束(EOP)標(biāo)志被設(shè)置;當(dāng)一個(gè)包被拆分時(shí),每個(gè)片段必須有自己的描述符,并順序顯示在描述符列表中。在發(fā)送操作時(shí),緩沖區(qū)指針指向包含數(shù)據(jù)包的實(shí)際內(nèi)存緩沖區(qū)或在接收操作時(shí)為一個(gè)空緩沖且準(zhǔn)備用于接收數(shù)據(jù)包。緩沖偏移是從包緩沖起始地址開始到第一個(gè)有效數(shù)據(jù)的偏移量。這個(gè)域僅在緩沖描述符指向一個(gè)包含實(shí)際數(shù)據(jù)的緩沖時(shí)才有效。
發(fā)送數(shù)據(jù)包時(shí),要按照傳輸緩沖描述格式進(jìn)行配置,把處理器EMAC描述存儲(chǔ)器的地址賦給當(dāng)前緩沖指針,再把下一個(gè)緩沖指針指向待發(fā)包的地址。在緩沖長(zhǎng)度的控制下,當(dāng)?shù)谝灰蕴W(wǎng)包發(fā)送完畢后,在下一個(gè)描述符指針的指引下接著發(fā)送下一個(gè)包。如果當(dāng)前包為最后一個(gè)待發(fā)包或者為一個(gè)包的最后一個(gè)片段,則下一個(gè)描述符指針指向0x0。
C語言程序配置如下[6]。
pDesc = pDescBase+10 ;
pDesc->pNext = pDescBase + 11;
pDesc->pBuffer=packet_data1;
∥packet_data;
pDesc->BufoffLen = 512;
pDesc->pktFlgLen=EMAC_DSC_FLAG_OWNER| EMAC_DSC_FLAG_SOP
|EMAC_DSC_FLAG_EOP
|512;
∥下一個(gè)包的配置
pDesc = pDescBase + 11;
pDesc->pNext = 0;
pDesc->pBuffer = packet_data;
pDesc->BufoffLen = TX_BUF;
pDesc->pktFlgLen=EMAC_DSC_FLAG_OWNER| EMAC_DSC_FLAG_SOP
|EMAC_DSC_FLAG_EOP
|TX_BUF;
底層硬件驅(qū)動(dòng)負(fù)責(zé)向TCP/IP協(xié)議棧提供具體的操作接口,用于控制以太網(wǎng)器件的配置和運(yùn)行。這些控制功能主要包括:初始化驅(qū)動(dòng)環(huán)境,如存儲(chǔ)區(qū)數(shù)據(jù)訪問優(yōu)先級(jí)、中斷使能;以太網(wǎng)數(shù)據(jù)包的發(fā)送與接收;監(jiān)測(cè)底層網(wǎng)絡(luò)器件狀態(tài),將時(shí)間信息反饋給上層;關(guān)閉驅(qū)動(dòng)程序,收回占用的資源[1]。以發(fā)送數(shù)據(jù)包為例,具體配置流程圖如圖4所示[7]。
圖4 發(fā)送端配置流程圖
在PC機(jī)上利用軟件Wireshark抓包工具監(jiān)測(cè)數(shù)據(jù),結(jié)果基本符合工程需求,且傳輸速率快。
抓包結(jié)果如下。發(fā)送數(shù)據(jù)包前6個(gè)字節(jié)即50-e5- 49-ad- 4a-b5為目的MAC地址(PC機(jī)MAC地址);00-01-02-03-04-05為源MAC地址即DSP芯片的自定義MAC地址。緊跟其后的數(shù)據(jù)0x0200為發(fā)送的幀長(zhǎng)度512 B,數(shù)據(jù)占508 B。緊接著4個(gè)字節(jié)00-01-00-00為L(zhǎng)LC協(xié)議控制信息,目的服務(wù)訪問點(diǎn)DSAP和源服務(wù)訪問點(diǎn)分別為0x00、0x01。利用Wireshark軟件可以清楚地觀察到DSP通過高速以太網(wǎng)發(fā)送信息的控制字符和數(shù)據(jù)的正確性,這樣更有利于對(duì)數(shù)據(jù)進(jìn)行分析。
與系統(tǒng)平臺(tái)中速率為50 kbit/s的UART接口和PC機(jī)通信相比,EMAC網(wǎng)口不但傳輸速率快,而且能和以太網(wǎng)連接進(jìn)行遠(yuǎn)程通信。EMAC GMII接口速率比UART接口速率快20 000多倍,達(dá)到1 000 Mbit/s。
本文利用TMS320C6A8168Xc6片內(nèi)外設(shè)資源,提出了以太網(wǎng)通信接口的軟硬件設(shè)計(jì)方案。該方案不僅擴(kuò)展了TD-LTE射頻一致性開發(fā)平臺(tái)的信息交互能力,而且創(chuàng)造了平臺(tái)與遠(yuǎn)程網(wǎng)絡(luò)的通信功能。
最后在多種條件下進(jìn)行了性能測(cè)試。測(cè)試結(jié)果表明,該通信接口的設(shè)計(jì)方案能夠有效提高DSP數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性,具有簡(jiǎn)單易行、開發(fā)周期短、性價(jià)比高、便于擴(kuò)展和維護(hù)等優(yōu)點(diǎn)。
該設(shè)計(jì)成功應(yīng)用于TD-LTE射頻一致性開發(fā)系統(tǒng),目前系統(tǒng)運(yùn)行穩(wěn)定。
[1] 趙金保,許楓.基于TMS320C6455的千兆以太網(wǎng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2009,25(2):270-271.
[2] 于鳳芹,張慶榮.TMS320 C6000 DSP結(jié)構(gòu)原理與硬件設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2008:76-80.
[3] 鄧偉,王文菊.基于TMS320 C6455的以太網(wǎng)通信程序的設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013,25(7):165-167.
[4] 左顥睿,張啟衡,徐勇,等.基于DSP的千兆以太網(wǎng)接口設(shè)計(jì)[J].通信技術(shù),2012,43(8):1-3.
[5] 楊永,劉鐵根.基于高速DSP的千兆以太網(wǎng)嵌入式系統(tǒng)研究[D].天津:天津大學(xué),2007.
[6] 鄒依依,郭燦欣,歐陽三元,等.基于以太網(wǎng)硬件協(xié)議棧的DSP嵌入式系統(tǒng)設(shè)計(jì)[J].自動(dòng)化儀表,2008,29(3):69-71.
[7] 許喆,張平.TD-LTE中測(cè)儀中基帶板DSP的部分接口的研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2010.