DSP與PCI網(wǎng)卡接口設計

發(fā)布時(shí)間:2010-8-13 15:27    發(fā)布者:lavida
關(guān)鍵詞: dsp , PCI , 接口設計 , 網(wǎng)卡
基于DSP嵌入式系統的以太網(wǎng)接口設計一直是熱門(mén)領(lǐng)域,目前利用的以太網(wǎng)控制器大多都是ISA接口。隨著(zhù)PCI總線(xiàn)逐漸取代ISA總線(xiàn)的趨勢,使PCI接口的以太網(wǎng)控制器也成為PC機的主流,但在嵌入式領(lǐng)域中PCI總線(xiàn)的應用目前并不多見(jiàn)。本文將介紹利用Realtek公司生產(chǎn)的具有PCI接口的以太網(wǎng)控制芯片RTL8139實(shí)現RTL8139與DSP接口的方案。  

1 RTL8139  

RTL8139是帶PCI接口的10M/100M自適應網(wǎng)卡控制芯片,它提供32位PCI總線(xiàn)控制,支持IEEE802.3u 100Base-T和IEEE802.3x的全雙工流量控制;符合PCI 2.2標準,支持高級配置和電源接口(ACPI)和PCI對現代操作系統的電源管理(即對操作系統的直接電源管理),以提高電源管理的效率。此外,RTL8139還支持128KB的Boot ROM,提供網(wǎng)絡(luò )喚醒和遠程喚醒功能;含有2個(gè)2KB的收發(fā)FIFO;能夠降低網(wǎng)絡(luò )維護成本,消除使用障礙,而且可以很方便地使網(wǎng)絡(luò )由10M升級到100M,且帶寬可以達到200Mbps。RTL8139內部MAC層結構如圖1所示。  


  
1.1 RTL8139的PCI接口  

PCI總線(xiàn)分為主(Master)、從(Target)二種類(lèi)型,Master可以控制PCI總線(xiàn),Target不能控制PCI總線(xiàn)。標準的主設備至少有49條線(xiàn)與PCI總線(xiàn)相連;從設備至少有47條線(xiàn)與PCI總線(xiàn)相連。RTL8139所提供的PCI接口有51條引腳,其引腳簡(jiǎn)介如下。  

(1)地址/數據信號  

AD31~0:地址、數據多路復用的輸入/輸出信號,在FRAMEB有效時(shí),是地址期;在IRDYB和TRDYB同時(shí)有效時(shí)為數據期。  

C/BE3~0:總線(xiàn)命令和字節使能多路復用信號,負責傳輸總線(xiàn)命令。在數據期,由傳輸字節使能信號來(lái)表示數據線(xiàn)上哪些字節是有效數據。  

(2)接口控制信號  

FRAMEB:幀周期信號,表示訪(fǎng)問(wèn)的開(kāi)始和持續時(shí)間。  

IRDYB、TRDYB:分別表示主、從設備準備好信號,二者必須配合使用,同時(shí)有效時(shí)方能進(jìn)行數據傳輸。  

STOPB:目標設備請求停止數據傳輸信號。  

IDSEL:初始化設備選擇信號,在參數配置讀寫(xiě)傳輸期間,用作片選信號。  

DEVSELB:設備選擇信號。  

(3)仲裁信號  

REQB:總線(xiàn)占用請求信號,表示RTL8139申請總線(xiàn)控制權。  

GNTB:總線(xiàn)占用允許信號,表示總線(xiàn)控制權已經(jīng)交給RTL8139。  

主設備都必須有以上2種信號。  

(4)錯誤報告信號  

PERRB:數據奇偶校驗錯誤信號。  

SERRB:系統錯誤信號。  

(5)其他信號  

CLK:時(shí)鐘信號,最高可達33MHz。  

CLKRUNB:時(shí)鐘運行信號,這是RTL8139增設的信號,用來(lái)請求時(shí)鐘開(kāi)始和表示時(shí)鐘狀態(tài)。  

RSTB:復位信號,低電平有效,至少需要120ns的寬度。  

INTAB:中斷請求信號,它需要與RTL8139的ISR和IMR寄存器配合使用。  

在嵌入式系統中并不需要連接所有的引腳,可根據系統的實(shí)際需要進(jìn)行選擇。  

1.2 主要寄存器  

RTL8139的寄存器映射到I/O空間,I/O空間有256個(gè)地址,地址偏移量為00H~FFH。下面介紹幾個(gè)比較重要的寄存器。  

