信息传输系统,系统包括卷积编码,QPSK调制,信道传输,QPSK解调以及维特比译码

·调制技术

通信技术融入计算机和数字信号处理技术以后发生了革命性的变化,它和计算机技术、数字信号处理技术结合是现代通信技术的标志。广义上讲,用任何方法,通过任何传输媒质将消息从一个地方传送到另一个地方,均可称为通信。

通信的目的是为了进行消息的有效传递与交换。直到19世纪初,人们开始利用电信号传输消息。从1837年莫尔斯(EB.Mors)e发明电报算起,一个世纪以来,通信的发展大致经历了三大阶段,首先,以1837年发明电报(莫尔斯电码)为标志的通信初级阶段;其次以1948年香农(Shnnaon)提出的信息论开始的近代通信阶段;最后,以20世纪70年代出现的光纤通信为代表的和以综合业务数字网迅速崛起为标志的现代通信阶段。光纤通信技术、卫星通信技术和移动通信技术形成现代通信技术的三大主要发展方向。

数字调制技术作为这些领域中极为重要的一个方面,也得到了迅速发展。全数字调制解调器专用集成电路使得通信传输中的发送与接收设备可以更加紧凑,成本更低,减小功耗并大大提高设备的可靠性。另一方面,全数字调制解调技术的采用有可能使各类现代调制解调技术融合一体,使该调制解调器不仅适用于各类调制体制,而且速率也可变。

随着数字调制技术的出现,在有限的带宽内传输高速的数据已成为可能,并且比过去使用的模拟调制,如调幅(AM)和调频(FM)、频移键控(FSK)、开关键控(OOK)、脉宽调制P(WM)、脉位调制(PPM)、脉幅调制(PAM)等技术相比有更高的可靠性和抗扰性。

新型的数字调制与过去的一些离散数字/模拟调制技术有很多相同的地方。像开关键控和频移键控,它们在离散的时间上有离散的状态—无论这些状态是幅度、相位还是幅度/相位。通过这些状态可以定义被传送的信息,同时这些状态的数量可以决定链路能传输的数据量。然而,数字调制可以只被看作是正交幅度调制(QAM)、正交相移键控(QPSK)、二进制相移键控(BPSK)以及由这些技术派生的调制方法。

本课题我们将采用正交相移键控(QPSK)做为信息传输的调制方式。

·纠错编码

随着现代通信技术的发展,高速传输和高可靠性成为信息传输的两个主要方面,而可靠性尤为重要。信息在实际信道中传输时,信道特性的不理想、加性噪声和人为干扰等因素的影响,都会使系统接收的信息不可避免地出现差错。为降低误码率,实现可靠性通信,通常采用的途径有两种:一种是通过选择高质量的传输线路、改善信道的传输特性、增加发送信号的功率、选择有较强抗干扰能力的调制解调方式等,来降低信道本身引起的误码;另一种是通过信道编码对信道差错进行控制。许多情况下,前者常常会受条件的限制,不是所有情况都能采用,而信道差错控制编码则可以弥补前者的不。纠错编码的基本实现方法是在发送端将被传输的信息附上一些监督码元,这些多余的码元与信息码元之间以某种确定的规则相互关联(约束)。接收端则根据既定的规则校验信息码元与监督码元之间的关系。一旦传输发生差错,则信息码元与监督码元的关系就受到破坏,从而在接收端可以发现错误乃至纠正错误。

进行信道编码时,可采用多种纠错码。其中卷积码和分组码是纠错码的两种主要形式,在码率和编码器复杂程度相同的情况下,卷积码的性能要优于分组码,而且更易于实现最佳译码和准最佳译码。由于卷积码的优异性能,使得它在很多方面都得到了应用。由于卷积码各码组之间的相互关联,在对卷积码的分析时,至今未找到像分组码那样严密的数学分析手段,因此对卷积码的性能分析比较困难,目前大多是通过计算机进行好码的搜索。卷积码的译码也较分组码容易,可有两大类译码方法:代数译码和概率译码。在概率译码中,维特比译码算法是一种最大似然算法,在码的约束度较小时,其效率比序列译码算法更高、速度更快,译码器也较之更为简单。所以,自维特比译码算法提出以来,在理论和实践方面都得到了极其迅速的发展,被广泛地应用于各种数传系统。

