利用FPGA及其片上32位微處理器內(nèi)核MicroBlaze,構(gòu)建雷達目標(biāo)跟蹤系統(tǒng),硬件實現(xiàn)的高速并行性保證了多目標(biāo)跟蹤的實時性,微處理器CPU強大的控制協(xié)調(diào)功能保證系統(tǒng)的正常運行。針對多目標(biāo)波門排序這一難點,本文提出了利用頂層軟件排序的方法,降低了難度和運算量,提高了靈活性,很好的解決了問題。
1 引言
隨著集成電路的不斷發(fā)展,可編程邏輯器件FPGA因其功能強大,設(shè)計靈活,開發(fā)周期短等特點,受到越來越廣泛的應(yīng)用.目前在信號處理領(lǐng)域應(yīng)用系統(tǒng)的設(shè)計中,廣泛采用的是“FPGA+DSP”的體系結(jié)構(gòu),其中FPGA完成控制簡單,運算量大的算法處理工作,DSP作為系統(tǒng)的處理器進行系統(tǒng)控制,任務(wù)協(xié)調(diào)等工作.然而這種系統(tǒng)需要處理DSP與FPGA之間的通信和數(shù)據(jù)交換,增加了系統(tǒng)體積和實現(xiàn)復(fù)雜度,如果能利用FPGA的邏輯資源來完成這些控制功能,不但提高了系統(tǒng)集成度,也提高了系統(tǒng)的性能.目前FPGA不斷朝著實現(xiàn)更高密度,更大容量的千萬門級系統(tǒng)發(fā)展,同時MCU,DSP,MPU等嵌入式微處理器以IP核的形式嵌入到FPGA中,使得在FPGA上實現(xiàn)算法和控制功能的集成即可編程片上系統(tǒng)(System on Programmable Chip)成為可能.
本文介紹了利用Xilinx最新推出的Spartan 3E系列XC3S500E芯片,及其支持的微處理器軟核MicroBlaze構(gòu)建雷達目標(biāo)跟蹤系統(tǒng),完成了對多目標(biāo)的跟蹤,波門排序和信息管理存儲以及與主機的通信.
2 MicroBlaze簡介
MicroBlaze 處理器內(nèi)核是針對FPGA器件而優(yōu)化的功能強大的標(biāo)準(zhǔn)32位RISC處理器,運行速度高達150MHz,采用哈佛體系結(jié)構(gòu),具有獨立的32位指令總線和32位數(shù)據(jù)總線.這兩種總線又分為局部存儲器總線(Local Memory Bus,LMB)和IBM的片上外圍總線(On-chip Peripheral Bus,OPB)兩類.LMB總線可提供對片上雙端口Block RAM的高速訪問,OPB總線可提供對片上外設(shè),存儲器,以及基于硬件描述語言編寫的算法模塊的訪問,MicroBlaze可以響應(yīng)軟件和硬件中斷,進行異步處理.
3 MicroBlaze的開發(fā)環(huán)境和開發(fā)流程
應(yīng)用EDK(嵌入式開發(fā)套件)可以進行MicroBlaze IP核的開發(fā)。工具包中集成了硬件平臺產(chǎn)生器、軟件平臺產(chǎn)生器、仿真模型生成器、軟件編譯器和軟件調(diào)試工具等。EDK中提供一個集成開發(fā)環(huán)境XPS(Xilinx 平臺工作室),以便使用系統(tǒng)提供的所有工具,完成嵌入式系統(tǒng)開發(fā)的整個流程.EDK中還帶有一些外設(shè)接口的IP核,如LMB、OPB總線接口、外部存儲控制器、SDRAM控制器、UART、中斷控制器、定時器等。利用這些資源,可以構(gòu)建一個較為完善的嵌入式微處理器系統(tǒng)。
?
?
圖1 MicroBlaze 內(nèi)核結(jié)構(gòu)圖
MicroBlaze的開發(fā)流程大致有以下四步:
1利用微處理器硬件規(guī)范文件(MHS)和微處理器軟件規(guī)范文件(MSS),定義軟件和硬件系統(tǒng)。
2利用系統(tǒng)庫生成器,建立相關(guān)的庫函數(shù)和驅(qū)動函數(shù),并利用gcc編譯器編譯編寫的C程序源代碼。
3利用平臺生成器,生成系統(tǒng)網(wǎng)表,HDL代碼,片上塊存儲器初始化代碼。
4利用系統(tǒng)硬件模型,綜合后的ELF文件和用戶約束文件,應(yīng)用FPGA綜合實現(xiàn)工具生成比特流,并利用JTAG接口下載到硬件上進行調(diào)試和實現(xiàn)。
?
?
圖2 MicroBlaze 開發(fā)流程圖
4.系統(tǒng)總體設(shè)計方案
系統(tǒng)總體框圖如圖三所示,多目標(biāo)跟蹤模塊是基于硬件描述語言的底層算法中心,完成多目標(biāo)的識別,跟蹤和預(yù)測,它按照OPB總線協(xié)議掛在總線上與MicroBlaze通信,MicroBlaze通過配置寄存器,完成對它的控制;A/D轉(zhuǎn)換器采用TLC5540,完成對回波信號的數(shù)字化;鎖相環(huán)CD4046完成對方位脈沖的分頻鎖相;串口模塊完成與主機的通信和交互;中斷控制器實現(xiàn)對多中斷的協(xié)調(diào)管理,配置優(yōu)先級;FLASH采用SST25LF080A,完成最終程序的固化和上電初始化;片上塊RAM完成程序的存儲和雷達多目標(biāo)相關(guān)信息的存儲,基于MicroBlaze的頂層軟件算法完成對這些模塊的控制和協(xié)調(diào),同時完成多目標(biāo)波門的排序。
?
?
圖3 系統(tǒng)總體實現(xiàn)方案
5.MicroBlaze在波門排序中的應(yīng)用
當(dāng)進行多目標(biāo)跟蹤時,需要對多個目標(biāo)信息進行存儲,同時必須保證多目標(biāo)波門數(shù)據(jù),按其方位和和距離的大小順序排列,這樣才能保證隨著雷達方位和距離的掃描,依次對各個目標(biāo)進行連續(xù)的自動跟蹤.完全基于硬件的排序,不但時序復(fù)雜,而且靈活性很差,在實際中很難實現(xiàn),一直是全自動跟蹤系統(tǒng)實現(xiàn)的難點,而本文通過MicroBlaze頂層算法實現(xiàn),利用C語言強大的指針功能,很好的克服這些困難.下面就這個問題進行詳細的介紹.
為了避免目標(biāo)錄取后由于波門的調(diào)整而干擾下一個波門的讀取,采用不同雷達掃描周期(2.5s)兩張波門表交替存儲波門數(shù)據(jù)(指針Xuint32 *b1為波門表一的首地址指針,Xuint32 *b2為波門表二的首地址指針), 當(dāng)從波門表1中順序讀取波門數(shù)據(jù)送入跟蹤模塊時,將通過雷達目標(biāo)跟蹤模塊跟蹤濾波得到的下一次探測周期的波門數(shù)據(jù)存入波門表2中,并進行排序。將片上RAM中的8KB空間掛到OPB總線上用來存儲兩張波門表,并供CPU調(diào)度和訪問。
//為兩張波門表分配RAM存儲空間
b1=(Xuint32*)XPAR_OPB_BRAM_CNTLR_BASEADDR;
b2=(Xuint32*)(XPAR_OPB_BRAM_CNTLR_BASEADDR+0x00000060);
每個32位二進制數(shù)存儲一個目標(biāo)的波門信息,具體分配如下:高12位為目標(biāo)的4096方位脈沖計數(shù),中間16位用來存儲目標(biāo)波門距離計數(shù),最低四位為目標(biāo)編號。
當(dāng)正北脈沖信號到來時,表明新一個雷達探測周期開始,觸發(fā)上升沿中斷,在中斷程序中,將當(dāng)前指向波門表一的指針*b1指向波門表二,同時將波門表二的首個目標(biāo)波門信息送入跟蹤模塊的寄存器中,并使b1指向下一個目標(biāo)波門信息,將指向波門表2的指針*b2指向波門表1:
//實現(xiàn)兩張波門表的交迭
Temp=b2; b2=b1; b1=temp;
//將當(dāng)前指針指向的目標(biāo)波門數(shù)據(jù)送入底層跟蹤模塊的寄存器中,同時將指針指向下一個目標(biāo)波門數(shù)據(jù)
track_mWriteSlaveReg (baseaddr,*(b1++));
當(dāng)?shù)讓幽繕?biāo)跟蹤模塊完成對當(dāng)前波門區(qū)域目標(biāo)的探測,會向CPU發(fā)出一個探測結(jié)束信號,觸發(fā)上升沿中斷,并將當(dāng)前目標(biāo)經(jīng)過α-β外推得到的下一次目標(biāo)探測周期的波門數(shù)據(jù)寫入指定的寄存器中。在中斷程序中,將b1指向的目標(biāo)波門數(shù)據(jù)寫入跟蹤模塊的寄存器中,同時b1指向下一個目標(biāo)波門;將接收到的外推波門數(shù)據(jù)寫入b2指向的波門表中,并與之前得到的多目標(biāo)外推信息進行距離方位比較排序。這里采用插入排序,因為之前的目標(biāo)波門數(shù)據(jù)已經(jīng)按照掃描周期先后的順序進行存儲了,所以新進入的波門數(shù)據(jù)遞推的與上面的波門數(shù)據(jù)進行比較,若上一個波門數(shù)據(jù)大于本波門數(shù)據(jù),需要進行相互交換,并向上遞推比較,如果上一個波門數(shù)據(jù)小于本波門數(shù)據(jù),則本存儲位置正好對應(yīng)目標(biāo)的掃描順序,排序結(jié)束。
具體中斷程序如下:
//將當(dāng)前指針指向的目標(biāo)波門數(shù)據(jù)送入底層跟蹤模塊的寄存器中,同時將指針指向下一個目標(biāo)波門數(shù)據(jù)
track_mWriteSlaveReg (baseaddr,*(b1++));
//將從底層跟蹤模塊寄存器中得到的下一周期目標(biāo)外推波門數(shù)據(jù),按照大小排序,插入寄存器中相應(yīng)的位置
for(i=b2;i>XPAR_OPB_BRAM_CNTLR_BASEADDR;)
{ j=i-1;
If (*i<*j)
{
temp=i; i=j; j=temp;
}
else
exit;
}
當(dāng)需要增加或刪除目標(biāo)時,我們通過串口模塊UART與主機進行命令交互,對串口的操作,
//初始化串口,設(shè)置波特率等
XUartLite_Initialize(&UART,XPAR_UARTLITE_DEVICE_ID) ;
//發(fā)送和接收數(shù)據(jù)
XUartLite_Send(&UART,&send_data,1) ;
XuartLite_Recv(&UART,&recv_data,1) ;
當(dāng)需要增加一個探測目標(biāo)時,給目標(biāo)分配新的編號,同時將波門信息存入b2指向的波門表,并如前插入排序,待下一次掃描周期到來時,按順序進入跟蹤寄存器,進行目標(biāo)的跟蹤。
當(dāng)需要刪除某個目標(biāo)時,在b2指向的波門表中查詢目標(biāo)的編號,并記錄下它的存儲位置,在下一次掃描周期中,當(dāng)b1指針指到這個位置時,直接跳過,讀取下一個目標(biāo)的波門數(shù)據(jù),這種方法,既取到了效果,又避免了大量數(shù)據(jù)的移動操作。
6 結(jié)束語
利用MicroBlaze微處理器,搭建雷達目標(biāo)跟蹤的嵌入式系統(tǒng),有效的實現(xiàn)了系統(tǒng)的控制,多任務(wù)的協(xié)調(diào)處理?;陧攲覥程序算法實現(xiàn)的多目標(biāo)波門排序,既利用了軟件實現(xiàn)的靈活性和方便性,又兼具嵌入式系統(tǒng)的實時性,有效的解決了問題。隨著嵌入式操作系統(tǒng)VxWorks,uc/OSII,uclinux的廣泛應(yīng)用,通過擴充外部存儲器,可將這些實時的嵌入式操作系統(tǒng)移植到MicroBlaze軟核上,將會在系統(tǒng)多任務(wù),實時性處理的性能上有很大提高,相信將來也會得到廣泛的應(yīng)用。
本文作者創(chuàng)新點:本論文基于FPGA及其片上微處理器軟核MicroBlaze構(gòu)建了雷達多目標(biāo)跟蹤的嵌入式系統(tǒng),并提出了頂層軟件排序的方法,有效的解決了多目標(biāo)波門排序的難點。
參考文獻:
[1]張潤澤.船舶導(dǎo)航雷達.人民郵電出版社.1990 02
[2]馬建國,孟憲元.電子設(shè)計自動化技術(shù)基礎(chǔ).清華大學(xué)出版社.2004.09
[3]李大軍,常青,梅順良.AIS系統(tǒng)協(xié)議棧的研究與實現(xiàn).微計算機信息,2005,12-2:47-49
[4]Xilinx MicroBlaze Processor Reference Guide April 2, 2005
[5]Xilinx Embedded System Tools Guide June 16, 2004
評論
查看更多