我想在我的声卡上创建一个数字(方形)信号。如果我产生高频,它会很好用。但是,由于我无法在声卡上输出 DC,因此对于较低频率,生成的数字位都会慢慢衰减到 0。
这就是声卡高通对我的方波所做的: http ://www.electronics-tutorials.ws/filter/fil39.gif
信号的数学函数是什么,当通过高通时会变成正方形?
理想情况下,解决方案在 gnuplot 中演示。
我想在我的声卡上创建一个数字(方形)信号。如果我产生高频,它会很好用。但是,由于我无法在声卡上输出 DC,因此对于较低频率,生成的数字位都会慢慢衰减到 0。
这就是声卡高通对我的方波所做的: http ://www.electronics-tutorials.ws/filter/fil39.gif
信号的数学函数是什么,当通过高通时会变成正方形?
理想情况下,解决方案在 gnuplot 中演示。
声卡会切断波形中的低频,因此您需要在传递给它的内容中将它们提高一些。
方波包含许多频率(请参阅此处的傅里叶级数部分)。我怀疑生成校正方波的最简单方法是将傅里叶级数相加,提高低频分量的幅度以补偿声卡中的高通滤波器。
为了计算出每个低频分量提升多少,您首先需要测量声卡中高通滤波器的响应,通过输出各种频率但幅度恒定的正弦波,并测量每个频率的比率r(f)
输出幅度与输入幅度的比值。f
然后,可以通过将方波傅立叶级数中每个频率分量的幅度乘以1/r(f)
(“逆滤波器”)来生成方波输出的近似值。
声卡中的高通滤波器也可能调整信号的相位。在这种情况下,最好将高通建模为RC 滤波器(这可能是声卡进行滤波的方式),并从中反转幅度和相位响应。
之前的一些答案正确地指出,是高通滤波器(声卡输出上的交流耦合电容器)阻止了低频方波“保持开启”,因此它们迅速衰减。
没有办法从软件中完全击败这个过滤器,或者它不会存在,现在会吗?如果您可以在较低频率下使用较低幅度的方波,您可以通过发出三角波之类的东西来近似它们。从瞬态分析的角度来看,这里的工作原理是,当耦合电容器放电(阻断直流)时,您正在增加其偏置电压以抵消放电,从而在一段时间内保持方波的平台期。当然,您最终会用完 PCM 余量(您不能无限期地增加电压),因此 24 位卡在这方面比 16 位卡更好,因为它可以为您提供更高的分辨率。另一种更抽象的思考方式是 RC 滤波器作为微分器工作,因此为了获得方波的平坦峰值,您需要在输入处为其提供三角波的平坦斜率。但这是一种理想化的行为。
作为概念的快速证明,这是通过 1Kohm 负载上的 1uF 耦合帽时 60Hz ±1V 三角形信号的情况;它近似于 ±200mV 方波
请注意,负载的阻抗/电阻在这里非常重要;如果将其降低到 100 欧姆,则输出幅度会急剧下降。这就是耦合帽如何阻止扬声器/耳机上的直流电,因为这些设备的阻抗远低于 1Kohm。
如果我今天晚些时候能找到更多时间,我会添加一个更好的模拟,用更好的形状刺激而不是简单的三角波,但我无法从你的普通基于网络的电路模拟器软件中得到它......
好吧,如果你幸运的话,你可以得到一张 0.99 美元的 USB 声卡,其中制造商偷工减料以至于他们没有安装耦合帽。https://www.youtube.com/watch?v=4GNRzwfP7RE
不幸的是,您无法很好地近似方波。声音硬件有意限制压摆率,并且无法产生超出其预期频率范围的下降沿或上升沿。
您可以通过每 N 个样本交替使用高低 PCM 代码(+max、-max)来近似变形严重的方波。
您实际上无法产生真正的方波,因为它具有无限带宽。但是,您可以产生一个合理的方波近似值,在 10 Hz 和 1 kHz 之间的频率(低于 10 Hz,您的声卡等的模拟部分可能会出现问题,而在 1 kHz 左右,近似值将变得越来越不准确,因为您只能再现相对少量的谐波)。
Tp 生成波形,样本值将在+/-某个值之间交替,例如满量程,对于 16 位 PCM 流,这将是 -32767 和 +32767。频率将由这些样本的周期决定。例如,对于 44.1 kHz 的采样率,如果您有 100 个 -32767 样本,然后有 100 个 +32767 样本,即周期 = 200 个样本,那么您的方波的基频将为 44.1 kHz / 200 = 220 Hz。