CCD是一種廣泛應(yīng)用于成像系統(tǒng)中的光學(xué)傳感器,TDI-CCD利用延時(shí)積分的方法,通過對(duì)同一物體多次曝光,實(shí)現(xiàn)增強(qiáng)型光能采集的目的。同時(shí),根據(jù)像移補(bǔ)償?shù)乃俣龋O(shè)計(jì)TDI-CCD的電荷轉(zhuǎn)移速率,能夠?qū)崿F(xiàn)電子學(xué)像移補(bǔ)償。本文闡述的成像系統(tǒng)以TDI-CCD為核心,利用FPGA實(shí)現(xiàn)CCD圖像數(shù)據(jù)整合功能的硬件系統(tǒng)。由于FPGA在資源、速度、效率、穩(wěn)定性等方面有很多優(yōu)勢(shì),因此,采用FPGA實(shí)現(xiàn)高速、大規(guī)模、繼承性好的成像軟件,通過在軟件結(jié)構(gòu)、模塊和設(shè)計(jì)方法上的優(yōu)化,尋求更加合理設(shè)計(jì)方案,達(dá)到功能和性能的提升。本文將FPGA設(shè)計(jì)的一些指導(dǎo)性原則應(yīng)用于實(shí)際的系統(tǒng)設(shè)計(jì)中,給出了FPGA自頂向下的軟件結(jié)構(gòu)劃分,以及程序設(shè)計(jì)中的注意事項(xiàng)。通過對(duì)模塊接口信號(hào)的解耦處理,增強(qiáng)了系統(tǒng)的適應(yīng)性和穩(wěn)定性,該軟件系統(tǒng)在實(shí)際工程中已進(jìn)行驗(yàn)證。
1 成像系統(tǒng)結(jié)構(gòu)
成像系統(tǒng)以TDI-CCD為核心,采用FPGA作為核心數(shù)據(jù)處理單元,實(shí)現(xiàn)數(shù)據(jù)處理傳輸,其基本組成部分如圖1所示。
時(shí)序驅(qū)動(dòng)單元采用FPGA產(chǎn)生驅(qū)動(dòng)時(shí)序,通過硬件電路實(shí)現(xiàn)對(duì)CCD控制信號(hào)驅(qū)動(dòng);焦平面單元將CCD視頻信號(hào)經(jīng)過預(yù)放、濾波、相關(guān)雙采樣(CDS)、A/D轉(zhuǎn)換后輸入到圖像處理單元;圖像處理單元接收控制器指令,完成總體對(duì)成像系統(tǒng)的控制,以及圖像數(shù)據(jù)的整合傳輸?shù)裙δ埽?/p>
2 成像軟件設(shè)計(jì)
成像系統(tǒng)軟件采用FPGA實(shí)現(xiàn)。軟件核心是圖像處理單元。該單元接收CCD行同步信號(hào)以及指令,完成數(shù)據(jù)處理功能;
成像系統(tǒng)FPGA的主要功能如表1所示。成像系統(tǒng)在物理上分為3個(gè)電箱。圖像處理電箱獨(dú)立存在,并接收焦平面電箱的視頻信號(hào)和控制電箱工作指令,實(shí)現(xiàn)數(shù)據(jù)處理。根據(jù)系統(tǒng)邏輯功能劃分FPGA軟件結(jié)構(gòu),并將軟件設(shè)計(jì)規(guī)范應(yīng)用其中,優(yōu)化系統(tǒng)性能。圖像處理單元工作頻率高,數(shù)據(jù)處理復(fù)雜,不同的結(jié)構(gòu)劃分和設(shè)計(jì)方式對(duì)性能影響較大,因此,本文對(duì)圖像處理軟件設(shè)計(jì)進(jìn)行詳細(xì)闡述。
2.1 FPGA軟件設(shè)計(jì)分析
可編程邏輯設(shè)計(jì)原則的合理應(yīng)用,為理解FPGA程序設(shè)計(jì),實(shí)現(xiàn)高效、穩(wěn)定的數(shù)字系統(tǒng)提供了條件。
(1)資源與速率的平衡。資源和速率是FPGA設(shè)計(jì)的重要指標(biāo)。通過合理的軟件結(jié)構(gòu)劃分,在高速數(shù)據(jù)處理區(qū)域采用速度優(yōu)先方法,即通過模塊復(fù)用、串/并轉(zhuǎn)換、數(shù)據(jù)流水化等方法實(shí)現(xiàn)高速數(shù)據(jù)傳輸;在低速處理區(qū)域,采用串行方式和組合邏輯,通過增加扇出實(shí)現(xiàn)資源的最優(yōu)化。
(2)系統(tǒng)與硬件匹配。FPGA內(nèi)部硬件資源決定設(shè)計(jì)的結(jié)構(gòu)和方法。采用BLOCK RAM或Distributed RAM,根據(jù)數(shù)據(jù)處理內(nèi)容、資源利用率要求決定使用方式;另外,利用全局信號(hào)線,實(shí)現(xiàn)全局變量處理;利用FPGA內(nèi)部IP和原語實(shí)現(xiàn)程序設(shè)計(jì),改善程序架構(gòu)。
(3)同步設(shè)計(jì)。同步設(shè)計(jì)是資源與速度的體現(xiàn),在異步時(shí)鐘域數(shù)據(jù)處理時(shí),采用FIFO轉(zhuǎn)存,解決同頻異相或異頻問題,實(shí)現(xiàn)數(shù)據(jù)讀取和傳輸。
(4)可靠性設(shè)計(jì)。軟件設(shè)計(jì)采用冗余和容錯(cuò)性設(shè)計(jì)、簡(jiǎn)化設(shè)計(jì)規(guī)模和減少軟件配置項(xiàng);
2.2 圖像數(shù)據(jù)處理與分析
2.2.1 數(shù)據(jù)率和時(shí)鐘選擇
CCD圖像輸出數(shù)據(jù)率計(jì)算如下:
式中:F為輸出數(shù)據(jù)率;Fpixel為CCD像元轉(zhuǎn)移速率;A為量化等級(jí);Npixel為像元數(shù);Na為啞像元數(shù);TL為行周期。根據(jù)指標(biāo)計(jì)算,成像系統(tǒng)的數(shù)據(jù)率達(dá)到1 Gb/s以上,因此,數(shù)據(jù)傳輸采用10 b數(shù)據(jù)并行方式,滿足軟硬件設(shè)計(jì)預(yù)定的指標(biāo)要求。
2.2.2 時(shí)鐘域分析
CCD圖像處理單元,主時(shí)鐘采用120 MHz有源晶振(elk_sys),通過FPGA內(nèi)部全局時(shí)鐘網(wǎng)絡(luò)(BUFG)實(shí)現(xiàn)全局走線;設(shè)計(jì)時(shí)不建議使用DCM。系統(tǒng)的主要時(shí)鐘如表2所示。
系統(tǒng)接收外部行同步時(shí)鐘,通過高頻主時(shí)鐘同步,并在FPGA內(nèi)產(chǎn)生內(nèi)部行頻,用于產(chǎn)生CDS信號(hào)及控制邏輯。通過分頻產(chǎn)生串行時(shí)鐘,完成遙控遙測(cè)信號(hào)的收發(fā);產(chǎn)生數(shù)據(jù)時(shí)鐘,完成數(shù)據(jù)采樣和傳輸;
2.2.3 成像系統(tǒng)軟件結(jié)構(gòu)及功能實(shí)現(xiàn)
根據(jù)軟件系統(tǒng)功能,自頂向下劃分模塊,如圖2所示。為了保證模塊間信號(hào)的獨(dú)立性,增強(qiáng)了模塊解耦處理,具體的處理原則是:減少模塊IO數(shù)量,減少邏輯關(guān)聯(lián)程度,避免信號(hào)控制環(huán)路產(chǎn)生;存儲(chǔ)器與后續(xù)數(shù)據(jù)處理操作整合;模塊間避免數(shù)據(jù)傳輸,減少異步時(shí)鐘域的數(shù)據(jù)同步問題;采用脈沖電平邏輯實(shí)現(xiàn)模塊控制等。由于合理劃分了軟件模塊,方便了模塊化設(shè)計(jì)和仿真驗(yàn)證,為后續(xù)的工作奠定了堅(jiān)實(shí)的基礎(chǔ)。圖2中三級(jí)模塊沒有具體給出。
(1)數(shù)據(jù)解析模塊。通過RS 422解析串行指令,同時(shí)完成部分硬指令翻譯,并根據(jù)指令要求發(fā)送系統(tǒng)遙測(cè)參數(shù)。串行接收數(shù)據(jù)采用累加校驗(yàn),并對(duì)接收數(shù)據(jù)進(jìn)行預(yù)存儲(chǔ)。校驗(yàn)正確后,將數(shù)據(jù)以乒乓方式存入RAM,以保證讀/寫邏輯不沖突;校驗(yàn)錯(cuò)誤時(shí),不轉(zhuǎn)存數(shù)據(jù)。根據(jù)不同的指令類型,對(duì)相應(yīng)的地址進(jìn)行讀/寫操作,更新完畢后給出標(biāo)志位。
(2)視頻控制模塊。輸出A/D參數(shù)、CDS信號(hào)和A/D輸出時(shí)鐘。A/D參數(shù)采用廣播方式,通過使能信號(hào)完成20路AD的配置;由外行信號(hào)htck同步A/D的控制邏輯以及CDS信號(hào);由于數(shù)據(jù)處理速度較低,實(shí)現(xiàn)時(shí),通過增加扇出、減少模塊復(fù)用,來降低資源利用率。CDS采樣脈沖的位置對(duì)信號(hào)質(zhì)量影響很大,需要精細(xì)調(diào)節(jié)。在設(shè)計(jì)時(shí),采用FPGA內(nèi)部移位寄存器生成不同位置的采樣脈沖,在調(diào)試中實(shí)現(xiàn)精確對(duì)準(zhǔn)。
(3)數(shù)據(jù)整合模塊。將輸入的20路圖像數(shù)據(jù)整合一路輸出。根據(jù)工作指令選擇灰度圖像或?qū)崟r(shí)圖像,并行存儲(chǔ)到相應(yīng)的fifo中;輸出時(shí),通過控制讀使能信號(hào),實(shí)現(xiàn)數(shù)據(jù)的循環(huán)讀取。設(shè)計(jì)FIFO時(shí),仍然采用乒乓方式,通過標(biāo)志信號(hào)使讀寫邏輯分離。相比RAM設(shè)計(jì)而言,避免了大規(guī)模地址線造成的亞穩(wěn)態(tài)問題,設(shè)計(jì)時(shí)序相對(duì)簡(jiǎn)單。
(4)數(shù)據(jù)輸出模塊。根據(jù)衛(wèi)星指令將圖像數(shù)據(jù)按照規(guī)定格式輸出。設(shè)計(jì)時(shí),需要注意數(shù)傳協(xié)議中各數(shù)據(jù)段數(shù)據(jù)的輸出時(shí)序。因此,良好的模塊規(guī)劃,更有利于程序的實(shí)現(xiàn)和驗(yàn)證。
2.3 性能與設(shè)計(jì)要點(diǎn)
(1)FPGA內(nèi)部時(shí)鐘域分析有利于同步設(shè)計(jì)的實(shí)現(xiàn),在良好的時(shí)鐘分配下,能夠提高系統(tǒng)運(yùn)行頻率,增加軟件可靠性。根據(jù)FPGA資源說明,每個(gè)slice有固定數(shù)量的觸發(fā)器和查找表(LUT)資源,合理利用可以降低器件資源的利用率。
(2)組合邏輯容易產(chǎn)生亞穩(wěn)態(tài),為系統(tǒng)帶來不確定因素,同時(shí),組合邏輯延時(shí)也限制了系統(tǒng)的運(yùn)行頻率。在頻率要求較高的模塊內(nèi)部,可以采用流水線技術(shù)降低組合邏輯規(guī)模。
(3)軟件結(jié)構(gòu)對(duì)系統(tǒng)性能和資源使用有很大的影響;不合理的結(jié)構(gòu)劃分不僅浪費(fèi)資源,也不利于軟件的升級(jí)和維護(hù)。該軟件通過合理的結(jié)構(gòu)和接口信號(hào)劃分,力求達(dá)到模塊解耦的目的。通過詳細(xì)的接口時(shí)序說明,可以更好的進(jìn)行軟件維護(hù)和更新,為后續(xù)開發(fā)奠定基礎(chǔ)。
2.4 關(guān)于軟件系統(tǒng)工作頻率和硬件速度的匹配
電路設(shè)計(jì)時(shí),通過分析硬件電路的芯片參數(shù)和電路延時(shí)指導(dǎo)軟件設(shè)計(jì)。對(duì)于關(guān)鍵信號(hào)走線,除了可以在硬件上設(shè)置延時(shí)線外,F(xiàn)PGA內(nèi)部可以通過DLL倍頻時(shí)鐘,通過時(shí)鐘計(jì)數(shù)方式實(shí)現(xiàn)延時(shí),或者通過FPGA內(nèi)部LUT和門邏輯實(shí)現(xiàn)組合邏輯延時(shí)設(shè)計(jì)。由于FPGA的端口速率有限,不同等級(jí)的FPGA芯片的處理速度也不同,因此,需要參考FPGA的參數(shù)特性設(shè)計(jì)系統(tǒng)結(jié)構(gòu),并確定端口數(shù)傳規(guī)則和內(nèi)部結(jié)構(gòu),同時(shí),注意與外圍
硬件的匹配,以保證軟硬件可靠運(yùn)行。
3 實(shí)時(shí)圖像效果評(píng)估
圖3給出了實(shí)驗(yàn)室條件下的原始數(shù)據(jù)圖像。通過調(diào)整信號(hào)處理器的增益,調(diào)整相應(yīng)抽頭的灰度值,從而達(dá)到灰度均衡效果;通過觀察相應(yīng)的圖像數(shù)據(jù)可以得出,數(shù)據(jù)處理和成像效果達(dá)到預(yù)定指標(biāo)要求。
4 結(jié)語
FPGA成像軟件是系統(tǒng)可靠運(yùn)行的重要保障,其性能對(duì)整體分辨率的提高有著舉足輕重的作用。在給定的硬件條件下,通過高效設(shè)計(jì)FPGA軟件,能夠顯著提高系統(tǒng)性能。在成像軟件的數(shù)據(jù)處理方法上,仍然有很多方向,如實(shí)時(shí)圖像壓縮傳感,提高系統(tǒng)的傳輸能力;在FPGA內(nèi)部進(jìn)行海量數(shù)據(jù)處理等。通過實(shí)驗(yàn)證明,該軟件的實(shí)際運(yùn)行速度達(dá)到要求。因?yàn)橛布幚硭俣鹊南拗疲粝胩岣哕浖\(yùn)行頻率,尋求更加合理的軟件系統(tǒng)結(jié)構(gòu)以及電子學(xué)分系統(tǒng)結(jié)構(gòu)將成為重要的研究?jī)?nèi)容。