广告

简化嵌入式ADC的测试

2022-12-27 15:37:14 Steve Hageman 阅读:
几年前,我需要一个快速、低频而又失真极低的源来测试板载微控制器(MCU) ADC,看它是否具有数据手册中所说的有效位数(ENOB)和线性度。虽然可以构建分立式振荡器电路,但这种模拟方法很繁琐,绝不能实现快速设置。这让我开始思考专业音频分析仪如何实现它们的源。

几年前,我需要一个快速、低频而又失真极低的源来测试板载微控制器(MCU) ADC,看它是否具有数据手册中所说的有效位数(ENOB)和线性度。tAqednc

我知道Linear(现ADI)有失真度非常低的设计[1],但它有些复杂,并且对我的即时需求来说,这似乎有点过分了。因此,我基于Hein van den Heuvel[2]的电路构建了一个经典的三运算放大器状态可变振荡器,并采用一个小麦粒灯泡作为振幅稳定电路。tAqednc

经过一天摆弄电路中运算放大器各级的负载后,我设法将谐波失真产物降低到-95dBc水平以下,这足以满足我的即时需求。tAqednc

虽然可以构建分立式振荡器电路,但它很繁琐。这存在温度问题,例如振幅漂移、频率漂移、启动和稳定时间等。同样,我认为将来最好有一个具有多个2.5到±10V输出的快速设置振荡器,这样我就可以以16位精度快速测量任何ADC。tAqednc

模拟方法绝不能实现快速设置,这让我开始思考专业音频分析仪如何实现它们的源。我认为,它们必须要构建精密的分立式DDS,或者使用一种高分辨率I2S音频DAC。tAqednc

然后我浏览了TI应用笔记,了解了他们对超低失真测试振荡器的看法,果然,其中使用了他们的Burr-Brown I2S音频DAC之一,并在其后跟了一些高性能低通滤波器[3]tAqednc

我买了几个I2S DAC并将它们连接到我的一个MCU演示板上,大约一天后就开始让I2S运行,并发现有一些不错的信号从该设置中跑了出来。I2S的妙处在于它可以连接到处理器的DMA,从而使99%的数据传输对处理器透明。处理器所要做的就是每隔一段时间保持DMA管道充满。tAqednc

这只是一次学习经历,在经济上没有优势,因为TI的电路售价要低于300美元,但是没有已发布的API可用于从我们自己的测试方案中控制其解决方案。tAqednc

然后我想了下:“USB声卡适配器(dongle)怎么样?它们用起来一定很不错而且很便宜。”tAqednc

我通过快速搜索了解到,Creative Labs确实制造了一种成本非常低但性能很高的16/24位USB适配器,它的名称令人印象深刻,叫做“Creative Labs Sound Blaster Play! 3”。这款不到20美元的设备甚至具有24位/96kHz数据速率[4]。我相信Creative Labs不会制造垃圾,所以我买了一个试试。tAqednc

使用我的18位FFT分析仪进行的初步测试[5]表明,笔记本电脑不仅“听起来”更适合我的耳朵,而且性能确实达到了16位失真水平,并具有非常干净的本底噪声。tAqednc

这种方法确实能成为我的通用ADC测试台的“快速设置”解决方案,因为所有软件都可以在我的实验室PC上运行。现在我就能拥有一个在频率和振幅方面“可控”的源,并且它在我的PC上运行,这样我就可以拥有独立的应用,甚至可以构建API,以在以后需要时将它包含到自动测试套件中。tAqednc

很多工作就在此解决了,通过使用外部声卡,可以将精确的振幅和已知的质量在任何测试台之间转移,因为我的测试笔记本电脑内部声卡在输出振幅和真实音质上各处都不同。tAqednc

使用笔记本电脑作为测试控制器的另一个好处是,可以拔出电源适配器并使用电池运行,从而消除了很多地回路问题——这些问题在尝试快速移动并完成工作时总是会突然出现。tAqednc

进入BlasterAmp

现在所需的所有项目是Sound Blaster适配器的模拟接口板,以获得我的“通用”测试设置所需的输出。tAqednc

