阮林波 李斌康 郭明安 郝文析
西安西北核技術研究所(710024)
高幀頻的視頻信號不同于普通視頻信號,如果采用模擬信號方式傳輸,它的模擬帶寬達到了幾十兆甚至一兩百兆,這樣很難實現遠距離傳輸。而光纖傳輸容量大、質量高和不易受干擾等特點,在高速數字傳輸系統中得到了廣泛應用。目前國內外針對普通視頻信號的光纖傳輸系統已相當多,而對非標準的高幀頻視頻信號光纖傳輸系統少有報道,特別是兩路或多路高幀頻視頻的單根光纖傳輸實現則未見報道。
在本文中需要實現兩路256×256像素每秒1000幀高速視頻信號遠距離傳輸。對于高幀頻攝像機,由于它幀頻很高,通常采用多路并行的信號輸出方式降低數據率,最后通過復用合成為視頻信號。為實現遠距離傳輸,文中提出采用數字光纖的復用、解復用和計算機PCI技術實現兩路高幀頻視頻設備產生的15MBps×40路數字信號的傳輸與視頻信號的合成及計算機實時顯示。
1 系統原理和結構
高速視頻信號的光纖傳輸系統主要包括復用、光發射、光接收、解復用、控制電路和PCI傳輸接口等部分。圖1為系統光發射部分工作原理圖。
從高速視頻采集獲得的40路15MBps的數據首先經過XC9572內的2:1復用,形成20路30MBps的二級復用數據提供給HDMP-1022,由其完成信道編碼、轉換成600MBps的PECL串行數據,驅動光發射模塊,完成數據的光纖發射。圖2為光接收部分原理圖。
解復用芯片HDMP-1024從光纖接收模塊接收到的600MBpsPECL數據中提取出20路的并行數據和30MHz的時鐘信號,再由XC9572完成二級解復用,同時也為FIFO及PLX9052組成的PCI傳輸卡提供時序信號,計算機通過PCI總線獲得實時高速視頻采集數據,并予以顯示和處理。
2硬件設計
系統的硬件設計主要包括光纖傳輸單元、PCI傳輸單元和控制單元三部分。
2.1數字光纖傳輸單元設計
數字光纖傳輸單元主要完成串并行數據的復用與解復用功能。設計中采取數據通信中的CIMT(Conditional-Invert Master Transition)信道編碼方式對數據進行編碼。圖3顯示CIMT碼的格式。
CIMT碼有三種幀形式:數據幀、控制幀和填充幀。數據幀和控制幀的格式如圖3(a)所示,可以發送任意需要傳送的數據和控制信息,每一幀都以C-Field(Coding Field)開始,其后接著D-Field(Data Field)。其中D-Field組成的數據位可以是十六位或二十位,本系統采用二十位數據;控制位(C-Field)由四位數據碼組成,接收端可以此提取并鎖定數據的類型與狀態。填充幀是在發射端沒有數據信號時以及發射端和接收端建立連接時產生。在三種幀的主瞬變點處是接收端恢復時鐘信號的參考點。本系統中選用Aglient公司的HDMP-1022和HDMP-1024作為CIMT碼的復用與解復用主要芯片,HFCT-5208作為光發射和光接收器來實現點對點的光纖傳輸設計。
在光發射端設計中采用HDMP-1022的Double-Frame模式實現40路數據的傳輸,通過二級復用擴展其并行數據的容量為40路。數據在同一時鐘控制下同時被復用成一路的高速信號,同時生成另一路按位取反的信號,最后通過其CIMT編碼器輸出推動光發射器。圖4為以Double-Frame方式復用發射的時序圖。其中CLOCK(15MHz)是單路數據采集時鐘,FLAG表示奇偶場,CAV和DAV表示數據幀和控制幀的控制位,C0~C39表示輸入的40路信號,D0~D19是CIMT碼的D-Field數據,STR-BOUT(30MHz)為芯片鎖相后的倍頻時鐘。
在光接收端部分光接收器將獲得的光信號轉變為高速電信號并發送給HDMP-1024,由它解復用后提取參考時鐘信號STRBOUT(30MHz)、數據信號C0~C39,以及其他的狀態控制信號和數據時鐘RCLK(15MHz)。圖5為Double-Frame光接收端時序圖。
2.2 PCI傳輸單元設計
為實現高速視頻信號的實時記錄,設計中利用了PCI總線技術,PCI控制芯片采用PLX9052,它與FIFO相結合可以實現最高數據傳輸速率120MBps數字量輸入。
PLX9052符合PCI2.1規范,支持低成本從屬適配器。內部包括一個64字節的寫FIFO和一個32字節的讀FIFO,通過讀寫FIFOs,可實現高性能的突發式數據傳輸;其局部總線與PCI總線的時鐘相互獨立,局部總線的時鐘頻率范圍為0~40MHz,PCI的時鐘頻率范圍為0~33MHz;可以通過串行EEPROM提供PCI總線和局部總線的部分重要配置信息。PLX9052支持突發式內存映射傳輸和單周期的內存或I/O映射傳輸,利用32字節的直接從設備讀FIFO和64字節的直接從設備寫FIFO,映射在PCI內存和I/O空間中的地址由PCI基址寄存器設置。而且,局部映射寄存器允許將PCI地址空間轉換為局部地址空間。圖6是PLX9052與FIFO相互連接的電路圖,FIFO采用IDT公司的IDT72205。
2.3控制單元設計
整個設計的時序控制單元均由CPLD完成,在光發射端主要提供40路信號的2:1復用、數據的鎖存及系統工作的時序信號;在光接收端主要為解復用、FWO和PLX9052提供相應的時序邏輯。本設計選用Xilinx公司的XC9572作為控制單元的核心芯片,結合它的在線編程功能,完成整個系統的時序調試與設計。
結合Verilog語言與原理圖(sch)方法,較好地實現了整個系統時序的設計。以下是40路數字信號8:1復用Verilog語言設計代碼。
3軟件設計
整個系統軟件主要包括PCI傳輸單元的驅動程序和系統應用程序設計。 Windows下的PCI驅動程序不僅僅包括物理設備的驅動程序,也包括為文件系統等非物理設備編寫的虛擬設備驅動程序。在設計中主要針對Windows2000下PCI驅動程序設計。由于Windows 2000禁止用戶模式的程序訪問I/O端口(Windows 95/98則允許用戶程序直接訪問I/O端口),直接控制物理設備的驅動程序均為內核模式。而本設計的PCI驅動程序要求對各種硬件資源訪問,所以應該選擇工作在零級的驅動程序模式。
開發設備驅動采用的主要開發工具是JUNGO公司提供的軟件包Windriver。這個軟件包提供開發PLX9052有關設備的文檔、編譯需要的頭文件和庫文件、調試工具和程序范例。利用其內部定義的可以調用的系統底層服務,如DMA服務、中斷服務、內存管理服務、可安裝文件系統服務等,結合VC++完成整個PCI設備驅動程序。本設計包括以下幾個方面:
(1)PCI設備初始化
PCI設備驅動程序首先實現識別PLX9052器件、尋址PLX9052器件的資源和對PLX9052器件中斷的服務。主要調用Windirver軟件包內以下函數:
WD_Open(hWD);
PCI_Get_WD_handle(&hWD);
PLX_LocateAndOpenBoard(0x10b5,0x9052,UseInt);
(2)PCI端口地址操作
PCI總線是32位的總線標準,在進行I/O操作時通常要進行雙字(DWORD)操作,而在Windows 2000下,系統不允許處于優先級3的用戶程序和用戶模式驅動程序直接使用I/O指令。任何對I/O的操作都需要借助內核模式驅動來完成。筆者主要調用Windirver軟件包內兩個函數來完成。
(3)內存的讀寫
PLX9052與計算機進行數據通信主要采取DMA方式,在Windriver中提供了相應內存讀取兩個函數,通過對它的調用可實現PLX9052與計算機內存的數據交換。
整個系統的應用程序研制都基于微軟公司的VC++開發設計,可用于Windows 2000操作系統下。
整個光纖傳輸系統利用復用、解復用,結合PCI技術實現了高速視頻數字化信號遠距離傳輸及控制、實時顯示等功能,傳輸距離15km,可記錄數據量為128K字節。目前已將設計用到相關的測試項目中,并將進一步改進擴大數據的容量及穩定性。