余夢新,吳銀川
(西安石油大學 陜西省油氣井測控技術重點實驗室,西安 710065)
在實際應用中,除了需要一些規則的信號,如正弦波、三角波、方波等,還需要一種能夠產生各種不規則波形的儀器,如生物電子工程中常見的各種生物電波、人體產生的各種信號波,如心臟跳動過程,電子設備產生的各種干擾雜波、模擬電路各種瞬變波形等。這類波形不僅不規則,且無法直接獲取,普通信號發生器很難產生[1]。此時,設計任意信號發生器具有重要意義。
與傳統的信號發生器相比,任意信號發生器的最大優勢在于產生信號的方式靈活多變,它可以根據用戶的測試需求進行仿真。目前,市面上任意信號發生器常見的波形信號合成技術有直接數字波形合成技術(Direct Digital Waveform Synthesis,DDWS)和直接數字頻率合成技術(Direct Digital Frequency Synthesizer,DDFS)。該技術均是通過改變采樣時鐘和波形點數改變輸出波形頻率,再利用D/A 轉換器進行數模轉換,完成波形輸出。但該方法面臨著模擬通道內低通濾波器設計困難以及波形易受模擬通道內的元器件的影響,因此在輸出波形時幅度不夠平坦[2,3],影響波形質量。而且目前常見的任意信號發生器大多數是通過外接電路進行介入,沒有獨立的系統[4]。因此,本文在該背景下,設計任意信號發生器的自適應閉環控制系統,通過上位機結合下位機的方式,設計一個獨立的任意信號發生器系統。
系統主要由上位機與下位機兩部分組成,上位機軟件主要是實現任意波形數據的產生、采集、顯示功能。下位機由以STM32F407 為核心的控制模塊、D/A 轉換模塊、A/D 轉換模塊以及信號調理模塊組成。
任意信號發生器系統框圖如圖1 所示。用戶利用上位機產生任意模擬信號波形數據,通過串口轉USB 模塊送至單片機。單片機完成信號接收與存儲,并送至D/A 轉換模塊進行數模轉換,經過信號調理等操作,輸出用戶所需要的波形信號。單片機再將輸出波形進行采集,經過A/D 轉換模塊,完成模數轉換。利用USB 或者串口上傳至上位機軟件顯示,從而實現信號的自適應閉環控制。

圖1 任意信號發生器系統框圖Fig.1 Block diagram of any signal generator system
任意波形合成框圖如圖2 所示,上位機軟件通過函數計算得到波形數據點,其長度可以根據波形的復雜程度或者用戶對波形的精度要求而改變。采樣點數越多[5,6],波形的還原度越高,顯示的波形就越完美。數據位數選用D/A轉換器的位數,本文采用12 位寬的DAC。將已經采樣好的波形數據通過串口下傳至單片機進行處理,完成D/A 轉換,將數字量轉換為模擬量,經過濾波等信號調理獲得需要的波形。

圖2 任意信號波形數據合成原理框圖Fig.2 Schematic block diagram of arbitrary signal waveform data synthesis
輸出信號自適應流程圖如圖3 所示。其中,Vin是輸入波形各點電壓,Von是波形輸出實際電壓,Kn是自適應系數,取值范圍為[0,1]。通過計算特征點的相對誤差,判斷是否完成自適應處理。具體步驟如圖3。

圖3 輸出信號自適應流程Fig.3 Output signal adaptation process
Step1:設置輸入數據特征值Vin。
Step2:測量實際輸出數據特征值Von。
Step3:判斷特征點相對誤差|Von-Vin|/Vin×100%≤0.1%;若該點的相對誤差小于等于0.1%,則迭代結束,轉入Step6;若該點的相對誤差大于0.1%,則轉入Step4。
Step4:計算ΔVn=Von-Vin,并設定自適應系數Kn,Kn∈[0,1]。
Step5:迭代輸出Vi(n+1)=Vin-KnΔVn,轉入Step2。
Step6:自適應結束。
接口電路設計如圖4 所示。單片機STM32F407 作為下位機的控制端,需要接收上位機(計算機)傳來的指令,對指令進行解析,然后根據解析內容執行或協調其他模塊的工作。它主要依靠TXD、RXD 兩個管腳進行通訊。該系統計算機選擇USB 接口與單片機進行數據傳輸。所以,要實現單片機與計算機的串行通信,需要在控制電路中設計一個通信接口電路來實現串口與USB 接口的數據傳輸[7]。因此,需要借助芯片CH340 完成串口與USB 兩處接口的電平轉換,芯片CH340 無需外掛晶振,且能自行產生時鐘,數據傳輸波特率最高達12500Mbps。

圖4 串口轉USB接口設計Fig.4 Design of serial port to USB interface

