同步仿真基于matlab的DDS信号产生实验报告Word下载.docx
《同步仿真基于matlab的DDS信号产生实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《同步仿真基于matlab的DDS信号产生实验报告Word下载.docx(16页珍藏版)》请在冰点文库上搜索。
(1-4)
式中:
(1-5)
是连续两次采样之间的相位增量。
根据采样定理:
(1-6)
只要从(2-3)出来的离散序列即可唯一的恢复出(1-2)的模拟信号。
从(1-2)可知,是相位函数的斜率决定了信号的频率;
从(1-5)可知,决定相位函数斜率的是两次采样之间的相位增量
。
因此,只要控制这个相位增量,就可以控制合成信号的频率。
现将整个周期的相位2
分成M份,每一份为
,若每次的相位增量选择为
的K倍,即可得到信号的频率:
(1-7)
相应的模拟信号为:
(1-8)
式中K和M都是正整数,根据采样定理的要求,K的最大值应小于M的1/2。
由上述原理,在采样频率一定的情况下,可以通过控制两次采样之间的相位增量(不得大于π)来控制所得离散序列的频率,根据输出信号地址选取相应基准频率信号样点组成各种需要的频率信号即可。
DDS的字长决定了正弦/余弦基准信号样点的个数和所产生频率信号的量化精度。
基准信号中存储了一个正弦信号周期的采样值,而这些采样值采样频率就是DDS设备的采样频率,这个基准正弦信号就是DDS的频率基准信号。
DDS信号的产生就是基于对一个基准频率信号的所有采样值有选择地输出从而产生基准信号频率整数倍的信号。
在用matlab仿真时,可以简化对存储设备的仿真,直接产生采样值,存储在一个数组中。
二、程序说明
以正弦信号的产生为例
1、程序主体流程图
2、程序设计说明
在实验环境matlab2010a中产生了一个单频正弦波,显示程序出入口参数的语句如下:
function[y,t]=DDSforsin(f,Fs,N,et,theta0);
(1)入口参数及其含义
f:
输出的信号频率
Fs:
采样频率
N:
频率信号字长
et:
信号结束时间
theta0:
初始相位
(2)出口参数及其含义
y:
输出的频率信号
t:
时间
三、实验结果及验证
1、正(余)弦信号的产生(DDSforsin.m)
(1)、输出的信号频率:
128,采样频率:
2048,频率信号字长:
10,信号结束时间:
0.1,初始相位:
0。
在实验环境matlab2010a的命令窗口中输入:
DDSforsin(128,2048,10,0.1,0);
得到:
a、基准信号时域波形
b、输出信号的时域波形和频域波形
(2)、输出的信号频率:
256,采样频率:
DDSforsin(256,2048,10,0.1,0);
a、基准信号时域波形
b、输出信号的时域波形和频域波形
(3)、输出的信号频率:
DDSforsin(128,2048,10,0.1,0.5*pi);
小结:
通过上述三组参数设置与信号的时域和频域图像可以验证正弦信号生成程序的合理性和参数的可调性
同样的方法,适当调整程序部分细节可以生成三角信号和方波信号。
2、方波信号的产生(DDSforfb.m)
DDSforfb(50,2048,20,0.1,0);
3、三角波信号的产生(DDSforsawtooth.m)
DDSforsawtooth(200,4096,20,0.1,0);
4、实验总结
通过本次实验加深了对DDS技术的了解,直接数字频率合成器(DirectDigitalSynthesizer)是从相位的概念出发直接合成所需波形的一种频率合成技术。
是将一个(或多个)基准频率变换成另一个(或多个)合乎质量要求的所需频率的技术。
一个直接数字频率合成器由相位累加器、加法器、波形存储ROM、DA转换器和低通滤波器构成。
与传统的频率合成技术相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点。
在本次实验的过程中,对matlab的程序结构和数据存储有了更深的理解,熟悉MicrosoftVisio的绘图操作,在与同学的讨论和交流中明白了团队合作精神的重要性,是一次不可多得的从理论到实践的宝贵历程,获益匪浅。
五、附录(matlab代码)
1、正(余)弦信号
function[y,t]=DDSforsin(f,Fs,N,et,theta0)
big=16;
%图形窗口字体大小
%%入口参数及其含义
%f:
%Fs:
%N:
%et:
%theta0:
%%产生基准频率信号
t=2*pi*(0:
2^N-1)/2^N;
Sn=floor(sin(t)*2^(N-1))-1;
%基准信号
figure;
plot(t,Sn);
title('
基准信号时域波形'
'
fontsize'
big);
%绘出基准信号时域波形
ylabel('
Sn(t)'
gridon;
%%产生输出信号地址
t=0:
1/Fs:
et;
N_sig=Fs*et+1;
%输出频率信号采样点个数
delta_f=Fs/2^N;
%最小频率间隔
delta_A=floor(f/delta_f);
%相邻样点地址增量
delta_theta0=2*pi/Fs*delta_f;
%最小相位间隔
Ap=floor(theta0/delta_theta0);
%地址增量
n=0:
N_sig-1;
A(n+1)=mod(n*delta_A+Ap,2^N);
%所需输出信号的地址
A_sin=mod(floor(A/(Fs/delta_f/2^N)),2^N);
%基准信号地址
%%产生输出频率信号
fori=1:
N_sig
y(i)=Sn(A_sin(i)+1)/2^(N-1);
%产生所需信号
end
plot(t,y);
输出信号'
%绘出频率信号时序波形
xlabel(sprintf('
频率=%.1f,采样频率=%.1f,字长=%.1f,时长=%.1f,初相=%.2f'
f,Fs,N,et,theta0),'
12);
y(t)'
axis([0et-1.21.2]);
[f,yf]=T2F(t,y);
subplot(211);
plot(f,abs(yf));
信号幅频特性'
xlabel('
Hz'
subplot(212);
plot(f,angle(yf));
信号相频特性'
2、三角波信号
functionDDSforsawtooth(f,Fs,N,et,theta0)
Nper=2^N;
%基准信号采样个数
%基准信号相位
S=sawtooth(t,0.5);
Sroot=floor(S*2^(N-1))-1;
%输出频率信号样点个数
maxAsawtooth=Nper-1;
maxA=Fs/delta_f;
maxAbase=maxA/Nper;
%输出信号相邻样点对应地址的地址增量
delta_theta0=2*pi/maxA;
%在频谱分辨率为的情况下,输出信号所能分辨的最小相位
%初相对应的地址增量
A(n+1)=mod(n*delta_A+Ap,maxA);
%输出信号地址
A_sawtooth=mod(floor(A/maxAbase),Nper);
%基准频率信号选择地址
%%通过地址对基准信号采样
y(i)=Sroot(A_sawtooth(i)+1)/2^(N-1);
%%输出结果
figure
(1);
plot(t,Sroot);
基准信号时域谱'
%基准信号时域谱
figure
(2);
产生的信号时域谱'
%产生的信号时域谱
t'
);
figure
产生的信号幅频特性'
%产生的信号幅频特性
产生的信号相频特性'
%产生的信号相频特性
3、方波信号
functionDDSforfb(f,Fs,N,et,theta0)
Sroot=floor(square(t)*2^(N-1))-1;
maxAsquare=Nper-1;
A_square=mod(floor(A/maxAbase),Nper);
y(i)=Sroot(A_square(i)+1)/2^(N-1);
产生信号的时域谱'
%产生的单频信号时域谱
产生信号幅频特性'
%产生的单频信号幅频特性
产生信号相频特性'
%产生的单频信号相频特性