鄧肖丹,李學硯,段樂穎,李行素
(1.自然資源部航空地球物理與遙感地質重點實驗室,北京 100083;2.中國自然資源航空物探遙感中心,北京 100083)
自然界中大部分信號均為模擬信號[1]。模數轉換(ADC)將連續變換的模擬信號轉換為離散的數字信號[2],提取出有用信號,廣泛應用在導航、監控、觸控以及人工智能等系統中[3-5]。
基于ARM 內核的微處理以及近些年發展迅速的FPGA(現場可編程邏輯門陣列)芯片幾乎都內置有模數轉換部分,其中FPGA 沒有指令周期,易于時序控制,具有特有的并行處理能力、強大的處理速度以及豐富的外設接口[6-8],但都受限于芯片本身的電壓范圍以及轉換精度等因素,在許多應用中仍然需要使用單獨的模數轉換芯片[9-11];傳統的模數轉換芯片通過單片機進行直接控制,但受限于運算能力與硬件接口資源,會制約數據采集的速度與同步性[12];模數轉換芯片有積分型、逐次比較型、流水線型以及Δ-Σ型等類型,每種對應不同的應用需求,Δ-Σ型適應于分辨率在20 位以上的高精度測量領域[13-14]。針對以上問題,該文基于ZYNQ-7000 的FPGA 微控制器,利用近兩年TI 公司新上市的24 位Δ-Σ型模數轉換芯片ADS125H02 設計高精度的數模轉換。
系統以ZYNQ-7000 系列中XC7Z020-2CLG484I作為微控制器的核心開發板,集成了雙核ARM Cortex-A9 處理系統(Processing System,PS)與可編程邏輯(Programmable Logic,PL)系統[15],靈活性更高、可配置性更高、功耗更低、運行效率更高[16-17]。相較于自主研制微控制器核心板,使用當前技術成熟的開發板免去了對其外圍基礎電路的設計,減少了設計周期。硬件部分還包括模數轉換電路、串口通信與電源電路。
電源模塊為核心板、AD 芯片以及串口提供±5 V、+3.3 V 的電源電壓。模數轉換芯片與ZYNQ-7000核心板通過PL 端配置的SPI 接口進行雙向通信,核心板通過在PL 端配置的UART 串行接口向PC 機發送數據。系統硬件模塊連接框圖如圖1 所示。
ADS125H02 可實現±20 V 雙通道模擬電壓輸入,內部具有低噪聲0.125~128 的可編程增益放大器(PGA),40 kSps 轉換速率,具有內部基準電壓源。內置的PGA 可根據輸入模擬電壓范圍靈活調節增益放大器倍數,以對應內部基準電壓源的幅值進行模數轉換,可有效減少電路板面積,消除了對外部衰減器或外部增益的需要,降低了電路噪聲,有利于高精度、小型化設計[18]。ADS125H02 共有32 個管腳,其中主要管腳功能如表1 所示。

表1 ADS125H02管腳功能
AD 轉換電路作為系統的核心部分,根據芯片管腳功能與需求來設計電路。ADS125H02 只能采用串行外設接口(Serial Peripheral Interface,SPI)與ZYNQ-7000 進行通信,傳統方式是在ZYNQ-7000 的PS 端使用內置的SPI 接口進行通信,可降低程序設計難度,但時速以及掛載數量受到限制,而在未植入操作系統的情況下,也無法實現數據的同步采集與轉換,不利于將來多路實時AD 轉換的擴展,利用在PL 端配置SPI 接口進行通信可有效克服這些弊端。AD 轉換電路如圖2 所示。

圖2 AD轉換電路
電路中兩路單端輸入范圍根據HV_AVDD 與HV_AVSS 將輸入電壓控制在-5.3~+5.3 V 范圍內,數字部分采用單電源+3.3 V 供電,模擬部分采用±5 V雙極性供電,在電源附近使用0.1 μF 的去耦電容進行濾波,降低電源噪聲,模擬地GND 與數字地GGND單點連接,抑制環路噪聲,REFOUT 與BYPASS 可分別輸出+2.5 V 與+2.0 V 的內部電壓,在設計中不使用,直接連接電容接地,P1 與P2 外接兩路模擬輸入電壓。
系統以ZYNQ-7000 作為核心處理器,通過SPI與ADS125H02 進行通信,實時控制數據的采集轉換,靈活調節寄存器參數,將接收到的二進制數值進行提取與處理,得到帶符號的模擬電壓值,由串口發送至上位機中,實現高精度的模數轉換[19-20]。
ADS125H02 作為SPI 通信的從設備,需要主設備提供時鐘信號。串行通信的時序如圖3 所示,t1表示時鐘觸發上升沿到輸出有效數據的時間,為了正確地發送數據,t1的值在15~40 ns 之間;t2表示時鐘觸發下降沿前讀取數據的啟動時間,t3表示時鐘觸發下降沿后讀取數據的保持時間,為了正確地讀取數據,t2與t3之間最少需要保持25 ns。根據要求,以ZYNQ-7000 的50 MHz 晶振為時鐘基準,通過軟件處理獲得7.14 MHz 的SCLK 時鐘信號。特別注意的是,ZYNQ-7000 在時鐘信號觸發的同時讀取/發送數據,但ADS125H02 需要在一定延時后才發送正確數據,因此,ZYNQ-7000 讀取ADS12H02 發送的數據時應延遲一個時鐘周期。

