1.一种基于FPGA低复杂度OCDM调制解调实现方法,其特征在于:所述方法将离散菲涅尔变换DFnT或逆离散菲涅尔变换IDFnT拆分为两次旋转因子相乘、快速傅里叶变换FFT或逆快速傅里叶变换IFFT、相位与幅值调整步骤,以实现OCDM调制和解调,其包括以下步骤:S1、通过输入IQ数据模块输入待进行DFnT或IDFnT变换的IQ数据;
S2、设置第一次旋转因子相乘模块,选取旋转因子,并针对旋转因子进行相位旋转,再将相位旋转后的旋转因子与输入数据相乘,得到输出结果;
S3、设置FFT或IFFT模块,对第一次旋转因子相乘的输出结果进行FFT或IFFT变换;
S4、设置第二次旋转因子相乘模块,对FFT或IFFT变换后的数据进行第二次旋转因子相乘;
S5、设置相位与幅值调整模块对第二次旋转因子相乘后的数据进行相位和幅值调整,完成OCDM调制或解调;
在步骤S1中,针对OCDM调制,在输入IQ数据模块输入的数据为接收机采样得到接收IQ时域数据,并对其进行幅度归一化处理;针对OCDM解调,在输入IQ数据模块输入的数据为发射机经过星座点映射后的调制符号的同相和正交分量数据;
其中,对于N个待DFnT或IDFnT变换的IQ数据,输入IQ数据模块按照以下方式进行表示:in_signal[n]=i_insgn[n]+jq_insign[n]式中,n表示输入数据的索引,范围为0到N‑1;i_insgn[n],q_insgn[n]为有符号定点数或浮点数。
2.根据权利要求1所述的一种基于FPGA低复杂度OCDM调制解调实现方法,其特征在于:在步骤S2中,设置的第一次旋转因子相乘模块包括取共轭子模块、计数器子模块、RAM子模块、相位旋转选择子模块与复数相乘组合输出子模块,其中,取共轭子模块根据DFnT标志位DFnT_flag判断是否对输入IQ数据取共轭;
计数器子模块用于产生分别为索引计数器index和地址计数器addr_cnt的两个信号;
RAM子模块存储旋转因子IQ数据,并根据地址计数器addr_cnt的值取出相应地址的旋转因子;
相位旋转选择子模块利用索引计数器index通过组合逻辑得到旋转因子的相位调整模式phase_mode;
复数相乘组合输出子模块根据相位调整模式phase_mode完成输入IQ数据与旋转因子的复数相乘,得到计算结果。
3.根据权利要求2所述的一种基于FPGA低复杂度OCDM调制解调实现方法,其特征在于:第一次旋转因子相乘模块的取共轭子模块根据DFnT标志位DFnT_flag判断是否需要对输入IQ数据取共轭,其中,对于DFnT变换,DFnT_flag置1,输入IQ数据直通输出:in_DFnT[n] =i_din[n]+jq_din[n]=in_signal[n]=i_insgn[n]+jq_insgn[n]对于IDFnT变换,DFnT_flag置0,输入IQ数据取共轭输出:in_DFnT[n]=i_din[n]+jq_din[n]=i_insgn[n]‑jq_insgn[n]计数器子模块产生的索引计数器index在输入IQ数据in_signal有效的情况下累加1,计数范围为0到N‑1,则索引计数器index有log2(N)个比特;地址计数器addr_cnt在索引计数器index的第log2(N)‑2比特为0的情况下进行正序计数;在index的第log2(N)‑2比特为1的情况下进行逆序计数,计数范围为0到N/8‑1;其得到旋转因子RAM表的地址数据;
RAM子模块存储N/8个旋转因子IQ数据,并根据地址计数器addr_cnt的值取出相应地址的旋转因子 。
4.根据权利要求3所述的一种基于FPGA低复杂度OCDM调制解调实现方法,其特征在于:第一次旋转因子相乘模块的相位旋转选择子模块得到的相位调整模式phase_mode共有四种情况:情况1:当索引计数器index的高3bit为000或111时,phase_mode恒为0;
情况2:当索引计数器index的高3bit为001或010时,记m为index截去高3bit后的值,phase_mode=m%4;情况3:当索引计数器index的高3bit为011或100时,记m为index截去高3bit后的值,phase_mode=(m%2)*2;情况4:当索引计数器index的高3bit为101或110时,记m为index截去高3bit后的值,phase_mode=3‑(m%2)*2。
5.根据权利要求4所述的一种基于FPGA低复杂度OCDM调制解调实现方法,其特征在于:第一次旋转因子相乘模块的复数相乘组合输出子模块根据相位旋转选择子模块的四种相位调整模式得到四种输出结果:情况1:phase_mode为0时,计算结果Out_DFnT[n]为i_dout[n]=i_din[n]*i_dw[n] +q_din[n]*q_dw[n], q_dout[n]=i_din[n]*q_dw[n]+ q_din[n]*i_dw[n];
情况2:phase_mode为1时,计算结果Out_DFnT[n]为i_dout[n]=‑(i_din[n]*i_dw[n] +q_din[n]*q_dw[n]), q_dout[n]=i_din[n]*q_dw[n]‑q_din[n]*i_dw[n];
情况3:phase_mode为2时,计算结果Out_DFnT[n]为i_dout[n]=‑(i_din[n]*i_dw[n] +q_din[n]*q_dw[n]), q_dout[n]=i_din[n]*q_dw[n]‑q_din[n]*i_dw[n];
情况4:phase_mode为3时,计算结果Out_DFnT[n]为i_dout[n]=i_din[n]*i_dw[n] +q_din[n]*q_dw[n], q_dout[n]= q_din[n]*i_dw[n]‑i_din[n]*q_dw[n]。
6.根据权利要求5所述的一种基于FPGA低复杂度OCDM调制解调实现方法,其特征在于:在第一次旋转因子相乘模块中,对于DFnT变换,将输入IQ数据乘上所需的旋转因子得到输出结果;对于IDFnT变换,将输入IQ数据取共轭后再乘上所需的旋转因子得到输出结果;
其中,DFnT变换的输入IQ数据表示为:
in_DFnT[n] =i_din[n]+jq_din[n]=in_signal[n]=i_insgn[n]+jq_insgn[n]IDFnT变换的输入IQ数据取共轭后表示为:in_DFnT[n]=i_din[n]+jq_din[n]= i_insgn[n]‑jq_insgn[n]旋转因子表示为:
输出结果表示为:
Out_DFnT[n]=i_dout[n]+jq_dout[n]。
7.根据权利要求6所述的一种基于FPGA低复杂度OCDM调制解调实现方法,其特征在于:在步骤S3中,FFT或IFFT模块对DFnT进行FFT变换,对IDFnT进行IFFT;FFT或IFFT变换的点数为N,与DFnT或IDFnT变换点数相同。
8.根据权利要求7所述的一种基于FPGA低复杂度OCDM调制解调实现方法,其特征在于:在步骤S4中,设置的第二次旋转因子相乘模块中同样包括取共轭子模块、计数器子模块、RAM子模块、相位旋转选择子模块与复数相乘组合输出子模块,其针对FFT或IFFT模块的输出数据进行第二次旋转因子相乘。
9.根据权利要求8所述的一种基于FPGA低复杂度OCDM调制解调实现方法,其特征在于:在步骤S5中,相位与幅值调整模块对第二次旋转因子相乘模块输出的数据进行相位以及幅值调整,其中,对于DFnT变换,将第二次旋转因子相乘模块输出的IQ数据与exp(‑j*pi/4)进行复数乘法,并将结果通过右移位缩小 倍;
对于IDFnT,则将IQ数据取共轭后与exp(‑j*pi/4)进行复数乘法,并将结果通过左移位放大 倍;
输出相位以及幅值调整后的结果,完成OCDM调制或解调。