基于MATLAB的信息传输系统的理论介绍和仿真分析

3.1 系统总体结构简介

     通过前面的介绍,我们对整个信息传输系统有了初步的了解,整个系统的结构如下所示:

    本章我们将重点对这个系统进行分析并做仿真。

3.2 信息发送模块设计与仿真

3.2.1 卷积编码

卷积码是Elias在1955年提出的。在分组码中,把k个信息比特序列编成n个比特的码组,每个码组中的(n-k)个校验位仅与本码组的k个信息位有关,而与其它码组无关。为了达到一定的纠错能力和编码效率,分组码的码组长度一般比较大。编译码时必须把整个信息码组存储起来,由此产生的译码延迟会随着n的增加而增加。和分组码不同,卷积码前后各码组之间具有相关性,即卷积码编码后的n个码元不仅与当前段的k个信息有关,而且还与前面(N-1)(N为编码约束度)段的信息有关。卷积码编码器如图3-2所示:

图3-2主要包括:一个输入移位寄存器(分为N段,每段k位);n个模2加法器;一个输出数据选择器(n选一)。某一时刻,输入到编码器的k个信息元组成一个信息组,相应的输出序列是由n个码元组成的码段。这里,称N为编码约束度,说明编码过程中互相约束的码段个数。令N=m+1,则m称为编码存储,它表示输入信息组在编码器中需存储的单位时间(有时为了简化,编码器中只用m段的输入移位寄存器)。称Nn为编码约束长度,说明编码过程中互相约束的码元个数,如m=2,n=2,则Nn=6。所以m或N以及Nn都是表示卷积码编码器复杂性的重要参数。

·卷积码的数学表达式

卷积码的表示方法主要有多项式矩阵表示法、状态图表示法和网格图表示法。其中,多项式矩阵表示法主要用于代数译码,而Viterbi译码算法主要采用后面两种方法来表示。下面以(2,1,2)码为例来介绍状态图表示法和网格图表示法。设(2,1,2)码的两个子生成元为:

 

 

所以,该码的生成多项式矩阵为:

 

根据G(D)可得如图3-2所示的编码电路:

  

图3-3(2,1,2)卷积码编辑器和状态转移图

上图为图3-3所示卷积码编码器的状态图。编码器的寄存器在任一时刻的所存储的内容称为编码器的一个状态,以s1表示。本例中,编码存储m=2,k=1,编码器由两级移位寄存器构成,所以,移位寄存器所存储的内容只有四种情况:00、10、01和11,这就是说本例中的编码器共有四种状态:s0、s1、s2和s3。随着信息序列不断送入,编码器会不断地从一个状态转移到另一个状态。利用状态转移路径不但可以表示出该转移过程中所对应的输出码段,同时还可以显示所对应的输入信息元。虽然状态图能够表示卷积码编码器在不同输入的信息序列下,编码器各状态之间的转移转移关系,但却不能描述随时间变化时系统状态转移的轨迹,为了解决这个问题,可引入下面要介绍的网格图表示法。

此外,我们可以将状态相同的节点合并在一起,这样就得到了卷积码的另外一种更为紧凑的图形表示方法,即网格图。虽然状态图展示了状态的转移的去向,但不能记录状态转移的轨迹,网格图可以弥补状态图的缺陷。它可以将状态转移展开在时间轴上,使编码的全过程跃然纸上,是分析卷积码的有力工具。在网格图中,将码树中的上分支(对应于输入码元为“o”的情况)用实线表示,下支路(对应于输入码元为“1”的情况)用虚线表示,并将编码输出标在每条支路的上方。网格图的每一行节点分别代表s0,sl,s2,s3四种编码器状态。(2,1,2)卷积码编码器的网格图如图3-4所示。

在某一时间单位i,离开每一状态的虚线分支,表示输入编码器的信息码元mi=0即输入为0:而实线分支表示此时刻输入至编码器的信息码元mi=l,即输入为1。每一分支上的2位数字,表示i时刻编码器输出的子组,因而网格图中的每一条路径都对应于不同输入的信息序列。与码树一样,任何可能的输入码元序列都对应着网格图上的一条路径。例如输入至图3-5中编码器序列m=(1011100),对应的编码输出序列C=(11,10,00,01,10,01,11),它相应于图3-5中粗线条所示。

