摘要:为了缩短卷积编码器设计周期,使硬件设计更具灵活性,在介绍卷积编码器原理的基础上,论述了一种基于可编程逻辑器件,采用模块化设计方法,利用VHDL硬件描述语言实现CDMA2000系统前向链路卷积编码器的方法,给出了在QuartusⅡ软件下的仿真结果,并在FPGA器件上验证实现。仿真和实验都证明了这种方法的可行性和正确性。
关键词:FPGA;VHDL;CDMA 2000;卷积编码器;前向差错控制
引言
在通信系统中,由于数字信号在传输过程中受到各种干扰的影响,使信号码元波形变坏,故传输到接收端后可能发生错误判决,为解决这一问题,通常在设计数字通信系统时,首先应从合理地选择调制制度、解调方法以及发送功率等方面考虑,若采取以上措施仍难满足要求,就要考虑差错控制措施。在CDMA 2000系统的前向链路和反向链路中就采用了卷积编码来实现前向差错控制(FEC)。
FPGA是可编程逻辑器件,它的主要优点在于可以借助EDA工具通过软件编程对器件的硬件结构和工作方式进行重构,这就使得硬件设计具有软件设计的灵活性和便捷性。本设计采用VHDL语言并选用可编程逻辑器件在QuartusⅡ下来实现CDMA 2000系统中的前向链路卷积编码器。
1 卷积编码器原理
卷积码是由P.Elias在1954年首先提出来的,它是一种非分组码,通常它更适用于前向纠错,因为其性能对于许多实际情况常优于分组码,而且设备简单。自从A.J.Viterbi于1967年发现了一种有效的译码算法,并由J.Omura于1969年证明这是一种ML译码算法后,使用Vit-erbi译码算法的卷积码就成为现代通信系统中必不可少的编码方案。CDMA 2000系统亦采用此种编码方案。
1.1 卷积编码器原理
与分组码编码器不同,卷积码编码器是有记忆的,即:编码器在任何一段时间内产生的n个码元,不仅取决于这段时间中的k个信息位,而且还取决于前N-1段规定时间内的信息位;即编码器产生的n个码元跟正在移入的每一个k位的信息比特有关。为了便于说明问题,在这里规定:编码率r=k/n。其中,k表示一次移入编码器的信息位数;n表示对应于移入k位信息编码器输出符号数。此外,用K表示约束长度,它等于编码器中移位寄存器的级数;实际上,第一个移位寄存器是多余的。
描述卷积编码过程的方法很多,如:多项式法、矩阵法、树状图和网格图等。这里采用与卷积编码器结构密切相关的多项式法来说明卷积码的编码原理。已知一个编码率r=1/2,约束长度K=3的卷积编码器,其卷积码的生成多项式矩阵为:
式中:D为延迟算子,生成多项式的第一项为1+D2,表示编码器输出的第一个码元c1等于输入码元b1与前输入码元b3的模2和;其第二项为D+D2,表示输出的第二个码元c2为前两个输入码元b2和b3的模2和。
根据卷积码的生成多项式矩阵可直接得到编码器的结构图,如图1所示。图中s1,s2为移位寄存器;m1,m2为模2和加法器;其中b1代表当前输入的信息位;移位寄存器状态b2,b3存储以前的信息位;c1,c2代表编码后的输出码元。