今天主要讲一下噪声系数的基本定义。
这张图大家可能能看到很多类似的样式。它其实是我把一篇普通的公众 号文章发给 GPT,然后由 GPT 生成的。中间可能来回打了几个回合,但确实 GPT 总结出来的内容,要比我自己规划得更整洁,也漂亮得多。
今天这个视频,主要就是相当于给这幅图增加一点“人味”。我来讲解一下,也不是说单纯讲解一下,而是说一说我对噪声系数的认知过程。
首先我们来看一下噪声系数的定义。
书上一般都是这样讲。这里的F指线性噪声系数:
噪声系数 = 输入信噪比 / 输出信噪比
在很长一段时间里,其实我不太理解为什么要掌握这个噪声系数的定义。
因为我前面工作的前三年,主要是做低噪放的板级设计。噪声系数的定义,在我看的那本书上,是放在低噪放设计的第一个章节。那本书是一本挺老的书,是我们组长推荐的。
当时看的时候,我一直不太理解这个定义放在这里有什么用。因为我们做低噪放设计,最主要的是在史密斯圆图上把最小噪声系数点找出来,然后画等噪声系数圆,再在这边找到一个点,让各方面的指标匹配。
等噪声系数圆是基于公式推导出来的,也就是基于这个公式在史密斯圆图上画出来的。所以从这一步,到低噪放的设计,其实用不到噪声系数的定义。
如果再深究“用来画等噪声系数圆的这个式子是怎么来的”,那它其实可能会有一点这个定义的影子在里面。但如果我们只深究到公式为止,其实是看不到噪声系数定义的作用的。
所以我很长时间都只是记这个公式。
直到我开始接触系统以后,才发现这个定义原来是系统分析里一个很重要的公式。这个算是题外话。
我们回到噪声系数公式里的输入端噪声Ni。
它其实有一个温度规定,是 290K,对应 16.85°C。如果你在 ADS 里面做仿真,会发现它有一个温度设置。这个温度如果没有设成 16.85°C,软件会给一个 warning。
噪声系数有时候仿真的结果会有一点差别,有的时候又看不出明显差别,但这个 warning 肯定是会有的。
我们来看一下热噪声的公式:
Ni = kTB
其中:
k
J/K; T
B
Hz。 所以我们经常会听到一个值:
-174 dBm/Hz
这个值就是基于B = 1 Hz的时候算出来的。
这个推导现在看起来很顺,但我第一次接触这个公式、推kT 值的时候,印象中当时是推错过的。不过我已经不太记得到底是哪里错了。
现在回想,可能差别是在“瓦”和“毫瓦”的换算上。把瓦换算成 dBm 的时候,需要加 30 dB,当时可能少加了这个 30 dB,所以导致结果不对。
我们来看一下 kT 值。
玻尔兹曼常数大约是:
k = 1.38 x 10^-23 J/K
温度是:
T = 290 K
所以:
kT ≈ 4 x 10^-21 J
再看单位:
J/K x K = J
而:
1 W = 1 J/s
Hz和秒又是倒数关系:
1 Hz = 1/s
所以当带宽是1 Hz时:
kTB ≈ 4 x 10^-21 W/Hz
换算成 dBm/Hz:
10log10(4 x 10^-21) + 30 ≈ -174 dBm/Hz
这就是我们计算噪声功率Ni = kTB时,经常听到的-174 dBm/Hz的由来。
接下来额外讲一下:噪声系数的定义,放到系统上有什么特别大的作用。
噪声系数定义是。这里的F仍然表示线性噪声系数:
F = 输入信噪比 / 输出信噪比
也就是:
F = (Si / Ni) / (So / No)
我们可以对它做一下变形。
假设系统增益为G,则:
So = Si x G
那么可以得到:
Si = F x (So / No) x Ni
这里的So / No,可以理解成基带刚好能够解调时所需要的输出信噪比。
这个时候,Si对应的就是接收机的灵敏度。
所以我们计算灵敏度时,很多时候都是基于:
F;Ni = kTB;如果换成 dB 形式,Ni的底噪密度就是:
-174 dBm/Hz
再叠加带宽、噪声系数和解调所需信噪比,就可以计算出灵敏度。
不过要注意:前面的公式本质上是线性值相乘。如果换成 dB 计算,我们只是把这些量都取成 dB 值以后再相加。
这就是噪声系数和灵敏度之间的关系。
还有一个角度,是把噪声系数和输出噪声联系起来。
噪声系数也可以写成:
F = No / (Ni x G)
这个形式用在哪儿呢?
当信号在系统里面一级一级级联时,我们会计算级联噪声系数。这个推导和上面的形式有关系。
首先,输入端的热噪声是:
Ni = kTB
经过增益G后,输入噪声贡献到输出端就是:
Ni x G = kTB x G
但实际器件本身也会引入噪声。我们可以用“等效噪声温度”来表示这个器件本身引入的噪声。
假设器件有一个等效到输入端的噪声温度Te,那么输出噪声可以理解为:
No = kB(T0 + Te)G
其中T0是标准温度,一般取290K。
代回噪声系数定义:
F = No / (Ni x G)
可以得到:
F = (T0 + Te) / T0
也就是:
F = 1 + Te / T0
反过来:
Te = T0(F - 1)
这就是教科书上经常看到的噪声系数和等效噪声温度之间的关系。
有了这个关系,再加上级联结构,我们就可以一级一级地推导级联系统的噪声系数。
对于一般器件,手册通常会给噪声系数。噪声系数可以换算成等效噪声温度。然后每一级的噪声经过后一级增益叠加到输出端,后面一级又继续叠加自己的噪声。
这样一级一级算下去,最后得到总的输出噪声Nout,再根据公式反推整个链路的级联噪声系数。
现在我们有很多小工具,可能不会太纠结这些计算,因为工具都已经帮我们算好了。但理解这个定义,还是有助于理解级联噪声系数的来源。
还有第三点,也是基于这个定义来计算的。
我们知道,标准定义里默认输入噪声温度是290K。正常情况下,我们一般默认是在16.85°C。虽然有时候实际环境是常温25°C,但差别不是特别大。
不过有些时候,差别会非常大。
比如在发射机上,我们经常会关心最终输出信号的宽带噪声是多少。
这个宽带噪声一方面会受功放影响,另一方面,从基带出来的信号进入射频链路时,它在输入端的噪声也不是标准热噪声,通常会比正常热噪声高很多。
所以这个时候,如果你还只是用:
Nout = -174 dBm/Hz + 增益 + 噪声系数
来算整机宽带噪声,就不太合适。
那能不能说:既然我的 Nin不是 -174 dBm/Hz,那就直接按照现在实际是多少来加?
比如基带出来,或者正交调制器出来,假设是:
-130 dBm/Hz
那我直接加上去,可不可行?
其实也不可行。
为什么?
因为器件手册给你的噪声系数,是基于 -174 dBm/Hz 这个标准输入热噪声定义的。如果输入噪声变成 -130 dBm/Hz,那就不能简单地继续直接使用原来的噪声系数定义。
这个时候应该怎么算?
《微波工程》里讲系统的那一章其实也有这个算法。核心思路是:先把基带出来、送到射频链路的这个噪声换算成噪声温度,然后再用这个噪声温度,加上器件本身的等效噪声温度,再继续计算。
还有一种情况,比如天线不在正常温度范围内。
如果天线对着天空,本来的噪声温度可能就很低,甚至不到标准的 290K。
这个时候,也需要基于噪声温度的方式来计算最终输出噪声,而不能简单套用标准290K条件下的计算。