基于SOPC的視頻采集系統設計
在FPGA上實現嵌入式系統,主要是構建片內MicroBlaze處理器,并為處理器添加片內外設以實現硬件模塊功能,同時應添加片內外設與芯片外部引腳的連接。在開發片內外設的同時,應開發外設功能的底層驅動程序,然后在MicroBlaze處理器上實現系統應用程序。這是個軟件與硬件協同開發的過程。以MicroBlaze處理器為核心的系統開發可使用Xilinx公司提供的EDK(Embedded Development Kit)。該EDK提供有一個集成開發環境XPS(Xilinx Platform Studio),它同時集成了硬件平臺產生器、軟件平臺產生器、仿真模型生成器、軟件編譯器和軟件調試器等工具。在此環境下調用各種工具即可完成軟硬件協同開發的整個流程。EDK提供有多種與MicroBlaze處理器相關的功能IP核,其中包括OPB 10/100M以太網控制器、PLB/OPB SDRAM控制器、UART中斷控制器、定時器及其它外圍設備接口等資源。使用EDK中的系統硬件平臺設計向導(Base System Builder Wizard)可進行MicroBlaze處理器的配置,而使用添加外圍設備向導(ImportPeripheral Wizard)則可調用既有IP核以生成片內設備,并與處理器總線相連。
本文引用地址:http://www.104case.com/article/85844.htm本系統的片內主要功能模塊包括視頻接口模塊、環形緩沖區、碼流兩級FIFO緩沖區、MPEG-4編碼器、Flash控制器、SDRAM控制器、10/100M以太網控制模塊、USB控制模塊等。其中視頻接口模塊是MicroBlaze處理器與TVP5150的接口。MicroBlaze處理器對TVP5150的控制驅動程序可從TVP5150驅動程序模板移植而來,可用于實現TVP5150采集方式的配置,并將采集的視頻信號以4:2:0YUV格式存儲到環形緩沖區里。環形緩沖區是片內與MicroBlaze處理器總線相連的SRAM存儲空間的一部分,其中數據隊列的首尾指針是由MicroBlaze處理器程序維護的。采用開發工具提供的FIFO模板可對其深度、位寬、讀寫時鐘、滿標志等參數進行設定,并將兩個FIFO相連以構成兩級FIFO,然后將其入口與MPEG-4編碼器的輸出相連。FIFO的先一級與MicroBlaze處理器總線相連可支持DMA讀取。MPEG-4編碼器是Xilinx公司授權的MPEG-4 Simple Profile編碼器IP核,它接受環形緩沖區里未壓縮的4:2:0YUV格式視頻信號并可將其生成MPEG-4Simple Profile格式壓縮碼流。MPEG-4編碼器與MicroBlaze處理器總線和兩級FIFO輸入相連,可為EDK提供其驅動程序。Flash控制器、SDRAM控制器、10/100M以太網控制器的實現軟件在EDK中已提供,其與處理器總線的連接也在向導工具中自動設定,其驅動程序就包含在其中。由于片外采用了高度集成的USB控制器,而片內的USB控制模塊只是MicroBlaze處理器總線與引腳的直接相連,故其驅動程序只是參考PDIUSBD12的一般驅動程序在EDK軟件平臺上的移植。
本系統的片內外設與MircoBlaze處理器的連接如圖4所示,其中箭頭表示視頻數據的流向。
3 系統軟件設計
系統中的MicroBlaze處理器對TVP5150和PDIUSBD12的控制驅動程序可根據其通用驅動程序在EDK軟件平臺上移植生成。利用Xilinx公司提供的IP核可以搭建FPGA片內硬件平臺,同時可獲得底層硬件驅動程序的支持,然后在此基礎上進行系統應用程序的開發。
外部模擬視頻信號經TVP5150轉換為數字視頻信號后,即可進入FPGA并通過視頻接口模塊直接排列到內部環形緩沖區數據隊列的隊尾。
當MircoBlaze處理器接收到MPEG-4編碼器可用中斷時,系統將檢測環形緩沖區是否為空。非空時,可將數據隊列的頭部數據取出送給MPEG-4編碼器,同時啟動編碼器編碼。
視頻信號經過編碼器編成視頻原碼流后,即可進入FPGA內部二級FIFO緩存。當FIFO先一級滿時向MircoBlaze處理器發出數據輸出中斷請求。
MircoBlaze處理器響應來自FIFO的中斷后,可將FIFO先一級數據取出并以USB或以太網接口輸出,然后清空FIFO先一級。
依據上面的工作過程,MircoBlaze處理器的應用程序包括以下幾部分:
(1)系統復位初始化
即禁止外部中斷,初始化各驅動程序,清空環形緩沖區和兩級FIFO,檢測USB接口、以太網接口連接以決定用何種方式輸出,然后啟動對TVP5150的控制并進行數據采集,最后啟用外部中斷。
(2)編碼器可用中斷服務
編碼器完成一幀數據編碼即可向MircoBlaze處理器發出中斷,然后由MircoBlaze處理器控制編碼器向環形緩沖區提取數據,并在環形緩沖區耗盡時等待一定時間;
(3)碼流可輸出中斷服務
當兩級FIFO先一級所準備輸出的碼流滿時,可向MircoBlaze處理器發出中斷,然后在MircoBlaze處理器控制下,將該碼流交付給USB或以太網輸出接口API并由底層驅動輸出,最后再清空FIFO先一級。
圖5所示是其應用程序流程圖。
4 結束語
本設計介紹了基于Spartan-3 FPGA實現通用視頻采集系統的實現方案。本系統的設計依賴于專用的設計軟件和IP模塊。由于采用了SOPC技術,該系統可裁減、可擴充、可升級,而多層次IP模塊的高度復用又使得本系統具有設計周期短,風險投資小和設計成本低等優勢。
評論