Matlab与通信仿真课程设计报告

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

Matlab与通信仿真课程设计报告
Matlab与通信仿真课程设计报告
班级:12通信(1)班
姓名:诸葛媛
学号:Xb12680129
实验⼀S-函数&锁相环建模仿真
⼀、实验⽬的
1.了解S函数和锁相环的⼯作原理
2.掌握⽤S函数建模过程,锁相环载波提取仿真
⼆、实验内容
1、⽤S函数编写Similink基本模块
(1)信源模块
实现⼀个正弦波信号源,要求其幅度、频率和初始相位参数可以由外部设置,并将这个信号源进⾏封装。

(2)信宿和信号显⽰模块
实现⼀个⽰波器⽊块,要求能够设定⽰波器显⽰的扫描周期,并⽤这个⽰波器观察(1)的信源模块
(3)信号传输模块
实现调幅功能,输⼊⽤(1)信源模块,输出⽤(2)信宿模块;
基带信号频率1KHz,幅度1V;载波频率10KHz,幅度5V
实现⼀个压控正弦振荡器,输⼊电压u(t)的范围为[v1,v2]V,输出正弦波的中⼼频率为f0Hz,正弦波的瞬时频率f随控制电压线性变化,
控制灵敏度为kHz/V。

输⼊⽤(1)信源模块,输出⽤(2)信宿模块
2、锁相环载波提取的仿真
(1)利⽤压控振荡器模块产⽣⼀个受10Hz正弦波控制的,中⼼频率为
100Hz,频偏范围为50Hz到150Hz的振荡信号,并⽤⽰波器模块和频谱
仪模块观察输出信号的波形和频谱。

(2)构建⼀个抑制载波的双边带调制解调系统。

载波频率为10KHz,被
调信号为1KHz正弦波,试⽤平⽅环恢复载波并进⾏解调。

(3)构建⼀个抑制载波的双边带调制解调系统。

载波频率为10KHz,被
调信号为1KHz正弦波,试⽤科斯塔斯环恢复载波并进⾏解调。

(4)设参考频率源的频率为100Hz,要求设计并仿真⼀个频率合成器,其输出频率为300Hz。

并说明模型设计上与实例3.26的主要区别
三、实验结果分析
1、⽤S函数编写Similink基本模块(3)
为了使S函数中输⼊信号包含多个,需要将其输⼊变量u初始为制定维数或⾃适应维数,⽽在S函数模块外部采⽤Simulink基本库中的复⽤器(Mux)将3
⾏的信号矩阵。

采⽤Fcn函数模块则可以从输⼊信号矩阵中取出相应元素进⾏计
算。

设置参数如下:输⼊信号源为常数值2的信号,subsystem中的信号输⼊为频率为1000Hz,幅度为1的正弦信号,仿真步长设置为2e-5;最后利⽤做成的显⽰模块来观察输出信号的波形。

