ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

单极性不归零码功率谱密度推导:冲激与sinc的物理来源

单极性不归零码功率谱密度推导:冲激与sinc的物理来源 搞通信的人十个里有九个被“功率谱密度”劝退过。我刚学通信原理那会儿最怕的就是随机信号那一章尤其是单极性不归零码NRZ的功率谱密度推导。公式本身短得很也就一行P(f) (A²T/4)sinc²(fT) (A²/4)δ(f)。但里面为什么有一根冲激为什么系数不是A²T而是A²T/4为什么sinc函数恰好把整数倍码速率的谱全部清零每个“为什么”都能卡住人半天。这篇就把这笔账从头到尾算一遍从自相关函数推导到频谱截断验证顺便把工程里那些“公式会背但不会用”的坑一起填掉。不管你是期末突击、考研刷题还是刚入职做数字基带仿真的新人按这个思路走一遍后面再碰到别的码型你都能自己推。1. 为什么要啃单极性不归零码的功率谱密度1.1 通信原理最劝退的一页到底难在哪通信原理的“入坑之路”上几乎人人都在这一页翻过车。樊昌信教材第七版里数字基带传输一章讲到数字基带信号的功率谱密度时教材通常直接给出结论单极性不归零码的功率谱等于一个sinc²形状的连续谱加上一个位于零频的冲激。很多同学看到这个式子第一反应是“背下来”第二反应是“这怎么来的”然后就没有然后了。问题出在思维方式上。确定性信号的频谱比如一个方波的傅里叶变换拉一个积分就出来了思路很直。但真实数字信号不是确定信号每个码元是0还是A是随机的你根本无法写出一个确定性的时间函数s(t)去做傅里叶变换。就算你把某一段具体波形拉出来做FFT那也只是无数种可能中的一个样本不代表整个信源的平均特性。于是必须换一套工具从“单个波形的频谱”切换到“随机过程的功率谱密度”这中间需要统计平均、自相关函数、维纳-辛钦定理任何一个环节没跟上后面全崩。单极性不归零码是所有这些概念的最小载体。它结构够简单但又能把连续谱、离散谱、直流分量、带宽这些核心问题全部暴露出来。把它的功率谱密度推导吃透等于把随机信号分析的整套方法论过了一遍后面再看双极性、归零码、AMI码、HDB3码都是在这个框架里换参数而已。1.2 单极性NRZ长什么样用在哪先把符号约定好。“单极性”指的是信号电平只取0和正电平A两种比如用0V表示二进制0用3.3V表示二进制1“不归零”指的是在一个码元宽度T内电平保持恒定不会像归零码那样只占半个码元就掉回零。于是单极性NRZ的波形就是一条在0和A之间跳变的方波序列。它的应用非常广泛。板级串行信号、UART、SPI、低速LED光通信、早期的RS232接口很多都是这种电平形态。只要是“高电平算1、低电平算0”的基带信号本质都是单极性NRZ。对这个信号做功率谱分析就能回答一系列实际问题这个信号能不能直接过变压器它的主瓣占多宽带宽接收端能不能直接从这个信号里提取时钟这些问题全都藏在那个看似简单的功率谱公式里。2. 推导前先把这三件事想明白2.1 随机序列的数学模型用随机变量替代固定波形研究任何数字基带信号第一步都是建立统一的数学模型。对单极性NRZ可以写成s(t) Σ aₙ · g(t - nT)其中aₙ是第n个码元的电平取值独立同分布以1/2概率取0以1/2概率取A。g(t)是高度为A、宽度为T的矩形脉冲也就是单个码元的波形。整个信号就是把无数个这样的矩形脉冲按码元间隔T依次排开脉冲高度由随机变量aₙ决定。这里最核心的转变是aₙ不是固定序列而是随机变量。所以s(t)是一个随机过程而不是一个确定函数。这也是后续所有推导的起点。一旦你把aₙ当成确定序列去算频谱比如直接做FFT得到的只是某一个样本的频谱它会随着随机序列不同而剧烈变化根本不能代表这一类信号的平均频谱特性。2.2 维纳-辛钦定理为什么它是计算功率谱的首选随机过程的能量通常是无穷大的因为信号持续无限长幅度又不衰减直接做傅里叶变换在数学上不收敛。所以功率谱密度不能像能量谱那样直接对信号本身做变换必须先截断、算能量、求平均、再取极限整个流程可以写成P(f) lim_{T₀→∞} E{ |S_N(f)|² / (NT) }这个流程物理意义很清晰取一段足够长的波形算它的频谱幅度平方也就是能量谱除以观察时长变成平均功率再对无穷多种随机序列取数学期望最后让观察时长趋于无穷得到的就是功率谱密度。维纳-辛钦定理把这个流程大大简化了平稳随机过程的功率谱密度等于其自相关函数的傅里叶变换。也就是说你不需要每次都用“先截断再求期望”那么痛苦的方式只要先算出R(τ) E[s(t)s(tτ)]然后对它做傅里叶变换就够了。对于手算推导这条路最省力也是教材里最常用的说法。不过要提醒一句严格讲刚才那个固定时间零点定义的s(t)并不是数学意义上严格的广义平稳过程因为自相关函数可能和具体时刻t有关。实际处理时通常默认引入一个均匀随机的码元起点或者干脆用“统计平均等于时间平均”来近似工程上没人较真这个考试和推导更是默认成立。记住这一点推公式时能少掉很多不必要的纠结。2.3 功率谱密度里的随机性到底由谁贡献功率谱密度既然是“密度”它描述的是单位频带内的平均功率。对单极性NRZ来说平均功率可以分成两笔账。一笔是电平随机跳变产生的连续谱另一笔是信号平均值产生的离散谱线。打个比方一堆灯泡有的亮有的灭站在远处看平均亮度是A/2。功率谱里的连续谱相当于灯泡随机亮灭造成的“闪烁噪声”分布在各个频率离散谱则相当于恒定平均亮度对应的“直流量”集中在零频。这两笔账加在一起才等于信号的总平均功率A²/2。这个直觉如果建立起来后面看到公式里每一项的系数就不会再懵了。3. 第一遍推导从自相关函数到功率谱密度3.1 自相关函数怎么拆E[aₘaₙ]是唯一的钥匙开始动手算。设g(t)是幅度1、宽度T的矩形脉冲先算归一化电平0/1的情况最后再乘A²。信号的自相关函数为R_s(τ) E[s(t)s(tτ)]把s(t)的求和式代入数学期望作用在乘积上可以把求和符号提出来R_s(τ) Σₘ Σₙ E[aₘaₙ] · g(t-mT) · g(tτ-nT)这里的关键是E[aₘaₙ]到底等于多少。因为aₙ独立且等概率取0或1分两种情况当mn时E[aₙ²] 1/2当m≠n时E[aₘaₙ] E[aₘ]E[aₙ] 1/2 × 1/2 1/4注意E[aₘaₙ]只和索引差kn-m有关这是信号能平稳化的条件。利用这个关系自相关函数整理成两部分第一项对应mn时的“方差贡献”第二项对应m≠n时的“均值贡献”。结合矩形脉冲的自相关函数R_g(τ) ∫ g(t)g(tτ)dt在|τ|≤T时等于T(1-|τ|/T)其他情况为0最终可以得到R_s(τ) (1/(4T))R_g(τ) (1/(4T)) Σₖ R_g(τ-kT)第一项是一个三角波形状代表随机起伏第二项是无数个三角波的周期延拓代表直流成分造成的周期性。这个式子就是后续傅里叶变换的原料。3.2 对自相关函数做傅里叶变换连续谱与离散谱分家现在对R_s(τ)做傅里叶变换得到功率谱密度。第一个三角波的傅里叶变换是|G(f)|²也就是矩形脉冲的频谱模平方。矩形脉冲的频谱是sinc函数|G(f)|² T² · sinc²(fT)所以第一部分贡献是(T/4)sinc²(fT)。第二部分的周期延拓求和有一个非常经典的傅里叶变换公式周期为T的冲激串的傅里叶变换还是周期冲激串。具体写法是F{ Σₖ R_g(τ-kT) } |G(f)|² · (1/T) Σₘ δ(f - m/T)把两部分加在一起得到P(f) (1/(4T))|G(f)|² (1/(4T²))|G(f)|² Σₘ δ(f - m/T)注意第二项里sinc函数在δ函数的采样点上起作用。因为δ(f-m/T)只在了离散频点上有值所以|G(m/T)|² T²sinc²(m)当m≠0时sinc(m)0只有m0这一项存活。于是第二项化简为(1/4)δ(f)。最终把幅度从归一化电平换成A整个信号乘以A功率谱乘A²得到P(f) (A²T/4) · sinc²(fT) (A²/4) · δ(f)这就是单极性不归零码功率谱密度的标准结果。3.3 结果解读那根“直流杆”到底从哪来画出这个功率谱密度第一眼看到的是两样东西一个从零频开始的连续谱包络形状是sinc²主瓣零点在f1/T处也就是码元速率Rb的位置另一个是f0处的一根竖直向上冲激代表直流功率集中在一个频率点上。连续谱的物理来源是电平的随机跳变。码元在0和A之间切换等价于在恒定平均值上叠加了一个随机起伏序列这个起伏序列的功率分布就是sinc²形状。离散谱的物理来源是信号的非零均值。因为单极性NRZ平均电平是A/2等效于一个DC A/2的直流信号它的功率是(A/2)²A²/4正好对应冲激前面的系数。这也解释了一个常见疑问为什么sinc²只在整数倍1/T处全部清零因为矩形脉冲的频谱零点就在整数倍码速处这和单缝衍射里“缝越宽中央亮纹越窄”是同一个道理。码元宽度T决定了频域“衍射条纹”的间隔零点间隔是1/T。只要脉冲形状是矩形这个结论就见一次考一次。4. 第二遍推导波形截断法验证同一个公式4.1 截断信号的频谱把脉冲频谱提出来自相关法是最优雅的但很多同学反映“太抽象中间跳步太快”。这里再走一条更接近物理直觉的路波形截断法。它和维纳-辛钦定理在本质上等价但计算过程让人能看到“取数学期望”这一步到底在干什么。取N个码元观察区间长度是NT截断信号可以写为s_N(t) Σₙ₌₀ᴺ⁻¹ aₙ · g(t - nT)对这个有限长波形做傅里叶变换。因为矩形脉冲的傅里叶变换是G(f)时移nT只带来一个相位因子所以S_N(f) G(f) · Σₙ aₙ · e^{-j2πfnT}整个截断信号频谱等于脉冲频谱G(f)乘以一个跟随机序列有关的复数。这个复数就是问题的核心。4.2 求期望到底是在平均什么按照功率谱密度的定义对截断信号要取“能量/时长”然后求期望P(f) lim_{N→∞} (1/(NT)) · E|S_N(f)|²把S_N(f)代入G(f)的模方可以提前提出来剩下的是随机序列复数和的模方期望P(f) |G(f)|²/T · lim_{N→∞} (1/N) · E|Σ aₙ e^{-j2πfnT}|²现在看这个期望到底在平均什么。展开模方E|Σ aₙ e^{-j2πfnT}|² Σₘ Σₙ E[aₘaₙ] e^{-j2πf(m-n)T}又回到了E[aₘaₙ]。当mn时E1/2当m≠n时E1/4。把这个关系写成1/4 (1/4)δₘₙ代入后分成两部分第一项来自交叉项等于(1/4)|Σ e^{-j2πfnT}|²这一项在f等于整数倍1/T处会形成很高的峰值取极限后变成周期冲激串第二项来自自项等于(1/4)N这一项是均匀铺在整个频带里的取极限后是常数。两项合起来功率谱密度同样得到连续谱加离散谱的结构。由于矩形脉冲的G(f)在fm/T处除了m0全部为零离散冲激串只剩零频那一根。最终结果和自相关法完全一致P(f) (A²T/4)sinc²(fT) (A²/4)δ(f)两种路线殊途同归。你自己推导时走哪条都行但建议至少亲手走一遍自相关法因为后面分析更复杂的码型时自相关法扩展起来最直接。4.3 “功率谱密度相乘证明”的误区到底在哪网上搜“功率谱密度相乘证明”能搜到一大堆同名讨论。这个热搜词的来源是很多同学看到s(t) Σaₙg(t-nT)第一反应是“这不就是序列aₙ跟脉冲g卷积吗卷积的频谱等于各自频谱相乘那功率谱是不是也相乘”这个想法差一点就对了。卷积定理说时域卷积对应频域相乘s(t)确实是aₙ序列跟g(t)卷积的结果。但问题在于aₙ不是确定性序列而是随机序列你根本不能写出它的确定性频谱。就算硬写出一个样本序列的频谱X(f)|X(f)|²也只是那一次随机抽取的结果不是统计平均意义下的功率谱。正确的“相乘”是这样玩的先求随机序列aₙ的自相关函数R_a(k)然后对k做离散傅里叶变换得到序列本身的功率谱S_a(f)。因为R_a(k)1/4(1/4)δₖ₀所以S_a(f) 1/4 (1/(4T))Σδ(f-m/T)于是s(t)的功率谱等于序列功率谱乘脉冲频谱再归一化P_s(f) S_a(f) · |G(f)|² / T这样乘出来的结果和前面两个推导完全一样。所以“功率谱相乘”本身不是错错的是你把随机序列的某一次样本频谱当成序列功率谱去乘了。记住功率谱三个字里自带一个“数学期望”操作这一步省掉后面全乱。5. 公式背后工程上到底怎么用它5.1 直流分量与编码改造为什么电话线不让你直接发NRZ单极性NRZ的功率谱密度里那根δ(f)冲激在工程上是一个非常强烈的信号。它有直流意味着平均电平不为零。这在短距离板级电路里问题不大但一旦信号要经过变压器、隔直电容、交流耦合链路直流分量会被整个挡掉波形会发生基线漂移接收端判决就会出错。长距离有线传输比如电话线、同轴电缆、光纤通信通常都是交流耦合单极性NRZ直接上肯定不行。所以工程上要做线路编码。AMI码通过交替反相把直流部分消灭HDB3码在AMI基础上插入破坏脉冲保证连零数量可控8B/10B编码通过保证1和0的数量均衡来维持直流平衡曼彻斯特码则利用每个比特中间的跳变把频谱搬离零频。这些编码说白了都是在功率谱密度层面做文章核心目标就是去掉或削弱离散谱。看到这里你就能理解为什么学通信原理时明明讲的是“单极性不归零码的功率谱”老师最后总要扯到编码上去。因为工程中的所有线路编码选择本质上都是在和功率谱形状博弈。5.2 带宽口径主瓣、零点带宽与频谱效率从功率谱密度公式还能读出带宽信息。sinc²(fT)的主瓣从0延伸到1/T也就是主瓣零点带宽等于码元速率Rb。这意味着单极性NRZ直接传输时理论上需要大约Rb的带宽才能保留主瓣大部分能量。如果只传主瓣很多接收机设计就是这么算的。但这里有一个新手容易踩的坑。主瓣零点带宽是等于Rb没错但它并不等于“无码间串扰所需最小带宽”。根据奈奎斯特准则基带传输的理想最小带宽是Rb/2也就是极限频谱效率2bps/Hz。单极性NRZ方波的sinc谱只是恰好主瓣宽到Rb性能上离奈奎斯特理想还有距离。实际系统里很少直接用方波传会通过脉冲成型滤波器把信号频谱整成升余弦形状。升余弦滚降因子α0时带宽Rb/2α1时带宽Rb。你会发现通信系统设计绕来绕去最终还是绕回“频谱形状决定带宽利用率”这个根本问题。5.3 时钟恢复为什么NRZ没有位定时离散谱单极性NRZ的功率谱里虽然在f0处有离散谱线但在f1/T、2/T这些码速率整数倍处sinc函数恰好为零一根离散谱都没有。这意味着接收端不能像调幅收音机那样接一个窄带滤波器在码速率处直接滤出时钟分量。NRZ信号本质上是“没有自带时钟谱”的。工程上的解决办法是人为制造时钟分量。常见做法是先把NRZ信号做非线性变换比如平方、整流、延迟相乘让信号变成类似单极性RZ的形状重新产生码速率处的离散谱然后再用锁相环或窄带滤波器提取。这就是为什么很多接收机前端会有一个平方器件或者全波整流器。我个人调试的时候经常用这个现象做快速诊断如果接收信号经过平方后看不到码速率处的谱线多半是信号本身没有电平跳变或者信噪比已经低到掩蔽了谱峰。这个观察方法比单纯看眼图要快得多。5.4 仿真验证怎么用软件看到这根冲激谱线纸上谈兵到此为止。实际验证功率谱密度最直接的方式就是生成随机比特序列映射成单极性NRZ信号然后做周期图平均也就是Welch算法。下面这段Python代码可以直接跑import numpy as np import matplotlib.pyplot as plt from scipy import signal fsamp 32 # 每个码元的采样点数 Nsym 8192 # 码元个数 bits np.random.randint(0, 2, Nsym) nrz np.repeat(bits, fsamp).astype(float) f, Pxx signal.welch(nrz, fsfsamp, npersegfsamp * 256) plt.semilogy(f / fsamp, Pxx) plt.xlabel(f / Rb) plt.ylabel(PSD) plt.xlim(0, 5) plt.ylim(1e-5, 1e2) plt.grid(True) plt.show()运行之后能看到两个特征零频处有一个高耸的尖峰对应δ(f)旁边是sinc²主瓣第一零点正好落在f/Rb1的位置。如果想确认直流分量直接把信号求时间平均应该接近A/2也就是0.5。仿真里唯一要注意的是FFT频谱不加窗会导致谱线泄漏但加窗又会把离散谱线展宽这是数字信号处理固有的取舍解释现象时需要心里有数。6. 常见问题与易错点速查6.1 为什么我自己算出来的自相关函数和教材上的周期延拓不一样这是最典型的翻车点。很多同学从头推一遍算出来的R(τ)只有两个三角波项没有教材里的周期求和形式。原因通常是少了“平稳化”这一步你算的是固定时间零点下的瞬时相关而不是把所有码元起点均匀化之后再平均。解决方法是把自相关写成对码元起点取平均的形式或者直接接受公式R_s(τ)(1/(4T))R_g(τ)(1/(4T))ΣR_g(τ-kT)。记住后一项是直流平均造成的周期延拓它一旦被丢掉后面的离散谱线就全消失了。6.2 f0处冲激系数为什么是A²/4而不是A²/2这个错误几乎人人犯过。A²/2是信号的总平均功率而离散谱只对应平均电平的那部分功率。单极性NRZ平均电平是A/2直流功率是(A/2)²A²/4。剩下的A²/4是电平随机起伏产生的方差分布在整个连续谱上。两者相加刚好等于总功率A²/2这个自洽关系就是最好的检查手段。算出来不满足功率对账推导一定有问题。6.3 FFT仿真谱不光滑、直流尖峰不明显怎么办单次FFT看到的是随机样本的频谱起伏大很正常必须多做几次平均。Welch方法分段越多谱越平滑代价是频率分辨率下降。直流尖峰不明显先检查一下是不是生成序列时把均值减掉了。很多人在预处理里习惯性做了去均值这对一般的信号分析没错但对单极性NRZ来说去均值等于把你要研究的直流谱线给删了结果当然不对。6.4 单极性NRZ和双极性NRZ、归零码到底差在哪一句话总结单极性NRZ因为均值不为零所以有直流离散谱双极性NRZ均值恒为零所以离散谱完全消失只剩连续谱单极性RZ因为有归零动作脉冲变窄频谱主瓣变宽而且会出现码速率处的离散谱线双极性RZ同样没有直流谱线但时钟分量也弱通常要经过非线性变换才能提出来。把这几个结论放进同一个表格对比就非常清楚信号类型连续谱形状零频离散谱码速率处离散谱主瓣零点带宽单极性NRZsinc²(fT)有无Rb双极性NRZsinc²(fT)无无Rb单极性RZ半占空sinc²(fτ)τT/2有有2Rb双极性RZ半占空sinc²(fτ)τT/2无无2Rb这个表基本就是数字基带信号功率谱分析的浓缩版考试前扫一眼比翻十页书都有用。最后再说一个我个人的工作习惯。遇到任何新码型需要分析功率谱时不要一上来就死记公式先花三分钟回答三个问题电平的均值是多少方差是多少基本脉冲的频谱是什么形状把这三个答案套进P(f)S_a(f)|G(f)|²/T结果自己就出来了。这个套路我用了很多年从NRZ到AMI到各种自定义编码没有一次失手。通信原理里那些看似吓人的公式拆到底层其实都是这同一套逻辑。
返回列表