首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >迷人的DDS数字下变频(YUNSWJ 仿真版)

迷人的DDS数字下变频(YUNSWJ 仿真版)

作者头像
云深无际
发布2026-01-07 11:38:46
发布2026-01-07 11:38:46
3790
举报
文章被收录于专栏:云深之无迹云深之无迹

亲爱的看官,昨天后半夜没忍住,写了一个高速 ADC,其实表面参数之外,还有很多值得研究的东西,比如这么大的采样率,后面究竟在处理什么?

且看这个东西,DDC!
且看这个东西,DDC!

且看这个东西,DDC!

学名叫: 数字下变频(Digital Down Conversion, DDC)

这个 ADC 相当于一个很快的采样器,把“全频段”的高频信号直接采下来(几十 GHz 的卫星信号);得到的数据量特别大(每秒数十亿个点),而且里面只有你感兴趣的一小段频率。

数字下变频 就像一个“放大镜 + 剪刀”:

放大镜 → 把你要的那段频率搬到“基带”(0 Hz 附近),方便处理。

剪刀 → 把多余的部分滤掉,只保留有用的那点带宽,并且把采样率降低(抽 decimation),减轻后面 FPGA/CPU 的负担。

一个处理单元
一个处理单元

一个处理单元

数字下变频 DDC = 数控振荡器 (NCO) + 数乘器 + 低通滤波器 + 抽取器 的组合。混频 (Mixing)

用一个 数控振荡器 (NCO) 产生正弦/余弦序列;输入信号 × NCO → 得到 I (同相分量) 和 Q (正交分量),也就是把目标频段搬到基带。

低通滤波 (Filtering):把搬到基带后的目标频段保留下来,其他频率分量滤掉。

抽取 (Decimation)

采样率按整数比(比如 ÷4、÷128、÷2048)降低;这样输出的数据量大大减少,但信息仍然完整。

为什么要用 DDC?

最重要的还是减轻数据压力,例如 ADC 是 12.8 GSps,但你只关心 10 MHz 信号 → 经过 DDC 抽取后输出速率可能只剩几 MSps。其中抽取滤波器相当于集成平均,能压低噪声底,变相的提高信噪比

另外是:多通道监视:一个 ADC 里可以开多个 DDC 通道,同时盯不同频点。(例如 SATCOM 上行链路)

就是这个地面发给卫星的链路
就是这个地面发给卫星的链路

就是这个地面发给卫星的链路

还有就是灵活性:NCO 可以快速改频,实现软件无线电 (SDR) 或跳频通信。

数字下变频就是把高速 ADC 采集的宽带信号,在芯片里直接完成“频移 → 滤波 → 降采样”,让有用的窄带信号以更低速率输出,方便后端处理。

非战斗人员离场!数字下变频(DDC)的数学推导

大多数人来说,以上内容已经够用,但是作为一个信号 er,那这只是一个开胃小菜~

连续到离散

设连续时间输入 采样于频率 (采样间隔 ),得到

假定目标是把围绕某个射频 的窄带信号搬到基带(0 Hz)附近。

复数本振(NCO)与正交解调

数控振荡器(NCO)产生复指数

对实信号 做复数混频(等价于 I/Q 解调):

若 中含有以 为中心的目标分量,则混频后该分量被平移到 (基带邻近),而远离 的分量会被移到高频。

频移原理:若 的频谱为 ,则 的频谱为 ,即整体向负方向平移 。

低通滤波(LPF)

为只保留目标近基带带宽 的分量,对 进行低通滤波

其中 为低通 FIR(或 CIC+FIR 等)脉冲响应。理想采样系统要求:

通带截止 ;

阻带起始 在欲抽取前的镜像与混叠边界内;

阻带衰减满足系统动态范围(SFDR、ENOB)需求。

抽取(降采样)

再以整数因子 抽取(只保留每 个样本中的一个):

抽取后新采样率 。为避免抽取引起频谱混叠,LPF 的通/阻带需满足

其中 为过渡带+设计裕量。

处理增益(Processing Gain):对以白噪声为主的系统,降采样相当于减少噪声带宽,SNR 理想提升约

多相结构(简述)

若使用 FIR 滤波器 直接“滤后抽”计算量较大,可用多相实现:

