☰
深度解析SC-FDE上采样与采样滤波:从原理到工程实践
2026/10/5 8:28:39 网站建设 项目流程

1. 整体设计与思路拆解

1.1 为什么SC-FDE非谈上采样不可

做SC-FDE(单载波频域均衡)的人,绕不开一个基础问题:符号率和采样率到底什么关系。很多人刚接触时想当然认为符号率和采样率一致就行,发端按符号率发,收端按符号率采,反正均衡在频域做,省掉一堆事。真这么干,系统性能会非常脆弱。

SC-FDE的核心逻辑在“频域均衡”四个字,我们先把接收信号做FFT,在频域做完信道补偿和均衡后,再IFFT回时域恢复符号。问题是频域均衡对定时偏差、信道估计误差和噪声放大极其敏感。如果你在符号率采样,那么任何定时偏移都会直接转化为符号间干扰(ISI),而且这种ISI在频域里表现为相位旋转,均衡器能补偿一部分,但对残余定时误差无能为力。更麻烦的是,符号率采样时成形滤波器(不管是升余弦还是根升余弦)的过渡带会极其陡峭,硬件上几乎做不出可实现的滤波器。

上采样在这里就是那个“解药”。先把基带符号序列通过L倍上采样(L一般是2或4),在更高采样率下做脉冲成形滤波,再送DAC。接收端同样以L倍过采样率工作,前端用匹配滤波和定时恢复算法把最佳采样点找出来,最后在符号率下做频域均衡。这套流程里,上采样不仅是“过采样”这么简单,它给系统保留了时域自由度——定时同步可以在采样点之间做插值、信道估计可以在过采样网格上做、均衡器可以采用分数间隔结构。用一句话说,过采样率就是SC-FDE系统在处理精度上的“安全边际”。

1.2 采样滤波在整个链路里的角色

“采样滤波”四个字看似普通,实际贯穿了SC-FDE的模拟前端和数字基带两端。摸过模拟前端电路的人应该熟悉电流采样电路的输入滤波——ADC前级必须加RC抗混叠滤波器,否则高频噪声会折叠进基带。而在数字基带侧,“采样滤波”指的是发送端的脉冲成形滤波、接收端的匹配滤波,以及数字域的抗混叠与抽取滤波。两套东西原理同源,但一个跑在模拟域,一个跑在数字域,设计逻辑却很一致:都是在“你想保留的信号”和“你不想要的噪声/镜像/混叠”之间划清界限。

很多工程师容易犯的毛病是只设计数字滤波器,忽视了模拟RC滤波器和数字滤波器之间的配合。ADC的采样率定了,模拟RC的截止频率、数字滤波器的通带宽度、插值滤波器的阻带衰减,它们共同决定了整个链路的信噪比和误码率底线。单纯把某一级滤波做得很“完美”没有意义,瓶颈永远在整条链路上最弱的那一环。

1.3 方案选型:上采样倍数与滤波结构怎么定

上采样倍数L的选择,本质上是在性能和复杂度之间找平衡。L=2是最低要求,能让定时恢复有可操作的余地;L=4在实现复杂度和性能增益之间最均衡,是做SC-FDE系统最常见的配置;L=8以上性能收益极其有限,但多相滤波器资源和时钟频率要求都成倍上去了,除非你是在做高精度信道测量,否则不推荐。

滤波结构上,发送端的成形滤波用多相分解实现,资源消耗小,而且每相就是一组短FIR,流水线很容易处理。接收端匹配滤波同样用多相结构,同时利用对称性还能砍掉一半乘法。说到抗混叠,模拟前端RC滤波一定要做,它是ADC之前的最后一道防线;数字域的抽取滤波则把过采样数据降到符号率,为FFT做频域均衡准备。我习惯把这三块当成一套整体来设计——RC滤波的截止频率、数字抽取滤波的过渡带宽度、多相滤波的阻带衰减,三个参数必须放在一起联合仿真,逐个孤立地调参只会反复返工。

总结一下我的整体设计思路:上采样给系统留出时域裕量,采样滤波保证频域干净,两者配合才能让SC-FDE的频域均衡真正发挥出对抗多径信道的能力。接下来的细节,我把每条链路和每个设计参数掰开讲。