测试模型:
signal generator:基带信号
constant:直流偏置
signal generator1:载波信号显⽰结果:
Subsystem中的M⽂件:
function [sys,x0,str,ts] = zgy1(t,x,u,flag,Amp,Freq,Phase)
%正弦波信号源
switch flag,
case 0 %flag=0初始化
[sys,x0,str,ts]=mdlInitializeSizes;
case 3 %flag=3计算输出
sys=mdlOutputs(t,Amp,Freq,Phase);
case{1,2,4,9} %其他作不处理的flag
sys=[]; %⽆⽤的flag时返回sys为空矩阵otherwise %异常处理error(['Unhandled flag = ',num2str(flag)]);
end
%主函数结束
%⼦函数实现(1)初始化函数
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes; %获取simulink仿真变量结构
sizes.NumContStates = 0; %连续系统的状态数为0 sizes.NumDiscStates = 0; %离散系统的状态数为0 sizes.NumOutputs = 1; %输出信号数⽬是1
sizes.NumInputs = 0; %输⼊信号数⽬是0
sizes.DirFeedthrough = 0; %这系统不是直通的
sizes.NumSampleTimes = 1; %这⾥必须为1
sys = simsizes(sizes);
str = []; %通常为空矩阵
x0 = []; %初始状态矩阵x0(零状态情况)
ts = [0 0]; %表⽰连续取样时间的仿真
%⼦函数实现(2)系统输出⽅程函数
sys = Amp*sin(2*pi*Freq*t+Phase); %这⾥写⼊系统的输出⽅程矩阵形式
%修改这个函数可以得到任意的波形输出
%系统输出⽅程函数结束
S-function中的M⽂件:
function [sys,x0,str,ts] = zgy4(t,x,u,flag)
%输⼊信号的代数运算实例:调幅
%输出u是3⾏1列矩阵,u(1),u(2),u(3)分别表⽰基带信号,直流偏置和载波%size(u)
switch flag,
case 0 %flag=0初始化
sizes = simsizes; %获取simulink仿真变量结构
sizes.NumContStates = 0; %连续系统的状态数是0
sizes.NumDiscStates = 0; %离散系统的状态数是0
sizes.NumOutputs = 1; %输出信号数⽬是1
sizes.NumInputs = -1; %输⼊信号数⽬是⾃适应
sizes.DirFeedthrough = 1; %该系统是直通的
sizes.NumSampleTimes = 1; %这⾥必须为1
sys = simsizes(sizes);
str = [];
x0 = []; %初始状态矩阵x0
ts = [-1 0];%采样时间由外部模块给出
case 3 %flag=3计算输出
sys=(u(1)+u(2))*u(3); %调幅输出计算
case{1,2,4,9} %其他作不处理的flag
sys=[]; %⽆⽤的flag时返回sys为空矩阵
otherwise %异常处理
error(['Unhandled flag = ',num2str(flag)]);
end
显⽰模块中的M ⽂件:
function [sys,x0,str,ts] = zgy2(t,x,u,flag,numofshowsteps)
%显⽰⽰波器
global T Y N; %声明使⽤的全局变量
switch flag,
case 0 %flag=0初始化
sizes.NumContStates = 0; %连续系统的状态数为0
sizes.NumDiscStates = 0; %离散系统的状态数为0
sizes.NumOutputs = 0; %输出信号数⽬是0
sizes.NumInputs = 1; %输⼊信号数⽬是0
sizes.DirFeedthrough = 1; %该系统是直通的
sizes.NumSampleTimes = 1; %这⾥必须是1
sys = simsizes(sizes);
str=[]; %通常为空矩阵
x0=[]; %初始化状态矩阵x0(零状态情况)
ts=[0,0]; %表⽰连续取样时间的仿真
N=0; %缓冲区全局变量初始化
T=zeros(1,numofshowsteps-1);
Y=zeros(1,numofshowsteps-1);
case 3 %flag=3计算输出
if N
N=N+1; %缓冲区数组跑标
Y(N)=u; %记录当前信号
T(N)=t; %记录当前时刻
else %缓冲区满(⼀帧完成)则作图
figure(1);
plot(T-min(T),Y); %做出⼀帧信号波形
axis([0 max(T)-min(T) 1.1*min(Y) 1.1*max(Y)]); %坐标范围 set(gcf,'DoubleBuffer','on'); %双缓冲避免作图闪烁drawnow; %作图
N=0; %缓冲区跑标复位
end
case{1,2,4,9} %其他作不处理的flag
sys=5; %⽆⽤的flag时返回sys为空矩阵
otherwise %异常处理
error(['Unhandled flag = ',num2str(flag)]);
end
压控正弦振荡器:其中控制信号输⼊幅度为4、频率为1Hz的正弦波,压控振荡器的中⼼频率设置为10Hz,控制灵敏度为1Hz/V,初始相位为0,输出幅度为2V。

