电子说
任何涉及物理世界敏感测量的应用都始于准确、精确和低噪声的信号链。现代、高度集成的数据采集设备通常可以直接连接到传感器输出,在单个硅设备上执行模拟信号调节、数字化和数字滤波,从而大大简化系统电子设备。但是,仍然需要全面了解信号链的噪声源和噪声限制滤波器,才能从这些现代设备中提取最大性能并对其进行调试。
介绍
本教程是转换器连接教程 [1][2] 的延续。它将关注单个信号链元素的噪声,使用 Python/SciPy[3] 和 LTspice 对其进行建模。然后,它将使用 Python通过 libm2k 和 Linux 工业输入输出 (IIO) 框架驱动ADALM2000多功能 USB 测试仪器来验证结果。所有源代码和其他讨论都可以在配套的主动学习实验室练习中找到。
混合模式信号链无处不在。简而言之,任何将现实世界的信号转换为电表示,然后进行数字化的系统都可以归类为混合模式信号链。在链上的每一点,信号都会以各种方式劣化,通常可以将其表征为某种形式的失真或附加噪声。一旦进入数字域,数字化数据的处理也并不完美,但至少从所有实际目的来看,它不受许多影响模拟信号的因素的影响——元件容差、温度漂移、来自相邻信号的干扰、或电源电压变化。
随着行业不断突破物理极限,有一点是确定的:仪器仪表的模拟和混合信号组件总是有改进的空间。如果市场上出现的模数转换器 (ADC) 或数模转换器 (DAC) 在速度、噪声、功率、精度或价格方面提升了最先进的技术水平,制造商将很乐意应用它现有的问题,然后要求更多的改进。然而,为了为您的应用程序实现最佳采集系统,了解组件的限制并相应地选择它们是至关重要的。
通用混合模式信号链
图 1 显示了精密仪器应用的典型通用信号链,具有物理输入和数字输出。有许多关于 ADC 的背景参考资料 [4],大多数读者会觉得 ADC 在某个时间点对输入信号进行采样(或测量某个观察时间内信号的平均值)并生成一个数字表示该信号通常是一个二进制数,其值介于 0 和 2 (N – 1)之间,其中 N 是输出字中的位数。
点击查看完整大小的图片
图 1. 在混合模式信号链中,温度、光强度、pH、力或扭矩等一些物理现象被转换为电气参数(电阻、电流或直接转换为电压)。然后,该信号被放大、低通滤波,并由 ADC 数字化,其中可能包括内部数字滤波。
ADC 噪声源
虽然图 1 中有几个噪声源,但经常被忽略或过分强调的一个是 ADC 数字输出中的位数。从历史上看,ADC 的位数被认为是最终的品质因数,其中 16 位转换器被认为是 14 位转换器的 4 倍[5]。但在现代高分辨率转换器的情况下,可以放心地忽略位数。注意信号链设计的一般原则:
“一级的输入噪声应该比前一级的输出噪声低一些。”
与任何信号链一样,ADC 中的一个噪声源通常占主导地位。因此,
如果将无噪声信号应用于 N 位 ADC:
导致单个输出代码或两个相邻输出代码,然后量化噪声占主导地位。信噪比 (SNR) 可以不大于 (02 N + 1.76) dB。[6]
导致许多输出代码的高斯分布,然后热噪声源 SNR 不大于:
其中:
V IN (pp) 是满量程输入信号。
σ 是以电压为单位的输出代码的标准偏差。
非常高分辨率的转换器,例如AD7124-8,稍后将用作示例,很少受到量化噪声的限制;热噪声在所有增益/带宽设置中占主导地位,短路输入总是会产生相当高斯分布的输出代码。图 2 显示了 AD7124-8 的接地输入直方图,24 位 Σ-Δ ADC,内部可编程增益放大器 (PGA) 分别设置为 1 和 128。
点击查看完整大小的图片
图 2. 在 PGA 增益为 1(左)时,AD7124 输出噪声中有 13 个代码,标准偏差约为 2.5 个代码。虽然量化是可见的,但热噪声更为显着。在 PGA 增益为 128(右)时,表示了 187 个代码,量化噪声微不足道。截断一个或两个最低有效位(双倍或四倍量化噪声)不会导致信息丢失。
ADC 噪声建模和测量
对热噪声受限 ADC 的噪声进行建模非常简单。如果噪声“表现良好”(高斯,如图 2 所示)并且在 ADC 的输入范围内保持恒定,则可以使用 NumPy 的 [7] 随机正态函数对 ADC 的时域噪声进行建模,然后通过采用标准偏差,如图 3 所示。
点击查看完整大小的图片
图 3. 使用 NumPy 对高斯噪声建模。
点击查看完整大小的图片
图 4. ADALM2000 是一款多功能 USB 测试仪器,具有两个通用模拟输入和两个输出,采样率分别为 100 MSPS 和 150 MSPS。它可以用作测量ADC噪声带宽和滤波器响应的简单信号源。运行支持 AD7124 设备驱动程序的内核的 Raspberry Pi 4 充当 AD7124 和主机之间的简单桥梁。
AD7124 设备驱动程序属于行业标准 IIO 框架,该框架具有完善的软件 API(包括 Python 绑定)。应用程序代码可以在本地(在 Raspberry Pi 上)或通过网络、串行或 USB 连接在远程机器上运行。此外,pyadi-iio[8] 抽象层负责与 IIO 设备接口所需的大部分样板设置,大大简化了软件接口。图 5 说明了如何打开与 AD7124-8 的连接、对其进行配置、捕获数据块,然后关闭连接。
点击查看完整大小的图片
图 5. AD7124-8 基本数据采集。
与 AD7124-8 建立通信后,可以执行极其简单但非常有用的测试:直接测量输入噪声。简单地将 ADC 的输入短路并查看 ADC 代码的最终分布是表征信号链设计的重要步骤。AD7124输入模式设置为单极性,所以只有正值有效;图 6 所示的测试电路确保输入始终为正。
点击查看完整大小的图片
图 6. 电阻分压器用于在 AD7124-8 的输入端产生 1.25 mV 偏置,克服 15 µV 的最大失调电压并确保 ADC 读数始终为正。
图 7 显示了两个 1024 点测量。下面的(蓝色)迹线是在最初通电后立即拍摄的。
点击查看完整大小的图片
图 7. 两个 AD7124-8 数据采集是在施加 1.25 mV 偏压的情况下进行的。下面的迹线显示了上电后电路升温时的初始漂移。上部曲线显示半小时预热时间后读数稳定。
“漂移”可能是由于多种因素造成的——内部参考升温、外部电阻升温(因此漂移)或寄生热电偶,其中稍微不同的金属会在存在热梯度的情况下产生电压。预热后测得的噪声约为 565 nV rms——与数据表噪声规范相当。
将 ADC 噪声表示为密度
模拟信号链设计的一般原则(即一级的输入噪声应略低于前一级的输出噪声)是一个简单的计算,如果所有元素都包括噪声密度规格——就像大多数指定良好的传感器和几乎所有放大器做。
与放大器和传感器不同,ADC 数据表通常不包括噪声密度规范。将 ADC 的噪声表示为密度,可以直接将其与模拟信号链中最后一个元件(可能是 ADC 驱动器级、增益级或传感器本身)输出端的噪声进行比较。
ADC 的内部噪声必然会出现在 DC 和采样率的一半之间。理想情况下,这种噪声是平坦的,或者至少是可预测的形状。事实上,由于 ADC 的总噪声分布在已知带宽上,因此可以将其转换为可以直接与信号链中的其他元素进行比较的噪声密度。精密转换器通常具有直接给出的总噪声,以伏特 rms 为单位:
其中 e RMS是总 rms 噪声,根据接地输入直方图的标准偏差计算得出。
使用正弦信号测试和表征的高速转换器通常具有 SNR 规范。如果提供,总 rms 噪声可以计算为:
其中 ADCp-p 是 ADC 的峰峰值输入范围。
然后可以计算等效噪声密度:
其中 f S是以样本/秒为单位的 ADC 采样率。
图 7 中的总噪声在预热后为 565 nV,数据速率为 128 SPS。噪声密度约为:
现在可以将 ADC 直接包含在信号链噪声分析中,从而为优化信号链增益提供指导:
将增益增加到 ADC 之前最后一级的噪声密度略高于 ADC 的点,然后不要再费心增加信号链增益 - 你只是放大噪声并降低允许的输入范围。
这与“填充”ADC 输入范围的传统观念背道而驰。如果 ADC 的传递函数存在阶跃或不连续性,则使用更多 ADC 的输入范围可能会有好处,但对于“表现良好”的 ADC(大多数 sigma-delta ADC 和现代高分辨率逐次逼近寄存器 (SAR) ADC),通过噪声进行优化是首选方法。
测量 ADC 滤波器响应
AD7124-8 是一款 sigma-delta ADC,其中调制器产生高采样率但噪声(低分辨率)的模拟输入表示。然后,这些噪声数据由内部数字滤波器过滤,产生较低速率、较低噪声的输出。滤波器的类型因 ADC 而异,具体取决于预期的最终应用。AD7124-8 是通用型的,面向精密应用。因此,数字滤波器响应和输出数据速率是高度可配置的。虽然数据表中明确定义了滤波器响应,但有时可能需要测量滤波器对给定信号的影响。AD7124-8 滤波器响应代码块(参见图 9)通过将正弦波应用于 ADC 输入并分析输出来测量滤波器响应。这种方法可以很容易地适用于测量其他波形——小波和模拟的物理事件。ADALM2000 连接到 AD7124-8 电路,如图 8 所示。
点击查看完整大小的图片
图 8. ADALM2000 波形发生器用于生成一系列正弦波频率,从而可以直接测量 AD7124-8 的滤波器响应。虽然脚本将正弦波幅度和偏移设置为安全水平,但 1 kΩ 电阻器可在发生故障时保护 AD7124-8。(ADALM2000 输出电压范围为 –5 V 至 +5 V,而 AD7124-8 的绝对最大限值为 –0.3 V 和 +3.6 V。)
AD7124-8 滤波器响应代码块(参见图 9)将设置 ADALM2000 的波形发生器以生成 10 Hz 的正弦波,捕获 1024 个数据点,计算 rms 值,然后将结果附加到列表中。send_sinewave 和 capture_data 是实用函数,它们分别向 ADALM2000 发送正弦波并从 AD7124 接收数据块。2 然后它将步进高达 120 Hz 的频率,然后绘制结果,如图 10 所示。
点击查看完整大小的图片
图 9. ADALM2000 的滤波器响应块程序。
点击查看完整大小的图片
图 10. AD7124 滤波器在 64 SPS、sinc4 模式下的响应测量显示了滤波器的通带、第一瓣和前两个零点。
虽然测量高衰减值需要更安静且失真更低的信号发生器,但在此设置中前几个主要波瓣的响应很明显。
ADC 滤波器建模
测量 ADC 的滤波器响应的能力是用于台架验证的实用工具。但是,为了完全模拟信号链,需要滤波器模型。许多转换器(包括 AD7124-8)并未明确提供这一点,但可以根据数据表中提供的信息逆向设计一个可行的模型。
请注意,以下仅为 AD7124-8 滤波器的模型;它不是位精确的表示。有关所有保证参数,请参阅AD7124-8 数据手册。
AD7124 的滤波器都具有由各种 sinc 函数组合而成的频率响应(频率响应与 (sin{f}/f)N 成正比)。这些过滤器相当容易构建,并且在已知空值时进行逆向工程。
图 11 显示了 AD7124-8 的 10 Hz 陷波滤波器。高阶 sinc3 和 sinc4 滤波器的各种组合也可用。
滤波器的最终脉冲(时域)形状如图 14 所示。滤波器系数(抽头)值针对零频率下的单位 (0 dB) 增益进行归一化。
点击查看完整大小的图片
图 11. AD7124-8 10 Hz 陷波滤波器具有 sinc1 幅度响应;滤波器的脉冲响应只是 100 ms 时间间隔内样本的未加权(矩形)平均值。
图 12 所示的同时 50 Hz/60 Hz 抑制滤波器是一个重要的例子。该滤波器旨在强烈抑制来自交流电源线的噪声,即 50 Hz(如欧洲)或 60 Hz(如美国)。
点击查看完整大小的图片
图 12. AD7124-8 50 Hz/60 Hz 抑制滤波器响应是 50 Hz sinc3 滤波器和 60 Hz sinc1 滤波器的组合。
高阶 sinc 滤波器可以通过卷积 sinc1 滤波器生成。例如,卷积两个 sinc1 滤波器(在时间上具有矩形脉冲响应)将产生三角形脉冲响应和相应的 sinc2 频率响应。AD7124 滤波器代码块(参见图 13)生成一个在 50 Hz 处具有零点的 sinc3 滤波器,然后添加一个在 60 Hz 处具有零点的第四个滤波器。
点击查看完整大小的图片
图 13. 50 Hz/60 Hz sinc 滤波器的 AD7124-8 代码示例。
滤波器的最终脉冲(时域)形状如图 14 所示。滤波器系数(抽头)值针对零频率下的单位 (0 dB) 增益进行归一化。
点击查看完整大小的图片
图 14. 反复卷积矩形脉冲响应产生三角形,然后是高斯式脉冲响应。
最后,可以使用 NumPy 的 freqz 函数计算频率响应,如图 16 所示。响应如图 15 所示。
点击查看完整大小的图片
图 15. 将 sinc3、50 Hz 陷波滤波器与 sinc1、60 Hz 滤波器进行卷积会产生一个复合响应,该响应强烈抑制 50 Hz 和 60 Hz。
点击查看完整大小的图片
图 16. 带有 sinc 60 Hz 滤波器的 sinc3 50 Hz 陷波滤波器的 AD7124-8 代码示例。
电阻是徒劳的:一个基本的传感器限制
所有传感器,无论多么完美,都有一些最大输入值(以及相应的最大输出,可能是电压、电流、电阻,甚至是刻度盘位置)和有限的本底噪声——在输出端“摆动”甚至存在如果输入完全静止。在某些时候,具有电输出的传感器将包括一个具有有限电阻(或更一般地,阻抗)的元件,由图 17 中的 R SENSOR表示。这代表了一个无法改进的基本噪声限制——该电阻将产生en(RMS) 伏噪声,至少:
其中:
e N (RMS) 是总噪声。
K 是玻尔兹曼常数 (1.38e-23 J/K)。
T 是电阻器的绝对温度 (Kelvin)。
F2 和 F1 是感兴趣频带的上限和下限。
将带宽归一化为 1 Hz 表示噪声密度,以 V/√Hz 为单位。
传感器的数据表可能会指定低输出阻抗(通常接近 0 Ω),但这很可能是一个缓冲级——它简化了与下游电路的接口,但不能消除信号链早期阻抗引起的噪声。
图 17. 传感器通常包含一个内部缓冲器,以简化与下游电路的连接。虽然输出阻抗较低(通常接近 0 Ω),但来自高阻抗传感元件的噪声与信号一起被缓冲。
还有许多其他传感器限制——机械的、化学的、光学的——每个都有自己的理论限制,其影响可以在以后建模和补偿。但噪音是唯一不能做到的缺陷。
实验室噪声源
经过校准的噪声发生器充当“世界上最差的传感器”,它可以模拟传感器的噪声,而无需实际感测任何东西。这种发生器允许直接测量信号链对噪声的响应。图 18 所示的电路使用 1 MΩ 电阻器作为 127 nV/√Hz(室温下)噪声源,具有“正常”的精度和带宽。虽然准确度还可以,但这种方法具有以下优点:
它基于第一原理,因此在某种意义上可以充当未经校准的标准。
它是真正随机的,没有重复的模式。
OP482是一款超低偏置电流放大器,具有相应的低电流噪声和足够低的电压噪声,1 MΩ 输入阻抗引起的噪声占主导地位。配置增益为 2121,输出噪声为 269 µV/√Hz。
点击查看完整大小的图片
图 18. 1 MΩ 电阻器用作可预测的噪声源,然后由低噪声运算放大器放大到可用水平。
使用 Scopy GUI 的频谱分析仪,使用 ADALM2000 USB 仪器验证噪声源,如图 19 所示。 [9]
点击查看完整大小的图片
图 19. 基于电阻的实验室噪声发生器的输出具有大约 10 kHz 的可用带宽。
在所示的分析仪设置下,ADALM2000 本底噪声为 40 µV/√Hz,远低于噪声源的 269 µV/√Hz。
虽然 Scopy 对于单一的视觉测量很有用,但可以使用 SciPy 周期图功能轻松复制该功能。原始数据是使用 libm2k[10] 和 Python 绑定从 ADALM2000 收集的,经过最低限度的处理以去除 DC 内容(否则会泄漏到低频箱中)并缩放到 nV/√Hz。这种方法如图 20 所示,可以应用于任何数据采集模块,只要采样率是固定的且已知的,并且数据可以格式化为电压矢量。
点击查看完整大小的图片
图 20. ADALM2000 的 Python 噪声源测量代码。
我们现在拥有一个已知的噪声源和一种测量该源的方法,这两者都可以用来验证信号链。
在 LTspice 中对信号链进行建模
LTspice是一款免费提供的通用模拟电路仿真器,可应用于信号链设计。它可以执行瞬态分析、频域分析(AC 扫描)和噪声分析,其结果可以使用 Python 导出并合并到混合信号模型中。
图 21 显示了模拟噪声发生器的噪声仿真,与实验结果非常吻合。使用与 OP482 具有相似特性的运算放大器进行仿真。
点击查看完整大小的图片
图 21. 实验室噪声源的 LTspice 仿真显示与测量电路大致相同的可用带宽。
图 22 的电路噪声对建模来说相当简单,因为它在某些带宽(感兴趣的信号所在的位置)内是恒定的,在该带宽之上它会以大约一阶低通响应滚降。这种技术派上用场的地方是对非平坦本底噪声进行建模,这可能是由于高阶模拟滤波,也可能是有源元件本身。典型的例子是LTC2057等自动调零放大器中经常存在的噪声山峰,如图 23 所示。
点击查看完整大小的图片
图 22. LTC2057 噪声密度在低频时是平坦的,峰值在 50 kHz(内部振荡器 100 kHz 频率的一半)。
在 Python 中导入 LTspice 噪声数据以进行频域分析是一个设置仿真命令的问题,以便仿真分析向量中的精确频率。在这种情况下,噪声仿真设置为最大频率为 2.048 MHz,分辨率为 62.5 Hz,对应于采样率为 4.096 MSPS 的第一奈奎斯特区。图 23 显示了 LTC2057 在 10 的同相增益、仿真输出和导出数据格式下的仿真。
点击查看完整大小的图片
图 23. LTspice 用于在 +10 的同相增益配置中模拟 LTC2057 的输出噪声。LTspice 提供了用于集成噪声的简单工具,但任何模拟结果都可以导出并导入 Python 以进行进一步分析。
为了确定给定噪声频带对信号的影响(信噪比),噪声在感兴趣的带宽上进行了平方根积分。在 LTspice 中,可以通过设置绘图限制来集成绘图参数,然后控制单击参数标签。整个 2.048 MHz 仿真的总噪声为 32 µV rms。在 Python 中实现此操作的函数如图 24 所示。
点击查看完整大小的图片
图 24. 平方根实现的 Python 代码。
读入导出的噪声数据并传递给integrate_psd 函数,总噪声为3.21951e-05,非常接近LTspice 的计算。
产生测试噪音
扩展纯模拟噪声发生器的功能,不仅能够产生平坦的噪声曲线,而且能够产生任意的噪声曲线——平坦的噪声带、粉红噪声或模拟某些放大器中的峰值的噪声山峰,这非常有用。从图 25 中的半频谱代码块生成的时间序列以所需的噪声频谱密度(可以手动生成,或从 LTspice 仿真中获取)和时间序列的采样率开始,然后生成时间序列可以发送到 DAC 的电压值。
点击查看完整大小的图片
图 25. 生成任意噪声曲线的 Python 代码。
可以通过 libm2k 脚本控制一个 ADALM2000,然后使用第二个 ADALM2000 和 Scopy GUI 中的频谱分析仪验证噪声分布来验证此功能。ADALM2000 代码片段的推送噪声时间序列(参见图 26)在 ADALM2000 W2 输出上生成四个 1 mV/√Hz 噪声频带(在 W1 上具有正弦波,用于双重检查功能)。
点击查看完整大小的图片
图 26. 使用 ADALM2000 验证任意噪声。
图 27 显示了由一个 ADALM2000 产生的四个 1 mV/√Hz 噪声频段。输入向量长 8192 个点,采样率为 75 kSPS,带宽为每点 9.1 Hz。每个频段为 512 点,或 4687 Hz 宽。~20 kHz 以上的滚降是 DAC 的 sinc 滚降。如果 DAC 能够提供更高的采样率,则可以通过插值滤波器对时间序列数据进行上采样和滤波。 [11]
点击查看完整大小的图片
图 27. Scopy 频谱分析仪用于验证任意噪声发生器。噪声带之间的深陷波暴露了分析仪的本底噪声,表明可以准确地生成任意噪声曲线。
该噪声发生器可与纯模拟发生器结合使用,以验证信号链的抑制特性。
建模和验证 ADC 噪声带宽
高于 f S /2 的外部噪声源和杂散音将折回(混叠)到 DC 至 f S /2 区域,并且转换器可能对远远超过 f S /2 的噪声敏感。以LTC2378-20 为例,它具有 1 MSPS 的采样率和 34 MHz 的 –3 dB 输入带宽。虽然在如此高的频率下性能可能不是最好的,但该转换器将数字化超过 68 个奈奎斯特噪声区域并将它们折叠回您的信号之上。这说明了抗混叠滤波器对于宽带 ADC 的重要性。用于精密应用的转换器通常是 sigma-delta(如 AD7124-8)或过采样 SAR 架构,其中输入带宽受设计限制。
考虑滤波器的等效噪声带宽 (ENBW) 通常很有用,包括 ADC 的内置滤波器。ENBW 是平坦通带“砖墙”滤波器的带宽,它允许通过与非平坦滤波器相同数量的噪声。一个常见的例子是一阶 RC 滤波器的 ENBW,即:
其中 f C是滤波器的截止频率。如果从“直流到日光”的宽带噪声同时应用于 1 kHz 一阶低通滤波器和 1.57 kHz 砖墙低通滤波器的输入,则输出端的总噪声功率将为相同的。
图 28 中的 ENBW 示例代码块接受滤波器幅度响应并返回有效噪声带宽。计算单极点滤波器的幅度响应并用于验证 ENBW = f C × π/2 关系。
点击查看完整大小的图片
图 28. 计算有效噪声带宽的 Python 代码示例。
该函数可用于计算任意滤波器响应的 ENBW,包括 AD7124 的内部滤波器。AD7124 sinc4 滤波器的频率响应,128 SPS 采样率可以通过类似于前面 50 Hz/60 Hz 抑制滤波器示例的方法计算。arb_anbw 函数返回大约 31 Hz 的 ENBW。
ADALM2000 噪声发生器可用于验证该结果。将测试噪声发生器设置为生成 1000 µV/√Hz 的频带应导致总噪声约为 5.69 mV rms,测量结果约为 5.1 mV rms 总噪声。ADC 输入信号的示波器捕获绘制在 ADC 输出数据旁边,如图 29 所示。注意测得的峰峰值噪声为 426 mV,而 ADC 峰峰值噪声约为 26 mV。虽然在实际的精密信号链中(希望)如此高的噪声水平是不现实的,但该练习表明,可以依靠 ADC 的内部滤波器作为信号链中的主要带宽限制元件,从而降低噪声。
点击查看完整大小的图片
图 29. 1 mV/√Hz 噪声带被驱动到 AD7124-8 输入。噪音的质量降低是显而易见的;ADC 输入处的 426 mV 峰间噪声导致 ADC 输出处的大约 25 mV 峰间噪声。考虑到 ADC 滤波器的 1 mV/√Hz 噪声密度和 31 Hz ENBW,5.1 mV rms 总输出噪声接近预测的 5.69 mV rms。
结论
噪声是任何信号链中的限制因素;一旦噪声污染了信号,信息就会丢失。在构建信号采集系统之前,必须了解应用需求,相应地选择组件,并测试原型电路。本教程提供了一系列可在设计和测试过程中使用的精确建模和测量传感器和信号链噪声的方法。
本教程中详细介绍的技术单独来说并不是什么新鲜事。然而,为了实现一个合适的系统,拥有一组基本的、易于实现的和低成本的技术来实现信号链建模和验证是很有价值的。尽管制造商继续提供性能更高的零件,但始终存在一定的限制,人们必须注意这一点。这些技术不仅可用于在构建混合模式信号链之前验证部件,还可用于识别现有信号链中的设计缺陷。
致谢
Jesper Steensgaard,他从 LTC2378-20 开始启用/推动了对信号链设计的思考范式转变。
Travis Collins,Pyadi-iio 的建筑师(在许多其他方面)。
Adrian Suciu,软件团队经理和 libm2k 贡献者。
参考
[1]“转换器连接教程。” Analog Devices Wiki,2021 年 1 月。
[2] ADI 教育工具库。泽诺多,2021 年 7 月。
[3] Pauli Virtanen、Ralf Gommers 等人。“ SciPy 1.0: Python中科学计算的基本算法 。” 自然方法,17(3),2020 年 2 月。
[4] 史蒂文·W·史密斯。科学家和工程师数字信号处理指南。加利福尼亚技术出版社,1999 年。
[5] 程曼。“ MT-229:量化噪声:方程的扩展推导, SNR = 6.02 N + 1.76。” 模拟设备公司,2012 年 8 月。
[6] 沃尔特·凯斯特。“ MT-001:从臭名昭著的公式中解开谜团,'SNR = 6.02N + 1.76dB,'以及为什么你应该关心。” 模拟设备公司,2009 年。
[7] Charles R. Harris、K. Jarrod Millman 等人。“使用 NumPy 进行数组编程。” 自然,585,2020 年 9 月。
[8] “ pyadi-iio:IIO 驱动程序的设备特定 Python 接口。” Analog Devices Wiki,2021 年 5 月。
[9]“窥视”。Analog Devices Wiki,2021 年 2 月。
[10]“什么是Libm2k?” Analog Devices Wiki,2021 年 10 月。
[11] 沃尔特·凯斯特。“ MT-017:过采样插值 DAC。” 模拟设备公司,2009 年。
归因
本文首次出现在 2021 年科学计算与 Python 会议的论文集中,标题为“使用 Python 进行混合模式信号链的分析和验证”。DOI:10.25080/majora-1b6fd038-001。
[注:所有数字和列表均由 Analog Devices 提供。]
审核编辑 黄昊宇
全部0条评论
快来发表一下你的评论吧 !