2. 核心原理与关键细节解析

2.1 上采样的频谱机理:镜像、插值与过采样增益

上采样在数学上是插值,在频域上的后果是镜像。一个字符号率fs=Rs的基带序列,L倍上采样后采样率变成L×Rs,频谱上除了保留原来的主谱,还会在整数倍Rs位置复制出L-1份镜像谱。这些镜像如果不过滤掉,直接送进DAC或混频器,会在邻信道产生严重的频谱泄漏,违反发射频谱模板不说,接收端也会多收进来一堆干扰。

插值滤波器的作用就是把镜像谱压下去。拿零值插入加低通滤波来理解最简单:每两个原始采样点之间插L-1个零,再用一个截止频率在Rs/2以内的滤波器平滑输出,等效于在频域保留主谱、衰减镜像。需要注意的是,插值滤波器不仅要抑制镜像,还必须保证通带内的幅度平坦和线性相位,否则你插入的不仅是采样点,还会把符号波形畸变带进去。升余弦和根升余弦之所以是SC-FDE的标配成形滤波器,就是因为它们同时满足奈奎斯特无ISI准则和频谱受限需求。

过采样还有一个常被忽略的好处:抗噪声裕量。数字信号处理里,量化噪声功率是均匀分布在奈奎斯特带宽上的,过采样因子L本身就能带来最多10·log10(L)dB的量化噪声抑制,前提是你后面确实做了低通滤波去掉带外噪声。这个增益在接收端ADC动态范围受限时非常宝贵,实际测试里,把接收过采样率从2提到4,同等硬件条件下EVM能改善1到2个dB,这是我实测过的数字,不是理论空话。

2.2 匹配滤波与成形滤波的配对逻辑

SC-FDE的收发滤波设计遵循“根升余弦发送、根升余弦接收、等效升余弦”的经典配对。发端用根升余弦成形,收端也用相同参数的根升余弦做匹配滤波,两者卷在一起正好构成无ISI的升余弦响应,同时收发各自独立满足频谱限制。这里滚降系数α的取值直接影响过采样倍数选择——α越小,过渡带越窄,滤波器阶数要求越高。工程上α=0.2到0.3最常用,配合L=4的过采样率,滤波器设计和定时恢复都处在舒适区。

实际做的时候很多人会忽略匹配滤波的定时对齐问题。匹配滤波器的输出峰值只在最佳采样时刻出现,如果定时恢复没有提前锁定,匹配滤波输出波形会被“切歪”,产生信号能量损失。过采样率的存在让定时恢复可以在采样点之间做分数间隔调整,这也是为什么我坚持匹配滤波要在过采样域做,而不是先降采样再做滤波。顺序错了,定时同步的精度就上不来。

2.3 模拟RC滤波与ADC采样的衔接

再看网络热词里反复出现的“电流采样电路输入滤波”“电流采样RC滤波”。放在SC-FDE系统里,这套东西对应的是ADC前端的抗混叠设计。RC滤波器是模拟域最简单可靠的抗混叠结构,一个电阻一个电容,截止频率设计在目标信号带宽附近,把ADC采样率奈奎斯特频带以外的高频噪声和带外干扰压下去。

RC截止频率不能随便定。定太高,带外噪声压不住;定太低,信号边缘被削,通带内幅度不平坦。我的经验值是:RC截止频率取ADC采样率的20%到30%,或者取信号带宽的1.5到2倍,哪个方向都行,关键是让RC曲线的-3dB点落在信号主瓣边缘之外,这样既能压制带外,又不影响数字域均衡器的补偿能力。还要记住RC滤波是一阶结构,滚降只有-20dB/dec,数字化之前如果你的过采样率不够高,光靠RC是压不干净的,所以数字域的抽取滤波器还必须补一刀。

2.4 数字抽取滤波与抗混叠的本质

