AD7008構(gòu)成的可程控信號(hào)源設(shè)計(jì)
摘要:AD7008是ADI公司生產(chǎn)的高集成度的DDS頻率合成器,利用AD7008和AD7520可構(gòu)成極易控制的程控信號(hào)源。文中詳細(xì)介紹了AD7008的原理結(jié)構(gòu)以及由其構(gòu)成的程控信號(hào)源的硬件電路及軟件編程。
本文引用地址:http://m.butianyuan.cn/article/242232.htm關(guān)鍵詞:程控信號(hào)源 直接數(shù)字合成(DDS) AD7008 AD7520
在一些電子裝備的電路板故障檢測(cè)儀中,往往需要頻率、幅度都能由計(jì)算機(jī)自動(dòng)調(diào)節(jié)的信號(hào)源。采用諸如MAX038信號(hào)發(fā)生器芯片外加電阻及切換開(kāi)關(guān)等器件雖然也能調(diào)節(jié)頻率和幅度,但這種調(diào)節(jié)是離散的,且電路復(fù)雜,使用不方便。而采用直接數(shù)字合成芯片AD7008及外加D/A轉(zhuǎn)換芯片AD7520構(gòu)成的可控信號(hào)源,可生產(chǎn)正弦波、調(diào)頻波、調(diào)幅波及方波等,并且其信號(hào)的頻率和幅度可由微機(jī)來(lái)精確控制,調(diào)節(jié)非常方便。
1 硬件電路構(gòu)成
本信號(hào)源設(shè)計(jì)為插入PC機(jī)中的插卡式結(jié)構(gòu)。由PC機(jī)直接控制信號(hào)的頻率和幅度,不需要人工調(diào)節(jié),也不需外加電源。其電路框圖如圖1所示。
該電路采用直接數(shù)字合成芯片AD7008產(chǎn)生所需頻率的正弦或調(diào)頻調(diào)幅信號(hào),其輸出信號(hào)分兩路:一路經(jīng)過(guò)74LS14整形輸出一個(gè)方波信號(hào);另一路送到AD7520芯片,由AD7520構(gòu)成的數(shù)控衰減電路控制輸出信號(hào)的幅度,最后輸出一個(gè)頻率和幅度都可控的信號(hào)。下面介紹頻率控制和幅度控制的實(shí)現(xiàn)方法。
1.1 頻率控制
AD7008是ADI公司采用先進(jìn)的直接數(shù)字合成(DDS)技術(shù),推出的高集成度DDS頻率合成器。圖2所示為其功能框圖,它內(nèi)部包括可編程DDS系統(tǒng)、高性能10位DAC、與微機(jī)的串行和并行接口以及控制電路等,能實(shí)現(xiàn)全數(shù)字編程控制的頻率合成和時(shí)鐘發(fā)生器。如果接上精密時(shí)鐘源,AD7008即可產(chǎn)生一個(gè)頻率和相位都可編程控制模擬正弦波輸出。根據(jù)需要還可以對(duì)此信號(hào)進(jìn)行調(diào)頻、調(diào)相或調(diào)幅控制。此輸出的信號(hào)可直接用作頻率信號(hào)源或轉(zhuǎn)換方波以作時(shí)鐘輸出。AD7008接口控制簡(jiǎn)單,可以用8位或16位并行口或單行口直接輸入頻率、相位、以及調(diào)幅幅度等控制數(shù)據(jù)。32位頻率控制字在20MHz時(shí)鐘時(shí)的輸出頻率分辨率可達(dá)0.047Hz,最大輸出頻率可達(dá)5MHz,器件采用CMOS低功耗工藝,不需信號(hào)輸出時(shí)還可通過(guò)硬件或軟件設(shè)置為低功耗方式。其最大輸出電壓、電流值分別為1V、20mA,采用單一正5V電源電及44腳PLCC封裝形式。
AD7008包括三個(gè)主要部分:第一部分是由一個(gè)32位相位累加器、一個(gè)余弦/正弦表、一個(gè)1位的D/A轉(zhuǎn)換器和兩個(gè)頻率、一個(gè)相位和兩個(gè)幅度調(diào)節(jié)寄存器組成的可編程DDS數(shù)字合成系統(tǒng);第二部分是用于設(shè)置AD7008的工作模式的一個(gè)命令寄存器和幅度調(diào)制單元;第三部分是并、串行接口及控制電路,用來(lái)和微機(jī)接口,以實(shí)現(xiàn)對(duì)頻率、相位和幅度調(diào)節(jié)寄存器的寫入修改。
圖3是AD7008和微機(jī)接口的實(shí)現(xiàn)電路,該接口采用并行8位接口方式。74LS273鎖存器的輸出和AD7008的TC0~TC3、RESET、LOAD、SLEEP和FSELECT等相連,用于實(shí)現(xiàn)對(duì)AD7008的控制。當(dāng)SLESECT=0時(shí),頻率輸出決定于FREQ0寄存器的值;當(dāng)SLESECT=1時(shí),頻率輸出決定于FREQ1寄存器的值;TC3~TC0為傳輸?shù)刂房刂瓶偩€,用來(lái)決定數(shù)據(jù)傳輸過(guò)程中的使用的目的和源寄存器。LOAD是數(shù)據(jù)裝載允許腳,只有當(dāng)它為高電平時(shí),由TC3~TC0地址總線選中的寄存器才允許寫入數(shù)據(jù)。SLEEP是低功耗休眠控制腳,它為高電平時(shí),AD7008進(jìn)入低功耗休眠方式。此時(shí)內(nèi)部時(shí)鐘被禁止,同時(shí)關(guān)閉DAC的電流源。RESET是寄存器復(fù)位腳,當(dāng)它為高電平時(shí),將所有寄存器復(fù)位為零,同時(shí)停止輸出信號(hào)。由DAC轉(zhuǎn)換輸出(IOUT)的電流信號(hào)經(jīng)過(guò)一個(gè)電阻轉(zhuǎn)換成電壓信號(hào)后再通過(guò)一級(jí)運(yùn)放組成的射隨器和低通濾波器即可控制信號(hào)的頻率。相位調(diào)節(jié)和幅度調(diào)節(jié)控制也與此類似,只要將相位調(diào)節(jié)值和幅度調(diào)節(jié)值送入相應(yīng)的寄存器即可輸出正弦或調(diào)頻調(diào)幅信號(hào)。信號(hào)的頻率由FREQ0或FREQ1決定,F(xiàn)REQ0和FREQ1的字長(zhǎng)是32位,通過(guò)8位并行口分4次輸入,先送最高位字節(jié),再依次輸入其它字節(jié),最后送最低位字節(jié)。FREQ0或FREQ1的值即為頻率指數(shù)。本設(shè)計(jì)采用的時(shí)鐘為20MHz,字長(zhǎng)為32位。因此:最小頻率為:
fL=20×10 6 / 2 32
最大頻率為:
fM=1/4T=FCLK/4=20M/4=5MHz
fi=KF2=K×20 6 /2 32
因而:K=f0×2 32/20
將算出的K值取整后通過(guò)并行8位口送入AD7008的FREQ0或FREQ1中,即可控制信號(hào)的頻率。相位調(diào)節(jié)和幅度調(diào)節(jié)控制也與此類似,只要將相位調(diào)節(jié)值和幅度調(diào)節(jié)值送入相應(yīng)的寄存器即可。
1.2 幅度控制
AD7520是一種廉價(jià)、單片10位16引腳雙列直插式封裝的乘法型/數(shù)轉(zhuǎn)換器。該器件采用先進(jìn)的CMOS和薄膜工藝,可提供高達(dá)10位的精度,并與TTL/DTL/CMOS電平兼容。AD7520在5V~15V電源下工作,包括梯形網(wǎng)絡(luò)在內(nèi)的功耗為20mW。 采用AD7520構(gòu)成的數(shù)字控制衰減器電路參見(jiàn)圖3,其輸入電壓從AD7520的參考源輸入端加入。
根據(jù)圖3中AD7520部分的電路設(shè)計(jì),LF356的3腳電壓的表達(dá)式如下:
Io1=IREF(D12 -1+D22 -2+…+D102 -10)
將IREF=VREF/R,VREF=VIN代入,則:
Io1=VIN/R(D12 -1+D22 -2+…+D102 -10)
通過(guò)運(yùn)算放大器將輸入電流轉(zhuǎn)換成電壓輸出,則有:
VOUT=Io1R
將Io1表達(dá)式代入,得:
VOUT=-VIN(D12 -1+D2 2-2+…+D102 -10)
由于(D12 -1+D22 -2+…D102 -101)
所以輸入電壓通過(guò)該電路后,其輸出受到由數(shù)字控制的衰減。
改變D1~D10的值時(shí),輸出電壓也隨之變化。最大輸出電壓接近于輸入電壓,最小輸出電壓等于輸入電壓的1024分之一(衰減可達(dá)60dB)。本電路采用74LS273鎖存器的輸出來(lái)控制AD7520的衰減量、因此由計(jì)算機(jī)寫入74LS273內(nèi)的不同值就可控制衰減量。
2 軟件設(shè)計(jì)
本信號(hào)源屬于測(cè)試儀的一部分,其中也包括軟件,稱為信號(hào)源模塊。本模塊采用C語(yǔ)言設(shè)計(jì),在BC3.1環(huán)境下調(diào)試通過(guò)。圖4是程序框圖。具體的程序清單如下:
/*—systen(“send1.exePORTBYTEBY”):—*/
#includestdio.h>
#includebios.h>
#includeio.h>
#includedos.h>
#includeconio.h>
void signal(int frlb4,int fr1b3,int fr1b2,int fr1b1,int am1-2,int am1-8);
void sglres();
void main()
{
signal(30000,0x3ff);
sglres();
adjust(0x10);
}
void sglres()/*ad7008芯片復(fù)位控制*/
{
outport(0x212,0xff);
outport(0x212,0xff);
outport(0x212,0xff);
outport(0x212,0x00);
outport(0x212,0x00);
outport(0x212,0x00);
}
void signal(unsigned long f-value,unsigned int am-value)/*設(shè)置AD7008輸出信號(hào)頻率及AD7520對(duì)信號(hào)的衰減量*/
{
unsigned int fr1b4,rf1b3,fr1b2,fr1b1,am1-2,am1-8;
unsigned long k1,k2,k3;
k1=(f-value*0x800000)/10000000;
fr1b=int(k1/0x1000000));
k2=k1-fr1b4*(0x1000000);
fr1b3=int(k2/0x10000)
k3=k2-fr1b3*(0x10000);
fr1b2-int(k3/(0x100));
fr1b1=k3=fr1b2*(0x100);
if am-value>0x3ff am-value=0x3ff;
if am-value0x00 am-value=0x00;
am1-2=int(am-value/(0x100));
am1-8=am-value-am1-2*(0x100);
sglres();
outport(0x212,0xff);
outport(0x212,0x00);
outport(0x216,0x00);
outport(0x212,0x04);
outport(0x216,fr1b4);
outport(0x216,fr1b3);
outport(0x216,fr1b2);
outport(0x216,fr1b1);
outport(0x212,0x80);
outport(0x212,0x84);
outport(0x212,0x00);
outport(0x212,am1-2);
outport(0x218,am1-8);
}
3 電路板設(shè)計(jì)及調(diào)試注意事項(xiàng)
本信號(hào)源設(shè)計(jì)為插入PC機(jī)ISO槽結(jié)構(gòu),信號(hào)板所需的+5V模擬電源和-5V模擬電源由PC機(jī)中的+12V和-12V電源通過(guò)7805芯片穩(wěn)壓后得到。電源濾波電容選用鉭電容和0.1μF高頻小獨(dú)石電容并聯(lián)。因而頻率和幅度尤其是幅度變化范圍較大,其最小值可達(dá)2mV。為減小數(shù)字部分模擬部分的干擾,PCB板最好采用四層板,中間兩層為模擬地和數(shù)字地,并且模擬和數(shù)字地插槽附近的一點(diǎn)相聯(lián)。芯片上的數(shù)字電源和模擬電源、數(shù)字地和模擬地應(yīng)嚴(yán)格分析,芯片所有的電源端必需加0.1μF的高頻云耦電容。另外,用示波器測(cè)試時(shí)要特別注意示波器的接地腳必需和PCB板上的地腳后可靠連接才能進(jìn)行測(cè)試。如果在測(cè)試中示波器的接地腳脫落,則極易造成芯片損壞。本信號(hào)源已應(yīng)用在某聲納電路檢測(cè)與維修儀器中,使用效果很好,頻率和幅度控制都非常方便。
評(píng)論