圖5 ADC時序圖Fig.5 ADC Timing diagram
STM32F407 的DAC 模塊(數字/模擬轉換模塊)是12位數字輸入,電壓輸出型的DAC。它可以配置8 位或者12位模式,也可以與DMA 控制器配合使用,DAC 工作在12位模式時,數據可以設置成左對齊或者右對齊數據格式,DAC 模塊有兩個輸出通道,每個通道都有單獨的轉換器。本系統就是使用單個DAC 通道1 進行數模轉換的。采用12 位的右對齊方式,不采用硬件觸發,存入寄存器DAC_DHRx 的數據會在一個APB1 時鐘周期后自動傳入寄存器DAC_DORx[8]。當DAC 的參考電壓為VREF+的時候,即3.3V,它的輸出電壓也是線性的,電壓范圍為0 ~VREF+。
DAC 配置如下:
1)開啟PA5 時鐘和ADC1 時鐘,設置PA5 為模擬輸入。
2)設置DAC 的工作模式,該部分設置包括:DAC 通道1 使能,DAC 通道1 輸出緩存關閉,不使用波形發生器,不使用硬件觸發等。
3)設置DAC 輸出值,配置好上述3 個步驟,DAC 就可以開始工作了,這里使用12 位的右對齊數據格式,在DAC 的輸出引腳(PA5)可以得到不同的電壓值。
ADC 時序圖如5 所示。STM32F407 具有12 位逐次趨近型模數轉換器(ADC)。它具有多達19 個復用通道,可測量來自16 個外部源、2 個內部源和V BAT 通道信號。這些通道的A/D 轉換可在單次、連續、掃描或不連續采樣模式下進行。ADC 的結果存儲在一個左對齊或者右對齊的16位數字寄存器中[9]。該系統設計采用STM32F407 內部的ADC 進行波形數據采集,配置如下:
1)開啟ADC1 時鐘和PA5 時鐘,設置PA5 為模擬輸入。
2) 配置ADC 輸入時鐘分頻,模式為獨立模式,以及設置ADC 的通用控制寄存器CCR 等。
在系統設計中,由于ADC 的總線時鐘為84M,但是當ADC 的采樣時鐘超過36M 時,采樣數據失真程度較大。因此,需要對該總線時鐘進行分頻處理。為了滿足最大時鐘頻率不超過36M 的要求,這里設置對ADC 總線時鐘進行4分頻,就能得到ADC 的采樣時鐘為24M。
3)對ADC 參數進行初始化處理并設置ADC1 的轉換分辨率、轉換方式、對齊方式,以及規則的序列等相關信息。
ADC 的轉換分辨率就是采樣數據的位數,可以進行多種位數的配置,但采樣周期與之息息相關,轉換分辨率較高時,采樣周期較長;反之,轉換分辨率較低時,采樣周期較短。本系統采用中斷觸發模式,邊沿觸發設置為上升沿觸發,這樣當模數轉換器檢測到外部脈沖信號的上升沿時,就會啟動ADC 進行一次采樣。在轉換結束后,便可以讀取ADC 規則數字寄存器中的值了。
A/D 轉換流程圖如圖6 所示。首先對AD 寄存器進行初始化處理,然后啟動A/D 轉換器,等待中斷服務,依次讀出A/D 轉換結果,最后停止A/D 轉換。

圖6 A/D轉換流程圖Fig.6 A/D Conversion flowchart
D/A 轉換流程如圖7 所示,首先啟動D/A 轉換器并完成參數配置,將所有波形點數據經過數模轉換后,并保存至文件中,最后停止D/A 轉換器。

圖7 D/A轉換流程圖Fig.7 D/A Conversion flowchart
上位機程序流程圖如圖8 所示,首先上位機配置并打開串口,設置串口的工作方式為默認方式,然后向下位機發送模擬信號數據,等待下位機接收與處理,最后完成波形顯示。

圖8 上位機程序流程圖Fig.8 Upper computer program flowchart
上位機軟件界面設計框圖如圖9 所示。本文基于Visual Studio 2022 開發環境,采用C#語言對任意信號發生器系統進行開發與設計[10-12],根據系統所需要的功能將上位機軟件界面區域劃分為以下部分:串口配置區域、波形繪制區域、波形調制區域、結果顯示區域、數據讀取區域。

圖9 上位機軟件界面設計框圖Fig.9 Design block diagram of upper computer software interface
串口配置區域負責配置串口端口、波特率、數據位、停止位、校驗位;波形繪制區域負責描繪輸出波形以及采集波形;波形調制區域負責波形的縮小、波形的放大以及波形的回放。結果顯示區域負責顯示輸出波形的頻率與幅度,數據讀取區域負責讀取輸出波形各點電壓值。
上位機軟件設計如圖10 所示。首先進行串口及軟件界面初始化,然后上位機產生任意波形數據并存入波形文件中,下位機接收到指令,對文件讀取并進行信號處理,完成波形輸出。再將輸出波形采集,并進行自適應處理,最后使用Chart 圖表繪制波形圖。

圖10 上位機軟件設計圖Fig.10 Upper computer software design diagram
通過實驗室內驗證該系統原理,充分證明了該系統的可靠性,從中得到以下結論:
1)該系統設計輸出任意信號穩定可靠,上位機軟件編程及控制能力良好,下位機執行狀況良好,滿足系統的自適應閉環控制。
2)上位機軟件測試圖如圖11 所示。該系統具有輸出任意信號波形的能力,通過上位機可以產生正弦波、三角波、方波以及用戶需要的任意波形數組,下位機完成信號接收與處理,輸出波形在上位機上顯示。

圖11 上位機軟件測試圖Fig.11 Upper computer software testing diagram
3)輸出信號電壓范圍是0V ~3.3V,電壓最大相對誤差不大于0.1%。
本設計不僅可以輸出任意信號,同時也具有輸出頻率穩定、輸出波形連續等優點。波形合成過程中存在一定的誤差,如幅度量化誤差,通過提出輸出波形自適應原理,對特征點電壓進行自適應處理,控制其電壓相對誤差在0.1%以內,觀察結果并發現波形質量明顯改善,精確度也有提高。該設計利用上位機軟件也可以對信號波形進行存儲與再現,也為測量結果進一步分析提供了方便。系統總體設計結構簡單,拓展性能好,易于操作,設計成本低,為模擬實際工程需要信號提供了一種輔助手段。