接收端把高采样率数据降到符号率时,必须再做一次数字抗混叠。抽取倍率等于过采样率L,抽取前不做低通滤波的话,目标频带之外的噪声和干扰会被折叠回带内,而且这个折叠是不可逆的,后面做什么均衡都救不回来。抗混叠的思路和上采样时压制镜像完全对称:上采样是插值后用低通滤镜像,抽取滤波是低通后再降采样,两者本质上都是“先滤后采/插”的顺序,顺序反了信号就废了。

数字抽取滤波器我用的是FIR等波纹设计,通带截止设置在0.95×Rs/2附近,阻带从1.05×Rs/2开始,阻带衰减做到60dB以上,带内纹波控制在0.1dB以内。这个指标看起来不算苛刻,但要注意滤波器阶数。L=4时配合这种指标,抽取滤波器阶数大约在30到50之间,如果你再叠加匹配滤波,两级级联的总群延迟会比较大,做定时恢复时必须把群延迟补偿进去,否则同步环路会有一个固定偏差。

3. 实操过程与核心环节实现

3.1 MATLAB原型仿真:上采样+匹配滤波+抽取

动手做SC-FDE链路验证,我建议先建一个端到端的MATLAB基带仿真,把上采样和滤波的行为模型拿到手,再去碰FPGA实现。下面这段代码是我常用的原型框架,覆盖了发端上采样成形、AWGN信道、收端匹配滤波和抽取滤波的主要步骤:

% SC-FDE 上采样 + 采样滤波 端到端原型 Rs = 10e6; % 符号率 10 MHz L = 4; % 过采样率 Fs = L * Rs; % 采样率 40 MHz alpha = 0.22; % 滚降因子 nSym = 4096; % 符号数 % 发送端:QPSK符号 -> L倍上采样 -> RRC成形 data = randi([0 3], nSym, 1); modSym = pskmod(data, 4, pi/4); % RRC滤波器(时域),长度按 span*L+1 截断 span = 8; rrcFilter = rcosdesign(alpha, span, L, 'sqrt'); upSym = upsample(modSym, L); txSignal = filter(rrcFilter, 1, upSym); % 信道:简单多径 + 高斯噪声 h = [1 0 0.3*exp(1j*pi/3)]; % 典型双径 rxSignal = filter(h, 1, txSignal); rxSignal = awgn(rxSignal, 20, 'measured'); % 接收端:RRC匹配滤波 -> 抽取 -> 理想定时 matchedSym = filter(fliplr(rrcFilter), 1, rxSignal); % 找到滤波器群延迟足够的起始点,按L倍抽取到符号率 groupDelay = span * L / 2; decSym = matchedSym(groupDelay+1 : L : end); decSym = decSym(1:nSym); % 频域均衡(经典SC-FDE:FFT -> ZF/MMSE -> IFFT) rxBlock = reshape(decSym, [], 1); % 这里省略信道估计和均衡系数计算,实际用已知导频完成 eqSym = rxBlock; % 占位 scatterplot(eqSym);

有几个点必须提醒。散布图看不出来问题并不代表链路干净,建议把发射信号的功率谱也画出来,看镜像谱是否被压到-40dB以下。RRC滤波器截断长度span取8是做仿真和硬件的折中,小于4时带外泄漏会很明显,大于16时资源成本和群延迟都上来了,收益非常有限。filter(fliplr())这种匹配滤波做法在仿真里没问题,但系数顺序在FDA Tool里生成时容易搞反,建议直接导出系数后核对第一拍和最后一拍的对称性。

3.2 滤波器系数设计与关键参数表格

滤波器参数是整个链路能否落地的关键。我把SC-FDE中最常用的一组参数整理成表格,直接对着用就行:

滤波器采样率通带截止阻带起始阶数参考阻带衰减说明
RRC成形(发送)4×Rs0.5×Rs(归一化0.125)过渡带内约32~6440dB以上滚降α决定过渡带宽度,阶数按span×L+1算
RC抗混叠(模拟)ADC采样率0.25~0.3×Fs缓慢滚降1阶20dB/dec仅压制高频折叠,细节靠数字滤波
数字抽取滤波(接收)4×Rs0.95×Rs/21.05×Rs/230~5060dB以上在4×Rs域运行,输出2×Rs或Rs域
匹配滤波(接收)4×Rs同发送RRC同发送RRC同发送RRC40dB以上与发端RRC配对,参数必须一致