3.2.2 卷积编码的MATLAB设计与仿真

    为了方便,本系统我们采用(2,1,3)卷积编码。即1bit输入编码为2bit输出,约束长度为3,寄存器的个数为2,其编码原理图如图2所示。

3.2.4 QAM调制MATLAB设计与仿真

     其MATLAB代码如下所示:

function QPSKCode = QPSK_encode(JuanJi_Information, Length)

QPSKCode = zeros(size(JuanJi_Information));

for i =1:Length

    L=2*i-1;

    R=2*i;

        if JuanJi_Information(L:R)==[1 1]

           QPSKCode(L:R)=[1 1];

    elseif JuanJi_Information(L:R)==[0 1]

           QPSKCode(L:R)=[-1 1];

    elseif JuanJi_Information(L:R)==[0 0]

           QPSKCode(L:R)=[-1 -1];

    else

          QPSKCode(L:R)=[1 -1];

    end

end

下面进行仿真,得到如下的结果,其中星座图仿真代码如下所示。

for i =1:(Length-1)/2

    L=2*i-1;

    R=2*i;

    I1(L)=Information(L);

    Q1(R)=Information(R);

end

for i =1:Length

    L=2*i-1;

    R=2*i;

    I2(L)=QPSKCode(L);

    Q2(R)=QPSKCode(R);

end

scatterplot(I1+j*Q1(1:1001));

scatterplot(I2+j*Q2(1:2005));

 

图3-6 QPSK调制之前的星座图

图3-7 QPSK调制之后的星座图

    从这个结果,我们可以看到QPSK的调制效果。

3.3 信息传输模块的设计与仿真

    信息传输过程中,当信号通过信道的时候,会在信号上叠加噪声,在本系统,我们通过叠加噪声来模拟实际信道环境。

    对于本模块,我们不多做介绍了,其MATLAB实现代码如下所示:

Noise_add = wgn(1,2*Length,p(k));             

Receive_information = QPSKCode + Noise_add;

其仿真结果如下所示:

图3-8 QPSK调制之后的星座图

图3-9 QPSK调制之后的星座图

3.4 信息接收模块的设计与仿真

3.4.1 QPSK解调模块

    如下图所示:如图3-10所示,QPSK接收机由一对共输入地相关器组成。这两个相关器分别提供本地产生地相干参考信号1(t)和2(t)。相关器接收信号x(t),相关器输出地x1和x2被用来与门限值0进行比较。如果x1>0,则判决同相信道地输出为符号1;如果x1<0 ,则判决同相信道的输出为符号0;类似地,如果正交通道也是如此判决输出。最后同相信道和正交信道输出这两个二进制数据序列被复加器合并,重新得到原始的二进制序列。在AWGN信道中,判决结果具有最小的负号差错概率。

3.4.1 QPSK解调模块的MATLAB的设计与仿真

     QPSK解调模块的MATLAB代码如下所示:

function DQPSKCode=QPSK_Decode(Receive_information,Length)

DQPSKCode=zeros(size(Receive_information));

for i=1:Length

    L=2*i-1;

    R=2*i;

        if Receive_information(L)>=0&Receive_information(R)>=0

        DQPSKCode(L:R)=[1 1];

    elseif Receive_information(L)<=0&Receive_information(R)>=0        DQPSKCode(L:R)=[0 1];

    elseif Receive_information(L)<=0&Receive_information(R)<=0

        DQPSKCode(L:R)=[0 0];

    else

        DQPSKCode(L:R)=[1 0];

    end

end

通过仿真,得到如下的结果。

1   1   0   1   0   1   0   0   1   0   0   0   0   1   1   0   0 ……………

    这个结果和一直的发送结果基本系统。

3.4.2 维特比译码

3.4.1维特比译码简介

