news 2026/6/15 12:35:14

位同步--FPGA实现Gardner算法(1)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
位同步--FPGA实现Gardner算法(1)

自己学习,记录一下,AI+知乎+书

无需载波同步的位同步技术- Gardner算法

总概括:

就是通过观察“前后两个符号的中间那个点有没有归零”,来告诉 NCO “走快点”还是“走慢点”,从而让内插器始终抓在信号张开得最大的那个最佳时刻。

1.介绍Gardner算法

是一种定时误差算法,他通过观察,当前与上一次的采样点,来告诉我们采太快了,还是太慢了,同时告诉NCO这个误差,使得采样时刻改变,追求最佳采样点。
一般公式(数学版)如下:
e(k)=[y(k)−y(k−1)]×y(k−1/2)e(k) = [y(k) - y(k-1)] \times y(k-1/2)e(k)=[y(k)y(k1)]×y(k1/2)
逻辑:用前后两点的差(斜率)乘以中间点的值。
如图:

情况1:无误差,最佳采样时刻:y(k - 1/2)为0,e(k)为0。
情况2:采集太快了,y(k - 1/2)在最佳采样点左边,为正数。e(k)为负数,代表你(NCO)需要慢一点了。
情况3:采集太慢了,y(k - 1/2)在最佳采样点右边,为负数,e(k)为正数,代表你(NCO)需要快一点了。

**他的误差是怎么计算的?利用码元跳变(过零点)来检测误差
理想情况:如果一个符号是波峰,下一个是波谷,那么它们正中间的采样点(中间点)应该刚好是 0。
非理想情况:如果中间点不为 0,说明采样时刻偏了。
中间点偏正或偏负,结合前后符号的极性,就能算出偏移方向。


2.数据计算

核心矛盾:时钟不同步

在实际通信中,接收端的采样时钟(周期为TsT_sTs)通常是固定频率的本地晶振,它和发送端的符号时钟(周期为TiT_iTi)往往是不匹配、不同步的。


目的:重新采样(KiK_iKi周期下的)

公式 (8-19) :

y(kTi)=∑mx(mTs)hI(kTi−mTs)y(kT_i) = \sum_{m} x(mT_s)h_I(kT_i - mT_s)y(kTi)=mx(mTs)hI(kTimTs)
(k为整数,TiT_iTi为内插周期,k = T /TiT_iTi)
既然有了虚拟的连续曲线y(t)y(t)y(t),我们就在我们想要的时刻t=kTit = kT_it=kTi(内插时刻)去“摘取”信号值。
公式 (8-20) 是真正的数字实现:

y(t)=∑mx(mTs)hI(t−mTs)y(t) = \sum_{m} x(mT_s)h_I(t - mT_s)y(t)=mx(mTs)hI(tmTs)

  • 物理意义:想象我们把手中的数字点x(mTs)x(mT_s)x(mTs)通过一个理想的“低通滤波器”hI(t)h_I(t)hI(t)(即内插滤波器)。
  • 这就像是在坐标轴上根据现有的点,画出一条平滑的连续曲线y(t)y(t)y(t)。一旦有了这条曲线,理论上你可以在任何时间点ttt取值。
  • 关键点:在全数字接收机里,我们并不真的去还原连续信号。我们直接利用现有的x(mTs)x(mT_s)x(mTs)和滤波器系数hIh_IhI进行卷积运算,直接计算出y(kTi)y(kT_i)y(kTi)

总结:通俗的比喻

想象你在拍电影,但你的摄像机每秒只能拍 24 帧(这是1/Ts1/T_s1/Ts)。

  1. 现有数据:你手里只有这 24 帧画面。
  2. 需求:导演想要一段每秒 60 帧(这是1/Ti1/T_i1/Ti)的慢动作视频。
  3. 内插过程:你使用电脑算法,根据前后的画面,“计算”出原本不存在的两帧之间的画面。

这段话里的y(kTi)y(kT_i)y(kTi)就是那些被计算出来的、“补”上去的精准画面。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/2 20:12:40

深度学习毕设项目:基于卷积网络结构的火灾检测系统实现

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/30 23:30:13

【计算机毕业设计案例】基于MobileNet v2模型的口罩实时检测系统实现

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 15:48:37

内存马原理、实战与查杀

内存马原理、实战与查杀 引言 我们在漏洞挖掘的时候经常看见大牛们发现一个文件上传漏洞时,上传的不是我们熟知的.php文件,而是.jsp文件。这其实利用的不是我们开始学的时候接触的webshell,而是memshell(内存马)。这篇文章将从基础原理开始,依…

作者头像 李华
网站建设 2026/6/15 1:12:42

Spring Boot 3.x和2.x版本相比有哪些区别与改进?

1.Spring Boot 2.x基于Java EE,而Spring Boot 3.x迁移到了Jakartaa EE,一些核心的包名也从javax.*变更为jakarta.*了。 2.Spring Boot 2.x支持JDK8、11和17版本,而Spring Boot 3.x要求JDK版本最低为17。 3.Spring Boot 2.x 没有原生编译的内置…

作者头像 李华