把 按模 拆成 支路,仅在输出采样点计算,有效减少乘加量。

与 CIC 的关系

CIC 滤波器在硬件中常用于大倍率抽取,其幅频响应(离散域):

为级数、 为抽取比。CIC 通带起伏较大,通常后级再接补偿 FIR。

Python 仿真

目标: 演示

  1. 复数 NCO 混频把 搬到 ,
  2. 低通滤波抑制干扰,
  3. 抽取降低采样率并体现处理增益

主要参数(下面有打印结果):

, 样本数

载频 ;目标偏移

干扰偏移 (混频后落在 18 MHz,LPF 应抑制)

FIR 低通:截止 , taps

抽取

代码语言:javascript
复制
STDOUT/STDERR
=== Measured Tone Frequencies ===
Dominant freq in I (pre-mix) ~ 98.000 MHz, peak -11.6 dBFS
Dominant freq after mixing (real) ~ 98.000 MHz, peak -11.6 dBFS
Dominant freq after LPF (real) ~ 2.000 MHz, peak -11.6 dBFS
Dominant freq after decimation (I) ~ 2.000 MHz, peak -10.7 dBFS

=== Processing Gain (SNR) ===
SNR before LPF/decim (mix only): 0.74 dB
SNR after LPF+decim:              5.95 dB
Theoretical processing gain ~ 10*log10(M=20) = 13.01 dB
image-20250907154330259
image-20250907154330259

image-20250907154330259

image-20250907154340956
image-20250907154340956
image-20250907154349577
image-20250907154349577
image-20250907154401592
image-20250907154401592
image-20250907154410252
image-20250907154410252
image-20250907154418650
image-20250907154418650

混频后基带主频:约 2.000 MHz(与 一致)

抽取后仍为 2.000 MHz

SNR(简化估计):

混频后未滤波:约 0.74 dB

LPF + 抽取后:约 5.95 dB

理论处理增益 (实测 < 理论:受干扰/窗函数/有限阶 FIR/简单估算方式影响,属正常).

但是这个仿真不好,重新画一下,数据太多了:

image-20250907154724846
image-20250907154724846
image-20250907154732943
image-20250907154732943
image-20250907154739589
image-20250907154739589
image-20250907154745798
image-20250907154745798
image-20250907154752877
image-20250907154752877

仿真缩短到 16k 点 并使用更小的 FFT 长度,绘图尺寸也减小了,频谱和时域曲线现在更加清晰易读。

5 张图:

  1. 输入 RF 频谱
  2. 混频后基带(实部)频谱
  3. 低通滤波后频谱
  4. 抽取后的 I 通道频谱
  5. 抽取后 I/Q 时域片段(200 个采样点)
“滤波前后”放在同一张图上
“滤波前后”放在同一张图上

“滤波前后”放在同一张图上

蓝色曲线 → 滤波前(混频后,2 MHz 目标信号 + 18 MHz 干扰同时存在)

橙色曲线 → 滤波后(只保留了目标 2 MHz 信号,干扰已被显著抑制);这样就能直观地看到 DDC 的低通滤波器把目标带宽提取出来的效果。

抽取前后的频谱
抽取前后的频谱

抽取前后的频谱

蓝色:抽取前,采样率 200 MHz,频轴范围宽。

橙色:抽取后,采样率 10 MHz,频轴压缩到低频范围。

可以看到:目标 2 MHz 信号 保留下来,而整体数据量减少了 20 倍,说明 DDC 成功完成了 带宽压缩 + 数据降采样

处理增益(SNR 改善)
处理增益(SNR 改善)

处理增益(SNR 改善)

代码语言:javascript
复制
SNR before: 0.71 dB
SNR after : 6.03 dB
Theory PG  : +13.01 dB (white-noise)

已加入 处理增益(SNR 改善) 的可视化柱状图:

左:仅混频(未滤波/未抽取)

中:低通 + 抽取后(实测)

右:理论值(在白噪声假设下 ,与“前”的 SNR 相加做对比)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要用 DDC?
  • 非战斗人员离场!数字下变频(DDC)的数学推导
  • 连续到离散
  • 复数本振(NCO)与正交解调
  • 低通滤波(LPF)
  • 抽取(降采样)
  • 多相结构(简述)
  • 与 CIC 的关系
    • Python 仿真
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档