武旭東,麻金龍,段金松,李婷,王瑋
核工業北京地質研究院,北京 100029
在核能譜探測中,常通過脈沖幅度分析技術獲取能譜信息,多道脈沖幅度分析器作為實現該技術的主要工具,其性能的優劣直接決定核素分析的準確性。傳統的脈沖分析器多采用模擬器件實現,脈沖信號從探頭輸出后,分別經過放大、高斯成形、極零相消和峰值保持等處理過程。大量模擬器件的使用,使得電路變得復雜,更容易受到各種因素的影響,使得系統的穩定性變差。
隨著核能譜測量學在各個領域越來越多的應用,對多道脈沖幅度分析器的各項性能指標(如:速度、精度、穩定性和功耗等)提出了更高的要求,模擬多道越來難以適應時代的需求[1-3]。與此同時,模數轉換器(Analog-to-Digital Converter,簡稱ADC)和數字信號處理技術出現了很大進步,這為多道脈沖幅度分析器從模擬轉向數字提供了硬件基礎。本文以ADC 和現場可編程門陣列(Filed Programmable Gate Arrays,簡稱FPGA)作為核脈沖信號處理核心,設計了一款以ARM 微控制器[2]為主控制單元,使用串行外設接口(Serial Peripheral Interface,簡稱SPI)、高速并行接口和串行總線(Universal Serial Bus,簡稱USB)接口作為多道與上位機通信的橋梁,實現集核信號采集、數據傳輸為一體的高速數字多道分析器。
數字多道分析器整體設計方案如圖1 所示,γ探測器將采集到的核脈沖模擬信號送至信號調理電路,經調理轉換的差分信號送入ADC 進行模數轉換。得到的數字核脈沖序列送至FPGA 中,經數字濾波、幅度提取、堆積判別和基線修正[4]等一系列處理之后,按照提取的幅值大小在事前劃分好的道址中相應增加計數,最終形成能譜數據。能譜數據由SPI 傳輸至微控制器,再由USB 接口上傳至上位機軟件。
圖1 系統總體設計框圖Fig.1 Overall system design block diagram
設計考慮到轉換精度、速度和功耗等因素,選用Analog Device 公司的AD92xx 系列12 位、40MSPS芯片為高速模數轉換芯片,采用+5V供電,內置一個高性能采樣保持放大器和基準電壓源,支持差分輸入和單端輸入。為了提高抗干擾性能,抑制共模噪聲,設計輸入信號采用差分輸入方式[5]。ADC 電路原理如圖2 所示。
圖2 ADC 電路設計原理圖Fig. 2 ADC circuit design schematic
圖2 中數字輸出電源DRVDD 采用+3.3V 供電,目的是實現與FPGA 的電平匹配。模擬輸入信號經差分運放電路后由VINA 和VINB 輸入,經模數轉換后通過DB1 至DB12 數字量輸出至FPGA,OTR 為數據超出量程范圍標志位,用于FPGA 進行數據過濾。
設計中,ADC 的時鐘信號ADC_CLK 由 FPGA提供,這樣既能夠實現FPGA和ADC的時鐘完全同步,也能夠保證ADC時鐘的高速度、高穩定性。
設計的ARM 處理器選擇STM32F4 系列控制器作為主控芯片。該芯片采用了32 位的Cortex-M4 作為核心,內置高速存儲器(包含1MB FLASH 和192KB SRAM),其工作頻率高達168 MHz。STM32 外圍電路主要包括電源控制電路、RTC 時鐘電路、蜂鳴器電路、存儲器電路、SPI 通信電路和USB 通信電路[6]等,電路功能原理圖如圖3 所示。
圖3 主控電路功能原理圖Fig. 3 Schematic diagram of main control circuit functional
FPGA 具備高速并行運算、邏輯實現能力強和設計靈活性好等特點,并能夠實時運算得到輸出結果。γ脈沖信號數字處理算法是整個基于FPGA 的數字多道脈沖幅度分析器的設計核心,包括數字濾波、幅度提取、堆積判別、基線修正和能譜生成等模塊[7]。啟動能譜采集時,測量任務通過使能信號通知FPGA 啟動信號采集。FPGA 首先將ADC 采集到的脈沖經過數字濾波處理,去除毛刺,濾掉部分基線干擾,然后進行幅度提取、堆積判別和基線修正處理,將提取到的信息生成能譜,存儲到雙口RAM 并發送到ARM 單片機中。FPGA 數據處理流程圖如圖4 所示。
圖4 FPGA 數據流程圖Fig.4 FPGA data flow diagram
3.1.1 數字濾波算法設計
ADC 芯片在對脈沖信號進行采集的過程中,由于噪聲干擾,使脈沖信號產生毛刺,所以在對數據進行提取之前要先濾波處理。本設計采用S-K 算法實現數字濾波,并將脈沖信號轉換為“類高斯”信號。
根據S-K 濾波電路原理[8-9]推導出的S-K遞推見公式(1)~(3)。
式(1)~(3)中:k—成形算法參數;x0—輸入信號脈沖幅值;y0—第1 次迭代輸出脈沖幅值;y1—第2 次迭代輸出脈沖幅值;yn—第n+1 次迭代輸出脈沖幅值;yn-1—第n次迭代輸出脈沖幅值;yn-2—第n-1 次迭代輸出脈沖幅值。
通過調整不同k值,可以優化和調節“類高斯”波形。由于k為定值,令則上述公式變換為:
利用SD 編碼可將上述公式轉化為移位的加減法運算,在FPGA 中通過VerilogHDL 語言編寫代碼實現,在節省大量FPGA 邏輯資源同時,還能保證高速采樣的實時性。S-K 濾波前后的脈沖波形圖如圖5 所示。
圖5 S-K 數字濾波前后波形對比圖Fig. 5 Comparison of waveforms before and after S-K digital filtering
3.1.2 幅度提取算法設計
經過濾波成形后,脈沖信號的最大值與脈沖電壓幅度的最大值是對應的。設計的幅度提取模塊是通過一階導數法來實現的。對于離散數據而言,一階導數可通過計算一階差分得到,見公式(5)。
式(5)中:S'i—第i點的一階差分數據;Si+1—第i+1 點濾波成形后的脈沖數據;Si-1—第i-1 點濾波成形后的脈沖數據。
當一階差分相鄰2 個點S'i和S'i+1的數據中出現符號變化時,說明出現了脈沖信號峰值。將一階差分數據用成形后的脈沖數據表示,則需要對Si-1、Si、Si+1和Si+24 個點的數據進行比較。離散數據的符號變化包含以下3 種情況:1)從-1 變為0;2)從0 變為1;3)從-1 變為1。通過VerilogHDL 語言編寫FPGA 程序,判斷是否滿足以上3 種情況,即可實現脈沖幅度提取。
3.1.3 堆積判別算法設計
由于核脈沖信號的隨機性,在采集過程中,在高計數率的情況下會出現脈沖堆積的現象。這種現象對能量分辨率具有較大影響。由于本設計采用數字多道技術實現,因此脈沖堆積識別的主要方法是時間差值比較法。該方法基于相鄰脈沖之間的時間間隔大小,快速辨別是否發生脈沖堆積,降低脈沖堆積對能量分辨率的影響。
由于ADC 模塊的采樣頻率為20 MHz,故相鄰2 個采樣點的時間間隔為50 ns。本設計判別算法如下:
經過濾波成形后的“類高斯”脈沖上升沿的時間約為0.8 μs,下降沿的時間約為1 μs,整個脈沖的時間約為2 μs,共40 個點。根據高斯函數的公式,對濾波成形后的脈沖數據進行數據擬合,得到脈沖的“半高寬”約為15 個點,即0.75 μs,見圖6。試驗表明,當相鄰峰的距離大于2 倍的“半高寬”時,能夠在不影響基線修正的條件下準確地識別峰位。若相鄰峰的時間間隔小于2 倍“半高寬”,則認為發生了脈沖堆積,需要丟棄后一個脈沖計數,并根據實際時間間隔計算死時間,進行計數率修正。
圖6 脈沖信號“半高寬”間隔Fig. 6 “Half width” interval of pulse signal
3.1.4 基線修正算法設計
在數字化多道脈沖分析器中,由于基線偏移,從而導致脈沖幅值的提取受到影響?;€偏移的主要來源是運放電路幅度過載或脈沖堆積的存在[11],圖7 為典型的基線偏移示意圖。
圖7 典型基線偏移示意圖Fig. 7 Schematic diagram of typical baseline drift
設計采用最小平均結合固定基線的方法進行基線修正。最小平均法處理過程如下:首先取得連續N個脈沖采樣值,并找到最小值Lmin,重復以上過程M次,得到M個最小值,求出M個最小值的平均值作為基線預估值[10-12],見公式(6)。
式(6)中:Laver—基線預估值,mV ;M—重復采集次數;Lmin—脈沖采樣最小值,mV ;N—脈沖采樣個數;i—求和變量。
為了保證每次都能夠得到采樣最小值,則N 的取值必須大于相鄰脈沖間的寬度所對應的點個數。Laver與設計的基線閾值Lth做比較,從而得到最終基線估計值。
式(7)中:L—修正后基線,mV;Lth—下閾值,mV。
將幅度提取之后的有效峰值減去此基線估計值,從而得到真實幅度值計入能譜相應的道址。
3.2.1 主控系統設計
主控單元是通過移植嵌入式實時操作系統FreeRTOS 實現的。FreeRTOS 是一個源碼公開、可移植和可裁剪的輕量級嵌入式實時操作系統內核,支持搶占式和協作式多任務,調度策略靈活。本設計主控系統主要包括系統信息更新、數據采集、USB 數據通信和關機守護等任務。
3.2.2 數據通信程序設計
主控單元與FPGA 數據通信是通過SPI 實現的??紤]到全譜數據傳輸量較大,為減少CPU 負擔,提高系統性能,本設計使用SPI+直接內存訪問(Direct Memory Access,簡稱DMA)的方式實現能譜數據的高速傳輸。DMA 允許數據直接在外設和內存之間傳輸,而無需CPU的直接干預,這可以提高系統的整體性能,使CPU 能夠專注于執行其他任務。
在整機完成研究后,對該系統進行測試與分析,圖8 為數字化多道分析器的實物圖。設計使用的探測器為北京某公司的CH158 型3 英寸NaI(Tl)晶體探測器,內置前置放大器,出廠說明書中脈沖幅度分辨率為7.0 %。主要性能測試包括能量分辨率、能量線性和積分非線性。
圖8 多道分析器實物圖Fig.8 Hoto of multi-channel analyzer
能量分辨率(η)是γ能譜最重要的一個性能指標,一般用特征峰半高寬與峰位的比值表示[12-13],如公式(8)所示。
式(8)中:FWHM —特征峰半高寬,道址;E—特征峰峰位,道址;η—分辨率。
測試選用37Cs 源(0.662 MeV,計數S-1>3000),在實驗室環境下(20-25 ℃)進行5 次測量。每次測量時間5 min。分辨率測試結果如表1。
表1 分辨率測試結果Table 1 Resolution test results
按照公式(8)計算能量分辨率,測試平均值為6.679 1 %,優于探測器廠家給出的7 %指標。
系統選用了三種不同的源來進行線性測試[14],分別為釷源232Th、銫源137Cs 和鉀源40K,測出三種源的混合能譜,見圖9(對數坐標),找到其對應核素(包括子體)的特征峰道址,對應關系如表2。
表2 混合源能量與道址對應關系Table 2 Relationship between energy and channel of mixed source
圖9 混合源能譜圖Fig. 9 Mixed source energy spectrum
利用Matlab 進行線性擬合,得到結果如圖10,擬合線性相關度R2在0.999 9 以上。結果顯示能量與道址具有非常好的線性度,達到設計要求。
圖10 能量線性擬合曲線Fig. 10 Linear fitting curve
積分非線性是指實際轉化的道址與理想轉化的道址之間的偏離程度,一般用實際幅度和理想幅度之間的最大差值與最大理想幅度的比值表示[15],見公式(9)。
式(9)中:INL—積分非線性;ΔVmax—實際輸入幅度和理想輸入幅度之間的最大差值,mV;Vmax—最大理想輸入幅度值,mV。
使用脈沖發生器產生一組固定頻率、幅值由小到大的脈沖信號,每次改變脈沖幅值后記錄相應的道址位置,通過Matlab 進行擬合,測試數據見表3,擬合結果如圖11 所示。
表3 積分非線性測試數據Table 3 Integral nonlinear test data
圖11 積分非線性數據擬合曲線Fig. 11 Fitting curve integral nonlinear data
通過matlab 擬合可得擬合方程見公式(10)。
式(10)中:V—脈沖幅值,mV;Ch—道址。
通過方程可得最大偏差為7.91 mV,理想最大電壓輸入為3 001.4 mV,計算得到其積分非線性為0.26 %。
1)以ARM 及FPGA 芯片為核心進行數字多道分析器設計,在FPGA 中完成了數字濾波、幅度提取、堆積判別、基線修正等關鍵模塊開發。
2)在STM32 中使用實時操作系統FreeRTOS 實現多任務實時管理、能譜數據傳輸等功能。
3)儀器的能量分辨率、能量線性和積分非線性測試結果表明:該數字多道分析器滿足γ能譜儀的使用要求。與傳統的基于數字采集卡的多道分析器相比,大幅度降低了產品成本,具有廣闊的市場前景。