摘? 要:截至2019年,中國(guó)研制波形發(fā)生器已經(jīng)數(shù)十年,并取得了一些突破性的成果。就目前國(guó)內(nèi)的成熟產(chǎn)品來(lái)看,多為一些FPGA的信號(hào)波形,Agilent 33120A函數(shù)發(fā)生器等,但從軟件底層的一些技術(shù)層面上來(lái)說(shuō),我國(guó)數(shù)字式波形信號(hào)發(fā)生器與國(guó)外同類產(chǎn)品無(wú)論在種類和性能上都存在巨大的差距[1],特別是如今中美貿(mào)易摩擦不斷,在科技上我國(guó)被外國(guó)進(jìn)行技術(shù)封鎖,因此我們更要加緊研發(fā)此類產(chǎn)品,推動(dòng)我國(guó)科技進(jìn)步。本文主要是提出了波形信號(hào)發(fā)生器的設(shè)計(jì)理念和設(shè)計(jì)原理,重點(diǎn)講述了在KEIL環(huán)境下進(jìn)行編程,并在Proteus中進(jìn)行仿真。
關(guān)鍵詞:KEIL;Proteus;抗干擾;模擬仿真
中圖分類號(hào):TN792? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)15-0019-03
Simulation Design of Digital Waveform Signal Generator
WAGN Yanan
(College of Electrical Engineering and Automation,Henan Institute of Technology,Xinxiang? 453003,China)
Abstract:As of 2019,China has begun to develop waveform generators for decades and has achieved some breakthrough results. As far as the mature products in China are concerned,most of them are signal waveforms of some FPGA,Agilent 33120A function generators,etc.,but the technical level of the underlying software,There is a huge gap in performance on China’s digital waveform signal generators and similar products abroad are in the category[1],especially the China-USA trade friction continue. In technology,China is blocked by foreign countries. Therefore,we must step up research and development of such products and promote China’s scientific and technological progress. This paper mainly proposes the design concept and design principle of the waveform signal generator,focusing on programming in the KEIL environment and simulation in Proteus.
Keywords:KEIL;Proteus;anti-interference;analog simulation
0? 引? 言
2019年正處于電子信息技術(shù)爆炸式發(fā)展的新時(shí)代,數(shù)字信號(hào)源在測(cè)試器件領(lǐng)域擁有著十分重要的地位,作為通用的測(cè)試和測(cè)量裝置,數(shù)字式波形信號(hào)發(fā)生器不僅僅只是用來(lái)輸出簡(jiǎn)單的正弦波、矩形波等標(biāo)準(zhǔn)波形。多年來(lái),標(biāo)準(zhǔn)波形已經(jīng)從較為復(fù)雜的模擬信號(hào)振蕩電路發(fā)展到現(xiàn)今較為簡(jiǎn)單的數(shù)字化電路,本文主要講述其設(shè)計(jì)思想和原理,并通過(guò)編程進(jìn)行處理來(lái)改變其波形頻率及切換各種波形。
1? 設(shè)計(jì)思想
如果僅僅是使用單片機(jī)和D/A轉(zhuǎn)換器結(jié)合,讓單片機(jī)產(chǎn)生波形信號(hào),D/A輸出來(lái)改變調(diào)壓,雖然可行,但是產(chǎn)生信號(hào)會(huì)出現(xiàn)不穩(wěn)定的情況,甚至有可能產(chǎn)生不出來(lái)所需要的信號(hào),也有可能只產(chǎn)生半個(gè)信號(hào),這種情況,筆者在之前做的實(shí)驗(yàn)中都出現(xiàn)過(guò),筆者想讓波形信號(hào)發(fā)生器產(chǎn)生四種波形,可是無(wú)論怎么調(diào)試,都只能出現(xiàn)一個(gè)半波形,后來(lái)經(jīng)過(guò)查閱資料發(fā)現(xiàn)是設(shè)計(jì)方法的問(wèn)題,在此基礎(chǔ)上查閱相關(guān)文獻(xiàn),筆者又提出了兩種新的方法,更換為ARM芯片去實(shí)現(xiàn)更好的計(jì)算性能和穩(wěn)定性,或者采用單片機(jī)編程的方法去實(shí)現(xiàn),經(jīng)過(guò)綜合考量,若硬件平臺(tái)采用ARM Cortex-M3內(nèi)核的STM32微處理器作為主控芯片,并以此為基礎(chǔ)設(shè)計(jì)各個(gè)功能模塊的電路,不僅設(shè)計(jì)過(guò)于復(fù)雜,而且在軟硬件結(jié)合過(guò)程中,時(shí)常會(huì)出現(xiàn)不穩(wěn)定的情況,為了工業(yè)穩(wěn)定性和實(shí)用性,并讓成本處于可控范圍內(nèi)有利于生產(chǎn)推廣,本文選擇第二種方法,在硬件電路不變的情況下,通過(guò)編程的方法,提高數(shù)字信號(hào)的穩(wěn)定性,提高數(shù)字信號(hào)的準(zhǔn)確性。
2? 硬件設(shè)計(jì)
數(shù)字式波形信號(hào)發(fā)生器系統(tǒng)的主要功能是產(chǎn)生穩(wěn)定可靠的任意波形信號(hào),一個(gè)穩(wěn)定可靠簡(jiǎn)單方便的硬件平臺(tái)可以為數(shù)字化波形信號(hào)發(fā)生器的軟件設(shè)計(jì)工作打下堅(jiān)實(shí)的基礎(chǔ),首先來(lái)講下本文設(shè)計(jì)的如圖1所示的硬件原理框圖是如何來(lái)實(shí)現(xiàn)數(shù)字式波形信號(hào)發(fā)生器,當(dāng)系統(tǒng)經(jīng)過(guò)調(diào)試后運(yùn)轉(zhuǎn)起來(lái)的時(shí)候,單片機(jī)是整個(gè)波形發(fā)生器的大腦和中樞,在這里寫入已經(jīng)編寫和調(diào)試好的程序用來(lái)進(jìn)行各種功能的轉(zhuǎn)換和信號(hào)幅度的調(diào)節(jié),進(jìn)而產(chǎn)生各種各樣的信號(hào)波形;接著我們通過(guò)鍵盤電路進(jìn)行單片機(jī)的簡(jiǎn)單運(yùn)行操控,單片機(jī)通過(guò)顯示電路,顯示當(dāng)前我們的操作;當(dāng)數(shù)字信號(hào)到達(dá)D/A轉(zhuǎn)換電路時(shí),D/A轉(zhuǎn)換電路將其轉(zhuǎn)換成所需要的輸出波形(即模擬信號(hào)),接著通過(guò)放大電路對(duì)其進(jìn)行放大后進(jìn)行波形輸出;這里要提一下復(fù)位電路,如果系統(tǒng)出現(xiàn)問(wèn)題,我們可利用復(fù)位電路進(jìn)行初始化設(shè)置。
3? 軟件設(shè)計(jì)
數(shù)字式低頻信號(hào)發(fā)生器因其抗干擾能力強(qiáng)、設(shè)計(jì)靈活、可靠性好、節(jié)省硬件資源而逐漸受到關(guān)注。本次設(shè)計(jì)為說(shuō)明微機(jī)系統(tǒng)軟件的抗干擾方法以MCS-51單片機(jī)系統(tǒng)為例,在實(shí)際數(shù)字式波形信號(hào)發(fā)生器應(yīng)用環(huán)境中,針對(duì)本文所要探究的對(duì)象其軟件抗干擾的研究?jī)?nèi)容主要分為兩個(gè)大的方面:如何盡可能地消除模擬輸入信號(hào)的噪聲和在程序運(yùn)行出現(xiàn)錯(cuò)誤時(shí)觸發(fā)其主程序重新進(jìn)入正確的循環(huán)的方法。
3.1? 攔截技術(shù)
所謂的攔截技術(shù)是將系統(tǒng)中存在的錯(cuò)誤的程序指向指定位置并再次執(zhí)行錯(cuò)誤處理。通常,首先要做的就是合理布置軟件陷阱用于來(lái)攔截出錯(cuò)程序,然后通過(guò)分析主程序容易出錯(cuò)的位置將陷阱置于合理的位置。如果非程序區(qū)域一旦有出錯(cuò)的程序進(jìn)入,那么冗余指令將會(huì)無(wú)效從而保證主程序正常。一旦有錯(cuò)誤的程序進(jìn)入該區(qū)域,它就可以自動(dòng)合并。
用戶程序區(qū)域中的模塊之間的空閑單元也可以用作填充指令。這里,程序存儲(chǔ)器的容量限制是不可避免的因素,為了能及時(shí)地捕獲錯(cuò)誤的中斷信號(hào)我們?cè)O(shè)置一個(gè)觸發(fā)機(jī)制,在1K存儲(chǔ)空間內(nèi)把軟件陷阱設(shè)置在相應(yīng)的中斷程序中,如果由于干擾導(dǎo)致中斷,就會(huì)觸發(fā)此機(jī)制進(jìn)行攔截。
3.2? 軟件“看門狗”
“看門狗”技術(shù)其實(shí)是為了防止失去控制的程序進(jìn)入無(wú)限循環(huán)永不停止,如果遇到這種情況,目前來(lái)看我們常用“看門狗”技術(shù)來(lái)使程序脫離這個(gè)無(wú)限循環(huán)。直白地講就是連續(xù)不斷通過(guò)檢測(cè)在線程序的循環(huán)運(yùn)行的時(shí)間長(zhǎng)度來(lái)進(jìn)行判斷是否程序運(yùn)行正常,其判斷的依據(jù)就是查看循環(huán)的時(shí)間長(zhǎng)度,是否大于之前在系統(tǒng)內(nèi)部設(shè)置的最大程序循環(huán)運(yùn)行時(shí)間,如果進(jìn)入無(wú)限循環(huán),就要找到錯(cuò)誤位置的程序。
“看門狗”技術(shù)可以用硬件或者軟件實(shí)現(xiàn)。如果系統(tǒng)不能定期“喂狗”,硬件“看門狗”電路出現(xiàn)故障造成硬件干擾,在此處筆者提出一個(gè)解決辦法,通過(guò)設(shè)置T0,T1兩個(gè)定時(shí)器去循環(huán)監(jiān)視,從而構(gòu)成一個(gè)環(huán)形網(wǎng)絡(luò)進(jìn)行循環(huán)監(jiān)視保證系統(tǒng)可靠。為了提高系統(tǒng)可靠性和穩(wěn)定性應(yīng)常用“看門狗”軟件的環(huán)形結(jié)構(gòu)使其具有良好的抗干擾性能。假定T1定時(shí)器用于串行通信的測(cè)量和控制系統(tǒng)通??筛挠纱谥袛鄟?lái)進(jìn)行監(jiān)控而不是通過(guò)定時(shí)器T1進(jìn)行中斷的。此時(shí),看門狗軟件監(jiān)視的原理是:在主程序、T0和T1中斷服務(wù)程序中設(shè)置操作觀察變量用來(lái)對(duì)程序服務(wù)進(jìn)行檢測(cè)。如果檢測(cè)到觀測(cè)的變量不正常,例如添加1時(shí)并沒(méi)有執(zhí)行,則將其傳送到錯(cuò)誤處理程序以進(jìn)行下一次的程序故障排除[2]。
3.3? 系統(tǒng)故障處理、自恢復(fù)程序的設(shè)計(jì)
因掉電后復(fù)位和干擾復(fù)位都屬于單片機(jī)MCU系統(tǒng)異常復(fù)位,此時(shí)我們的主程序應(yīng)該能進(jìn)行故障的診斷并可以啟動(dòng)自恢復(fù)程序,但是需要進(jìn)行一定程度的識(shí)別。從基礎(chǔ)理論上來(lái)簡(jiǎn)單的說(shuō)明的話,硬件抗干擾和軟件抗干擾時(shí)需要相互配合、相互協(xié)調(diào)、主動(dòng)與被動(dòng)相結(jié)合,仔細(xì)徹底地分析干擾源同時(shí)一并考慮硬件與軟件抗干擾兩者的結(jié)合性,進(jìn)而對(duì)系統(tǒng)故障處理、自恢復(fù)程序進(jìn)行合理設(shè)計(jì)以完成系統(tǒng)監(jiān)控程序[3]。
4? 系統(tǒng)調(diào)試
數(shù)字式波形信號(hào)發(fā)生器系統(tǒng)的具體調(diào)試是系統(tǒng)設(shè)計(jì)的重要組成部分,如果調(diào)試的不好有可能出不來(lái)完整的波形,或者只出現(xiàn)半個(gè)波形的情況,筆者在具體調(diào)試中就遇到了相關(guān)的問(wèn)題,接下來(lái)就遇到的問(wèn)題進(jìn)行詳細(xì)講解。連接Proteus環(huán)境中的電路圖編寫程序并在Keil uvision2環(huán)境下運(yùn)行,然后與Proteus協(xié)調(diào)以調(diào)試整個(gè)硬件和軟件的功能性。
5? 信號(hào)頻率數(shù)據(jù)采集程序
該設(shè)計(jì)通過(guò)選擇單片機(jī)的數(shù)據(jù)端口將各種波形的數(shù)據(jù)發(fā)送到單片機(jī)的程序儲(chǔ)存器。并通過(guò)改變信號(hào)的頻率的十位數(shù)、百位數(shù)來(lái)改變相應(yīng)的頻率,然后計(jì)算出其初始值,并進(jìn)行中斷改變D/A轉(zhuǎn)換器的輸出的波形。利用8位D/A轉(zhuǎn)換器DAC08032在數(shù)模轉(zhuǎn)換模塊將8位數(shù)字量轉(zhuǎn)換為模擬量進(jìn)行輸出。
5.1? 產(chǎn)生鋸齒波的原理
首先,鋸齒波中的對(duì)角線連續(xù)依次遞進(jìn)增長(zhǎng),并在一個(gè)周期內(nèi)從最小值開(kāi)始逐漸增加,當(dāng)達(dá)到最大值時(shí),返回最小值,再?gòu)淖钚≈颠f進(jìn)到最大值,并且當(dāng)重復(fù)該循環(huán)時(shí),當(dāng)步長(zhǎng)間隔小時(shí),使用delay方法生成鋸齒波,設(shè)置參數(shù)S3讓它連續(xù)加1,直到它被添加到255,然后自動(dòng)返回0。連續(xù)重復(fù)上述過(guò)程以產(chǎn)生鋸齒波。
5.2? 輸出波形
鋸齒波仿真圖如圖2所示,鋸齒波程序如下:
case 3:
while(s1&&s2&&s3)
{
For(u=0;u<64;u++)
P2=juchi[u];
}
break;
6? 結(jié)? 論
本文主要講解了設(shè)計(jì)思想、鋸齒波波形產(chǎn)生的原理、抗干擾及軟硬件調(diào)試的相關(guān)過(guò)程,在信號(hào)頻率數(shù)據(jù)采集程序中做了Proteus仿真及其調(diào)用程序,實(shí)現(xiàn)了各個(gè)波形的切換,各種參數(shù)的設(shè)定,頻率增減等功能,通過(guò)上文我們可以得知采用單片機(jī)來(lái)設(shè)計(jì)數(shù)字式波形信號(hào)發(fā)生器是具有一定的性價(jià)比、可靠性、穩(wěn)定性,但在設(shè)計(jì)中要注意通過(guò)編程的方法,提高數(shù)字信號(hào)的穩(wěn)定性和準(zhǔn)確性。
參考文獻(xiàn):
[1] 陳平,張沛朋.基于VHDL多波形發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn) [J].濟(jì)源職業(yè)技術(shù)學(xué)院學(xué)報(bào),2010,9(2):17-20.
[2] 方玲.“看門狗”技術(shù)在單片機(jī)系統(tǒng)抗干擾設(shè)計(jì)中的應(yīng)用 [J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2005(4):90-92.
[3] 孫夢(mèng)穎,曹俊江.軟件抗干擾技術(shù)在單片機(jī)系統(tǒng)設(shè)計(jì)中的應(yīng)用 [J].信息與電腦(理論版),2017(11):38-39.
作者簡(jiǎn)介:王亞楠(1991.01-),男,漢族,河南平頂山人,教師,碩士,研究方向:電工理論與新技術(shù)。