基于FPGA的空間目標(biāo)碰撞預(yù)警系統(tǒng)
摘要:為了解決空間目標(biāo)與航天器發(fā)生碰撞的問題,設(shè)計了一種基于FPGA,以在軌目標(biāo)三維坐標(biāo)為待處理數(shù)據(jù)進行快速并行處理的目標(biāo)碰撞預(yù)警系統(tǒng)。該系統(tǒng)基于Xilinx公司FPGA芯片中的內(nèi)容可尋址存儲器(Content Addressable Memory,CAM)IP核和MicroBlaze軟核控制器,利用嵌入式開發(fā)套件(EDK)進行搭建;并設(shè)計了空間危險目標(biāo)的篩選算法,同時編寫了軟件及硬件代碼,加載到以上系統(tǒng)中進行實際的操作驗證。驗證結(jié)果表明,該系統(tǒng)實現(xiàn)了16個目標(biāo)中危險目標(biāo)的快速篩選功能,通過使用ChipScope邏輯分析工具進行波形分析,可知系統(tǒng)執(zhí)行一次篩選操作所需時間為1.8 s。
關(guān)鍵詞:現(xiàn)場可編程門陣列;Microblaze;內(nèi)容可尋址存儲器;空間目標(biāo);碰撞
隨著人類航天活動的不斷開展,空間碎片的空間密度已經(jīng)對航天器安全造成了威脅,特別是近地軌道,碎片密度更大,且其數(shù)量仍在迅速增加,航天器遭受空間碎片撞擊事件時有發(fā)生??臻g在軌目標(biāo)數(shù)量不斷增加,對空間目標(biāo)進行碰撞預(yù)警所需要的計算量也在迅速增加,鑒于并行計算速度很快,因此適合應(yīng)用并行計算對危險目標(biāo)進行篩選,進而進行預(yù)警操作。利用FPGA中的CAM(內(nèi)容可尋址存儲器)和MicroBlaze軟核控制器可以實現(xiàn)危險目標(biāo)的快速并行篩選。
1 CAM
1.1 CAM概述
CAM是一種特殊的存儲器,它是將數(shù)據(jù)項存儲在一個陣列中。每個數(shù)據(jù)項的位數(shù)叫作字寬,CAM中所有數(shù)據(jù)項的條數(shù)叫作CAM的深度。字寬和深度可以表征CAM的容量。
CAM基于內(nèi)容尋址,通過硬件電路實現(xiàn)快速匹配。CAM的并行處理特性使得它在數(shù)據(jù)分選領(lǐng)域倍受青睞,被廣泛應(yīng)用于以太網(wǎng)網(wǎng)址搜尋、數(shù)據(jù)壓縮、模式識別、高速緩存、高速數(shù)據(jù)處理、數(shù)據(jù)安全和數(shù)據(jù)加密等。
1.2 CAM工作原理
CAM最基本的兩個端口是數(shù)據(jù)線和地址線,數(shù)據(jù)線作為輸入端口,存放需要由CAM來處理的數(shù)據(jù),而地址線作為輸出端口,輸出CAM的處理結(jié)果——匹配數(shù)據(jù)所在地址。圖1所示為深度為4、字寬為4的CAM,如果將二進制數(shù)1100放在數(shù)據(jù)線上,輸出的匹配結(jié)果將會是0011,如圖1所示,結(jié)果中的每一位二進制數(shù)對應(yīng)CAM內(nèi)部每一條數(shù)據(jù),數(shù)據(jù)線上數(shù)據(jù)與CAM內(nèi)部數(shù)據(jù)相等則對應(yīng)位輸出為1,不相等則輸出為0。由于CAM具有并行匹配特性,所以很適合對空間多個目標(biāo)進行同時并行匹配處理。
2 MicroBlaze軟核控制器
MicroBlaze是基于Xilinx公司FPGA的微處理器IP核,它和其他外設(shè)IP核一起可以完成可編程系統(tǒng)芯片(SOPC)的設(shè)計。MicroBlaze處理器采用RISC架構(gòu)和哈佛結(jié)構(gòu)的32位指令和數(shù)據(jù)總線,內(nèi)部有32個32位寬度的通用寄存器;其內(nèi)部結(jié)構(gòu)圖如圖2所示。
使用Xilinx公司提供的EDK(嵌入式系統(tǒng)開發(fā)套件),可以在參數(shù)化的圖形界面下方便地完成嵌入式處理器系統(tǒng)的設(shè)計。其突出的優(yōu)點:一是設(shè)計靈活性;二是可以整合用戶自定義IP核,使得算法可以在硬件中并行的執(zhí)行而不是在軟件中串行的執(zhí)行,從而極大地加速軟件的執(zhí)行速度。
3 算法設(shè)計
3.1 算法分析
對空間目標(biāo)進行碰撞預(yù)警,實際上可以轉(zhuǎn)化為通過對目標(biāo)之間的距離進行判斷比較,找出有碰撞危險的目標(biāo)。由于空間目標(biāo)的位置可以用三維空間坐標(biāo)表示,因此對任意兩個目標(biāo)之間距離的判斷又可進一步轉(zhuǎn)化為他們之間坐標(biāo)的比較。
3.2 算法描述
假設(shè)只有3個目標(biāo)需要進行坐標(biāo)匹配處理,它們的坐標(biāo)分別為A(xA、yA、zA),B(xB、yB、zB),C(xC、yC、zC),需要一個深度為3的CAM,首先處理z坐標(biāo),將3個目標(biāo)的x坐標(biāo)存入CAM,如圖3所示。
然后分別將xA、xB、zC放在數(shù)據(jù)線上進行匹配操作,經(jīng)過3次匹配操作得到3個匹配結(jié)果RxA,RxB,RxC,對于y和z坐標(biāo)進行相同操作,分別得到y(tǒng)和z的匹配結(jié)果為RyA,RyB,RyC和RzA,RzB,RzC,所得到的結(jié)果均為3位的二進制數(shù),然后對每個目標(biāo)進行內(nèi)部坐標(biāo)對比,例如將目標(biāo)A的3個匹配結(jié)果RxA,RyA,RzA進行對比,就可知道是否存在與目標(biāo)A的3個坐標(biāo)均相同的項,例如RxA,RyA,RzA分別為101,101,101則說明目標(biāo)A與目標(biāo)C的坐標(biāo)是匹配的,進而可以判斷目標(biāo)A與目標(biāo)C有碰撞的可能。
與常規(guī)存儲器和軟件匹配方式有所不同,CAM對于數(shù)據(jù)的匹配操作是并行執(zhí)行的,這樣就可以大大提高數(shù)據(jù)匹配速度,進而提升系統(tǒng)效率。
4 硬件平臺搭建及運行
4.1 CAM模塊實現(xiàn)
利用賽靈思公司提供的IP核資源,通過配置CAM IP核參數(shù)化圖形界面,如圖4所示,在FPGA內(nèi)部例化了一個深度為16,字寬為32的CAM模塊,其基本參數(shù)如表1所示。
如表1所示,選擇存儲器類型為Block Memory這樣就可例化一個以FPGA片內(nèi)BRAM為基礎(chǔ)的CAM模塊,與基于SRL16(16 bit移位寄存器查找表)的CAM相比,其寫周期只需2個時鐘周期,寫操作所需時間為后者的1/8,提升了系統(tǒng)速度。
輸出地址編碼方式有3種可供選擇的方式:非編碼多位匹配(Multi Match Unencoded)、非編碼單一匹配(Single Match Unencoded)和二進制編碼(Binary Encoded)。第一種編碼方式可以從地址線上輸出所有可能的匹配項,而后兩種編碼方式則只能在地址線上輸出一個匹配項。
經(jīng)過實際驗證,由ISE綜合工具XST進行綜合后得出的綜合報告顯示,在型號為XC3S700AN的FPGA芯片中實現(xiàn)一個深度為16,字寬為32的CAM占用的資源情況如表2所示。
%20由表2可知,實現(xiàn)一個深度為16,字寬為32的CAM所占用的資源中,塊RAM所占比重較大,這是由于在FPGA內(nèi)部所實現(xiàn)的CAM模塊正是基于FPGA的塊RAM資源的,所以對塊RAM資源消耗比較多,因此在實際應(yīng)用中選用FPGA芯片時應(yīng)選擇塊RAM資源豐富的芯片。
4.2%20MicroBlaze軟核控制器與CAM的連接
%20在FPGA芯片中配置一個MicroBlaze軟核控制器以實現(xiàn)對CAM的一系列控制,如復(fù)位、寫入數(shù)據(jù)、讀取數(shù)據(jù)等,MicroBlaze通過PLB總線與CAM相連,同時為便于調(diào)試,在PLB總線上連接了串口等外設(shè)模塊,系統(tǒng)模塊圖如圖5所示。
4.3 系統(tǒng)執(zhí)行
系統(tǒng)執(zhí)行過程中,Microblaze作為控制器通過執(zhí)行由C語言編寫的軟件程序?qū)崿F(xiàn)對CAM的控制,它的具體操作流程如圖6所示。
在系統(tǒng)內(nèi)部,整個工程的實現(xiàn)和下載共分成4步:首先產(chǎn)生系統(tǒng)的硬件網(wǎng)表,即對嵌入式系統(tǒng)進行綜合;其次產(chǎn)生系統(tǒng)硬件架構(gòu)的比特流文件;再次編譯軟件,并將軟件代碼生成的比特流和系統(tǒng)硬件的比特流合二為一,構(gòu)成完整的系統(tǒng)描述比特流;最后將完整的比特流下載到FPGA芯片中。
4.4 驗證結(jié)果分析
經(jīng)過對處理結(jié)果分析可知,此系統(tǒng)驗證了設(shè)計算法的正確性。所搭建系統(tǒng)時鐘頻率為62.5 MHz,時鐘周期為16 ns,通過在代碼內(nèi)部添加時鐘計數(shù)器,并且使用ChipScope邏輯分析儀進行波形分析,可知系統(tǒng)執(zhí)行一次篩選操作所需要的時鐘周期數(shù)為114 296 649個,即1.8 s左右。
4.5 系統(tǒng)擴展能力分析
在后續(xù)研究中通過對CAM容量的擴展,可以增加待篩選目標(biāo)的數(shù)量。CAM容量的擴展,需要占用更多的FPGA芯片資源,同時其運行頻率會有所降低,以某Spartan3A芯片為例,三者之間的關(guān)系如表3、表4、表5所示。
考慮到成本問題,本設(shè)計所使用的芯片為賽靈思公司的型號為XC3S700AN,由表3~表5可知,在擴展CAM容量時,需要綜合考慮所需CAM容量、所選FPGA芯片資源情況以及運行頻率三者之間的關(guān)系。
5 結(jié)論
采用賽靈思公司MicroBlaze軟核控制器和內(nèi)容可尋址存儲器(CAM)所搭建的目標(biāo)碰撞預(yù)警平臺實現(xiàn)了總目標(biāo)數(shù)為16的目標(biāo)群中危險目標(biāo)的篩選操作。軟核控制器與CAM模塊同在一片F(xiàn)PGA芯片中實現(xiàn),管理和操作起來比較方便,便于系統(tǒng)實現(xiàn)小型化、集成化。受到FPGA自身容量的限制,在擴展CAM容量時可以考慮選用更大容量的FPGA芯片,或者應(yīng)用外接大容量專有CAM芯片,實現(xiàn)大規(guī)模目標(biāo)的并行匹配操作。