表格里的阶数都是按通常工程实践整理的经验值。你在做硬件实现时,阶数可以适当缩小,但阻带衰减不能低于40dB,这是发射频谱模板和接收抗干扰能力的双重底线。滤波器系数量化到16位时,阻带衰减大约会劣化3到6dB,我建议做系数量化时目标留出5dB的余量,别卡着指标设计。

3.3 FPGA实现中的多相结构拆解

MATLAB仿真跑通之后,进入FPGA要做的第一件事是把上采样和匹配滤波改成多相结构。直接在高采样率下跑整段FIR不是不行,但时钟资源和乘法器功耗都会很难看。以L=4为例,一个32阶RRC滤波器,直接形式需要32个乘法器工作在4×Rs时钟频率;改成4相分解后,每一相只有8个系数,工作时钟降到Rs,4相并行处理流动数据,乘法器总数不变,但时钟要求降到原来的四分之一,对时序收敛是质的改善。

多相上采样的实现顺序是:先把符号序列按L路串并分解,每路各配一组子滤波器(多相分量),输出按一定相位次序拼合成L×Rs的流。不要搞错顺序——上采样输入是符号率数据,每相处理的是符号序列的一个相位子序列,输出交错排列才是正确的过采样序列。

接收端匹配滤波同理,但抽取逻辑不同:多相匹配滤波的输出在每一组L个样本中只取一个有效点,其他点可以丢弃,计算量直接降为原来的1/L。工程上我习惯把匹配滤波和定时误差检测(比如Gardner算法)做在一起,匹配滤波的L个相位输出正好提供给定时检测器计算误差信号,不用额外增加缓存。这个细节等于把定时恢复和匹配滤波的资源复用了,省掉不少状态寄存器和布线压力。

3.4 接收链路顺序:抗混叠→匹配滤波→抽取→频域均衡

接收端信号处理顺序是SC-FDE最容易踩坑的地方。我见过不少新手先做抽取,再做匹配滤波,理由是“数据量少了好算”,结果性能惨不忍睹。正确的顺序必须是先匹配滤波,后抽取。原因很简单:匹配滤波要在过采样域完整保留信号波形,才能在最佳采样点输出最高信噪比的符号样本;一旦先抽取到符号率,多径分量的时间分辨率丢失,后面怎么做都补不回那部分能量。

AR完整链路我给出的参考顺序为:ADC采样(4×Rs)→数字抗混叠抽取滤波(降到2×Rs或直接降到Rs)→匹配滤波(如果需要再做一次分数间隔处理)→定时恢复与符号抽取→FFT→频域均衡(MMSE/ZF)→IFFT→判决。需要注意数字抗混叠和匹配滤波这两级不要随意合并,除非你确认滤波器参数可以同时满足两个需求,否则合并只会让设计约束互相打架。

频域均衡的MMSE系数计算里有一个细节和过采样率直接相关:噪声方差估计的分母要按符号率带宽归一化,不要在过采样域直接估噪。否则你的均衡系数会偏差约10·log10(L)dB,等于把过采样增益白白送回去。这个归一化处理我在MPC和Xilinx参考设计里都见过被搞错的案例,大家实现时务必把估计模块的带宽因子写清楚。

4. 常见问题与排查技巧实录

4.1 混叠被压住了但EVM仍然偏高

一个常见场景:上采样和滤波参数都按书上的做了,频谱模板也过了,实测EVM却高出仿真一大截。我的排查顺序是先查模拟RC,再查数字滤波器的群延迟补偿,最后查定时恢复的初始对齐。RC滤波截止频率如果偏高,带外噪声没压住,ADC量化后折算到符号域的信噪比就会下降;如果RC偏低,信号边缘被削,ISI直接起来了。建议用信号源扫一个单音,看RC前后的幅度响应是否平坦;再用示波器抓ADC输入的频域底噪,确认带外没有明显的高频隆起。