我测量了Sound Blaster到指定300Ω耳机负载的音频输出,在一些测试音调和全量程输出的情况下,我测量到一致的0.37V峰值,这与我所使用的PC或操作系统无关。tAqednc

1列出了常用的ADC输入范围。我想如果我涵盖了常见的ADC输入范围,则可以通过使用音量控制调整振幅来测量介于两者之间的任何内容,这最终有可能降低可实现的信噪比(SNR),但Sound Blaster的SNR对于我要测量的应用绰绰有余。tAqednc

tAqednc

表1:这些范围几乎涵盖了我在过去10年中所遇到的所有ADC输入。该表用作确定放大器在Sound Blaster适配器输出端所需增益和偏移量的基础。tAqednc

3.3V的峰值范围是个“怪胎”,但仍然出现在较低分辨率的基本设计中——无论如何其大多数都是10位或12位ADC,因此我决定对这些应用只使用音量控制和0-5V范围,这样信噪比损失就很小。tAqednc

然后我设计了所谓的“BlasterAmp”,它具有所需的增益和偏移,能够转换0.37V峰值,即Sound Blaster适配器的满量程输出,以匹配2tAqednc

tAqednc

表2:设计BlasterAmp是为了覆盖表1中的常见电压,它仅具有4个增益步长和3个偏移量设置。单极性范围需要使用3个偏移电压。tAqednc

关于单极性范围需要注意的一件事是:它们现在总是“轨到轨”的,而当我们说“轨到轨”时,几乎总是与“轨”有一定偏移量。这将对任何ADC/缓冲器测试造成严重破坏,因为如果“轨”不完全处于零或满刻度状态,则ADC就会削波,这就会导致严重失真,从而阻止进行任何有意义的测量。此外,有时ADC参考电压为2.048或4.096V,而不是2.5和5V。为了解决这些情况,我使用了数个25圈精密微调电位器,以便在需要时对增益和偏移量进行微调。微调电位器还支持Sound Blaster适配器、电阻容差和运算放大器偏移电压存在任何细微差异。tAqednc

1显示了所完成的BlasterAmp的一个通道。短接跳线用于支持根据需要更改偏移量和增益,以适应各种所需的输出范围。tAqednc

tAqednc

图1:立体声BlasterAmp的一个通道。增益和偏移电压范围可通过可移动跳线设置,然后借助25圈精密微调电位器进行微调。U101周围的电阻网络是一个来自Vishay的1kΩ匹配网络(OSOPTC1001AT0)。所有其他电阻器均为0.1%、0805尺寸,以最大限度地减少电阻器发热和随后的失真。C100和C101必须是薄膜或COG陶瓷类型以消除失真。tAqednc

对于放大器,我使用了久经考验的Burr-Brown OPA1611,这是一款超低失真音频运算放大器,它们的性能与数据手册相符,可以说非常出色。tAqednc

对于偏移参考电压,我使用了TI REF5050,这是一款5V精密参考电压。tAqednc

由于我期望将该电路在我的工作台上用于测试设置,我将其设计为由±15V电源轨供电,并使用了另一个久经考验的器件,即我在我工作台上保留的用于这种情况的HP6234A双线性电源。使用像HP6234A这样的线性电源非常有用,因为它具有低噪声、低IO电容设计,而且它不会像从开关电源那样到处喷出共模电流。如果我必须使用开关电源为设计供电,我会在电路中使用一些线性、低压降稳压器和强大的共模扼流圈,以尽我所能将开关噪声远离电路板。值得信赖的HP6234A消除了所有这些问题。tAqednc

我将最终的双通道BlasterAmp PCB放置在一个小型Hammond外壳中[6],我没有盖上盖子,因为这样可以轻松更换各种跳线和调整电位器(2)。tAqednc

tAqednc

图2:所完成的BlasterAmp。我将PCB安装在挤压外壳中以提供保护。来自声卡的音频是PCB右上角的黑色电缆。我的HP6234A线性台式电源通过PCB右中部的电线连接器供电。完整的设计已经提供,请参阅参考文献10。tAqednc

通用格言:硬件需要软件

