通常,噪声会让人感到烦恼。但有时,它也可以成为一种有用的工具。令人惊讶的是,噪声有着多种颜色。这篇设计实例(DI)展示了一些生成最常见、最有用的噪声的好方法,这些噪声包括白色、粉色和褐色(可选)。其核心是一个MCU,经过编程即可生成原始的白噪声,外加一个改进的滤波器,用于将其转换为粉色。
随机电子噪声源非常常见。最可控的白噪声源可能是众所周知的、由带反馈的移位寄存器生成的伪随机二进制序列(PBRS),这将是我们的起点。图1显示了使用逻辑IC的相当标准的实现方法。

图1:使用标准逻辑IC设计的伪随机序列发生器(PRSG)可产生宽带白噪声。
将三个8位器件(或此处采用的双4位器件)连接起来,即可形成一个23位移位寄存器。第18位和第23位的输出经过异或(XOR)和反相——即异或非(XNOR)处理,然后反馈到输入,产生一种看似随机的位模式,但它每223-1个时钟周期重复一次,在240kHz的时钟频率下,大约每35秒重复一次。(这个“-1”代表非法、锁定、全1的情况,简单的复位电路可防止这种情况发生。)对于高达时钟速率十分之一的频率,频谱几乎与纯净的理想白噪声相同。它在任何给定的带宽中都具有相同的强度:其频谱是平坦的。对于其他颜色,只需对其进行适当滤波即可。
廉价的MCU即可打造出优秀的PRSG
到目前为止,一切都很常规。但是,既然使用单个8引脚(甚至更少引脚)封装的芯片就足够了,为什么还要使用一组共62个引脚的芯片和至少10个分立元器件呢?为了避免繁琐,这里省略了具体的原理图——你可以想象一个矩形框,它由电源供电(用单个电容解耦),并有一个GPIO引脚提供PRBS——但此处提供了汇编语言代码下载,供Microchip 12F1501 PIC MCU使用。(解压后,可以用记事本方便地打开。)该代码在逻辑和功能上与图1的电路相同,可以轻松修改以用于不同的低端PIC MCU,而底层逻辑可以移植到各种其他合适的MCU。(过去,NatSemi制造了MM5837,这是一款使用17级8引脚、15V的PMOS白噪声源。它早已过时,但这可以成为它的一个很好的替代品。)
我们现在拥有频谱范围大致从30mHz到几MHz的伪随机白噪声,这比我们需要的倍频程多出几个。(比特率的倍数处有零点,对于此PIC版本为267kHz。)它仍然是脉冲流的形式,需要进行频带限制,才能获得真正有用的白噪声。对于粉红噪声,还需进一步滤波,以便所有倍频程(或其他频率比)具有相同的强度,这正是我们在音频方面所需要的。完成所有这些工作的电路如图2所示。
图2:伪随机信号(白噪声)经过调整以适应音频频带,并进一步滤波以产生粉红噪声。
PRSG可使用图1的分立逻辑实现,但MCU版本的电气噪声更低,而且更紧凑,忽略编程开销,成本也更低。脉冲整形网络将轨对轨矩形脉冲流转换为具有确定电平(约1.2V峰峰值)的梯形脉冲流,且其压摆率低于下游运算放大器的压摆率。20kHz低通滤波器的功能如其所言。(“20kHz”不是它的3dB角,而是它的功能标签。)现在只需要从约20Hz开始进行高通滤波,即可产生音频频谱内的白噪声,且其电平略大于-10dBu。
新的改进型粉红噪声网络
粉红噪声比较棘手,需要更复杂的滤波器来提供必要的3.01dB/oct(10dB/dec)斜率。大多数已发布的解决方案都使用四个RC部分以及图2中所示的基本R和C(如R10和C11),有些甚至更少。(而且许多似乎是克隆的。)这些RC的元件值间隔约为√10,但经过思考和使用LTspice后发现,使用更多级数和接近10的立方根的比率可获得更好的结果。图3显示了图2七级网络的计算响应,没有添加高通或低通滤波器。即使使用E12元件值,它也几乎是一条直线,与克隆的响应不同。
图3:新的7级粉红噪声滤波器的独立响应。
增益级可将粉红噪声的有效值(RMS)电平提升至-10dBu,以匹配白噪声,而选择开关、电平控制电位器、输出缓冲器和轨道分离器(A2d等)则完成了整个设计。图4显示了计算出的响应曲线以及与理想值的最坏情况偏差。
图4:所完成设计的计算响应,显示了IEC 60268-1限制的掩蔽和滤波器的峰值误差。
现在,从24Hz到21kHz的输出均在理想值的±0.2dB范围内。如果采用稍软的高通和低通滤波器,甚至还可以改进,特别是通过减少频谱两端的纹波,但它们的计算结果符合IEC 60268-1的要求,该标准涉及音频系统的性能、测试和应用。
关于电路的进一步说明
图2的电路设计(和测试)使用了标称5V(或±2.5V)电压轨(廉价的移动电源或多余的USB PSU正好可以派上用场),但其工作电压范围从2.7V(三节快用尽的AA电池)和5.5V(USB标准限制)也允许其他供电选择。
整形网络可确保无论轨道电压是多少,输出都将保持相当恒定,而-10dBu的信号电平即使在轨电压较低时也能避免削波。在保证5V电源的情况下,A2c在削波开始前可获得约7dB的额外增益。输出波峰因数(峰值与RMS之比)相当高,约为5:1,即14dB。
A1a使用的是MCP6022而不是MCP6004(或两个MCP6002),因为后者只能处理整形脉冲,而且失真明显。粉红噪声网络之后所需的增益相当高,因此A1b也是MCP6022:速度更快,输入偏移更低。MCP6004在所有其他位置都能正常工作。A2c和输出之间的元件不是必须的,只是一种好的做法。
空载时的电流消耗约为6mA。
褐色噪声生成
如图5所示,添加褐色噪声(也称为红色噪声或布朗噪声)生成很简单。所需要的只是一个RC网络,随着频率的升高,其衰减为6.02dB/oct(20dB/dec),然后是大量的增益。(有些资料称需要两个级联的3dB/oct粉红网络,但这样做肯定更昂贵,而且精度也更低。)所示数值为-10dBu输出(约2.6V峰峰值),以匹配其他响应。显然,如果要添加这个功能,图2中所示的开关则需要更改。为了单独使用,至少应在其前面加上20Hz高通滤波器,否则低音扬声器可能会试图模拟小型地震。
图5:这个简单的电路可将白噪声转换为布朗噪声。
实现其他长度的伪随机序列
基于PIC(或其他)MCU的PRSG可能还有其他用途,需要不同的序列长度。如果只需要使用(虚拟)移位寄存器的两个抽头,代码可以很容易地进行调整;更多的抽头需要更多的XNOR代码。此参考文献中有一个全面的表格,显示了所需的抽头以及大量有用的背景信息。
更长的序列只需要额外的寄存器,但每个寄存器都会增加一个处理器周期;XNOR逻辑的运行时间(12个周期)比移位要长。假设时钟频率为16MHz(指令频率为4MHz),8个连锁寄存器连同第62位和第63位的反馈将产生一个约120万年才重复一次的序列。如果使用10个寄存器,在第70位和第79位处抽头,那么重复时间将增加到约770亿年。够长了吗?如果不够,上述参考文献还提供了许多高达167位的2抽头解决方案。这时,就可能需要投资一些超长寿命的电池或非常可靠的UPS。
—Nick Cornford 10岁时制作了自己的第一台矿石收音机。此后设计了许多专业音频设备、数据通信产品和技术安全套件。现在他终于退休了,算是退休了吧。
(原文刊登于EE Times姊妹网站EDN,参考链接:Earplugs ready? Let's make some noise!,由Franklin Zhao编译。)
本文为《电子工程专辑》2025年2月刊杂志文章,版权所有,禁止转载。免费杂志订阅申请点击这里。
