为了缩短卷积编码器设计周期,使硬件设计更具灵活性,在介绍卷积编码器原理的基础上,论述了一种基于可编程逻辑器件,采用模块化设计方法,利用VHDL硬件描述语言实现CDMA2000系统前向链路卷积编码器的方法,给出了在QuartusⅡ软件下的仿真结果,并在FPGA器件上验证实现。仿真和实验都证明了这种方法的可行性和正确性。
0 引言
在通信系统中,由于数字信号在传输过程中受到各种干扰的影响,使信号码元波形变坏,故传输到接收端后可能发生错误判决,为解决这一问题,通常在设计数字通信系统时,首先应从合理地选择调制制度、解调方法以及发送功率等方面考虑,若采取以上措施仍难满足要求,就要考虑差错控制措施。在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代表编码后的输出码元。
在卷积码的编码过程中,编码器从全零状态出发,最后必须回到全零状态,故当送完信息后,还要向编码器再送入K-1段全零信息,以迫使编码器回到全零状态。设此编码器的起始状态为零,即b1b2b3为000。当输入的信息位为11010时,为保证输入的全部信息位都能通过移位寄存器,并对移位寄存器进行复位,必须在信息位后加约束长度减一个零,即两个零;此时对应的输出码元序列为:10111001011100,丢弃后四位可得编码器的输出信息:1011100101。整个工作过程中编码器的状态如表1所示。
1.2 CDMA 2000系统中的前向链路卷积编码器
在CDMA 2000系统中,前向链路使用编码率为1/2,约束长度为9的卷积编码器。前向链路卷积码的生成多项式矩阵为:
由此生成多项式矩阵可得前向编码器的结构图,如图2所示。图中s1~s8为移位寄存器;m1,m2为模2和加法器;其中b1代表当前输入的信息位;移位寄存器状态b2~b9存储以前的信息位;c代表编码后的输出码元。
2 CDMA 2000系统中前向链路卷积编码器的实现
2.1 CDMA 2000前向链路卷积编码器的电路组成
该设计采用模块化的设计方法,根据CDMA2000系统中的前向链路卷积编码器的功能将其内部结构分为:移位寄存器组、模2和加法器、输出控制器以及时钟电路等四个模块,每一模块对应一部分VHDL的设计文件,这样利于程序的编写和调试,从而降低了整个程序的调试难度,提高了软件的可维护性和可读性。前向链路卷积编码器的组成框图如图3所示。
其中,时钟信号clk1和clk2可由基站控制器(BSC)的时钟电路直接提供,或由本次设计的时钟电路将基站控制器(BSC)提供的原始时钟信号进行分频得到;输出控制器包括输出数据合成电路和整形电路两部分。
2.2 CDMA 2000前向链路卷积编码器的仿真实现
根据卷积编码器电路框图,采用VHDL语言编写前向链路卷积编码器的源程序输入到QuartusⅡ开发软件中进行编译、仿真、综合得到可下载文件,然后通过对器件编程完成设计。
仿真前假设编码器的初始状态为零,即:b1~b9为00000000;输入的信息为11010,为保证输入的全部信息位都能通过移位寄存器,并对移位寄存器进行复位,在信息位后加8个零,其输出结果为11010111000001111111101100,,仿真时,输入数据data的速率为9.6Kb/s;输出码元c的速率为19.2Kb/s。仿真结果如图4所示,其中b为寄存器组各个时刻的状态。
在前向链路卷积编码器的设计中有一些需要注意的问题:首先要明确VHDL语言不同于其他的计算机语言,它是一种硬件描述语言,它描述的对象是客观的电路系统。其次,不同的EDA工具对VHDL语言的支持程度不同。本次设计中采用的QuartusⅡ开发工具主要是针对可编程逻辑器件的软件,它并不支持所有的VHDL语句,它只支持RTL级描述,不支持行为级描述。再有,在设计中需要根据设计要求和可编程逻辑器件的资源情况、速度等进行合理的选择。该设计中采用的EP2C8Q208器件就可满足资源和速度方面的要求。
3 结语
本文实现了一种适用于CDMA 2000系统的前向链路卷积编码器,通过对整体电路的设计、仿真和调测,结果表明本编码器可达到CDMA 2000系统要求,具有一定的实用价值,同时,本设计采用基于可编程逻辑器件借助VHDL语言及EDA工具进行设计的思路,大大缩短了设计周期,降低了成本,提高了设计的可靠性、灵活性,为通信系统设计提供了一种有效的设计方法。