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