测试模型:
%VCO的实现
switch flag,
case 0 %flag初始化
sizes = simsizes; %获取simulink仿真变量结构
sizes.NumContStates = 1; %连续系统状态为1
sizes.NumDiscStates = 0; %离散系统状态数是0
sizes.NumOutputs = 1; %输出信号数⽬是1
sizes.NumInputs = -1; %输⼊信号数⽬是⾃适应的
sizes.DirFeedthrough = 0; %该系统不是直通的
sizes.NumSampleTimes = 1; % 这⾥必须是1
sys = simsizes(sizes);
str = []; %通常为空矩阵
x0 = [0]; % 初始状态矩阵x0
ts = [-1 0]; %采样时间由外部模块给出
case 1 %flag=1计算连续系统状态⽅程
sys=2*pi*f0+2*pi*k*u; %VCO输出⽅程
case 3 %flag=3 计算输出
sys=Amp*sin(x+phi0); %VCO输出⽅程
case{2,4,9} %其他作不处理的flag
sys=[]; %⽆⽤的flag时返回sys为空矩阵
otherwise %异常处理
error(['Unhandled flag = ',num2str(flag)]);
end
显⽰结果:
2、锁相环载波提取的仿真
构建⼀个抑制载波的双边带调制解调系统。

载波频率为10KHz,被调信号为1KHz正弦波,试⽤平⽅环恢复载波并进⾏解调。

仿真模型:
AWGN:
信道
Analog
filter:
波器
仿真步进设计为10^-6s,即在⼀个载波(10KHZ)周期中将有100个仿真计算点。

仿真计算采⽤ode5算法。

图中的两个信号模块分别产⽣幅度为1,频率为1000Hz基带正弦信号和10000Hz载波信号,被送⼊Product模块完成DSB-SC调制。

调制输出经过加性⾼斯⽩噪声信道(AWGN)传输,在信道中加⼊噪声⽅差设置为0.01。

在接收解调端,使⽤乘法器1完成平⽅功能。

然后将平⽅输出通过中⼼频率为20kHz的⼆阶带通滤波器选出载波的⼆次谐波。

该带通滤波器的通带可设置为19-
21kHz(19000*2*pi——20000*2*pi)。

乘法器2作为锁相环的鉴相器,环路滤波器设为直通的,因此该锁相环为⼀阶环。

CO的中⼼频率可设置为20.3KHz,VCO的控制灵敏度可设置为4000Hz/V。

butter 低通滤波器通带截⽌频率设置为1000*pi*2。

仿真步长设为1e-6。

VCO输出为锁定的载波⼆次谐波,通过计数器Counter模块进⾏⼆分频之后得到恢复载波。

Counter模块设置为计数上升沿触发模式,最⼤计数数值为1,输出端为计数输出,输出数据类型为双精度的。

计数器的初始状态可设置为0或1。

显⽰结果:
接受信号
平⽅输出
带通输出⼆次谐波
Vco输出
分频输出恢复载

解调输出信号
从图可知,接收信号与发送信号之间存在延迟,来⾃相⼲解调低通滤波器
的相移
实验⼆单边带调幅系统的建模仿真
⼀、实验⽬的
1.了解单边带调幅系统的⼯作原理。

2.掌握单边带调幅系统的Matlab和Simulink建模过程。

⼆、实验原理:本次实验采⽤希尔伯特变换,希尔伯特变换就是将信号中所
以频率成分的信号分量移相-π/2⽽得到的新信号。

单边带调幅与解调
的原理:双边带调幅所产⽣的上下两个边带包含的信息相同,所以只需
要传输其中任意⼀个边带就可以了。

将DSB信号中的某⼀个边带去除,
所得到的就是单边带调制信号。

单边带信号的突出特点是节约了传输频
带。

另外,对于话⾳信号的单边带解调,可以不⽤恢复载波相位,甚⾄
接收机的本地载波与发射机的发⽣载波之间存在少量频率差,话⾳信号
的解调输出失真也不⼤。

三、实验内容
1、Matlab设计⼀个单边带发信机、带通信道和相应的接收机,参数要
(1)输⼊话⾳信号为⼀个话⾳信号,采样率8000Hz。

话⾳输⼊后⾸先
进⾏预滤波,预滤波器是⼀个频率范围在[300,3400]Hz的带通滤波器。

其⽬的是将话⾳频谱限制在3400Hz以下。

单边带调制的载波频率设计
为10KHz,调制输出上边带。

要求观测单边带调制前后的信号功率谱。

(2)信道是⼀个带限⾼斯噪声信道,其通带频率范围是[10000,
13500]Hz。

要求能够根据信噪⽐SNR要求加⼊⾼斯噪声。

(3)接收机采⽤相⼲解调⽅式。

