通信系统仿真课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信系统仿真课程设计报告
题目:基于Matlab的通信系统仿真班级:
姓名:
学号:
指导老师:
一、系统综述
利用Matlab仿真软件,完成如图所示的一个基本的数字通信系统。信号源产生0、1等概分布的随机信号,映射到16QAM的星座图上,同时一路信号已经被分成了实部和虚部,后边的处理建立在这两路信号的基础上。实部、虚部信号分别经过平方根升余弦滤波器,再加入高斯白噪声,然后通过匹配滤波器(平方根升余弦滤波器)。最后经过采样,判决,得到0、1信号,同原信号进行比较,给出16QAM数字系统的误码。
系统框图
二、系统实现
1、随机信号的产生
利用Matlab中自带的函数randint来产生n*k随机二进制信号。源程序如下:
M = 16;
k = log2(M); % 每个符号的比特数
n = 6000; % 输入码元的长度
fd=1;
fc=4*fd;
fs=4*fc;
xEnc = randint(n*k,1); %产生长度为n*k的随机二进制信号
plot(xEnc);
2、星座图映射
将随机二进制信号映射到16QAM星座图上。每四个bit构成一个码子,具体实现的方法是,将输入的信号进行串并转换分成两路,分别叫做I路和Q路。再把每一路的信号分别按照两位格雷码的规则进行映射,这样实际上最终得到了四位格雷码。为了清楚说明,参看表1。
16QAM调制模块程序如下:
function [ gPsk,map ] = qam_modu( M )
gPsk = bitxor(0:sqrt(M)-1,floor((0:sqrt(M)-1)/2))';%转换成格雷码
% 产生16QAM的星座对应点的十进制数值
map = repmat(gPsk,1,sqrt(M))+repmat(sqrt(M)*gPsk',sqrt(M),1);%remat(A,m,n)表示复制m行A,n列A
map = map(:);
end
星座图映射模块程序如下(系统框图中图1的程序):
function xmod = plot_astrology(M,k,mapping,xEnc,d)
t1 = qammod(mapping,M);% 16-QAM调制,将十进制数化为复数
if(d==1)
scatterplot(t1); % 星座图(图1)
title('16QAM调制后的星座图(图1)')
grid on
hold on;
% 加入每个点的对应4位二进制码
for jj=1:length(t1)
text(real(t1(jj))-0.5,imag(t1(jj))+0.5,dec2base(jj-1,2,4));
end
set(gca,'yTick',(-(k+1):2:k+1),'xTick',(-(k+1):2:k+1),...
'XLim',[-(k+1) k+1],'YLim',[-(k+1) k+1],'Box','on',...
'YGrid','on', 'XGrid','on');
end
xlabel ('In-Phase');
hold off;
set(gcf,'Color','w')
xSym = reshape(xEnc,k,numel(xEnc)/k).'; %将一个长信号变化为每4个一组,分为4
个数的矩阵,用于编码
xSym = bi2de(xSym, 'left-msb') ; %将4位二进制数化为10进制数
xSym = mapping(xSym+1); %映射到星座图上对应该的点
xmod = qammod(xSym,M); %转化为复数形式
end
得到的星座图如图1所示,图上注明了每一个点对应的01序列。
图1 16QAM调制后的星座图
从上边的星座图上可以清楚的看到,任意相邻的两个点之间它们对应的4个bit中只有一个有差别,也就是格雷码的特点。而采用格雷码主要目的是当信噪比较大时,也就是系统的误码率比较低的情况下,当出现一个符号错误的情况下,往往只是这个符号中的一个bit位出现了误码,因此这个情况下误码率和误bit率是4:1,这一特性在后边的误码率计算的过程中会有应用。
3、波形成型(平方根升余弦滤波器)
为了避免相邻传输信号之间的串扰,多元符号需要有合适的信号波形。方波是在本地数字信号处理时常见的波形,但在实际传输时这种方波并不合适。根据奈奎斯特第一准则,在实际通信系统中一般均使接收波形为升余弦滚降信号。这一过程由发送端的基带成形滤波器和接收端的匹配滤波器两个环节共同实现,因此每个环节均为平方根升余弦滚降滤波,两个环节合成就实现了一个升余弦滚降滤波。实现平方根升余弦滚降信号的过程称为“波形成形”,通过采用合适的滤波器对多元码流进行滤波实现,由于生成的是基带信号,因此这一过程又
称“基带成形滤波”。
平方根升余弦滤波器的冲激响应
基带平方根升余弦滤波器具有以下定义的理论函数
⎪
⎪⎩
⎪
⎪⎨⎧
=⎥⎦⎤⎢⎣⎡-+==0)()||(2sin
2121)(1)(21f H f f f f H f H N N απ )1(||)1(||)1()1(||αααα+>+≤≤-- 21 s s N R T f == 是奈奎斯特平率,α是滚降系数。 平方根升余弦滤波器的冲激响应很显然的引入了符号间干扰(ISI )即它的冲激响应在相邻 的抽样点上的值并不象升余弦滤波器那样恒为0。然而造成这一后果的原因在于,当我们引入平方根升余弦滤波器的时候,就是认为整个信道,也就是说,包括信号发送端的滤波器和信号接收端的滤波器,总体的效果是避免了符号间干扰(ISI ),所以,单独看这每一个滤波器,勿庸置疑,它们都是存在着符号间干扰(ISI )的。 I 路和Q 路信号经过平方根升余弦滤波器后,成形后的波形如图2所。 低通滤波器输出波形实部、虚部程序如下(系统框图中图2的程序): function ytx = plot_2waybf( rrcFilter,yModUp,delay,overSamp,d ) ytx = conv(rrcFilter,yModUp); if(d==1) figure; subplot(2,1,1); % 通过滤波器前后信号的实部图 stem(real(yModUp(1:100))); hold on; plot(real(ytx(1+delay*overSamp:100+delay*overSamp)),'r-'); xlabel('Samples'); ylabel('Amplitude'); title ('通过RRC前后信号的实部图(图2)'); legend ('通过RRC 前', '通过RRC 后') subplot(2,1,2); % 通过滤波器前后信号的虚部图 stem(imag(yModUp(1:100))); hold on; plot(imag(ytx(1+delay*overSamp:100+delay*overSamp)),'r-'); xlabel('Samples'); ylabel('Amplitude'); title ('通过RRC前后信号的虚部图'); legend ('通过RRC 前', '通过RRC 后') hold off; set (gcf, 'Color', 'w') end end