同步仿真基于matlab的DDS信号产生实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

同步技术仿真作业
基于DDS 原理的频率信号产生
一、实验原理
DDS 是通过对于预先存储起来的基准信号进行一定间隔的采样,将样点重新组合成所需各种频率信号的技术。

可以通过存储的不同类型的基准信号,产生与基准信号相同类型,不同频率、初相的信号。

参考所给资料,用正弦信号的产生过程来说明其原理: 一个纯净的单频信号可表示为:
()()o o t f U t u θπ+=2sin (1-1)
只要它的幅度U 和初始相位o θ不变,它的频谱就是位于o f 的一条谱线。

为了分析简化起见,可令U=1,o θ=0,这将不会影响对频率的研究。

即:
()()()t t f t u o θπsin 2sin == (1-2)
如果对(2-2)的信号进行采样,采样周期为c T (即采样频率为c f ),则可得到离散的波形序列:
()()c o nT f n u π2sin = (1-3) 相应的离散相位序列为:
()n nT f n c o ∙∆==θπθ2 ()...2,1,0=n (1-4) 式中:
c
o
c o f f T f ππθ22==∆ (1-5)
是连续两次采样之间的相位增量。

根据采样定理:
c
o f f 21< (1-6) 只要从(2-3)出来的离散序列即可唯一的恢复出(1-2)的模拟信号。

从(1-2)可知,是相位函数的斜率决定了信号的频率;从(1-5)可知,决定相位函数斜率的是两次采样之间的相位增量θ∆。

因此,只要控制这个相位增量,就可以控制合成信号的频率。

现将整个周期的相位2π分成M 份,每一份为M
πδ2=,若每次的相位增量选择为δ的K 倍,即可得到信
号的频率:
c
c o f M K
T K f ==
πδ2 (1-7)
相应的模拟信号为:
()⎪
⎭⎫
⎝⎛=t f M K t u c π2sin (1-8)
式中K和M都是正整数,根据采样定理的要求,K的最大值应小于M的1/2。

由上述原理,在采样频率一定的情况下,可以通过控制两次采样之间的相位增量(不得大于π)来控制所得离散序列的频率,根据输出信号地址选取相应基准频率信号样点组成各种需要的频率信号即可。

DDS的字长决定了正弦/余弦基准信号样点的个数和所产生频率信号的量化精度。

基准信号中存储了一个正弦信号周期的采样值,而这些采样值采样频率就是DDS设备的采样频率,这个基准正弦信号就是DDS的频率基准信号。

DDS信号的产生就是基于对一个基准频率信号的所有采样值有选择地输出从而产生基准信号频率整数倍的信号。

在用matlab仿真时,可以简化对存储设备的仿真,直接产生采样值,存储在一个数组中。

二、程序说明
以正弦信号的产生为例
1、程序主体流程图
产生基准频率信号
S(n),并存储
根据初始相位计算其对
应地址增量
计算A(n),根据A(n)确定选择地址Asin
根据Asin在存储区寻址,找到对应的S(n)将每次寻址得到的S(n)依次排列,即得到所需
频率信号
开始
结束
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 、 基准信号时域波形
01234567
-600
-400
-200
200
400
600
基准信号时域波形
S n (t )
b 、输出信号的时域波形和频域波形
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.1
-1-0.8-0.6-0.4-0.2
00.2
0.40.60.81输出信号
频率=128.0,采样频率=2048.0,字长=10.0,时长=0.1,初相=0.0
y (t )
(2)、输出的信号频率:256,采样频率:2048,频率信号字长:10,信号结束时间:0.1,初
始相位:0。

在实验环境matlab2010a 的命令窗口中输入:
DDSforsin(256,2048,10,0.1,0);
得到:
-1500
-1000-500050010001500
0.020.04
0.06信号幅频特性
Hz
-1500
-1000
-500
500
1000
1500
-4-2024信号相频特性
Hz
a 、基准信号时域波形
01234567
-600
-400
-200
200
400
600
基准信号时域波形
S n (t )
b 、 输出信号的时域波形和频域波形
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.1
-1-0.8-0.6-0.4-0.200.2
0.40.60.81输出信号
频率=256.0,采样频率=2048.0,字长=10.0,时长=0.1,初相=0.0
y (t )
(3)、输出的信号频率:128,采样频率:2048,频率信号字长:10,信号结束时间:0.1,初始相位:0。

