基于Spartan-3 FPGA的視頻采集系統(tǒng)設(shè)計(jì)
在FPGA上實(shí)現(xiàn)嵌入式系統(tǒng),主要是構(gòu)建片內(nèi)MicroBlaze處理器,并為處理器添加片內(nèi)外設(shè)以實(shí)現(xiàn)硬件模塊功能,同時(shí)應(yīng)添加片內(nèi)外設(shè)與芯片外部引腳的連接。在開(kāi)發(fā)片內(nèi)外設(shè)的同時(shí),應(yīng)開(kāi)發(fā)外設(shè)功能的底層驅(qū)動(dòng)程序,然后在MicroBlaze處理器上實(shí)現(xiàn)系統(tǒng)應(yīng)用程序。這是個(gè)軟件與硬件協(xié)同開(kāi)發(fā)的過(guò)程。以MicroBlaze處理器為核心的系統(tǒng)開(kāi)發(fā)可使用Xilinx公司提供的EDK(Embedded Development Kit)。該EDK提供有一個(gè)集成開(kāi)發(fā)環(huán)境XPS(Xilinx Platform. Studio),它同時(shí)集成了硬件平臺(tái)產(chǎn)生器、軟件平臺(tái)產(chǎn)生器、仿真模型生成器、軟件編譯器和軟件調(diào)試器等工具。在此環(huán)境下調(diào)用各種工具即可完成軟硬件協(xié)同開(kāi)發(fā)的整個(gè)流程。EDK提供有多種與MicroBlaze處理器相關(guān)的功能IP核,其中包括OPB 10/100M以太網(wǎng)控制器、PLB/OPB SDRAM控制器、UART中斷控制器、定時(shí)器及其它外圍設(shè)備接口等資源。使用EDK中的系統(tǒng)硬件平臺(tái)設(shè)計(jì)向?qū)?Base System Builder Wizard)可進(jìn)行MicroBlaze處理器的配置,而使用添加外圍設(shè)備向?qū)?ImportPeripheral Wizard)則可調(diào)用既有IP核以生成片內(nèi)設(shè)備,并與處理器總線相連。
本系統(tǒng)的片內(nèi)主要功能模塊包括視頻接口模塊、環(huán)形緩沖區(qū)、碼流兩級(jí)FIFO緩沖區(qū)、MPEG-4編碼器、Flash控制器、SDRAM控制器、10/100M以太網(wǎng)控制模塊、USB控制模塊等。其中視頻接口模塊是MicroBlaze處理器與TVP5150的接口。MicroBlaze處理器對(duì)TVP5150的控制驅(qū)動(dòng)程序可從TVP5150驅(qū)動(dòng)程序模板移植而來(lái),可用于實(shí)現(xiàn)TVP5150采集方式的配置,并將采集的視頻信號(hào)以4:2:0YUV格式存儲(chǔ)到環(huán)形緩沖區(qū)里。環(huán)形緩沖區(qū)是片內(nèi)與MicroBlaze處理器總線相連的SRAM存儲(chǔ)空間的一部分,其中數(shù)據(jù)隊(duì)列的首尾指針是由MicroBlaze處理器程序維護(hù)的。采用開(kāi)發(fā)工具提供的FIFO模板可對(duì)其深度、位寬、讀寫(xiě)時(shí)鐘、滿標(biāo)志等參數(shù)進(jìn)行設(shè)定,并將兩個(gè)FIFO相連以構(gòu)成兩級(jí)FIFO,然后將其入口與MPEG-4編碼器的輸出相連。FIFO的先一級(jí)與MicroBlaze處理器總線相連可支持DMA讀取。MPEG-4編碼器是Xilinx公司授權(quán)的MPEG-4 Simple Profile編碼器IP核,它接受環(huán)形緩沖區(qū)里未壓縮的4:2:0YUV格式視頻信號(hào)并可將其生成MPEG-4Simple Profile格式壓縮碼流。MPEG-4編碼器與MicroBlaze處理器總線和兩級(jí)FIFO輸入相連,可為EDK提供其驅(qū)動(dòng)程序。Flash控制器、SDRAM控制器、10/100M以太網(wǎng)控制器的實(shí)現(xiàn)軟件在EDK中已提供,其與處理器總線的連接也在向?qū)Чぞ咧凶詣?dòng)設(shè)定,其驅(qū)動(dòng)程序就包含在其中。由于片外采用了高度集成的USB控制器,而片內(nèi)的USB控制模塊只是MicroBlaze處理器總線與引腳的直接相連,故其驅(qū)動(dòng)程序只是參考PDIUSBD12的一般驅(qū)動(dòng)程序在EDK軟件平臺(tái)上的移植。
本系統(tǒng)的片內(nèi)外設(shè)與MircoBlaze處理器的連接如圖4所示,其中箭頭表示視頻數(shù)據(jù)的流向。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)中的MicroBlaze處理器對(duì)TVP515 0和PDIUSBD12的控制驅(qū)動(dòng)程序可根據(jù)其通用驅(qū)動(dòng)程序在EDK軟件平臺(tái)上移植生成。利用Xilinx公司提供的IP核可以搭建FPGA片內(nèi)硬件平臺(tái),同時(shí)可獲得底層硬件驅(qū)動(dòng)程序的支持,然后在此基礎(chǔ)上進(jìn)行系統(tǒng)應(yīng)用程序的開(kāi)發(fā)。
外部模擬視頻信號(hào)經(jīng)TVP5150轉(zhuǎn)換為數(shù)字視頻信號(hào)后,即可進(jìn)入FPGA并通過(guò)視頻接口模塊直接排列到內(nèi)部環(huán)形緩沖區(qū)數(shù)據(jù)隊(duì)列的隊(duì)尾。
當(dāng)MircoBlaze處理器接收到MPEG-4編碼器可用中斷時(shí),系統(tǒng)將檢測(cè)環(huán)形緩沖區(qū)是否為空。非空時(shí),可將數(shù)據(jù)隊(duì)列的頭部數(shù)據(jù)取出送給MPEG-4編碼器,同時(shí)啟動(dòng)編碼器編碼。
視頻信號(hào)經(jīng)過(guò)編碼器編成視頻原碼流后,即可進(jìn)入FPGA內(nèi)部二級(jí)FIFO緩存。當(dāng)FIFO先一級(jí)滿時(shí)向MircoBlaze處理器發(fā)出數(shù)據(jù)輸出中斷請(qǐng)求。
MircoBlaze處理器響應(yīng)來(lái)自FIFO的中斷后,可將FIFO先一級(jí)數(shù)據(jù)取出并以USB或以太網(wǎng)接口輸出,然后清空FIFO先一級(jí)。
評(píng)論