一文读懂数字信号处理中的交织(Interleaving)

       交织(Interleaving)在数字信号处理中,扮演着处理突发错误的角色,其原理是,通过将原始多bit的数据打乱,从而使得在出现突发错误的时候,不至于出现连续的多个bit的错误,而是将错误的bit数据分散到多个数据中,即多个数据都出现1bit的错误,然后,再经过前向纠错等技术的纠错,就可以轻易地把单bit的错误纠正过来,从而实现数据的无错误传输。

       交织其实就是一个数据序列在一一对应的前提下进行数据的位置重新排列的过程,也可以看做是一种数据编码方式,其逆过程称为解交织(Deinterleaving),也就是将接收到的数据序列进行位置还原,使得数据序列的位置变成交织前的状态。

       接下来将以实际的例子来阐述交织及解交织的过程。假设原始信号序列为[255 255 255 255 46 255 75],图一种表格的每一行表示的是每一个信号数据的二进制数值,例如(255)10 =(11111111)2,(46)10=(00101110)2。交织步骤可分为三步,过程如图一所示:

1.将二进制的数据从按行排列改为按列排列;

2.数据做循环左移,移位的位数的所在行的行号-1(或RAM的地址),即行号1的数据循环左移0位,行号2的数据循环左移1位;

3.将数据按行读出。

 图一

       原始信号序列[255 255 255 255 46 255 75]经过交织处理之后,最后输出的信号序列为[111 127 111 123 122 125 95 47]。可以看到,以数据46为例,在经过交织处理之后,数据46的8个bit,分散到了其它的行上,每行有且仅有数据46的一个bit,从而在遇到突发错误的时候,即使某一行的数据,例如图一中的交织后的第一个数据47,在传输的过程中,数据47的全部bit都错了,即从1111010变成了0000101,但分散到每一个原始数据上,每个原始数据只错了一个bit,纠正1bit错误对于一般的前向纠错技术来说很简单,但如果错了很多个bit,就会变得很困难,就算能纠正,也需要付出很大的计算资源方面的代价。上图展示的是矩阵的形式,在实际实现的时候,其实可以把矩阵看做一个RAM,把对矩阵行的操作看做对RAM地址的操作,把对矩阵列的操作看做对RAM某一地址的相应bit的操作。

       而解交织的过程,是一个交织过程的逆过程,如图二所示:

1.将数据按列排列改为按行排列

2.列数据做循环右移,移位的位数的所在列的列号-1(或RAM的bit),即列号1的数据循环右移0位,列号2的数据循环右移1位;

3.将数据按行读出。

图二 

     如此一来,解交织后,信号序列又从[111 127 111 123 122 125 95 47]变回了[255 255 255 255 46 255 75]。

以上仅为个人的一些学习分享,如有理解错误之处,还望各位不吝赐教,评论指出。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值