群延迟是另一个隐蔽问题。RRC匹配滤波和多相抽取滤波都有固定群延迟,工程上很容易只做长度对齐而漏掉整数倍采样点的偏移补偿。我的做法是在链路建模时加一个延时探针:发一串已知的PN序列,跑完整个接收链路后做互相关,直接用相关峰的位置校准延迟补偿值。这个实测校准比单纯算滤波器群延迟公式可靠得多,因为量化效应、多相切换的流水线延迟都会干扰理论值。

4.2 上采样镜像泄漏压不下去的排查

镜像泄漏主要有三个来源:RRC成形滤波器的阻带衰减不够、DAC的零阶保持幅度滚降(sinc响应)没有补偿、I/Q两路幅度不一致导致镜频抑制变差。RRC滤波器的阻带衰减如果要做到60dB以上,32阶往往不够,需要把span从8加到10或12;DAC的sinc滚降在前3个奈奎斯特区内可以预置一个反sinc数字滤波器来补偿,这个很多人会忘记;I/Q幅相不一致的影响特别容易在镜像频率上暴露,先用单音校准I/Q失衡,再用多音验证。

排查时把频谱仪接到DAC输出,分别看主瓣和L-1个镜像的差。如果主瓣和镜像幅度差不足40dB,并且频谱呈对称分布,优先查I/Q失衡;如果镜像整体抬高但主瓣形状正常,大概率是滤波器阻带衰减不够;如果镜像在远离主瓣的高频位置特别明显,那就是DAC重建端的问题,和数字域无关。

4.3 RC滤波器参数定不准的工程经验

关于“电流采样RC滤波”这类问题,很多工程师真正困惑的是RC值到底怎么选。我提供一个快速的起点:假设ADC采样率是40MHz,信号带宽是5MHz(Rs=10MHz,L=4的情况下带宽在5MHz量级),那么R和C的乘积满足:

f_cutoff = 1 / (2πRC) ≈ 12到15MHz

也就是取RC的-3dB点在信号带宽的2.4到3倍之间。这样既保证信号通带内衰减小于0.5dB,又能把15MHz以上的带外噪声压掉一大截。电阻取值在50欧到500欧之间选,太小了驱动功耗大,太大了ADC输入偏置电流会引入误差;电容则根据f_cutoff反推,常用十几到几十pF。之后用矢量网络分析仪或信号源加示波器校准,微调电容值让截止频率落在设计目标上。RC滤波的精度不需要太高,5%以内的偏差完全可以在数字均衡器里被补偿掉,真正重要的是不要让RC成为带宽的瓶颈。

4.4 常见问题速查表

现象可能原因排查方法解决方案
ADC输出频谱有大量噪声折叠RC截止频率过高或数字抗混叠未生效看ADC频谱底噪RC取值下移,确认抽取前有低通
发射镜像谱高于-40dBcRRC阻带衰减不足频谱仪量主瓣与镜像差增加RRC阶数或span
EVM随定时偏移急剧恶化先抽取后匹配滤波打印链路中各级信噪比调整处理顺序为滤波后抽取
均衡后仍有周期纹波群延迟未补偿用PN序列做互相关在链路中加显式延迟补偿
MMSE均衡增益异常低噪声方差未按符号带宽归一化检查均衡系数幅度对噪声方差乘1/L因子
I/Q镜频抑制差I/Q幅相失衡单音校准加数字I/Q失衡校正模块
高滚降系数时滤波阶数不够α=0.1以下过渡带过窄看滤波器阻带曲线提高滤波器阶数到64以上

4.5 一个典型的调试案例复盘

我最近帮朋友调一个SC-FDE原型,现象是收发同源环回测试BER很正常,但加了真实多径信道以后性能崩得厉害。先怀疑均衡系数,但仿真里同样的信道模型性能没问题;再怀疑定时同步,Gardner环路在过采样域的采样点选择上看着也对。后来用频谱仪抓中频信号,发现带外有一个明显的不对称旁瓣,这才把注意力引到I/Q失衡——实际硬件里的I/Q幅度偏差有0.8dB,相位偏差有3度,折算到频域恰好落在镜像频率上,和信号混在一起直接拉高了均衡后的等效噪声。