卷积编码的过程就是编码器状态沿着时间轴一级一级跳转的过程。维特比译码算法则是在网格图上搜索最可能的状态跳转路径的过程。维特比译码算法先读取t时刻的所有状态的幸存路径度量,再根据t+1时刻的输入,算出跳转路径的度量:根据这两类度量算出t+1时刻到状态S的所有路径的度量,比较选出一个具有较小路径度量的路径作为t+l时刻状态S的幸存路径。这样对每个状态都得到一个幸存路径,根据这些幸存路径和最终编码器所处的状态就可以得到编码器的状态转移路径即译码结果。维特比译码结果的可信度取决于幸存路径的深度和它的路径度量值。幸存路径越深、路径度量值越高,那么译出信息的可信度就越高。在译码过程中有些路径被抛弃了,有些路径被保留了下来。被以为是幸存路径的,也可能会在后面的搜索过程中被抛弃掉。这样随着搜索的深度不断加深,最终正确的路径将会被保留下来,所有的幸存路径都将收敛于一条路径。由上面的描述可知,维特比译码器至少需要完成以下操作:

·t时刻幸存路径度量的存储。

·t时刻到t+l时刻的分支度量的生成。

·t+1时刻幸存路径度量的生成和选择。

维特比译码器的基本结构正是按照这些操作划分的。前面说过,网格图是理解维特比算法的核心。其核心思想是依次在每个时刻对网格图相应列的每个点(对应于编码器该时刻的状态),按照最大似然准则比较所有以它为终点的的路径,只保留一条具有最大似然值的路径,称之为幸存路径,而将其他路径堵死弃之不用,故到了下一时刻只要对幸存路径延伸出来的路径继续比较即可。即接收一段,计算、比较一段保留下幸存路径,如此反复直到最后。

·卷积码的最大似然译码

卷积码概率译码的基本思路是:以断续的接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性(概率)最大的一条作为译码估值输出。概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。卷积码的最大似然译码(MLD)与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。主要区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。

·硬判决译码和软判决译码

所谓硬判决是指解调器根据其判决门限对接收到的信号波形直接进行判决后输出0或1。换句话说,就是解调器供给译码器作为译码用的每个码元只取0或1两个值。而软判决则是指解调器不进行判决,而是直接输出模拟量,或是将解调器输出波形进行多电平量化(不是简单的0、1两电平量化),然后送往译码器。即编码信道的输出是没有经过判决的“软信息”。与硬判决算法相比,软判决译码算法的路径度量采用“软距离”而不是汉明距离。最常采用的是欧几里德距离,也就是接收波形与可能的发送波形之间的几何距离。在采用软距离的情况下,路径度量的值是模拟量,需要经过一些处理以便于相加和比较。因此,使计算复杂度有所提高。除了路径度量以外,软判决算法与硬判决算法在结构和过程上完全相同。一般而言,由于硬判决译码的判决过程损失了信道信息,软判决译码比硬判决译码性能上要好约2dB。下面在硬判决和软判决概念的基础上,介绍有关硬判决和软判决的基本原理。设在数字通信系统中采用BPSK的调制方式,即用

为接收序列R与码字q之间的欧氏距离(Euclidean distance)。如果q与R之间的欧氏距离最小,则译码器把R译为C,这种译码器为欧氏译码器或最小欧氏译码器。由此可知,最大似然译码也就等价于最小欧氏距离译码。

在软判决译码中,都要用到解调器输出的实数序列R进行计算。但由于R中的每个元素为可取任意值的模拟量,而模拟量的计算是很难实现的,因此必须对模拟量进行量化。如果量化级数有限且有足够多的量化电平级数,则会与原来的模拟量基本相同。从工程实用的观点来说,量化级数应少一些,可以降低模数转换器的成本,而且所需要的代表量化电平的码元数目较少,会使计算更为容易。所以,通常除二进制量化(硬判决)之外,最常用的是线性(均匀)八电平量化,如图3-11所示。

    本文我们主要设计了一个简单的信息传输系统,系统包括卷积编码,QPSK调制,信道传输,QPSK解调以及维特比译码。我们首先对系统做了简单的介绍,然后正对每个模块进行详细的理论分析,并利用MATLAB进行仿真与分析。得到了系统的误码率曲线和眼图变化图。最后我们以发送一个图像为例,来检测系统的性能。

    对于今后,我们还将做一下的工作:

·我们将实用64QAM调制方式进行调试,并在实际中我们还将设计载波同步和位同步,来解决实际硬件系统存在的两大难点。

  ·对于卷积码,我们将设计根据通用的程序,本课题我们只根据一组参数设计的。

  ·此外我们还将考虑系统在不同信道下的性能,如瑞利信道等。

 

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/108381928