沈 洋 李紀三 夏東方 李靖舒
(南京船舶雷達研究所 南京 211106)
相控陣雷達相比其它雷達更具靈活性,能同時完成多任務,在日益復雜的戰場環境中擁有不可或缺地位。相控陣雷達是獲取戰場信息的重要工具,同時也是武器系統的重要組成部分,其承擔了包括空中目標搜索、海面目標搜索、空中目標跟蹤、海面目標跟蹤、目標分類識別、目標高精度成像、武器制導、氣象探測等任務。不同種類的任務的數據幀大小不同,對傳輸帶寬和實時性的要求也不同,給雷達的數據傳輸系統帶來新的挑戰[1~2]。
為了實現相控陣雷達的同時多功能多任務,需要實現同時多通道傳輸數據,比如雷達對空搜索同時進行干擾源測向,或者對目標跟蹤時進行副瓣抑制,同時進行的工作的類別數量要與傳輸的通道數目匹配,傳統的機掃雷達采用分時實現多任務,采用單通道傳輸數據。相比于傳統雷達,相控陣雷達要求傳輸系統支持多通道數據同時傳輸[3]。
傳統雷達的數據傳輸流程每次由CPU發起,當雷達的下行數據流從雷達前端向后端傳輸時,由于用于后端信息處理的CPU無法事先根據脈沖重復周期及時準確地計算出下個脈沖的數據長度,因而只能根據雷達的掃描參數(重復周期、脈沖個數等)將DMA大小設置為固定值,CPU通過在數據中查找雷達同步頭解析數據從而形成雷達數據幀,反復地讀取并比對數據十分消耗CPU資源。此外,CPU必須通過寫寄存器的方式發起DMA傳輸,而寄存器寫操作是一個低效且耗時的操作,頻繁的寄存器寫操作會降低整個DMA傳輸效率。
針對上述分析的傳輸帶寬小,通道單一,DMA傳輸效率低等問題,不能滿足多功能相控陣雷達的數據傳輸要求,設計了一種基于PCIE總線的多功能相控陣雷達多通道DMA傳輸系統,該系統使用PCIe總線的DMA方式進行數據通信,雷達前端使用FPGA進行信號采樣及接口轉換,雷達后端使用CPU進行信息處理,數據流由前端向后端傳輸時,由數據源FPGA直接啟動DMA流程,直接將雷達下行數據寫入事先分配好的內存,并將該DMA包的描述符信息寫入相應內存,其中DMA描述符信息應包含傳輸狀態、數據大小及數據編號等信息,CPU只需通過周期性地讀取傳輸狀態便可獲取所有數據。該系統采用多組DMA內存輪流使用的方式進行傳輸,避免雷達數據未及時處理而被后來的流水數據所覆蓋,同時設計多個虛擬DMA通道,滿足同時多通道的數據傳輸需求。該系統中CPU極少參與數據傳輸過程,整個DMA傳輸效率得以提高,CPU也得以將更多的性能釋放于雷達信息處理中。
PCI Express總線是由英特爾在2001年提出的第三代 I/O接口標準[4~5]。PCIe總線是在 PCI總線的基礎上演變而來,有效克服PCI總線的并行接口多的缺點。支持動態電源管理,錯誤監測、處理、報告,熱插拔以及服務質量等功能。
PCIe總線是一種高速串行總線,點對點全雙工傳輸,采用差分信號傳輸有效地避免了數據傳輸過程中的串擾問題,從而可以不斷地提高傳輸速率。
2011年PCIe技術標準組織在原有基礎上,推出PCIe Gen3.0標準,顯著提高傳輸帶寬,單通道通信帶寬達到8.0Gbps。可配置X1 Lane、X8 Lane、X16 Lane等多通道連接。由于其采用串行技術,克服了并行傳輸技術的傳輸速率、誤碼率、傳輸帶寬等方面的不足,滿足現代嵌入式等電子領域對高速率和高可靠性的要求。目前,PCI-SIG已于2022年6月宣布推出了最新一代的PCIe7.0規范,各代規范的傳輸速率對比如表1所示[5~7]。
為實現核心裝備的安全可靠,自主可控,國家大力提倡電子元器件、操作系統和應用軟件的國產化。本傳輸系統的硬件部分的主要元器件包括了國產FPGA芯片和國產CPU芯片,兩者通過PCIe3.0總線的x8模式互聯。在國產CPU芯片端安裝國產銀河麒麟操作系統,并自主開發了配套的PCIe驅動程序和應用軟件。
為解決傳統DMA傳輸在多功能相控陣雷達系統中的應用問題,改進一種新的DMA傳輸流程。典型的相控陣雷達數據傳輸流程如圖1所示,數字面陣中頻信息通過光纖發往DBF板,進行DBF數字合成,然后通過光纖發往FPGA。FPGA與CPU之間的數據交換過程如下:CPU首先完成PCIe設備初始化、DMA參數(包括虛擬DMA通道數M、每個虛擬DMA通道輪流使用的DMA內存個數N等)設置和DMA資源的分配,然后將M組*N個DMA內存的首地址和M個上報內存的首地址下發給FPGA,其中每一組DMA傳輸對應一類任務,并向FPGA發送開啟DMA傳輸的命令;FPGA收到DMA開啟命令后,正式接管DMA的流程控制,將相控陣雷達的下行數據以脈沖為單位寫入第一個DMA內存,并將該包DMA描述符寫入第一個上報內存;下一個雷達脈沖數據幀抵達時,分別將數據和描述符寫入第二個DMA內存和第二個上報內存;依此類推,FPGA輪流使用N組DMA內存和上報內存;CPU通過不停輪詢上報內存中的傳輸狀態信息,獲取相應的數據DMA描述符和雷達數據[8~9]。