在实验环境matlab2010a 的命令窗口中输入:
DDSforsin(128,2048,10,0.1,0.5*pi);
得到:
a 、基准信号时域波形
01234567
-600
-400
-200
200
400
600
基准信号时域波形
S n (t )
-1500
-1000
-500
500
1000
1500
00.010.020.03
0.04信号幅频特性
Hz
-1500
-1000
-500
500
1000
1500
-4-2024信号相频特性
Hz
-1500
-1000
-500
500
1000
1500
00.020.040.060.08
产生信号幅频特性
Hz
-1500
-1000
-500
500
1000
1500
-4-2024产生信号相频特性
Hz
b 、输出信号的时域波形和频域波形
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.1
-1-0.8-0.6-0.4-0.2
00.2
0.40.60.81输出信号
频率=128.0,采样频率=2048.0,字长=10.0,时长=0.1,初相=1.57
y (t )
小结:通过上述三组参数设置与信号的时域和频域图像可以验证正弦信号生成程序的合理性和参数的可调性
同样的方法,适当调整程序部分细节可以生成三角信号和方波信号。

2、方波信号的产生(DDSforfb.m)
在实验环境matlab2010a 的命令窗口中输入:
DDSforfb(50,2048,20,0.1,0);
得到:
a 、基准信号时域波形
01234567
-6
-4
-2
2
4
6x 10
5
基准信号时域谱
b 、输出信号的时域波形和频域波形
0.01
0.02
0.03
0.04
0.050.06
0.07
0.08
0.09
0.1
-1-0.8-0.6-0.4-0.200.20.40.6
0.81产生信号的时域谱
t
-1500
-1000-500050010001500
00.020.04
0.06信号幅频特性
Hz
-1500
-1000
-500
500
1000
1500
-4-2024信号相频特性
Hz
3、三角波信号的产生(DDSforsawtooth.m) 在实验环境matlab2010a 的命令窗口中输入:
DDSforsawtooth(200,4096,20,0.1,0);
得到:
a 、基准信号时域波形
01234567
-6
-4
-2
2
4
6x 10
5
基准信号时域谱
b 、输出信号的时域波形和频域波形
0.01
0.02
0.03
0.04
0.050.06
0.07
0.08
0.09
0.1
-1-0.8-0.6-0.4-0.200.20.40.60.81产生的信号时域谱
t
四、实验总结
通过本次实验加深了对DDS 技术的了解,直接数字频率合成器(Direct Digital Synthesizer )是从相位的概念出发直接合成所需波形的一种频率合成技术。

是将一个(或多个)基准频率变换成另一个(或多个)合乎质量要求的所需频率的技术。

一个直接数字频率合成器由相位累加器、加法器、波形存储ROM 、DA 转换器和低通滤波器构成。

与传统的频率合成技术相比,DDS 具有低成本、低功耗、高分辨率和快速转换时间等优点。

在本次实验的过程中,对matlab 的程序结构和数据存储有了更深的理解,熟悉Microsoft Visio 的绘图操作,在与同学的讨论和交流中明白了团队合作精神的重要性,是一次不可多得的从理论到实践的宝贵历程,获益匪浅。

