余 進,趙建軍,劉 立,趙 恩
(昆明理工大學理學院,云南 昆明 650500)
隨著信息技術的發展,時間精度越來越高,衛星通信、車載設備、無線傳感網絡的不斷發展,對于時間的精度越來越高。脈沖星因具有很好的穩定性,其發射的X射線信號可以作為天然信標,引導航天器等在宇宙中的自由航行。時間測量電路是 X射線脈沖星導航的重要組成部分,通過采集到的 X射線脈沖作為觸發信號獲取此時刻的時間,該時間精度達到皮秒級。
本文的數據處理電路是基于中國科學院西安光機所的X射線脈沖星導航的合作項目,最后的測試階段均在西安光機所完成。時間測量電路是X射線脈沖星導航后端電路的重要部分,前端電路由西安光機所研發。現階段的所有研究全是基于地面模擬系統上進行的。本文的基于Linux系統下的TDC電路的數據處理對于細時間的精度具有較好的效果,有一定的創新性。
時間數字轉換技術,又稱時間數字轉換器(Time-to-Digital Converters,簡稱 TDC)技術,TDC技術廣泛的應用于時頻測量、航空航天、衛星導航、雷達定位、激光測距、核物理和粒子物理探測等領域,并且這些領域的先進水平與時間間隔測量的精度密切相關。我國對脈沖星的研究滯后于國外,在早期的研究,國內團隊主要集中于對脈沖星的計時觀測,國家對該領域的投入很大,也取得了一些矚目的成就,在X射線探測成果卓著[1-3]。X射線脈沖星導航系統國內外都還處于地面模擬階段,并沒有真正的應用于航天測試階段。中科院有一整套的地面模擬系統,本文的研究是在中科院西光所的地面模擬系統下對BO531CRAB星座的X射線仿真源模擬上進行的。ZedBoard開發板是近年Xilinx公司推出的產品。該開發板采用Xilinx 7系列芯片,等級速度為-1。ZedBoard具有2個ARM-9的硬核,用戶可以單獨對 FPGA 進行設計,也可以與 ARM進行協同設計[4]。本文的硬件電路基礎為 Xilinx公司的Zynq-7000系列的ZedBoard開發板,此開發板集成了FPGA和ARM-9兩種技術,使得設計系統可以利用FPGA技術實現TDC硬件電路對數據高精度的采集。在嵌入式 Linux系統的控制下,以中斷的方式通過AXI總線進行可靠的數據傳輸,利用硬件實現歷元疊加和數據的整合,從而實現對TOA數據的計算。其原理設計如圖1所示。

圖1 X 射線拼接探測時間測量電路構成Fig.1 X-ray splice detection time measurement circuit composition
基于SOPC技術的嵌入式系統設計方案主要有兩種:一種是基于FPGA的嵌入式硬核微處理器方案;另一種是基于FPGA的嵌入式軟核微處理器方案[5]。用戶在使用軟核處理器時,可以根據系統設計的具體要求,對軟核處理器的外圍設備進行搭建,使整個嵌入式系統在硬件結構、功能、資源等使用方面符合設計要求。軟核 IP大部分由 FPGA公司自行開發與設計,軟核具有的特點是靈活性高、可移植性強、允許用戶自行配置。但是軟核IP又存在不足,軟核沒有硬核性能穩定,處理速度比硬核慢,模塊的預測性較低。基于FPGA的嵌入硬核IP的微處理方案,利用IP核植入技術在FPGA中預先植入嵌入式硬核處理器。通過FPGA芯片中的邏輯資源和嵌入式開發工具提供的外圍設備IP軟核,構建以硬核處理器為系統核心的片內外設和接口。硬核處理器構建的嵌入式系統具有很強的數據處理能力,且硬核處理器本身并不占用FPGA資源。利用嵌入硬核處理器的FPGA器件構建的嵌入式SOPC系統具有較強的穩定性和更快的處理能力,彌補了軟核微處理在穩定性和處理速度的不足。利用Xilinx公司的Virtex-II Pro系列的FPGA芯片中植入的ARM-9雙硬核微處理器,一方面可以利用可編程器件FPGA其在硬件電路上設計方便的強大優勢,另一方面可以充分利用微處理器在數據處理方面靈活的特點,使得嵌入式系統設計在數據采集與處理部分可以實現高效的SOPC系統,系統框架如圖2所示。