圖1 相控陣雷達數據傳輸流程
針對多功能相控陣雷達系統中同時多功能多任務的數據同步傳輸需求,設計一種多通道DMA控制器,如圖2所示,該DMA控制器同時接收不同任務種類產生的數據[8],不同任務的數據分別進入不同的數據通道,流經各自的數據緩存FIFO后由任務調度模塊進行仲裁,任務調度模塊按照預置的仲裁原則確定好優先級后依次將數據送給數據組包模塊,由數據組包模塊將數據轉換形成PCIE總線所定義的TLP包格式,最終通過PCIE的IP核轉換為多路串行數據發送到PCIE總線上。值得注意的是,數據組包模塊封裝TLP包的時候,會根據不同的數據通道使用不同的DMA內存地址和上報內存地址,從而在CPU端應用程序層面實現了雷達不同任務數據傳輸至不同的內存中,而無需面對混雜在一起的雷達不同任務的數據。

圖2 多通道DMA傳輸
多通道DMA傳輸中的數據組包邏輯可簡化為若干個單通道 DMA數據組包的組合[10~11],單通道DMA的數據組包邏輯具體如下。數據組包模塊接收來自上級模塊的雷達數據,組包后形成AXI總線接口形式,送給PCIE的IP核,其中上級模塊輸出的雷達數據接口包括數據的采樣時鐘clock、待傳輸的數據data、數據的有效標識valid以及數據的起始和結束標識start和end,數據組包模塊根據該接口可準確地解析出所有有效數據。
數據組包時,采用狀態機方式控制FPGA程序的時序邏輯,本系統設計的數據組包狀態機如圖3所示,數據組包狀態機上電后直接進入SM_RST狀態,并等待CPU下發的DMA開始命令DMA_en,當DMA_en=1時,跳轉進入SM_WAIT狀態;在SM_WAIT狀態中一直等待數據的起始標識start,當start=1時,跳轉進入SM_HEAD狀態,否則狀態機保持不變;進入SM_HEAD狀態后,開始進行組包,形成TLP包頭信息,并等待有效數據,當valid=1時,跳轉進入SM_DATA狀態;進入SM_DATA狀態后,繼續組包,持續寫入待發送的有效數據,直到該數據包達到負載PLAYLOAD,當cnt=PAYLOAD時,跳轉進入SM_TAIL狀態;進入SM_TAIL狀態后,繼續組包,發送該TLP包的最后一個數據,完成一個普通的TLP包并跳轉回SM_WAIT狀態。多次循環之后,在SM_DATA狀態中等到了數據結束標識end,當end=1時,跳轉進入SM_END狀態;進入SM_END狀態后,發送該TLP包的最后一個數據,完成該DMA包的最后一個TLP包,并跳轉進入SM_REPORT狀態;進入SM_REPORT狀態后,根據之前的統計結果,組包形成上報TLP包,上報TLP包的數據負載即為前文所述的DMA描述符,主要包括DMA傳輸完成狀態、DMA數據包長度以及DMA數據包序號等,然后直接跳轉進入SM_WAIT狀態,繼續等待新的數據起始標識start。

