文中分析了二进制,部分响应L=2 的连续相位调制方式,提出了一种该调制方式下解调器的FPGA 设计方法,并运用VHDL 硬件描述语言实现。
1 CPM 的基本原理
连续相位调制信号可以用式(1)表示:
式(1)中, b E 表示信号的码元能量,T 是码元间隔,即表示信号幅度。c f 是载波频率,φ (t, I )是带有传输信息的信号相位函数,其中I 表示发生的符号序列。φ (t, I )的表达式如下:
其中n I 是M (M = 2,4,8,16……) 进制的符号信息,取值为{±1,±3,……,±(M -1)}。文中M 为二进制调制, n I 的取值为+1、-1。h 是调制指数,g(t)是成形脉冲函数。脉冲函数g(t)采用升余弦脉冲RC:
式(3)中, L 又称为关联长度。
根据式(2)计算CPM 信号的基带相位,根据相位计算基带信号的I/Q 两路,之后使用两路信号相加就可以得到调制后的CPM 信号,见图1。
图1 CPM 信号调制
2 CPM 解调模块的原理及其实现
2.1 解调器实现原理
对CPM 信号的接收、解调,常采取的步骤为:解调-最大似然序列估计-Viterbi 译码-判决。首先将接收到的复包络信号分为I,Q两路,下变频为基带信号,分别与cos(ψ (t, a))和sin(ψ (t, a))相关后相加,从而得到节点的度量值。对于t时刻每个状态,可以根据其输入值的不同,计算来自前一级节点的两条路径的路径度量,并分别加上前一级节点的节点度量,然后从中选择一个最小的度量值作为节点度量,并存储前一级节点的信息。
2.2 解调器实现框图
这里仿真采用二进制2RC 的调制方式,根据Viterbi 译码方式可知,调制信号共有8 个状态,将这些状态分别编码为000,001,010,011,100,101,110,111。输入数据与状态间转移关系见表1。笔者在设计中将其分为四个模块:分支度量模块、加比选模块、回溯模块和控制模块。其结构设计如图2 所示。
图2 解调过程
(1)分支度量模块
此模块根据输入数据计算分支度量值。在FPGA设计中,预先将每种基准状态抽样时刻的值存入STD 寄存器中,在计算分支度量时通过查表得到基准状态的值。将输入I,Q 两路数据进行串/并转换,得到一个码元持续时间内的调制信号后,与每种基准状态的抽样值相乘并相加,从而得到I,Q 两路的路径度量值。最后将I,Q 两路度量值相加,便可以得到各状态的分支度量值。
(2)加比选ACS 模块
此模块分为两部分:①计算路径度量值;②选择当前时刻最佳路径。当前状态的路径度量值为该状态下所有可能的路径度量值中的最大值。最佳路径为最大路径度量值对应的上一状态。在设计中采用确定CPM 调制的起始状态的方法。
复位时将起始状态的路径度量值赋值为0;将其他状态的路径度量值赋值为一个较小的负数。采用这种方式有效避免解调时起始状态的不确定性。
CPM 的解调在一定的译码数量后,路径度量值的存储器便会饱和溢出。该设计采用一种简单方法防止溢出:每次路径度量值计算完成后,判断其最大值,如果最大值超过某一确定的正值,则所有的路径度量值减去一个正值。再判断是否有度量值小于一个确定的负数,如果有,则将其值重新赋值为一个较小的负数。仿真中,证明了这种方法的可行性。
表1 输入数据与状态间转移关系
(3)回溯模块
此模块包括幸存路径存储和判决输出。在模块中比较当前时刻各状态的路径度量值,求得最大路径度量值,以及对应的当前状态。从表1 可知,状态的最低位可以表现上一时刻的输入值,最低位为0 时,表示上一时刻的输入码字为-1;最低位为1 时表示上一时刻的输入码字为1。
3 硬件实现、时序仿真和性能
这里选择的FPGA 是Xilinx 公司的Virtex5 系列的XC5VSX95T 芯片,设计软件为ISE, Synplify, Modelsim,Matlab,设计语言采用VHDL 硬件描述语言。
仿真中选择二进制,关联长度L 取2,升余弦脉冲的调制方式。仿真中波特率为5 MHz, 采用8 倍采样,系统时钟为120 MHz。假设输入到调制器的双极性比特流为{ } n b :1,1,1,-1,1,1,-1,-1,1,1,1,-1,1,1,-1,1……分支度量仿真结果如图3 所示。
图3 分支度量仿真结果
加比选模块仿真结果如图4 所示。
图4 加比选模块仿真结果
幸存路径存储和判决输出模块仿真结果如图5 所示。
图5 幸存路径存储和判决输出模块仿真结果
译码码字:1,1,1,-1,1,1,-1,-1,1,1,1,-1,1,1,-1,1……当调制信号不加高斯白噪声时,实现了误码率为0 的解调。仿真结果表明这里所设计的性能达到设计的要求。
4 结语
文中主要设计了该二进制2RC CPM 信号基于FPGA 的解调器。该方法针对Viterb 译码方法,提出了一种新的防止路径度量值溢出方法。该设计的优点是:幸存路径存储器中存入的只是路径信息,不需要存储路径度量值,节省了存储空间;当译码输出时只需要读出最大路径度量值的状态所对应的幸存路径存储单元的最低位状态值,提高了译码速度。该方法有效地防止路径度量值溢出。
上一篇:多码率QC-LDPC译码器设计与实现
下一篇:基于FPGA的高性能DAC芯片测试与研究
推荐阅读最新更新时间:2024-05-02 21:19