matlab编程代做highspeedlogic信息传输系统剖析.docx
- 文档编号:3572117
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:23
- 大小:500.71KB
matlab编程代做highspeedlogic信息传输系统剖析.docx
《matlab编程代做highspeedlogic信息传输系统剖析.docx》由会员分享,可在线阅读,更多相关《matlab编程代做highspeedlogic信息传输系统剖析.docx(23页珍藏版)》请在冰豆网上搜索。
matlab编程代做highspeedlogic信息传输系统剖析
第三章基于MATLAB的信息传输系统的理论介绍和仿真分析
3.1系统总体结构简介
通过前面的介绍,我们对整个信息传输系统有了初步的了解,整个系统的结构如下所示:
图3-1信息传输系统的总体结构图
本章我们将重点对这个系统进行分析并做仿真。
3.2信息发送模块设计与仿真
3.2.1卷积编码
卷积码是Elias在1955年提出的。
在分组码中,把k个信息比特序列编成n个比特的码组,每个码组中的(n-k)个校验位仅与本码组的k个信息位有关,而与其它码组无关。
为了达到一定的纠错能力和编码效率,分组码的码组长度一般比较大。
编译码时必须把整个信息码组存储起来,由此产生的译码延迟会随着n的增加而增加。
和分组码不同,卷积码前后各码组之间具有相关性,即卷积码编码后的n个码元不仅与当前段的k个信息有关,而且还与前面(N-1)(N为编码约束度)段的信息有关。
卷积码编码器如图3-2所示:
图3-2码率为k/n,编码约束度为N的卷积码编码器
图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所示。
图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-5(2,1,3)卷积码结构图
其中m1与m2为移位寄存器,它们的起始状态均为零。
C1、C2与b1、b2、b3之间的关系如下:
C1=b1+b2+b3
C2=b1+b3
假如输入的信息为D=[11010],为了使信息D全部通过移位寄存器,也为了使寄存器的状态归零并降低判决时的误差,还必须在信息位后面加3个零。
其状态转移图如下所示:
图3-6(2,1,3)状态转移图
通过上面的理论分析,其MATLAB代码如下所示(代码具体的说明见原程序):
functionJuanJi_Information=JuanJi_Encode(Information,Length)
ConCode1=mod(conv(Information,[1,1,1]),2);
ConCode2=mod(conv(Information,[1,0,1]),2);
ConCode1=ConCode1(1:
Length);
ConCode2=ConCode2(1:
Length);
JuanJi_Information=zeros(1,2*Length);
forj=1:
Length
JuanJi_Information(2*j-1)=ConCode1(j);
JuanJi_Information(2*j)=ConCode2(j);
end
运行卷积程序,可以得到如下的结果。
原始数据:
1100000100111010……………
卷积编码:
1101011100000011……………
3.2.3QPSK调制
QPSK调制方法十分简单,调制器的基本工作过程是:
输入的数字码序列经过数据预处理单元完成信号的信道编码,生成两路信号。
这个序列再经过多级内插把序列采样速率提高到后面的复数乘法器的工作频率上,以便进行载频调制。
使用多级内插滤波器的原因是可以通过调整内插因子,使系统支持的调制符号速率能在一定的范围内变化。
其结构如下所示:
图3-5QPSK调制器
我们简单的讲解一下其中几个数学过程。
QPSK与二进制PSK一样,传输信号包含的信息都存在于相位中。
的别的载波相位取四个等间隔值之一,如л/4,3л/4,5л/4,和7л/4。
相应的,可将发射信号定义为
其中,i=1,2,2,4;E为发射信号的每个符号的能量,T为符号持续时间,载波频率f等于nc/T,nc为固定整数。
每一个可能的相位值对应于一个特定的二位组。
例如,可用前述的一组相位值来表示格雷码的一组二位组:
10,00,01,11。
下面介绍QPSK信号的产生和检测。
如果a为典型的QPSK发射机框图。
输入的二进制数据序列首先被不归零(NRZ)电平编码转换器转换为极性形式,即负号1和0分别用
和-
表示。
接着,该二进制波形被分接器分成两个分别由输入序列的奇数位偶数位组成的彼此独立的二进制波形,这两个二进制波形分别用a1(t),和a2(t)表示。
容易注意到,在任何一信号时间间隔内a1(t),和a2(t)的幅度恰好分别等于Si1和Si2,即由发送的二位组决定。
这两个二进制波形a1(t),和a2(t)被用来调制一对正交载波或者说正交基本函数:
1(t)=
,
2(t)=
,得到一对二进制PSK信号。
1(t)和
2(t)的正交性使这两个信号可以被独立地检测。
最后,将这两个二进制PSK信号相加,从而得期望的QPSK。
3.2.4QAM调制的MATLAB设计与仿真
其MATLAB代码如下所示:
functionQPSKCode=QPSK_encode(JuanJi_Information,Length)
QPSKCode=zeros(size(JuanJi_Information));
fori=1:
Length
L=2*i-1;
R=2*i;
ifJuanJi_Information(L:
R)==[11]
QPSKCode(L:
R)=[11];
elseifJuanJi_Information(L:
R)==[01]
QPSKCode(L:
R)=[-11];
elseifJuanJi_Information(L:
R)==[00]
QPSKCode(L:
R)=[-1-1];
else
QPSKCode(L:
R)=[1-1];
end
end
下面进行仿真,得到如下的结果,其中星座图仿真代码如下所示。
fori=1:
(Length-1)/2
L=2*i-1;
R=2*i;
I1(L)=Information(L);
Q1(R)=Information(R);
end
fori=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-6QPSK调制之前的星座图
图3-7QPSK调制之后的星座图
从这个结果,我们可以看到QPSK的调制效果。
3.3信息传输模块的设计与仿真
信息传输过程中,当信号通过信道的时候,会在信号上叠加噪声,在本系统,我们通过叠加噪声来模拟实际信道环境。
对于本模块,我们不多做介绍了,其MATLAB实现代码如下所示:
Noise_add=wgn(1,2*Length,p(k));
Receive_information=QPSKCode+Noise_add;
其仿真结果如下所示:
图3-8QPSK调制之后的星座图
图3-9QPSK调制之后的星座图
通过上图,我们可以看到信号通过信道后的效果,很明显,叠加噪声后的信号变得非常“乱“。
3.4信息接收模块的设计与仿真
3.4.1QPSK解调模块
如下图所示:
如图3-10所示,QPSK接收机由一对共输入地相关器组成。
这两个相关器分别提供本地产生地相干参考信号
1(t)和
2(t)。
相关器接收信号x(t),相关器输出地x1和x2被用来与门限值0进行比较。
如果x1>0,则判决同相信道地输出为符号1;如果x1<0,则判决同相信道的输出为符号0;类似地,如果正交通道也是如此判决输出。
最后同相信道和正交信道输出这两个二进制数据序列被复加器合并,重新得到原始的二进制序列。
在AWGN信道中,判决结果具有最小的负号差错概率。
图3-10QPSK解调器结构
3.4.1QPSK解调模块的MATLAB的设计与仿真
QPSK解调模块的MATLAB代码如下所示:
functionDQPSKCode=QPSK_Decode(Receive_information,Length)
DQPSKCode=zeros(size(Receive_information));
fori=1:
Length
L=2*i-1;
R=2*i;
ifReceive_information(L)>=0&Receive_information(R)>=0
DQPSKCode(L:
R)=[11];
elseifReceive_information(L)<=0&Receive_information(R)>=0DQPSKCode(L:
R)=[01];
elseifReceive_information(L)<=0&Receive_information(R)<=0
DQPSKCode(L:
R)=[00];
else
DQPSKCode(L:
R)=[10];
end
end
通过仿真,得到如下的结果。
11010100100001100……………
这个结果和一直的发送结果基本系统。
3.4.2维特比译码
3.4.1维特比译码简介
卷积编码的过程就是编码器状态沿着时间轴一级一级跳转的过程。
维特比译码算法则是在网格图上搜索最可能的状态跳转路径的过程。
维特比译码算法先读取t时刻的所有状态的幸存路径度量,再根据t+1时刻的输入,算出跳转路径的度量:
根据这两类度量算出t+1时刻到状态S的所有路径的度量,比较选出一个具有较小路径度量的路径作为t+l时刻状态S的幸存路径。
这样对每个状态都得到一个幸存路径,根据这些幸存路径和最终编码器所处的状态就可以得到编码器的状态转移路径即译码结果。
维特比译码结果的可信度取决于幸存路径的深度和它的路径度量值。
幸存路径越深、路径度量值越高,那么译出信息的可信度就越高。
在译码过程中有些路径被抛弃了,有些路径被保留了下来。
被以为是幸存路径的,也可能会在后面的搜索过程中被抛弃掉。
这样随着搜索的深度不断加深,最终正确的路径将会被保留下来,所有的幸存路径都将收敛于一条路径。
由上面的描述可知,维特比译码器至少需要完成以下操作:
·t时刻幸存路径度量的存储。
·t时刻到t+l时刻的分支度量的生成。
·t+1时刻幸存路径度量的生成和选择。
维特比译码器的基本结构正是按照这些操作划分的。
前面说过,网格图是理解维特比算法的核心。
其核心思想是依次在每个时刻对网格图相应列的每个点(对应于编码器该时刻的状态),按照最大似然准则比较所有以它为终点的的路径,只保留一条具有最大似然值的路径,称之为幸存路径,而将其他路径堵死弃之不用,故到了下一时刻只要对幸存路径延伸出来的路径继续比较即可。
即接收一段,计算、比较一段保留下幸存路径,如此反复直到最后。
·卷积码的最大似然译码
卷积码概率译码的基本思路是:
以断续的接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性(概率)最大的一条作为译码估值输出。
概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。
卷积码的最大似然译码(MLD)与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。
主要区别在于:
分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。
发送端发送码字序列
,接收端接收码字序列是
,信道的噪声干扰导致
这就给译码(由R推断C)带来了不确定性。
最好的办法是拿序列R去和所有可能的候选码字序列
一一对比,选出其中“最佳”的那个序列作为译码估值序列
。
在网格图上,所有可能的候选码字序列
一定有连续的轨迹;而接收序列R的轨迹由于存在差错,在网格图上的轨迹是断续的。
这里所谓的
“最佳”,是指具有最大后验条件概率:
一般来说,信道模型并不使用后验条件概率,而只表明转移概率,因此必须通过贝叶斯公式找出这两种概率间的关系:
这里,
是发送码字序列
而得到接收序列R的概率,也称似然度。
当各可能序列等概发送时,
是常数。
当信道对称时,P(R)时常数。
当
是常数时,
和
等价。
此时,最大似然译码也就是最佳译码。
Logx虽非线性,但确是x的单调增函数,因此
和
是一致的,称后者为对数似然函数。
如果说序列的似然函数是各码字似然函数之积,那么序列的对数似然函数等于组成该序列的各码字对数似然函数之和:
这里,L是组成序列的码字的个数,
是第l个发送码字与接收码字的对数似然度,又等于组成第l码字的n个码元的对数似然度之和:
最大似然译码就是把似然度最大的那个序列选为译码估值序列C输出:
显然,序列的似然度与序列长度有关。
·硬判决译码和软判决译码
所谓硬判决是指解调器根据其判决门限对接收到的信号波形直接进行判决后输出0或1。
换句话说,就是解调器供给译码器作为译码用的每个码元只取0或1两个值。
而软判决则是指解调器不进行判决,而是直接输出模拟量,或是将解调器输出波形进行多电平量化(不是简单的0、1两电平量化),然后送往译码器。
即编码信道的输出是没有经过判决的“软信息”。
与硬判决算法相比,软判决译码算法的路径度量采用“软距离”而不是汉明距离。
最常采用的是欧几里德距离,也就是接收波形与可能的发送波形之间的几何距离。
在采用软距离的情况下,路径度量的值是模拟量,需要经过一些处理以便于相加和比较。
因此,使计算复杂度有所提高。
除了路径度量以外,软判决算法与硬判决算法在结构和过程上完全相同。
一般而言,由于硬判决译码的判决过程损失了信道信息,软判决译码比硬判决译码性能上要好约2dB。
下面在硬判决和软判决概念的基础上,介绍有关硬判决和软判决的基本原理。
设在数字通信系统中采用BPSK的调制方式,即用
来传送0、1两个码元,式中Es为信号能量,T=1/f0为发送信号周期,信号通过均值为0、方差为σ2=N0/2的加性高斯白噪声(AWGN)信道后到达接收端解调器的输入端。
由于采用相干解调,因此解调器匹配滤波器输出的抽样电压是一均值为
、方差为σ2=N0/2的高斯随机变量。
所以,输出电压的概率密度函数为
的概率密度函数为:
在硬判决解调器中,最佳判决门限为0。
当匹配滤波器输出的电压为负,则输出为-1(相当于0或1码元);若为正,则输出为+1(相当于1或0码元)。
此时,系统的误码率为:
式中
在硬判决译码器中,通常利用汉明距离dn来度量码的纠错能力。
而在软判决译码中,与软判决译码器相应的解调器的输出是Q(
)进制值,或介于±1之间的实数值。
与此相应的,必须定义两个n长序列或码字之间的软判决距离,下面主要针对欧几里德距离进行介绍。
当码字序列在均值为0、方差为σ2=N0/2的高斯白噪声信道中传输时,它会受到噪声的干扰。
设接收序列R长度为n,则由于噪声对每一码元(或符号)的影响是独立的,因而发送序列为
,接收序列为
的概率
是n个高斯密度函数之积:
由最大似然译码可知,译码器会选择一个有最大似然函数
的码字Cl作为输出,从上式看,它可等效于:
定义
为接收序列R与码字q之间的欧氏距离(Euclideandistance)。
如果q与R之间的欧氏距离最小,则译码器把R译为C,这种译码器为欧氏译码器或最小欧氏译码器。
由此可知,最大似然译码也就等价于最小欧氏距离译码。
在软判决译码中,都要用到解调器输出的实数序列R进行计算。
但由于R中的每个元素
为可取任意值的模拟量,而模拟量的计算是很难实现的,因此必须对模拟量进行量化。
如果量化级数有限且有足够多的量化电平级数,则会与原来的模拟量基本相同。
从工程实用的观点来说,量化级数应少一些,可以降低模数转换器的成本,而且所需要的代表量化电平的码元数目较少,会使计算更为容易。
所以,通常除二进制量化(硬判决)之外,最常用的是线性(均匀)八电平量化,如图3-11所示。
图3-11相干匹配过滤器输出的概率密度函数及量化划分
在二进制输入,Q进制输出的信道中,从匹配滤波器输出的结果完全由转移概率密度函数P(j|x)决定,即给定输入为x(0或1或相应的1、-1)时,输出电压幅度落在电平区间j的概率。
在BSC中,常用汉明距离度量码字之间的区别程度,对于二进制输入Q进制输出的DMC,也必须寻求适合于这种信道特点、度量码字之间差别的距离度量。
首先,定义接收码ri与发送码ci之间的软判决距离
其中,
是接收码元ri落入某一量化电平区间的区间号。
可以证明,这种定义基本上反映了接收码元相对于发送码元的似然函数值的比。
由此可定义接收序列R与码字Cl之间的软判决距离:
可以证明:
上式说明:
在二进制输入Q进制输出的DMC中,若用这样定义的软判决距离,则最大似然译码九近似等价于最小软判决译码。
3.4.2维特比译码的MATLAT仿真与分析
我们以(2,1,3)由于该卷积码的约束长度为3位,因此先选择接收序列的前6位序列R1=(010101),同到达第3时刻可能的8个码序列(即8条路径)进行比较,并计算出码距。
通过最断距离计算,我们可以得到幸存路径码序列是(000000)、(000011)、(110101)和(001101),如图3-12所示。
图3-12
用与上面类同的方法可以得到第4、5、6、7时刻的幸存路径。
需指出对于某一个节点而言比较两条路径与接收序列的累计码距时,若发生两个码距值相等,则可以任选一路径作为幸存路径,此时不会影响最终的译码结果。
图3-13给出了第5时刻的幸存路径。
图3-13
在码的终了时刻a状态,得到一根幸存路径,如图3-14所示。
由此看到译码器输出是R’=(1101010001011100),即可变换成序列(11011000),恢复了发端原始信息。
比较R’和R序列,可以看到在译码过程中己纠正了在码序列第1和第7位上的差错。
当然,差错出现太频繁,以至超出卷积码的纠错能力,则会发生误纠,这是不希望的。
图3-14
根据这个过程,我们编写MATLAB代码,其运行结果如下所示(维特比译码代码较长,限于篇幅,这里就不给出)。
原始数据:
1100000100111010……………
通过上面的结果可知,译码后第81个数字后开始正确译码。
3.5信息传输系统的总体性能仿真和分析
系统性能的分析,我们一般采用误码率和眼图,误码率比较好理解,就是传输一段数据后其错误的个数占总个数的比例。
下面我们重点介绍一下眼图的相关理论。
为了使系统达到最佳化,估计系统的优劣程度并观察码间干扰和噪声对系统的影响。
眼图的迹线与接收的基带脉冲序列的波形失真程度成正比。
失真越厉害,眼图的迹线就越模糊。
而眼睛张开大小反映了码间干扰的强弱。
在实际系统中,完全消除码间串扰是十分困难的,而码间串扰对误码率的影响目前尚无法找到数学上便于处理的统计规律,还不能进行准确计算。
为了衡量基带传输系统的性能优劣,在实验室中,通常用示波器观察接收信号波形的方法来分析码间串扰和噪声对系统性能的影响,这就是眼图分析法。
如果将输入波形输入示波器的Y轴,并且当示波器的水平扫描周期和码元定时同步时,在示波器上显示的图形很象人的眼睛,因此被称为眼图。
二进制信号传输时的眼图只有一只“眼睛”,当传输三元码时,会显示两只“眼睛”。
眼图是由各段码元波形叠加而成的,眼图中央的垂直线表示最佳抽样时刻,位于两峰值中间的水平线是判决门限电平。
图3-15眼图结构图
在无码间串扰和噪声的理想情况下,波形无失真,“眼”开启得最大。
当有码间串扰时,波形失真,引起“眼”部分闭合。
若再加上噪声的影响,则使眼图的线条变得模糊,“眼”开启得小了,因此,“眼”张开的大小表示了失真的程度。
由此可知,眼图能直观地表明码间串扰和噪声的影响,可评价一个基带传输系统性能的优劣。
另外也可以用此图形对接收滤波器的特性加以调整,以减小码间串扰和改善系统的传输性能。
由此图可以看出:
·眼图张开的宽度决定了接收波形可以不受串扰影响而抽样再生的时间间隔。
显然,最佳抽样时刻应选在眼睛张开最大的时刻。
·眼图斜边的斜率,表示系统对定时抖动(或误差)的灵敏度,斜边越陡,系统对定时抖动越敏感。
·眼图左(右)角阴影部分的水平宽度表示信号零点的变化范围,称为零点失真量,在许多接收设备中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 编程 highspeedlogic 信息 传输 系统 剖析