您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 基于matlab的DDS实现
直接数字频率合成技术基于Matlab的DDS实现学院:城市轨道交通学院专业:10通信工程姓名:袁楷学号:1042401056一、实验要求利用Matlab软件编程实现DDS(直接数字频率合成技术)。二、实验目的:1、理解DDS的原理,熟悉整个实现流程,能对简单的DDS实现过程进行一些基本分析;2、学会运用Matlab软件处理一些信号,对简单的要求能做一些基本处理。三、DDS介绍1、DDS简介自20世纪70年代以来,由于大规模集成电路的发展及计算机技术的普及,开创了另一种频率合成方法——直接数字频率合成法(DDS即DirectDigitalFrequencySynthesis)。它突破了模拟频率合成法的原理,从“相位”的概念出发进行频率合成这种方法不仅可以给出不同频率的正弦波,而且还可以给出初始相位的正弦波,甚至可以给出各种任意波形。这在模拟频率合成法中是无法实现的。相比传统频率合成技术,DDS具有如下一些优点:⑴频率分辨率高,输出频点多,可达2的N次方个频点(N为相位累加器位数);⑵频率切换速度快,可达us量级;⑶频率切换时相位连续;⑷可以输出宽带正交信号;⑸输出相位噪声低,对参考频率源的相位噪声有改善作用;⑹可以产生任意波形;⑺全数字化实现,便于集成,体积小,重量轻。在各行各业的测试应用中,信号源扮演着极为重要的作用。但信号源具有许多不同的类型,不同类型的信号源在功能和特性上各不相同,分别适用于许多不同的应用。目前,最常见的信号源类型包括任意波形发生器,函数发生器,RF信号源,以及基本的模拟输出模块。信号源中采用DDS技术在当前的测试测量行业已经逐渐称为一种主流的做法。2、DDS基本原理图1以ROM(正弦查询表)为基础组成的DDS原理图在正弦波1周期(3600)内,按相位划分为若干等分𝛥𝜙,将各相位所对应的幅值A按二进制编码并存入ROM中。设𝛥𝜙=60,则1周期内共有60等分。,由于正弦波对1800为奇对称,对900和2700为偶对称,因此ROM中只需存储00~900范围内的幅值码。若以𝛥𝜙=60计算,在00~900之间共有15等分,其幅值在ROM中共占16个地址单元。因为24=16,所以可按4位地址吗对数据ROM进行寻址。现设幅值码为5位,则在00~900范围内编码关系如表1所示。表1正弦函数表(正弦波信号相位与幅值的关系)地址码相位幅度(满度值为1)幅值编码0000000.000000000001600.1050001100101200.2070011100111800.3090101001002400.40601101010130°0.5001000001103600.5881001101114200.6691010110004800.7431100010015400.80911010101060°0.8661110010116600.9141110111007200.9511111011017800.9781111111108400.99411111111190°1.00011111信号的频率关系设时钟的频率为固定值𝑓𝐶,在CLK的作用下,如果按照0000,0001,0010,…,1111的地址顺序读出ROM中的数据,即表1中的幅值编码,其正弦信号频率为𝑓01;如果每隔一个地址读一次数据(即按0000,0001,0100,…,1110顺序),其输出信号频率为𝑓02,且𝑓02将比𝑓01提高一倍,即𝑓02=2𝑓01;其余类推。这样,就可以实现直接数字频率合成器的输出频率的调节。上述过程是由控制电路实现的,由控制电路的输出决定选择数据ROM的地址(即正弦波的相位)。输出信号波形的产生是相位逐渐累加的结果,这由累加器实现,称为相位累加器,如图1所示。在图中,K为累加值,即相位步进码,也称频率码。如果K=1,每次累加结果的增量为1,则依次从数据ROM中读取数据;如果K=2,则每隔一个ROM地址读一次数据;其余类推。因此,K值越大,相位步进越快,输出信号波形的频率就越高。对于n位地址来说,,共有2𝑛个ROM地址,在一个正弦波中共有2𝑛个样点(数据)。如果K=2𝑛,就意味着相位步进为2𝑛,则一个信号周期中只取一个样点,它不能表示一个正弦波,因此不能取K=2𝑛;如果K=2𝑛−1,2𝑛∕2𝑛−1=2,则一个正弦波中有两个样点,咋何在理论上满足了取样定理,但实际难以实现,一般地,限制K的最大值为𝑘𝑚𝑎𝑥=2𝑛−2这样,一个波形中至少有4个样点(2𝑛∕2𝑛−2=4)经过D/A变换,相当于四级阶梯波。在后继低通滤波器作用下,可以得到较好的正弦波输出。相应地,K为最小值(Kmin=1)时,一共有2𝑛个数据组成一个正弦波。根据以上讨论,可以得到如下频率关系。假设控制时钟频率为𝑓𝐶,ROM地址码的位数为n。当K=Kmin=1时,输出频率𝑓0为𝑓0=Kmin𝑓𝑐2𝑛故最低输出频率fomin=fc/2𝑛当k=kmax=2𝑛−2时,输出频率𝑓0为𝑓0=Kmax𝑓𝑐2𝑛故最高输出频率fomax为fomax=𝑓𝑐∕4在DDS中,输出频率点是离散的,当fomax和fomin已经设定时,其间可输出的频率个数M为M=fomax/fomin=𝑓𝑐∕4𝑓𝑐∕2𝑛=2𝑛−2现在讨论DDS的分辨率。如前所述,频率分辨率是两个相邻频率之间的间隔,现在定义𝑓1和𝑓2为两个相邻的频率,若𝑓2=K𝑓𝑐2𝑛则𝑓2=(K+1)𝑓𝑐2𝑛因此,频率分辨率𝛥𝑓为𝛥𝑓=𝑓2−𝑓1=(K+1)𝑓𝑐2𝑛−K𝑓𝑐2𝑛得𝛥𝑓=𝑓𝑐2𝑛为了改变输出信号频率,除了调节累加器的K值以外,还有一种方法,就是调节控制时钟的频率𝑓𝑐。由于𝑓𝑐不同,读取一轮数据所花时间不同,因此信号频率也不同。用这种方法调节频率,输出信号的阶梯仍取决于ROM单元的多少,只要有足够的ROM空间就能输出逼近正弦的波形,但调节比较麻烦。四、实验内容1、程序实现框图图2程序框图2、Matlab程序代码%fout:Outputfrequency%Fs:Samplefrequency%Bits:NumberofbitsoftheLUT%endtime:Expectedsimulationendtime%y:Outputsinewave%t:Outputtimefunction[y,t]=dds_matlab(fout,Fs,Bits,endtime)delta_F=Fs/2^Bits;t=2*pi*(0:2^Bits-1)/2^Bits;LUT=sin(t);subplot(211)plot(t,LUT)figure(1);gridont=0:1/Fs:endtime;N=length(t);n=1;y=zeros(1,N);IND=zeros(1,N);%InputFrequencyWordk=floor(fout/Fs*2^Bits);index=0;whilen=NIND(n)=index;index=index+k;index=mod(index,2^Bits);n=n+1;endm=IND;IND=IND+1;y=LUT(IND);subplot(212)plot(t,y)figure(1);axis([0endtime-1.21.2]);gridon3、测试结果⑴输入dds_matlab(10,100,10,0.5),输出波形图如图3图3原始波频率为(12𝜋⁄)Hz,输出频率为10Hz波形结论:原始波频率为(12𝜋⁄)Hz,理论上变换后频率为10Hz,实验测得输出频率为10Hz,与理论值相符,实验正确。⑵输入dds_matlab(100,1000,5,1),输出波形图如图4图4输出频率为100Hz波形结论:实验测得输出频率为10Hz,与理论值相符,实验正确。参考文献[1]陈尚松等.电子测量与仪器.北京:电子工业出版社,2009.[2]张明照等.应用MATLAB实现信号分析和处理.北京:科学出版社,2006.
本文标题:基于matlab的DDS实现
链接地址:https://www.777doc.com/doc-2570531 .html