m基于FPGA的gardner环定时同步实现,含testbench测试程序

简介: m基于FPGA的gardner环定时同步实现,含testbench测试程序

1.算法仿真效果
使用vivaod2019.2版本仿真结果如下:

59ea6ac1185345141c506f93b2c12d73_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

将基带信号放大可以看到:

0beae06e67cb97966be6cf60bf2989c9_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

整个系统的RTL图如下图所示:

1b518561081dd54bd00cb21d4058ffce_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

其中gardner环的结构如下图所示:
8f4314727691b41aacc922cc59884180_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

2.算法涉及理论知识概要
基于FPGA的Gardner环定时同步是一种用于数字通信系统中实现定时同步的高效方法。该方法通过提取接收信号中的定时误差信息,在不需要先进行载波同步的情况下,实现位同步信号的调整。

2.1 Gardner环概述
首先,我们来看一下Gardner环定时同步的基本原理。Gardner算法是一种非判决指向方法,其基本思想是提取相邻码元最佳采样点的幅度和极性变化信息,以及相邻码元过渡点是否为零这一信息,从而从采样信号中提取出定时误差。在系统设计中,Gardner锁相环位于Costas载波同步锁相环之后,主要由四部分组成:内插器、时钟误差提取模块、环路滤波器以及控制器模块。

    在Gardner算法中,相互正交的I,Q两路信号的采样点会通过运算每个符号期间产生一个定时错误样点。通过定时误差检测,定时错误序列经过环路滤波器后送给数控振荡器。数控振荡器根据接收到的采样时刻信号和误差信号产生参数控制插值滤波器。插值滤波器会根据这些信号进行采样时刻调整,从而完成整个符号同步过程。

2.2 Gardner环定时同步的原理
Gardner定时误差算法通常用在BPSK、QPSK信号,通过改进可以应用在QAM等多进制基带信号中。Gardner定时误差算法,该算法的一个特点是每个符号只需要使用两个采样点,一个是strobe点,即最佳观察点,另外一个是midstrobe点,即两个观察点之间的采样点。Gardener环中的数控振荡器与锁相环路中的NCO功能完全不同,这里的NCO作用是产生时钟,即确定内插基点mk,同时完成分数间隔uk的计算,以提供给内插器进行内插。位同步环路中的数控振荡器(NCO)是一个相位递减器,它的差分方程为:
η(m+1)=[η(m)-ω(m)]mod1

   式中,η(m)是第m个工作时钟NCO寄存器的内容,ω(m)为NCO的控制字,两者都是正小数。NCO的工作周期是T s(采样周期),内插器的周期为T i,ω(m)由环路滤波器进行调节,使NCO在最佳采样时刻溢出。当环路达到平衡时,ω(m)近似是个常数,此时平均每隔1/ω(m)个采样周期,NCO就溢出一次,所以

fb1382a992970f2ddea9c8f0041afeec_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.3 Gardner环定时同步的实现步骤
具体来说,Gardner定时同步算法的实现过程可以概括为以下几个步骤:

采样信号处理:从接收到的数字基带信号中提取出I,Q两路正交信号,并对它们进行采样。每个采样点都包含了一个符号的幅度和相位信息。
定时误差检测:在每个符号周期内,通过计算相邻码元最佳采样点的幅度和极性变化信息,以及相邻码元过渡点是否为零的信息,得到定时误差信号。
滤波处理:利用数控振荡器产生的插值滤波器对定时误差信号进行滤波处理。插值滤波器的作用是根据采样时刻信号和误差信号来调整采样时刻,以减小定时误差。
反馈控制:将滤波后的定时误差信号反馈给数控振荡器,再由数控振荡器根据这个信号调整插值滤波器的参数,以实现更精确的定时同步。
总的来说,基于FPGA的Gardner环定时同步是一种利用插值算法实现位同步信号调整的有效方法。它能在不改变采样时钟的频率和相位的情况下,根据采样值以及数控振荡器输出的采样时刻信号和误差信号获取最佳采样值。这种方法对于高采样频率和受限本地时钟的数字通信系统来说非常有优势,可以有效地提高数字通信系统的性能。

3.verilog核心程序
````timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2023/09/27 02:16:25
// Design Name:
// Module Name: TEST
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//

module TEST();

reg i_clk;
reg i_clkr;
reg i_clkSYM;
reg i_rst;
reg i_dat;

wire signed[15:0]o_Ifir_T;
wire signed[15:0]o_Qfir_T;

//QPSK调制
Tqpsk Tqpsku(
.i_clk (i_clk),
.i_clkSYM(i_clkSYM),
.i_rst (i_rst),
.i_dat(i_dat),

.o_Ifir (o_Ifir_T),
.o_Qfir (o_Qfir_T)
);

