人类在信道编码上的第一次突破发生在1949年。R.Hamming和M.Golay提出了第一个实用的差错控制编码方案——汉明码。汉明码每4个比特编码就需要3个比特的冗余校验比特,编码效率比较低,且在一个码组中只能纠正单个的比特错误。随后,M.Golay先生研究了汉明码的缺点,提出了Golay码。Golay码在1979~1981年间被用于美国国家航空航天局太空探测器Voyager的差错控制系统,将成百张木星和土星的彩色照片带回地球。Golay码之后是一种的新的分组码——RM码。
在1969年到1977年之间,RM码广泛应用于火星探测,同时,其快速的译码算法非常适合于光纤通信系统。RM码之后人们又提出了循环码的概念,也叫循环冗余校验(CRC)码。循环码也是分组码的一种,其码字具有循环移位特性,这种循环结构大大简化了编译码结构。不过,以上编码方案都是基于分组码实现,分组码主要有两大缺点:一是在译码过程中必须等待整个码字全部接收到之后才能开始进行译码,二是需要精确的帧同步,从而导致时延较大、增益损失大。直到卷积码的出现,改善了分组码的缺点。归功于卷积码,在接下来的10年里,无线通信性能得到了跳跃式的发展。Elias于1955年提出卷积码卷积码与分组码的不同在于:它充分利用了各个信息块之间的相关性。在卷积码的译码过程中,不仅从本码中提取译码信息,还要充分利用以前和以后时刻收到的码组,从这些码组中提取译码相关信息,而且译码也是连续进行的,这样可以保证卷积码的译码延时相对比较小。尽管卷积码让通信编码技术腾飞了10年,但终究还是遇到了瓶颈——“计算复杂性”问题。还好,这个世界有一个神奇的摩尔定律。得益于摩尔定律,编码技术在一定程度上解决了计算复杂性和功耗问题。而随着摩尔定律而来的是,Viterbi于1967年提出的Viterbi译码算法。Viterbi译码算法提出之后,卷积码在通信系统中得到了极为广泛的应用,如GSM、 IS-95 CDMA、3G、商业卫星通信系统等。
但是,随着通信技术的飞速发展,“计算复杂性”依然是一道迈不过的墙,专家们苦苦思索,试图在可接受的计算复杂性条件下设计编码和算法,以提高效率,但其增益与香农理论极限始终都存在2~3dB的差距。正在专家们一筹莫展之时,奇迹出现了。1993年,两位当时名不见经传的法国电机工程师C.Berrou和A.Glavieux声称他们发明了一种编码方法——Turbo码,可以使信道编码效率接近香农极限。C.Berrou一开始,大家都是持怀疑态度的,甚至懒得去理睬这两个小角色,这么多数学家都没能突破,你两个小小的机电工程师也敢宣称接近香农极限?忽悠吧?但是,这两位法国工程师正是绕过数学理论,凭借其丰富的实际经验,通过迭代译码的办法解决了计算复杂性问题。▲Turbo码的译码器有两个分量码译码器,译码在两个分量译码器之间进行迭代译码,故整个译码过程类似涡轮(turbo)工作,所以又形象的称为Turbo码。Turbo码的发明又一次开创了通信编码史的革命性时代。随后,全世界各大公司开始聚焦于Turbo码研究。Turbo码也成为了3G/4G移动通信技术所采用的编码技术,直到4.5G,我们依然在采用。
但是,由于Turbo码采用迭代解码,必然会产生时延,所以对于实时性要求很高的场合,对于即将到来的超高速率、超低时延的5G需求,Turbo码又遇到瓶颈,因此,在5G时代就出现了Polar码和LDPC码之争。▲Turbo码和LDPC码功耗比较,来源5G ForumPolar码是由土耳其比尔肯大学教授E. Arikan在2007年提出,2009年开始引起通信领域的关注。尽管Polar提出较晚,但作为已经被理论证明可达到香农极限的编码方案,自发明以来,业内已在译码算法、速率兼容编码方案和硬件实现上做了大量的研发工作。▲Turbo码和Polar码FER比较,来源5G Forum因此,最后3GPP在5G时代抛弃了Turbo码,选择了LDPC为数据信道编码方案,Polar为广播和控制信道编码方案。那么,为何3GPP同时选择了LDPC码和Polar码呢?这背后有“不把鸡蛋放在同一个篮子”的因素,也有“One code does not fit all”的因素。首先,华为不会孤注一掷投入Polar码,高通也不会孤注一掷投入LDPC码,各家公司都会在不同的候选技术上投入,不会把鸡蛋放在同一个篮子里。其次,各种编码方案的优缺点不同,需对其硬件实现复杂度、功耗、灵活性、成熟度等进行综合考量,One code does not fit all,没有“一刀切”的处方。