使用Sound Blaster适配器无疑大大简化了设计并节省了开发时间,但我仍然需要一种方法来将高动态范围测试信号送入到Sound Blaster中进行播放。我尝试了十来个音频测试音软件解决方案,其中大部分都只有60dBc的失真级别或更低,这对于听力测试来说还不错,但对我的应用来说不太好,我需要将失真降低到16位级别。tAqednc

互联网上有几个音响爱好者网站提供了非常低失真的测试文件[7]。要想回放,就需要一个WAV或MP3文件播放器,并且它需要在循环时死区时间为零。我发现“foobar2000”这个程序虽然名字起得傻傻的但却是个很好的选择[8]。我最初在旅行时使用该程序在我的笔记本电脑上播放过白噪声以在尝试睡觉时淹没无关的声音,并且在循环播放白噪声文件时也不会听到有任何咔哒声或爆裂声,否则就会立即醒来。foobar2000程序非常适合BlasterAmp和睡眠。tAqednc

这些预制测试文件具有固定频率,但可以根据需要通过BlasterAmp微调电位器或PC的音量控制对振幅进行微调。tAqednc

至于能够以编程方式设置频率和音量,我找到了一个名为PyAudio的Python库[9],它支持我生成给定幅度的精确正弦波信号,然后能够直接从Python脚本播放它[10]。事实证明,这会产生非常低的失真信号,如3所示。tAqednc

tAqednc

图3:BlasterAmp在我的DMT9000 FFT分析仪上所测得的±10V范围的结果[5]。可以看到满量程失真产物处于低于满量程-96dBc的16位级别。tAqednc

然而,在生成任何测试音时必须小心。我们要么必须制作一个连续且足够长的文件来进行测试,要么必须连续循环。循环时,只需确保波形的起点和终点完全对齐,否则会出现不连续性,从而在循环点处增加失真。tAqednc

作为使用Sound Blaster适配器进行精确音调生成的最后一点注意事项,请务必关闭所正在播放声音生成的PC上的所有音频均衡器或控制程序,以确保不会出现不可预见的问题。tAqednc

下次

在下一篇文章中,我将展示使用BlasterAmp测量一些实际ADC和测试器件失真的技术。tAqednc

Python脚本的完整源代码和BlasterAmp的完整原理图可以在Github上找到[10]tAqednc

参考文献

[1] Jim Williams, Guy Hoover, “Fidelity Testing for A→D Converters”, Linear Technology AN132:https://www.analog.com/media/en/technical-documentation/application-notes/an132f.pdfhttps://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/dc1858a.htmltAqednc

[2] Hein van den Heuvel, “Reference Sine Wave Generator”, Elektor Post, Project No. 53 – https://www.elektormagazine.com/index.php/files/attachment/326tAqednc

[3] Precision Signal Injector (PSI) Evaluation Module for Testing ADC Performance, Texas Instruments – https://www.ti.com/tool/PSIEVMtAqednc

[4]  Creative Labs Sound Blaster Play! 3 – https://us.creative.com/p/sound-blaster/sound-blaster-play-3tAqednc

[5] A future design article will detail my DMT9000 18 Bit FFT Analyzer Instrument.tAqednc

[6] Hammond Manufacturing, Extruded Enclosures – https://www.hammfg.com/electronics/small-case/extruded/1455tAqednc

[7] These test tones are of good quality:https://www.mediacollege.com/audio/tone/download/https://www.audiocheck.net/testtones_thd.phptAqednc

[8] “foobar2000” looping audio playback program – https://www.foobar2000.org/downloadtAqednc

[9] The PyAudio installer is broken as of May 2022, a fixed version can be downloaded from – https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudiotAqednc

[10] The complete BlasterAmp design and the Python Scripts can be found at – https://github.com/Hagtronics/BlasterAmptAqednc

——Steve Hageman从五年级开始就被证实是位“模拟狂(Analog-Crazy)”。他有幸设计了运算放大器、开关电源、千兆赫兹采样示波器、锁定放大器、无线电接收机、50GHz射频电路和数字无线产品测试设备。Steve知道,所有的现代设计都不能用R、L和C来完成,所以他涉足了PC和嵌入式系统的编程,从而就足以完成这项工作。tAqednc

