1、 摘 要扩频技术是扩展频谱通信(Spread Spectrum Communcation-SSC)的简称,它是随着在军事通信中的应用发展起来的,由于其具有其它一般通信方式不具备的抗干扰强,抗多径衰落好,保密性好等一系列的优点,因此近年来它在民用通信中的应用也开始越来越受到人们的重视。信道编码是扩频通信的关键技术之一,是解决信号在信道中无差错传输的技术。本文主要研究内容包括:信道编码技术的研究背景,发展状况和现实意义。着重介绍了差错控制编码中的分组码,卷积码和Turbo码的编解码的理论基础以及具体硬件实现的过程。卷积码是目前无线通信中比较多使用的一种编码方法,其优点是结构清晰,编码器硬件实现较容
2、易且有比较好的查错纠错效果,但其解码器的设计比较困难,目前一般使用的是Viterbi译码器。Turbo码是接近香农限的一种编码方法,拥有及其优秀的降低误码率的性能,但也存在着结构复杂,解码困难的缺陷。关键词 无线扩频通信;信道编码;卷积码;;Viterbi译码;;Turbo码AbstractSpread Spectrum Communication (SSC) is developed with its application in military communication. It owns a lot of advantages that other communication syst
3、em do not have. With the development of Spread Spectrum Communication technology, it gradually applied in civil communication widely.Channel Encoding technology is one of the key technology in SSC. It aims to realize the non-error transmission of the signal. This paper discusses the background, hist
4、ory and the signification of the Channel Encoding technology. I mainly recommended the principle and hardware realization of Block coding, Convolutional coding and Turbo coding in this paper.Convolutional coding is the common function in wireless communications. It has legible structure and good err
5、or-check and error-correct character, but the decoder of Convolutional coding is difficult and Viterbi decode now is the comparative good. Turbo coding has great character of error-check and error-correct and can almost reach the Shannon limitation, also it has complicated structure in both encoder
6、and decoder.Keywords Spread spectrum communication;Channel Encoding;Convolutional coding;Turbo coding ;Viterbi decoding35目录1 绪论11.1信道编码研究背景及意义11.2研究现状12 信道编码概述42.1信道编码原理42.2差错控制编码42.3 分组码52.3.1 基本原理52.3.2 线性分组码72.3.3 循环码73 信道编码的几种常用编码83.1卷积编码83.1.1 卷积码的表示83.1.2 状态流图103.1.3 网格图113.1.4 卷积码距离特性123.1.5
7、卷积编码器的FPGA实现123.2Turbo码概述163.3Turbo编码器163.3.1 递归系统卷积码RSC173.3.2 交织与解解交织183.3.3 块交织183.3.4 PN交织193.4 低密度奇偶校验(LDPC)码的研究意义213.5LDPC码的编码简介224 信道编码的FPGA实现234.1 系统概述234.1.1 总体设计234.1.2 基带部分的FPGA设计流程234.1.3 芯片介绍234.2 基于FPGA的扩频信号处理芯片的总体设计254.2.1 设计指标264.2.2 发射子系统274.2.3 数据的差分编码275 论文总结29致 谢30附 录31参考文献35通信系统
8、信道编码的设计与实现1 绪论1.1 信道编码研究背景及意义 随着现代无线通信技术的迅猛发展,数字信号已经逐渐取代了模拟信号成为主要的传输信号类型。与模拟信号相比较,数字通信具有高抗干扰能力,易于加密提高保密性,可以使用现代数字信号处理技术等优势。但由于信道的特性复杂,当调制好的信号在信道里进行传输的时候,必然要受到信道的影响。信道的影响可以分成以下三个主要方面:第一是信道本身对信号产生的衰落:由于信道本身频率响应特性不理想,造成对信号的破坏;第二是信道中的各种噪声,如背景噪声,脉冲噪声等等,这些噪声叠加在信号上面,改变信号的幅度、相位和频率,使信号在解调时产生错误;第三,是信号在传输过程中由于
9、反射,折射或沿不同路径传播从而带来的叠加效应,即通常所说的多径效应,这会带来时间上前后信号互相干扰。总而言之,这三种加性干扰都会导致在接收端信号解调的错误,使系统的误码率大大增加。导致了其在无线信道中传输过程中极易受到干扰而使码元波形变坏,所以传输到接收端后可能发生错误判决。而信道条件越是恶劣,产生错误的可能性就越大。 由于信道中的加性干扰不能通过均衡等方法完全消除, 因此在一个实用的通信系统中,必须采取一定的措施来纠正错误,降低系统的误码率。信道编码就是一种非常有效的措施。信道编码的任务就是,在发送端以可控的方式在信号中加入一定的冗余度,而在接收端这些冗余度可以用来检测并且纠正信号通过信道后
10、产生的错误。当然,冗余度的加入降低了系统的工作效率,但是和系统误码率的降低(即信号更加正确地传送)相比,这些代价是可以接受的。信道编码正是基于此提出并发展起来的。1.2 研究现状1948年,信息论的开创者C.E.Shannon在其题为“A mathematical theory of communication”的论文中,第一次提出了在有扰信道中实现可靠通信的方法,即著名的信道编码定理,为现代信息论奠定了基础。信道编码定理是指对于一个给定的有干扰信道,信道存在着容量的上限,即信道的最大传输能力是固定的,称之为Shannon限,用C表示。他还指出实际传输的速率r2,则称为非二进制分组码。长度为n
11、 的分组码一共有个可能的码字。从中选取包含个码字的子集构成一种码,这样可以把一个k比特的信息分组映射到所选择的子集中的一个长度为n 的码字。这样的得到的分组码称为 (n, k)码。(n, k)码中,n-k=r为监督码元的数目。在分组码中,我们把“1”的数目称为码组的重量,而把两个码组对应位上数字不同的位数称为码组的距离,简称码距,又称汉明(Hamming)距离。上例中4个码组之间,任两个的距离均为2。我们把某种编码中各个码组间距离的最小值称为最小码距(),所以上例中编码的最小码距为。经过证明,我们已经能够得到一下3个定理:1) 为检测个错码,要求最小码距: ;2) 为纠正个错码,要求最小码距:
12、 ;3) 为纠正个错码,同时检测个错码,要求最小码距: 2.3.2 线性分组码 假设 是某种(n, k)码的两个任意的码字, 和 是码元字符集中的两个任意的元素,那么当且仅当 也是该分组码的码字时,我们称该分组码为线性的,叫做线性分组码。循环码,BCH码和里德所罗门(ReedSolomon)码是实际应用中常见的线性分组码。2.3.3 循环码循环码是一种重要的线性分组码,它是在严密的代数理论基础上建立起来的。循环码的编/解码设备都不太复杂,且有比较强的纠错能力,目前已经在理论上和时间上得到了较大的发展。循环码除了有线性分组码的一般性质外,还具有循环性,即循环码中任一码组循环一位(将最右端的码元移
13、至最左端,或反之)以后,仍为该码中的一个码组。常用的(7,3)循环码的全部码组见表 。 表2-1 常用的循环码的全部码组 码组编号信息位监督位码组编号信息位监督位1000000051001011200101116101110030101110711001014011100181110010 由此表可以直观看出这种码的循环性。例如,第3组右移一位即得到第2组,第6组右移一位即得到第7组。循环码的解码方法有捕错解码、多数逻辑解码等,硬件实现上都是比较简单的。3 信道编码的几种常用编码3.1 卷积编码卷积码是由PElias于上世纪五十年代提出的一种非分组码。卷积编码器将发送的信息序列通过一个线性的、
14、有限状态机的移位寄存器而产生的编码。通常卷积码的编码器由K级(每级k比特)的移位寄存器和n个线性代数函数发生器(这里是模2加法器)组成,如图3-1所示。图3-1 卷积码编码器一般结构图 卷积编码充分利用了各码组的相关性,无论在理论上还是在实际中已经被证明其性能不差于甚至优于分组码。而且卷积码和其它编码方法比起来,有相对直观和简洁的编码结构。当然和拥有严格代数结构的分组码不同,卷积码至今尚没有找到可以把纠错性能和码的构成有规律的联系的严密的数学手段,因此,目前大多用计算机来搜索好码,而且卷积码的译码方法比较复杂,从目前所使用的几中主要译码方法(如维特比算法(VA),最大后验概率译码(MAP)等)
15、都存在结构复杂,计算量巨大的问题。3.1.1 卷积码的表示()卷积编码器在一段时间内输出位码,不仅与本段时间内的位信息有关,而且还与前面=段规定时间内的信息位有关,这时监督位监督着这段时间内的信息。这段时间内的码元数目称为这种码的约束长度。这里选用我们项目中使用的(2,1,2)卷积编码为例子,简单介绍一下卷积编码的编码原理及表述。图 3-2 (2,1,2)卷积编码器 可以看到,编码器有2个移位寄存器,每个时钟周期输入1bit数据,每一段时间内输出2bit数据。输出与输入的关系如下: (3-1) 其中表示模2加。这样编码器必须存储最近两个信息比特。我们称这个编码器的记忆长度为=2,着两个输出序列
16、通过切换器服用形成一个码序列,此序列为(2,1,2)卷积码的一个码序列或码字。同时,(2,1,2)卷积编码器的寄存器和模2加法器之间的连接还可以由以下生成序列描述: (3-2)表示的抽头连接系数,而表示的抽头连接系数,这样,我们可以用(3-3)式表示 表示卷积 (3-3)我们还可以用和排列成一个矩阵G,该矩阵为码序列的生成矩阵的生成矩阵G = 整个编码操作可一表示为G.。那么我们可以将(2,1,2)编码推广到所有无反馈的1路输入路输出的卷积编码器。假设编码器长度为,那么可以表示为 第个输出序列可以表示为 (3-4)3.1.2 状态流图 作为一个有限状态的线性电路,卷积编码器可以用状态流图描述,
17、如果编码器的寄存器个数为,那么一共就有个状态。状态随着输入到移位寄存器当中的码字的变化而发生变化。状态转移图是由代表编码器状态的节点和代表状态转移的有向线段所组成的。每条有向线段用输入/输出来标识。我们仍然以(2,1,2)编码器为例。由于编码器有两个寄存器组成,那么它拥有4个状态,分别用a,b,c,d表示,每个状态有两条出径,表示输入比特的两种可能。这里我们用实线表示输入比特为0,虚线表示输入比特为1。图3-3表示了(2,1,2)编码器的状态转移图。图3-3 (2,1,2)编码器状态转移图3.1.3 网格图 如果我们将状态流图的个中可能路径按时间轴展开,我们可以得到卷积码的另一种表示方式-网格
18、图。个寄存器的卷积编码器对应到网格图中时间轴上每个时刻都有个节点,对应于状态流图上的个状态。各时刻节点间的连线叫做分支,与状态流图中的有向线段对应,表示状态的转移。图3-4表示了(2,1,2)卷积编码器状态转移的网格图。 图3-4(2,1,2)卷积编码器状态转移图3.1.4 卷积码距离特性 卷积码的纠错性能取决于它的距离特性。这里考虑两种距离。对于硬判决译码,译码器对二进制符号进行操作,编码性能用汉明距离衡量。而软判决译码器从解调器接收量化或模拟信号,译码操作基于欧氏距离。卷积码的最小自由距离定义为码字集合中,任意两个码序列之间的最小汉明距。由于卷积码是线性的,两个码序列之间的距离等于它们的模
19、2和的重量,而这个和又是另一个码序列。因此所有非零码序列的最小重量即是最小自由距离。换句话说,全零码序列可以作为确定最小自由距离的参考序列。3.1.5 卷积编码器的FPGA实现 Verilog-HDL对(2,1,2)编码器进行硬件描述以后得到图3-5所示的顶层设计图,其引脚定义见表3-1 图3-5(2,1,2)卷积编码器FPGA实现顶层模块图表3-1 编码器引脚定义1clk全局时钟。2clk_data编码时钟,频率为全局时钟的二分频。3mcu_resetSOC芯片复位信号,高电平有效。系统上电后,需要MCU对SOC芯片进行初始化。4fifo_full编码始能信号(先进先出寄存器满信号),高电平
20、有效。5fifo_empty待编码数据发送完毕信号,高电平有效。6-13fifo_out编码数据输入(8bit并行)。14type_t发送数据类型信号。15 end_send编码发送完毕信号,表示信码已经完全传输到扩频端,高电平有效。16read取待编码数据始能信号,高电平有效。17end_encode编码结束标志。18en_dsss扩频始能信号。19-20encode_out编码输出,2bit并行输出。 编码器工作流程如下: 图3-6 编码器工作流程图 编码器的仿真见图3-7,encode_in进行输入后编码由encode_out输出。 图3-7 编码模块组成图 顶层结构又由两级子系统con
21、voler_1和convoler_2串联组成,见图3-8 图3-8 编码器模块构成图 其中convoler_1是1bit移位积存器。而convoler_2是整个编码器的核心部分,完成了(2,1,2)编码的数据抽头,模2加和并行输出的功能。3.2 Turbo码概述自从Shannon在1948年提出信息论以来,人们在不懈地向逼近信道容量的极限努力,从信息论的角度看,只要传输的信息速率小于信道容量,总存在使得错误概率任意小的编码方法。Shannon从理论上证明了,即使是随机编码,只要编码块足够长,就能保证错误率任意小。从码空间的角度可以解释为每个码字在整个码空间中平均的占有足够大的区域。尽管可能出现
22、两个码字距离较小的情况,但当码空间维数越高时,出现远离平均码距的码对的概率就越小,并趋于0。尽管我们能产生这样的随机编码,但由于需要较大的维数,而码字数量巨大,使得译码不可能实现。为了能以可接受的复杂度进行译码,我们必须赋予它一个码结构。因此,寻找一种可译码结构,使短码有尽量大的码距,而长码的码距尽可能接近平均码距,而长期以来,由于高维理论的不足,编码研究的思想多局限于低维数码,此时好的码要求有尽量大的最小码距,虽然相对未编码系统而言能提供一定的编码增益,但还是与信道容量相距甚远。Turbo在英文中有涡轮驱动的意思。Turbo码顾名思义有级联、迭代的含义 。自从Turbo码93年提出以来,有关
23、其设计及其性能的研究已成为国际信息与编码理论最为重要的研究领域之一。Turbo码在低信噪比下所表现出的接近Shannon极限的性能,使得它在深空通信、移动通信等系统中有广阔的应用前景。3.3 Turbo编码器Turbo码编码器一般是由两个或多个递归系统卷积码(RSC)编码器通过一个交织器并行级联而成的。编码器的结构称为并行级联是因为两个编码器使用的是同一组输入信息,而不是一个编码器对另一个编码器的输出进行编码(串行级联)。因此Turbo码也被称为并行级联卷积码(PCCC)。图4-1给出了一个典型的Turbo编码器的结构框图。如图所示,编码器包括了两个递归系统卷积码(RSC)编码器一个交织器(I
24、nterleaver)和一个打孔器(Puncturing)。InterleaverPuncuringCode wordXkRSC2RSC1图4-1 一般Turbo编码器结构图3.3.1 递归系统卷积码RSC一般在Turbo使用的是递归系统卷积码(Recursive System Convolutional RSC) ,(2,1,2)RSC卷积编码结构框图如图4-2所示。RSC的每一级移位寄存器的输出都反馈到输入端,并与输入信息模2加后成为编码器输入比特。图4-2 (2,1,2)RSC卷积编码器结构图RSC与NSC相比具有更长的记忆长度,使较小距离的码字数减少。文献 中研究了大量RSC与NSC的
25、重量分布及其误码性能,在具有最小距离的码字数相同的情况下,RSC的信息序列重量比NSC的信息序列重量增加得慢,因此,在低SNR的情况下,RSC的误码比特率BER(Bit Error Rate)总是小于NSC的。3.3.2 交织与解解交织 我们知道编码的意义是通过加入冗余位信息的方法,从而在接收端能够发现和纠正由于信道影响而产生的随机错码。那么如果信码在信道中传输时由于信道或者认为的影响而使一段连续的码元产生大量错误,由于编码长度的有限,通过编码的方法是无法达到纠错的功能的,这就需要我们通过其它方法来解决。目前比较常用的方法是交织(Interleave)。交织本质上是一个将数据序列“扰乱”的过程
26、,这里的“扰乱”实际上是按照一定的人为方式进行重新排列,交织主要由交织器完成。它的逆过程就是解交织,将重排过的序列恢复到原来的序列顺序。可以理解的是通过交织以后,原来可能出现的大量连续错误被分散开,成为随机错误,而随机错误我们可以通过编码来解决。 交织器/解交织器的加入将大大提高系统的纠错能力。但是随之而来的是增加了传输延时,降低了信码的传输效率。这是因为信号的打乱一般是通过矩阵的读入和读出采用不同的方式而实现的,这样必然带来时间上的损失,而且不同的交织方法对信号的“扰乱”程度是不同的,如果“扰乱”的程度不够的话将得不到很好的交织效果。所以,高“扰乱”低硬件复杂度和低延时成为设计交织器的关键。
27、这里我们介绍两种比较常用的交织器的设计 3.3.3 块交织 块交织又称行列交织,其基本思想是按行读入,按列读出,如图4-3所示。块交织器的优点是结构简单,硬件实现比较容易。而缺点也是显而易见的,那就是由于输出顺序日染具有一定的规律性,对信号的“扰乱”程度不大。图4-3 块(行列)交织原理图3.3.4 PN交织块交织实现了对信号的“扰乱”,但扰乱程度不够大。为了最大可能的“扰乱”数据顺序,避免原先相邻的数据在交织以后继续相邻,伪随机交织的概念被提出来了。在信道编码器中,数据交织一般是通过RAM来实现的,通过控制RAM的读写地址,可以完成交织。因此对于伪随机交织,关键技术是产生一组伪随机数作为访问
28、RAM的地址。众所周知,最大长度现行移位寄存器序列(序列)属于伪随机序列,它的硬件实现比较简单,因此,我们很自然就想到产生序列实现伪随机交织器的地址控制。这样做将在很大程度上简化硬件电路设计,使得随机交织器对硬件资源的需求降低。通常,人们对序列的使用是串行的,即让序列发生器逐比特地输出。如果使序列从状态移位寄存器并行输出,并行数据宽度与RAM地址宽度一致。由序列的性质可知,在一个周期内,序列发生器中移位寄存器的各种状态,除全0状态外,其它状态只在序列中出现一次。这样,就保证了并行输出数据的唯一性,使得RAM中的每一信息比特有且仅有一次输出。设序列的周期为N=2n-1,n为移位寄存器的级数,则伪
29、随机交织器的硬件实现如图4-4所示。图4-4 PN交织器硬件结构图图中,CLK为信息比特输入/输出时钟,模N记数器用于输入比特位置计数器,产生RAM的写地址,Write Address和Read Address分别读写地址。其工作过程如下:(1) 计数器初始化为零;(2) R/W Control信号使WR信号有效,MUX选择输入信息比特和写地址 通过,将输入比特写入RAM中;(3) R/W Control信号使RD信号有效,交织后的输出比特位置从序列发生器输出,通过MUX将RAM中相应的信息比特读出;(4) 模N计数器加1;(5) 重复步骤(2)(4)N次;(6) Overflow信号有效,重
30、新初始化m Series Generator,Counter清零。 综上所述,伪随机交织器由于其对输出地址选择的随机性,实现了对输出码流的随机“扰乱”。但需要指出的是,由于序列的周期性,使得伪随机交织器的交织深度必须为序列的周期,这从一方面限制了其应用范围。对于具体交织器的实际,当交织深度小于或等于255时,选择伪随机交织器是比较适合的。而当交织深度大于255时,则需要采用比信道时钟高很多倍的系统时钟和地址比较器来解决这个问题。3.4 低密度奇偶校验(LDPC)码的研究意义 LDPC 码和Turbo 码都已经被证实,是可以实际应用的,性能接近香农限的纠错编码。但相对于Turbo 码,LDPC
31、码有着明显的优势:1)可以达到很高的码率。LDPC 码可以达到0.7、0.8 甚至0.9 的码率,而目前使用的Turbo码的码率大都是1/3,1/2。2)译码速率快。LDPC 码基于可信度传播的译码算法本质上是并行算法,有利于硬件的并行实现,可以达到很高的译码速度。例如,Flarion 技术公司已开发了LDPC 编、译码器产品,称为Vector LDPC。采用FPGA 实现,时钟频率100MHz,码长L=10000,码率R=0.9,编码器利用64k 逻辑门和13kB 存储器时,编码速率可达1.9Gbps;译码器使用320k 逻辑门和38kB 存储器时,译码速率为384Mbps。采用ASIC 实
32、现,时钟频率325MHz,码长L=50000,码率R=0.9,译码器使用2.6M 逻辑门和190kB 存储器时,可工作在10Gbps。3)不可检测错误少。由于LDPC 码码字之间的码距较大,使得它译码过程中出现不可检测错误的概率很小。4)发生“平板效应”(error-floor)的概率低。随着信噪比的增加,Turbo 码误码率的下降趋势将趋于平缓,即出现所谓的“平板效应”。但是LDPC 码发生这种现象的概率低得多,这使得LDPC 码在深空通信或光纤通信中更具优势。5)理论分析简单。不同于Turbo 码,LDPC 码有简单的数学模型,理论分析相对简单。目前,对LDPC 码的译码性能分析已经有了一
33、些较为完善的理论,但Turbo 码的性能还缺乏有效的理论解释。6) LDPC 码可以采用基于硬判决的迭代算法,虽然性能比软判决差,但实现复杂度很低。Turbo码译码在迭代时必须传递软信息,因此无法使用硬判决算法。7)由于校验式的存在,使得LDPC 码的译码过程中能够确定码字是否正确,这样不仅可以省掉CRC 编码,而且可以采用动态终止算法来减少迭代次数。 当然,没有一种技术是十全十美的,与上面的优点相对应,LDPC 码也存在一定的问题。这些问题制约了LDPC 码的广泛应用:1)编码复杂度高。虽然最新的研究表明LDPC 码可以在线性时间内编码,但其复杂度相对于Turbo 码来说仍然过大,更加无法和卷积码等即时编码的纠错码相比。2)中短码长的LDPC 码性能不理想。LDPC 码性能的优越性通常在码长较长时才能体现,当采用中