当前的嵌入式设计工程师面临着系统复杂程度日益提高的挑战。典型的嵌入式设计可能会包括各种模拟信号、高速和低速串行数字通信、微处理器总线等等。I2C和SPI等串行协议通常用于芯片间通信,但不能在所有应用中代替并行总线。微处理器、FPGA、模数转换器(ADC)和数模转换器(DAC)等集成电路给当前嵌入式设计带来了独特的测量挑战。工程师可能需要解码两个IC之间的SPI总线,同时在同一块系统电路板上观察ADC的输入和输出。图1 是混合信号系统实例。
对配备4 通道示波器的工程师来说,调试图1所示的硬件是一件困难而又让人畏缩的任务。许多工程师用惯了示波器,同时为了节约时间,可能会选择购买三四台示波器,以便一次探测多个信号。逻辑分析仪可以探测多个数字信号,但调试任务非常复杂,使用逻辑分析仪所带来的设置和学习过程有些不值得。幸运的是,对面临这一任务的工程师,泰克提供了一种新型仪器,称为混合信号示波器(MSO),有效地满足了他们的需求。泰克MSO4000系列混合信号示波器把16 通道逻辑分析仪的基本功能与泰克4通道示波器倍受信任的性能结合在一起。本应用指南介绍了混合信号嵌入式设计的调试,演示了泰克MSO4000提供的业内领先的性能。
图1. 简化的采集/ 仪器系统。
使用MSO4000 同时调试多个串行协议
嵌入式设计工程师通常使用串行协议,如I2C和SPI,以简化电路板上系统模块之间的通信。这些串行协议可以降低布线的复杂性,但传统示波器一直很难调试其实现方案。设计人员一般会被迫手动解码采集的串行数据,或从示波器导出数据,以进行后期处理和解码。使用示波器解码串行数据可以为嵌入式设计工程师节约无数个小时的调试时间,允许工程师实时查看硬件和软件的影响。
尽管DPO4000系列示波器可以使用最多四条通道探测串行数据,但许多常用串行协议要求三条或三条以上的线。工程师通常需要同时解码和显示多条串行总线,观测其时间相关性。泰克MSO4000系列把DPO4000 系列的串行触发和解码功能与16条新增数字通道结合在一起。除I2C、SPI 和CAN 外,MSO4000还支持触发和解码RS-232和并行总线。通过MSO4000,工程师可以同时探测和解码多条串行总线及自定义并行总线。下面的实例使用MSO4000,调试图1所示的嵌入式设计中复杂的多芯片通信错误。
在系统最初调试过程中(如图1 所示),系统偶尔遇到电路板上状态LED指示灯表明发生故障的情况。状态LED指示灯报告的错误不明确,导致系统工程师不能确定问题是由硬件导致的还是由软件导致的。以前,类似错误一直源于模拟复用器输入上的信号质量差,但工程师已经成功更换了导致信号保真度问题的硬件。由于系统工程师怀疑错误可能源于复用器输入之外的其它来源,他决定探测到复用器的模拟输入及多条数字总线,以全面查看系统状况。MSO4000 为调试提供了4 条模拟通道和16 条数字通道,它连接到图2 中标为1-4 的信号上。
图2. 带有探测点的采集子系统。
图3. MSO4000显示了I2C、SPI和并行总线及CH1模拟信号。
图3 显示了MSO4000 同时探测SPI 总线(1)、I2C 总线(2)、3位并行总线(3)和模拟输入(4)的屏幕快照。由于错误可以被隔离到某个子例程,因此MSO4000配置成单次采集,触发特定的I2C活动。把记录长度设置成1M点保证了可以准确地捕获I2C总线上事件周围的所有有用信息。工程师运行子例程,迅速查看MSO4000,了解系统中发生的情况。CH1上显示的MUX 输入上清楚的模拟波形确认了工程师的疑问,表明硬件问题已经得到解决,错误发生在其它地方。MSO4000触发和解码从微处理中写入的I2C 数据。工程师注意到SPI上的活动及在传输I2C数据后很快显示了标有D1和D2的信号。工程师怀疑这些总线上的活动,因为他认为执行的功能主要涉及LCD控制器。由于MSO4000已经解码I2C数据值,因此工程师可以看到微处理器已经把I2C数据写入地址0x77。地址0x77是FPGA 的地址,但工程师认为子例程把数据写入地址0x76,这是LCD控制器的地址。
图3. MSO4000显示了I2C、SPI和并行总线及CH1模拟信号。
图4 显示了同一采集,其中使用Wave Inspector放大SPI 和并行总线的细节。SPI 数据在屏幕上解码成从主设备(FPGA)到从设备(MUX)的写入,数据值为0x15。这一SPI 命令指示LWTYMUX 改变信号路径使用的输入。输入信号中这种意想不到的变化导致FPGA向并行总线上的状态LED指示灯发送一个错误代码。在图4中也可以观察到这些并行总线的错误代码和解码。嵌入式设计工程师可以迅速确定是软件漏洞导致了系统问题,因为MSO4000能够同时查看和解码所有相关信号。软件编程人员错误地从微控制器到FPGA 写入I2C 数据,而分组的预计目标是LCD 控制器。
图4. Wave Inspector 用来放大和显示分组细节。
下一代数字波形显示帮您揭示问题 在改动系统软件,校正上一节中介绍的地址漏洞后,嵌入式设计工程师继续测试更多的系统功能。在进行测试时,他注意到状态LED指示灯偶尔指明错误。与上一节中描述的错误不同,工程师不确定怎样重建看到的错误。错误似乎具有随机特点,不能隔离到系统的某个功能或子例程。
嵌入式设计工程师对错误的随机特点感到很迷惑,不确定从哪儿入手查找来源。查找错误来源的一个选项是使用示波器随机探测系统,以期捕获随机事件。尽管工程师过去一直使用这种方法,但他知道,连接到所有相关信号、正确配置的MSO4000可以用少得多的时间找到错误。上一节中大多数探测点仍连接到MSO4000上。CH1 探头移动到活动的MUX 输入上,这是来自传感器3 的数字信号。除这4个探测点外,工程师使用一条数字通道探测MUX 输出。
图5. MUX_OUT 上的白色边沿表明提供了更详细的信息。
FPGA 通过3 位并行总线传送值0x7,表明已经发生错误。为隔离问题,MSO4000配置成捕获单次采集,它把触发事件设置成并行总线值0x7。图5 显示了采集结果。在这种情况下,并行总线解码和触发节约了时间,减少了混淆,因为可以简便地隔离错误条件。这一采集过程中使用的1M记录长度允许工程师观察触发事件前和触发事件后信号的关键细节。乍一看,图5 所示的信号似乎行为正常,但系统工程师很快确定MUX_OUT信号上出现了独特的两个边沿转换。图5所示的MUX_OUT信号上的白色转换向用户表明这些信号部分存在着更多的信息。MSO4000的多边沿检测功能突出显示了波形区域,通过缩放可以揭示频率较高的数字脉冲。在使用Wave Inspector放大波形细节时,图6 揭示了第一个白色转换背后的细节。图5中画出的白色转换的信号部分实际上是MUX_OUT信号上的一个毛刺。
图6. Wave Inspector 揭示了MUX_OUT 信号上的毛刺。
图6显示了MSO4000中模拟通道和数字通道之间的时间相关性。CH1(SENSOR_3)上显示了到MUX的输入,数字通道D14(MUX_OUT)上则可以观察到MUX输出。工程师注意到,尽管MUX 输出有一个毛刺,但到MUX的输入似乎没有毛刺。在使用数字通道识别毛刺后,工程师决定把CH2连接到MUX输出上,更仔细地进行考察。图7显示了采集结果,其中MSO4000 仍配置成触发并行总线值0x7。图7 关闭了SPI 和I2C总线的波形,把重点放在相关的主要信号上。在MUX 输入和输出上使用模拟探头,发现输出上存在的毛刺在输入信号上并不存在。图7显示,MUX_OUT信号上的毛刺出现了很短的时间,然后FPGA发送错误代码。这两个信号之间的时间关系表明,毛刺可能是工程师看到的问题。工程师使用同一配置重复采集几次,看到每次的行为都与图7类似。
图7. CH2 显示MUX_OUT 的更多细节。
在分析MSO4000的屏幕快照后,嵌入式设计工程师怀疑串扰可能是MUX_OUT信号上的毛刺来源。在检查图5 中监测的所有信号后,没有任何信号是串扰来源。在更详细地检查电路板布局时,工程师找到印刷电路板(PCB)上MUX_OUT轨迹旁边有一个通路。工程师使用CH1探测PCB上的通路,等待并行总线的另一个触发。得到的屏幕快照如图8所示。图8 显示,CH1 上捕获的信号从低到高转换在时间上与MUX_OUT信号的正毛刺直接相关。相应地,从高到低转换直接与MUX_OUT信号的负毛刺直接相关。
在用一段时间在电路板上对干扰信号重选路由后,工程师把MSO4000 配置成触发CH1。图9显示MSO4000触发CH1转换,但在MUX_OUT信号上没有显示毛刺。由于MUX_OUT信号不存在毛刺,因此并行总线没有生成错误条件。在改动电路板之后,串扰消失了,允许嵌入式设计工程师完成系统评估。
图8. CH1 显示了MUX_OUT 信号中的串扰来源。
图9. 在改动PCB 后,串扰消失了。
小结
如本应用指南所示,MSO4000 为开发和调试嵌入式设计的工程师提供了一个异常强大的工具。MSO4000 把16条时间相关的数字通道与泰克4通道示波器倍受信任的性能和直观的界面结合在一起。工程师现在可以使用MSO4000,而不用搜索多台示波器或学习怎样操作逻辑分析仪。MSO4000能够同时触发和解码并行总线和串行标准,如I2C、SPI、CAN 和RS-232,对评估当前嵌入式设计中硬件和软件复杂交互的工程师提供了宝贵的工具。