【硬件片内测试】基于FPGA的完整DQPSK链路测试,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计

目录

1.引言

2.算法测试效果

3.算法涉及理论知识概要

[3.1 217卷积编码/维特比译码](#3.1 217卷积编码/维特比译码)

[3.2 差分QPSK映射/逆映射](#3.2 差分QPSK映射/逆映射)

[3.3 上变频/下变频](#3.3 上变频/下变频)

[3.4 基于PN导频和cordic的频偏锁定](#3.4 基于PN导频和cordic的频偏锁定)

[3.5 基于相关峰的定时点提取](#3.5 基于相关峰的定时点提取)

[3.6 帧同步](#3.6 帧同步)

[3.7 采样判决](#3.7 采样判决)

4.Verilog核心接口

5.参考文献

6.完整算法代码文件获得


1.引言

基于FPGA的完整DQPSK通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计。系统包括DQPSK调制模块,DQPSK解调模块,217卷积编码模块,维特比译码模块,AWGN信道模块,误码统计模块,数据源模块,基于PN序列和cordic算法的频偏估计和补偿模块,基于PN相关峰提取的帧同步和定时点提取模块等。

2.算法测试效果

本系统是

【仿真测试】基于FPGA的完整DQPSK通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计

硬件测试版本。

在系统在仿真版本基础上增加了ila在线数据采集模块,vio在线SNR设置模块,数据源模块。硬件ila测试结果如下:(完整代码运行后无水印):

vivado2022.2测试

设置SNR=15db

设置SNR=8db

3.算法涉及理论知识概要

整体系统结构如下所示:

3.1 217卷积编码/维特比译码

217卷积码由生成多项式定义,常见的生成多项式为G1 = 111,G2 = 101,这里的数字表示二进制形式的多项式系数。

卷积编码器:编码过程通过卷积编码器完成,它包含多个滞后寄存器和可编程加法器。输入数据依次通过滞后寄存器,然后按照生成多项式的规则,与滞后数据进行模 2 加法运算,从而生成编码输出。

编码率:217卷积码通常以"2/7"编码率工作,即每2个输入比特会产生7个编码比特,增加了数据的冗余度,使接收端能够检测和纠正传输过程中出现的错误。

维特比译码是一种针对卷积码的最大似然译码算法。它根据接收信号和已知的卷积码生成多项式,在所有可能的发送序列中,通过计算路径度量(如汉明距离等),选择一条最有可能的发送序列作为译码结果,从而纠正传输过程中由于噪声等因素引起的错误,恢复出原始的输入数据。

3.2 差分QPSK映射/逆映射

QPSK(正交相移键控)是一种数字通信调制技术,通过改变载波信号的相位来传输信息。它将输入的二进制比特流每两个比特分为一组,共有4种组合:00、01、11、10。这4种组合分别对应载波的4个相位状态,通常为0°、90°、180°、270°。在复平面上,可以用复数来表示这些相位状态,如00映射为exp (1i * 0)=1,01映射为exp(1i * π/2)=j,11映射为exp (1i * π)=-1,10映射为exp(1i * 3π/2)=-j,从而实现每符号传输 2 比特信息的高效传输。

DQPSK是QPSK(四相相移键控)的变体,它通过差分编码处理信号,利用相邻码元之间的相对相位变化来表示二进制数据流,而不是依赖于绝对相位值,这样可以有效对抗相位失真的影响。在DQPSK中,每个符号代表两个比特,有四种可能的相位变化,通常为 0、π/2、π、3π/2 或 ±π/4、±3π/4。

差分编码的步骤:对两路并行比特流进行差分编码,将绝对码转换为相对码。设差分编码后的两路信号为cn ​和dn ​ ,它们与前一时刻的cn−1和dn−1 ​ 以及当前的an和bn 有关。

差分解码的步骤:对相干解调得到的同相和正交两路信号进行差分解码,恢复出原始的相对码。通过比较当前码元与前一码元的相位差,根据相位差的取值范围确定原始的比特信息。

3.3 上变频/下变频

将基带信号的频谱频移到所需要的较高载波频率上的过程。原理是把要变频的信号和一个固定频率的本振信号送入一个非线性器件(混频器),得到两个频率相加和相减的频率,然后通过滤波器取出上边带信号,完成上变频,实现将基带信号调制到高频载波上进行传输。

下变频是上变频的逆过程,即将接收到的高频信号的频谱下移到较低的频率上,通常是中频或基带频率。同样通过与本地振荡器产生的正弦信号进行混频,然后取混频之后的下边带信号(或经过进一步处理得到基带信号),以便后续进行信号的解调等处理。

3.4 基于PN导频和cordic的频偏锁定

发送端在发送数据帧时附加已知的伪随机(PN)导频序列,接收端利用PN导频序列来估计信号的频偏。接收端将接收到的导频数据做延迟和共轭相乘,然后根据其实部和虚部使用CORDIC算法进行迭代旋转操作,从而估计出信号的相位偏移,进而得到频偏值。最后通过将接收信号与一个相反的复数指数函数相乘,实现对接收信号的频偏补偿,将频偏锁定到零。

3.5 基于相关峰的定时点提取

在接收信号中,通过寻找与本地已知序列(如训练序列或导频序列)的相关峰来确定定时点。具体来说,将接收信号与本地序列进行相关运算,当两者的相位和时间对齐时,相关值会出现峰值,这个峰值点对应的位置就是最佳的定时点,用于确定信号的采样时刻,以保证后续信号处理的准确性。

3.6 帧同步

在数字通信中,信息通常是以帧为单位进行组织和传输的。帧同步的目的是确定每一帧的起始位置,以便接收端能够正确地解调出每帧中的数据。设发送的帧结构为:帧同步码 + 信息码元序列 。帧同步码是具有特定规律的码序列,用于接收端识别帧的起始。帧同步的过程就是在接收序列中寻找与帧同步码匹配的位置,一旦找到匹配位置,就确定了帧的起始位置,后续的码元就可以按照帧结构进行正确的划分和处理。

3.7 采样判决

在确定了定时点后,对接收信号进行采样,将采样值与预设的判决门限进行比较,根据比较结果确定接收信号的电平值,从而恢复出原始的二进制比特流。例如,在DQPSK信号中,根据采样点在复平面上的位置与各个相位状态的对应关系,判决出发送的是哪两个比特。

4.Verilog核心接口

整个程序构架如下:

5.参考文献

1\]罗常青,安建平,沈业兵.采用(2,1,7)[卷积码](https://so.csdn.net/so/search?q=%E5%8D%B7%E7%A7%AF%E7%A0%81&spm=1001.2101.3001.7020 "卷积码")+QPSK的中频调制解调系统的FPGA实现\[J\].电子技术应用, 2005, 31(10):3.DOI:10.3969/j.issn.0258-7998.2005.10.027. ## 6.完整算法代码文件获得 **完整程序见博客首页左侧或者打开本文底部** **V** **(V关注后回复码:X95)**

相关推荐
szxinmai主板定制专家6 小时前
【NI测试方案】基于ARM+FPGA的整车仿真与电池标定
arm开发·人工智能·yolo·fpga开发
爱吃汽的小橘19 小时前
基于ads1256的ADC控制实现
fpga开发
易享电子2 天前
基于单片机车窗环境监测控制系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·fpga开发·51单片机·proteus
cycf2 天前
系统同步接口输入延迟(五)
fpga开发
cmc10282 天前
131.如何区分FPGA芯片型号是-2l还是-2方法
fpga开发
sz66cm2 天前
FPGA基础 -- 无毛刺时钟切换(glitch-free clock switching)
fpga开发
Blossom.1182 天前
把AI“绣”进丝绸:生成式刺绣神经网络让古装自带摄像头
人工智能·pytorch·python·深度学习·神经网络·机器学习·fpga开发
电子凉冰2 天前
FPGA强化-VGA显示设计与验证
fpga开发
XINVRY-FPGA2 天前
XC7A100T-2FGG484I Xilinx Artix-7 FPGA
arm开发·嵌入式硬件·fpga开发·硬件工程·信息与通信·信号处理·fpga