基于卷积编码的扩频通信系统软件平台设计 -打印

上传人:y****3 文档编号:12835153 上传时间:2020-05-30 格式:DOC 页数:24 大小:393.50KB
返回 下载 相关 举报
基于卷积编码的扩频通信系统软件平台设计 -打印_第1页
第1页 / 共24页
基于卷积编码的扩频通信系统软件平台设计 -打印_第2页
第2页 / 共24页
基于卷积编码的扩频通信系统软件平台设计 -打印_第3页
第3页 / 共24页
点击查看更多>>
资源描述
基于卷积编码的扩频通信系统 软件平台设计 班级:通信 131 姓名: 崔校通 学号:201300484316 . . 目 录 一 设计内容及要求 .3 1.1 设计目的 .3 1.2 设计任务 .4 1.3 设计内容 .4 二 设计原理 .5 2.1 数据源 .5 2.2 卷积编码 .5 2.3 M 序列发生器 .6 2.4 扩频与解扩 .6 2.4.1 扩频 .6 2.4.2 解扩 .7 2.5 VITERBI 译码 .7 2.6 可靠度评估 .8 三 软件仿真及结果分析 .9 3.1 信源调制 .9 3.1.1 信息码生成模块 .9 3.1.2 卷积编码 .9 3.1.3 伪随机码生成模块 .10 3.1.4 扩频调制模块 .11 3.1.5BPSK 调制模块 .12 3.2 信息传输 .13 3.2.1 加噪模块 .13 3.3 信宿解调 .14 3.3.1 BPSK 解调模块 .14 3.3.2 解扩模块 .15 3.3.3 VITERBI 译码 .16 . . 3.4 性能分析 .19 3.4.1 卷积扩频分析 .19 3.4.2 信源信宿比较 .20 3.4.3 频谱分析 .20 四 心得体会 .22 参考文献 .23 . . 前言 扩频通信是现代通信系统中新的通信方式,它具有较强的抗干 扰、抗衰落和抗多径性能,频谱利用率高。扩频信号是不可预测的、 伪随机的宽带信号,其带宽远大于要传输的数据(信息)带宽,同时 接收机中必须有与宽带载波同步的副本。在发端输人的信息先调制 形成数字信号,然后由扩频码发生器产生的扩频码序列去调制数字 信号以展宽信号的频谱,展宽后的信号再调制到射频发送出去。在 接收端收到的宽带射频信号,变频至中频,然后由本地产生的与发 端相同的扩频码序列去相关解扩,再经信息解调,恢复成原始信息 输出。通信系统都要进行 3 次调制和相应的解调。一次调制为信息 调制。与一般通信系统比较,多了扩频调制和解扩部分。扩频通信 具备如下特征:(1)数字传输方式;(2) 传输信号的带宽远大于被传信 息带宽;(3)带宽的展宽,是利用与被传信息无关的函数(扩频函数) 对被传信息的信元重新进行调制实现的;(4)接收端用相同的扩频函 数进行相关解调( 解扩) ,求解出被传信息的数据。用扩频函数(也称 伪随机码) 调制和对信号相关处理是扩频通信有别于其他通信的两大 特点。 一 设计内容及要求 1.1 设计目的 . . (1)学习通信中的纠错编码技术及其主要应用; (2)掌握扩频通信原理技术及其特点,了解其在通信系统中特别是 第三代移动通信系统所采用的码分多址(CDMA)技术中的应用; (3)学会用 C 或 MATLAB 软件方法设计一般通信系统; (4)学习 CDMA 手机的信息处理过程,掌握其基带电路主要组成部 分和工作原理及功能;模拟 CDMA 手机的信息处理过程。完成基带电 路主要组成部分的软件平台设计并评估系统的可靠性。 1.2 设计任务 (1)建立 CDMA 手机处理信息的卷积编码扩频通信系统 (2)软件实现卷积编码和 Viterbi 译码的算法 (3)软件实现扩频通信系统的扩频与解扩 (4)评估卷积编码扩频通信系统的可靠性 1.3 设计内容 本次课程设计主要实现的任务有:建立卷积编码扩频通信系统; 软件实现卷积编码和 Viterbi 译码的算法;软件实现扩频通信系统的 扩频与解扩;评估卷积编码扩频通信系统的可靠性。系统设计的总 体框图如图 1-1: 卷积编码 扩频 信道 解扩 Viterbi 译码 数据源 判决数据 m 序列 发生器 . . 图 1-1 二 设计原理 2.1 数据源 随机产生 b(t)=b(0),b(1),b(2),的二进制数据 2.2 卷积编码 卷积码(又称连环码),是由伊莱亚斯(P.Elis)提出的一种非分 组码。它把 k 比特信息段编成 n 比特的码组,该码组不仅同当前的 k 比特信息段有关,而且还同前面的(N-1)个信息段有关联(N 为大于 1 的整数)。通常,把卷积码记作(n,k,N),其中 k 为输入码元数,n 为输出码元数,N 为约束长度,表示编码器的存储器级数。卷积编 码属于信道编码,主要用来纠正码元的随机差错,它是以牺牲效率 来换取可靠性,利用增加监督位,进行检错和纠错。 卷积码编码器是一个由 k 个输入端、n 个输出端,且具有(N-1) 或 m 节移位寄存器构成的有限状态记忆系统,通常称为时序网络, 其原理如图 2-1 所示。 . . 图 2-1 2.3 m 序列发生器 二进制的 m 序列是一种重要的伪随机序列,有良好的自相关特 性,有时称为伪噪声序列。m 序列是最长线性移位寄存器序列的简 称。顾名思义,m 序列是由多级移位寄存器或其延迟元件通过线性 反馈产生的最长的码序列。它能产生的的最大长度的码序列为 2n- 1 位。 2.4 扩频与解扩 将编码输出与扩频码相乘,即完成扩频;将扩频后的信号(叠 加有噪声)与扩频码相乘,即为解扩。 2.4.1 扩频 扩频通信的基本特点是传输信号所占用的频带宽度(W)远大于原 始信息本身实际所需的最小(有效)带宽(DF),其比值称为处理增益 Gp,其中 Gp = W/DF。 . . 任何信息的有效传输都需要一定的频率宽度,为了充分利用有 限的频率资源,增加通路数目,人们广泛选择不同调制方式,采用 宽频信道(同轴电缆、微波和光纤等)和压缩频带等措施,同时力求 使传输的媒介中传输的信号占用尽量窄的带宽。因现今使用的电话、 广播系统中,无论是采用调幅、调频或脉冲编码调制制式,Gp 值一 般都在十多倍范围内,统称为“窄带通信” ,而扩频通信的 Gp 值, 高达数百、上千,称为 “宽带通信” 。如图图 2-2 为扩频系统能够 一般原理图: 图 2-2 2.4.2 解扩 正如在一般的窄带通信中,已调信号在接收端都要进行解调来 恢复所传的信息。在扩频通信中接收端则用与发送端相同的扩频码 序列与收到的扩频信号进行相关解调,恢复所传的信息。换句话说, 这种相关解调起到解扩的作用。即把扩展以后的信号又恢复成原来 所传的信息。这种在发端把窄带信息扩展成宽带信号,而在收端又 将其解扩成窄带信息的处理过程,会带来一系列好处。弄清楚扩频 和解扩处理过程的机制,是理解扩频通信本质的关键所在。 . . 基本的扩频过程就是在收端产生与发端完全相同的 PN 码,对收 到的扩频信号,在平衡调制器中再一次进行二相相移键控调制。可 以看出发端相移键控调制后的信号在收端又被恢复成原来的载波信 号。当然一个必要的条件是本地的 PN 码信号的相位必须和收到的相 移后的信号在相移点对准,才能正确地将相移后的信号再翻转过来。 2.5 Viterbi 译码 Viterbi 译码算法是一种卷积码的解码算法。卷积码的 Viterbi 译码是根据接收码字序列寻找编码时通过网格图最佳路径 的过程 ,找到最佳路径即完成了译码过程 ,并可以纠正接收码字 中的错误比特。所谓“最佳” ,是指最大后验条件概率:P( C/ R) = maxj P ( Cj/ R) ,其译码流程为: (1)根据接收码符号计算出相应的分支量度值; (2)进入某一状态的分支量度与其前状态路径量度累加求和; (3)比较到达当前状态的新的路径量度的大小,选择最大者作为新 的状态路径量度存储起来,并保存与此路径对应的码字; (4)对所有状态都实施上述加、比、选运算; (5)在每一译码时刻,满足延时就从 256 条留存路径中,选择路 径量度最大的一条路径作为译码数输出; (6)进入下一译码时刻,重复以上步骤,直至译码结束。 2.6 可靠度评估 用误码率(BER)指标,计算公式 . . )(数 据 量 尽 可 能 大总 输 入 数 据检 测 到 的 数 据 错 误 数BER 比较两个数据 三 软件仿真及结果分析 3.1 信源调制 3.1.1 信息码生成模块 code_length=20; %信息码元个数 N=1:code_length; rand(seed,0); x=sign(rand(1,code_length)-0.5); %信息码从 0、1 序列变 成-1、 1 序列 x1=rectpulse(x,800);%每个码元内采样 800 个点 plot(x1); axis(0 16000 -1.5 1.5); title(信源信息码序列); grid on; 生成信息码的波形图 数据源 发射端 接收端 判决数据 . . 3.1.2 卷积编码 function output=cnv_encd(g,k0,input) if rem(length(input),k0)0 input=input,zeros(size(1:k0-rem(length(input),k0); end n=length(input)/k0; if rem(size(g,2),k0)0 error(Error,g is not of the right size.) end l=size(g,2)/k0; n0=size(g,1); u=zeros(size(1:(l-1)*k0),input,zeros(size(1:(l-1)*k0); u1=u(l*k0:-1:1); for i=1:n+l-2 u1=u1,u(i+l)*k0:-1:i*k0+1); end uu=reshape(u1,l*k0,n+l-1); output=reshape(rem(g*uu,2),1,n0*(l+n-1); * g=0 0 1 0 1 0 0 1;0 0 0 0 0 0 0 1;1 0 0 0 0 0 0 1; k0=2;input=1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1; . . output=cnv_encd(g,k0,input) * g=1 0 1;1 1 1;k0=1; channel_output=0 1 1 0 1 1 1 1 0 1 0 0 0 1; decoder_output,survivor_state,cumulated_metric=viterbi(g,k,channel_o utput) 3.1.3 伪随机码生成模块 function y = mgen(g,state,N) %输入 g:m 序列生成多项式(10 进制输入) %state:寄存器初始状态(10 进制输入) %N:输出序列长度 figure(1) g=19;state=8;N=2000; gen = dec2bin(g)-48; M = length(gen); curState = dec2bin(state,M-1) - 48; for k =1:N y(k) = curState(M-1); a = rem(sum( gen(2:end).*curState),2); curState = a curState(1:M-2); end x_code=sign(y-0.5); pn=rectpulse(x_code,8);%每个伪码元内采样 8 个点 plot(pn); axis(0 600 -1.5 1.5); title(伪随机码序列); grid on; 生成伪随机码的波形图 . . 3.1.4 扩频调制模块 gt=x1.*pn; plot(gt); axis(0 1000 -1.5 1.5); title(复合码序列); grid on; 生成的复合码波形图 . . 3.1.5BPSK 调制模块 %用 BPSK 调制 fs=20e6; f0=30e6; for i=1:2000 AI=2; dt=fs/f0; n=0:dt/7:dt; %一个载波周期内采样 8 个点 cI=AI*cos(2*pi*f0*n/fs); x_bpsk(1+(i-1)*8):i*8)=gt(1+(i-1)*8):i*8).*cI end plot(x_bpsk); axis(0 200 -2.5 2.5); title(BPSK 调制后的波形); grid on; 生成 BPSK 调制后的波形图 3.2 信息传输 3.2.1 加噪模块 sigma=0.1; . . nt=sigma*randn(1,20); nt1=rectpulse(nt,800); gt1=gt+nt1; fs=20e6; f0=30e6; for i=1:2000 AI=2; dt=fs/f0; n=0:dt/7:dt; %一个载波周期内采样 8 个点 cI=AI*cos(2*pi*f0*n/fs); x_bpsk1(1+(i-1)*8):i*8)=gt1(1+(i-1)*8):i*8).*cI end plot(x_bpsk1); axis(0 200 -2.5 2.5); title(加噪后已调波的波形); grid on; 生成加噪后已调波的波形图 3.3 信宿解调 3.3.1 BPSK 解调模块 AI=1; dt=fs/f0; . . n=0:dt/7:dt; %一个载波周期内采样八个点 cI=AI*cos(2*pi*f0*n/fs); for i=1:2000 s(1+(i-1)*8):i*8)= x_bpsk1(1+(i-1)*8):i*8).*cI; end plot(s); axis(0 200 -2.5 2.5); title(解调后的波形); grid on; 生成 BPSK 解调后的波形图 3.3.2 解扩模块 %相关解扩 jk_code=s.*pn; %低通滤波 wn=5/1000000; %截止频率 wn=fn/(fs/2),这里 fn 为扩 频码的带宽 5M b=fir1(16,wn); H=freqz(b,1,16000); xx=filter(b,1,jk_code); plot(xx); axis(0 16000 -1.5 1.5); . . title(解扩并滤波后的波形); grid on; 生成解扩后的波形图 3.3.3 Viterbi 译码 functiondecoder_output,survivor_state,cumulated_metric=viterbi(g,k,ch annel_output) n=size(g,1); if rem(size(g,2),k)=0 error(Size of g and k do not agree) end if rem(size(channel_output,2),n)=0 error(channel output not of the right size) end L=size(g,2)/k; number_of_states=2(L-1)*k); for j=0:number_of_states-1 for l=0:2k-1 next_state,memory_contents=nxt_stat(j,l,L,k); input(j+1,next_state+1)=l; branch_output=rem(memory_contents*g,2); nextstate(j+1,l+1)=next_state; output(j+1,l+1)=int_state(branch_output); end . . end state_metric=zeros(number_of_states,2); depth_of_trellis=length(channel_output)/n; channel_output_matrix=reshape(channel_output,n,depth_of_trellis); survivor_state=zeros(number_of_states,depth_of_trellis+1); for i=1:depth_of_trellis-L+1 flag=zeros(1,number_of_states); if istate_metric(j+1,1)+branch_metri c)|flag(nextstate(j+1,l+1)+1)=0) state_metric(nextstate(j+1,l+1)+1,2)=state_metric(j+1,1)+branch_metric; survivor_state(nextstate(j+1,l+1)+1,i+1)=j; flag(nextstate(j+1,l+1)+1)=1; end end end state_metric=state_metric(:,2:-1:1); end for i=depth_of_trellis-L+2:depth_of_trellis . . flag=zeros(1,number_of_states); last_stop=number_of_states/(2(i-depth_of_trellis+L-2)*k); for j=0:last_stop-1 branch_metric=0; binary_output=bin_state(output(j+1,1),n); for ll=1:n branch_metric=branch_metric+metric(channel_output_matrix(ll,i),binary _output(ll); end if (state_metric(nextstate(j+1,1)+1,2)state_metric(j+1,1)+branch_metric)| flag(nextstate(j+1,1)+1)=0) state_metric(nextstate(j+1,1)+1,2)=state_metric(j+1,1)+branch_metric; survivor_state(nextstate(j+1,1)+1,i+1)=j; flag(nextstate(j+1,1)+1)=1; end end state_metric=state_metric(:,2:-1:1); end state_sequence=zeros(1,depth_of_trellis+1); state_sequence(1,depth_of_trellis)=survivor_state(1,depth_of_trellis+1); for i=1:depth_of_trellis state_sequence(1,depth_of_trellis- i+1)=survivor_state(state_sequence(1,depth_of_trellis+2- i)+1),depth_of_trellis-i+2); end decoder_output_matrix=zeros(k,depth_of_trellis-L+1); for i=1:depth_of_trellis-L+1 dec_output_deci=input(state_sequence(1,i)+1,state_sequence(1,i+1)+1); dec_output_bin=bin_state(dec_output_deci,k); decoder_output_matrix(:,i)=dec_output_bin(k:-1:1); . . end decoder_output=reshape(decoder_output_matrix,1,k*(depth_of_trellis- L+1); cumulated_metric=state_metric(1,1); 3.4 性能分析 3.4.1 卷积扩频分析 -12 -11 -10 -9 -8 -7 -6 -5 -4 -310-3 10-2 10-1 100 卷卷卷卷卷卷卷 卷卷卷卷L=15卷卷卷卷L=31 -12 -11 -10 -9 -8 -7 -6 -5 -4 -310-4 10-3 10-2 10-1 100 卷卷卷卷L=15 卷卷卷卷卷L=15 . . -12 -11 -10 -9 -8 -7 -6 -5 -4 -310-3 10-2 10-1 100 卷卷卷卷L=15 卷卷卷卷L=15 3.4.2 信源信宿比较 3.4.3 频谱分析 . . 通过以上图形可以得出的结论如下: 在加入卷积后,系统的抗干扰能力比没有加卷积的时候强;加 入扩频比不加扩频的时候抗干扰能力强,并且扩频因子越大,系统 的抗干扰能力越强。在相同条件下,码率越小系统的抗干扰能力越 . . 好。 四 心得体会 转眼间方向课程设计就结束了。这次课程设计也是我们大学学 习中的最后一次课程设计了,因此对于这次课程设计我也更加珍惜, 比以前更加认真对待。回想以前的多次课程设计,似乎也觉得这次 比以前学到的东西要多。毕竟这次课程设计是我们专业方向的课设, 对专业只是的要求也比较高,不仅让我们能巩固到进入大学以来所 学的专业知识,更让我们提前体会到进入社会后从事专业技术工作 的状态。 这次课程设计要求我们用到 MATLAB 软件工具或者是 C 语言进行 软件的编程,来实现课设中所要求的卷积编码和 Viterbi 译码的算 法以及实现扩频通信系统的扩频与解扩。这就要求我们对 MATLAB 和 C 语言能够熟练应用,面对复杂的程序编写刚开始我和我的小组 成员有点儿手足无措,不知从哪里入手,但经过老师对课设原理的 基本讲解后,我们对课设实现的基本模块也有了初步了解。在这个 基础上我们有从图书馆借来 MATLAB 的相关书籍来作为参考,也把和 通信原理课本相关的知识内容进行了巩固。最后我们针对课设 原理的模块各个击破,最后终于把程序完成了,病进行了相关的仿 真和调试。 通过这次课设又让我进一步学习到了小组合作的重要性,也学到 了在面对困难及问题的时候不能慌张,要仔细认真的从中一步步找 错误,急于求成只能让问题更复杂。在以后毕业的工作中更需要这 . . 种合作精神以及严谨认真的态度。这些对我们以后的发展都很重要。 参考文献 【1】兴雯等.扩展频谱通信及其多址技术M.西安:西安电子科技大 学出版社, 2004.【2】蓉,李署坚. 扩频通信技术J. 无线电工程, 2001,(S1) . 【3】淑君,柳铎. 浅谈扩频通信技术及其应用J. 山东电子, 2004,(01) . 【4】孟令彪. 无线扩频通信技术述略J. 商场现代化, 2004,(15) . 1998,(06) . 【6】徐明元,邵玉斌.matlab 仿真在通信与电子工程中的应用M. 西安电子科技大学出版社,2001 【7】郭海燕,毕红军.MATLAB 在伪随机码的生成及仿真中的应用J. 计算机仿真,21(3),2004.3
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!