CDMA蜂窝移动通信期末课程论文基于MATLAB的IS95系统仿真.doc
《CDMA蜂窝移动通信期末课程论文基于MATLAB的IS95系统仿真.doc》由会员分享,可在线阅读,更多相关《CDMA蜂窝移动通信期末课程论文基于MATLAB的IS95系统仿真.doc(21页珍藏版)》请在三一办公上搜索。
1、CDMA 期 末 论 文基于MATLAB的IS-95系统仿真 课程名称 CDMA蜂窝移动通信 姓 名 学 号 专 业 成 绩 任课老师 上课学期 1 作业要求l 分析给出的源程序,逐行给出中文注释,并分析仿真结果。l 按照如图1所示的框图设计一个CDMA系统,并进行仿真。信源卷积编码交织编码扩频加扰码调制AWGN信道解调解扰码信宿解卷积解交织解扩图1 CDMA系统框图2 题目一2.1 源程序注释2.1.1 主程序部分%main_CDMA_forward.m%此函数用于IS-95前向链路系统的仿真,包括扩%频调制,匹配滤波,RAKE接收等相关通信模块。%但没有在频带上进行调制仿真。%仿真环境:
2、加性高斯白噪声信道.%数据速率 = 9600 KBps% clear allclose allclc disp(-start-);% 定义通信仿真全局变量global Zi Zq Zs show R Gi Gq% Zi I支路扩频PN序列生成器状态% ZQ Q支路扩频PN序列生成器状态% Zs 扰码PN序列生成器状态% show 指示是否画出仿真过程各部分产生的输出% R 仿真时码元宽度% Gi I支路扩频PN序列% Gq Q支路扩频PN序列 clear j;show = 0;SD = 0; % 选择软/硬判决接收 %-主要的仿真参数设置-% 信道数据率为9600 bpsBitRate = 9
3、600;% 码片速率为1.2288 MHzChipRate = 1228800;% 消息码元个数N = 184;% 匹配滤波器类型-升余弦MFType = 1; R = 5; %+Viterbi生成多项式+% 维特比译码器(译卷积码)G_Vit = 1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1;% 生成矩阵的长度K = size(G_Vit, 2);% 输出码片数L = size(G_Vit, 1);%+ %+Walsh矩阵+% 规定需要的Walsh序列长度WLen = 64;% 生成 64 bit Walsh序列1010.Walsh = reshape(1;0*o
4、nes(1, WLen/2), WLen , 1);%Walsh = zeros(WLen ,1);%+ %+扩频调制PN码的生成多项式+%Gi = 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1;%Gq = 1 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1; % I信道扩频PN序列生成多项式Gi_ind = 15, 13, 9, 8, 7, 5, 0;% I信道扩频PN序列生成多项式Gq_ind = 15, 12, 11, 10, 6, 5, 4, 3, 0;% 初始化序列Gi(16 bit,全零)Gi = zeros(16, 1);% 根据生成多项式Gi_in
5、d将对应位置1Gi(16-Gi_ind) = ones(size(Gi_ind);% 初始化I路信道PN码生成器的初始状态Zi = zeros(length(Gi)-1, 1); 1;% 初始化序列Gi(16 bit,全零)Gq = zeros(16, 1);% 根据生成多项式Gq_ind将对应位置1,得到二进制生成多项式Gq(16-Gq_ind) = ones(size(Gq_ind);% Q路信道PN码生成器的初始状态Zq = zeros(length(Gq)-1, 1); 1;%+ %+扰码生成多项式+% 扰码序列生成多项式Gs_ind = 42, 35, 33, 31, 27, 26,
6、 25, 22, 21, 19, 18, 17, 16, 10, 7, 6, 5, 3, 2, 1, 0;% 初始化序列GsGs = zeros(43, 1);% 根据生成多项式Gs_ind将对应位置1,得到二进制生成多项式Gs(43-Gs_ind) = ones(size(Gs_ind);% 长序列生成器的初始状态Zs = zeros(length(Gs)-1, 1); 1;%+ %+AWGN信道+% 扩频增益EbEc = 10*log10(ChipRate/BitRate);%EbEcVit = 10*log10(L);% 仿真信噪比范围(dB)% EbNo = -2 : 0.5 : 6.
7、5;EbNo = -2 : 0.5 : 4;%+ %- %-主程序- % 初始化向量ErrorsB = ; ErrorsC = ; NN = ;% ErrorsB% ErrorsC% NN% 输出信息说明采用的维特比译码判决类型if (SD = 1) fprintf(n SOFT Decision Viterbi Decodernn);else fprintf(n HARD Decision Viterbi Decodernn);end % 对信噪比范围内每个数字进行仿真for i=1:length(EbNo) % 输出当前仿真信噪比 fprintf(nProcessing %1.1f (dB
8、), EbNo(i); iter = 0; % 仿真计数器 ErrB = 0; % 出错的比特数(编码前) ErrC = 0; % 出错的子码数(编码后) while (ErrB 300) & (iter 0); % 输出已编码、交织并加扰的消息比特与所用到的扰码 %(码率:19.2 kbps) TxChips, Scrambler = PacketBuilder(TxData, G_Vit, Gs); % 下面进行扩频调制,调制后码率为1.2288Mcps x PN MF = Modulator(TxChips, MFType, Walsh); %+ %+%信道产生高斯白噪声 noise =
9、 1/sqrt(2)*sqrt(R/2)*( randn(size(x) + j*randn(size(x)*10(-(EbNo(i) - EbEc)/20); %j*randn(size(x)*10(-(EbNo(i) - EbEc)/20); %向已调信号中混入加性高斯白噪声 r = x+noise; %+ %+接收机+ % 软判决,输出速率为19.2 Kcps 经过卷积编码的序列 RxSD = Demodulator(r, PN, MF, Walsh); % 对Rake接收机解调后的信号进行过零比较 RxHD = (RxSD0); if (SD) % 如果选择了软判决则会进行软判决, %
10、 并进行解扰、解交织维特比译码 RxData Metric= ReceiverSD(RxSD, G_Vit, Scrambler); else % 进行硬判决,并进行解扰、解交织维特比译码 RxData Metric= ReceiverHD(RxHD, G_Vit, Scrambler); end %+ if(show) % 画出软判决输出结果 subplot(311); plot(RxSD, -o); title(Soft Decisions); % 将判决结果与发送序列异或,显示出错码(维特比译码前) subplot(312); plot(xor(TxChips, RxHD), -o);
11、title(Chip Errors); % 将收发数据进行异或,显示出错码 subplot(313); plot(xor(TxData, RxData), -o); title(Data Bit Errors. Metric = , num2str(Metric); pause; end if(mod(iter, 50)=0) % 如果已循环次数为50的倍数则打印.将变量保存 fprintf(.); % 将变量保存到硬盘 save TempResults ErrB ErrC N iter end % 计算编码前,解码后出错的消息比特(9600 Bps)数量 ErrB = ErrB + sum(
12、xor(RxData, TxData); % 计算经过编码出错的子码(19.2 kBps)数 ErrC = ErrC + sum(xor(RxHD, TxChips); % 循环次数加1 iter = iter+ 1; end % 生成误比特数向量 ErrorsB = ErrorsB; ErrB; % 生成误码数向量 ErrorsC = ErrorsC; ErrC; % 计算本次共仿真的消息比特数 NN = NN; N*iter; % 保存所有产生的数据 save SimData *end %+误码率计算+% 计算误码率(卷积编码前的信号)PerrB = ErrorsB./NN;% PerrB
13、1 = ErrorsB1./NN1;% 计算误码率(卷积编码后的信号)PerrC = ErrorsC./NN;% BPSK调制理论误码率(无卷积编码与扩频)Pbpsk= 1/2*erfc(sqrt(10.(EbNo/10);% 有维特比译码但无扩频的理论误码率PcVit= 1/2*erfc(sqrt(10.(EbNo-EbEcVit)/10);% 有扩频但无维特比译码的理论误码率Pc = 1/2*erfc(sqrt(10.(EbNo-EbEc)/10);%+ %+性能仿真显示+figure;semilogy(EbNo(1:length(PerrB), PerrB, b-*);hold on;%
14、 %semilogy(EbNo(1:length(PerrB1), PerrB1, k-o);% hold on;semilogy(EbNo(1:length(PerrC), PerrC, b-o);grid on;semilogy(EbNo, Pbpsk, b-.);semilogy(EbNo, PcVit, k-.x);ylabel(BER);semilogy(EbNo, Pc, b-.x);xlabel(信噪比/dB);ylabel(误码率);%+disp(-end-);%-2.1.2 PacketBuilder函数用于信号传输之前的卷积编码和交织编码和加扰码% *beginning o
15、f file*%PacketBuilder.mfunction ChipsOut, Scrambler = PacketBuilder(DataBits, G, Gs); % %此函数用于产生IS-95前向链路系统的发送数据包 %+variables+% DataBits 发送数据(二进制形式)% G Viterbi编码生成多项式% Gs 长序列生成多项式(扰码生成多项式)% ChipsOut 输入到调制器的码序列(二进制形式)% Scrambler 扰码%+ % 全局变量global Zs % 取得卷积码的约束长度 K = 9K = size(G, 2); % 取得对于每一位消息码编码器的输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CDMA 蜂窝 移动 通信 期末 课程 论文 基于 MATLAB IS95 系统 仿真
链接地址:https://www.31ppt.com/p-4135393.html