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