通信-交织技术
如果你是学通信的,当有人问你什么是交织,你会怎么说?
最简单的一句话便可描述交织技术,懂的人听到这句话就明白你的意思,就会觉得你不错。相反,如果你对这个名词有点印象,但又说不出什么来,这种情况气氛就会比较尴尬。
总结为一句话就是:交织的实质是将突发错误分散开来,而且交织深度越深,抗突发错误的能力越强。补充:交织前相邻的符号在交织后的最小距离称为交织深度(也叫交织距离,GSM采用的交织深度为8). 交织深度应不小于信道上可能的突发错长度,否则解交织后仍可能存在一定的突发错误。
在陆地移动通信这种瑞利信道上,比特差错经常是成串发生的。这是由于持续时间较长的信道深衰落谷点会影响到相继一串的比特。但是,信道编码仅在检测和校正单个差错和不太长的差错串时才有效。为了解决这一问题,希望能找到把一条消息中的相继比特分散开的方法,即一条消息中的相继比特以非相继方式被发送。这样,在传输过程中即使发生成串差错,在接收端恢复成相继比特串的消息时,也就变成单个或长度很短的差错,再用信道编码所具有的纠错功能纠正差错,恢复原消息。这种将相继比特分散开的技术就是交织技术。因此,交织编码的目的是把一个较长的突发差错离散成随机差错,再用纠正随机差错的编码(FEC)等信道编码技术消除随机差错。信道编码只能消除随机差错(如加性高斯白噪声引起的),但当信道陷入深衰落时,将发生突发差错(连续好多bit都会出错),信道编码就没办法纠错了(信道编码是用信息位和校验位的组合做纠错,错的bit多了就纠正不了),这时候就要靠交织了(交织可以打散突发差错为随机差错)。所以,信道编码和交织通常结合起来使用,以提高通信系统的可靠性。
说完了交织的作用和目的,接下来再说说,交织是怎么做的。这里只介绍矩阵交织。
假定由一些4bit组成的消息分组,把4个分组中的第一个比特取出来,并让这4个第一比特组成一个新的4bit组,称作第一帧,4个消息分组中的比特2~4也作同样处理,如图1所示。然后依次传送第1bit组成的帧,第2bit组成的帧,……。如果在传输期间,帧2丢失,在没有交织时,就会丢失某一整个消息分组,在采用交织技术后,仅每个消息分组的第2bit丢失。如果所采用的纠错编码技术能将4个码中的一个错码纠正过来,则利用信道编码,仍能恢复全部分组中的消息,这就是交织技术的基本原理。交织就是把一个码块中的b个比特分散到n个帧中,以改变比特间的邻近关系,因此n值越大,传输特性越好,但传输时延也越大。这是用文字描述的,应该也能看懂,大概明白其意思和做法即可。
图1交织技术通过存储器完成,在信道的输入端将信息按行写入交织器,再按列读出发送;在信道的输出端,按列写入交织器,再按行读出。如图2所示。
图 2现在假设我要发送信息:
第一句是:今晚吃汉堡
第二句是:大概8点半
第三句是:在学校门口
如果没有交织,直接发送,假设信道陷入深衰落,第一行全错了,那么接收端就不能正确还原我原来要发送的信息,他收到了在学校门口八点半,却不知道干什么。如果他懒得出来,就没法和我一起去吃汉堡了,如果他知道是去吃汉堡,说不定就和我出来了。
那么使用交织呢?若使用交织技术,将信息按行写入交织器,再按列读出(图3):
图3那么我发送的就是,先发送第一帧 “今大在”,再发送第二帧“晚概学”.....(图4)
图4如果信道突发错误,第一帧(第一行)全错了,第一帧就是***(图5),第二帧是“晚概学”...
图5接收端将收到的每一帧按列写入交织器(解交织),按行读出,得到(图6)
图 6然后接收端收到信息,纠正错误,恢复出原来的信息,我和他就一起吃了汉堡。最终的错误其实分散到了每一句话,也就是说每一句话只错了一个字,我们将很有可能(使用信道编码)纠正一句话中的这一个错误。如果没有交织,正好在这个时间信道陷入深衰落导致一句话全出错,那就纠正不了了。矩阵交织的基本过程如上,我们看到了它的好处,但它也有缺点,在完成交织与去交织的时候,在交织器中将花费一定的时间(2*M*N个符号时间),M行N列),造成时延。所以在实际应用中,需要做一个tradeoff。
了解了交织的基本过程后,我们来看一个系统应用实例。因为这学期正在学移动通信系统,所以看下GSM系统是如何交织的。
在GSM系统中,信道编码后进行交织,交织分为两次,第一次为内部交织,第二次为块间交织。
首先看看内部交织(图7):
图7每20ms有456bit语音,我们把这456bit分成8个帧,每帧57bit,交织的方式是第一个bit放入第1帧,第2个bit放入第2帧....,第8个bit放入第8帧,第9个bit放入第1帧,第10个bit放入第2帧,按这个顺序。这样交织后,如果错了某一帧,丢失的就不是连续的bit,而是第1,9,17,25..449bit错误(按第1帧错误举个例子)。
图8如果将同一20ms话音里的两帧插入一个突发脉冲序列(TDMA信道上一个时隙中的信息格式称为突发脉冲序列),如果这个突发脉冲序列错了,相当于同一20ms话音的两帧都错了,不利于信道编码纠错。我们总是希望错误尽可能的散开,这对我们纠错有好处,如果一个东西全错了那还怎么纠?(图8里的25%是由2帧/8帧得到的,8帧错了2帧,错误率为25%)
图9如图9所示,我们把同一20ms话音的8个帧定义为一个块,上图中有4个块ABCD,即4个20ms话音。我们怎么在不同20ms话音之间进行块交织,将数据分散的更开?
图10图10为块间交织的一种方式,把块A(是同一20ms话音,有8个帧),把A的8个帧分别放入不同的突发脉冲序列中(如图10所示),块BCD同样做这种操作,最后得到的结果是每个20ms话音的8个帧分别放入了不同的突发脉冲序列,一个突发脉冲序列里包含了两个不同块的帧,如图10所示。
图11图11是总结,如果错了一个突发脉冲序列错了,里面的两帧也跟着错了,现在这两帧属于不同的20ms话音(即不同的块),所以对于每个20ms话音而言只错了一帧。错误率为1/8=12.5%。
GSM系统采用的交织深度为8,编码流程如图12所示。把2个20ms的语音比特(共40ms)(2*456bit=912bit)组成8X114的矩阵,按水平写入、垂直读出的顺序进行交织(如图13所示)。获得8个114bit的信息段,每个信息段要占用一个时隙且逐帧进行传输。可见每40ms的语音需要8帧才能传送完毕。
图12就是块间交织的操作。类比图10。在一个突发脉冲序列中放入属于不同块的两个帧,进行块间交织。
图12 图13图13所画的按行水平写入,就是内部交织的操作,把456bit分成8个帧,分法和图7相同(不清楚的话返回去看图7,图13是图7的矩阵表达形式),按行写入,第1个bit放入第1帧(一共有8帧,即8列),第2个bit放入第2帧....,第8个bit放入第8帧,第9个bit放入第1帧...如此循环(就是我用笔在图13方格内部写的)。最后再按列垂直读出,矩阵的一列(1个突发脉冲序列,图13说这个是帧,看图12就知道这个帧就是突发脉冲序列)的上半部分和下半部分属于不同的20ms话音(不同的块)。
交织就总结到这里,如果以后做科研需要这部分知识,有了新的理解再进行补充。
鼓起劲来学通信工程吧,虽然这个专业是真的很难,搞得最后好多通信喵都转CS做了码农。但坚持下来好好学习通信知识,将来出路肯定很好,因为未来通信的发展有无限的可能。(入了通信的坑就别想走了)