亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于單片機的DDS算法的實現(xiàn)

        2014-04-29 00:44:03付宗見江興盟
        電子世界 2014年17期
        關(guān)鍵詞:單片機

        付宗見 江興盟

        【摘要】通常DDS信號發(fā)生器設(shè)計主要分為兩類,一類是采用FPGA設(shè)計,另一類采用單片機+DDS專用芯片實現(xiàn)。本文針對頻率及要求較低的應(yīng)用,提出一種更為簡單的解決方案,即通過單片機編程完成DDS算法,從而實現(xiàn)信號發(fā)生器功能。

        【關(guān)鍵詞】單片機;DDS;D/A轉(zhuǎn)換

        1.引言

        近年來,直接數(shù)字頻率合成(DDS)信號發(fā)生器,因具有輸出信號頻率穩(wěn)定、分辨率高、相位噪聲低等優(yōu)點,逐漸取代了傳統(tǒng)的基于LC或RC振蕩電路的信號發(fā)生器,成為當(dāng)前信號發(fā)生器的主流。

        DDS信號發(fā)生器的設(shè)計核心在于DDS算法的實現(xiàn),當(dāng)前主流的設(shè)計方案主要有兩種:

        (1)采用FPGA實現(xiàn)DDS算法,即通過HDL語言自行設(shè)計DDS算法,產(chǎn)生波形數(shù)字序列,F(xiàn)PGA輸出驅(qū)動D/A轉(zhuǎn)換器,實現(xiàn)信號輸出。

        (2)采用專用DDS芯片實現(xiàn),單片機只需改寫DDS芯片相關(guān)寄存器,即可輸出相應(yīng)頻率及波形的模擬信號。整個芯片的DDS算法及D/A轉(zhuǎn)換都是出廠時已設(shè)計好,無需干預(yù)。

        針對一些非主流的應(yīng)用,比如對輸出頻率和設(shè)計要求都較低時,有沒有更簡單的解決方案?

        本文將討論如何采用單片機代替FPGA及DDS專用芯片,采用C語言編程完成DDS算法,從而實現(xiàn)單片機完成DDS信號發(fā)生器的簡單設(shè)計方案。

        2.DDS基本原理

        直接數(shù)字合成(Direct Digital Synthesis、DDS)是一種從相位出發(fā)的新的頻率合成技術(shù)和信號產(chǎn)生的方法。

        DDS主要由:相位累加器、正弦波形存儲器(ROM)、數(shù)模轉(zhuǎn)換器(D/A轉(zhuǎn)換)、低通濾波器、和時鐘五部分組成。如圖1所示。

        圖1 DDS原理框圖

        相位累加器本質(zhì)上是一個計數(shù)器。在時鐘脈沖的作用下,將頻率控制字(FTW)的相位增量M累加一次。累加器如果溢出,除溢出位外,累加器保留其它的數(shù)字位。

        相位累加器輸出數(shù)據(jù)作為地址,查詢正弦查詢表,將取出的正弦數(shù)據(jù)通過D/A轉(zhuǎn)換器輸出模擬信號。

        模擬信號再通過一個低通濾波器輸出純凈的正弦波信號[1]。

        DDS算法包括了時鐘、相位累加器、正弦查詢部分,基本原理如圖2所示:

        圖2 DDS算法示意圖

        如圖2所示,采用32位的相位累加器,可輸出為數(shù)據(jù)范圍為0~(232-1)。取相位累加器的后8位作為正弦查詢表的地址。正弦表存放一個周期的正弦波數(shù)據(jù),由于采用于8位的D/A轉(zhuǎn)換器,正弦表采用采用256個點來描述一個完整的正弦波數(shù)據(jù)。

        正弦表的輸出數(shù)據(jù)為fout,其輸出頻率由“頻率控制字FTW”進行調(diào)節(jié):

        fout=fclk/2MFTW ? ? ? ? ? ? ? ? ? (式1)

        式中:

        fout—輸出頻率

        fclk—時鐘頻率

        M—相位累加器位數(shù)

        FTW—頻率控制字

        最小頻率分辨率:

        fmin=fclk/2M ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(式2)

        式中:

        fmin—輸出頻率

        fclk—時鐘頻率

        M—相位累加器位數(shù)

        式中M為相位累加器的位數(shù),本設(shè)計中采用32位相位累加器。

        FTW是頻率步進控制字,F(xiàn)TW的取值決定了輸出信號的頻率。

        輸出信號頻率fout主要取決于頻率控制字FTW。增加FTW,可以使fout不斷增加,但綜合考慮Nyquist 采樣定理,最高輸出頻率應(yīng)小于fclk一半。但在實際使用中,工作頻率應(yīng)小于fclk的三分之一。

        受單片機運行速度的影響,本設(shè)計中選取的時鐘頻率為10KHz,因此最小頻率分辨率為:

        fmin=fclk/2M=10×103/232=2.328306436538696×10-6 ? ? ? ? ?(式3)

        根據(jù)上式,當(dāng)需要輸出1Hz的頻率時,頻率控制字FTW?。?/p>

        FTW=1/fmin=429496.7296

        得到了頻率控制字FTW,如果需要輸出相應(yīng)的頻率只需要乘上頻率控制字就可以了。

        3.C語言實現(xiàn)DDS算法

        根據(jù)DDS算法的原理,在每個時鐘脈沖fclk的作用下,累加器加1,同時,從正弦表得到一個波形數(shù)據(jù)。結(jié)合C語言的特點,采用定時中斷代替時鐘脈沖,每個時鐘作用下的工作放在定時中斷中完成。具體實現(xiàn)如下:

        (1)時鐘fclk

        通過定時器初始化程序,設(shè)置100us的定時中斷。DDS算法在中斷服務(wù)子程序中完成。因此,fclk取值為10KHz。由于受STC89C52單片機運行速度的限制,定時周期不能太短,最終影響輸出信號頻率。如果采用運行速度更快的CPU,可通過設(shè)置更短的定時周期,即可提高輸出信號頻率。

        (2)相位累加器

        通過定義一個32位的寄存器,直接通過加法運算實現(xiàn)。每次定時中斷,累加器與頻率控制字相加,并將結(jié)果放入累加器中。

        (3)正弦查詢表

        通過定義一個具有256個元素的一維數(shù)組,用于存放一個完整的正弦數(shù)據(jù)表。每次定時中斷,用累加器的后8位作為該數(shù)組的索引,讀出波形數(shù)據(jù)。

        圖3 DDS算法在KEIL中的仿真波形

        完整的程序代碼如下(采用STC89C51單片機):

        #define OUT ? P0 //波形數(shù)據(jù)輸出

        unsigned long ? Phaseacc=0; //相位累加器

        unsigned long ?ftw1HZ=429497; ? //1Hz對應(yīng)的頻率控制字

        unsigned long ftwacc=0; //當(dāng)前頻率控制字

        unsigned char code Sin[256]={ //正弦查詢表

        128,131,134,137,140,143,146,149 ,..此處省略,121,124 };

        //----------------------------------定時器初始化

        void InitTimer0(void)

        { ? TMOD = 0x01; //10KHZ的定時頻率

        TH0 = 0xFF;

        TL0 = 0x37;

        EA = 1; ? ?ET0 = 1; ? ?TR0 = 1;

        }

        //----------------------------------定時器中斷程序

        void Timer0Interrupt(void) interrupt 1

        { unsigned char i;

        TH0 = 0x0FF; TL0 = 0x37; ?haseacc=Phaseacc+ftwacc; ? //累加器加FTW

        i= Phaseacc>>24;

        OUT = Sin[i]; ? //正弦查詢表取數(shù)

        P17=!P17;

        }

        //----------------------------------主程序

        void main(void)

        { ? InitTimer0(); //定時器初始化

        ftwacc=100*ftw1HZ; //設(shè)置輸出波形頻率為100Hz

        while(1){;} //等待定時中斷

        }

        4.結(jié)語

        將C51實現(xiàn)的DDS算法的程序代碼放在KEIL軟件中仿真,通過該軟件提供的Logic Analyzer工具,得到波形如圖3所示。

        將P0輸出外接8位D/A轉(zhuǎn)換器,再通過低通濾波器后就能得到正弦信號。

        綜上,本文介紹了基于51單片機的DDS算法的實現(xiàn)方法。在頻率要求低,設(shè)計成本敏感的信號源的設(shè)計中,該方案具有明顯優(yōu)勢。

        參考文獻

        [1]蔣志勇.基于FPGA的DDS波形發(fā)生器設(shè)計[J].科技信息,2012(01).

        [2]桂玲.基于AD9852和單片機的頻率合成器設(shè)計[J].現(xiàn)代電子技術(shù),2012(15).

        [3]常春波.一種基于FPGA的DDS算法的簡化實現(xiàn)[J].太原科技大學(xué)學(xué)報,2006(05).

        作者簡介:

        付宗見(1975—),男,河南潢川人,助理講師,現(xiàn)供職于鄭州鐵路職業(yè)技術(shù)學(xué)院。

        江興盟(1982—),男,陜西安康人,講師,現(xiàn)供職于鄭州鐵路職業(yè)技術(shù)學(xué)院。

        猜你喜歡
        單片機
        基于單片機的SPWM控制逆變器的設(shè)計與實現(xiàn)
        電子制作(2019年13期)2020-01-14 03:15:28
        基于單片機的層次漸變暖燈的研究
        電子制作(2019年15期)2019-08-27 01:12:10
        基于單片機的多功能智能插排
        電子制作(2019年11期)2019-07-04 00:34:48
        基于單片機的便捷式LCF測量儀
        電子制作(2019年9期)2019-05-30 09:42:02
        小議PLC與單片機之間的串行通信及應(yīng)用
        電子制作(2018年12期)2018-08-01 00:48:04
        MSP430單片機在仿真中要注意的幾點問題
        電子制作(2017年9期)2017-04-17 03:00:53
        基于單片機的平衡控制系統(tǒng)設(shè)計
        電子制作(2017年19期)2017-02-02 07:08:27
        基于單片機的三維LED點陣設(shè)計
        電子制作(2016年21期)2016-05-17 03:52:51
        Microchip推出兩個全新PIC單片機系列
        基于Proteus的單片機控制系統(tǒng)的仿真設(shè)計
        99视频全部免费精品全部四虎| 精品国产一区二区三区三| 热99re久久精品这里都是精品免费 | 亚洲中文字幕久久精品蜜桃 | 中国大陆一级毛片| 无码伊人久久大香线蕉| 日本一二三区在线视频观看| 华人免费网站在线观看| 特级a欧美做爰片第一次| 亚洲va韩国va欧美va| 亚洲av日韩av综合| 最新国产成人在线网站| 中文字幕一区二区三区综合网| 亚洲婷婷久悠悠色悠在线播放| 成人欧美一区二区三区在线观看 | 亚洲综合久久一本久道| 国产一区二区三区成人av| 日本高级黄色一区二区三区| 五月色婷婷丁香无码三级| 94久久国产乱子伦精品免费| 久久精品国产亚洲5555| 亚洲免费福利视频网站| 亚洲天堂成人av影院| 51看片免费视频在观看| 日韩精品成人一区二区三区| 在线亚洲AV不卡一区二区 | 亚洲AV无码精品蜜桃| 日本高清长片一区二区| 麻豆精品国产专区在线观看| 国产国拍精品av在线观看按摩| 91国视频| av一区二区三区高清在线看 | 十八禁视频网站在线观看| 伊人久久综合精品无码av专区| 国产h视频在线观看网站免费| 一本之道加勒比在线观看| 久久久久高潮综合影院| 蜜臀久久99精品久久久久久小说| 国产精品一区二区资源| 玩弄极品少妇被弄到高潮| 亚洲啪啪视频一区二区|