(1)Command Register  

該寄存器地址偏移量為0037H,功能為軟復位網(wǎng)卡,使能網(wǎng)卡的發(fā)送和接收。其描述如表1所示。  


  
(2)Interrupt Status Register  

該寄存器地址偏移量為3EH~3FH,在INTA引腳有效時(shí)表示中斷源,與IMR寄存器配合使用,它的值影響當前所有中斷。其描述如表2所示。  


  
(3)Receive Status Register  

該寄存器通?梢詮臄祿陌^中讀出,是RTL8139芯片特有的。通過(guò)它可以知道網(wǎng)卡收包的狀態(tài)以便進(jìn)行接收處理。其描述如表3所示。  


  
2 系統設計方案  

根據RTL8139的以上特點(diǎn),作者設計了RTL8139與DSP之間的接口解決方案。目前DSP與PCI的接口一般有二種方案1)用CPLD來(lái)實(shí)現。優(yōu)點(diǎn)是可以進(jìn)行功能優(yōu)化,不必實(shí)現所有PCI協(xié)議的功能,節約系統資源。占用系統資源大的用戶(hù)可以做成ASIC,有利于降低成本。但由于PCI協(xié)議的復雜性,短期內還難以做到操作穩定。(2)用專(zhuān)門(mén)的PCI橋芯片。PCI芯片功能強大,可減少開(kāi)發(fā)時(shí)間和成本并能獲得較好的傳輸特性。目前市場(chǎng)上有許多PCI橋芯片產(chǎn)品,最為常見(jiàn)的是AMCC、PLX、CYPRESS等公司的產(chǎn)品,作者選用PLX公司的PCI9054作為本系統的PCI接口芯片。DSP與PCI接口設計方案如圖2所示。  


  
DSP選用TI公司的TMS320VC5402,它的運算速度達100MIps,硬件接口功能強大(具有串行口、HPI主機接口和DMA控制器等),而且價(jià)格低廉,具有很高的性?xún)r(jià)比。接口的硬件連接如圖3所示。  


  
圖3中,DSP通過(guò)PCI9054來(lái)讀寫(xiě)PCI內存,地址空間由PCI的基地址開(kāi)始。PCI9054作為DSP的從設備和RTL8139的主設備。當PCI寫(xiě)時(shí),接收寫(xiě)信號,返回ready信號直到寫(xiě)FIFO滿(mǎn)為止,并保持ready信號到寫(xiě)FIFO可用。當PCI9054從RTL8139讀出數據時(shí)將保持ready信號,直到BALST信號(表示PCI總線(xiàn)上的最后傳輸)有效,讀周期被終止,沒(méi)有讀出的數據將被FIFO舍棄。  

要使嵌入式DSP系統要獨立運行,必須外接EPROM或Flash存儲器用于存放程序。與EPROM相比,Flash芯片功耗低,支持在工作電壓下的擦寫(xiě),可以方便地編寫(xiě)自己的Flash芯片燒錄程序,通過(guò)在片方式完成對Flash芯片的寫(xiě)操作。本設計采用的是SST公司生產(chǎn)的SST39VF400A,它是一款基于CMOS技術(shù)的高性能、多用途的Flash存儲芯片,其存儲容量達4Mb,功耗低,使用2.7~3.3V單電源供電。為了方便程序的調試,外接了1片64K×16b的SRAM,以用于存放發(fā)送數據和接收數據,以便于對比,及時(shí)地發(fā)現數據傳輸的正確性。邏輯控制部分主要用于主處理器對外設(如PCI橋芯片、網(wǎng)絡(luò )適配芯片、SRAM及Flash等)的讀寫(xiě)控制及地址分配。  

3 軟件設計  

軟件設計主要分為PCI網(wǎng)橋和網(wǎng)絡(luò )接口二部分。PCI網(wǎng)橋部分主要是對PCI9054進(jìn)行初始化,即對它的PCI端配置寄存器和本地端配置寄存器進(jìn)行正確的編程配置,以實(shí)現DSP與PCI網(wǎng)卡的無(wú)縫連接。網(wǎng)絡(luò )接口部分的編程包括對RTL8139進(jìn)行復位初始化,數據包的接收和發(fā)送。  

