<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于多核DSP的以太網(wǎng)通信接口設計

基于多核DSP的以太網(wǎng)通信接口設計

作者: 時(shí)間:2017-02-06 來(lái)源:網(wǎng)絡(luò ) 收藏

  摘要 針對8核 TMS320C6678與外部設備進(jìn)行數據通信的需求,以片上集成千兆交換子系統為核心,選取芯片88E1111作為PHY設備,設計了千兆通信接口的硬件電路。在嵌入式操作系統SYS/BIOS和網(wǎng)絡(luò )開(kāi)發(fā)環(huán)境NDK上,完成了底層驅動(dòng)和TCP/IP協(xié)議的程序設計。通過(guò)與上位機進(jìn)行以太網(wǎng)通信測試,證明了以太網(wǎng)接口電路硬件及軟件的正確性和實(shí)用性。

本文引用地址:http://dyxdggzs.com/article/201702/343611.htm

  關(guān)鍵詞 TMS320C6678;千兆以太網(wǎng);SYS/BIOS;TCP/IP協(xié)議

  隨著(zhù)處理器在現代工業(yè)的應用越來(lái)越廣泛,DSP的功能不僅只有快速運算處理,還需要與其他處理器或者設備之間進(jìn)行實(shí)時(shí)數據交換,以實(shí)現資源的共享。因此,針對不同設備的需求,選擇穩定、快速和高效率的接口方式在當今數字信號處理系統設計中關(guān)鍵的組成部分。

  TI公司的8核處理器TMS320C6678(以下簡(jiǎn)稱(chēng)C6678)提供豐富的片上接口資源用于處理器與外設之間的通信,這些接口都可以用于DSP與外設之間的通信,但是靈活性有差異,使用SGMII接口來(lái)實(shí)現千兆以太網(wǎng)通信,可使得通信接口一般化,能夠適用于眾多的設備連接。本文針對C6678的芯片特點(diǎn)以及含有的接口資源,設計實(shí)現了千兆以太網(wǎng)通信,主要設計了以太網(wǎng)接口電路、網(wǎng)絡(luò )底層硬件驅動(dòng)、TCP/IP協(xié)議的用戶(hù)程序,并完成了與上位機以太網(wǎng)通信測試,實(shí)現了數字信號高速有效地網(wǎng)絡(luò )傳輸。

  1 C6678以太網(wǎng)交換子系統

  C6678是基于KeyStone I構架的8核高性能、定點(diǎn)/浮點(diǎn)處理器,單核最高工作頻率可達1.25 GHz。C6678的以太網(wǎng)交換子系統包括2個(gè)以太網(wǎng)媒體訪(fǎng)問(wèn)控制(Ethernet Media Access Controller,EMAC)、2個(gè)SGMII、1個(gè)管理數據輸入輸出(Management Data Input Output,MDIO)、3-Port以太網(wǎng)交換模塊以及網(wǎng)絡(luò )配置總線(xiàn),其網(wǎng)絡(luò )交換子系統如圖1所示。

    

 

  EMAC的作用是將交換子系統的內部信號轉換為GMII信號傳遞給SGMII模塊;MDIO控制物理層芯片執行對多數據流的控制輸入輸出。

  2 PHY芯片88E1111

  本文選擇C6678作為主芯片,由于C6678的千兆網(wǎng)絡(luò )交換子系統只支持SGMII接口,所以本文選擇對SGMII接口的網(wǎng)絡(luò )數據傳輸具有較好兼容性的物理芯片88E1111。88E1111芯片的內部結構如圖2所示。

  88E1111的介質(zhì)接口有銅介質(zhì)接口和光纖接口。銅介質(zhì)接口為MDI[3:0],通過(guò)設置HWCFG_MODE[3:0]來(lái)選擇運行模式。 88E1111集成的MDIO模塊與EMAC的MDIO接口相連接,可將方便網(wǎng)絡(luò )控制端讀取物理芯片狀態(tài)寄存器,達到實(shí)時(shí)監測的效果。

  3 硬件接口設計

  本文設計的任務(wù)是基于C6678片內以太網(wǎng)交換子系統和片外PHY芯片88E1111及其外圍電路的接口設計。主要包括:C6678與88E1111芯片連接、88E1111芯片配置以及88E1111芯片與網(wǎng)絡(luò )介質(zhì)連接。

  3.1 C6678與88E1111芯片連接

  C6678和PHY芯片88E1111的接口電路如圖3所示。88E1111工作在SGMII接口模式下,不需要TXCLK時(shí)鐘輸入,更有助于減少電路板上走線(xiàn)的數量,同時(shí)也可減少噪聲的產(chǎn)生。

    

 

  主要的接口信號包括時(shí)鐘和數據信號如下:

  MDIO_CLK:管理數據時(shí)鐘。該時(shí)鐘信號由C6678片上的MDIO模塊提供,該時(shí)鐘頻率通過(guò)配置MDIO的控制寄存器CONTROL中的CLKDIV位來(lái)控制實(shí)現。

  SGMII_TXP和SGMII_TXN:串行發(fā)送差分數據線(xiàn)。連接DSP內部SerDes和物理芯片的S_IN管腳,DSP的SerDes通過(guò)該管腳向物理層發(fā)送串行數據,數據中包含發(fā)送數據時(shí)鐘信號。

  SGMII_RXP和SGMII_RXN:串行接收差分數據線(xiàn)。連接DSP內部SerDes和物理芯片的S_OUT管腳,物理層芯片通過(guò)該接口將數據傳送到DSP的SerDes,數據中包含數據接收時(shí)鐘信號。

  MDIO:管理數據I/O??勺疃噙B接32個(gè)PHY設備到DSP的EMAC,并且可以枚舉所有PHY設備,讀取PHY設備狀態(tài)寄存器來(lái)監測PHY的連接狀態(tài)。數據幀結構符合802.3標準,包含讀寫(xiě)指令、PHY地址、寄存器地址和數據等。

  因為88E1111上集成的MDIO與C6678集成MDIO模塊進(jìn)行連接時(shí),電壓有所差別,前者電壓為2.5 V,后者電壓為1.8 V,所以在二者之間應該添加電壓轉換器。本文采用一片PCA9306,實(shí)現2.5 V和1.8 V之間的電平轉換,其連接電路如圖4所示。

    

 

  3.2 88E1111芯片配置

  88E1111與C6678的MDIO模塊相連接,MDIO最多可識別32個(gè)物理芯片,在使用物理芯片之前需要對其進(jìn)行配置,配置內容主要包括芯片的地址、模式等。配置CONFTG[6:0]管腳定義可查詢(xún)文獻,本文配置的硬件電路如圖5所示,圖5中可以不使用電阻,本文為了測試方便,加一個(gè)0 Ω的電阻。

    

 

  88E1111硬件配置完成后,系統將固定為一種接口方式,按照文獻的定義,物理芯片的地址為:PHY_ADDRESS=0’b00001,芯片模式為:不帶時(shí)鐘,自動(dòng)協(xié)商的SGMII模式。

  3.3 88E1111芯片與RJ45連接

  88E1111和網(wǎng)絡(luò )介質(zhì)之間無(wú)法直接連接,因傳輸速度在千兆級,所以更加需要設計合適的網(wǎng)絡(luò )隔離變壓器來(lái)降低傳輸損耗、回音和串擾。本文選擇千兆網(wǎng)口插座HR911130C,該插座內部自帶變壓器電路,只需在外部連接濾波網(wǎng)絡(luò )便可實(shí)現網(wǎng)絡(luò )信號穩定地傳輸,如圖6所示。88E1111和 HR9111130C采用差分連接,在PCB布線(xiàn)時(shí)需要嚴格等長(cháng),且一般還需使用阻抗匹配網(wǎng)絡(luò ),如圖6中的R1和C1。

    

 

  4 軟件程序設計

  TI針對網(wǎng)絡(luò )開(kāi)發(fā)發(fā)布了網(wǎng)絡(luò )開(kāi)發(fā)套件(Network Development Kit,NDK),能將多個(gè)模塊的配置操作交給NDK網(wǎng)絡(luò )框架實(shí)現,同時(shí)數據分包和解析也無(wú)需程序員過(guò)多考慮,加速了網(wǎng)絡(luò )開(kāi)發(fā)進(jìn)程。NDK構建在實(shí)時(shí)操作系統SYS/BIOS之上,NDK通過(guò)OS抽象層與BIOS進(jìn)行交互,同時(shí)BIOS的cfg配置文件能對NDK各模塊進(jìn)行可視化查看。

  本文基于多核DSP實(shí)時(shí)操作系統SYS/BIOS上,設計了以太網(wǎng)通信程序。該操作系統能夠提供較多的集成模塊,方便用戶(hù)編寫(xiě)程序,且還有軟硬件中斷管理、多任務(wù)同步機制、多核通信機制和存儲器管理機制等,可為用戶(hù)進(jìn)行多線(xiàn)程多任務(wù)開(kāi)發(fā)提供模塊化的框架。以太網(wǎng)通信接口的軟件總體結構如圖7所示。

    

 

  SYS/BIOS為整個(gè)軟件提供集成開(kāi)發(fā)環(huán)境,不僅擁有適合實(shí)時(shí)系統的多線(xiàn)程優(yōu)先搶占機制,還可添加需要的封裝庫,使得編寫(xiě)程序時(shí)可以更加方便地調用庫函數。NDK是DSP的網(wǎng)絡(luò )程序開(kāi)發(fā)集成工具,其中,stack.lib給出了從頂層socket到底層PPP關(guān)于TCP/IP協(xié)議棧的封裝庫;nettool.lib提供用于socket網(wǎng)絡(luò )套接字和用于網(wǎng)絡(luò )應用開(kāi)發(fā)工具的封裝庫;os.lib提供應用于SYS/BIOS和網(wǎng)絡(luò )編程套件之間的系統協(xié)調的封裝庫;hal.lib提供外圍設備和網(wǎng)協(xié)議棧之間接口的封裝庫;netctrl.lib提供DSP網(wǎng)絡(luò )編程的整體控制,可用來(lái)配置底層驅動(dòng)和協(xié)議。

  本文DSP片上系統軟件分為3部分:SYS/BIOS平臺和NDK的TCP/IP協(xié)議棧建立和配置;用戶(hù)程序;編制底層驅動(dòng)程序。

  4.1 底層硬件驅動(dòng)的實(shí)現

  NDK的基本結構如圖7所示,可看出NDK開(kāi)發(fā)套件與用戶(hù)程序、SYS/BIOS操作系統和底層硬件都有密切的聯(lián)系。NDK中網(wǎng)絡(luò )控制層和操作系統接口層與SYS/BIOS系統相連接,NDK的硬件驅動(dòng)層用于控制底層硬件驅動(dòng)的配置,這些操作和配置均可在網(wǎng)絡(luò )工具庫中找到相應的驅動(dòng)函數,并可直接由用戶(hù)應用程序來(lái)調用實(shí)現。

  這些功能主要包括:

  (1)底層硬件驅動(dòng)包括:MDIO模塊和EMAC模塊的初始化;PHY芯片搜索配置和狀態(tài)監測;EMAC/MDIO中斷使能。(2)TCP/IP協(xié)議棧的建立,配置接收和發(fā)送緩存區的大小,完成以太網(wǎng)數據的收發(fā)任務(wù)。(3)利用MDIO模塊,根據MDIO讀取的PHY狀態(tài)寄存器來(lái)監測其連接狀態(tài),識別可以是CPU產(chǎn)生中斷的狀態(tài)變化事件,并將信息反饋。(4)關(guān)閉驅動(dòng),復位前面對寄存器進(jìn)行的操作,收回占用資源。

  如圖7所示,硬件驅動(dòng)包含在硬件驅動(dòng)層hal.lib中,用戶(hù)需要對按照系統對驅動(dòng)函數進(jìn)行修改。C6000系列NDK的API封裝了許多固定的驅動(dòng)函數,具有特定的功能,比如_llPacketSerivceCheck()的作用是檢測以太網(wǎng)數據包的結構,且將檢測到的結構信息反饋給協(xié)議棧進(jìn)行分析處理。具體的驅動(dòng)程序需要按照硬件系統的配置來(lái)進(jìn)行設計,在C6678中,可在集成度較高的片上系統直接對網(wǎng)絡(luò )通信模塊的寄存器進(jìn)行配置查詢(xún),就可以完成硬件底層驅動(dòng),使得底層硬件能夠有效地運行。

  4.2 DSP端網(wǎng)絡(luò )應用程序

  DSP軟件設計是基于SYS/BIOS實(shí)時(shí)多任務(wù)操作系統和C語(yǔ)言,采用Socket套接字,創(chuàng )建TCP/IP客戶(hù)端(Client)和服務(wù)器端 (Server),Client負責與外部設備服務(wù)器端建立連接并接收數據包,Server用來(lái)向PC機發(fā)送處理后的數據包。接收任務(wù)和發(fā)送任務(wù)流程如圖 8所示。在C6678的內核Core0中建立兩個(gè)同步線(xiàn)程任務(wù),即數據接收和發(fā)送任務(wù),分別用來(lái)接收TCP服務(wù)器發(fā)送過(guò)來(lái)的數據和發(fā)送處理后的數據到PC 上位機中進(jìn)行處理、存儲和顯示。

    

 

  4.3 上位機測試程序

  上位機測試程基于VC++的MFC界面設計,使用套接字Socket進(jìn)行網(wǎng)絡(luò )編程。程序中需設計兩個(gè)同步線(xiàn)程,用來(lái)實(shí)現數據的實(shí)時(shí)接收和動(dòng)態(tài)顯示功能。使用TCP服務(wù)器端發(fā)送船體結構應力數據,經(jīng)過(guò)DSP的接接收、處理和發(fā)送過(guò)程,最后發(fā)送到PC上位機進(jìn)行數據動(dòng)態(tài)顯示,結果如圖9所示。

    

 

  5 結束語(yǔ)

  本文以8核處理器C6678為核心,對片上集成的以太網(wǎng)交換子系統接口硬件進(jìn)行了研究,按照接口的特點(diǎn)設計了包括以太網(wǎng)交換子系統和物理芯片的接口連接、物理芯片與網(wǎng)絡(luò )介質(zhì)接口連接的硬件系統,并完成了千兆以太網(wǎng)驅動(dòng),最終實(shí)現多核DSP C6678與上位機進(jìn)行千兆以太網(wǎng)通信。通過(guò)與上位機進(jìn)行網(wǎng)絡(luò )通信測試,結果顯示以太網(wǎng)數據通信接口能實(shí)時(shí)高效地進(jìn)行網(wǎng)絡(luò )數據傳輸。



關(guān)鍵詞: DSP 以太網(wǎng)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>