五、附录(matlab 代码)
1、正(余)弦信号
f unction [y,t]=DDSforsin(f,Fs,N,et,theta0) big=16; %图形窗口字体大小 %%入口参数及其含义
% f :输出的信号频率 % Fs :采样频率
-2500-2000-1500-1000
-50005001000150020002500
0.02
0.04
0.06
产生的信号幅频特性
Hz
-2500-2000-1500-1000
-500
500
1000
1500
2000
2500
-4
-2
024产生的信号相频特性
Hz
% 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)','fontsize',big);
grid on;
%%产生输出信号地址
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);%基准信号地址
%%产生输出频率信号
for i=1:N_sig
y(i)=Sn(A_sin(i)+1)/2^(N-1); %产生所需信号
end
figure;
plot(t,y);
title('输出信号','fontsize',big); %绘出频率信号时序波形
xlabel(sprintf('频率=%.1f,采样频率=%.1f,字长=%.1f,时长=%.1f,初相=%.2f',f,Fs,N,et,theta0),'fontsize',12);
ylabel('y(t)','fontsize',big);
axis([0 et -1.2 1.2]);
grid on;
figure;
[f,yf]=T2F(t,y);
subplot(211);
plot(f,abs(yf));title('信号幅频特性','fontsize',big);
xlabel('Hz','fontsize',big);
grid on;
subplot(212);
plot(f,angle(yf));title('信号相频特性','fontsize',big);
xlabel('Hz','fontsize',big);
grid on;
end
2、三角波信号
function DDSforsawtooth(f,Fs,N,et,theta0)
big=16; %图形窗口字体大小
%%入口参数及其含义
% f:输出的信号频率
% Fs:采样频率
% N:频率信号字长
% et:信号结束时间
% theta0:初始相位
%%产生基准频率信号
Nper=2^N; %基准信号采样个数
t=2*pi*(0:2^N-1)/2^N; %基准信号相位
S=sawtooth(t,0.5);
Sroot=floor(S*2^(N-1))-1; %基准信号
%%产生输出信号地址
N_sig=Fs*et+1; %输出频率信号样点个数
delta_f=Fs/2^N; %最小频率间隔
maxAsawtooth=Nper-1;
maxA=Fs/delta_f;
maxAbase=maxA/Nper;
delta_A=floor(f/delta_f); %输出信号相邻样点对应地址的地址增量
delta_theta0=2*pi/maxA; %在频谱分辨率为的情况下,输出信号所能分辨的最小相位
Ap=floor(theta0/delta_theta0); %初相对应的地址增量
n=0:N_sig-1;
A(n+1)=mod(n*delta_A+Ap,maxA); %输出信号地址
A_sawtooth=mod(floor(A/maxAbase),Nper); %基准频率信号选择地址
%%通过地址对基准信号采样
for i=1:N_sig
y(i)=Sroot(A_sawtooth(i)+1)/2^(N-1);
end
%%输出结果
figure(1);
t=2*pi*(0:2^N-1)/2^N;
plot(t,Sroot);title('基准信号时域谱','fontsize',big); %基准信号时域谱
t=0:1/Fs:et;
figure(2);
plot(t,y);title('产生的信号时域谱','fontsize',big); %产生的信号时域谱
xlabel('t');
axis([0 et -1.2 1.2]);
grid on;
figure
[f,yf]=T2F(t,y);
subplot(211);
plot(f,abs(yf));title('产生的信号幅频特性','fontsize',big);
xlabel('Hz','fontsize',big); %产生的信号幅频特性
grid on;
subplot(212);
plot(f,angle(yf));title('产生的信号相频特性','fontsize',big);
xlabel('Hz','fontsize',big); %产生的信号相频特性
3、方波信号
function DDSforfb(f,Fs,N,et,theta0)
big=16; %图形窗口字体大小
%%入口参数及其含义
% f:输出的信号频率
% Fs:采样频率
% N:频率信号字长
% et:信号结束时间
% theta0:初始相位
%%产生基准频率信号
Nper=2^N; %基准信号采样个数
t=2*pi*(0:2^N-1)/2^N; %基准信号相位
Sroot=floor(square(t)*2^(N-1))-1; %基准信号
%%产生输出信号地址
N_sig=Fs*et+1; %输出频率信号样点个数
delta_f=Fs/2^N; %最小频率间隔
maxAsquare=Nper-1;
maxA=Fs/delta_f;
maxAbase=maxA/Nper;
delta_A=floor(f/delta_f); %输出信号相邻样点对应地址的地址增量
delta_theta0=2*pi/maxA; %在频谱分辨率为的情况下,输出信号所能分辨的最小相位
Ap=floor(theta0/delta_theta0); %初相对应的地址增量
n=0:N_sig-1;
A(n+1)=mod(n*delta_A+Ap,maxA); %输出信号地址
A_square=mod(floor(A/maxAbase),Nper); %基准频率信号选择地址
%%通过地址对基准信号采样
for i=1:N_sig
y(i)=Sroot(A_square(i)+1)/2^(N-1);
end
%%输出结果
figure(1);
t=2*pi*(0:2^N-1)/2^N;
plot(t,Sroot);title('基准信号时域谱','fontsize',big); %基准信号时域谱
t=0:1/Fs:et;
figure(2);
plot(t,y);title('产生信号的时域谱','fontsize',big); %产生的单频信号时域谱xlabel('t');
axis([0 et -1.2 1.2]);
grid on;
figure
[f,yf]=T2F(t,y);
subplot(211);
plot(f,abs(yf));title('产生信号幅频特性','fontsize',big);
xlabel('Hz','fontsize',big); %产生的单频信号幅频特性
grid on;
subplot(212);
plot(f,angle(yf));title('产生信号相频特性','fontsize',big);
xlabel('Hz','fontsize',big); %产生的单频信号相频特性。

相关文档
最新文档