通信系统多速率信号处理经典算法仿真
项目介绍
本项目提供了一套基于MATLAB的通信系统多速率信号处理(Multi-rate Signal Processing)核心算法仿真源码。项目围绕数字通信中常见的采样率转换需求,详细展示了从基础的抽取(Decimation)与内插(Interpolation)到高级的数字下变频(DDC)完整链路的设计与实现。
代码不仅仅调用内置函数,更重点在于展示算法的底层实现逻辑,例如多相分解(Polyphase Decomposition)的滤波器组结构、半带滤波器(Half-band Filter)的设计特性以及级联积分梳状(CIC)滤波器的应用。通过全链路的仿真,直观展示了不同滤波器在频谱抗混叠、镜像抑制以及计算复杂度优化方面的作用。
功能特性
- QPSK中频信号源生成:模拟完整的发射端流程,包含随机比特生成、QPSK映射、根升余弦(RRC)脉冲成型以及数字上变频(DUC)至中频。
- 基础采样率转换:演示标准的先滤波后抽取、先插值后滤波的整数倍转换流程。
- 多相分解高效实现:手动实现了多相抽取器,通过重组滤波器系数和输入数据流,演示了如何在低采样率端进行滤波处理以降低计算量。
- 专用滤波器设计与分析:
*
半带滤波器:展示其时域系数偶对称且近一半为零的特性,验证其高效性。
*
CIC滤波器:仿真并分析CIC滤波器的幅频响应及其零点位置(混叠中心)。
- 多级数字下变频(DDC)链路:构建了“混频 -> CIC抽取 -> 半带抽取 -> FIR整形”的经典接收机架构,实现了从高采样的中频信号到低采样基带信号的完整解调过程。
- 可视化分析:不仅包含频谱分析(对数谱),还集成了星座图和简易眼图绘制,用于评估信号质量。
系统要求
- MATLAB R2016a 或更高版本
- Signal Processing Toolbox(信号处理工具箱)
- Communications Toolbox(通信工具箱,用于
rcosdesign, upfirdn等函数)
使用方法
直接运行主脚本即可启动仿真。程序将依次执行以下步骤并在控制台输出进度与误差分析结果,同时生成多张图表窗口展示时域波形与频谱特性。
代码实现逻辑详解
本项目的主程序通过通过以下七个主要部分构建了完整的仿真流程:
1. 全局参数初始化
定义了系统的基础时钟与信号参数:
- 高采样率 (Fs_high):20 MHz,模拟ADC采样速率。
- 载波频率 (Fc):5 MHz,中频频率。
- 符号速率:100 kHz,基带信号带宽依据。
2. 信号源生成
构建了一个标准的数字中频测试信号:
- 生成随机二进制数据并映射为QPSK复数符号。
- 使用根升余弦滤波器 (RRC) 进行脉冲成型(滚降系数0.35),通过
upfirdn实现过采样。 - 构建本地振荡器(Local Oscillator),将基带信号混频至5 MHz中频。
- 取实部模拟DAC输出的真实中频信号,并绘制时域波形与频谱。
3. 基础抽取与内插算法演示
* 设计截止频率为 $1/4$ 的低通滤波器(Fir1)用于抗混叠。
* 执行滤波操作,随后每隔4个点取一个样值(Downsampling)。
* 对比原始频谱与抽取后频谱,验证无混叠效果。
* 在原信号样本间插入3个零值(Upsampling)。
* 通过低通滤波器滤除高频镜像,且
自动补偿增益(增益系数设为 $I$)以保持能量守恒。
4. 多相分解技术 (Polyphase Decomposition)
这是代码展示高效实现的核心部分:
- 调用自定义函数将原型低通滤波器的系数重组为 $D$ 组子滤波器(Polyphase components)。
- 利用交换器模型 (Commutator Model) 实现多相抽取逻辑:
* 将输入信号整形矩阵化。
* 各个分支利用对应的子滤波器进行并行处理。
* 累加各分支输出得到最终结果。
- 一致性验证:计算多相结构输出与直接抽取输出之间的误差范数,证明两种方法数学上的等价性。
5. 专用滤波器演示
- 半带滤波器 (Half-band):设计了一个系数约为40阶的半带滤波器,通过绘制冲激响应(Stem图),直观展示其只有奇数位系数非零(除中心点外),验证其运算量减半的特性。
- CIC滤波器:配置参数 $R=8, M=1, N=4$,计算并绘制其频率响应,标记第一零点位置,展示其在倍数频率处的强衰减特性(用于抑制混叠)。
6. 多级DDC系统设计
构建了一个总抽取倍数为 40 的数字下变频链路,旨在解决单级滤波器阶数过高的问题:
- 第一级 (Mixer):使用复数NCO($e^{-j2pi f_c t}$)将实中频信号下变频至零中频(I/Q两路)。
- 第二级 (CIC抽取):抽取因子 $R=10$。模拟CIC级联积分处理,并进行增益归一化,将采样率降至 2 MHz。
- 第三级 (HB抽取):抽取因子 $R=2$。使用半带滤波器高效滤除高频分量并将采样率降至 1 MHz。
- 第四级 (FIR抽取):抽取因子 $R=2$。使用针对信号带宽设计的低通FIR滤波器进行最终的波形整形与匹配滤波,输出 500 kHz 采样率的基带信号。
7. 结果分析与评估
- 频谱监测:在DDC的每一级输出端绘制频谱,清晰展示了信号带宽随采样率降低而逐渐“放大”的过程,以及各级滤波器对带外噪声的抑制效果。
- 信号质量:
*
星座图:提取最终稳定的I/Q数据绘制星座图,呈现QPSK四个聚类点。
*
眼图:对时域信号按符号周期切片堆叠,展示眼图张开程度,评估码间干扰(ISI)。
- 复杂度估算:代码最后打印了多级方案中各级滤波器的阶数,对比单级实现所需的高阶数,量化了多级设计的优势。
关键算法函数说明
代码中包含了几个核心的辅助处理逻辑:
通用频谱绘图函数,执行FFT变换,转换为单边谱,进行对数化(dB)处理并归一化到0dB,方便对比不同采样率下的频谱形状。
- 多相滤波器重组 (reshape_polyphase_filter):
该逻辑负责将长滤波器系数向量 $h(n)$ 按照抽取因子 $D$ 进行对角重排,生成 $D$ 个行向量,分别对应 $E_0(z)$ 到 $E_{D-1}(z)$ 的多相分量。
- 多相抽取器 (polyphase_decimator):
仿真了硬件中的换向开关和并行滤波结构。它利用MATLAB的矩阵操作模拟延迟链和下采样过程,特别是实现了Type 1多相分解结构中的反向换向逻辑。
- 半带滤波器设计 (design_halfband):
基于窗函数法生成滤波器系数,特意构造了偶数索引位置为0的特性,用于展示高效滤波器的结构特点。