楊德振,李凱峰,蔡佳一,喻松林,李萬崇
(1.華北光電技術(shù)研究所,北京 100015;2.北京真空電子技術(shù)研究所,北京 100015;3.貴州師范大學(xué),貴州 貴陽 071100)
當(dāng)前國際形勢下,為更好的保障信息安全和提升國家競爭力,擺脫核心芯片主要依靠進(jìn)口的困境,國產(chǎn)化芯片的設(shè)計與應(yīng)用推廣勢在必行,我國也將其提升到國家戰(zhàn)略層面。經(jīng)過數(shù)年來的大力發(fā)展,中國大陸在芯片設(shè)計領(lǐng)域的企業(yè)約占10 %的市場,主要集中在技術(shù)相對簡單的細(xì)分芯片,高端芯片與美國有一定的差距。集成電路行業(yè)尤其是通用芯片設(shè)計仍處于起步階段,市場需求及國產(chǎn)替代空間巨大,其中國產(chǎn)化紅外探測器因其靈敏度高,可全天時工作的特點,在紅外制導(dǎo)、航天偵查、邊海防預(yù)警和地面防空等國防關(guān)鍵領(lǐng)域有重要作用。紅外探測器中最關(guān)鍵的高端芯片即用于紅外輻射能量獲取轉(zhuǎn)換的紅外焦平面及其讀出電路和用于圖像信號處理和特定時序輸出的現(xiàn)場可編程門陣列(FPGA)。
一方面,受到材料缺陷、制造工藝、光電信號讀出放大電路以及線路噪聲等各因素的影響,國產(chǎn)探測器不可避免存在缺陷像元,它會導(dǎo)致輸出的紅外圖像出現(xiàn)固定死像元、過熱像元和閃元,嚴(yán)重影響探測器成像質(zhì)量,尤其在需要進(jìn)行弱小目標(biāo)檢測跟蹤的應(yīng)用中,極易導(dǎo)致目標(biāo)的漏檢或虛警,因此實現(xiàn)盲閃元的有效剔除至關(guān)重要[1]。另一方面,FPGA在編程靈活性、邏輯密度、硬件穩(wěn)定性、功耗和低延時性等方面具有明顯優(yōu)勢,即可與DSP、SOC等芯片相結(jié)合也可以獨立編程構(gòu)建系統(tǒng)平臺,已成為在移動通信、物聯(lián)網(wǎng)和圖像語音處理等領(lǐng)域最有潛力的芯片。進(jìn)口FPGA的應(yīng)用已經(jīng)十分成熟,主要產(chǎn)家Xilinx、Altera和Lattice均來自美國,共占據(jù)市場95 %以上份額,且標(biāo)準(zhǔn)化產(chǎn)品各成系列。反觀國產(chǎn)FPGA僅有復(fù)旦微電子、紫光同創(chuàng)等廠商涉足高速FPGA,受制造能力、穩(wěn)定性和IP資源等影響,下游廠家國產(chǎn)化替代主觀意愿不強(qiáng)。網(wǎng)上對國產(chǎn)FPGA的應(yīng)用和批量成品的文章較少,大部分集中在軍品和受限產(chǎn)品。于東英[2]等人采用紫光同創(chuàng)的FPGA,在廠家自研IP核的基礎(chǔ)上實現(xiàn)了SRIO接口的數(shù)據(jù)通信;另外,于東英[2]等人還基于國產(chǎn)平臺進(jìn)行了千兆以太網(wǎng)的接口設(shè)計與多網(wǎng)口數(shù)據(jù)交互;魏志瑾[3]在國產(chǎn)K7系列FPGA上完成了Aurora高速總線的驅(qū)動設(shè)計和驗證,點對點的通信速率達(dá)到3.125 Gbps?;趪a(chǎn)FPGA的應(yīng)用設(shè)計有了初步探索,但局限于專業(yè)高速接口邏輯驗證,至今暫無將圖像處理算法進(jìn)行移植的文獻(xiàn)公開發(fā)表。
綜上所述,國產(chǎn)FPGA的算法硬件移植和應(yīng)用與我國國防建設(shè)有著密切關(guān)系,對其進(jìn)行深入研究和梳理的需求十分迫切,但是對該領(lǐng)域的具體研究還不成熟,為此筆者嘗試采用全國產(chǎn)化芯片構(gòu)建紅外成像系統(tǒng)并進(jìn)行紅外圖像信號處理的算法實現(xiàn),實驗包括紅外圖像處理常用的非均勻性校正、盲閃元抑制、自適應(yīng)圖像增強(qiáng)等算法的移植。筆者以盲閃元抑制算法移植為例,期望以此說明和論證在國產(chǎn)FPGA上進(jìn)行圖像處理算法移植的可行性。
缺陷元的成因復(fù)雜多樣,現(xiàn)有的工藝水平和材料制備很難根除。無效像元分為死像元、過熱像元和閃爍像元,其中死像元為像元響應(yīng)率小于平均響應(yīng)率的1/2的像元,過熱像元為噪聲電壓大于平均噪聲電壓2倍的像元[4],除此之外一些像元時而正常時而無效成為閃爍像元。無效像元增加了圖像無效信息熵,降低了目標(biāo)檢測識別的準(zhǔn)確性,圖1分別在空域和時域?qū)⑸鲜鰺o效的像元與弱小目標(biāo)的灰度分布進(jìn)行對比。
圖1 無效元與弱小目標(biāo)的分布特性
通過無效像元成像效果的展示可以分析,死像元與過熱像元灰度值都有少量變化,閃元存在劇烈的灰度變化,與遠(yuǎn)程弱小目標(biāo)的空間分布特性相似,傳統(tǒng)盲閃元檢測包括空間濾波、形態(tài)學(xué)與機(jī)器學(xué)習(xí)等算法,很難將無效像元與目標(biāo)進(jìn)行分類[5]。本文硬件移植采用時空多維濾波抑制算法,包括空域極值濾波、時域特征統(tǒng)計和基于中值濾波的盲閃元填充,算法流程見圖2。通過使用循環(huán)滑動窗口檢測窗口內(nèi)的像素異常極值點,進(jìn)一步對其在時域內(nèi)出現(xiàn)異常次數(shù)進(jìn)行統(tǒng)計,在滿足動態(tài)閾值下確立盲閃元信息并完成填充,達(dá)到最后的抑制效果。
圖2 算法流程圖
目前,基于場景的盲元檢測算法主要分為兩類:一類是通過分析像素與周圍像素點的關(guān)聯(lián)性定位盲元的位置;另一類是直接查找灰度值差距較大的探測元并定位??紤]到實際場景和實時性采用第二類方法實現(xiàn)盲閃元檢測,空域局部極值檢測算法實現(xiàn)流程如下:
首先使用4個3×3滑動窗口H1、H2、H3、H4掃描圖像,利用紅外圖像灰度特征,尋找窗口內(nèi)中間像素點灰度值均異于其余灰度值的像素點,圖3為滑動窗口模板,記當(dāng)前幀運算結(jié)果為N(i,j),歷史運算結(jié)果即為O(i,j)。
圖3 滑動窗口模板
接著采用如下公式,如果當(dāng)前幀運算結(jié)果N(i,j)為1,則對變量repeat(i,j)加1,否則該值保持不變。
(1)
對前后幀出現(xiàn)異常的點進(jìn)行標(biāo)志,計算方式見公式(2),式中flag(i,j)為相鄰兩幀盲元判定的運算結(jié)果,O(i,j)為歷史幀結(jié)果,如果判定結(jié)果為1,則變量count(i,j)加1,否則為0。
flag(i,j)=N(i,j)|O(i,j)
(2)
(3)
利用公式4對該像素點是否為盲閃元進(jìn)行最終判定,如果能夠滿足以下公式判定要求則確認(rèn)其為盲元點M(i,j),否則判定正常像素單元,Cth為開始進(jìn)行統(tǒng)計幀數(shù)。
M(i,j)=(count(i,j)>Cth)∩(2repeat(i,j)>count(i,j))
(4)
當(dāng)紅外光電探測系統(tǒng)對紅外圖像進(jìn)行背景校正或者調(diào)整積分時間,有可能會消除原來的盲閃元,同時在新的位置產(chǎn)生新的無效像元,此時需要引入一個動態(tài)更新機(jī)制,當(dāng)滿足一定的統(tǒng)計幀數(shù)時,對變量M(i,j),repeat(i,j),count(i,j),flag(i,j)判定結(jié)果進(jìn)行清除,更新盲元位置。至此,完成紅外圖像中盲閃元位置的檢測和動態(tài)更新。
使用鄰域替法代對盲元進(jìn)行補(bǔ)償,該方法利用窗格內(nèi)空間相關(guān)性消除盲元灰度值異常的特征,從而實現(xiàn)對盲元的填充功能。鄰域替代法,對于獨立的單點盲元具有良好的填充效果,使用中值濾波的方法求取模板鄰域內(nèi)像素的中間灰度值替代檢測的盲閃元信息,使用模板在圖像中遍歷,從而實現(xiàn)對整幅圖像中盲元信息的填充功能。若P(i,j)檢測為盲閃元,求取鄰域內(nèi)像素灰度值的中值T(i,j)對該像素點進(jìn)行替換,反之則為原像素值,實現(xiàn)全圖的盲閃元填充補(bǔ)償。T(i,j)為P(i,j)的3×3鄰域像素進(jìn)行中值濾波結(jié)果,計算方法如下:
P(i-1,j+1),P(i,j-1),P(i,j),P(i,j+1),
P(i+1,j-1),P(i+1,j),P(i+1,j+1)]
(5)
為達(dá)到驗證國產(chǎn)化FPGA算法移植能力的目的,構(gòu)建全國產(chǎn)化紅外成像系統(tǒng),具體硬件框架如圖4所示。
圖4 全國產(chǎn)化紅外成像系統(tǒng)
紅外探測器選用中國電科11所研制的碲鎘汞長波制冷型320×256面陣探測器,圖像處理電路的處理核心器件為復(fù)旦微電子的FM7系列現(xiàn)場可編程門陣列,型號為JFM7VX690T36,主要實現(xiàn)驅(qū)動國產(chǎn)紅外探測器的時序邏輯、圖像采集、圖像緩存等快速數(shù)據(jù)通信和非均勻性校正、盲閃元抑制、自適應(yīng)圖像增強(qiáng)、目標(biāo)檢測[6]等圖像處理算法。數(shù)據(jù)緩存模塊采用紫光的動態(tài)隨機(jī)存取內(nèi)存DDR3,型號為SCB13H8G162BF,通過CameraLink接口將經(jīng)過圖像處理算法的圖像發(fā)送至顯示屏顯示。上述功能均在Xilinx的FPGA實現(xiàn)過。先將其在復(fù)旦微電子的國產(chǎn)FPGA進(jìn)行移植,JFM7VX690T36對標(biāo)Xilinx公司的V7系列高性能FPGA,包含Block RAM、DSP48、MMCM、GTH等可編程模塊,具備可用于實現(xiàn)數(shù)字邏輯和分布式RAM的CLB模塊,同時提供了豐富的專用時鐘與布線資源,能滿足分布式存儲,高速數(shù)據(jù)讀取,多層并行卷積等特定算法應(yīng)用。圖5為基于國產(chǎn)FPGA的圖像處理硬件電路實物圖。
圖5 國產(chǎn)化FPGA的圖像處理電路
采用現(xiàn)場可編程門陣列(FPGA)進(jìn)行基于時空多維濾波的缺陷元檢測算法的程序?qū)崿F(xiàn),主要包括空域局部極值檢測、時域統(tǒng)計閾值比較、多尺度中值濾波的邏輯運算;空域極值檢測需要采用循環(huán)卷積,要求多個邏輯并行執(zhí)行,同時需保證時序?qū)R和流水線操作;時域統(tǒng)計首先要求對大量歷史統(tǒng)計信息進(jìn)行數(shù)據(jù)存取,要求FPGA對多個時域在線動態(tài)統(tǒng)計數(shù)據(jù)進(jìn)行緩存,并在同一時鐘下完成數(shù)據(jù)讀取與當(dāng)前幀圖像盲元預(yù)提取的結(jié)果進(jìn)行比較和運算,時序同步要求極高。硬件移植時分別采用兩種方式進(jìn)行緩存,即片上資源雙口Block Rams和片外存儲器DDR3。
采用FPGA的片上雙口Rams可同時使用兩個端口數(shù)據(jù)線和地址線的讀寫操作,Ram的讀取時序延時固定,算法邏輯實現(xiàn)簡易,但會占用較多片上資源,同時易造成信號扇出過大,其工作流程如圖6(a);若出現(xiàn)其他算法占用過多片上BRAM資源,則采用DDR3對數(shù)據(jù)進(jìn)行存儲的方式更優(yōu),DDR3同一時刻只能數(shù)據(jù)讀或者寫操作,讀取延時也不固定,需要采用FIFO作多級緩存達(dá)到時序匹配效果,且需要嚴(yán)格控制時序,使其穩(wěn)定進(jìn)行流水讀寫,算法實現(xiàn)邏輯相對復(fù)雜,具體算法移植流程如圖6(b)。
(a)RAM
圖6給出實際硬件實現(xiàn)流程,首先局部極值算法采用循環(huán)移位卷積的形式實現(xiàn),時域動態(tài)統(tǒng)計需要的歷史幀信息采用存儲器進(jìn)行存儲,保證場消隱區(qū)完成當(dāng)幀數(shù)據(jù)寫入和下幀數(shù)據(jù)讀出。時域動態(tài)統(tǒng)計結(jié)果控制缺陷像素邏輯開關(guān)選擇該像素是否進(jìn)行中值濾波輸出校正圖像,兩種實現(xiàn)方式的差異在于存儲器的讀寫不同。利用片上資源Block Rams,其中2端口負(fù)責(zé)上一幀運算結(jié)果數(shù)據(jù)輸出,然后與當(dāng)前幀判定結(jié)果完成相關(guān)邏輯運算,通過1端口將結(jié)果重新寫入雙口RAM,實現(xiàn)結(jié)果更新。因圖像分辨率為320×256,設(shè)定端口地址范圍為1~81920,可實現(xiàn)整幅圖像每個像素位置結(jié)果統(tǒng)計與運算;利用片外存儲器DDR3,作為輸入輸出緩存的FIFO和DDR需要進(jìn)行空間同步與空滿信號監(jiān)聽通信,并檢測DDR3初始化完成標(biāo)志,只有在該信號拉高后才可以對DDR3進(jìn)行數(shù)據(jù)讀寫操作。為保證多個統(tǒng)計變量對齊同步,將其拼接成64 bit數(shù)據(jù)位寬的矩陣寫進(jìn)FIFO和DDR,拼接公式如下:
DATA[63:0]={M,repeat[30:0],flag,count[30:0]}
(6)
如圖7所示,選取硬件實現(xiàn)運算結(jié)果中圖像第10行中第7、9、11、20、24、25、26、27、36、38、41、42共12個像素位置對兩種方法實現(xiàn)結(jié)果進(jìn)行對比。其中圖7(a)為雙口RAM的實現(xiàn)結(jié)果,圖7(b)為DDR3的實現(xiàn)結(jié)果。兩種方法在上述圖像中位置M值均為1,說明硬件移植與算法仿真保持一致,能準(zhǔn)確判定盲閃元像素位置。
(a)基于RAM
紅外探測器的工作幀頻在300 f/s,對實時性要求較高,基于FPGA的硬件實現(xiàn)將時鐘倍頻到100 MHz運行,FPGA設(shè)計中關(guān)注的主要是信號延時,所描述的算法耗時通常根據(jù)信號流水延時進(jìn)行計算。從圖7(a)可以看出方法1的逐行匹配流水線操作占用322個時鐘,算法邏輯占用4個時鐘,并行同步占用3個時鐘,單幀圖像輸入到輸出運行共計329個時鐘,耗時3.29 μs;同理由圖7(b)可得出方法2總耗時為3.8 μs。
為驗證算法移植效果,調(diào)整積分時間分別為0.3 ms、0.5 ms、0.8 ms和1.1 ms。采集了多組場景數(shù)據(jù),包括純空背景,海天背景,下視對地背景和多云背景四個典型場景[7],序列圖像數(shù)據(jù)展示如圖8(a)。經(jīng)CameraLink接口連接到顯示器觀察能準(zhǔn)確復(fù)現(xiàn)算法效果,采用盲閃元抑制算法在不同復(fù)雜度場景下,對顯示的算法移植結(jié)果的目標(biāo)鄰域進(jìn)行提取和三維圖顯示,從圖8(b)、8(c)可看出紅外圖像盲閃元抑制的性能提升明顯,經(jīng)統(tǒng)計盲閃元率從5 ‰降為0.73 ‰,滿足盲閃元實時校正要求。因紅外成像系統(tǒng)需求,進(jìn)行了DDE圖像增強(qiáng)和伽馬拉伸等算法的移植工作,圖9將顯示器輸出圖像進(jìn)行展示,圖像中景物的邊緣細(xì)節(jié)得到增強(qiáng),并保留了興趣區(qū)域特征。
(a)場景示意
圖9 國產(chǎn)FPGA硬件移植效果
本研究涉及的算法曾在進(jìn)口FPGA上完成硬件驗證,與Matlab的仿真結(jié)果保持一致,但是在復(fù)旦微電子FPGA的移植過程中,發(fā)現(xiàn)與進(jìn)口芯片存在一些問題和差異,具體如下:
編譯上的差異。復(fù)旦微的FPGA雖然可直接使用VIVADO進(jìn)行編譯和燒寫,但須結(jié)合具備復(fù)旦微電子自主知識產(chǎn)權(quán)的PROCISE軟件,執(zhí)行打補(bǔ)丁操作才能實現(xiàn)正常燒寫。
IP核使用上的差異。例如RAM進(jìn)行讀寫操作時,國產(chǎn)FPFA的BRAM IP核在VIVADO中采用SDP模式下無法正常工作。需要在調(diào)IP核時將SDP模式改成TDP模式,并配置雙端口RAM讀寫邏輯為A端口只讀B端口只寫。
對時序的要求更加嚴(yán)格。本研究主要從走線長度,跨時鐘域,扇出能力的差異等幾個方面進(jìn)行論述。
國產(chǎn)FPGA對時序的容忍度較低,相比進(jìn)口FPGA,相同的算法邏輯與走線長度,國產(chǎn)芯片容易出現(xiàn)邏輯混亂的現(xiàn)象,凸顯了國產(chǎn)化FPGA門電路延時較大、建立時間冗余量不夠、高速數(shù)據(jù)傳輸穩(wěn)定性差等問題。由于上述差異,需對國產(chǎn)電路進(jìn)行時序優(yōu)化。
圖10為算法邏輯優(yōu)化前后的電路走線對比。圖中高亮部分為RAM讀寫邏輯的展示,時序優(yōu)化后將總走線Total Violation從-1938 ns縮短為-3 ns,國產(chǎn)器件實現(xiàn)了正確且穩(wěn)定的數(shù)據(jù)讀寫。
(a)
原有進(jìn)口FPGA的移植存在srio邏輯39 MHz到100 MHz圖像時序恢復(fù)、以及圖像時鐘到160 MHz的算法邏輯的跨時鐘域,但在國產(chǎn)FPGA下100 MHz至160 MHz的跨時鐘域信號出現(xiàn)邏輯錯誤,發(fā)生信號完整性問題。解決方案為:在滿足實時性前提下,減少不必要的跨時鐘域操作,使算法邏輯在同一時鐘下工作;針對必須進(jìn)行跨時鐘域,通過多級FIFO進(jìn)行緩解。
在扇出能力方面,國產(chǎn)FPGA也同樣出現(xiàn)了與進(jìn)口芯片的差異,在對拼接成64 bit的緩存數(shù)據(jù)進(jìn)行分解時,因扇出過大導(dǎo)致其驅(qū)動后續(xù)變量誤碼率較高。故對其進(jìn)行寄存器邏輯復(fù)制增強(qiáng)信號驅(qū)動能力,有效的解決了這一問題。此外,由于國產(chǎn)FPGA的生產(chǎn)加工與工藝的缺陷,偶爾出現(xiàn)同一系列不同批次產(chǎn)品的性能差異,需要更加嚴(yán)格的時序和邏輯約束,提高代碼自身質(zhì)量。
在大力倡導(dǎo)推廣國產(chǎn)芯片設(shè)計與應(yīng)用的環(huán)境下,筆者以國產(chǎn)FPGA與國產(chǎn)紅外焦平面探測器為核心器件,實現(xiàn)了全國產(chǎn)化紅外探測成像系統(tǒng)的設(shè)計,以盲閃元校正算法為例進(jìn)行了高速數(shù)據(jù)采集,圖像算法處理等實驗嘗試。選用的圖像處理算法中包括了循環(huán)移位卷積,頻域變換,并行存儲,復(fù)雜邏輯迭代等FPGA主流操作,并對國產(chǎn)FPGA的算法移植進(jìn)行分析討論,由實驗結(jié)果可知,國產(chǎn)FPGA對時序穩(wěn)定性的要求和IP核兼容性還有些許差異,但通過邏輯和時序優(yōu)化,能完整實現(xiàn)進(jìn)口成熟FPGA同樣的功能和性能,移植的算法能滿足幀頻在300 f/s、分辨率為320×256的紅外圖像實時運算,將紅外成像系統(tǒng)的盲閃元率從5 ‰降為0.73 ‰,達(dá)到預(yù)期效果。總而言之,本文論證了在我國自研的FPGA上實現(xiàn)高速數(shù)據(jù)傳輸接口和圖像處理算法移植的可行性,為將要進(jìn)行國產(chǎn)化硬件架構(gòu)替代的同行提供了借鑒。