介紹一種基于凌陽(yáng)公司SPCE061A單片機(jī)的多功能信號(hào)發(fā)生器,并對(duì)其信號(hào)產(chǎn)生原理,以及生成信號(hào)的數(shù)據(jù)計(jì)算進(jìn)行了詳細(xì)介紹.該信號(hào)發(fā)生器結(jié)構(gòu)簡(jiǎn)單,成本低,具有較高實(shí)用價(jià)值.
關(guān)鍵詞:信號(hào)發(fā)生器;單片機(jī);SPCE061A
Design and Implement of Multifunctional Signal Generator Based SPCE061A
ZHANG Licai
(College of Information and Control, Xian University of Architecture and Technology, Xian, 710055, China )
Abstract: In this paper, a kind of multifunctional signal generator based SPCE061A of Sunplus company is introduced in detail. Its work principle and the data calculation of signal is detailed introduction. The construction of the generator is simple, the cost is low, and have the higher and practical value.
Key words: signal generator; single-chip computer; SPCE061A
1 引言
信號(hào)發(fā)生器是科研及工程實(shí)踐中最重要的儀器之一,以往多用硬件組成,系統(tǒng)結(jié)構(gòu)比較復(fù)雜,可維護(hù)性和可操作性不佳.隨著計(jì)算機(jī)技術(shù)的發(fā)展,信號(hào)發(fā)生器的設(shè)計(jì)制作越來越多的是用計(jì)算機(jī)技術(shù),種類繁多,價(jià)格,性能差異很大.本位介紹一種基于凌陽(yáng)公司SPCE061A單片機(jī)設(shè)計(jì)的信號(hào)發(fā)生器,其特點(diǎn)是系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,成本低,使用方便,實(shí)用價(jià)值高.基本性能如下:
①可以產(chǎn)生正弦波,方波,三角波,鋸齒波等幾種周期性信號(hào);
②可以用鍵盤編輯生成正弦波,方波,三角波這三種信號(hào)的線性組合.
③增加外部存儲(chǔ)器后可以方便的是現(xiàn)信號(hào)存儲(chǔ)功能,即有記憶功能系統(tǒng)可以實(shí)現(xiàn)的功能;
④信號(hào)存儲(chǔ)功能可存儲(chǔ)掉電前用戶編輯的信號(hào)和設(shè)置;
⑤可實(shí)現(xiàn)用鍵盤編輯產(chǎn)生任意信號(hào).
2 硬件電路設(shè)計(jì)
2.1 SPCE061A[1]單片機(jī)簡(jiǎn)介
SPCE061A的結(jié)構(gòu)框圖如圖1所示.
SPCE061A的CPU為16位微處理器,其內(nèi)部含有8個(gè)寄存器,4個(gè)通用寄存器Rl~R4,1個(gè)程序計(jì)數(shù)器PC,1個(gè)堆棧指針SP,1個(gè)基址指針BP,1個(gè)段寄存器SR,通用寄存器R3和R4結(jié)合組成一個(gè)32位寄存器MR,MR可以作為乘法運(yùn)算和內(nèi)積運(yùn)算的目標(biāo)寄存器.
內(nèi)嵌2kB的SRAM和32kB閃存FLASH ROM.系統(tǒng)時(shí)鐘由鎖相環(huán)(PLL)振蕩器為系統(tǒng)提供一個(gè)實(shí)時(shí)時(shí)鐘的基頻(32768Hz),然后將基基頻進(jìn)行倍頻,調(diào)整至49.152MH2,40.96MHz,32.768MHz,24.576MHz或20.480MHz.系統(tǒng)默認(rèn)的PLL自激振蕩頻率為24.576MHz.系統(tǒng)時(shí)鐘頻率(Fosc)和CPU時(shí)鐘頻率(CPUCLK)可通過編程來控制.默認(rèn)的Fosc,CPUCLK分別為24.576MHz和Fosc/8.通過對(duì)32768Hz實(shí)時(shí)時(shí)鐘源分頻而提供了多種實(shí)時(shí)時(shí)鐘中斷源.
低電壓監(jiān)測(cè)和低電壓復(fù)位低電壓監(jiān)測(cè)功能可以提供系統(tǒng)內(nèi)電源電壓的使用情況.可通過編程來控制,系統(tǒng)默認(rèn)的電壓監(jiān)測(cè)低限為2.4V.4級(jí)電壓監(jiān)測(cè)低限:2.4V,2.8V,3.2V和3.6V.
SPCE061A具有2種中斷方式:快速中斷請(qǐng)求FIQ中斷和中斷請(qǐng)求IRQ中斷.中斷控制器可處理3種FIQ中斷和14種IRQ中斷,以及1個(gè)由指令BREAK控制的軟中斷.
系統(tǒng)具有2個(gè)可編程口:A口和B口.A口既是具有可編程喚醒功能的普通I/O口,又可與ADC的多路LINE IN輸入共用,B口除了具有普通I/O口的功能外,在特定的管腳上還可以完成一些特殊的功能.I/O口兼容5VTTL邏輯電平.
SPCE06lA提供2個(gè)16位的定時(shí)器/計(jì)數(shù)器:TimerA和TimerB.TimerA為通用計(jì)數(shù)器;TimerB為多功能計(jì)數(shù)器.時(shí)基信號(hào),來自于32768Hz實(shí)時(shí)時(shí)鐘,通過頻率選擇組合而成.此外,時(shí)基信號(hào)發(fā)生器還可以直接生成2Hz,4Hz,1024Hz,2048Hz以及4096Hz的時(shí)基信號(hào),為中斷系統(tǒng)提供各種實(shí)時(shí)中斷源信號(hào).
SPCE06lA有8個(gè)10位模數(shù)轉(zhuǎn)換通道,其中7個(gè)通道用于將模擬量信號(hào)轉(zhuǎn)換為數(shù)字量信號(hào),可直接通過引線(IOA[0~6])輸入.另外有一個(gè)通道只作為語(yǔ)音輸入通道,通過內(nèi)置有自動(dòng)增益控制放大器的麥克風(fēng)通道(MIC IN)輸入.SPCE06lA為音頻輸出提供了2個(gè)10位的數(shù)模轉(zhuǎn)換器(輸出為電流型),即DACl和DAC2.DACl,DAC2轉(zhuǎn)換輸出的模擬量電流信號(hào)分別通過AUDl和AUD2管腳輸出.
串行設(shè)備接口串行輸入輸出端口SIO提供了1個(gè)1位的串行接口,用于與其他設(shè)備進(jìn)行數(shù)據(jù)通訊.在SPCE061A內(nèi)通過IOB0和IOBl這2個(gè)端口實(shí)現(xiàn)與設(shè)備進(jìn)行串行數(shù)據(jù)交換功能.
更為可貴的是,廠家提供的開發(fā)環(huán)境支持C語(yǔ)言和匯編語(yǔ)言程序設(shè)計(jì),以及C語(yǔ)言和匯編語(yǔ)言的混合編程,大大方便了用戶的程序設(shè)計(jì),提高了系統(tǒng)開發(fā)效率,降低了開發(fā)成本.
3 信號(hào)發(fā)生的原理
3.1 信號(hào)發(fā)生電路原理
信號(hào)發(fā)生電路原理框圖如圖2所示.該信號(hào)發(fā)生器采用SPCE06lA芯片作為系統(tǒng)的CPU,配以少量的外圍接口芯片,構(gòu)成單片機(jī)的最小控制系統(tǒng).5V電源經(jīng)二極管降壓后得到3.6V電壓用作單片機(jī)電源.人機(jī)對(duì)話部分用A口組成鍵盤及數(shù)碼管顯示(圖中略去未畫);信號(hào)輸出部分用SPCE06lA提供的2個(gè)10位的數(shù)模轉(zhuǎn)換器,即DACl和DAC2,以及外部運(yùn)放電路組成.
、俣喙δ苄盘(hào)發(fā)生器可產(chǎn)生正弦波,方波,三角波和由用戶編輯的特定信號(hào).信號(hào)的發(fā)生方法有兩種:一是采用硬件,二是采用軟件.如果采用硬件方法.可以使頻率范圍做得很大,然而為了配合智能化設(shè)置,其幅度,頻率的調(diào)整,仍然要利用軟件驅(qū)動(dòng)I/O口進(jìn)行切換,對(duì)于信號(hào)發(fā)生器來說,輸出的信號(hào)種類較多,采用硬件的方法會(huì)使硬件電路相當(dāng)復(fù)雜,并且調(diào)試也很困難.故障率也會(huì)大大增加.本設(shè)計(jì)中采用軟,硬件相結(jié)合方法,可節(jié)約大量的硬件電路,信號(hào)的種類,頻率完全由軟件通過D/A變換來產(chǎn)生,幅度調(diào)整由可以用數(shù)字量控制的硬件電路實(shí)現(xiàn).在高頻端采用軟件壓縮的方法,可以得到較好的效果.
信號(hào)生成過程如下:
將生成信號(hào)的數(shù)據(jù)寫入DAC1后,數(shù)字量轉(zhuǎn)換為模擬量經(jīng)DAC1引線端輸出,輸出電流加在電阻R9上形成信號(hào)電壓,信號(hào)電壓經(jīng)運(yùn)放U2A組成的跟隨器輸入數(shù)字電位器DP1(MAX5400)[2]的高端,數(shù)字電位器DP1將分壓后信號(hào)輸入由運(yùn)放U2C組成的跟隨器后輸入由運(yùn)放U2D組成的運(yùn)算放大器放大后輸出.由于單片機(jī)的DAC只能輸出電流,在電阻R9上形成的信號(hào)電壓始終≥0,要輸出正反相信號(hào)需調(diào)整信號(hào)信號(hào)的電平,為此,利用DAC2輸出電流加在電阻R8上形成偏置電壓,經(jīng)由運(yùn)放U2A組成的反相器形成負(fù)偏置電壓(Vr)后,加在輸出放大器U2D輸入端,達(dá)到調(diào)整輸出信號(hào)電平的目的.
、谳敵鲂盘(hào)幅度的調(diào)節(jié)方式:在0~5V的(峰~峰值)范圍,要實(shí)現(xiàn)步進(jìn)0.1V,如果完全使用軟件實(shí)現(xiàn),失真會(huì)非常嚴(yán)重.因?yàn)?0位輸出按0.1V步進(jìn),則峰~峰值最小為0.1V;又因?yàn)镈/A數(shù)字最大為1023,輸出對(duì)應(yīng)5V,則0.1對(duì)應(yīng)數(shù)字20,在這個(gè)很小的范圍內(nèi),輸出各種信號(hào)失真會(huì)很大.為了減小失真度,將信號(hào)峰~峰值固定對(duì)應(yīng)數(shù)字1023,而其中參考電壓由DAC2提供,以實(shí)現(xiàn)步進(jìn)幅度為0.1V要求的硬件原理.低電壓輸出時(shí)信號(hào)時(shí),這里使用數(shù)字電位器DP1的是調(diào)整輸出信號(hào)的信號(hào),數(shù)字電位器DP1產(chǎn)生的偏差通過輸入DAC1的數(shù)字量進(jìn)行修正,為此需要檢測(cè)輸出信號(hào)與期望值的偏差,所以系統(tǒng)中將數(shù)字電位器分壓信號(hào)反饋給SPCE061A的模數(shù)轉(zhuǎn)換通道(IOA0),借以檢測(cè)輸出信號(hào)是否達(dá)到規(guī)定要求.實(shí)驗(yàn)測(cè)量信號(hào)電壓可實(shí)現(xiàn)0.02V幅度步進(jìn).信號(hào)電平調(diào)整原理如圖3所示.圖3(a)為數(shù)字電位器分壓信號(hào),圖3(b) DAC2提供的由反相器U2A形成的負(fù)偏置電壓(Vr),圖3(c)為輸出放大器U2D放大后的輸出信號(hào).系統(tǒng)中運(yùn)放采用一片TI公司的4運(yùn)放芯片TLC2254[3],該芯片為rail-to-rail型低功耗運(yùn)放,可以提供-5V~+5V擺幅輸出.
為使輸出信號(hào)得到進(jìn)一步改善,在輸出端再加1級(jí)RC低通濾波器,以實(shí)現(xiàn)輸出信號(hào)的平滑.
3.2 信號(hào)分析與計(jì)算
(1)正弦波信號(hào)計(jì)算
由于信號(hào)都是周期性的,所以只要設(shè)計(jì)出一個(gè)完整周期的正弦波.在信號(hào)輸出部分,采用了10位的D/A變換器,其最大輸出值為1023.為了與D/A變換器相適應(yīng),在2π一個(gè)周期內(nèi),將其輸出信號(hào)的幅值,角頻率量化,如圖3(a)所示,將正弦波向上平移,使其最低點(diǎn)為0,而且對(duì)于奇函數(shù),其傅里葉級(jí)數(shù)只能用正弦項(xiàng)表示,即有
f(k)=512sinkω0 (0≤k≤512)
y(k)=512+f(k)
式中ω0=2π/1024.由此可以求出1024個(gè)離散值,形成數(shù)據(jù)表,以備計(jì)算驅(qū)動(dòng)程序調(diào)用.
(3)三角波的計(jì)算
三角波信號(hào)形成原理如圖4所示,按DAC滿幅輸出計(jì)算三角波的上升沿和下降沿的N個(gè)DAC輸出的小階梯,由于階梯很小從宏觀上看它可以近似成三角波波信號(hào),如圖4中實(shí)線所畫的波形.階梯之間的時(shí)間間隔t1,t2由定時(shí)器TimerA 的定時(shí)值決定通過改變t1和t2的值來改變?nèi)遣ㄐ盘?hào)上升沿和下降沿的時(shí)間T1,T2從而改變?nèi)遣ㄐ盘?hào)的頻率.
(4)方波信號(hào)的計(jì)算
方波計(jì)算比較簡(jiǎn)單,只需根據(jù)給出高電平時(shí)間t1和低電平t2時(shí)間,分別用定時(shí)器計(jì)時(shí)即可實(shí)現(xiàn).
以上計(jì)算所的數(shù)據(jù)(10位有效數(shù)據(jù))在寫入DAC寄存器時(shí),要寫入DAC數(shù)據(jù)寄存器的高10位.因?yàn)?SPCE06lA的DAC數(shù)據(jù)寄存器中只有高10為有效,低6位無意義.
3.3 系統(tǒng)主要程序流程框圖
主程序流程如圖5所示.
4 結(jié)論
由于采用硬件數(shù)字電位器分壓和軟件修正的措施,結(jié)合具有較高性能價(jià)格比的單片機(jī)SPCE061A,使系統(tǒng)輸出的信號(hào)電壓的精度較高,而且簡(jiǎn)化了電路結(jié)構(gòu).此多功能信號(hào)發(fā)生器操作簡(jiǎn)單,顯示直觀,可同時(shí)查看信號(hào)類型,頻率和幅值.總體性能優(yōu)于傳統(tǒng)的信號(hào)發(fā)生器,有很好的發(fā)展前景.
另外,利用SPCE061A的串行接口可以方便地與計(jì)算機(jī)進(jìn)行通信,接收計(jì)算機(jī)的指令,進(jìn)而可以組成測(cè)控,測(cè)量一體化系統(tǒng).利用麥克風(fēng)通道(MIC IN)輸入語(yǔ)音信號(hào),DACl,DAC2輸出語(yǔ)音信號(hào),可實(shí)現(xiàn)簡(jiǎn)單的人機(jī)語(yǔ)音對(duì)話功能,使人機(jī)接口更加人性化.
參考文獻(xiàn)
1.北陽(yáng)電子內(nèi)部資料,2002,4
2.美信IC數(shù)據(jù)手冊(cè),www.maxim-ic.com.cn
3.德州儀器公司IC數(shù)據(jù)手冊(cè),www.ti.com.cn