基于FPGA和DSP的1394b雙向數(shù)據(jù)傳輸系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:IEEE 1394串行總線以其高速實(shí)時(shí)性的特點(diǎn)和靈活可配置的拓?fù)浣Y(jié)構(gòu)為提高系統(tǒng)性能提供了一種有效的途徑。文中介紹了IEEE Std 1394b總線系統(tǒng)的功能和特點(diǎn),并以FPGA和DSP為控制核心設(shè)計(jì)了1394b雙向數(shù)據(jù)總線傳輸系統(tǒng),最后闡述了系統(tǒng)的硬件設(shè)計(jì)、工作流程以及總線的配置過(guò)程。
關(guān)鍵字:1394b;FPGA;DSP;PCI9054;串行總線
0 引言
隨著時(shí)代和技術(shù)的發(fā)展,對(duì)于數(shù)據(jù)總線帶寬的要求越來(lái)越高,現(xiàn)有的總線標(biāo)準(zhǔn)越來(lái)越難以滿足實(shí)際應(yīng)用中對(duì)高總線速率的要求。先進(jìn)的總線技術(shù)對(duì)于解決系統(tǒng)的瓶頸,提高系統(tǒng)性能起著至關(guān)重要的作用,同時(shí)為了實(shí)現(xiàn)批量數(shù)據(jù)的傳輸,IEEE又公布了支持更高傳輸速率的IEEE Std 1394b-2002(簡(jiǎn)稱1394b)串行總線標(biāo)準(zhǔn),高速可升級(jí)性可支持高達(dá)800 Mb/s下的數(shù)據(jù)傳輸速率,并且能夠向后兼容先前的1394-1995和1394a標(biāo)準(zhǔn)。由于1394b是一種數(shù)據(jù)傳輸速率更高的串行總線標(biāo)準(zhǔn),支持異步傳輸和等時(shí)傳輸兩種傳輸方式。分層的軟件和硬件模型可使其通信建立在事務(wù)層、鏈路層和物理層協(xié)議的基礎(chǔ)之上。本文充分利用FPGA和DSP芯片的硬件資源,基丁1394b傳輸協(xié)議和規(guī)范的基礎(chǔ)上,介紹139 4b數(shù)據(jù)傳輸系統(tǒng)的硬件設(shè)計(jì)結(jié)構(gòu)、系統(tǒng)的工作流程和總線的配置過(guò)程。
1 1394b的特點(diǎn)
1394b雙向數(shù)據(jù)傳輸系統(tǒng)的主要特點(diǎn)如下:
(1)高速可升級(jí):支持100 Mb/s、200 Mb/s、400 Mb/s和800 Mb/s的傳輸速率,使用塑料光纖時(shí)可以提高到3.2 Gb/s;
(2)支持點(diǎn)到點(diǎn)傳輸:各個(gè)節(jié)點(diǎn)可脫離主機(jī)自主執(zhí)行事務(wù);
(3)即插即用:可以在任何時(shí)候向1394b網(wǎng)絡(luò)添加或移除設(shè)備,既不用擔(dān)心會(huì)影響數(shù)據(jù)的傳輸,也不需要進(jìn)行重新配置,總線會(huì)重新枚舉,節(jié)點(diǎn)也可以自動(dòng)配置,無(wú)需主機(jī)干預(yù);
(4)熱插拔:無(wú)需將系統(tǒng)斷電就可以加入或移除設(shè)備;
(5)傳輸距離:采用CAT-5UTP5線(5類非屏蔽雙絞線)時(shí),可以保證傳輸速率在100 Mb/s的前提下將傳輸距離延長(zhǎng)至100 m,使用玻璃光纖時(shí)可在3.2Gb/s的前提下延長(zhǎng)至50 m;
(6)支持兩種傳輸方式:包括等時(shí)(Isochronous)和異步(Asynchronous)數(shù)據(jù)傳輸方式;
(7)拓?fù)浣Y(jié)構(gòu):設(shè)備間采用樹(shù)形或菊花鏈拓?fù)浣Y(jié)構(gòu),每條總線最多可以連接63臺(tái)設(shè)備;
(8)可提供電源:一些低功耗設(shè)備可以通過(guò)總線取得電源,而不必為每一臺(tái)設(shè)備配置獨(dú)立的供電系統(tǒng);
(9)公平仲裁:等時(shí)傳輸具有較高的優(yōu)先級(jí),同時(shí)異步傳輸也能獲得對(duì)總線的公平訪問(wèn);
(10)提高系統(tǒng)性能:將資源看作寄存器和內(nèi)存單元,可以按照CPU內(nèi)存的傳輸速率進(jìn)行讀/寫操作,因此具有高速傳輸能力。
2 1394b數(shù)據(jù)傳輸系統(tǒng)的硬件實(shí)現(xiàn)
由于1394b鏈路層芯片必須通過(guò)PCI總線接口與FPGA進(jìn)行相連,實(shí)現(xiàn)數(shù)據(jù)的傳輸。如果只用FPGA和DSP來(lái)實(shí)現(xiàn)對(duì)PCI外設(shè)的控制,需要設(shè)計(jì)復(fù)雜的接口邏輯,在1394b高速數(shù)據(jù)傳輸系統(tǒng)中不僅會(huì)影響FPGA本身的性能,而且會(huì)給FPGA之外的電路或者系統(tǒng)帶來(lái)諸多問(wèn)題。因此這里采用PCI9054總線接口芯片配合FPGA和DSP來(lái)實(shí)現(xiàn)1394b雙向數(shù)據(jù)傳輸系統(tǒng),將對(duì)復(fù)雜的PCI總線接口的控制轉(zhuǎn)換為對(duì)相對(duì)簡(jiǎn)單的本地總線接口的控制,不僅對(duì)PCI協(xié)議有著良好的支持,而且提供給設(shè)計(jì)者良好的接口,大大減少了設(shè)計(jì)者的工作量。PCI9054芯片在PCI總線端支持32位/33 MHz,當(dāng)本地總線端采用32位數(shù)據(jù)總線時(shí),其數(shù)據(jù)傳輸速率可達(dá)132 MB/s,故能夠滿足1394b總線上800 Mb/s的數(shù)據(jù)傳輸速率要求。
本設(shè)計(jì)中的主控芯片采用Altera公司的EP2C70F672C6型FPGA主流芯片,DSP選用TI公司的TMS320C6415 DSP芯片,1394b套片選用TI公司的鏈路層芯片TSB82AA2和物理層芯片TSB81BA3,PCI9054采用PLX公司的32位33MHz的PCI總線通用接口芯片。1394b雙向數(shù)據(jù)傳輸系統(tǒng)的硬件總體結(jié)構(gòu)圖如圖1所示,主要由現(xiàn)場(chǎng)可編程門陣列(FPGA)模塊、DSP模塊、AD/DA數(shù)據(jù)轉(zhuǎn)換接口模塊、SPI數(shù)據(jù)輸入/輸出接口模塊、串口(UART)通信模塊、SRAM存儲(chǔ)模塊、EPCS串行配置器件模塊、FLASH存儲(chǔ)模塊、PCI9054模塊以及1394b套片模塊組成。
由于PCI9054內(nèi)部可編程FIFO存儲(chǔ)器的存在,數(shù)據(jù)可以大批量突發(fā)傳輸而不丟失,這樣不儀滿足實(shí)時(shí)性要求,同時(shí)可以根據(jù)用戶的需要采用與PCI時(shí)鐘異步的本地端時(shí)鐘,PCI9054本地總線工作在C模式時(shí),通過(guò)芯片內(nèi)邏輯控制,將PCI的數(shù)據(jù)線和地址線分開(kāi),很方便地為本地端總線工作時(shí)序提供各種方式。圖2所示為PCI9054在C模式下與FPGA相連的本地總線數(shù)據(jù)突發(fā)DMA傳輸方式的時(shí)序圖,其中,LCCLK為輸入時(shí)鐘信號(hào),從圖2中可以看出,在本地端總線上讀寫數(shù)據(jù)時(shí),可以不間斷地進(jìn)行突發(fā)傳輸,當(dāng)數(shù)據(jù)不能連續(xù)傳輸時(shí),則可以插入等待狀態(tài),這樣可以大大提高數(shù)據(jù)的吞吐量。
3 1394b數(shù)據(jù)傳輸系統(tǒng)的數(shù)據(jù)流向
由于1394b總線標(biāo)準(zhǔn)支持等時(shí)子事務(wù)和異步子事務(wù)兩類子事務(wù),因此,其傳輸?shù)臄?shù)據(jù)類型分為等時(shí)數(shù)據(jù)和異步數(shù)據(jù),等時(shí)傳輸將數(shù)量不定的數(shù)據(jù)按照規(guī)定的時(shí)間間隔向某個(gè)地址發(fā)送,對(duì)實(shí)時(shí)性要求較高,不需要返回確認(rèn)信號(hào);而異步傳輸是將數(shù)據(jù)傳送到特定的地址,對(duì)數(shù)據(jù)傳輸?shù)臏?zhǔn)確性要求較高,需要接收端以多次握手的方式發(fā)送返回確認(rèn)信號(hào)。在本系統(tǒng)中由DVD播放器發(fā)送的數(shù)據(jù)經(jīng)圖像壓縮板壓縮后由SPI口傳入FPGA,或者由攝像頭發(fā)送的數(shù)據(jù)經(jīng)過(guò)A/D轉(zhuǎn)換,再由FPGA的通用I/O口送入FPGA,兩者均為等時(shí)數(shù)據(jù);而一些控制命令等異步數(shù)據(jù)則由串口送入FPGA,并經(jīng)過(guò)DSP進(jìn)行處理,DSP和FPGA相結(jié)合可以提高數(shù)據(jù)傳輸?shù)男?。FPGA實(shí)現(xiàn)數(shù)據(jù)的串并轉(zhuǎn)換以及數(shù)據(jù)的拼接并對(duì)數(shù)據(jù)打包成符合1394b協(xié)議的數(shù)據(jù)包類型以及配置數(shù)據(jù)包的包頭信息,經(jīng)過(guò)讀/寫FIFO并在外部的SRAM進(jìn)行緩存,通過(guò)DMA仲裁模塊進(jìn)行仲裁處理,用DMA這一快速數(shù)據(jù)傳輸機(jī)制將數(shù)據(jù)寫入PCI9054的FIFO中。PCI9054作為一種橋接芯片,在本地總線和PCI總線之間提供信息傳遞,通過(guò)PCI9054芯片將本地端數(shù)據(jù)總線標(biāo)準(zhǔn)轉(zhuǎn)換成能被1394b鏈路層芯片傳輸?shù)腜CI總線數(shù)據(jù)標(biāo)準(zhǔn),再通過(guò)1394b的鏈路層芯片實(shí)現(xiàn)對(duì)等時(shí)和異步數(shù)據(jù)包的地址和信道號(hào)的解碼、數(shù)據(jù)校驗(yàn)、數(shù)據(jù)分析等,最后由物理層芯片通過(guò)仲裁邏輯實(shí)現(xiàn)對(duì)總線的存取,并對(duì)本地節(jié)點(diǎn)要發(fā)送的數(shù)據(jù)進(jìn)行編碼,由物理層芯片提供的電氣和機(jī)械接口將數(shù)據(jù)位發(fā)送到與之相連的1394b線纜上去,最終送入接有1394b板卡的主機(jī)進(jìn)行DVD發(fā)送的數(shù)據(jù)解壓縮和播放,以便對(duì)攝像頭發(fā)送的視頻進(jìn)行播放以及異步數(shù)據(jù)的顯示等操作。讀出的數(shù)據(jù)則由接有1394b板卡的主機(jī)發(fā)送,并通過(guò)1394b物理層芯片、1394b鏈路層芯片、FPGA、外部SRAM等進(jìn)行數(shù)據(jù)處理,根據(jù)數(shù)據(jù)包類型由相應(yīng)的端口送出去,在這期間與發(fā)送數(shù)據(jù)相比進(jìn)行了相反的操作,這樣就實(shí)現(xiàn)了1394b雙向數(shù)據(jù)傳輸系統(tǒng)。
FPGA作為整個(gè)系統(tǒng)的控制管理模塊,主要完成以下任務(wù):
(1)對(duì)SPI端口、UART端口和AD/DA端口數(shù)據(jù)的發(fā)送和接收;
(2)將待發(fā)送的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換和數(shù)據(jù)拼接;
(3)將數(shù)據(jù)進(jìn)行打包、解包處理并通過(guò)SRAM進(jìn)行數(shù)據(jù)的緩存;
(4)與PCI9054芯片進(jìn)行通信,以完成數(shù)據(jù)的傳送。
本系統(tǒng)中DSP的主要功能是:
(1)與PCI9054芯片和1394b鏈路層芯片通信實(shí)現(xiàn)設(shè)備的自舉和身份的確認(rèn);
(2)發(fā)送和接收一些控制命令,控制數(shù)據(jù)的傳輸;
(3)實(shí)現(xiàn)異步數(shù)據(jù)的發(fā)送和接收功能,根據(jù)異步請(qǐng)求數(shù)據(jù)的類型對(duì)其進(jìn)行相應(yīng)的處理;
(4)為等時(shí)傳輸申請(qǐng)等時(shí)信道和帶寬,傳輸后釋放所申請(qǐng)的信道和帶寬。
圖3所示是系統(tǒng)中FPGA的內(nèi)部框圖,由于數(shù)據(jù)傳輸速率較快,數(shù)據(jù)的處理需要一定的時(shí)間,不能將每一組數(shù)據(jù)無(wú)間斷的傳輸,且FPGA內(nèi)部FIFO容量有限,采用SRAM與FPGA相結(jié)合完成輸入輸出數(shù)據(jù)的緩存;DSP實(shí)現(xiàn)一些輔助的操作如對(duì)異步數(shù)據(jù)的處理、配置PCI9054芯片的內(nèi)部寄存器和1394b鏈路層寄存器等操作以及PCI的傳輸控制、設(shè)備識(shí)別、為等時(shí)傳輸申請(qǐng)信道和帶寬等;EPCS串行配置芯片實(shí)現(xiàn)配置數(shù)據(jù)的存儲(chǔ),使系統(tǒng)上電后將配置數(shù)據(jù)自動(dòng)下載到FPGA內(nèi)部,同時(shí)可以用FLASH存儲(chǔ)器存放DSP用戶代碼,在DSP上電工作后,利用DSP提供的boot機(jī)制,再將程序下載到DSP RAM中,使本系統(tǒng)實(shí)現(xiàn)脫機(jī)工作。
4 1394b的系統(tǒng)工作流程
1394b總線的配置是自動(dòng)進(jìn)行的,它不受任何設(shè)備和主機(jī)的干擾??偩€配置過(guò)程主要有三個(gè)步驟:
(1)總線初始化;
(2)自標(biāo)識(shí);
(3)樹(shù)標(biāo)識(shí)。
在這三個(gè)過(guò)程之后,整個(gè)系統(tǒng)在邏輯上形成了樹(shù)狀拓?fù)浣Y(jié)構(gòu),每個(gè)節(jié)點(diǎn)都被賦予了一個(gè)節(jié)點(diǎn)號(hào)并都發(fā)出節(jié)點(diǎn)說(shuō)明信息??偩€的初始化過(guò)程如下:
(1)設(shè)備識(shí)別:設(shè)備識(shí)別可通過(guò)E2PROM來(lái)完成;
(2)分配I/O空間和Memory空間;
(3)配置PCI9054的DMA寄存器;
(4)對(duì)1394b鏈路層和物理層芯片進(jìn)行配置。
由于1394b OHCI(Open Host Control Interface Specification)協(xié)議是1394b串行總線鏈路層協(xié)議的一種實(shí)現(xiàn)方式。1394bOHCI協(xié)議規(guī)定1394b的等時(shí)傳輸和異步傳輸均為DMA方式,所以需要對(duì)PCI9054的DMA寄存器進(jìn)行配置。PCI9054中有兩個(gè)獨(dú)立的通道采用DMA方式傳輸數(shù)據(jù)可以不受主機(jī)的干預(yù),同時(shí)采用突發(fā)方式傳輸數(shù)據(jù)可以提高數(shù)據(jù)的傳輸速率,同時(shí)也可以充分發(fā)揮PCI總線的性能。
系統(tǒng)上電后,通常需要進(jìn)行設(shè)備的自舉,協(xié)助主機(jī)完成設(shè)備識(shí)別和設(shè)備身份的確認(rèn),設(shè)備的自舉主要包括:初始化鏈路層寄存器;初始化配置ROM;判斷電纜是否插入;強(qiáng)制根節(jié)點(diǎn);響應(yīng)根節(jié)點(diǎn)、讀取配置ROM請(qǐng)求直到根節(jié)點(diǎn)調(diào)用相應(yīng)驅(qū)動(dòng)程序完成設(shè)備識(shí)別。圖4所示為本系統(tǒng)的工作流程圖。
設(shè)備自舉完成以后,即可等待數(shù)據(jù)包的到來(lái),根據(jù)數(shù)據(jù)包的類型,如果是異步數(shù)據(jù)包則進(jìn)行相應(yīng)的處理;如果是等時(shí)數(shù)據(jù)包則進(jìn)行等時(shí)信道和帶寬的申請(qǐng),申請(qǐng)成功后則配置DMA寄存器以DMA方式進(jìn)行等時(shí)數(shù)據(jù)的發(fā)送或等時(shí)數(shù)據(jù)的接收,等時(shí)數(shù)據(jù)傳輸完畢后釋放其信道和帶寬,這樣完成一次數(shù)據(jù)的傳輸,接下來(lái)進(jìn)行下一次數(shù)據(jù)的傳輸,如此循環(huán)完成整個(gè)數(shù)據(jù)的傳輸。
5 結(jié)束語(yǔ)
IEEE 1394b作為一種與平臺(tái)無(wú)關(guān)的技術(shù),可以同時(shí)應(yīng)用在MAC和PC中,本文研究的主要內(nèi)容是利用FPGA、DSP和PCI9054芯片實(shí)現(xiàn)1394b數(shù)據(jù)傳輸系統(tǒng)?,F(xiàn)在國(guó)內(nèi)基本上還停留在1394或1394a總線數(shù)據(jù)的傳輸上,本系統(tǒng)是在前人的基礎(chǔ)上,實(shí)現(xiàn)1394b總線上的數(shù)據(jù)傳輸,同時(shí)本系統(tǒng)兼容1394a實(shí)現(xiàn)1394的傳輸,還可以將傳輸速率提高作為驗(yàn)證1394b協(xié)議的通用平臺(tái),1394b能提供800 Mb/s或更高的傳輸速度,雖然市面上還沒(méi)有1394b接口的光儲(chǔ)產(chǎn)品出現(xiàn),但相信在不久之后也必然會(huì)出現(xiàn)在用戶眼前,無(wú)論是在視頻傳輸還是在計(jì)算機(jī)外設(shè)、網(wǎng)絡(luò)互連等方而,都將有廣闊的市場(chǎng)。