信道编码作用就是针对无线传输环境下复杂多变的信道条件,采取的一种提高发送数据正确率的典型方法。比如对于传输的信息比特序列(例如x=[1 1 0 1 0 1 1 0]是一个长度为8的序列),如果直接经过无线信道,由于各种干扰的存在,接收到的序列y可能出现差错变为了y=[1 1 0 1 1 1 1 0]。其中第五位出现了偏差由0变为了1产生错误。信道编码的职责就是按照某种数学规律在发送数据之后添加一定的校验位比特(例如c=[1 1 0 0])使得发送的数据变为信息比特x和校验比特c的某种组合方式(例如最直接的就是级联的方式s=[x c]=[1 1 0 1 0 1 1 0 1 1 0 0])。此时发送的数据变为s。此时经过无线信道,受干扰影响接收到的数据y'是y'=[1 1 0 1 1 1 1 0 1 1 0 0],不过由于比特流之间满足特定的数学规律,可以纠正这一个错误,恢复出原始发送数据s=[1 1 0 1 0 1 1 0 1 1 0 0],进而提高了数据传输的可靠性。这种措施是针对信道条件的影响采取的编码方式来提高传输可靠性【1】,信道编码由此得名。
Turbo编码属于信道编码的一种,而且是一种性能极好的方案。这个“好”在通信系统中具体体现在具有很好的传输可靠性以及可以接受的实现复杂度。(Bit Error Rate,BER)就是很好的可靠性衡量准则,比方我发送100个比特,其中错了18个比特,那么此时的BER=18%。实现复杂度的问题也可以主观感受一下,我设计一个特别复杂的编码方案,接收端对收到的数据进行对应的复杂的操作,这虽然能带来BER的提升,但是花费的开销太大,实际应用中实用性不高。Turbo编码的BER特性是现有所有信道编码中数一数二的,又具有适度的实现复杂度,因此说Turbo是一种好码。
写着写着就写多了,这篇文章主要是写一下Turbo的编译码思路以及Matlab的仿真实现(译码的话公式没看懂)。
编码器:
图-1:Turbo码编码器结构
从图中可以看出Turbo码编码器由两个递归系统卷积码编码器(RSC)和一个交织器(Interleaver)以及一个打空器