周威威, 陶 翠, 金埡梅, 李宇翔, 李夢妍
(上海無線電設(shè)備研究所,上海201109)
近年來,得益于性能的快速提升,雷達(dá)在國防[1]、交通[2]、測繪、汽車、無人機(jī)[3]等領(lǐng)域的應(yīng)用越來越廣泛。雷達(dá)信號處理機(jī)作為雷達(dá)系統(tǒng)的重要組成部分,是雷達(dá)算法的運(yùn)行平臺和硬件基礎(chǔ),主要負(fù)責(zé)采樣數(shù)據(jù)的處理與分析。FPGA+DSP是現(xiàn)代雷達(dá)信號處理機(jī)的主流架構(gòu),FPGA和DSP程序的調(diào)試和燒寫主要通過延伸到單板外的JTAG總線。
日益惡劣的工作環(huán)境和更高的性能要求,使得雷達(dá)信號處理機(jī)的數(shù)據(jù)處理、搜索、識別、跟蹤算法越來越復(fù)雜[4]。與人工智能等新型算法的融合,進(jìn)一步增加了處理機(jī)算法架構(gòu)的復(fù)雜性和多樣性[5]。雷達(dá)系統(tǒng)測試時通常需要對比多種算法,從中篩選出綜合性能最優(yōu)的方案。為實(shí)現(xiàn)高可靠性,雷達(dá)系統(tǒng)需要在整機(jī)狀態(tài)下充分測試[6]。一方面,現(xiàn)有雷達(dá)信號處理機(jī)JTAG總線燒寫速度慢、誤碼率高、抗干擾能力差,通常只延伸到單板外,因此整機(jī)狀態(tài)下不能通過重?zé)绦騺砬袚Q算法,只能通過遠(yuǎn)程通信更改部分參數(shù);另一方面,高擬真度仿真環(huán)境和極端測試環(huán)境搭建困難,可供測試的時間有限。另外,可定制化要求雷達(dá)整機(jī)能夠根據(jù)部署環(huán)境和部署策略快速切換算法程序。綜上所述,雷達(dá)整機(jī)測試、驗(yàn)證和部署都需要處理機(jī)能夠進(jìn)行多程序遠(yuǎn)程快速切換,以便在盡可能短的時間內(nèi)充分驗(yàn)證多種程序方案和進(jìn)行定制化部署。
常見的雷達(dá)信號處理機(jī)組成框圖如圖1所示。其中:兩片F(xiàn)PGA芯片用于模數(shù)轉(zhuǎn)換芯片、時鐘芯片和交換芯片等外圍器件的驅(qū)動控制,數(shù)字信號預(yù)處理,算法加速和接口控制等;兩片DSP芯片用于大規(guī)模數(shù)據(jù)運(yùn)算和復(fù)雜算法順序執(zhí)行等;一片CPLD控制板上電源芯片,在上電時滿足各FPGA和DSP芯片的啟動時序要求。每片F(xiàn)PGA或DSP芯片分別通過FLASH總線與一片F(xiàn)LASH芯片相連。上電后,FPGA和DSP芯片自動讀取加載保存在各自FLASH芯片中的程序,完成處理機(jī)啟動。
圖1 雷達(dá)信號處理機(jī)框圖
兩片F(xiàn)PGA芯片通過JTAG總線串聯(lián)后連接至單板外部接插件,用于單板狀態(tài)下的FPGA程序在線調(diào)試和燒寫。兩片DSP芯片也采取同樣的連接方式。所有FPGA與DSP芯片均接入數(shù)據(jù)通信總線,總線連接外部測試設(shè)備上位機(jī)(CPLD芯片不接入總線)。數(shù)據(jù)通信總線用于雷達(dá)整機(jī)狀態(tài)下各單板芯片間數(shù)據(jù)交互,也用于上位機(jī)傳輸測試命令與測試數(shù)據(jù)、監(jiān)控測試狀態(tài)。常用的數(shù)據(jù)通信總線包括1553B、SRIO、CAN、RS422等。
目前,雷達(dá)信號處理機(jī)中的DSP和FPGA芯片對應(yīng)的配置FLASH中只燒寫一個程序,與其他單板一起裝入雷達(dá)整機(jī)進(jìn)行測試。測試中處理機(jī)各芯片加載程序不能修改更換,若要更換只能拆開整機(jī),取出處理機(jī)單板,用仿真器通過JTAG接口燒寫新程序后重新裝回整機(jī)。隨著技術(shù)的發(fā)展,在雷達(dá)整機(jī)狀態(tài)下快速進(jìn)行處理機(jī)程序遠(yuǎn)程切換的需求越來越迫切。雖然FPGA部分可重構(gòu)和DSP參數(shù)遠(yuǎn)程更新技術(shù)可以在一定程度上緩解需求,但也會帶來新的問題:片上資源浪費(fèi),實(shí)現(xiàn)難度大,不能整個程序切換等。
為實(shí)現(xiàn)雷達(dá)信號處理機(jī)多程序遠(yuǎn)程快速切換,對處理機(jī)硬件進(jìn)行設(shè)計(jì)改進(jìn)。如圖1虛線所示,將CPLD芯片接入數(shù)據(jù)通信總線,使得CPLD能夠接收上位機(jī)發(fā)出的控制信號,通過CPLD配合上位機(jī)復(fù)位重啟FPGA與DSP芯片,實(shí)現(xiàn)程序切換功能。
由于FPGA芯片和DSP芯片具有不同的程序加載方式,因此需要對其采用不同的程序切換策略。
圖2 FPGA的FLASH芯片存儲區(qū)域劃分
FLASH存儲空間共分為三個區(qū)域:A1跳轉(zhuǎn)程序存儲區(qū),A2默認(rèn)正式程序首地址存儲區(qū),A3正式程序存儲區(qū)。A1區(qū)域從地址0x0開始,存儲FPGA跳轉(zhuǎn)程序,FPGA上電或復(fù)位重啟后自動加載此程序與上位機(jī)通信,確定要加載的正式程序首地址后進(jìn)行跳轉(zhuǎn)。A2區(qū)域中存儲默認(rèn)正式程序的首地址,用作跳轉(zhuǎn)程序在沒有從上位機(jī)接收到有效的跳轉(zhuǎn)地址時加載默認(rèn)正式程序。A3區(qū)域中保存有多個完整的FPGA正式程序,跳轉(zhuǎn)程序執(zhí)行后會從此存儲區(qū)中選擇一個正式程序進(jìn)行跳轉(zhuǎn)。在ISE i MPACT工具或Vivado中將多個FPGA工程文件(.bit)和數(shù)據(jù)文件合成為FLASH燒寫文件(.mcs),通過FPGA的JTAG接口燒入FLASH中。
雷達(dá)信號處理機(jī)FPGA芯片多程序遠(yuǎn)程快速切換流程如圖3所示。在FPGA上電或被CPLD重啟后,首先加載運(yùn)行跳轉(zhuǎn)程序,通過RS422等數(shù)據(jù)通信總線向上位機(jī)請求跳轉(zhuǎn)地址。如果在1 s內(nèi)收到有效的跳轉(zhuǎn)命令,則解析出跳轉(zhuǎn)地址,否則從FLASH中讀取默認(rèn)正式程序首地址作為跳轉(zhuǎn)地址。確定跳轉(zhuǎn)地址后,FPGA將調(diào)用ICAPE核進(jìn)行指定首地址的程序跳轉(zhuǎn),并自動重啟,從該地址加載運(yùn)行正式程序,完成程序切換。
圖3 FPGA多程序遠(yuǎn)程快速切換流程圖
DSP的FLASH芯片存儲空間分為三個存儲區(qū)域,如圖4所示。A1區(qū)域中存儲DSP芯片的二次加載引導(dǎo)程序bootloader,用于DSP啟動后C語言運(yùn)行環(huán)境搭建,通信接口初始化,與上位機(jī)通信選擇要加載正式程序的首地址,從FLASH中讀取正式程序加載進(jìn)內(nèi)核等。A2區(qū)域中存儲DSP默認(rèn)正式程序首地址。A3區(qū)域中保存多個正式程序,其中所有正式程序都不包含二次加載引導(dǎo)程序bootloader。采用CCS軟件編譯得到DSP正式程序的.out文件,通過TI公司官方格式轉(zhuǎn)換軟件hex6x轉(zhuǎn)換為.hex文件,通過JTAG接口燒入DSP的FLASH中。
圖4 DSP的FLASH芯片存儲區(qū)域劃分
DSP芯片多程序遠(yuǎn)程快速切換流程與FPGA芯片類似,如圖5所示。區(qū)別只在于DSP可以直接在二次加載引導(dǎo)程序bootloader中與上位機(jī)通信,獲取要加載正式程序首地址后,直接從FLASH中將該地址對應(yīng)的正式程序加載進(jìn)DSP內(nèi)核并運(yùn)行。
圖5 DSP多程序遠(yuǎn)程快速切換流程圖
本文選用的FPGA芯片為XILINX公司的XC7K325T,DSP芯片為TI公司的TMS320C6678,FLASH芯片為SPANSION公司的S29GL01GS,CPLD芯片為INTEL公司的EPM1270G,數(shù)據(jù)通信總線為RS422總線,上位機(jī)為Lab VIEW程序。根據(jù)不同的工作場景,對雷達(dá)信號處理機(jī)采用不同的程序加載模式,同時采取多種措施確保安全和方便使用。
FPGA和DSP芯片在上電或重啟后1 s內(nèi)根據(jù)上位機(jī)指令選擇要加載的正式程序,上位機(jī)通過CPLD芯片控制指定芯片的重啟。因此,雷達(dá)信號處理機(jī)有上電運(yùn)行、上電切換、重啟切換三種程序加載模式。
(1)上電運(yùn)行默認(rèn)程序
正常上電,1 s內(nèi)無上位機(jī)命令或FPGA與DSP芯片收到“啟動默認(rèn)程序”命令時,各芯片從A2區(qū)域讀取默認(rèn)正式程序首地址,執(zhí)行程序跳轉(zhuǎn)或加載。
“去你的!”柳紅推了一把蘇秋琴,剛巧推到她敏感的部位。蘇秋琴就故意哎唷唷地呻吟起來,還狠狠地拍了一下柳紅的屁股。柳紅倒不覺得痛,感覺麻酥酥的。她也在蘇秋琴的屁股上回敬了一巴掌。蘇秋琴又趁機(jī)抓了一把柳紅的胸膛。倆人在井邊打打鬧鬧的,氣氛就有些曖昧了。
(2)上電切換正式程序
正常上電,1 s內(nèi)FPGA與DSP芯片收到上位機(jī)“切換程序”命令,從中解析出要執(zhí)行程序切換的器件編號和各自的切換程序首地址,相關(guān)器件從解析出的地址加載正式程序,其他器件加載默認(rèn)程序。
(3)重啟切換正式程序
雷達(dá)信號處理機(jī)正常運(yùn)行時,CPLD接收到上位機(jī)“重啟芯片”命令,從中解析出器件編號并重啟對應(yīng)芯片。上位機(jī)在FPGA或DSP芯片重啟1 s內(nèi)發(fā)送“切換程序”命令,重啟芯片解析出各自要切換的正式程序首地址后完成跳轉(zhuǎn)。
為提高穩(wěn)定性和安全性,并擴(kuò)展系統(tǒng)功能,本文方案采取了多項(xiàng)改進(jìn)措施。
(1)可更換默認(rèn)正式程序
為方便在工程中應(yīng)用,增加默認(rèn)程序更換功能。更換時,處理機(jī)正常運(yùn)行,上位機(jī)向CPLD發(fā)送“重啟芯片”命令,完成對應(yīng)芯片重啟。上位機(jī)在芯片重啟1 s內(nèi)發(fā)送“更換默認(rèn)程序”命令,重啟芯片解析出各自要更換的默認(rèn)正式程序首地址,擦除各自FLASH中A2區(qū)域并將解析出的地址寫入,完成默認(rèn)正式程序首地址的更換。
需要注意的是,FLASH芯片在寫操作之前需要先進(jìn)行擦除操作,擦除以硬件分區(qū)(sector)為最小操作單元進(jìn)行。如表1所示,試驗(yàn)中采用的S29GL01GS芯片存儲空間大小為128 Mbytes,從地址0x0開始分為1 024個128 kbytes的硬件分區(qū)。更換默認(rèn)正式程序操作需要對A2默認(rèn)正式程序首地址存儲區(qū)域進(jìn)行擦除與寫入,因此需要將A2區(qū)域邊界與FLASH硬件分區(qū)對齊,即只能使用1 024個硬件分區(qū)中的一個或者連續(xù)數(shù)個。
表1 FLASH段劃分和硬件分區(qū)示意圖
(2)嚴(yán)格的校驗(yàn)機(jī)制
采用多種方式確保通信內(nèi)容完整準(zhǔn)確:通信幀中均包含循環(huán)冗余校驗(yàn)(CRC),連續(xù)多個特殊幀指代單條命令,指令幀回傳二次校驗(yàn),FLASH修改內(nèi)容回傳校驗(yàn)。RS422通信總線中上位機(jī)為主,其余各芯片為從,采取應(yīng)答式通信方式。上位機(jī)單條指令包含控制內(nèi)容和數(shù)據(jù)內(nèi)容,控制內(nèi)容由事先約定的連續(xù)多個特殊幀指代。各芯片解析出控制命令與數(shù)據(jù)后,需要回傳上位機(jī)確認(rèn)后才會執(zhí)行此指令,修改A2區(qū)域FLASH存儲內(nèi)容后需要讀取修改后內(nèi)容并回傳上位機(jī)進(jìn)行校驗(yàn)。
(3)全面的狀態(tài)監(jiān)測
各FPGA和DSP芯片進(jìn)入燒寫程序或二次加載程序、執(zhí)行命令、開始跳轉(zhuǎn),以及CPLD芯片執(zhí)行重啟指令時,都有狀態(tài)信息回傳上位機(jī),可以實(shí)時監(jiān)測通信情況和各芯片工作狀態(tài),有助于故障排查。
確定雷達(dá)信號處理機(jī)多程序遠(yuǎn)程快速切換方案后,在驗(yàn)證系統(tǒng)中實(shí)現(xiàn)并進(jìn)行測試。測試結(jié)果表明:該方案能夠在雷達(dá)整機(jī)狀態(tài)下實(shí)現(xiàn)信號處理機(jī)中FPGA與DSP芯片多程序遠(yuǎn)程快速切換功能;單芯片程序切換時間,即從上位機(jī)發(fā)出切換命令到切換到正式程序運(yùn)行的時間,在5 s以內(nèi)。切換功能由FPGA跳轉(zhuǎn)程序和DSP二次加載程序?qū)崿F(xiàn),既能最小化對正式程序的改動,又能不占用正式程序芯片資源。指令傳遞穩(wěn)定可靠,狀態(tài)監(jiān)測實(shí)時全面。
本文對整機(jī)狀態(tài)下雷達(dá)信號處理機(jī)多程序遠(yuǎn)程快速切換方法進(jìn)行了研究。針對常見處理機(jī)架構(gòu),提出了一種切實(shí)可行的方案,實(shí)現(xiàn)了FPGA和DSP芯片多程序的快速切換。通過提高雷達(dá)信號處理機(jī)程序加載的靈活性,有助于實(shí)現(xiàn)雷達(dá)系統(tǒng)多方案快速測試驗(yàn)證和定制化靈活部署。