圖2 嵌入式系統設計框架Fig.2 Embedded system design framework
Linux操作系統的移植目的是可以在 ZedBoard開發板ARM處理器上運行Linux操作系統。Linux系統移植可以分為以下過程:
①為了實現跨平臺的編譯環境搭建,需要安裝針對 ARM 的交叉編譯工具鏈。所謂交叉編譯工具鏈就是基于不同的硬件平臺需要不同的編譯工具集[6]。
②通過交叉編譯工具鏈編譯Linux內核,同時可以對內核進行裁剪達到節省資源的目的。
③制作引導內核的U-Boot啟動文件。
④建立Linux系統下完整的文件系統。
⑤建立device tree來管理系統硬件資源。
采用Xilinx公司的Design Tools開發套件來進行硬件系統的搭建,目的是實現TDC硬件電路模塊和ARM的通信。兩者之間通信的橋梁是AXI總線,AXI總線是ARM處理器的總線結構,AXI總線結構如圖3。AXI總線采用的是FPGA技術,可以利用網表、例化等方式實現TDC在總線上的掛載。添加三個寄存器實現對TDC電路的控制和讀取數據操作。

圖3 ARM 處理器的AXI總線結構Fig.3 AXI bus architecture of ARM processor
對時間測量還需要解決垮時鐘域的問題。一般同步不同時鐘域間的數據傳輸有兩種方法:一是在不同時鐘域之間采用握手機制,二是異步FIFO[7]。本文是采用第二種方法,加入了 FIFO緩存單元實現傳輸速率的匹配。利用 FPGA技術設計的 FIFO數據的存入設計狀態圖如圖4所示。

圖4 FIFO 數據的存入設計狀態圖Fig.4 Storage design state diagram of FIFO data
(1)ini狀態:TDC電路模塊初始化以及系統復位。
(2)S1狀態:TDC數據輸出端口dout數據鎖存,等待操作系統對端口的數據進行讀取。
(3)S2狀態:操作系統讀取一次TDC輸出端口的數據結束狀態。
當操作系統通過AXI總線讀取一次 TDC的測量結果結束時,S2狀態機進入復位狀態或者進入S1狀態。TDC電路模塊通過 TDC控制器中的狀態機S1狀態與S2狀態的交替執行,實現了操作系統對TDC測量結果的正確讀取。
對于時間的測量是高能物理實驗中的一個重要測量參數。目前,對于時間測量的方法主要有兩種:一是采用專用的時間測量芯片(ASIC TDC);二是采用基于FPGA的時間數字轉換電路。專用的時間測量芯片大多都是針對具體的應用而開發的,對于設計的靈活性,普遍性存在一定的不足[8]。本文采用FPGA技術利用Xilinx公司的Zynq-700系列芯片XC7Z020,封裝為 CLG484,設計時間測量電路TDC。TDC電路的設計分為粗時間和細時間相結合的測量方法,秒以上的時間計數為粗時間計數,秒以下的時間計數為細時間計數。粗時間采用對主頻的計數的方法,為秒、分、時、日,月、年計數,如表1所示。在主頻以下的細時間部分分為兩部分來計量,一部分通過倍頻技術進行精度納秒級的計數,另一部分通過延遲78 ps的IODELAY延遲單元模塊(如圖6)進行精度皮秒級的計數。同時TDC電路的設計采用格雷碼計數的方式。使得該時間測量電路系統的設計具有精度高,成本低,應用領域廣泛等特點。為了保持計數同步,需要設計有記憶功能的寄存器傳輸級(RTL)電路,其電路圖如圖5所示。數據采集模塊TDC的設計有如下三個部分。

表1 TDC 電路的數據格式表Tab.1 Data format table of TDC circuit

圖5 TDC 電路的RTL圖Fig.5 RTL diagram of TDC circuit
延遲78 ps的設計:
module ABC ( clk200,d0 );
input clk200;
output d0;
IDELAY #(
.IOBDELAY_TYPE("FIXED"), // "FIXED" or"VARIABLE"
.IOBDELAY_VALUE(1) // Any value from 0 to 31 //0為主頻同步不延遲,1為最小的時鐘延遲:78 ps
以此可以計算出1 s時的延遲參數為:1000/78=12,為 1000 MHz,XC7Z020芯片的最大的數值為31個,具體可以在綜合仿真布線之后的FPGA Editor查看器件布局布線。但不能超過開發板的最大頻率。

