简介:面向通信工程、电子信息等专业学生的数字频带传输系统学习资料,系统讲解数字调制系统的基本框架与核心原理,涵盖2ASK、2FSK等键控方式的信号产生、功率谱分析及带宽计算,可辅助课程复习、考研备战与自学入门。资源为单个PDF文档,大小743KB,内容紧凑,便于打印或移动端阅读。文档从引言到二进制数字调制原理逐步展开,详细推导了2ASK信号连续谱与离散谱的组成,说明了其频带宽度为基带脉冲带宽两倍的原因,并对2FSK键控法与模拟调频法的频谱差异进行了对比分析。全文包含数学公式、波形示意图与调制解调框图,有助于读者理解调制信号频谱结构与抗噪声性能。目前已有91人学习使用,适合需要快速梳理数字调制要点、夯实通信原理基础的学习者参考。
1. 频带传输的起点:为什么基带信号不能直接上信道
实际信道大多是带通型信道,对零频附近的低频分量衰减大,天线辐射效率也低,基带数字脉冲直接上信道既传不远,又无法多路复用。所以必须先做频率搬移,用基带信号去控制正弦载波的某个参量,让信息搭载到适合传输的频段,这就是数字频带传输系统要解决的核心问题。
数字调制与模拟调制的差别在于:模拟调制搬移连续波形,数字调制搬移离散状态。调制参量分别为振幅、频率、相位时,就得到 ASK、FSK、PSK 三种键控信号。下面以教材中“数字调制系统(数字频带传输系统)”一章为线索,把 2ASK、2FSK 的实现原理、功率谱、带宽、误码率分析和工程选型一次讲清,并给出可直接复现的 Python 仿真代码。刷过一遍,既能看懂教材里那些概率密度推导,也能在项目里把调制解调模块直接跑起来。
2. 2ASK 的键控实现、功率谱与带宽
2.1 信号模型与两种实现方式
2ASK(二进制振幅键控)的时域模型很直接:将单极性基带脉冲序列 s(t) 与余弦载波 cos(ωc·t) 相乘,得到 e0(t)=s(t)·cos(ωc·t)。当比特为 1 时输出一段连续载波,比特为 0 时载波幅度为 0,所以也叫 OOK(On-Off Keying)。相乘之后接一个带通滤波器,滤掉基带脉冲上升沿、下降沿造成的高频分量和带外辐射,避免干扰相邻频道。历史上最早使用的载波电报就是这种“通断”方式。
实现方式常见有两种。一是相乘器法,用模拟乘法器完成 s(t) 与载波相乘,电路直观,但载波漏泄和直流偏置不好压;二是键控法,用开关电路在“有载波”和“无载波”之间切换,通断干脆、带外泄漏小,实际工程里见到的 OOK 发射机基本都是键控。教材推导时会把 e0(t) 写成一个随机序列形式:an 为 0/1 等概率随机变量,每个码元持续 Ts 秒。这个随机性很关键,因为功率谱就是从随机序列的统计特性推出来的。
2.2 功率谱结构与带宽公式
要理解 2ASK 的带宽,先看它的功率谱。令 s(t) 为单极性矩形脉冲随机序列,其功率谱由连续谱和离散谱构成:连续谱来自脉冲波形的随机变化,离散谱来自序列中的直流分量。s(t) 与 cos(ωc·t) 相乘,等价于把 s(t) 的频谱整体搬到 ±fc 附近,所以 2ASK 信号功率谱就是 s(t) 功率谱在频域上的左右平移,再乘上 1/4 的功率分配系数。
推导结果比想象中干净。在码元等概率、矩形脉冲占空比 100% 的条件下,s(t) 功率谱里位于非零整数倍码速率处的离散谱,会因矩形脉冲频谱的零点而消失,只留下零频处的离散分量。搬移到载波 fc 处之后,2ASK 功率谱 = 以 fc 为中心的双边带连续谱 + 位于 fc 处的离散载波谱线。连续谱取决于基带脉冲频谱,离散谱由载波分量决定。如果 s(t) 是双极性序列,连离散谱都没有,但这在 OOK 里不成立。
带宽结论是:2ASK 信号的频带宽度是基带脉冲主瓣带宽的 2 倍。若只算频谱主瓣,基带脉冲带宽为 fs=1/Ts,则 2ASK 带宽为:
B_2ASK = 2·fs
这一点和模拟 AM、DSB 完全一致——双边带调制的代价就是带宽翻倍。注意这里没有算滚降,工程上如果基带脉冲经过升余弦成形,主瓣带宽要按滚降系数 α 修正为 (1+α)·fs,2ASK 总带宽再乘 2。
2.3 Python 仿真 2ASK 调制与功率谱
我一般先跑一段 Python 把 2ASK 的调制和功率谱画出来,参数和通信原理课设里常用的一致:码速率 1 kbps,载波 8 kHz,采样率 48 kHz。
import numpy as np from scipy.signal import welch # 系统参数 Rb = 1000 # 码速率 1 kbps fc = 8000 # 载波频率 8 kHz fs = 48000 # 采样率 48 kHz,大于 2*(fc+Rb) 满足奈奎斯特 Ns = int(fs / Rb) # 每个码元的采样点数 = 48 # 随机生成 200 个二进制码元并扩展为矩形脉冲序列 bits = np.random.randint(0, 2, 200) s = np.repeat(bits, Ns) # 单极性基带序列,幅度 0/1 t = np.arange(len(s)) / fs # 时间轴 ask = s * np.cos(2 * np.pi * fc * t) # 与载波相乘完成 2ASK # 用 Welch 法估计功率谱 f, Pxx = welch(ask, fs=fs, nperseg=1024, return_onesided=False)代码里 Rb 是码速率,决定基带脉冲主瓣宽度;fc 是载波频率,决定频谱搬移后的中心位置;fs 是采样率,必须大于信号最高频率的 2 倍,这里信号主瓣在 7~9 kHz,48 kHz 留有充足余量。np.repeat 把每个 bit 扩展成 Ns 个采样点,等效于 100% 占空比的矩形脉冲。乘载波之后,ask 的频谱就是教材里那张“连续谱加离散谱”的图形。welch 的 nperseg 设 1024,频谱分辨率约 46.9 Hz,能清楚看到 fc 处的离散谱线;窗长太小谱线会变粗,太大则谱峰被平滑掉。
| 参数 | 取值 | 说明 |
|---|---|---|
| Rb | 1000 Hz | 码速率,决定主瓣带宽 2 kHz |
| fc | 8 kHz | 载波,主瓣搬到 7~9 kHz |
| fs | 48 kHz | 采样率,满足带通采样要求 |
| Ns | 48 | 每码元采样点数 |
| nperseg | 1024 | Welch 估计 FFT 窗长 |
跑完输出两个值得记的参数:一是主瓣带宽约 2 kHz,等于 2·Rb;二是 fc 处有明显离散谱线,说明信号存在载波泄漏,在频分多址场景里会干扰邻路,所以实际系统调制后通常再加一级带通滤波器压掉旁瓣。
提示:载波频率不能取得太低。若 fc 小于等于 Rb,两个边带在零频附近重叠,离散谱和连续谱混在一起,从频谱图上就很难区分了。
3. 2FSK 的键控法、相位连续性与过零检测
3.1 两种产生方式差异
2FSK 用两个不同的载波频率 f1、f2 分别代表比特 0 和 1。产生方式有模拟调频法和键控法。模拟调频法把基带信号加到压控振荡器(变容二极管 LC 谐振回路)上,频率随信号连续变化,切换瞬间相位连续,但频谱分析很麻烦,因为相位变化和具体码元序列有关。键控法直接用基带脉冲控制开关,在两个独立频率源之间选通,对应“发 0 选 f1、发 1 选 f2”。
教材里重点分析的是键控法,原因很实际:两个频率源互相独立,相位在切换点不连续,可以把 2FSK 看成两个 ASK 信号的叠加——一个以 f1 为载波、由原码驱动,另一个以 f2 为载波、由反码驱动。这样 2FSK 的功率谱就是两个 2ASK 功率谱之和,不需要重新推一遍。我实际仿真时也按这个模型生成:逐码元判断比特,选不同频率的余弦输出,相位从每个码元起点重新开始,得到的就是相位不连续 2FSK。
3.2 功率谱与带宽
按照“两个 ASK 叠加”模型,2FSK 功率谱的连续谱等于两个 ASK 连续谱之和,离散谱同时出现在 f1 和 f2 两个载频位置。频谱形状随频率间隔变化:当 |f2−f1| 相对码速率较大时,两个谱峰分开,呈现双峰;当 |f2−f1| 小于约 0.9·fs 时,两个峰合并成单峰。判断依据是教材给出的经验界限:|f2−f1| > 0.9·fs 时双峰,|f2−f1| < 0.9·fs 时单峰。双峰意味着两个频率分量基本可分,解调容易;单峰接近连续谱,抗噪性能受限于频率间隔。
带宽公式比 ASK 复杂一点。键控法 2FSK 的主瓣带宽为:
B_2FSK = |f2 − f1| + 2·fs
也就是说,频率间隔本身占一份带宽,两个 ASK 边带各占 fs。这意味着 2FSK 的频带利用率天然比 ASK、PSK 差。多路传输时通常给每路 FSK 分配独立频段,路与路之间留保护带。教材里的例子是两路 FSK 交错:一路以 3.4 kHz 为中心、占用带宽约 6.6 kHz,另一路载频取 9 kHz 和 10 kHz,相邻路之间留 2.4 kHz 保护带,总占用约 12.4 kHz。核心思想就是“频率间隔加保护带”换互不干扰,这个布局在早期低速数传设备里很常见。
3.3 过零检测与 Python 仿真
2FSK 的解调手段比 ASK 多:相干解调、鉴频器法、过零检测、差分检测。其中过零检测实现成本最低,原理是单位时间内信号过零次数正比于频率——f1 和 f2 的过零速率不同,统计一个码元内的过零次数就能判出 0/1。下面这段仿真生成 300 个码元的 2FSK,再用过零检测恢复数据:
import numpy as np Rb = 1000 # 码元速率 1 kbps f1, f2 = 6000, 9000 # 比特 0 的载频 6 kHz,比特 1 的载频 9 kHz fs = 60000 # 采样率 60 kHz,覆盖 f2 的奈奎斯特频率 Ns = int(fs / Rb) bits = np.random.randint(0, 2, 300) fsk = np.zeros(len(bits) * Ns) for i, b in enumerate(bits): # 每个码元独立相位,模拟相位不连续的键控法 t_n = np.arange(Ns) / fs f_cur = f1 if b == 0 else f2 fsk[i*Ns:(i+1)*Ns] = np.cos(2 * np.pi * f_cur * t_n) # 过零检测:统计每个码元内的正负极性变化次数 n_cross = [] for i in range(len(bits)): seg = fsk[i*Ns:(i+1)*Ns] cross = int(np.sum(np.diff(np.sign(seg)) != 0)) n_cross.append(cross) # 判决门限取 f1、f2 对应过零数的中点 th = Ns * (f1 + f2) / fs # 每个码元理论平均过零数 est = (np.array(n_cross) >= th).astype(int) ber = np.mean(est != bits)参数说明:Rb 决定码元长度,f1、f2 是两路载频,频率间隔 3 kHz,大于 0.9·Rb=0.9 kHz,所以频谱是双峰,过零检测能可靠区分。fs 取 60 kHz 一方面满足采样定理,另一方面让每个码元内有足够采样点,过零数统计误差小。th 用两个频率过零数的算术平均作为判决门限:f1=6 kHz 时一个码元约过零 120 次,f2=9 kHz 约过零 180 次,门限取中点 150 次。这样一个码元内即使有几次数错,也不容易判错。
提示:过零检测不抗强噪声,噪声带来的假过零会把判决带偏。信噪比低于 10 dB 时建议改用相干解调或鉴频器,至少先经过带通滤波把带外噪声压掉。
4. 2ASK 抗噪性能与最佳门限的工程权衡
4.1 两种解调结构
2ASK 接收端有两种经典结构。包络检波(非相干)是:带通滤波器 → 包络检波 → 低通 → 抽样判决,不依赖载波相位。相干检测是:带通 → 与本地 cos(ωc·t) 相乘 → 低通 → 抽样判决,需要一个与发送端同频同相的相干载波。两者的抗噪性能推导起点都是窄带高斯噪声:带通滤波器输出的是中心频率 fc 的窄带过程,可以分解为同相分量 nc(t) 和正交分量 ns(t)。
发比特 1 时,接收信号是正弦波加窄带高斯;发比特 0 时,只剩窄带高斯。包络检波器的输出是两者的包络 V(t)=sqrt(nc²+ns²)(发 0)或 sqrt((a+nc)²+ns²)(发 1)。根据随机过程理论,前者服从瑞利分布,后者服从莱斯分布。这两条概率密度曲线画在一起,就是教材里那张“两个峰加一条门限线”的图:两条曲线的交点,对应总误码率最小的最佳门限。
4.2 误码率公式与最佳门限
误码率推导的关键是选门限 b。门限定高,发 0 被判 1 的概率小,但发 1 被判 0 的概率大;门限定低则相反。总误码率等于两个错误概率按先验概率加权,当 P(0)=P(1)=1/2 时,最佳门限正好落在两条概率密度曲线的交点处。大信噪比条件下的结论很简洁:最佳门限 b*=a/2,即信号幅度的一半。
在这个门限下,2ASK 包络检波误码率(大信噪比近似)为:
P_e ≈ (1/2)·e^(−r/4)
相干检测在相乘之后,正交噪声分量的 sin 项被抵消,低通输出是同相噪声加信号,瞬时值服从高斯分布:发 1 时均值 a,发 0 时均值 0。总误码率为:
P_e = (1/2)·erfc(√r / 2)
大信噪比下近似为 P_e ≈ e^(−r/4) / √(π·r)。其中 r 是解调器输入信噪比,按平均信号功率与噪声功率之比定义。对比两个式子:同一个 r 下,相干检测比包络检波好一个常数因子,但两者在同一数量级。r=12 dB 时包络检波约 1e-2 量级,相干检测约 3e-3 量级;r=16 dB 时,包络约 2e-5,相干约 4e-6,差距拉开到 5 倍左右。
4.3 蒙特卡洛仿真对比
理论归理论,落到工程前我习惯先跑一组蒙特卡洛仿真,把噪声模型和判决门限一起验证。下面的代码分别实现相干检测和包络检波的误码率统计,信噪比 r 定义为 a²/(2σ²),a=1,σ² 是噪声方差。
import numpy as np def ber_ask_correlated(snr_db, N=200000): r = 10**(snr_db/10) a = 1.0 noise_var = a**2 / (2*r) # 由 r=a^2/(2*sigma^2) 反推噪声方差 bits = np.random.randint(0, 2, N) x = a * bits # 基带等效:发 1 幅度 a,发 0 幅度 0 n = np.random.normal(0, np.sqrt(noise_var), N) y = x + n est = (y > a/2).astype(int) # 最佳门限 a/2 return np.mean(est != bits) def ber_ask_envelope(snr_db, N=200000): r = 10**(snr_db/10) a = 1.0 noise_var = a**2 / (2*r) bits = np.random.randint(0, 2, N) nc = np.random.normal(0, np.sqrt(noise_var), N) ns = np.random.normal(0, np.sqrt(noise_var), N) env = np.sqrt((a*bits + nc)**2 + ns**2) # 包络检波输出 est = (env > a/2).astype(int) return np.mean(est != bits) for snr in [8, 10, 12, 14, 16]: print(snr, round(ber_ask_correlated(snr), 6), round(ber_ask_envelope(snr), 6))逻辑说明:相干检测里正交噪声分量被乘法器抵消,所以只用同相高斯噪声;包络检波必须同时生成 nc、ns 两个正交分量再取模。判决门限都取 a/2。运行结果在低信噪比时和理论公式吻合较好,高信噪比时误差主要来自有限仿真次数——误码率低于 1e-4 后,20 万次仿真本身有约 1e-3 的相对波动,想统计更准就把 N 提到 100 万以上,或者改用半解析方法。
| 信噪比 r (dB) | 相干检测 BER | 包络检波 BER | 说明 |
|---|---|---|---|
| 8 | 约 5e-2 | 约 1e-1 | 低信噪比下两者都不可用 |
| 12 | 约 3e-3 | 约 9e-3 | 相干优势约 3 倍 |
| 16 | 约 4e-6 | 约 2e-5 | 高信噪比差距更大 |
这些数值是没有带通滤波器损耗、没有定时偏差的基带等效结果,实际系统误差只会更高,工程上至少留 2~3 dB 余量。
4.4 工程上选包络还是相干
工程选择不只看误码率。相干检测虽然性能略好,但要在接收端恢复同频同相相干载波,意味着要加锁相环或插入导频,设备复杂度和成本都会明显上升。包络检波不需要相干载波,结构简单,适合资源受限的终端和突发通信。教材给出的结论也是:当信道存在严重衰落时,通常选择非相干接收,因为衰落会破坏载波相位跟踪;AWGN 信道下相干检测的优势又不够大,所以很多早期数传设备直接用包络检波。
这里有一个常被忽略的坑:2ASK 的最佳门限是 a/2,而 a 随接收信号幅度变化。信道一旦有衰落,a 在波动,门限如果固定,误码率会急剧恶化。所以 2ASK 必须配自动增益控制或自适应门限,这也是它抗振幅衰落性能差的根本原因。相比之下,2FSK、2PSK 的判决门限是固定的零电平,天然不怕幅度波动,这个特性在后面的选型里会起决定作用。
5. 2PSK/2DPSK 与键控体制的选型边界
5.1 从绝对移相到差分移相
2PSK 用载波相位 0 和 π 表示二进制 0 和 1,信号幅度恒定,抗噪性能在三种体制里最好。但它有个工程痛点:相干解调时本地载波可能固定倒相 π,导致解调输出完全反相,出现“0101”变成“1010”的相位模糊。解决办法是改用 2DPSK:不用绝对相位表示比特,而用相邻码元相位是否变化表示比特,解调时做差分比较。即使本地载波固定倒相,相邻码元的相位差保持不变,判决结果不受影响。这是数字频带传输系统里用“编码”换“可靠性”的典型做法,代价是噪声环境下差分检测会引入差错扩散,误码率比绝对 PSK 略高。
5.2 三类键控的性能与资源比较
把三种体制放到同一张表里,选型逻辑立刻清楚:
| 比较项 | 2ASK | 2FSK | 2PSK/2DPSK |
|---|---|---|---|
| 主瓣带宽 | 2·fs | f2−f1 | |
| 抗噪性能 | 最差 | 居中 | 最优 |
| 判决门限 | a/2,随幅度漂移 | 0,固定 | 0,固定 |
| 相干与非相干差距 | 约 3~5 倍 | 较小 | 差分检测损失约 1~2 dB |
| 典型场景 | 光强度调制、早期载波电报 | 低速数传、衰落信道 | 卫星、数字微波、载波同步好的链路 |
频谱利用率方面,2ASK 和 2PSK 的主瓣带宽都约 2·fs,但 2ASK 有一半时间载波是断的,峰值功率利用率低;2FSK 因为多了频率间隔这一项,带宽最宽,频带利用率最差。频带资源紧张的系统几乎不会选 FSK。
5.3 选型技巧:按信道特性反推体制
落到具体项目,我一般按三个问题反推:第一,信道是 AWGN 主导还是衰落主导?衰落主导就选非相干 FSK 或 DPSK,避免载波跟踪失效;第二,带宽是否受限?卫星链路、数字微波这类带宽受限场景用 PSK,配合升余弦滤波把带外压干净;第三,相位参考稳不稳?没有导频、没有锁相条件时别用绝对 PSK,用 2DPSK 差分检测更稳。
还有一个容易被忽略的细节:用 FSK 做多路低速数据汇聚时,频点排列要像排频谱规划表一样,先按 B=|f2−f1|+2·fs 算出每路实际占用,再在相邻路之间留 10%~20% 的保护带,避免邻路频谱拖尾互踩。教材里那个 3.4 kHz、9 kHz、10 kHz 交错的例子,本质就是在做这个布局——调制体制选完,真正的功夫在频点规划上。
本文还有配套的精品资源,点击获取