扩频通信完整系统仿真移动通信matlab.docx
《扩频通信完整系统仿真移动通信matlab.docx》由会员分享,可在线阅读,更多相关《扩频通信完整系统仿真移动通信matlab.docx(17页珍藏版)》请在冰豆网上搜索。
扩频通信完整系统仿真移动通信matlab
重庆交通大学信息科学与工程学院
综合性设计性实验报告
班级:
通信工程
(二)班
姓名(学号):
实验项目名称:
扩频通信系统仿真
实验室(中心):
信息科学与工程学院软件中心
指导教师:
李益才
实验完成时间:
2010年5月6日
序号
项目
标准
评分
1
系统演示(功能)
(40%
按要求完成系统功能且界面友好容错能力强(36-40)「
按要求完成系统功能界面一般有较好的容错能力
(32-35)
基本完成系统功能有一定的容错能力(28-31)
基本完成系统功能(24-27分)
未完成系统功能或他人代做或抄袭(15)
2
设计说明书(50%
课程设计书各项目认真填写,具有清晰的设计思路及软件测试结果分析(45-50)
课程设计书各项目认真填写,具有较为清晰的设计思路并对软件测试结果进行了较为清晰的分析(40-44)
课程设计书各项目认真填写,设计思路正确(35-39)
课程设计书进行为较为认真的填写(30-34)
课程设计书有未完成项或各项填写不属实或他人代做或抄袭(15)
4
纪律遵守、群体协
作等(10%
10
教师签字
总分
一、题目
设计题目)
扩频通信系统仿真
功能描述
对系统要实现的功能进行描述)
系统将基带信号(即信息)的频谱扩展至很宽的频带上,然后再进行传输,即将欲传输的信息数据用伪随机序列编码调制,实现频谱扩展,然后通过信道编码发送出去;接收端采用与发送端完全相同的伪随机序列作为本地解扩信号进行相关处理,以恢复信息,最后进行解调,完成整个系统的接收。
矚慫润厲钐瘗睞枥庑赖。
系统可以在信噪比snr大于-10dB的条件下实现无差错传输。
三、概要设计(根据功能描述,建立系统的体系结构,即将整个系统分解成若干子功能模块,并用框图表示各功能模块之间的衔接关系,并简要说明各模块的功能。
)聞創沟燴鐺險爱氇谴净。
1,系统体系结构:
信号生成扩频
signal
信号
生成器
BPS调制
Chann
d
解
扩
Bandpas
BPSK解调
》Lowpass:
抽样
判决
rsignal
PNCodeos(2n*fc*t)
awgn()PNCode
cos(2*n*fc*t)
2,模块工程描述:
1信号生成器
functionsignal=signalsource(N)
随机生成长度为N的-1、1比特流signal;
2扩频
function[PNCode,signal_spread]=SpreadSpectrum(signal)残骛楼諍锩瀨濟溆塹籟。
生成长度为31的扩频码m序列PNCode;实现随机序列的signal的序列扩频,生成扩频序列signal_spread;
3BPSK调制9
functionsignal_bpsk=BPSKModulation(signal_spread,fb,fc)酽锕极額閉镇桧猪訣锥。
实现扩频序列signal_spread的BPSK调制,生成调制信号signal_bpsk;
4信道
functionsignal_awgn=channel(signal_bpsk,snr)
实现对信号signal_bpsk加载信噪比为snr的高斯白噪声;
5解扩
functionsignal_reverseSpread=ReverseSpread(signal_awgn,PNCode,fc,fb,N)
彈贸摄尔霁毙攬砖卤庑。
实现对信号signal_awgn的直接序列扩频的解扩过程;
6BPSK解调
functionsignal_demodulation=BPSKDemodulation(signal_reverseSpread,fb,fc,N)謀养抟箧飆鐸怼类蒋薔。
实现解扩信号signal_reverseSpread的BPSK解调,且恢复欲传送的比特流signal_demodulation厦礴恳蹒骈時盡继價骚。
四、详细设计(详细说明各功能模块的实现过程,包括用流程图对算法进行描述,所用到的数
据结构等)
1,信号生成器
1代码:
functionsignal=signalsource(N)signal=2*(rand(1,N)>0.5)-1;
②函数输出signal为生成的欲传送的1、-1信息流函数输入N为欲生成的信息流的比特个数
2,扩频
1
茕桢广鳓鯡选块网羈泪
代码:
function[PNCode,signal_spread]=SpreadSpectrum(signal)%%%生成扩频码PNCodea=[1,1,1,1,1];
m=[0,0,1,0,1];PNCode=[];fori=1:
31
R=mod(sum(a.*m),2);PNCode=[PNCode,a(5)];a=[R,a(1:
4)];
endPNCode=2*PNCode-1;%%%进行序列扩频signal_spread=[];fori=1:
length(signal)signal_spread=[signal_spread,signal(i)*PNCode];
end
2函数输入为随机生成的-1、1信息流,函数输出PNCode为长度为31位的扩频码;函数输出signal_spread为扩频序列。
3m序列:
m序列是最长线性移位寄存器序列,由一位寄存器加上反馈信号产生的。
n位线性反馈移位寄存器结构图:
►an-1—
—an-2—
严一1
C2
__-a1
―a0—
C0
C1
Cn-2
Cn-1
模2加法器—
3,BPSK调希9
1代码:
鹅娅尽損鹌惨歷茏鴛賴。
functionsignal_bpsk=BPSKModulation(signal_spread,fb,fc)t=1/(fc*16):
1/(fc*16):
1/fc;
carrier1=[];
carrier2=[];
fori=1:
(fc/fb);
carrier1=[carrier1,cos(2*pi*fc*t+pi/2)];carrier2=[carrier2,cos(2*pi*fc*t-pi/2)];
end
signal_bpsk=[];
fori=1:
length(signal_spread)
ifsignal_spread(i)==1
signal_bpsk=[signal_bpsk,carrier1];
else
signal_bpsk=[signal_bpsk,carrier2];
end
end
2函数输出signal_bpsk为BPSK调制后的信号
函数输入signal_spread为序列扩频后的信号函数输入fb为调制信号的比特速率
函数输入fc为载波信号的频率
3BPSK信号的调制原理框图:
0开关电路
Signal
4,信道
①代码:
functionsignal_awgn=channel(signal_bpsk,snr)
signal_awgn=awgn(signal_bpsk,snr);
②函数输出signal_awgn为加载了高斯白噪声后的信号
函数输入snr为噪声信噪比
5,解扩
1代码:
functionsignal_reverseSpread=ReverseSpread(signal_awgn,PNCode,fc,fb,N)
籟丛妈羥为贍债蛏练淨。
PNCode_spreading=[];
fori=1:
length(PNCode)
forj=1:
16*fc/fb
PNCode_spreading=[PNCode_spreading,PNCode(i)];
end
end
PNCode_spread=[];
fori=1:
N
PNCode_spread=[PNCode_spread,PNCode_spreading];
end
y=PNCode_spread.*signal_awgn;
%%%%fs=59520hzfstop1=2120hzfpass1=3600hzfpass2=3820hzfstop2=5320hz預
頌圣鉉儐歲龈讶骅籴。
loadBandpass;
den=1;
y=[y,zeros(1,length(BandNum)/2)];
signal_reverseSpread=filter(BandNum,den,y);
signal_reverseSpread=signal_reverseSpread(length(BandNum)/2+1:
end);渗釤呛
俨匀谔鱉调硯錦。
2函数输出signal_reverseSpread为解扩后的信号
函数输入PNCode为扩频码,fc为载波频率,fb信息的比特率,N信息流长度
3直接式解扩相关波形参考图:
6,BPSK解调
①代码:
function
signal_demodulation=BPSKDemodulation(signal_reverseSpread,fb,fc,N)泻噦圣骋贶頂廡。
carrier=[];
t=1/(fc*16):
1/(fc*16):
1/fc;
fori=1:
length(signal_reverseSpread)/16carrier=[carrier,cos(2*pi*fc*t+pi/2)];
end
x=signal_reverseSpread.*carrier;
%%%%fs=59520hzfpass1=1240fstop1=2400
loadLowpass;
den=1;
signal_demo=filter(LowNum,den,x);
signal_demodulation=[];
fori=(16*3*31/2):
(16*3*31):
(length(signal_demo)-16*3*31/2)
蔷。
ifsignal_demo(i)>0
signal_demodulation=[signal_demodulation,1];
else
signal_demodulation=[signal_demodulation,-1];
end
铙誅卧
擁締凤袜备訊顎轮烂
end
2函数输出signal_demodulation函数输入signal_reverseSpreadfb为生成的信息流的比特速率fc为载波频率,
N生成的信息流的个数
3BPSK言号的解调原理框图:
为恢复的1、-1比特流;
为解扩后信号
定时脉冲
Cos(2*fc*n*t)与发送端载波同频同相
、存在哪些不足
五、测试结果及存在的问题(说明系统的运行效果(附上运行界面图片)以及预期的解决办法)
1,测试结果:
图1欲传送的比特信息流signal与扩展后的信号signal_spread
图2BPSK调制后的信号signal_bpsk全图与局部图
如』.口齢1=号bpsk
图3加载高斯白噪声的信号signal_awgn全图与局部图
Snr=20dB;
Snr=5dB;
导viBnal
加钦.丁声rSM炖^nDn«l«¥>怦审!
HiHl5-
图4与PNCode相乘的信号与经过带通滤波器的信号signal_reverseSpread
>T^Ncnd!
>ilJ韋白*H・■*#
母t±*站勞白勺苗哥vignalr-»v*ri->^piBAEi
图5相干相乘之后的信号与过低通滤波的信号与恢复的原始信号signal_reverse
图6程序运行后的workspace
EX
崔雷S
*St注1
Value
N
1Q
double
PNCcde
<1x31dauble>
double
fb
1240
double
fc
3720
double
signal
-111-
double
signal
awgn
<1x14880
double>
double
signal
bpsk
<1x14880
dauble>
double
—
signal
_demodu...
H111-1
-111-
double
一
signal
reverse.
<1x14880
double>
double
—
signal
spread
<1x310dout)1e>
double
Tb
snr
-5
double
匚中*丁—litDiF看口七0*戸]樹心:
rk玉卫■□亡
2,本次设计的改进:
①代码繁琐:
例子1在实现序列扩频的时候,开始的代码写的很复杂:
signal_spreading=[];
PNCode_spreading=[];
fori=1:
length(signal)
forj=1:
31
signal_spreading=[signal_spreading,signal(i)];end
PNCode_spreading=[PNCode_spreading,PNCode];end
signal_spreading=2*signal_spreading-1;PNCode_spreading=2*PNCode_spreading-1;
signal_spread=signal_spreading.*PNCode_spreading;
改进如下(已在代码中使用):
PNCode=2*PNCode-1;
signal_spread=[];
fori=1:
length(signal)
signal_spread=[signal_spread,signal(i)*PNCode];
end;
例子2:
在实现BPSK解调模块时,进行了2次抽样恢复原信号:
fori=(16*3/2):
(16*3):
(length(signal_demo)-16*3/2)
ifsignal_demo(i)>0
signal_demodulation=[signal_demodulation,1];
else
signal_demodulation=[signal_demodulation,-1];
end
end
signal_reverse=[];
i=1;
forj=16:
31:
31*N
signal_reverse(i)=signal_demodulation(j);
i=i+1;
end
改进:
可以改为1次抽样即可,如下(代码中已使用):
fori=(16*3*31/2):
(16*3):
(length(signal_demo)-16*3*31/2)贓熱俣阃歲匱阊邺
镓騷。
ifsignal_demo(i)>0
signal_demodulation=[signal_demodulation,1];
else
signal_demodulation=[signal_demodulation,-1];
end
end
2本次试验可以使用信号的频谱进行分析,也便能更深的扩频系统中信号的传输;
3序列扩频码可以使用m序列,也可以使用哈达码,复合码,Gold序列等实现;
哈达码的生成:
H=[1];
fori=1:
5
H=[H,H;H,-H];
end
4过多的使用了for语句的嵌套;
5实验在解扩模块中并没有将31位码元解扩为1位码元,从而没有实现真正的解扩,而是在进行
BPSK调制的时候进行抽样判决时才实现31—1的码元的转变;但是还没想到解决的方法?
坛搏乡囂
忏蒌鍥铃氈淚。
六、课程设计心得体会(谈谈自己在课程设计过程中的心得体会)
对扩频系统的理解:
因为之前有过课程设计的经验,于是刚开始的时候没有急于编写代码,而是仔细认真研究书本上的知识,进行消化和理解。
①定性了分析了整个扩频系统;②了
解了扩频系统研究的意义;③更加熟悉和掌握BPSK调制的过程;④了解了扩频码的产生方法;
⑤熟悉和掌握了在matlab上设计滤波器以及函数的调用方式。
蜡變黲癟報伥铉锚鈰赘。
课程设计的收获:
本次课程设计结束了,受益良多。
它带来不仅是知识上的收获,而且精神上的收获也是无尽的。
①本次课程设计是我在大学寥寥可数的几次设计性实验之一,是和同学们一起奋斗的一场经历。
看到同学们的努力,看到老师的辛勤,自己也都不敢懈怠了。
②实验开始的那一刻,告诫自己没有失败,老师既然出了设计项目,既然已经选择的这个设计项目,就不许中途退出,这不是游戏,我想那一刻要的是勇气,是决心吧!
③实验成功的那一刻,收获的是信心,是对自己对于matlab学习的一个肯定,也是对于《移动通信原理》中扩频系统的学习的一种肯定,更是对以后的学习的一种督促,也是对自己的未来大学校门外的生活的一个鼓励。
④还有就是在设计肯定会有不甚理解的地方,这就需要我们自己动手查找资料,增加的不仅是查找的资料上面的知识,更多的搜索的能力。
買鲷鴯譖昙膚遙闫撷凄。
编程体会:
①在编写代码的时候,不急于刚开始就对着电脑编写程序,一定要理解和整理
出来你所想要做什么;②从前都没有画流程图的习惯,不过此次试验之前都有仔细分析,画流
程图,发现在代码编写的过程中这样不仅效率高,而且成功率还快;③在程序中过多的嵌套for
循环语句,所以很容易不小心就会导致长度不匹配等错误,而且这样使得程序的效率降低,所以程序中应尽量避免for语句的嵌套。
④经常有同学到后期的代码编写出现错误,可是重新检查的时候有些代码却忘记了含义,尤其是滤波器的数值的设置,导致不得不重新设置检验正确性,所以代码一定要有注释,这个很重要!
!
⑤还有就是一定要仔细,仔细,再仔细。
綾镝鯛駕櫬鹕踪韦辚糴。
最后感谢李老师本学期的辛苦教学!