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基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的1024QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集和vio在线SNR设置模块,支持不同SNR条件下的性能测试。1024QAM调制将10比特映射到复平面上的1024个星座点之一,实现高效数据传输。硬件测试结果表明,在SNR=32dB和40dB时,系统表现出良好的性能。Verilog核心程序展示了各模块的连接与功能实现。
35 7
|
5天前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的4ASK调制解调系统的硬件测试版本,该系统包括testbench、高斯信道模块和误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置功能。通过VIO设置不同SNR(如15dB和25dB),实现了对系统性能的实时监测与调整。4ASK是一种通过改变载波幅度表示数据的数字调制方式,适用于多种通信场景。FPGA平台的高效性和灵活性使其成为构建高性能通信系统的理想选择。
51 17
|
4天前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的16QAM调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前开发的16QAM调制与软解调系统,增加了硬件测试功能。该系统包含FPGA实现的16QAM调制、软解调、高斯信道、误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置模块。通过硬件测试,验证了不同SNR条件下的系统性能。16QAM软解调通过比较接收信号采样值与16个调制点的距离,选择最近的调制点来恢复原始数据。核心Verilog代码实现了整个系统的功能,包括SNR设置、信号处理及误码率统计。硬件测试结果表明系统在不同SNR下表现良好,详细操作步骤可参考配套视频。
37 13
|
8天前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4FSK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前的文章《基于FPGA的4FSK调制解调系统》,增加了ILA在线数据采集模块和VIO在线SNR设置模块,实现了硬件测试版本。通过VIO设置不同SNR(如10dB和20dB),并展示了ILA采集的数据结果。四频移键控(4FSK)是一种数字调制方法,利用四个不同频率传输二进制数据,具有较高的频带利用率和抗干扰性能。输入的二进制数据分为两组,每组两个比特,对应四个频率f1、f2、f3、f4,分别代表二进制组合00、01、10、11。调制过程中选择相应频率输出,并进行幅度调制以增强抗干扰能力。接收端通过带通滤波器提取信号并还原为原始二进制数据。
29 7
|
9天前
|
自然语言处理 安全 测试技术
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
32 0
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
|
12天前
|
数据采集 算法 数据处理
【硬件测试】基于FPGA的256QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的256QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集和vio在线SNR设置模块,支持不同信噪比(如30dB和40dB)的仿真测试,并提供配套操作视频。256QAM调制方案每个符号携带8比特信息,通过复数值星座图映射实现高效传输。Verilog代码展示了核心模块设计,包括SNR设置、数据处理和ILA测试分析,确保系统在实际硬件环境中的稳定性和性能。
17 2
|
12天前
|
编解码 算法 数据安全/隐私保护
基于FPGA的信号DM编解码实现,包含testbench和matlab对比仿真
本项目展示了DM编解码算法的实现与测试结果。FPGA测试结果显示为T1,Matlab仿真结果为T2。使用软件版本为Matlab 2022a和Vivado 2019.2。核心程序包含详细中文注释和操作视频。DM编解码通过比较信号样本差值进行编码,适用于音频等低频信号处理。硬件结构包括编码器(采样器、减法器、比较器)和解码器(解码器、积分器)。
|
16天前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的16QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的16QAM基带通信系统硬件测试版本。该系统在仿真基础上增加了ILA在线数据采集和VIO在线SNR设置模块,支持不同信噪比(如15dB、25dB)的测试。16QAM是一种正交幅度调制方式,通过两路4ASK信号叠加实现,每个符号包含4比特信息。系统采用正交调幅法生成16QAM信号,并通过DAC转换为模拟信号。解调时使用正交相干解调,经低通滤波器恢复电平信号。开发板内完成发射与接收,无需定时同步模块。代码可移植至其他开发板,具体步骤见配套文档。
26 2
|
22天前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的2ASK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍基于FPGA的2ASK调制解调系统,涵盖仿真效果、理论知识、Verilog核心程序及开发板使用说明。系统包含testbench、高斯信道模块和误码率统计模块,支持不同SNR设置。硬件测试版本增加了ILA在线数据采集和VIO在线SNR设置功能。2ASK调制通过改变载波振幅传输二进制信号,FPGA实现包括系统设计、Verilog编码、仿真测试和硬件部署。详细操作步骤见配套视频,代码适用于多种开发板,提供移植方法。
30 1
|
13天前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的64QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的64QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集模块和vio在线SNR设置模块,支持不同SNR条件下的仿真与测试。通过设置SNR为25dB和30dB进行测试,验证了系统的可行性和性能。此外,本文详细阐述了64QAM调制解调的工作原理,包括信号生成、调制、解调及误码率测试等环节,并提供了Verilog核心程序代码。
19 0

热门文章

最新文章