简介:面向FPGA开发者和通信方向学习者的FSK解调完整工程,基于Verilog硬件描述语言在Altera FPGA上实现频移键控信号的解调,覆盖无线通信接收端频率检测、位判决、同步与时钟恢复等核心环节,适合用于通信原理课程设计、毕业设计或工程预研。压缩包共803个文件,体积约12.3MB,文件类型以Verilog/VHDL源码为主,同时包含Quartus工程配置、Tcl脚本、仿真波形与测试数据,可在Quartus环境中直接打开工程进行编译、仿真与板级验证。已有207人学习浏览。设计内含状态机控制整体解调流程,从信号预处理、PLL鉴频到阈值比较、数据输出均有完整实现,并针对相位漂移和时钟恢复问题给出可参照方案;附带的仿真测试平台可帮助理解FSK调制解调原理及FPGA实现方法,为物联网、无线数据通信等场景提供可复用的解调参考设计。 做数传电台或者测控链路的朋友应该都有体会,FSK虽然调制方式上看起来不起眼,但工程实现中牵扯到的细节一点也不比高阶调制少。我去年在做一个低速数传接收机时,需要在FPGA里实现FSK解调,一开始觉得“不就是判断两个频率嘛”,结果连着踩了参数设计和位宽截断的好几个坑,才把误码率压下去。这篇文章把我当时的完整思路整理出来,从方案选型、参数计算、Verilog实现骨架到验证方法,适合正准备在FPGA上做FSK解调的工程师,也适合想找一个练手项目的FPGA入门朋友。我会把每个设计决策背后的理由也讲清楚,因为很多坑就是不知道“为什么”才踩上去的。
1. 先想清楚:FSK信号进FPGA之后要变成什么样
1.1 FSK的数学结构和关键指标
2FSK信号本质上就是两路不同频率的载波按基带数据切换,数学上可以写成:
s(t) = A·cos(2π(f_c ± Δf)t + φ)
发数字“1”时频率是f_c + Δf,发“0”时频率是f_c - Δf。工程上最关心的三个参数是中心频率f_c、频偏Δf和码元速率R_b。由它们派生出的调制指数h = 2Δf / R_b非常关键,它决定了两个符号频率之间的分离程度,也直接决定了解调难度和占用带宽。h小于1的FSK频谱会交叠得很厉害,解调时基本必须靠相干处理;h大于1时两个符号频率分离清楚,非相干解调就能获得不错的性能。
我这次用的指标是:中频10.7MHz,频偏100kHz,码速率100kbps,算下来调制指数h = 2×100k / 100k = 2,属于分离度非常好的大调制指数FSK。两个符号频率分别是10.6MHz和10.8MHz,间隔200kHz。信号进FPGA之后,解调器要回答的问题就一个:当前这个码元周期内,输入信号到底靠近10.6MHz还是10.8MHz。
1.2 三种常见解调方案对比
FPGA里做FSK解调,常见思路有三类,我在这三类之间认真对比过。
过零检测是最朴素的做法,统计单位时间内信号跨过零点的次数来推算频率。实现确实最简单,几个计数器就能跑起来,但抗噪声性能很差。信噪比稍微低一点,噪声会让信号在真实过零点附近反复抖动,计数结果剧烈波动,误码
本文还有配套的精品资源,点击获取