摘? 要: 為了最大限度地利用現(xiàn)有硬件資源,縮短開發(fā)周期,研制了1394-PCI的轉(zhuǎn)接卡,實現(xiàn)了基于1394的高速圖像傳輸系統(tǒng)" title="傳輸系統(tǒng)">傳輸系統(tǒng)。介紹了1394高速串行總線的特性及原理及1394-PCI轉(zhuǎn)接卡的硬件、軟件設(shè)計。?
關(guān)鍵詞: 1394高速串行總線? 1394-PCI轉(zhuǎn)接卡? 設(shè)備驅(qū)動程序" title="設(shè)備驅(qū)動程序">設(shè)備驅(qū)動程序?
?
當(dāng)今的計算機外圍設(shè)備都在追求高速性和高通用性,尤其在進行圖像數(shù)據(jù)處理和傳輸時,數(shù)據(jù)的大批量、高速、實時性對計算機與外設(shè)的接口提出了更高的要求。?
目前新型總線接口有兩種:USB和1394接口。它們都支持即插即用" title="即插即用">即插即用,具有易擴展、使用方便、成本低等特點。但在任何USB系統(tǒng)中,只能有一個主機,最多可接127個外設(shè),在全速模式下的傳輸率為500kbps~10Mbps。而相比之下1394顯得更勝一籌。它支持點到點的傳輸,消除了主機處理器/內(nèi)存瓶頸,具有可升級性,支持400Mbps、200Mbps和100Mbps傳輸率,單一總線支持63個節(jié)點,最多可支持1024條總線,從而可支持64K的節(jié)點數(shù)。由于1394總線的高速性和獨立于主機的操作能力,使它成為高速多媒體設(shè)備接口的首選。?
1 1394技術(shù)?
IEEE 1394起源于蘋果公司,又名FireWire,是為家用電器研制的一種高速串行總線標準,其目的是為了解決對速度要求很高的寬帶設(shè)備的傳輸問題。1995年12月,IEEE 1394-1995高速總線標準正式被IEEE標準委員會批準。?
1.1 1394的主要特點?
a.支持點對點傳輸。串行總線設(shè)備能自主執(zhí)行事務(wù),而不需要主機CPU的干預(yù)。?
b. 支持兩類事務(wù):等時傳輸和異步傳輸。?
c. 可擴展總線。可以將新的串行設(shè)備連接入總線節(jié)點提供的端口從而擴展串行總線。?
d. 熱插拔。不需要系統(tǒng)斷電就可以動態(tài)地加入或刪除設(shè)備。?
e. 即插即用。每次加入或刪除設(shè)備時,總線節(jié)點會自動配置,并且配置時不需要主機系統(tǒng)的干預(yù)。?
f.巨大的映射至內(nèi)存的地址空間。每個節(jié)點擁有256T字節(jié)的地址空間,每條總線上有16P字節(jié)的地址空間。?
1.2 1394原理?
1394原理主要定義了以下幾點:?
a. 1394總線的拓撲結(jié)構(gòu)。1394串行總線的拓撲結(jié)構(gòu)可以分為兩種環(huán)境:底板環(huán)境和電纜環(huán)境。不同環(huán)境間總線的連接需要總線橋。電纜環(huán)境下的物理拓撲結(jié)構(gòu)是無環(huán)網(wǎng)絡(luò)結(jié)構(gòu),由電纜連接各節(jié)點間的端口,呈分支擴展,形成樹狀或菊花狀的網(wǎng)絡(luò)拓撲。底板環(huán)境中物理拓撲是多點接入(multidrop)的總線,總線上分布著多個連接器,允許節(jié)點直接插入,通過仲裁使各節(jié)點享用總線。?
b. 1394的物理接口。?
1394設(shè)備通過標準的六芯線纜來傳輸信號,如圖1所示。其中TPA/TPA*和TPB/TPB*為一對差分模式的信號線。VP、VG提供8~40V的電源,可以通過它們給其它的節(jié)點供電。?
c. 1394總線協(xié)議。在1394傳輸中,支持等時傳輸和異步傳輸事務(wù),并將每次傳輸分解為一系列的小事務(wù),有效地利用總線帶寬。異步事務(wù)需要數(shù)據(jù)確認,總線協(xié)議要復(fù)雜些,它包括三種基本事務(wù)類型:讀取、寫入和鎖定。每個事務(wù)由請求子事務(wù)和響應(yīng)子事務(wù)組成。由于等時應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序的性質(zhì),相關(guān)的總線事務(wù)十分簡單,等時事務(wù)每隔125μs向目標節(jié)點發(fā)送數(shù)據(jù)并且不需要任何回執(zhí)。1394總線一共定義了12種事務(wù)類型的包格式,采用循環(huán)冗余校驗(CRC)進行數(shù)據(jù)差錯控制,有相應(yīng)的硬件和軟件處理各類傳輸事務(wù)。?
??? d. 1394電源管理。電源管理涉及到單獨節(jié)點或節(jié)點中元件的電源狀態(tài)控制。1394定義了4種電源狀態(tài)以及相應(yīng)的CSR寄存器和ROM配置項,支持掛起/恢復(fù)機制,使節(jié)點在軟件控制下處于低功耗。?
2 系統(tǒng)硬件設(shè)計?
2.1 圖像傳輸系統(tǒng)總體設(shè)計?
系統(tǒng)采用冗余備份的雙路1394高速總線將數(shù)據(jù)傳送給大容量存儲器、數(shù)據(jù)加密器和信道編碼器,如圖2所示。?
由于本地系統(tǒng)中普遍采用PCI接口,為了最大限度地利用現(xiàn)有硬件資源,縮短開發(fā)周期,研制了1394-PCI的轉(zhuǎn)接卡,來實現(xiàn)基于1394的高速圖像傳輸系統(tǒng)。該轉(zhuǎn)接卡主要通過物理層和鏈路層控制芯片組實現(xiàn),其中鏈路層控制芯片采用TI公司的TSB12LV23,支持開放主機控制器接口(OHCI)的PCI接口芯片。?
2.2 TSB12LV23/TSBAB03芯片組?
??? TSB12LV23提供主機接口和物理層接口,實現(xiàn)CRC校驗以及同步服務(wù)。在芯片中集成了中斷寄存器、傳送/接收FIFO和DMA通道。TSBAB03芯片完成1394總線協(xié)議中的物理層功能,實現(xiàn)仲裁機制,對收發(fā)信號進行編碼/解碼。?
鏈路層和物理層芯片的連接電路圖如圖3所示。
?
?
3 系統(tǒng)軟件設(shè)計?
系統(tǒng)軟件包括1394設(shè)備驅(qū)動程序、動態(tài)鏈接庫和應(yīng)用程序。?
3.1 1394設(shè)備驅(qū)動程序開發(fā) ?
Windows驅(qū)動模型(WDM)定義了驅(qū)動程序分層,以適應(yīng)即插即用系統(tǒng)。1394系統(tǒng)驅(qū)動程序采用分層結(jié)構(gòu)模型,其設(shè)備棧如圖4所示。設(shè)備驅(qū)動位設(shè)備棧頂,通過發(fā)IRP給IEEE 1394總線驅(qū)動來與設(shè)備通信。IEEE 1394總線驅(qū)動為1394總線提供了獨立于硬件的接口,并將一部分IRP傳向端口驅(qū)動程序。?
在分層模型中,1394總線驅(qū)動負責(zé)管理1394設(shè)備驅(qū)動程序與1394控制器之間的通信;加載及卸載設(shè)備驅(qū)動程序。設(shè)備驅(qū)動程序在功能層工作,它們不需要任何低層硬件資源,只需對總線驅(qū)動程序發(fā)請求,由總線驅(qū)動程序訪問硬件來完成這些請求。?
用DDK設(shè)計的1394設(shè)備驅(qū)動由4個模塊組成:初始化模塊、即插即用模塊、電源管理模塊以及I/O" title="I/O">I/O模塊。?
初始化模塊提供設(shè)備驅(qū)動的入口點,從而將不同的IRP請求發(fā)向相應(yīng)的執(zhí)行模塊。?
即插即用模塊用于實現(xiàn)1394設(shè)備的熱插拔和動態(tài)配置。當(dāng)總線驅(qū)動程序在加電或者添加/刪除時檢測到新設(shè)備,從設(shè)備中取出一個或多個標識符,用于檢查所有可用的安裝文件,發(fā)現(xiàn)合適的設(shè)備驅(qū)動程序。驅(qū)動程序被裝入,調(diào)用AddDevice入口點,告訴它發(fā)現(xiàn)一個新設(shè)備,并創(chuàng)建功能設(shè)備對象(FDO)??偩€驅(qū)動程序或者安裝文件詳細描述設(shè)備所需的硬件資源,使用仲裁器為每個設(shè)備分配資源。?
??? 電源管理模塊負責(zé)設(shè)備的掛起和恢復(fù)。?
I/O模塊完成I/O請求的大部分工作。該模塊定義了所需的I/O控制代碼,從而為應(yīng)用程序提供了調(diào)用系統(tǒng)驅(qū)動程序的接口。?
3.2 動態(tài)鏈接庫的設(shè)計?
由于Windows具有與設(shè)備無關(guān)的特性,不提倡與機器底層的東西打交道。如果直接用Windows的 API函數(shù)或I/O讀寫指令進行訪問和操作,程序運行時往往就會產(chǎn)生保護模式錯誤甚至死機,更嚴重的情況會導(dǎo)致系統(tǒng)崩潰。用DLL技術(shù)可以方便地解決上述問題。而且DLL沒有自己的堆棧,與調(diào)用它的應(yīng)用程序采用有相同的堆棧模式,減少了編程設(shè)計上的不便;一個DLL在內(nèi)存中只有一個實例,使之能高效經(jīng)濟地使用內(nèi)存;DLL的代碼封裝性使得程序簡潔明晰。?
在1394 API動態(tài)鏈接庫中封裝了所有的1394請求命令,如異步讀/寫、等時讀/寫等,從而可以很方便地在應(yīng)用級實現(xiàn)1394傳輸。通過調(diào)用DeviceIoControl向設(shè)備發(fā)請求,由I/O管理器構(gòu)造一個1394請求塊傳給總線驅(qū)動程序;由總線驅(qū)動程序完成該請求或者將請求進一步傳給端口驅(qū)動程序,然后返回執(zhí)行狀態(tài)。?
3.3 應(yīng)用程序設(shè)計?
在高速圖像傳輸系統(tǒng)中,應(yīng)用程序是控制數(shù)據(jù)流的中心。采用VC++ 6.0和2000DDK實現(xiàn),主要功能有:獲取視頻數(shù)據(jù)源、檢測1394設(shè)備、總線管理、分配1394地址空間、設(shè)置等時資源和通道、完成1394傳輸。一次等時傳輸流程如圖5所示。?
4 應(yīng)用前景?
如前所述,由于1394的高速、靈活和可擴展性,使其在很多方面都大有用武之地,其中包括大容量存儲器、視頻會議、家庭網(wǎng)絡(luò)、高速打印機、娛樂設(shè)備等。而且由于數(shù)字廣播、因特網(wǎng)、家庭數(shù)字網(wǎng)絡(luò)和高帶寬的視頻/音頻傳輸?shù)男枨?使得IEEE 1394迅速發(fā)展。?
參考文獻?
1 IEEE Standards Board. IEEE Standard (1394-1995) for a High Performance Serial Bus. 12 December 1995?
2 Don Anderson. FireWire系統(tǒng)體系(第二版). 北京:中國電力出版社, 2001.3?
3 Microsoft Corporation. Windows 2000 DDK Document 1985-2000. 2000.6?
4 Chris Cant. Windows WDM設(shè)備驅(qū)動程序開發(fā)指南.北京:機械工業(yè)出版社, 2000