圖6 IODELA Y延遲單元模塊Fig.6 IODELAY delay unit module
將主頻50 MHz主頻時鐘通過倍頻技術提高到500 MHz,精度達到2 ns,倍頻采用Clocking Wizard 3.5的IP核,Input Jitter設置為0。當2 ns的時鐘周期記數到 1 s時,作為粗時間的時鐘計數單元。而2ns到1 s的計數方式采用格雷碼計數。
格雷碼是一種無權碼,其編碼特點是任意兩相鄰代碼間只有一位數碼不同,這對代碼的轉換和傳輸很有利,因為它大大減少由一個狀態到下一個狀態時電路中的模糊狀態,提高了電路的抗干擾能力,所以格雷碼是一種錯誤最小化的編碼。格雷碼計數一類是用于定時,另一類是用來計數,用在脈沖沿的計數或地址的判斷,如判斷 FIFO傳輸來的數據量是否足夠或者 FIFO的讀/寫地址是否已經達到滿狀態,來決定下一步動作[9-10]。采用格雷碼計數運用在模塊狀態機的方案設計上設計方案,可以很好的減小誤差,達到錯誤最小化。
由于脈沖星周期的極端穩定性,脈沖星可作為一個天然時鐘[11]。數據采集前端TDC模塊對于脈沖星 X射線采集的數據需要經過大量的光子數據累計,才能還原出脈沖星的脈沖輪廓。對脈沖輪廓還原一般方法是利用軟件實現,可將數據傳入上位機利用 MATLAB來實現[12]。但此種方法造成了資源浪費且無法做到小型化實時性,更無法用于航天器。在此基礎之上提出,開發 Linux操作系統下的應用程序來處理TDC的數據,此方法提高了系統應用的靈活性節能性可以做到設備處理數據的小型化實時化,但考慮到數據處理效率的問題之后,得出了一種更加優化的設計方法,對于數據處理的方式采用硬件電路實現的方法。將此硬件系統掛載到 Linux系統下,通過Linux的控制,將TDC電路模塊的數據傳到數據處理模塊,對數據進行歷元疊加,經過歷元疊加后得到的數據(TOA),以提供給后端模塊進行導航。
本文基于X射線拼接探測時間測量電路的研制課題背景,針對TDC電路的測量提出了基于Linux系統下任意格式的數據處理與文件生成。此設計提高了時間測量的實時性以及設備的小型化,在航空航天、衛星導航、工業控制、智能家居、環境監測等領域具有很好的應用前景和實用價值。
[1] 張敏. 皮秒分辨率的FPGA-TDC技術研究[D]. 西安: 西安電子科技大學, 2013.
[2] 侯天蕊. 脈沖星信號特征識別與處理[D]. 哈爾濱: 哈爾濱工業大學, 2014.
[3] 趙恩. 基于ZedBoard開發板的Linux OS下的X射線高精度TDC系統的研究[D]. 昆明: 昆明理工大學, 2017.
[4] 陸佳華, 潘祖龍, 彭競宇, 等. 嵌入式系統軟硬件協同設計實戰指南[M]. 北京: 機械工業出版社, 2014. 27-37.
[5] 王偉. 基于FPGA的SOPC嵌入式系統設計[J]. 淮北職業技術學院學報, 2013, 12(1): 137-138.
[6] 唐海峰. 基于FPGA的時間測量電路的研究[D]. 昆明: 昆明理工大學, 2016.
[7] 于海, 樊曉椏. 基于FPGA異步FIFO的研究與實現[J]. 微電子學與計算機, 2007, 24(3): 210-216.
[8] 趙恩, 趙建軍, 高霞芳, 等. 時間測量電路系統的設計[J].新技術新工藝, 2016, 9: 11-13.
[9] 葉衛東, 謝建華. 格雷碼計數器的低功耗分析與設計[J].兵工自動化, 2006, 25(4): 64-66.
[10] 李莉. 基于FPGA的多位格雷碼計數器[J]. 科學技術與工程, 2009, 9(23): 7158-7161.
[11] 劉琳. 脈沖星的積分輪廓的高斯擬合及譜指數的研究[D].重慶: 西南大學, 2011.
[12] 吳亞平, 趙建軍, 吳光敏, 等. X射線脈沖星導航硬件脈沖輪廓累積研究[J]. 航空學報, 2016, 37(2): 662-668.