<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AD9850的嵌入式信號(hào)源設(shè)計(jì)與實(shí)現(xiàn)

          基于AD9850的嵌入式信號(hào)源設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2009-09-21 來源:網(wǎng)絡(luò) 收藏

          (3)DAC的轉(zhuǎn)換誤差,即DAC中非線性引起的轉(zhuǎn)換誤差:DAC有限的分辨率、非線性特性以及轉(zhuǎn)換過程中出現(xiàn)的尖峰脈沖均會(huì)導(dǎo)致頻譜質(zhì)量變壞。因此,低通濾波器的使用是非常必要的,其性能的優(yōu)劣直接關(guān)系到整個(gè)DDS的技術(shù)指標(biāo)。
          低通濾波器可以分為巴特沃什濾波、切比雪夫?yàn)V波、貝賽爾濾波和橢圓濾波等。巴特沃什低通濾波器通帶和阻帶都是平坦的,但是其過渡帶太過平緩;切比雪夫低通濾波器的通帶是等波紋抖動(dòng)的,阻帶是平坦的,過渡帶比巴特沃什稍陡;貝賽爾低通濾波器和切比雪夫低通剛好相反,通帶平坦,阻帶是等波紋抖動(dòng)的;橢圓低通濾波器的通帶和阻帶都是抖動(dòng)的。但是其過渡帶下降迅速,過渡帶很窄。在該系統(tǒng)中,為了使輸出信號(hào)頻率最高10 MHz時(shí)能夠最低程度地降低外部系統(tǒng)時(shí)鐘30 MHz的干擾,采用具有較窄過渡帶特性的橢圓濾波器,并采用7階橢圓低通濾波。根據(jù)系統(tǒng)要求,輸出信號(hào)的頻率可達(dá)10 MHz,設(shè)定其通帶為10 MHz,且7階濾波具有下降速度更快的過渡帶,可以有效地濾除10 MHz以上的高頻干擾。考慮到實(shí)際的橢圓濾波器與理論分析是有所不同的,在此使用Multisim 9經(jīng)行仿真后得出橢圓濾波器的具體參數(shù)。橢圓低通濾波器的電路圖如圖5所示。

          本文引用地址:http://www.ex-cimer.com/article/152343.htm

          2 系統(tǒng)軟件
          軟件主要分為菜單操作和頻率控制值計(jì)算兩部分。在系統(tǒng)中通過外接4×4軟鍵盤輸入設(shè)定頻率和調(diào)整步進(jìn)。一共16個(gè)按鍵,不同的按鍵代表著不同的數(shù)字和功能,除了正常的10個(gè)數(shù)字鍵0~9外,為了方便頻率值的輸入,還設(shè)計(jì)了菜單鍵、刪除鍵、步進(jìn)一、步進(jìn)十、確認(rèn)鍵、輸出鍵等功能鍵。通過輸入0~9數(shù)字鍵,輸入設(shè)定頻率;按下確認(rèn)鍵,輸出相應(yīng)頻率的波形;按下菜單鍵,可根據(jù)需要按下1,2,3數(shù)字鍵,分別選擇1 Hz,10 Hz,100 Hz三個(gè)檔位的頻率步進(jìn);按下確認(rèn)鍵,此后按下步進(jìn)+、步進(jìn)一即可對(duì)輸出信號(hào)進(jìn)行頻率的步進(jìn)調(diào)整;欲重新設(shè)定頻率只需按下刪除鍵,再次輸入預(yù)設(shè)的頻率即可。
          該系統(tǒng)中單片機(jī)與采用串行通信方式連接。其中,頻率控制字的計(jì)算:的時(shí)鐘信號(hào)采用30 MHz,根據(jù)式(1)得:


          式中:fo為從鍵盤上輸入的頻率值。式(3)計(jì)算的結(jié)果在不影響精度的情況下舍去小數(shù)部分,轉(zhuǎn)換為32位的頻率控制字。AD9850有40位控制字,32位用于頻率控制,5位用于相位控制,1位用于電源休眠(PowerDown)控制,2位用于選擇工作方式。這40位控制字可通過并行方式或串行方式輸入到AD9850。實(shí)際應(yīng)用中,工作方式選擇位通常設(shè)定成00,該系統(tǒng)中AD9850的40位控制字高8位設(shè)置為00H。串行接口方式下需滿足的時(shí)序關(guān)系為:在W_CLK的上升沿,引腳D7上的數(shù)據(jù)自最低有效位開始逐位串行移人輸入寄存器,40位數(shù)據(jù)輸入結(jié)束后,任何W_CLK上升沿到來,都會(huì)造成數(shù)據(jù)順序移出并導(dǎo)致原來數(shù)據(jù)無效。此時(shí),F(xiàn)Q_UD端的上升沿將40位數(shù)據(jù)裝入頻率/相位控制寄存器,更新芯片的輸出頻率和相位,同時(shí)把地址指針復(fù)位到第一個(gè)輸入寄存器,等待下一組新數(shù)據(jù)的寫入。AD9850的控制字串行輸入時(shí)序圖如圖6所示。

          該系統(tǒng)的總程序框圖如圖7所示,程序開始后,運(yùn)行初始化程序,包括初始化單片機(jī)MSP430F149、初始化AD9850、初始化液晶顯示模塊1602等。然后掃描鍵盤狀態(tài),檢查到有鍵按下就運(yùn)行鍵值處理程序,對(duì)按鍵值進(jìn)行查表處理,之后執(zhí)行相應(yīng)的子程序。輸入的信號(hào)相關(guān)信息通過運(yùn)行液晶顯示程序,在LCD上顯示正確的輸入數(shù)據(jù)和提示字符。在按下確認(rèn)鍵后,MSP430F149計(jì)算出所需信號(hào)的數(shù)據(jù)或控制命令,將其傳送到AD9850,輸出最終信號(hào)。

          3 系統(tǒng)測(cè)試與結(jié)果分析
          為了檢驗(yàn)本系統(tǒng)的實(shí)際性能,在完成所有設(shè)計(jì)后,使用HDSTO22M型示波表對(duì)該系統(tǒng)進(jìn)行實(shí)測(cè),經(jīng)過實(shí)驗(yàn)測(cè)試系統(tǒng)達(dá)到下列性能指標(biāo):輸出信號(hào)頻率范圍為1 Hz~10 MHz;步進(jìn)調(diào)整為1 Hz,10 Hz,100 Hz三檔步進(jìn);失真度無明顯失真;輸出電壓峰峰值為1~10 V;頻率穩(wěn)定度優(yōu)于10-4。

          4 結(jié) 語
          在此給出一種DDS芯片AD9850和MSP430F149單片機(jī)的設(shè)計(jì)方法,該可輸出頻率范圍為1 Hz~10 MHz的正弦波和方波,且具有頻率設(shè)定1 Hz,10 Hz,100 Hz多檔步進(jìn)調(diào)整和幅度調(diào)節(jié)的功能??梢酝ㄟ^按鍵進(jìn)行頻率值設(shè)定,并有LCD顯示波形的頻率等信息,經(jīng)實(shí)驗(yàn)測(cè)試,在1 Hz~10 MHz頻率范圍內(nèi),得到的正弦波方波信號(hào)具有頻率穩(wěn)定性好,頻率準(zhǔn)確度高及頻率分辨率高等特點(diǎn)。
          該設(shè)計(jì)的創(chuàng)新點(diǎn)在于:將DDS芯片AD9850與超低功耗的MSP430F149單片機(jī)結(jié)合,提出了具有較高性價(jià)比和集成度、低功耗的設(shè)計(jì)方案;并且AD9850與MSP430F149采用串行連接方式,節(jié)省單片機(jī)的I/O資源,便于系統(tǒng)的功能擴(kuò)展和產(chǎn)品升級(jí)。該信號(hào)源具有精度高,頻率范圍寬,頻率輸出穩(wěn)定,體積小,功耗低,控制靈活方便的特點(diǎn),可廣泛應(yīng)用于日常教學(xué)和科研工作中,如果再經(jīng)過結(jié)構(gòu)優(yōu)化,將具有良好的市場(chǎng)前景。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
          數(shù)字濾波器相關(guān)文章:數(shù)字濾波器原理

          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();