wire signed [17:0] o_inserti; //插值I支路数据
wire signed [17:0] o_insertq; //插值Q支路数据
wire signed [15:0] o_uk; //插值间隔输出

wire o_syn_clock; //位同步脉冲/1MHz
Gardner_tops Gardner_topsuut(
.i_clk (i_clkr),
.i_rst (i_rst),
.i_basei (o_Ifir_T),
.i_baseq (o_Qfir_T),
.o_inserti (o_inserti),
.o_insertq (o_insertq),
.o_syn_clock (o_syn_clock),
.o_uk (o_uk)
);

initial
begin
i_clk = 1'b1;
i_clkr= 1'b1;
i_clkSYM=1'b1;
i_rst = 1'b1;

#160000
i_rst = 1'b0;

end
always #1000 i_clk=~i_clk;
always #1005 i_clkr=~i_clkr;
always #8000 i_clkSYM=~i_clkSYM;
initial
begin
i_dat = 1'b0;

#144000
repeat(1000)
begin
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b1;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;
#16000 i_dat = 1'b0;

end
$stop();

end

endmodule
```

相关文章
|
10天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的1024QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的1024QAM调制解调系统的仿真与实现。通过Vivado 2019.2进行仿真,分别在SNR=40dB和35dB下验证了算法效果,并将数据导入Matlab生成星座图。1024QAM调制将10比特映射到复数平面上的1024个星座点之一,适用于高数据传输速率的应用。系统包含数据接口、串并转换、星座映射、调制器、解调器等模块。Verilog核心程序实现了调制、加噪声信道和解调过程,并统计误码率。
31 1
|
1月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的64QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的64QAM调制解调通信系统的设计与实现,包括信号生成、调制、解调和误码率测试。系统在Vivado 2019.2中进行了仿真,通过设置不同SNR值(15、20、25)验证了系统的性能,并展示了相应的星座图。核心程序使用Verilog语言编写,加入了信道噪声模块和误码率统计功能,提升了仿真效率。
44 4
|
1月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
1月前
|
存储 算法 数据处理
基于FPGA的8PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统在原有的8PSK调制解调基础上,新增了高斯信道与误码率统计模块,验证了不同SNR条件下的8PSK性能。VIVADO2019.2仿真结果显示,在SNR分别为30dB、15dB和10dB时,系统表现出不同的误码率和星座图分布。8PSK作为一种高效的相位调制技术,广泛应用于无线通信中。FPGA凭借其高度灵活性和并行处理能力,成为实现此类复杂算法的理想平台。系统RTL结构展示了各模块间的连接与协同工作。
51 16
|
1月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于FPGA实现16QAM调制解调通信系统,使用Verilog语言编写,包括信道模块、误码率统计模块。通过设置不同SNR值(如8dB、12dB、16dB),仿真测试系统的误码性能。项目提供了完整的RTL结构图及操作视频,便于理解和操作。核心程序实现了信号的生成、调制、信道传输、解调及误码统计等功能。
42 3
|
13天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的256QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了256QAM调制解调算法的仿真效果及理论基础。使用Vivado 2019.2进行仿真,分别在SNR为40dB、32dB和24dB下生成星座图,并导入Matlab进行分析。256QAM通过将8比特数据映射到复平面上的256个点,实现高效的数据传输。Verilog核心程序包括调制、信道噪声添加和解调模块,最终统计误码率。
24 0
|
1月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
### 简介 本项目采用VIVADO 2019.2进行了十六进制相位移键控(16PSK)算法仿真,结果显示,在SNR=30dB时效果为Tttttttttttttt12,在SNR=20dB时效果为Tttttttttttttt34。系统RTL结构如Tttttttttttttt555555所示。16PSK是一种高效的相位调制技术,能在每个符号时间内传输4比特信息,适用于高速数据传输。其工作原理包括将比特流映射到16个相位状态之一(Tttttttttttttt777777),并通过匹配滤波和决策进行解调。具体Verilog核心程序见完整代码。
36 1
|
1月前
|
安全 Linux 网络安全
Kali渗透测试:远程控制程序基础
Kali渗透测试:远程控制程序基础
Kali渗透测试:远程控制程序基础
|
1月前
|
安全 Java Linux
Kali渗透测试:通过Web应用程序实现远程控制
Kali渗透测试:通过Web应用程序实现远程控制
|
2月前
|
监控 算法 安全
基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序
本项目展示了基于FPGA的火焰识别算法,可在多种应用场景中实时检测火焰。通过颜色模型与边缘检测技术,结合HSV和YCbCr颜色空间,高效提取火焰特征。使用Vivado 2019.2和Matlab 2022a实现算法,并提供仿真结果与测试样本。FPGA平台充分发挥并行处理优势,实现低延迟高吞吐量的火焰检测。项目包含完整代码及操作视频说明。

热门文章

最新文章