RTL8139已經(jīng)實(shí)現了OSI中的物理層和數據鏈路層的功能,只需再加上高層協(xié)議即可。作為一個(gè)嵌入式系統,為了節省系統資源,需要盡量使用簡(jiǎn)化的協(xié)議。因此IP地址和本機物理地址在初始化RTL8139時(shí)設定,采用本地管理的地址方式,上層協(xié)議進(jìn)行了簡(jiǎn)化,沒(méi)有封裝復雜的TCP協(xié)議。  

簡(jiǎn)化的網(wǎng)卡初始化程序如下:  

#define CMD_RST 0x10 //復位標志  

#define CMD_RE 0x08 //接收使能  

#define CMD_TE 0x04 //發(fā)送使能  

#define SUCCESS 0xFF //網(wǎng)卡初始化成功標志  

Reset_init_rtl8139()  

{  

CMD=0x10;//軟復位網(wǎng)卡  

while((read_cmd & CMD_RST)==0) read_cmd=CMD;  

//檢查網(wǎng)卡是否復位完成  

write_mac_ip();//設定網(wǎng)卡的MAC地址和IP地址  

CMD=CMD_RE | CMD_TE; //接收發(fā)送使能  

set_RxConfig(); //接收配置  

set_TxConfig(); //發(fā)送配置  

init_rx_addr(); //初始化接收緩沖區地址  

Rxmissed=0; //clear 0  

CMD=CMD_RE | CMD_TE;  

return SUCCESS;  

}  

程序中:CMD為RTL8139的Command寄存器,通過(guò)它來(lái)對芯片復位并檢查復位成功與否;write_mac_ip()是向IDR0"IDR5寫(xiě)入MAC地址,設定IP地址;set_RxConfig()主要是對Receive Configuration Register進(jìn)行設置。此外,網(wǎng)卡初始化程序設定只接收物理地址匹配的包,不接收組播和廣播。  

RTL8139接收緩沖區的大小可選,并設定為16KB。初始化過(guò)程中根據DSP的快慢還需要加一些延時(shí),這一點(diǎn)非常重要。因為許多寄存器的設置都需要時(shí)間,若時(shí)間不夠,某些寄存器的值可能會(huì )設置不正確,從而導致初始化失敗,RTL8139的收發(fā)功能也會(huì )受到影響。  

RTL8139數據的收發(fā)用中斷方式完成。當主處理器要向網(wǎng)上發(fā)送數據時(shí),先將1幀數據通過(guò)DMA通道送到控制器的發(fā)送緩沖區,然后發(fā)出傳送命令,RTL8139按照PCI總線(xiàn)主模式將數據從發(fā)送緩沖區轉移到內部發(fā)送FIFO中。當FIFO中數據包完整時(shí),RTL8139即開(kāi)始包發(fā)送?刂破髟跀祿l(fā)送完成后通過(guò)中斷方式通知主處理器;接收數據時(shí),網(wǎng)上來(lái)的數據包首先被放在接收FIFO中,同時(shí)RTL8139要進(jìn)行組播地址過(guò)濾。當接收FIFO中數據包已達到接收配置寄存器的要求時(shí),RTL8139請求PCI總線(xiàn)按照PCI主模式將數據傳到接收緩沖區,接收滿(mǎn)1幀后,同樣以中斷方式通知主處理器。數據的收發(fā)是通過(guò) DMA通道來(lái)完成的。中斷子程序流程圖如圖4所示。  


  
數據包的封裝按照IEEE802.3協(xié)議、IP協(xié)議和UDP協(xié)議,其幀格式如圖5所示。  


  
封裝的過(guò)程依次在源數據前加上UDP頭、IP頭和LLC頭。LLC頭即通常所說(shuō)的以太網(wǎng)包頭,但也可以根據自己的需要加上其他協(xié)議如TCP、ARP或HTTP。不過(guò)在嵌入式系統中,為了節省資源,應盡量減少協(xié)議的使用。在分組語(yǔ)音數據傳輸中,實(shí)時(shí)語(yǔ)音數據可以用UDP,而控制信號可以用TCP。  

4 結束語(yǔ)  

本文所提出的DSP與RTL8139的接口解決方案已在試驗中得到實(shí)現,并已用于IP分組語(yǔ)音數據的以太網(wǎng)傳輸,效果良好。隨著(zhù)ISA總線(xiàn)的淘汰,PCI接口的網(wǎng)絡(luò )控制器必將在嵌入式領(lǐng)域中得到更廣泛的應用。
本文地址:http://selenalain.com/thread-21269-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页