1. 项目背景与2FSK调制解调基础
在无线通信系统中,频移键控(FSK)是一种简单高效的调制方式。2FSK作为其最基本形式,通过两个不同频率的载波分别表示二进制数据中的0和1。传统实现方案通常采用DSP处理器或专用芯片,但FPGA凭借其并行处理能力和可重构特性,在实时性要求高的场景中展现出独特优势。
采样计数法是一种在数字域实现FSK解调的经典方法。其核心思想是通过统计信号过零点的次数来识别频率差异。当信号频率较高时,单位时间内的过零点数量会明显增加。这种方法避免了复杂的乘法器和滤波器设计,特别适合FPGA的硬件架构特点。
我在实际项目中曾遇到一个典型的2FSK应用场景:工业传感器网络中的低功耗无线传输。传感器节点需要以极低功耗发送温度数据,接收端FPGA需要实时解调这些信号。采样计数法以其硬件资源占用少、功耗低的优势成为首选方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计与参数计算
2.1 整体设计方案
我们的FPGA系统采用Xilinx Artix-7系列芯片,主要包含以下几个关键模块:
- 时钟管理模块(MMCM):生成系统所需的多种时钟
- ADC接口模块:接收来自射频前端的数字化信号
- 2FSK调制模块:用于测试信号生成
- 采样计数解调模块:核心处理单元
- 数据输出模块:将解调结果通过UART发送
系统时钟频率设计为50MHz,ADC采样率为1MHz。这个参数选择基于以下考虑:
- 奈奎斯特准则:目标2FSK信号的最高频率为250kHz(f2),采样率至少需要500kHz
- 过采样需求:4倍过采样可以提供更好的抗噪性能
- 资源平衡:过高采样率会增加FPGA资源消耗
2.2 频率参数设计
假设我们设计的2FSK信号具有:
- f1 = 100kHz(代表二进制0)
- f2 = 250kHz(代表二进制1)
- 符号速率 = 10kbps(每位持续100μs)
根据采样计数法原理,我们需要在每位持续时间内统计信号过零点的次数。理论计算如下:
对于f1=100kHz信号:
- 周期T1 = 1/100kHz = 10μs
- 100μs内完整周期数 = 100μs/10μs = 10个周期
- 每个周期2个过零点 → 理论过零点数 = 20
对于f2=250kHz信号:
- 周期T2 = 1/250kHz = 4μs
