本發(fā)明涉及一種可以廣泛應(yīng)用于多種數(shù)據(jù)傳輸系統(tǒng)中的圖像壓縮技術(shù),尤其是圖像通信等領(lǐng)域中,主要用于遙感、遙測等飛行器載荷的終端圖像壓縮方法。
背景技術(shù):
圖像是人們獲取信息的重要來源,特別是圖像的數(shù)字化后,數(shù)字圖像在傳輸和存儲(chǔ)的廣泛應(yīng)用過程中,經(jīng)常遇到數(shù)字圖像數(shù)據(jù)量巨大,而傳輸帶寬和存儲(chǔ)容量有限的矛盾。圖像的存儲(chǔ)和傳輸問題變得越來越突出,要求存儲(chǔ)、傳輸對(duì)網(wǎng)絡(luò)資源的開銷盡量低,同時(shí)又不能降低存儲(chǔ)和傳輸過程中圖像的質(zhì)量。近年來,高速高幀頻攝像機(jī)的出現(xiàn),圖像數(shù)據(jù)大幅增長,而傳輸帶寬明顯成為瓶頸,因此圖像壓縮技術(shù)成為近年研究的熱點(diǎn)。圖像壓縮技術(shù)廣泛應(yīng)用于多種數(shù)據(jù)傳輸系統(tǒng)中,如視頻播放器通常采用mpeg4或h.264等壓縮方式,數(shù)碼照相機(jī)通常采用jpeg等壓縮方式。jpeg2000壓縮算法具有良好的壓縮效率,但算法復(fù)雜,一直困擾著工程應(yīng)用。由于現(xiàn)有星載、機(jī)載通信終端受限于平臺(tái)的空間限制,通常不支持圖像壓縮功能,在特定的環(huán)境下,受傳輸時(shí)間、存儲(chǔ)空間和信道帶寬的影響,攜帶大量數(shù)據(jù)的圖像信息很難被快速的傳輸或存儲(chǔ),這成為圖像信息處理發(fā)展的主要瓶頸之一。
現(xiàn)有技術(shù)中通常使用數(shù)字信號(hào)處理器dsp,實(shí)現(xiàn)原始圖像數(shù)據(jù)的壓縮功能。圖像壓縮的核心算法通常運(yùn)算量密集,運(yùn)行這些算法通常需要采用功能強(qiáng)大的dsp,由于dsp芯片的其它通用功能相對(duì)較弱,一般需要有一個(gè)通用微處理器來實(shí)現(xiàn)一些諸如網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)裙δ埽抑T如圖像數(shù)據(jù)的采集、預(yù)處理功能還需要額外的可編程邏輯門陣列fpga實(shí)現(xiàn)。目前的衛(wèi)星遙感圖像壓縮系統(tǒng)硬件方案大多基于高性能可編程邏輯器件fpga。但這種方案整系統(tǒng)成本居高不下,且fpga存在單粒子翻轉(zhuǎn)效應(yīng)。為了降低硬件設(shè)計(jì)成本,現(xiàn)有技術(shù)還提出了一種使用一個(gè)fpga進(jìn)行管理和控制的fpga+dsp的硬件設(shè)計(jì)結(jié)構(gòu)。這種采用fpga+dsp的架構(gòu)的不足之處在于,pcb板的面積較大,不適合在體積受限的飛行器等載荷終端使用。
另外一種典型的實(shí)現(xiàn)方案是采用專用asic圖像壓縮芯片,專用asic圖像壓縮芯片一般是就某種特定的編碼協(xié)議推出相應(yīng)的終端asic芯片,所需軟件編程量小,壓縮速度快,缺點(diǎn)是專用asic芯片通常需要專用的程序存儲(chǔ)器,以存儲(chǔ)asic的固件文件,以及一個(gè)處理器去配置和管理,又引入了額外的pcb面積開稍。
為滿足飛行器等載荷終端的應(yīng)用需求,除了保持正常的通信功能外,必須進(jìn)行圖像壓縮功能的小型化設(shè)計(jì)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的任務(wù)是針對(duì)現(xiàn)有星載、機(jī)載飛行器通信終端不支持圖像壓縮功能的不足,提供一種支持多種圖像分辨率、圖像壓縮倍率可控、壓縮信噪比可調(diào),小型化、低功耗,壓縮效率高,易于硬件實(shí)現(xiàn)的飛行器載終端圖像壓縮方法。
本發(fā)明的上述目的可以通過以下措施來達(dá)到,一種飛行器載荷終端圖像壓縮方法,具有如下技術(shù)特征:以帶有圖像輸入接口lvds、串口、內(nèi)存ddr的可編程邏輯門陣列fpga芯片為核心,電連接雙片程序加載存儲(chǔ)器qspiflash、以太網(wǎng)接口芯片phy、模/數(shù)轉(zhuǎn)換器adc、數(shù)/模轉(zhuǎn)換器dac和圖像壓縮芯片adv212組成圖像壓縮系統(tǒng);fpga的加載程序以及adv212的固件文件共同存儲(chǔ)于一片flash存儲(chǔ)器中;然后采用fpga中內(nèi)嵌的arm內(nèi)核通過總線axi_emc對(duì)圖像壓縮芯片adv212進(jìn)行參數(shù)配置,通過可編程邏輯門陣列fpga運(yùn)用硬件描述語言vhdl對(duì)來源于圖像輸入接口lvds的圖像數(shù)據(jù)進(jìn)行重新排序、組幀、校驗(yàn)和分割,以完成圖像數(shù)據(jù)的采集、接收、壓縮預(yù)處理輸入,并將圖像數(shù)據(jù)存儲(chǔ)到大容量內(nèi)存ddr中,fpga邏輯部分將分割后的數(shù)據(jù)送給圖像壓縮芯片adv212進(jìn)行圖像數(shù)據(jù)交互,將壓縮后的數(shù)據(jù)輸出至可編程邏輯門陣列fpga,fpga邏輯單元模塊根據(jù)檢測到adv212處理完成的中斷后,再從lvds接口循環(huán)接收原始圖像信息并進(jìn)行壓縮處理。
本發(fā)明相比于現(xiàn)有技術(shù)具有如下有益效果:
支持多種圖像分辨率、圖像壓縮倍率可控。本發(fā)明利用可編程邏輯門陣列fpga芯片實(shí)現(xiàn)輸入圖像數(shù)據(jù)的采集、接收、預(yù)處理,利用vhdl語言實(shí)現(xiàn)圖像數(shù)據(jù)的重新排序、分割,并將分割后的數(shù)據(jù)送給圖像壓縮芯片adv212,解決了adv212最大只能支持4096*4096圖像分辨率的限制。adv212將數(shù)據(jù)壓縮后,輸出至可編程邏輯門陣列fpga,在fpga內(nèi)完成組幀、校驗(yàn)、加密后送射頻信道傳輸至其它節(jié)點(diǎn)。在可編程邏輯門陣列fpga內(nèi),采用內(nèi)嵌arm內(nèi)核對(duì)adv212進(jìn)行參數(shù)配置、利用vhdl語言,在fpga中邏輯部分實(shí)現(xiàn)與adv212的圖像數(shù)據(jù)交互,采用fpga實(shí)現(xiàn)圖像預(yù)處理,包含圖像的重新排序、模塊分割,分割成adv212能支持的分辨率。避免了現(xiàn)有技術(shù)圖像壓縮芯片adv212支持的圖像的分辨率有限的不足。
圖像壓縮倍率可控、壓縮信噪比可調(diào)。本發(fā)明可預(yù)先設(shè)定壓縮倍率,壓縮信噪比可調(diào),并將壓縮誤差控制在±5%以內(nèi),更適合在速率有限的無線射頻鏈路中傳輸??朔爽F(xiàn)有技術(shù)通過比較壓縮后數(shù)據(jù)量與原始圖像的數(shù)據(jù)大小的圖像壓縮方法,在得知壓縮倍率事后分析的缺陷。
小型化、低功耗。本發(fā)明將fpga的程序、adv212的固件文件存儲(chǔ)于一片flash存儲(chǔ)器中,避免了對(duì)adv212專用eeprom存儲(chǔ)器的需求,有利于設(shè)備的小型化。解決了現(xiàn)有技術(shù)fpga需要專用的程序加載flash存儲(chǔ)器,adv212也需要專用的eeprom存儲(chǔ)器存放固件文件問題。本發(fā)明利用fpga中內(nèi)嵌的arm核的外置ddr芯片專用內(nèi)存,作為圖像的大容量緩存,利用同一組ddr芯片,將fpga與專用壓縮芯片adv212相結(jié)合,實(shí)現(xiàn)了fpga中內(nèi)嵌的arm核的內(nèi)存和圖像的大容量緩存二種功能,無需專用的大容量圖像緩存,在圖像處理時(shí)避免了通常需要專用大容量乒乓緩存圖像的需求,有利于彈載設(shè)備的小型化。
附圖說明
圖1是本發(fā)明飛行器載荷終端圖像壓縮的電路原理框圖。
圖2是圖1的數(shù)據(jù)處理流程圖。
下面結(jié)合附圖和實(shí)施進(jìn)一步說明本發(fā)明。
具體實(shí)施方式
參閱圖1。可編程邏輯門陣列fpga為內(nèi)嵌兩個(gè)arm內(nèi)核的雙arm內(nèi)核fpga,adv212為圖像壓縮芯片又稱編解碼芯片,qspiflash為fpga的程序加載存儲(chǔ)器,lvds為圖像的輸入接口,4片ddr3為fpga中內(nèi)嵌arm核的專用內(nèi)存,phy88e1111為以太網(wǎng)接口芯片,adc9639為模-數(shù)轉(zhuǎn)換器,ad9779為數(shù)-模轉(zhuǎn)換器。
根據(jù)本發(fā)明。以帶有圖像輸入接口lvds、串口、內(nèi)存ddr的可編程邏輯門陣列fpga芯片為核心,電連接雙片程序加載存儲(chǔ)器qspiflash、以太網(wǎng)接口芯片phy、模/數(shù)轉(zhuǎn)換器adc、數(shù)/模轉(zhuǎn)換器dac和圖像壓縮芯片adv212組成圖像壓縮系統(tǒng);fpga的加載程序以及adv212的固件文件共同存儲(chǔ)于一片flash存儲(chǔ)器中;采用fpga中的內(nèi)嵌arm內(nèi)核通過axi_bus總線對(duì)adv212進(jìn)行參數(shù)配置,配置的參數(shù)包含adv212初始化寄存器、編碼參數(shù)、圖像壓縮倍率、壓縮信噪比等;可編程邏輯門陣列fpga運(yùn)用vhdl語言對(duì)來源于圖像輸入接口lvds接口的圖像數(shù)據(jù)進(jìn)行重新排序、組幀、校驗(yàn)和分割,以完成圖像數(shù)據(jù)的采集、接收、壓縮預(yù)處理輸入,并將圖像數(shù)據(jù)存儲(chǔ)到大容量內(nèi)存ddr中,fpga邏輯部分通過大容量緩存ddr實(shí)現(xiàn)圖像輸入接口lvds速率與圖像壓縮芯片adv212處理速率之間的匹配,fpga邏輯部分將分割后的數(shù)據(jù)送給圖像壓縮芯片adv212,實(shí)現(xiàn)與adv212的之間的圖像數(shù)據(jù)交互;adv212將數(shù)據(jù)壓縮后,輸出至可編程邏輯門陣列fpga,fpga邏輯部分檢測到adv212處理完成的中斷后,再從lvds接口循環(huán)接收原始圖像信息并進(jìn)行壓縮處理;圖像壓縮后的數(shù)據(jù)流,由雙arm內(nèi)核fpga與adc器件ad9639、dac器件ad9779共同作用,實(shí)現(xiàn)壓縮數(shù)據(jù)流的調(diào)制、解調(diào)功能,并與信道、天線配合實(shí)現(xiàn)基本的無線射頻通信功能,將數(shù)據(jù)通過無線射頻通信鏈路發(fā)送到其它飛行器或地面終端。
fpga內(nèi)嵌arm核通過axi_bus總線與作為arm處理器的一個(gè)axi_bus總線外設(shè)的圖像壓縮芯片adv212相連,arm通過axi_bus總線對(duì)adv212進(jìn)行配置,圖像壓縮芯片adv212配置的參數(shù)包含adv212初始化寄存器、編碼參數(shù)、圖像壓縮倍率額和壓縮信噪比。
總線axi_emc的參數(shù)為:工作時(shí)鐘50mhz,地址總線32位,數(shù)據(jù)總線32位,adv212對(duì)應(yīng)的外設(shè)地址空間為0x42000000-0x42ffffff。
圖像壓縮芯片adv212與可編程邏輯門陣列fpga共用一片地址空間為0xfc000000-0xfdffffff的程序加載存儲(chǔ)器qspiflash,fpga中的內(nèi)嵌arm處理器內(nèi)核對(duì)qspiflash進(jìn)行應(yīng)用層函數(shù)的讀寫訪問,以對(duì)adv212的固件信息進(jìn)行在線更新。
程序加載存儲(chǔ)器qspiflash地址空間0xfc000000-0xfdefffff用于存儲(chǔ)fpga的加載程序,地址空間0xfdf00000-0xfdffffff用于存儲(chǔ)adv212的固件信息。
fpga內(nèi)嵌arm處理器通過axi_bus總線對(duì)圖像壓縮芯片adv212的地址編移量為0x8的編碼參數(shù)設(shè)定壓縮倍率,并將壓縮誤差控制在±5%以內(nèi)fpga中的內(nèi)嵌arm處理器與fpga中的邏輯部分共用容量共為1024mb的大容量緩存ddr。
大容量緩存ddr作用有二個(gè),ddr的地址為0-511mb低地址空間作為fpga內(nèi)嵌arm處理器運(yùn)行操作系統(tǒng)的內(nèi)存;ddr的地址為512-1024mb高地址空間作為adv212圖像數(shù)據(jù)源的輸入緩存。
參閱圖2。lvds對(duì)應(yīng)圖1中的圖像輸入接口lvds,fifo包含先進(jìn)先出緩存器fifo1和fifo2;dual_portbram為包含dual_portbram1和dual_portbram2的雙口ram存儲(chǔ)器;dma是一種高速數(shù)據(jù)交互方式的控制器,dma控制器包含dma1和dma2,ddr3為fpga中內(nèi)嵌arm核的專用內(nèi)存;interrupt為包含interrupt1和interrupt2的中斷;adv212為專用圖像壓縮芯片;arm為fpga中的內(nèi)嵌arm核;axi_bus為arm的一種總線接口,外設(shè)axi_gpio0、axi_gpio1、axi_gpio2均掛接在axi_bus總線上。對(duì)應(yīng)圖1中的雙arm內(nèi)核fpga,除了adv212和ddr3外,其余均為可編程邏輯門陣列fpga內(nèi)的資源。
fpga中內(nèi)嵌的arm核通過axi_bus總線與圖像壓縮芯片adv212相連,并通過axi_bus總線對(duì)adv212進(jìn)行參數(shù)配置,配置完成后,通過axi_gpio0方式通知fpga邏輯部分,將adv212的控制權(quán)由內(nèi)嵌arm交由fpga邏輯部分。fpga邏輯部分利用vhdl語言實(shí)現(xiàn)對(duì)lvds接口圖像數(shù)據(jù)的采集接收,將數(shù)據(jù)緩存在先進(jìn)先出緩存器fifo1中,先進(jìn)先出緩存器fifo1的數(shù)據(jù)寫入位寬為16位,數(shù)據(jù)讀出位寬為32位。先進(jìn)先出緩存器fifo1的輸出接口與雙口ram存儲(chǔ)器dual_portbram1的端口a相連,將數(shù)據(jù)送至雙口ram存儲(chǔ)器dual_portbram1,同時(shí),根據(jù)先進(jìn)先出緩存器fifo1中的非空標(biāo)志,產(chǎn)生中斷interrupt1,通知fpga中的內(nèi)嵌arm核,配置控制器dma1,將數(shù)據(jù)從雙口ram存儲(chǔ)器dual_portbram1通過端口b搬移至arm內(nèi)核的專用內(nèi)存ddr3,dual_portbram1的端口a和b的數(shù)據(jù)位寬均為32位。arm內(nèi)核計(jì)算dma1的目的地址偏移量及搬移次數(shù),待dma1搬移完成一幀圖像數(shù)據(jù)后,產(chǎn)生中斷interrupt2,通知fpga中的內(nèi)嵌arm核配置dma控制器dma2,將數(shù)據(jù)從arm內(nèi)核的專用內(nèi)存ddr3通過端口a搬移至雙口ram存儲(chǔ)器dual_portbram2,在arm中計(jì)算dma2的源地址偏移量及搬移次數(shù),dual_portbram2的端口b經(jīng)過fifo2與adv212相連,將原始數(shù)據(jù)送至adv212進(jìn)行壓縮,adv212接收完一幀數(shù)據(jù)后,以axi_gpio1通知fpga邏輯部分,經(jīng)過特定延時(shí),輸出壓縮后數(shù)據(jù),并將壓縮數(shù)據(jù)傳輸給fpga邏輯部分,并以axi_gpio2通知fpga的邏輯部分壓縮完成,再從lvds接口循環(huán)接收原始圖像信息進(jìn)行壓縮處理等。
可編程邏輯門陣列fpga含有內(nèi)嵌的雙arm核,內(nèi)核配置adv212芯片編寫c語言應(yīng)用程序文件訪問fpga的qspiflash,讀取adv212的固件文件,并通過axi_emc總線訪問adv212芯片,寫入到adv212芯片的內(nèi)部配置空間,實(shí)現(xiàn)對(duì)adv212的配置,配置的參數(shù)包含adv212的工作模式、工作時(shí)鐘、倍頻關(guān)系、數(shù)據(jù)接口方式、圖像分辨率、壓縮倍率等,配置完成后,以axi_gpio0的高脈沖方式,通知并交出adv212的控制權(quán)給fpga的邏輯部分。
lvds接口的原始圖像數(shù)據(jù)接收。fpga的邏輯部分檢測到axi_gpio0的高脈沖后,開始接收lvds接口的原始圖像數(shù)據(jù),根據(jù)lvds接口協(xié)議編寫邏輯代碼,將數(shù)據(jù)送到先進(jìn)先出緩存器fifo1。
原始圖像數(shù)據(jù)導(dǎo)入內(nèi)存。在fpga的邏輯部分中,雙口ram存儲(chǔ)器dual_portbram1的端口a相連先進(jìn)先出緩存器fifo1的輸出接口,將數(shù)據(jù)送至dual_portbram1,同時(shí)根據(jù)先進(jìn)先出緩存器fifo1的非空標(biāo)志,產(chǎn)生中斷interrupt1,通知fpga中的內(nèi)嵌arm核,arm核配置dma控制器dma1,將數(shù)據(jù)從雙口ram存儲(chǔ)器dual_portbram1通過端口b搬移至arm內(nèi)核的專用內(nèi)存ddr3,dma1的目的地址偏移量及搬移次數(shù),由arm在interrupt1的中斷服務(wù)函數(shù)中計(jì)算。
fpga的邏輯部分產(chǎn)生一幀圖像滿中斷。arm內(nèi)核根據(jù)dma1的搬移次數(shù)和每次搬移的數(shù)據(jù)量,計(jì)算并產(chǎn)生ddr3接收一幀圖像的滿中斷標(biāo)志。舉例圖像分辨率為1024×1024,8位灰度圖像,dma1每次搬移32kb數(shù)據(jù),則產(chǎn)生一幀圖像滿中斷,共需dma1搬移32次。圖像滿中斷為interrupt2信號(hào)。
原始圖像數(shù)據(jù)導(dǎo)出內(nèi)存。fpga的內(nèi)嵌arm內(nèi)核響應(yīng)圖像滿中斷interrupt2,在interrupt2的中斷服務(wù)函數(shù)中,arm核配置dma控制器dma2,將數(shù)據(jù)從arm內(nèi)核的專用內(nèi)存ddr3a搬移至雙口ram存儲(chǔ)器dual_portbram2,在arm中計(jì)算dma2的源地址偏移量,并統(tǒng)計(jì)搬移次數(shù)。
fpga的邏輯部分將原始圖像數(shù)據(jù)送壓縮芯片adv212。在fpga的邏輯部分,雙口ram存儲(chǔ)器dual_portbram2的端口b通過先進(jìn)先出緩存器fifo2相連adv212,當(dāng)雙口ram存儲(chǔ)器dual_portbram2中存在有效數(shù)據(jù)時(shí),將數(shù)據(jù)送至adv212,每傳輸完一次數(shù)據(jù)后,通知arm,再進(jìn)行一次dma2的數(shù)據(jù)搬移,將原始圖像數(shù)據(jù)導(dǎo)出內(nèi)存,并送給adv212,搬移次數(shù)進(jìn)行加1操作,重復(fù)執(zhí)行此步驟,直至adv212已接收完一幀圖像,是否接收完一幀圖像可通過dma2的搬移次數(shù)和每次的搬移量計(jì)算。舉例,圖像分辨率為1024×1024,8位灰度圖像,dma2每次搬移32kb數(shù)據(jù),則adv212接收完一幀圖像,共需dma2搬移32次。
壓縮圖像數(shù)據(jù)輸出。adv212接收完fifo2的一幀圖像數(shù)據(jù)后,以axi_gpio1通知fpga邏輯部分,切換adv212數(shù)據(jù)接口的方向,并等待adv212的壓縮數(shù)據(jù)輸出,adv212的壓縮數(shù)據(jù)輸出以0xfff0或0xfff1開頭,以0xffd9結(jié)束。0xfff0或0xfff1開頭~0xffd9(包含0xffd9)之間的數(shù)據(jù)為圖像壓縮后的有效數(shù)據(jù)。
產(chǎn)生幀切換信號(hào),繼續(xù)壓縮下一幀圖像數(shù)據(jù)。在fpga的邏輯部分,判斷壓縮數(shù)據(jù)的開頭(0xfff0或0xfff1)、結(jié)尾(0xffd9),并通過axi_gpio2的高脈沖方式,通知fpga的邏輯部分此幀圖像壓縮完成,再從lvds接口接收原始圖像數(shù)據(jù)進(jìn)行壓縮處理等。循環(huán)執(zhí)行,則實(shí)現(xiàn)了圖像壓縮數(shù)據(jù)流的持續(xù)輸出。至此,小型化彈載終端圖像壓縮的實(shí)現(xiàn)方法完成。
以上所述,僅為本發(fā)明中的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可理解想到將整個(gè)小型化彈載終端圖像壓縮更換,調(diào)整,或增加、減少本發(fā)明中涉及到的部分功能單元,如將雙arm內(nèi)核fpga更換為內(nèi)嵌其它處理器(microblaze可powerpc)的fpga,將qpsiflash更換為其它類型的flash存儲(chǔ)器等,這些都應(yīng)涵蓋在本發(fā)明的包含范圍之內(nèi),因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。