圖3 數據組包狀態機
由圖3可見,數據組包狀態機包含一大一小兩個循環。每完成一次小循環的狀態跳轉,則完成一次數據TLP組包;每完成一次大循環的狀態跳轉,則完成一次DMA組包,其中包括若干數據TLP和一個DMA信息上報TLP。
以最典型的PAYLOAD為128字節的TLP包為例,AXI總線的數據位寬為256位時,要發送128字節的PAYLOAD數據需4個時鐘周期,發送TLP數據頭(SM_HEAD狀態)另需一個時鐘周期,再加上一個時鐘周期的TLP包之間的等待時間(SM_WAIT狀態),因此最快6個時鐘周期便可完成一次TLP組包,數據得以及時寫入總線,從而保證在FPGA不使用外掛DDR作為緩存的情況下可以無損地進行大帶寬的數據傳輸[12~13]。
由以上設計可以看出,本系統的DMA數據傳輸具有如下特點:
1)CPU只需在初始化時向FPGA發送一次開始DMA傳輸的命令,接下來的數據傳輸完全由FPGA完成,無需CPU的參與,極大地提高了數據傳輸的效率和實時性。
2)由FPGA獨立實現一包DMA數據的傳輸,實現了可變長度的DMA傳輸,通過上報和定期查詢代替中斷響應的方式獲取DMA傳輸狀態,避免了大數據量傳輸時頻繁的中斷響應,降低了CPU卡頓和死機的風險。
3)將DMA數據包與雷達數據幀進行關聯,適合雷達數據流水處理的特點,減輕了CPU查找同步頭解析數據的負擔。
4)設計多組DMA內存和上報內存輪流使用,FPGA在進行少量緩存后可直接通過PCIe總線將數據寫入內存,在大帶寬傳輸的需求時也無需使用大容量DDR進行緩存,硬件設計更加簡單,軟件的調試難度大大降低。
測試平臺硬件基于國產FPGA芯片和國產CPU芯片進行設計實現,CPU與FPGA之間通過PCIe3.0 x8總線互聯,CPU端使用國產銀河麒麟操作系統,用C語言開發了配套的PCIe驅動程序和上位機測試軟件,用Verilog語言開發FPGA端測試邏輯。由FPGA同時產生兩路連續遞增的32位累加數作為測試數據,模擬多功能相控陣雷達兩個不同的任務產生的數據,測試數據速率可獨立調節,分別送給兩個DMA通道,上位機測試軟件通過調用驅動程序提供的函數接口初始化PCIe設備并同時接收兩個通道的測試數據,在統計接收數據平均速率的同時,對數據的正確性進行判斷,并對比發送數據的理論速率。測試結果表明,在數據校驗均未出錯的情況下,單路DMA通道測試時,數據傳輸速度達4700MB/s,兩路DMA通道同時測試時,兩通道的數據傳輸速度之和可達4700MB/s,與DMA組包邏輯的理論計算值相匹配。
本文設計一種基于PCIe總線的多功能相控陣雷達多通道DMA傳輸系統,在初始化之后無需CPU主動參與,由FPGA獨立實現可變長度的DMA數據包的傳輸,實現雷達數據幀與DMA數據包的關聯匹配,減少了雷達信息處理過程中復雜的拆包組包過程,為實現同時多功能多任務,設計多個虛擬DMA數據通道傳輸,提高了CPU解析雷達數據幀的效率,試驗測試表明本設計滿足現代多功能相控陣雷達數據傳輸的要求。