一種高精度波形發(fā)生器的設(shè)計(jì)
關(guān)鍵詞:波形發(fā)生器 高精度 AD7846 DSP
引言
隨著電子技術(shù)的發(fā)展,波形發(fā)生器已經(jīng)廣泛的應(yīng)用在通信、控制、測(cè)量等各個(gè)領(lǐng)域。在很多地方,如測(cè)試測(cè)量領(lǐng)域,需要輸出的波形能夠精確地定位在某一整數(shù)值上,但通常由于ADC參考電平的限制,使之很難達(dá)到所需的精度,給系統(tǒng)的調(diào)試及軟件設(shè)計(jì)帶來(lái)諸多不便。本文采用了高精度的電壓參考芯片ADR434為模數(shù)變換器提供參考電平,使波形發(fā)生器的最低可調(diào)電壓達(dá)到125μV,為精確地輸出數(shù)據(jù)值電壓及其相應(yīng)波形提供了方便的硬件環(huán)境。本設(shè)計(jì)具有輸出精確,控制靈活方便等特點(diǎn)。
1 系統(tǒng)設(shè)計(jì)
本系統(tǒng)采用TI公司生產(chǎn)的TMS320VC54X系列DSP作為核心控制器件,并采用Cypress工司生產(chǎn)的CY7C1021V(64K×16位RAM)來(lái)擴(kuò)充DSP的外部數(shù)據(jù)存儲(chǔ)空間。在DSP與ADC及RAM之間的數(shù)據(jù)接口加入74LVC16245(16位總線變換器)以增加DSP的驅(qū)動(dòng)能力,并用來(lái)隔斷器件間的干擾。DSP與DAC之間的邏輯控制采用CPLD實(shí)現(xiàn),這樣可以方便系統(tǒng)的設(shè)計(jì)與調(diào)試,本文中采用的CPLD為Altera公司的EPM7064SLC84-10。
整個(gè)系統(tǒng)的方框圖如圖1所示。
2 器件簡(jiǎn)介
本系統(tǒng)所采用的數(shù)模轉(zhuǎn)換器為AD7846,它是美國(guó)AD(Analog Device)公司基于LC2MOS工藝生產(chǎn)的16位數(shù)模轉(zhuǎn)換器。它有VREF+和VREF-兩個(gè)參考電平輸入端以及一個(gè)片內(nèi)放大器。標(biāo)準(zhǔn)情況下可以將其配置為單極性輸出(0~+5V,0~+10V)或雙極性輸出(±5V,±10V)。當(dāng)然,改變VREF+VREF-兩個(gè)參考電平輸入端的電平,也可以改變其輸出的動(dòng)態(tài)范圍。如本文中的采用高精度電壓參考芯片AD434提供參考電平,使D/A的動(dòng)態(tài)范圍設(shè)置為±4.096V。
AD7846采用分段式結(jié)構(gòu)。DAC鎖存器的高4位選通16個(gè)電阻串中的一段,段的兩端接有運(yùn)放作為緩沖,運(yùn)放的輸出反饋至12位的模數(shù)變換電路,并由該電路提供后12位分辨率。這種結(jié)構(gòu)可以確保16位單調(diào)性,兩個(gè)緩沖運(yùn)放間輸入失調(diào)電壓的高度匹配還確保了優(yōu)良的積分非線性。
除了優(yōu)良的精度指標(biāo)外,AD7846與微處理器的連接也非常方便。它有16位數(shù)據(jù)I/O以及4根控制線(CS,R/W,LDAC以及CLR)。R/W與CS用來(lái)控制對(duì)I/O鎖存器的讀寫(xiě),LDAC信號(hào)用于多DAC系統(tǒng)中同步更新多片DAC數(shù)據(jù),CLR用于將DAC的輸出復(fù)位至0V。
3 AD7846參考電壓的設(shè)計(jì)
為了使系統(tǒng)的輸出波形在幅度上能夠精確到1mV,本文采用AD434為AD7846提供參考電壓。ADR434為AD公司生產(chǎn)的低噪聲、高精度、低溫漂的電壓參考芯片。它采用了AD公司的溫漂曲率修正專(zhuān)利技術(shù),可以使其電壓對(duì)溫度的非線性達(dá)到最小。二者的具體連接如圖2所示。
圖2所示的連接方式使AD7846工作在雙極性輸出狀態(tài)下。AD434為D/A提供+4.096V的參考電平,D/A根據(jù)此電平經(jīng)過(guò)雙極十六位線性分解,所得的最低可調(diào)電壓為4.096V/2 15=125μV。具體的編碼表如表1所列。
表1 AD7846編碼表
DAC鎖存器中的二進(jìn)制數(shù) |
模擬輸出VOUT/V |
1111 1111 1111 1111 | +4.096C(32767/32768)=+4.095875 |
1000 0000 0000 1000 | +1.096V(8/32768)=+0.001 |
1000 0000 0000 0001 | +4.096V(1/32768)=+0.000125 |
1000 0000 0000 0000 | +4.096V(0/32768)=0 |
0111 1111 1111 1111 | -4.096V(1/32768)=-0.000125 |
0000 0000 0000 0000 | -4.096V(32768/32768)=-4.096 |
4 邏輯控制及軟件實(shí)現(xiàn)
本文使用CPLD作為DSP控制D/A映射在DSP的I/O口,地址為4000H~7FFFH。AD7846一共有4根控制線,它們組成的控制邏輯如表2所列。
表2 AD7846控制邏輯真值表
CS | R/W | LDAC | CLR |
功 能 |
1 | X | X | X | 使DAC的I/O鎖存器呈高阻態(tài) |
0 | 0 | X | X | 數(shù)據(jù)(DB1~5DB0)裝入I/O鎖存器 |
0 | 1 | X | X | I/O鎖存器中的數(shù)據(jù)輸出到數(shù)據(jù)線上 |
X | X | 0 | 1 | I/O鎖存器中的數(shù)據(jù)裝入DAC鎖存器 |
X | 0 | X | 0 | DAC鎖存器裝入數(shù)據(jù)000...000 |
X | 1 | X | 0 | DAC鎖存器裝入數(shù)據(jù)100...000 |
CPLD中燒入的邏輯圖如圖3所示。
對(duì)于波形的產(chǎn)生,通常有兩種方法。一種方法為使用算法計(jì)算輸出波形某點(diǎn)的幅度編碼值(如正弦波可通過(guò)泰勒級(jí)數(shù)展開(kāi)得到),這種方法可直接精確地計(jì)算出每個(gè)角度的波形值,所占用的存儲(chǔ)空間小,但對(duì)于任意波形的輸出,所需的算法較為復(fù)雜,系統(tǒng)實(shí)時(shí)性也會(huì)受到影響。另一種方法為查表法,該方法可能需要占用較大的存儲(chǔ)空間,但軟件控制卻非常方便,實(shí)時(shí)性也更高。采用查表法的軟件控制可由如下代碼實(shí)現(xiàn)。
.mmregs
.global main
main:nop
ori:stm #SINtable,ar2 ;將數(shù)據(jù)表頭地址送入ar2
ld #13H,a ;循環(huán)輸出20個(gè)樣點(diǎn)值
JUMP:portw *ar2+,4000h ;AD4846被配置在I/O口的4000H~7FFFFH處
Rpt #1fffh ;改變r(jià)pt的值可以改變正弦波的頻率
Nop
Sub #1d,a
Bc JUMP,aneq
bori
SINtable ;正弦波幅度編碼表
.word 7FFFH .word 0A78DH .word 0CB3CH .word 0EF8DH
.word 0F9BCH .word 0FFFFH .word 0F9BCH .word 0E78DH
.word 0cB3CH .word 0A78DH .word 8000H .word 5872H
.word 34C3H .word 1872H .word 0643H .word 0000H
.word 0643H .word 1872H .word 34C3H .word 5872H
.end
該段程序可使AD7846輸出標(biāo)準(zhǔn)正弦波,幅度范圍為±4.096V,頻率可通過(guò)改變r(jià)pt的值加以調(diào)節(jié)。若提供大量采樣點(diǎn),可使其實(shí)時(shí)輸出高精度的任意波形。當(dāng)然,利用DSP強(qiáng)大的運(yùn)算處理能力,也可用軟件計(jì)算出所需波形的各點(diǎn)采樣值,這樣可以節(jié)省存儲(chǔ)空間,降低系統(tǒng)硬件成本。
結(jié)語(yǔ)
本系統(tǒng)已經(jīng)過(guò)實(shí)際測(cè)量,系統(tǒng)各部分工作正常,AD7846可精確穩(wěn)定地輸出所需波形。該方案不僅達(dá)到了很高的精度與系統(tǒng)實(shí)時(shí)性,還具有控制靈活方便等特點(diǎn),是一種很好的波形發(fā)生器。