为了模拟载波频率误差对解调话⾳⾳
质的影响,设本地载波频率为9.8KHz,与发信机载波频率相差200Hz。

解调滤波器设计为300Hz到3400Hz的带通滤波器。

2、⽤Simulink⽅式设计⼀个单边带传输系统并通过声卡输出接收机解
调的结果声⾳。

系统参数参照实例5.9,系统仿真参数设置为50KH 三、实验结果
(1)Matlab仿真
[wav,fs]=wavread('GDGvoice8000.wav');
t_end=1/fs*length(wav);%计算声⾳的时间长度
Fs=50000;%仿真系统采样率
t=1/Fs:1/Fs:t_end;%仿真系统采样时间点
%设计300-3400Hz的带通预滤波器H(z)
[fenzi,fenmu]=butter(3,[300 3400]/(fs/2));
%对⾳频信号进⾏预滤波
wav=filter(fenzi,fenmu,wav);
%利⽤插值函数将⾳频信号的采样率提升为Fs=50kHz
wav=interp1([1/fs:1/fs:t_end],wav,t,'spline');
wav_hilbert=imag(hilbert(wav));%⾳频信号的希尔伯特变换
fc=10000;%载波频率Hz
SSB_OUT=wav.*cos(2*pi*fc*t)-wav_hilbert.*sin(2*pi*fc*t);%单边带调制figure(1);%观察调制前后的频谱
subplot(2,2,1);plot(wav(53550:53750)); axis([0 200 -0.3 0.3]); subplot(2,2,2);psd(wav,10000,Fs); axis([0 25000 -20 10]); subplot(2,2,3);plot(SSB_OUT(53550:53750)); axis([0 200 -0.3 0.3]);
subplot(2,2,4);psd(SSB_OUT,10000,Fs); axis([0 25000 -20 10]);
wavwrite(0.5*SSB_OUT,Fs,'SSB_OUT.wav');
运⾏结果:执⾏后输出的基带信号、单边带(上边带)调制输出信号的时域波形和估计的功率谱密度
Simulink仿真:
输⼊信号为名为GDGvoice8000.wav的⾳频⽂件,⾸先将系统的仿真步进时长设置为1/50000,即仿真采样频率为50Khz,对信号进⾏预滤波,这⾥采⽤butter 带通滤波器频率设置为300Hz~3400Hz。

由于希尔伯特变换需要输⼊信号离散,所以将信号
变化后进⼊⼀个实部和虚部的分离器,然后将⼆者实部虚部分别相乘之后再相加就可以得到SSB调制信号。

因为输出时需要的是离散化的信号,所以要将乘法器的采样时间设置为1/50000.。

得到调制信号之后就可以进⾏信道的加⼊噪声,在加⼊噪声之前,加⼊⼀个零阶保持器,仿真步长和前⾯的设置成⼀样,将信号经过⾼斯⽩噪声信道,信噪⽐SNR设置为50。

信道之后,加⼊⼀个零阶保持器,仿真步长设置为1/50000,然后对信号进⾏相⼲解调,为了能对⽐结果将想⼲解调的本地载波设置与源信号的本地载波有所差距,这⾥设置为9800Hz。

最后通过⼀个与前⼀个相同的带通滤波器,最后将解调后的信号输出。

语⾳输⼊的M⽂件:
clc;
clear;
[wavs,fs]=wavread('GDGvoice8000.wav');
t_end=1/fs*length(wavs);
t=(1/fs:1/fs:t_end)';
source=[t wavs];
语⾳输出的M⽂件:
wavwrite(demod_out,50000,'linkSSbDemod_OUT.wav');
仿真结果:
实验三数字通信系统的建模仿真
⼀、实验⽬的
1、了解数字通信系统的建模过程。

2、了解数字通信系统的仿真过程,并掌握对建模的好坏进⾏分析。

⼆、实验原理:
直接序列扩频(Direct Sequence Spread Spectrum),就是⽤⾼速率的扩频序列在发射端扩展信号的频谱,⽽在接收端⽤相同的扩频码序列进⾏解扩,把展开的扩频信号还原成原来的信号。

直接序列扩频⽅式是直接⽤伪噪声序列对载波进⾏调制,要传送的数据信息需要经过信道编码后,与伪噪声序列进⾏模2和⽣成复合码去调制载波。

