采用QPSK调制方式和卷积编码实现中频调制解调系统的FPGA功能
在无线数据传输中,由于信道中的噪声干扰,在接收端会引入一定的误码率(Bit Error Rate,BER)。高质量的数据业务要求较低的BER。为了达到较低的BER,经常采用信道编码技术。卷积编码和Viterbi译码是广泛使用的信道编码技术,具有一定的克服突发错误的能力,可以降低信道的误码率,带来很高的编码增益。信道编码的引入在提供纠错能力的同时,还扩展了信号的带宽。为了保证频带的利用率,本文采用QPSK调制方式,使数据调制在中频载波上,实现数据的可靠传输。
本文所述的中频调制解调系统具有以下特点:
(1)所有算法(编码、调制、解调和译码)都是在Xilinx公司的FPGA芯片中实现的,结构简单,体积小,功耗低。
(2)具有很好的实时性。对于1Mbit/s以上的数据速率,译码延迟不超过0.1ms。 (3)模块化的设计使得系统具有一定的兼容性,只需要修改少量程序,即可实现各种卷积编码和不同的调制中频。
(4)与浮点算法的仿真性能相比较,采用定点算法的系统性能损失不大,并能在较低的信噪比提供可靠的数据传输。 1 系统总结构及硬件设计
图1是中频调制解调系统的工作流程图。在发端,数据通过A/D转换器采样后进入FPGA,在其中完成(2,1,7)卷积编码和QPSK调制后通过D/A转换器输出。在收端,接收到的信号通过A/D转换器采样后进入FPGA,在其中完成QPSK解调和Viterbi译码后通过D/A转换器输出。
2 系统的FPGA实现
系统主要分为编译码和调制解调两大部分,下面分别叙述这两部分的原理及设计。 2.1 卷积编码与Viterbi译码的FPGA实现
2.1.1 (2,1,7)卷积编码
典型的(n,m,k)卷积码编码器是指输入位数为m、输出位数为n、约束长度为k的卷积码编码器,其编码速率为m/n。一个(2,1,7)的卷积编码器如图2所示,可用六个移位寄存器实现。 2.1.2 Viterbi译码
Viterbi译码算法是Viterbi于1967年提出的一种概率译码算法。其主要思想就是最大似然译码。译码时,将接收序列与根据编码产生的网格图上面的所有路径进行比较,求出其汉明距离或欧式距离,选出具有最小距离的路径,那么这条路径上的序列与发送序列相同的可能性最大。在AWGN信道中,当使用欧式距离时,Viterbi算法的性能最好。因此,这种算法是最优最大似然译码算法。Viterbi译码器分为硬判决译码器和软判决译码器,软判决译码器与硬判决译码器相比有2~3dB的增益,而译码器结构复杂度增加不大。
由Viterbi算法的基本原理可得典型的Viterbi译码器,如图3所示。
分支路径度量产生单元BMG(Branch Metric Generate)用于产生接收序列与状态转移分支上编码输出数据之间的距离。令长度为n的接收信号为R=(r1,…rn),与之相应的发送信号为C=(c1,…cn)。因为具有最小欧式距离的路径也就是具有最大相关的路径,所以定义分支路径上的度量为:
由于此分支路径度量没有平方运算,所以可将状态转移分支上的编码输出数据存储在查找表内,这样只需进行加减和查表运算,大大减小了实现的复杂程度。以上计算公式中数值为连续值,而本设计采用的是软判决译码器,故只需对输入的接收信号进行均匀量化即可(量化比特数为q)。
加比选单元ACS(Add-Compare-Select)模块包括若干个单个状态加比选模块ACSU,一个ACSU模块执行一个状态 的路径度量升级。ACSU模块的具体个数根据译码器的速率要求而定。对于低速的译码器,为了节约芯片的面积,可以使用较少的ACSU模块进行时
分复用;而在高速Viterbi译码器的设计中,则采用全并行的结构,ACSU模块的个数等于网格图上的状态数N=2k-1。译码器开始工作时,给路径度量设定一个初始化正值。在度量升级过程中,路径度量的不断累加会造成溢出。因为在度量升级时只是比较大小,所以在每次度量升级之后,所有的路径度量值减去路径度量值中的最小值,而不会影响路径度量向的大小关系。同时,为了下次路径度量升级不出现负值,需要对所有的度量值加上一个恒定常数。经过归一化处理后的路径度量,其最大值与最小值相差不超过2 q(k-1)。 所以,对于q比特而软判决编码长度为k的Viterbi译码器,其路径度量长度为q+log2(k-1)比特。
MLD(Most-Likelihood-Decision)模块用于在所有状态的路径度量中找出最大值,具有最大路径度量的幸存路径便是最大似然路径。在时刻L时,MLD电路判决最大似然路径,将其末端节点状态送至TB模块。同时为了保证下次的路径度量升级不出现负值,还要找出最小值送到PMMI模块,在其中进行归一化处理。
PMMI模块和SPMI模块分别是ACS模块与路径度量存储器PMM(Path Metric Memory)之间和幸存路存储器SPM(Survivor Path Memory)与MLD模块之间的接口模块。同时,TB(TraceBack)模块也通过SPMI模块读取幸存路径存储器信息。针对不同的存储方式,SPMI和PMMI的复杂程度也不同。ACSU模块的复用程度越高,其接口电路越复杂。 TB模块从SPM中读取当前时刻64条路径的幸存信息,根据末端状态可以找到相应的最大似然路径在时刻t的幸存信息,从而找到t-1时刻最大似然路径上的状态。依此类推,直至找到最大似然路径在t-L+1时刻的状态,状态的最高位即为译码输出。
FPGA可以实现流水线操作,而各个模块可以同时进行工作,所以需要控制模块处理各个模块间的时序关系。每个子模块都有一个控制信号,使得输入数据可以在各个模块之间进行流水操作。
由于本方案是基于各个功能单元自上至下设计的,灵活性较大,稍加修改子模块,便可以用于实现各种卷积码的Viterbi译码器。
2.2 QPSK调制与解调的FPGA实现
QPSK调制模块由成形滤波和上变频两部分组成。成形滤波具有两个功能,即限带和抗码间干扰。成形滤波采用查表的方式实现,四倍内插,升余弦滚降。形成后的数据与NCO产生的本地载波进行上变频运算。
QPSK解调的结构框图如图4所示。解调模块由下变频、低通滤波、根升余弦滤波和载波同步几部分组成。I、Q两路的调制信号先经过本地载波NCO下变频,再通过低通滤波器LPF得到基带信号。基带信号需要进行相应的根升余弦滤波。由于本地载波与发端载频之间有一定的偏差,所以要根据解调后的信号估计频差并修改要地载波NCO的参数,实现载波同步。数据经过根升余弦滤波后进行差分解码,解调后头这入译码器单元。
3 系统性能分析与结论
综上所述,系统主要功能都是在FPGA内完成的。本文选择Xilinx公司的100万门FPGA芯片XC2V1000,在ISE 6.2i环境下进行编程开发。系统的资源占用情况如表1所示。 为了测试系统在噪声下的误码率性能,在发端和收端之间引入噪声源,在70MHz中频上进行数据传输。使用误码率分析仪进行现场测试,获得的测试误码率曲线如图5所示。为了方便比较,图中给出了未编码传输系统的理想误码率曲线。由于定点实现、定时同步、载波同步等误差因素,调制解调的实现损耗将近1dB;而viterbi译码的量化输入和截短译码(本方案采用3比特量化和64步截短译码)带来的实现损失约为1dB。(2,1,7)卷积码的编码增益约为5~6dB,所以测试误码率曲线与未编码传输系统的理想误码率曲线之间的差距是3~4dB。换言之,本系统的实现增益为3~4dB。
综上所述,本系统设计简单、功耗低、性能良好,可在中频范围内进行高速数据的可靠传输。在不改变系统结构的情况下,稍加修改可广泛应用于其它类型的编码调制系统中。