解决方法是加了一个简单的数字I/Q失衡校正:先在发端送单音,分别解出I/Q幅度比和相位差,然后在收端用复系数滤波器做逆校正。这个处理只需一个复数乘法器,代价极低,但把镜像抑制从35dB提升到了50dB以上。调试完的体会是:SC-FDE系统里频域均衡对前端非理想因素的容忍度比时域均衡低得多,因为频域均衡会把任何周期性失真都“平等地”补偿或放大,前端一点点不平衡都会在结果里放出来。链路调优的顺序一定是从模拟前端往数字后端走,先让频谱干净,再谈均衡算法。

5. 实际设计中的避坑心得

5.1 过采样率不是越大越好

我在多套系统里验证过,接收端过采样率从2提到4,性能提升非常明显;但从4提到8,EVM改善不超过0.5dB,而ADC功耗、FPGA逻辑量、数据吞吐都上了一个台阶。L=8只在少数需要超高精度的场景里有意义,比如信道探测雷达或高阶QAM背靠背测试。SC-FDE的常规通信系统,老老实实用L=4就对了,资源留出来给均衡器维度和信道估计才是正途。

发送端过采样率同理。L=2的成形滤波也能做,但滤波器的过渡带约束会让阶数飙升;L=4配合α=0.22到0.3是最顺手的组合。选L时还要考虑DAC的时钟方案,过采样率倍数最好能和DAC插值模式对齐,比如DAC内部自带4倍插值时,FPGA输出基带只按符号率给数据,数字侧的上采样就不必全部自己做,硬件资源可以省一些。

5.2 滤波器的定点化要留足余量

定点实现时最容易低估滤波器系数量化对阻带衰减的影响。16位量化对40dB指标的滤波器通常还够用,但对60dB的抽取滤波器就不行了。更隐蔽的问题是乘法器内部位宽——18×18乘法器累加后至少要保留20位以上,否则截断噪声在频域会表现为一个抬高了的噪声基底,最终限制整条链路的底噪。

我建议做定点仿真时,至少对每个滤波器做100次不同量化噪声的蒙特卡洛仿真,观察EVM的统计分布而不是只看单次结果。另外,多相滤波器的各相系数对称性在定点化后可能被破坏,实现时让HLS或HDL生成器保留对称系数合并优化,别手写展开——我吃过手写展开把对称性搞丢的亏,阻带指标直接掉了8dB。

5.3 定时恢复和匹配滤波配合的细节

定时恢复环路的环路带宽选择会影响匹配滤波的性能体现。环带太宽,定时误差抖动会把采样点甩出匹配滤波的主瓣;环带太窄,信道变化时无法及时跟踪。频率偏移较大时,定时恢复前最好先做一次粗频率估计,否则定时环路会被频偏产生的相位旋转干扰。把定时误差检测器放在匹配滤波器的输出侧、抽取之前,这样误差信号反映的才是真正的最佳采样位置。

5.4 给做硬件仿真的朋友补充一句

软件仿真时所有滤波器都是“无限精度”的,但硬件实现里每一级截断都在贡献噪声。SC-FDE里边做FFT边做滤波,不同模块的位宽匹配需要全局规划,不要每个模块单独优化,我建议从ADC输出端开始逐级做噪声预算,把每一级允许的噪声功率写进设计文档,再按预算分配位宽。这话虽然有点老生常谈,但真动手时能少返工很多次。

说实话,SC-FDE的上采样与采样滤波,原理书上两三页就讲完了,真正难的是把这些环节组装进一个真实的链路里,让每一个滤波器都在自己的位置上发挥作用。我这些年做下来的最大感触是:不要迷信任何单独的“完美设计”,系统性能是每一级滤波、每一个采样点选择共同叠加出来的结果。把基础环节的细节抠到位,后面调频域均衡、调信道估计时你会感激当初没有偷懒的自己。

最后再分享一个小技巧:做完上采样和滤波链路之后,一定要留一级数字可变增益,放在ADC后、匹配滤波前。模拟前端的增益裕量不够时,这级数字增益能帮你压住信号峰值,避免FIFO溢出,它不会解决SNR问题,但能防止系统级的偶发误码把性能曲线尾部拖垮。就这一级,我至少三次靠它救回误码率平台,属于低成本高回报的“保险丝”。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询