码分多址:CDMA是码分多址的英⽂缩(CodeDivisionMultipleAccess),它是在数字技术的分⽀--扩频通信技术上发展起来的⼀种崭新⽽成熟的⽆线通信技术。

CDMA技术的原理是基于扩频技术,即将需传送的具有⼀定信号带宽信息数据,⽤⼀个带宽远⼤于信号带宽的⾼速伪随机码进⾏调制,使原数据信号的带宽被扩展,再经载波调制并发送出去。

接收端使⽤完全相同的伪随机码,与接收的带宽信号作相关处理,把宽带信号换成原信息数据的窄带信号即解扩,以实现信息通信。

跳频⼯作原理是指收发双⽅传输信号的载波频率按照预定规律进⾏离散变
化的通信⽅式,也就是说,通信中使⽤的载波频率受伪随机变化码的控制⽽随机跳变。

从通信技术的实现⽅式来说,“跳频”是⼀种⽤码序列进⾏多频频移键控的通信⽅式,也是⼀种码控载频跳变的通信系统。

从时域上来看,跳频信号是⼀个多频率的频移键控信号;从频域上来看,跳频信号的频谱是⼀个在很宽频带上以不等间隔随机跳变的。

其中:跳频控制器为核⼼部件,包括跳频图案产⽣、同步、⾃适应控制等功能;频合器在跳频控制器的控制下合成所需频率;数据终端包含对数据进⾏差错控制。

三、实验内容
建⽴并测试⼀个直接序列扩频体制的码分多址传输系统,对⽐以Gold序列、m序列以及随机整数发⽣器Random Integer Generator 作为直接序列扩频的扩频序列的传输性能,观察两路CDMA码源的收发数据波形,测试误码率,并⽤频谱仪观察直接序列扩频调制前后和解调前后的信号频谱。

率。

●2、对⽐以Gold序列、m序列(已做)以及随机整数发⽣器Random Integer
Generator作为直接序列扩频码源的传输性能,观察波形、频谱(扩频后、加噪声后、解扩后、解调后)、误码率,⽐较分析传输性能
●3、建⽴并测试⼀个直接序列扩频体制的码分多址传输系统
观察两路CDMA码源的收发数据波形;观察误码率;观察频谱(各⾃扩频后、加噪声后、各⾃解扩后、各⾃解调后);
●4、对⽐以Gold序列、m序列以及随机整数发⽣器Random Integer Generator
作为直接序列扩频码源的码分多址传输系统
观察波形、频谱(各⾃扩频后、各⾃解调后)、误码率,分析传输性能
●5、完成跳频扩频传输系统
四、实验结果
1、Simulink仿真:gold
Bernoulli Binary Generator⽤于产⽣数据流,其采样时间设置为0.01s。

PN Sequence Generator⽤于产⽣伪随机扩频序列,其采样时间设置为0.0005s,这样输出的码⽚速率为2000chip/s。

为了使扩频模块上的数据采样速率相同,需要对数据流进⾏升速率处理。

Unipolar to Bipolar Coneverter⽤于完成数据和扩频序列的双极性变换。

乘法器输出就是扩频输出,其码速率等于采样速率,即每个采样点就是⼀个码⽚。

扩频输出信号以BPSK⽅式进⾏调制。

调制输出信号是复信号,采样率为2000
次/s。

调制也采⽤通带模型实现,为了使频谱观察范围达到4KHz,需要被观察信号的采样率达到8000次/s,为此,以升速率模块配合采样保持模块将调制输出信号采样率提⾼到8000次/s。

信道由AWGN Channel模块、采样率为2000次/s的300Hz离散正弦波源以及加法器模块组成。

接收机的本地PN序列由和发射机中完全相同参数的PN Sequence Generator模块和单双极模块组成,其同步的双极性伪随机码送⼊解扩器中与接受信号相乘进⾏解扩,然后送⼊BPSK解调器等效基带模型进⾏解调和解码。

BPSK解调器中设置sample per symbol 参数为20。

AWGN信道中的⽅差设置为10。

仿真结果:
PN:
RANDOM:。

相关文档
最新文档