無線通信技術和視頻壓縮技術的迅速發展,使得無線視頻傳輸成為人們研究的熱點。無線視頻傳輸具有數據量大,實時性要求高,無線信道資源有限的特點。新一代的視頻壓縮標準H.264結合專用視頻DSF芯片可以滿足信源編碼的要求。而處理數據量大,速度快,運算結構相對簡單的FPGA適用于信道編碼。基于以上考慮,設計了一個無線視頻傳輸系統,并以發射端ADSP-BF537作為控制器,配置FPGA和進行數據通信。 1 總體結構實現方案 系統硬件的實現方案如下: 發送端由攝像機、專用視頻編碼芯片、控制模塊、基帶模塊、射頻模塊(RF)等部分組成。接收端由射頻接收模塊、控制模塊、基站模塊、專用視頻解碼芯片等部分組成。系統結構如圖1所示。 視頻編碼部分使用基于DM642的H.264視頻編碼器。該芯片通過網口傳輸數據,輸出的視頻流是H.264格式,輸出圖像的分辨率范圍為176×144~702×576,而且可以根據具體需要修改碼流和幀率。 控制模塊使用ADI公司的ADSP-BF537作為主要芯片。其主要作用是完成FPGA的配置、接口控制、通信鏈路的建立(視頻流數據的傳輸)。 基帶模塊以Xilinx公司Spartan3 400萬門級芯片的FPGA作為主要芯片。FPGA完成整個基帶信號處理,包括信道編碼、OFDM調制、濾波等。 射頻模塊由發射單元、接收單元、頻率合成單元、外置15 W功放等四部分組成,采用差分I,Q信號調制、解調,雙向傳輸。發射單元將I,Q差分輸入經調制芯片調制成340 MHz的射頻信號,經功率控制、功放、隔離器送往環行器、天線;通過收發電平控制進行發送和接收的切換;接收單元對接收信號進行濾波、低噪聲放大器后送I,Q解調芯片解調出差分的I,Q信號,并進行RSSI檢測和AGC控制。工作模式采用半雙工模式;頻率合成單元為發射單元提供340 MHz本振信號,為接收單元提供680 MHz本振信號。 2 控制模塊中DSP與FPGA數據通信 由于FPGA基于SRAM工藝,上電后數據會丟失。一般FPGA除了采用邊界掃描方式JTAG下載外,更多采用與FPGA相對應PROM芯片靜態配置,這種配置方式由于PROM容量小,價格昂貴,易于燒壞等缺點,在產品化之前一般不予采用,更可取的方法是采用控制器動態配置FPGA,比如單片機、DSP。同時,視頻服務器通過網口發送視頻數據,需要一個控制部分前向網口接收視頻服務器的數據,后向配置FPGA,發送視頻數據。基于以上考慮,整個系統中控制部分均由ADI公司的Blackfin系列DSP BF537完成,DSPBF537通過接口與視頻服務器和FPGA通信。 2.1 硬件平臺 ADSP是ADI(Analog Device Inc.)公司推出的一系列高性能低功耗DSP芯片,而基于Blackfin處理器的ADSP-BF537具有接口豐富,性能優良,價格低廉等特點,并具有強大的多媒體數據處理能力。Blackfin處理器集成了一個由ADI公司和Intel公司聯合開發的基于MSA(Micro Signal Architecture)的16/32位嵌入式處理器,支持32位RISC指令集,采用10級流水線,集成了兩個16位乘法加速器,內核主頻最高可以達到600 MHz。ADSF-BF537總線有一個以DMA控制器為中心的高速自主數據通道。DMA總線可以在存儲器之間、存儲器和外部接口之間快速地傳遞數據,并且可以和內核并行操作。ADSP的集成開發環境Visual DSP++中嵌入了實時操作系統內核VDK,適合多任務多線程的嵌入式操作。ADI還提供了一個用于Blackfin系列嵌入式處理器的輕量級TCP/IP(LwIP)協議棧端口,可以快速將一個獨立的嵌入式應用聯網。 2.2 硬件系統架構 DSP與視頻服務器采用輕量級TCP/IP(LwIP)交互數據,這里不過多介紹。主要介紹DSP與FPGA連接。由于FPGA基于SRAM工藝,掉電后數據會丟失。采用的方法是將作用于FPGA的通信基帶算法文件存儲在DSP的FLASH中。一般調試時,DSP及FPGA都需要從PC機通過JTAG口進行程序的下載。但當系統程序已經調試完畢,當需要到戶外進行測試或作為產品使用時,針對系統調試的方便性,采用DSP自啟動及配置FPGA部分。 ADI公司的ADSP-BF537上電后啟動方式一共有7種。本設計中采用的DSP上電從16位FLASH啟動,啟動程序采用Analog公司提供的燒寫啟動FLASH的程序。第一次上電時,利用JTAG,結合ADSP自帶工具“FLASH Programmer”將寫好的DSP程序燒入FLASH中。并且將FPGA的配置文件(.bit格式)讀到緩存,通過DSP燒寫到FLASH的Bankl和Bank2中,把Bank0用來做DSP自啟動。斷電復位后,啟動過程如下: (1)BF537從FLASH引導啟動,完成DSP板級初始化。 (2)FPGA的配置文件動態加載到FPGA中。 (3)用DSP的GPIO端口對FPGA的時鐘和數據配置專用引腳進行模擬時序,即完成對FPGA的動態配置。 在啟動過程完成后,DSP與視頻服務器進行Sock-et連接,接收壓縮的視頻碼流,并送到FPGA進行基帶部分的處理。DSP與FPGA的接口部分如圖2所示。 圖2中DSP通過自身的外部總線與FPGA相連,FPGA內部實現了兩個2 KB的異步存儲器SRAM0,SRAM1,對存儲器的訪問滿足DSP外部總線的時序要求。圖2中接口連線含義如表1所示。 對DSP而言,DSP通過外部總線連接到SRAM0和SRAM1,這就相當于外擴了兩個外部RAM,DSP可以自由地訪問它們。圖2中的SRAM0,SRAM1分別用于DSP發送數據和接收數據。SRAM0和SRAM1本身是雙口RAM,可以供DSP和FPGA訪問,就是通過這種共享存儲器的方式完成數據交互。 2.3 軟件系統結構 相關程序是用含有VDK(Visual DSP Kernel)的DSP軟件開發工具Visual DSP開發的。VDK是一種帶有API函數庫的實時操作系統內核,它具有任務調度和任務管理功能,一共支持32個任務。VDK是整個軟件的基礎,所有其他的程序都運行在該Kernel上。程序流程圖如圖3所示。 上電或復位后,DSP自啟動后VDK啟動線程lwip_sysboot_threadtype開始運行。在線程lwip_sysboot_threadtype中進行板級初始化和Lwip協議棧和網口初始化,其中板級初始化包括FPGA初始化,EBIU初始化,MDMA初始化,FLAG初始化。接下來創建下面幾個線程: (1)數據傳輸:視頻數據傳輸。用于從編碼器獲取編碼后的視頻數據流,并存儲到緩沖區中。 (2)FPGA中斷:視頻數據發送中斷;MDMA中斷。 DSP首先通過Socket與視頻服務器連接,從視頻服務器獲取視頻數據,并將數據緩存后按照特定的格式打包,等待FPGA觸發視頻數據發送中斷。中斷觸發后,DSP啟動MDMA將一幀大小的數據發送給FPGA發送緩沖區。當MDMA操作完成后,觸發MDMA中斷,將幀頭寫入FPGA發送緩沖區的頭兩個字節。FPGA將接收的數據進行基帶算法處理后再將數據發送給射頻部分,之后FPGA再觸發視頻數據發送中斷,告訴DSP可以下一幀的發送,于是又啟動MDMA,如此循環。 3 實驗結果和分析 對系統在不同的信噪比的環境中傳輸的誤碼率進行了測試。測試方法如下:將發射機的輸出端口通過數據排線與邏輯分析儀相連,邏輯分析儀將采集到的一幀發射信號送到PC中用Matlab軟件對其加上噪聲,得到信噪比固定的信號。將這個信號導人信號源中進行不間斷循環發送給接收端的輸入端口。接收機接收信號進行解調并將解調出的數據傳給PC以統計誤碼率。測試結果如表2所示。 4 結 語 設計了一種無線視頻傳輸系統的方案,并對其中發射部分的數據通信過程做了詳細闡述。從硬件架構和軟件設計兩方面說明了數據在視頻服務器、DSP和FP-GA之間的傳遞過程。其中ADSP-BF537作控制器,成功完成了動態配置FPGA和通過網口傳送視頻數據的功能。該方案很好地滿足了大數據量,實時性的數據處理和結構靈活,模塊化設計相結合的要求。同時DSP+FPGA的數字硬件系統開發周期較短,系統容易維護和擴展,適合實時信號處理,使方案有更廣泛的應用。 |