摘 要: 基于TI公司的TMS320C6657芯片,,結(jié)合片外的PHY芯片88E1112,,實(shí)現(xiàn)了千兆以太網(wǎng)通信接口的設(shè)計(jì)。結(jié)合TCP/IP網(wǎng)絡(luò)模型,,詳細(xì)描述了TMS320C6657片內(nèi)千兆以太網(wǎng)接口模塊以及通信接口的硬件設(shè)計(jì),,介紹了網(wǎng)絡(luò)開發(fā)包NDK的結(jié)構(gòu)并運(yùn)用NDK完成DSP通信接口軟件設(shè)計(jì),最終實(shí)現(xiàn)了DSP與PC間可靠穩(wěn)定的網(wǎng)絡(luò)傳輸,。
關(guān)鍵詞: TMS320C6657,;千兆以太網(wǎng);NDK,;Socket
0 引言
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,,在DSP嵌入式系統(tǒng)上進(jìn)行網(wǎng)絡(luò)通信已經(jīng)成為熱門研究課題。對(duì)于網(wǎng)絡(luò)開發(fā)而言,,TI的C6000系列DSP芯片有很多都在其片上集成了以太網(wǎng)接口,,不僅在硬件上縮減了嵌入式產(chǎn)品的網(wǎng)絡(luò)應(yīng)用成本,而且其推出的NDK網(wǎng)絡(luò)開發(fā)工具在軟件上大大降低了網(wǎng)絡(luò)應(yīng)用程序的開發(fā)難度,,縮短了開發(fā)周期,,為實(shí)現(xiàn)設(shè)計(jì)性價(jià)比高、易于實(shí)現(xiàn)的網(wǎng)絡(luò)通信接口提供了可靠的保障,。
TMS320C6657是TMS320C6000系列中高性能的定點(diǎn)/浮點(diǎn)DSP,,建立在TI KeyStone多核架構(gòu)基礎(chǔ)之上,采用創(chuàng)新C66x DSP內(nèi)核,,此器件能夠以高達(dá)1.25 GHz的頻率運(yùn)行,,同時(shí)具有豐富的外設(shè)資源,能夠方便地與其他器件進(jìn)行通信[1],。本文通過(guò)TMS320C6657片內(nèi)集成的千兆以太網(wǎng)接口模塊,,結(jié)合片外的PHY芯片88E1112以及簡(jiǎn)單的外圍電路,實(shí)現(xiàn)了DSP與PC之間的千兆以太網(wǎng)通信,。本文主要完成了通信接口硬件電路設(shè)計(jì),、通信接口軟件總體架構(gòu)設(shè)計(jì),、用戶定制網(wǎng)絡(luò)應(yīng)用程序的編寫等工作,最終實(shí)現(xiàn)DSP與PC間可靠穩(wěn)定的網(wǎng)絡(luò)傳輸,。
1 千兆以太網(wǎng)接口的硬件設(shè)計(jì)
TMS320C6657內(nèi)部集成了千兆以太網(wǎng)接口模塊EMAC/MDIO/SGMII,,下面對(duì)這三個(gè)模塊分別進(jìn)行敘述[2-3]。
EMAC(Ethernet Media Access Controller)模塊是DSP處理器內(nèi)核與片外的網(wǎng)絡(luò)物理層數(shù)據(jù)傳輸?shù)慕涌?,?fù)責(zé)以太網(wǎng)數(shù)據(jù)的接收和發(fā)送,,接收和發(fā)送分別具有8個(gè)隊(duì)列,能夠滿足快速收發(fā)以太網(wǎng)數(shù)據(jù)包的要求,。它實(shí)現(xiàn)了IEEE802.3標(biāo)準(zhǔn)的以太網(wǎng)數(shù)據(jù)鏈路層協(xié)議功能,;將從上層協(xié)議棧傳遞來(lái)的數(shù)據(jù)打包成符合IEEE802.3標(biāo)準(zhǔn)的以太網(wǎng)數(shù)據(jù)包,并從收到的以太網(wǎng)數(shù)據(jù)包中剝離出載荷數(shù)據(jù),,提供給上層協(xié)議棧進(jìn)行分析和處理,;提供了GMII/MII接口,能夠與符合IEEE802.3標(biāo)準(zhǔn)的片外PHY芯片無(wú)縫連接,。
MDIO(Management Data Input/Output)模塊負(fù)責(zé)管理與EMAC相連的所有PHY芯片,,包括對(duì)PHY芯片進(jìn)行枚舉、復(fù)位,、配置和器件狀態(tài)檢測(cè)等,。
SGMII(Serial Gigabit Media Independent Interface)模塊是連接數(shù)據(jù)鏈路層和物理層的接口,并具有內(nèi)置SERDES(serializer/deserializer)電路,,能夠?qū)崿F(xiàn)EMAC模塊所使用的GMII數(shù)據(jù)格式與SERDES模塊所使用的 8 B/10 B編碼數(shù)據(jù)格式之間的轉(zhuǎn)換,。SGMII(Serial GMII)是串行GMII,不需要提供另外的時(shí)鐘,,MAC和PHY都需要CDR去恢復(fù)時(shí)鐘,,另外,SGMII有8 B/10 B編碼,,速率為1.25 Gb/s,。其中,8 B/10 B編碼是為了擾碼,,避免信號(hào)中出現(xiàn)過(guò)長(zhǎng)的連“0”或連“1”情況,,保證時(shí)鐘信息的提取。SGMII模塊具體的功能示意圖如圖1所示,。
88E1112 PHY芯片是千兆以太網(wǎng)物理層自適應(yīng)收發(fā)器,,支持IEEE802.3標(biāo)準(zhǔn),,支持10/100/1 000 Mb/s全雙工數(shù)據(jù)傳輸,,內(nèi)部集成SERDES,支持與SGMII/SERDES MAC連接,。
TMS320C6657與88E1112都提供了SGMII接口,,兩者之間可以在IEEE802.3標(biāo)準(zhǔn)基礎(chǔ)上實(shí)現(xiàn)無(wú)縫連接,。本方案中千兆以太網(wǎng)接口的硬件連接框圖如圖2所示。
圖2中,,SGMII_RXN與SGMII_RXP是SGMII的一對(duì)差分接收信號(hào)線,;SGMII_TXN與SGMII_TXP是SGMII的一對(duì)差分發(fā)送信號(hào)線;MDCLK為管理數(shù)據(jù)時(shí)鐘,,該時(shí)鐘信號(hào)由DSP片上的MDIO模塊提供,,用于同步MDIO管腳上的數(shù)據(jù);MDIO為管理數(shù)據(jù)線,,以向PHY寫入或讀出數(shù)據(jù)幀的形式對(duì)PHY進(jìn)行配置,。
2 千兆以太網(wǎng)接口的軟件設(shè)計(jì)
本方案中,千兆以太網(wǎng)通信接口的軟件設(shè)計(jì)主要是基于TI公司提供的嵌入式操作系統(tǒng)SYS/BIOS[4]和TCP/IP網(wǎng)絡(luò)開發(fā)包NDK(Network Development′s Kit)[5-6]來(lái)實(shí)現(xiàn)的,。網(wǎng)絡(luò)開發(fā)包NDK是TI公司為本公司DSP的網(wǎng)絡(luò)程序開發(fā)提供的平臺(tái),,采用自頂向下、分層,、模塊化的設(shè)計(jì)方法來(lái)支持TCP/IP協(xié)議[7],,并占用較少的系統(tǒng)資源(對(duì)于常規(guī)的TCP/IP服務(wù),程序空間僅需200 KB~250 KB的程序空間,,數(shù)據(jù)空間僅需95 KB),。TCP/IP協(xié)議的體系結(jié)構(gòu)包括應(yīng)用層、傳輸層,、網(wǎng)絡(luò)層,、數(shù)據(jù)鏈路層以及物理層,對(duì)于NDK模型,,網(wǎng)絡(luò)開發(fā)包NDK就實(shí)現(xiàn)了5層體系結(jié)構(gòu)中的傳輸層,、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層,。圖3為TCP/IP模型與NDK模型的對(duì)比示意圖,。
NDK通過(guò)編程接口與嵌入式操作系統(tǒng)SYS/BIOS以及底層硬件相互隔離。對(duì)于NDK而言,,SYS/BIOS被抽象成一個(gè)操作系統(tǒng)適應(yīng)層(OS Adaptation Layer),,底層硬件被抽象成一個(gè)硬件適應(yīng)層(Hardware Adaptation Layer),它們的函數(shù)庫(kù)OS.LIB,、HAL.LIB成為了NDK與SYS/BIOS以及底層硬件的接口,。圖4為基于NDK與SYS/BIOS的通信接口軟件架構(gòu)圖[8]。
由圖4可以看出,,NDK主要包含NETTOOL.LIB,、STACK.LIB、OS.LIB,、HAL.LIB,、NETCTRL.LIB五個(gè)部分,。
(1)NETTOOL.LIB提供網(wǎng)絡(luò)服務(wù),,包含NDK提供的基于網(wǎng)絡(luò)服務(wù)的所有套接字以及一些用于網(wǎng)絡(luò)應(yīng)用開發(fā)的附加工具,。
(2)STACK.LIB是主要的TCP/IP協(xié)議棧,,提供了頂層(套接字層)至底層(以太網(wǎng)和PPP層)的所有功能,。
(3)OS.LIB提供與SYS/BIOS操作系統(tǒng)的接口,。
?。?)HAL.LIB提供與底層硬件的接口。
?。?)NETCTRL.LIB控制TCP/IP協(xié)議棧與外界的交互,,管理所有網(wǎng)絡(luò)事件、協(xié)調(diào)操作系統(tǒng)與硬件驅(qū)動(dòng),,主要包括:①初始化TCP/IP協(xié)議棧和底層設(shè)備驅(qū)動(dòng),;②啟動(dòng)和維護(hù)系統(tǒng)配置(通過(guò)配置服務(wù)提供者的回調(diào)函數(shù));③連接底層設(shè)備驅(qū)動(dòng)和安排驅(qū)動(dòng)事件呼叫TCP/IP協(xié)議棧,;④卸載系統(tǒng)配置和清除底層驅(qū)動(dòng),。
對(duì)于基于NDK與SYS/BIOS的通信接口的軟件架構(gòu),其實(shí)現(xiàn)主要分為三部分工作:
?。?)編制底層驅(qū)動(dòng)程序,。底層硬件驅(qū)動(dòng)負(fù)責(zé)向TCP/IP協(xié)議棧提供具體的操作接口,用以控制以太網(wǎng)器件的配置和運(yùn)行,,主要包括:初始化驅(qū)動(dòng)環(huán)境,,包括器件復(fù)位、中斷使能,、存儲(chǔ)區(qū)數(shù)據(jù)訪問(wèn)優(yōu)先級(jí)設(shè)定,、器件枚舉和配置等;以太網(wǎng)數(shù)據(jù)包的接收和發(fā)送,;監(jiān)測(cè)底層網(wǎng)絡(luò)器件狀態(tài),,將事件信息反饋給協(xié)議棧;關(guān)閉驅(qū)動(dòng)環(huán)境,,并收回占用的系統(tǒng)資源,。
(2)在SYS/BIOS操作系統(tǒng)平臺(tái)上配置和運(yùn)行NDK的TCP/IP協(xié)議棧,。CCS5.3提供了配置工具XGCONF來(lái)實(shí)現(xiàn)圖形化界面配置NDK,,如圖5所示,傳輸層,、網(wǎng)絡(luò)層,、數(shù)據(jù)鏈路層分別選用TCP,、IP,、EMAC協(xié)議,,并對(duì)其作相關(guān)必要的配置,主要包括發(fā)送/接收窗口大小,、IP地址,、生存時(shí)間等內(nèi)容的配置。
?。?)開發(fā)用戶定制的網(wǎng)絡(luò)應(yīng)用程序,。本方案中主要是完成接收上位機(jī)控制信息和發(fā)送結(jié)果信息這些操作,采用流式套接字(Socket)來(lái)實(shí)現(xiàn),。
Socket是應(yīng)用層與TCP/IP協(xié)議簇通信的中間軟件抽象層,,它是一組接口,把復(fù)雜的TCP/IP協(xié)議簇隱藏在其后面,。對(duì)于用戶來(lái)說(shuō),,一組簡(jiǎn)單的Socket接口就是全部通信過(guò)程,讓Socket去組織數(shù)據(jù),,以符合指定的協(xié)議,。
本設(shè)計(jì)中,選取DSP作為服務(wù)器,,上位機(jī)作為客戶端,。對(duì)于DSP端,先初始化一個(gè)監(jiān)聽Socket,,然后與端口綁定(bind),,并對(duì)端口進(jìn)行監(jiān)聽(listen),再調(diào)用accept阻塞,,等待PC端連接,。對(duì)于PC端,先初始化一個(gè)Socket,,然后請(qǐng)求連接DSP端(connect),,若此時(shí)DSP端正處于等待PC端連接狀態(tài),則DSP端接受此連接請(qǐng)求,,于是,,PC端與DSP端就成功建立起了連接。PC端發(fā)送數(shù)據(jù)請(qǐng)求,,DSP端接收請(qǐng)求并處理請(qǐng)求,,再把回應(yīng)數(shù)據(jù)發(fā)送給PC端,PC端讀取數(shù)據(jù),,最后關(guān)閉連接,,一次交互結(jié)束,。DSP與上位機(jī)進(jìn)行Socket通信的具體過(guò)程如圖6所示。
3 功能測(cè)試
為了測(cè)試本文設(shè)計(jì)的千兆以太網(wǎng)接口的可行性,,PC端采用VC++的MFC來(lái)設(shè)計(jì)測(cè)試程序,,測(cè)試程序主要實(shí)現(xiàn)對(duì)單通道正弦信號(hào)的采集、處理以及顯示等操作,,測(cè)試界面如圖7所示,。根據(jù)具體的設(shè)計(jì)需求,測(cè)試程序分為數(shù)據(jù)發(fā)送/接收和數(shù)據(jù)處理/顯示這兩個(gè)部分,。其中,,數(shù)據(jù)發(fā)送/接收部分通過(guò)Socket編程完成與DSP的收發(fā)數(shù)據(jù)包等通信過(guò)程,數(shù)據(jù)處理/顯示部分不僅能夠支持用戶對(duì)服務(wù)器端參數(shù)和控制參數(shù)的可配置,,而且通過(guò)顯示接收到的正弦信號(hào)時(shí)域波形與頻譜圖,,實(shí)現(xiàn)對(duì)PC端與DSP端通信的直觀體驗(yàn),同時(shí)更增加了本接口程序的可移植性與可擴(kuò)展性,。
通過(guò)測(cè)試可以發(fā)現(xiàn),,正弦信號(hào)的時(shí)域波形圖與頻譜圖較為流暢,且穩(wěn)定性較高,,能夠支持長(zhǎng)時(shí)間穩(wěn)定可靠傳輸及顯示,。
4 結(jié)論
本文利用TMS320C6657內(nèi)部集成了千兆以太網(wǎng)接口模塊(EMAC、MDIO與SGMII),,結(jié)合片外的PHY芯片88E1112以及簡(jiǎn)單的外圍電路,,提出了千兆以太網(wǎng)通信接口的軟硬件設(shè)計(jì)方案,實(shí)現(xiàn)了DSP與PC的網(wǎng)絡(luò)通信功能,。測(cè)試結(jié)果顯示,,該設(shè)計(jì)方案能夠?qū)崿F(xiàn)長(zhǎng)時(shí)間穩(wěn)定可靠傳輸,同時(shí),,由于使用TI公司提供的NDK,,降低了開發(fā)難度、縮短了開發(fā)周期,,更便于擴(kuò)展與維護(hù),。目前,本設(shè)計(jì)方案已成功應(yīng)用到了無(wú)線電頻譜監(jiān)測(cè)接收機(jī)中,,運(yùn)行狀況良好,。
參考文獻(xiàn)
[1] Texas Instruments. TMS320C6655/57 fixed and floating-point digital signal processor data manual[EB/OL]. (2014-05-11) [2014-07-12]. http://www.ti.com/lit/sprs814a.
[2] Texas Instruments. KeyStone architecture gigabit ethernet(GbE) switch subsystem user guide[EB/OL].(2013-07-03) [2014-07-12]. http://www.ti.com/lit/sprugv9d.
[3] Texas Instruments. KeyStone architecture Ethernet media access controller(EMAC)/management data input/output (MDIO) user guide[EB/OL].(2012-03-12) [2014-07-12]. http://www.ti.com/lit/spruhh1.
[4] Texas Instruments. SYS/BIOS (TI-RTOS Kernel) v6.40 user′s guide[EB/OL]. (2014-03-22) [2014-07-12]. http://www.ti.com/lit/spruex3n.
[5] Texas Instruments. TI network developer′s kit(NDK) v2.24 user′s guide[EB/OL]. (2014-04-21)[2014-07-12]. http://www.ti.com.cn/cn/lit/ug/spru523i/spru523i.pdf.
[6] Texas Instruments. TI network developer′s kit(NDK) v2.24 API reference guide[EB/OL]. (2014-03-21)[2014-07-12]. http://www.ti.com.cn/cn/lit/ug/spru524i/spru524i.pdf.
[7] 高翔,李凌,,劉廣存.基于TMS320VC5409的嵌入式WEB數(shù)據(jù)服務(wù)器的實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2007,33(7):72-74.
[8] Texas Instruments. TMS320C6000 network developer′s kit(NDK)support package ethernet driver design guide[EB/OL].(2011-08-06)[2014-07-12].http://www.ti.com/lit/sprufp2.