尚建榮
摘 要:采用了直接數(shù)字頻率合成技術(shù)(DDS)和計(jì)算機(jī)控制技術(shù),選擇美國Analog Devices公司的高度集成DDS芯片AD9851和AT89S52單片機(jī)作為控制器件,設(shè)計(jì)了一種基于DDS的程控信號(hào)發(fā)生器。用C語言進(jìn)行了軟件應(yīng)用設(shè)計(jì)。實(shí)驗(yàn)結(jié)果表明,該信號(hào)發(fā)生器能較好地產(chǎn)生較高穩(wěn)定度的激勵(lì)信號(hào),具有較高的實(shí)用價(jià)值。
關(guān)鍵詞:DDS; 信號(hào)發(fā)生器; AD9851; AT89S52
中圖分類號(hào):TN87-34文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2011)09-0105-03
Design of Program-controlled Signal Generator Based on DDS
SHANG Jian-rong
(Xian University of Post and Telecommunications, Xian 710121, China)
Abstract: A program-controlled signal generator based on DDS was designed, which used direct digital frequency synthesis technology (DDS) and computer control technology, selected AD9851 and AT89S52 SCM of Analog Devices Company as control devices and realized software application design with C language. The signal generator can produce stable excitation signal and has high practical value.
Keywords: DDS; signal generator; AD9851; AT89S52
信號(hào)發(fā)生器是一種常用的信號(hào)源,廣泛應(yīng)用于電子電路、自動(dòng)控制和科學(xué)實(shí)驗(yàn)等領(lǐng)域。它是一種為電子測量和計(jì)量工作提供符合嚴(yán)格技術(shù)要求的電信號(hào)設(shè)備。信號(hào)的頻率和穩(wěn)定度是信號(hào)發(fā)生器的重要指標(biāo),一般的信號(hào)發(fā)生器很難滿足特定的要求,本文運(yùn)用計(jì)算機(jī)控制技術(shù)和直接數(shù)字頻率合成技術(shù)(Direct Digital Frequency Synthesis)開發(fā)出基于DDS的程控信號(hào)源[1]。
1 系統(tǒng)總體設(shè)計(jì)
AD9851可以與多種單片機(jī)連接,以完成數(shù)據(jù)傳遞與控制等。本設(shè)計(jì)采用Atmel的單片機(jī)AT89S52。
AD9851與AT89S52的接口電路如圖1所示。
該系統(tǒng)的硬件設(shè)計(jì)包含四個(gè)模塊:
(1) 數(shù)據(jù)傳送控制電路。數(shù)據(jù)傳送控制電路的主要功能是將AD9851所需要的頻率/相位控制字通過AT89S52微處理器以并行方式或串行方式輸入到AD9851的控制字寄存器[2]。根據(jù)電路設(shè)計(jì)的整體思路和資源配置,這個(gè)電路可采用并行輸入方式為AD9851輸送40位頻率/相位控制字。
(2) 鍵盤控制電路。利用鍵盤可以實(shí)現(xiàn)向單片機(jī)輸入數(shù)據(jù)、傳送命令、切換功能等。鍵盤可分為獨(dú)立式鍵盤和矩陣式鍵盤,本設(shè)計(jì)采用4×8矩陣式鍵盤。
(3) 顯示電路。鍵盤和LED顯示器是單片機(jī)應(yīng)用系統(tǒng)中實(shí)現(xiàn)人機(jī)對(duì)話的一種基本方式。在該頻率顯示系統(tǒng)的設(shè)計(jì)電路中,主要是由6個(gè)數(shù)碼管、移位寄存器和3個(gè)LED指示等組成。
(4) 單片機(jī)最小系統(tǒng)設(shè)計(jì)[3]。
圖1 系統(tǒng)硬件框圖
2 系統(tǒng)硬件電路設(shè)計(jì)
2.1 數(shù)據(jù)傳送控制電路
如前所述,AD9851所需要的40位頻率/相位控制字可通過AT89S52微處理器以并行方式或串行方式輸入到AD9851的控制字寄存器。AD9851的7腳(FQ_UD:頻率更新控制),8腳(W_CLK:字輸入時(shí)鐘端),和22腳(RESTET:主復(fù)位端)分別由AT89S52單片機(jī)的三個(gè)I/O口P2.1,P2.0和P2.7控制,以更新AD8951的頻率信號(hào),字輸入時(shí)鐘信號(hào)和主復(fù)位信號(hào),電路連接如圖1所示。
40位頻率/相位控制字是通過AD9851的8位數(shù)據(jù)輸入端(D0~D7)與AT89S52的P0口的8個(gè)引腳(P0.0~P0.7)連接,由AT89S52經(jīng)過P0口分5次傳送。
數(shù)據(jù)傳送過程如下:AD9851需要的40位頻率/相位控制字(W0,W1,W2,W3,W4)首先預(yù)存儲(chǔ)在AT89S52內(nèi)部指定的5個(gè)8位存儲(chǔ)器中。
(1) 將AT89S52的P2.1,P2.0和P2.7全部置零,準(zhǔn)備傳送數(shù)據(jù)。AD9851的22腳(RESTET:主復(fù)位端)為高電平有效,當(dāng)其為高電平時(shí)會(huì)將AD9851寄存器的所有數(shù)據(jù)清零。
(2) AD9851把W0數(shù)據(jù)傳送到P0口,使AD9851的8個(gè)數(shù)據(jù)輸入端(D0~D7)的數(shù)值賦為W0。
(3) 然后,將單片機(jī)的P2.0置為高電平“1”,再將其置“0”,經(jīng)過AD9851的字輸入時(shí)鐘脈沖W_CLK,W0的數(shù)值就進(jìn)入了AD9851的40位數(shù)據(jù)輸入寄存器。
(4) AD9851把W1數(shù)據(jù)傳送到P0口,將單片機(jī)的P2.0置為高電平“1”,再將其置“0”,經(jīng)過AD9851的字輸入時(shí)鐘脈沖W_CLK,W0的數(shù)值就進(jìn)入了AD9851的40位數(shù)據(jù)輸入寄存器。如此5次之后,W0~W4五組數(shù)據(jù)就全部傳送到AD9851的數(shù)據(jù)輸入寄存器之中。
(5) 再將單片機(jī)的P2.1置為高電平“1”,使得AD9851的頻率更新控制端(FQ_UD)經(jīng)過頻率更新控制信號(hào)脈沖,W0~W4共五組數(shù)據(jù)由AD9851的數(shù)據(jù)輸入寄存器輸入到AD9851的頻率/相位寄存器,刷新頻率/相位寄存器中的原有數(shù)值。由此,AD9851的21腳(IOUT端)就輸出由W0~W4決定的一定頻率和相位的正弦波[3]。
2.2 鍵盤控制電路
鍵盤是人工干預(yù)單片機(jī)進(jìn)行控制的重要手段,可以實(shí)現(xiàn)向單片機(jī)輸入數(shù)據(jù)、傳送命令、切換功能等。鍵盤可分為獨(dú)立式鍵盤和矩陣式鍵盤, 獨(dú)立式鍵盤結(jié)構(gòu)簡單,各個(gè)鍵彼此獨(dú)立,每個(gè)按鍵與一根數(shù)據(jù)輸入線相連。該結(jié)構(gòu)簡單,使用方便,但是,隨著按鍵數(shù)量的增加所占用的I/O口線也同時(shí)增加。
2.3 顯示電路
鍵盤和LED(Light Emitting Diode)顯示是單片機(jī)應(yīng)用系統(tǒng)實(shí)現(xiàn)人機(jī)對(duì)話的基本方式[4]。頻率顯示電路主要由移位寄存器74HC164、數(shù)碼管以及發(fā)光二極管組成,根據(jù)數(shù)碼管驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡單,顯示亮度高,缺點(diǎn)是占用I/O端口多。實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。
由于編程簡單,且I/O口可以滿足需要,本設(shè)計(jì)選用靜態(tài)顯示方式。在靜態(tài)的顯示方式下,每位數(shù)碼管的a~h端與一個(gè)8位的I/O口相連。當(dāng)要在某一個(gè)數(shù)碼管上顯示字符時(shí),只要從對(duì)應(yīng)的I/O口輸出并鎖存其顯示代碼即可。
AD9851輸出的正弦波最大頻率為70 MHz,分辨率為0.04 Hz,所以本設(shè)計(jì)選擇6個(gè)數(shù)碼管顯示,同時(shí)選擇6個(gè)移位寄存器74HC164。74HC164是8位串行輸入并行輸出移位寄存器,每接一片74HC164可以擴(kuò)展一個(gè)8位并行輸出口,作為LED顯示器的8根段選線。顯示電路因由6個(gè)數(shù)碼管組成,因此有6個(gè)74HC164級(jí)聯(lián)在一起,前一級(jí)74HC164的QH端同時(shí)作為下一級(jí)74HC164的串行數(shù)據(jù)輸入端。最左邊的74HC164的數(shù)據(jù)輸入端的數(shù)據(jù)是由AT89S52的P3.0腳模擬串行輸入數(shù)據(jù),所有的74HC164的同步時(shí)鐘輸入端(Clock)連接在一起,由單片機(jī)的P3.1腳模擬時(shí)鐘輸入[5]。
但是如果只有6個(gè)數(shù)碼管顯示是不夠的,因此,加入3個(gè)發(fā)光二極管,把輸出頻率數(shù)值分為Hz,kHz,MHz三個(gè)檔。3個(gè)發(fā)光二極管分別經(jīng)過200 Ω的電阻由單片機(jī)的P3.4,P3.5,P3.6 控制。例如,當(dāng)輸出頻率應(yīng)以kHz為單位時(shí),“kHz”發(fā)光二極管亮,則數(shù)碼管顯示的頻率數(shù)值是以kHz為單位的,這樣就能精確顯示0~70 MHz的頻率范圍。
2.4 AT89S52和AD9851最小應(yīng)用系統(tǒng)設(shè)計(jì)
單片機(jī)最小應(yīng)用系統(tǒng)是指沒有外圍器件及外設(shè)接口擴(kuò)展的單片機(jī)系統(tǒng)。它是單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)基礎(chǔ),包括最小系統(tǒng)結(jié)構(gòu)選擇、時(shí)鐘系統(tǒng)設(shè)計(jì)和復(fù)位系統(tǒng)設(shè)計(jì)。通常情況下,單片機(jī)最小應(yīng)用系統(tǒng)分三種結(jié)構(gòu):
(1) 總線型總線應(yīng)用的最小系統(tǒng)結(jié)構(gòu),該結(jié)構(gòu)由總線型單片機(jī)、復(fù)位電路、時(shí)鐘電路、I/O口及并行擴(kuò)展總線組成。
(2) 總線型非總線應(yīng)用的最小系統(tǒng)結(jié)構(gòu),是只有單片機(jī)、復(fù)位電路構(gòu)成的最簡單的電路,并行總線不用于外圍擴(kuò)展,可作為應(yīng)用系統(tǒng)的I/O口使用。
(3) 非總線型單片機(jī)的最小系統(tǒng)結(jié)構(gòu)。本設(shè)計(jì)中的電路連接圖(圖1)屬于總線型非總線應(yīng)用的最小系統(tǒng)結(jié)構(gòu)。
最小應(yīng)用系統(tǒng)設(shè)計(jì)中單片機(jī)的選擇一般遵循以下原則:
(1) 所選的單片機(jī)應(yīng)最大程度的滿足構(gòu)成單片機(jī)最小應(yīng)用系統(tǒng)的要求,即性能/配置比約為1。
(2) 根據(jù)產(chǎn)品要求,優(yōu)先選擇專業(yè)型單片機(jī)。最小系統(tǒng)的結(jié)構(gòu)與所選的單片機(jī)型號(hào)有關(guān)。
2.4.1 AT89S52 單片機(jī)的時(shí)鐘系統(tǒng)設(shè)計(jì)
AT89S52的振蕩器有兩種組成方式,即片內(nèi)振蕩器和片外振蕩器。本設(shè)計(jì)選擇片內(nèi)振蕩器的組成方式[6]。
2.4.2 AT89S52 單片機(jī)的復(fù)位系統(tǒng)設(shè)計(jì)
復(fù)位即是在復(fù)位端加不小于指定寬度的低電平(低電平復(fù)位)或高電平(高電平復(fù)位)信號(hào)使單片機(jī)的硬件處于初始狀態(tài)。單片機(jī)復(fù)位有低電平復(fù)位和高電平復(fù)位兩種,電平復(fù)位引腳定義為RST或RESET。
單片機(jī)的復(fù)位通常有上電復(fù)位,信號(hào)復(fù)位和運(yùn)行監(jiān)控復(fù)位三種方式。本電路設(shè)計(jì)采用按鍵電平復(fù)位方式,實(shí)際上屬于上電復(fù)位和按鍵手動(dòng)復(fù)位形式。
2.4.3 AD8951應(yīng)用設(shè)計(jì)
AD9851 可以產(chǎn)生一個(gè)頻譜純正,頻率和相位均可編程控制且穩(wěn)定度很好的模擬正弦波,AD9851的應(yīng)用設(shè)計(jì)圖如圖2所示。在電路中,40位的頻率/相位控制字由AT89S52的P0口輸入AD9851的數(shù)據(jù)輸入端(D0~D7),采用并行方式傳送數(shù)據(jù)。在AD9851中,為了避免要求高速參考時(shí)鐘振蕩器,在AD9851的內(nèi)部有一個(gè)6倍頻參考時(shí)鐘乘法器,這就減少了由于外部頻率源過高而產(chǎn)生的相位噪聲,外部只需30 MHz的有源振蕩器[2]。AD9851內(nèi)部的高速比較器可接收DAC外部的低通濾波器的輸出,產(chǎn)生一個(gè)低抖動(dòng)輸出脈沖,這個(gè)脈沖的頻率和相位可以通過程序來進(jìn)行調(diào)解。
圖2 AD9851應(yīng)用設(shè)計(jì)
3 DDS信號(hào)發(fā)生器軟件設(shè)計(jì)
3.1 總體流程圖
總體流程圖如圖3所示。
3.2 部分模塊子程序設(shè)計(jì)
數(shù)據(jù)傳送控制電路的程序設(shè)計(jì):
4 結(jié) 論
在現(xiàn)代科研,教學(xué)實(shí)驗(yàn),通信系統(tǒng)以及各種電子測量系統(tǒng)中,具有高精度,頻率可調(diào),高穩(wěn)定度,頻率輸出范圍大的信號(hào)源是非常重要的。 本文基于DDS技術(shù),選擇了Analog Devices 公司的高度集成芯片AD9851,采用AT89S52單片機(jī)作為控制[7],以此為基礎(chǔ),分別進(jìn)行了系統(tǒng)的硬件部分(包括數(shù)據(jù)傳送電路,鍵盤控制電路,頻率顯示電路和最小應(yīng)用系統(tǒng)設(shè)計(jì))和基于C語言的軟件設(shè)計(jì)[8],電路輸出波形具有高穩(wěn)定度,高精度,高分辨率,可靠性強(qiáng),頻率輸出范圍大且可調(diào),相位連續(xù)等優(yōu)點(diǎn)。
參考文獻(xiàn)
[1]鄭毅.一種高精度直接數(shù)字式頻率源的設(shè)計(jì)[J].電子機(jī)械工程,2003,19(4):61-64.
[2]葉心明,范征宇,張佩.一種新的任意可編輯合成信號(hào)源的設(shè)計(jì)[J].微型電腦應(yīng)用,2008,24(12):18-19.
[3]李群芳.單片機(jī)與接口技術(shù)[M].武漢:華中理工大學(xué)出版社,1998.
[4]邊春遠(yuǎn),王志強(qiáng).MCS-51單片機(jī)應(yīng)用開發(fā)實(shí)用子程序[M].北京:人民郵電出版社,2005.
[5]趙燕徐,鄭茹瓊,蔡順燕.基于AD9850的可編程信號(hào)源的設(shè)計(jì)[J].信息技術(shù),2010(7):116-118.
[6]孫文波.一種基于DDS的快速跳頻信號(hào)源系統(tǒng)設(shè)計(jì)[J].電子測量技術(shù),2007(9):137-139.
[7]楊秀增.基于FPGA和DDS的信號(hào)源設(shè)計(jì)[J].電子設(shè)計(jì)工程,2009(11):7-8,11.
[8]譚浩強(qiáng).C程序設(shè)計(jì)[M].2版.北京:清華大學(xué)出版社,2001.
[9]陳永泰.基于FPGA的DDS信號(hào)源設(shè)計(jì)[J].電子元器件應(yīng)用,2007(9):45-47.
[10]杜歡陽,安瑩.DDS器件AD9851在信號(hào)源中的應(yīng)用[J].現(xiàn)代電子技術(shù),2004,27(24):11-12.