圖3 串行通信時序圖
軟件設計基于ZYNQ-7000 的PL 端進行。在數據轉換之前先對ADS125H02 的內部寄存器進行配置:先發送寄存器地址數據再發送寄存器配置數據,包括轉換速率、參考電壓、增益放大器倍數以及轉換通道等。設計中有兩路數據進行輪流轉換,每次需重新開啟轉換配置,無論是對寄存器的操作還是數據轉換讀取都需要進行CRC 校驗,校驗通過則表明ADC 芯片正確實現了讀寫寄存器以及數據轉換,否則需要重新進行操作。ZYNQ-7000 收到的數字信號為24 位二進制數,通過軟件進行計算處理。Wait 控制兩通道轉換速度,在PL 端配置的串口輸出帶符號的模擬電壓值,電壓值保留到小數點后六位,小數點前一位,共七位。程序編寫要嚴格按照器件的工作時序進行,程序設計流程圖如圖4所示。

圖4 程序設計流程圖
在程序設計中,CH0 與CH1 兩通道數據的每一次交替轉換,都需重新配置寄存器MODE4,MODE4寄存器的值決定了當前的轉換通道。轉換數據的開啟可使用硬件控制也可使用軟件控制,系統選擇通過START 命令,利用軟件方式開啟轉換,再讀取DRDY 管腳的電平信息,為低電平則表示新的數據轉換完成,可以利用RDATA 命令進行數據讀取,否則繼續等待,直到DRDY 管腳為低電平。數據轉換流程圖如圖5 所示。

圖5 數據轉換流程圖
將完成的程序代碼打包成IP 核,如圖6 所示,便于以后移植調用,根據管腳對應的輸入輸出,可同時掛載多個AD 轉換芯片,實現同步數據采集。

圖6 ADS125H02 IP核
利用軟件的仿真功能對程序中的部分算法進行仿真測試,確保接收到的二進制數可以準確無誤地轉換為十進制電壓值,驗證了結果的真實性。在程序中,ZYNQ-7000 收到ADS125H02 經過模數轉換后的24 位二進制數據,按照芯片數據說明,通過算法將二進制數轉換為有符號的10 進制數。二進制值Code 與電壓值的對應公式如表2 所示,Vref是基準電壓值,系統中為2.5 V,增益Gain 為0.5。

表2 模擬電壓與24位二進制對應關系
根據上述關系,在仿真程序中進行檢驗時,隨意對24 位二進制數值進行設置。取其中值為0xF23456,根據計算可知對應的幅值應為-0.538 889 170 V,仿真結果如圖7 所示,從圖中可以看出,此時符號位的ASCII 碼值為2d,對應為“-”,數值為0538889,在輸出中小數點位數為六位,對應的電壓值為0.538 889 V,仿真結果驗證正確。

圖7 仿真結果圖
對系統進行上電測試,通過串口將輸入模擬信號轉換的電壓值發送到上位機進行觀測。將ADS125H02其中的兩通道模擬輸入連接幅值為+3.3 V和-2.5 V進行測試,通過數據處理,上位機軟件接收數據,測試結果如圖8 所示。從圖中可看出,兩通道數據輪流進行采集,輸出帶符號的7位電壓值,分辨為1 μV。

圖8 測試結果
該文利用基于ZYNQ-7000 的可編程邏輯端與ADS125H02 實現了24 位、±5 V 的低噪聲高精度數模轉換,并驗證了數據轉換的正確性。基于ZYNQ-7000 核心處理器豐富的外設接口,高速的處理速度和同步性,可擴展多個AD 同時進行數據轉換;ADS125H02 雙極性的寬電壓轉換范圍,集成的內部基準源、低噪聲增益放大器與數字濾波,高達24 位的轉換精度,使其在要求高精度、同步性、小型化等系統中具有良好的應用和前景。