通讯原理—简易单边带电台仿真
通讯原理—简易单边带电台仿真
通讯原理
10级电子102班
姓名:班级: 学号:
武汉纺织大学电子与电气工程学院 课程设计
一、设计题目:一个简化的单边带电台仿真
二、设计目的
1.综合应用《Matlab编程与系统仿真》、《信号与系统》、《现代通信原理》等多门课程知识,使学生建立通信系统的整体概念。
2.培养学生系统设计与系统开发的思想、利用软件进行通信仿真的能力。
3.加深对 SSB调制原理的理解。 通过比较调制前后的频谱图,掌握 SSB调
制的原理和特性。
4.锻炼自己独立思考问题的能力,提高动手能力,增强社会适应度。
三、设计要求
1.对通信系统有整体的较深入的理解,深入理解自己仿真部分的原理的基础,画出对应的通信子系统的原理框图
2.提出仿真
3. 完成仿真软件的编制
4 .仿真软件的演示
5.提交详细的设计报告和源程序
四、开发环境及其介绍
1(开发环境:Matlab2012b
2(软件介绍:作为和Mathematica、Maple并列的三大
软件。其强项就是其强大的矩阵计算以及仿真能力。Matlab的由来就是Matrix + Laboratory = Matlab,所以这个软件在国内也被称作《矩阵实验室》。每次MathWorks发布Matlab的同时也会发布仿真工具Simulink。在欧美很多大公司在将产品投入实际使用之前都会进行仿真试验,他们所主要使用的仿真软件就是Simulink。Matlab提供了自己的编译器,全面兼容C++以及Fortran两大语言。
3.软件特点:
(1)友好的工作平台和编程环境;
(2)简单易用的程序语言;
(3)强大的科学计算机数据处理能力;
(4)出色的图形处理功能;
(5)应用广泛的模块集合工具箱;
(6)实用的程序接口和发布平台;
(7)应用软件开发(包括用户界面)。
五、设计内容
以真实的音频信号作为输入,设计一个单边带发信机。将基带信号调制为SSB后送入带通型高斯噪声信道。加入给定的噪声功率之后,再送入单边带接收机。单边带接收机将接受信号解调下来,通过计算机声卡将解
调信号播放出来试听效果。从而对信道信噪比与解调音质之间的关系进行主观测试。
1. 设计原理
1. 单边带信号( SSB)的调制
假定有两种频率的信号: 载波M ( t) = Am cosω c t、音频信号m ( t) =am cosω c t。通过非线性元件可以产生频率分别为ω c、Ω c 的信号。通过带通滤波器滤掉Ω c ,通过低通滤波器滤掉ω c。这样,就得到了两个边带的频率分量ω c +Ω c
ω c - Ω c ,这种含有两个边带信号同时也没有载波分量的信号,称它为双边带信号,简称 DSB。此时, DSB 也可以被直接发射出去,但是DSB信号中含有两个边带的信号,这两个边带携带着两个完全相同的信息,完全可以只发射其中的一个。这时,用滤波器过滤掉其中的一个边带就可以得到单边带信号(LSB 或者 USB) 。
(1) 滤波法调制(频率区分法) 模型如图1示。
LPF、HPF需要理想的形式,但是实际上是做不到的,过渡带不可能是0。因此需要多级调制。采用二级调制的系统框图如图2
所示。
图2 二级调制模型
(2)移项法调制移相法产生SSB信号的模型如图3所示。注:其中m ′( t)为m ( t)的希尔伯特变换
图3 移项法调制(图)
图中为相移网络; cosωc t经过相移网络后,输出为sinωc t。m ( t) 经过
相移网络后,将所有的频率成份移相-π/2,实际上是一个希尔波特(Hilbert)变换(也可以用一个宽带相移网络来代替)。
2(单边带信号( SSB)的解调
所谓解调就是把接收来的SSB信号经过处理,滤掉载波成分,使之还原成发射之前的有用的信息。
(1)相干解调法
相干解调方法的模型如图4
所示。下面从时域和频域两个角度进行分析。
图4 相干解调法模型
时域分析:
SP(t)=SSSB(t)cosωct
=〔m(t)cosωct?m’(t)sinωct〕cosωct
=1/2〔m(t)+m(t)cos(2ωct?1/2m’(t)sin(2ωct) (1)
经滤波器后,输出为:mo(t)=1/2m(t) (2)
频域分析:
SP(Ωc)=1/2〔SSSB(ωc+Ωc)+SSSB(ωc-Ωc)〕 (3)
经滤波器后,输出为:
Mo(Ωc)=Sp(Ωc)HLPF(Ωc) (4)
相干解调要求本地载波的频率和相位必须严格。
2, 载波插入法
由于接收到的LSB 或者USB 信号中不包含载波信号,所以必须在接收机里把缺失的载波补上 (这个过程其实就是把SSB信号恢复成调幅波) ,
否则就不能得到想要的有用信息。载波插入法,即人为地给SSB 信号加入一个大幅度的载波,再用包络检波方法。包络检波法不需要本地载波,易于实现。系统框图如图5
所示。该方法也需要载波同步。
图5 载波插入法模型
2. 模块说明及参数设置
模块一:语音信号录入并抽样
参数设置:Fs=80000; %仿真系统采样率
t=1/Fs:1/Fs:t_end; %仿真系统采样时间点
模块二:滤波
参数设置:300——3400HZ的带通滤波器
模块三:发信机(单边带调制)
参数设置:载波频率为10KHZ,输出上边带
模块四:带限高斯噪声信道
参数设置:带通频率范围[10000,13500]HZ
模块五:接收机
参数设置:载波频率为9.8KHZ
解调滤波器为300——3400HZ的带通滤波器
附:
模块一代码:
m=30;%录音时长m秒
Fs=8000;%采样频率8000Hz
ch=1;%选择声道1
n=8;%采样位数8位
fprintf('Press any key to start %g seconds of recording...\n',m);%
按任意键开始录音 pause;%暂停 等待按键
fprintf('Recording...\n');
yd=wavrecord(m*Fs,Fs,ch);%录音
fprintf('Finished recording.\n');
fprintf('Press any key to play the recording...\n');
subplot(2,1,1);%画时域图
t=(0:m*Fs-1)/Fs;
plot(t,yd);
axis([0,10,-1,1]);
xlabel('Time(s)');
wavwrite(yd,'song.wav');%保存音频文件
pause;%等待按键 播放
wavplay(yd,Fs);%播放
[y,Fs,nbits]=wavread('song.wav');%读出信号,采样率和采样位数。
y=y(:,1);%我这里假设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)
sigLength=length(y);%信号长度
Y = fft(y,sigLength);%傅里叶变换
Pyy = Y.* conj(Y)/sigLength;
halflength=floor(sigLength/2);
f=Fs*(0:halflength)/sigLength;
subplot(2,1,2);
plot(f,Pyy(1:halflength+1));%画频谱图
axis([0,2500,0,2]);
xlabel('Frequency(Hz)');
模块二代码:
% 設計300Hz,3400Hz的帶通預濾波器H(z)
[fenzi,fenmu]=butter(3,[1 3400]/(fs/2));
% 對音頻信號進行預濾波
wav=filter(fenzi,fenmu,wav);
模块三代码:
% ch5example9prog1.m
[wav,fs]=wavread('song.wav');%读出信号
t_end=1/fs *length(wav); % 计算声音时长
Fs=50000; % 仿真系统采样频率
t=1/Fs:1/Fs:t_end; % 仿真采样时间点
% 设计300Hz,3400Hz的带通巴特沃斯滤波器
[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.5 0.5]);
xlabel('Time(s)');
subplot(2,2,2); psd(wav, 10000, Fs); axis([0 20000 -20 10]);
subplot(2,2,3); plot(SSB_OUT(53550:53750)); axis([0 200 -0.5 0.5]);
xlabel('Time(s)');
subplot(2,2,4); psd(SSB_OUT, 10000, Fs); axis([0 20000 -20 10]);
wavwrite(0.5*SSB_OUT,Fs,'SSB_OUT.wav'); % 将SSB调制输出
存盘
模块四代码:
%模拟信道传输特性,信噪比很小时波形明显失真
clear;
[in, Fs]=wavread('SSB_OUT.wav');
SNRdB=20; % dB 設計的信道信噪比 任意更改比较信号音质
out=prog2(in, SNRdB);
wavwrite(out,Fs,'Channel_OUT.wav');
[out, Fs]=wavread('Channel_OUT.wav');
subplot(2,2,1); plot(in(53550:53750)); axis([0 200 -0.3 0.3]);%输入信号波形图 subplot(2,2,2); psd(in, 10000, Fs); axis([0 25000 -20 10]);%输入信号频谱图
subplot(2,2,3); plot(out(53550:53750)); axis([0 200 -0.3 0.3]);%输出信号波形图 subplot(2,2,4); psd(out, 10000, Fs); axis([0 25000 -20 10]);%输出信号频谱图 模块五代码
% ch5example9prog3.m
clear;
[recvsignal, Fs]=wavread('Channel_OUT.wav');% 读入信道输出信号数据
t=(1/Fs:1/Fs: length(recvsignal)/Fs)';
fc_local=10000-200; % 本地载波频率9.8KHz
local_carrier=cos(2*pi*fc_local.*t); % 本地载波
xianggan_out=recvsignal.*local_carrier; % 相干解調
[fenzi,fenmu]=butter(3,[300 3400]/(Fs/2)); % 設計300Hz,3400Hz的帶通濾波器 demod_out=filter(fenzi,fenmu,xianggan_out); % 對相干輸出信號進行濾波
wavplay(demod_out/max(demod_out), Fs); % 播放解調音頻
wavwrite(demod_out,Fs,'SSBDemod_OUT.wav'); % 保存輸出信號
subplot(3,2,1); plot(recvsignal(53550:53750)); axis([0 200 -0.3 0.3]);%接收信号波形图
title(['接收信号']);
subplot(3,2,2); psd(recvsignal, 10000, Fs); axis([0 25000 -20 10]);%接收信号频谱图
title(['接收信号频谱图']);
subplot(3,2,3); plot(local_carrier(53550:53750)); axis([0 50 -1 1]);%相干载波波形图
title(['相干波']);
subplot(3,2,4); psd(local_carrier, 10000, Fs); axis([0 25000 -20 10]);%相干载波频谱图
title(['相干波频谱图']);
subplot(3,2,5); plot(demod_out(53550:53750)); axis([0 200 -0.3 0.3]);%解调后波形图 title(['解调信号']);
subplot(3,2,6); psd(demod_out, 10000, Fs); axis([0 25000 -20 10]);%解调后频谱图 title(['解调信号频谱图']);
3. 仿真结果分析
1. 录制声音并会出其频谱
2(发信机的仿真。我们是用移相法进行调制实现,取上边带。先用程序录得一段音频,然后模拟单边带调制及发送过程,仿真波形如下:
3.信道的仿真。设置不同输入信道信噪比,可比较输出信号的不同,设置输入信噪比20db,的仿真波形如下:
4.接收机的仿真。我们采用相干解调,相干载波频率允许一定误差,误差200Hz时仿真效果图
误差200Hz时仍能清晰恢复原信号
六、总结 频率
在本次课程设计中,个人觉得最难得部分在于将SSB调制的物理过程用MATLAB程序来实现。使我意识到自己掌握的MATLAB知识是远远不够的,此部分的学习还有待加强。在编写程序的时候,仔细和认真是必不可少的,往往只是一点点小错误就让你可以寻找半天。
本次设计中我遇到了不少问题,主要有:对信号的采样频率不能过低,过低的采样频率将导致输出波形的失真;在绘制频谱图时进行傅立叶变换函数之间的的关系得合理设置等,但通过查找
以及与同学的一起探讨,都得到了解决。
通过本次课程设计,使我对通信原理这门课的学习有了很大的提高和巩固,更加深入的学习了SSB调制和解调的过程。通过不断的查找资料,开阔了我的知识范围,使我对所学知识有了很好的消化,同时懂得怎样使自己所学的知识和实际相结合,提高自己的动手能力以及独立思考问题和解决问题的能力,增加的不仅是查找的资料上面的知识,更多的搜索的能力。这是对自己本学期以来学习《通信原理》的一个肯定,是对以后的学习的一种督促。
七、参考文献
【1】《通信原理》第六版 樊昌信 曹立娜 编著
【2】《MATLAB
》R2010a 张志勇 杨祖樱 编著
【3】《MATLAB实验指导书》 陈爱菊 张国琴 编写