(原文刊登于EDN美国版,参考链接:Simplify testing of embedded analog-to-digital converters,由Franklin Zhao编译。)tAqednc

本文为《电子技术设计》2023年1月刊杂志文章,版权所有,禁止转载。免费杂志订阅申请点击这里tAqednc

责编:Franklin
本文为电子技术设计原创文章,未经授权禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • 新思科技:数字赋能,安全先行 数字创新离不开软件驱动;软件的可信度很大程度取决于软件安全成熟度。中国正在把发展经济的着力点放在实体经济上,加快建设网络强国、数字中国。同时,数字经济与各种产业叠加,赋予数字化力量,可以提升实体经济的产业优势,促进产业迈向高质量。对此,新思科技强调,数字赋能,安全先行。把安全贯穿在数字经济发展的全过程,才能行稳致远。软件安全不会一蹴而就,而是一个旅程,需要借鉴“他山之石”,取长补短。
  • Qorvo® 推出通过基于 UWB 的智能手机高精度安全室 该室内导航系统可为电子设备提供高精度网络,以在 GPS 和其他卫星技术缺乏精度或完全失效的情况下,例如多层建筑、停车库和地下区域,对人或物体进行定位。
  • 谷歌Pixel手机Titan M2安全芯片的工作原理是什么? Titan M2安全芯片已成为Pixel 7 系列和Pixel 6a等谷歌手机的卖点。在这篇文章中,让我们仔细看看 Titan M2 在 Pixel 设备中的作用、它的工作原理。
  • 映驰科技加入BlackBerry QNX渠道合作伙伴项目 映驰科技正式宣布加入BlackBerry QNX渠道合作伙伴项目,将基于BlackBerry® QNX®软件为汽车行业内的广大客户提供相关嵌入式软件与解决方案。
  • OPPO手机未来可手摇发电?发电装置装置专利获授权 手机的续航能力一直是用户以及手机厂商最关注的性能之一,目前的大多数智能手机的续航能力较弱,大多数智能手机的续航时间基本是一天,每天都需要进行充电,用户期待手机拥有更好的续航表现。
  • FORESEE SPI NAND Flash 中国大陆首发512Mb SPI NAND Flash; WSON 封装尺寸较小,节约PCB空间; 集成SPI控制器,通用SPI接口; 内部集成on die ECC。
  • 瑞萨电子将与Fixstars联合开发工具套件用于优化R-Car 通过快速开发优化的网络模型和高速仿真来缩短开发周期
  • 凌华科技推出整合影像传感器NVIDIA Jetson Nano人工 轻松快速完成人工智能视觉项目原型设计
  • 思特威重磅推出首颗线阵CMOS图像传感器,赋能工业线阵相 思特威重磅推出首颗LA(Linear)线阵系列4K分辨率高速工业CMOS图像传感器——SC430LA。
  • 电机控制解决方案 SCT24XX系列同步降压变换器具有效率高、静态电流超低、FSS(频率扩频)改善EMI、性价比高等特点。
  • 麒麟、统信、欧拉等国产操作系统技术不断提升,谁能成为 服务器信创操作系统市场规模到2027年有望超百亿,PC端市场则有望达到近70亿元,整体市场有望超200亿元。长期以来,操作系统市场领域内国产力量相对薄弱,数据显示,桌面操作系统领域Windows、macOS 2021年在国内仍占据超过90%市场份额;服务器操作系统领域2021年Linux服务器操作系统市场占有率达到 79.1%,行业开源服务器操作系统市场中CentOS与RHEL占份额较高。但随着国产操作系统的技术提升和生态建设推进,国产操作系统所在的Linux市场占有率不断提升。
  • 鸿蒙系统智慧灯杆亮相深圳,通过NFC一触即可入网 在深圳在福田区市花路上,路边的灯杆已变身多功能智慧杆搭载,它上面搭载了5G基站等设备,如果路边出现违停、行人聚集、行人乱抛垃圾都能通过语音进行提醒,还可以完成气温、噪声等检测。华为智慧杆站方案采用鸿蒙系统,只需通过 NFC 功能一触即可入网。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了