从传媒室中的视频游戏控制台到通信网络中的复杂交换单元,当前各种数字系统都日益依赖串行总线技术完成自己的工作。毫不奇怪的是,已经出现了一系列专用串行总线。串行ATA处理芯片组与磁盘驱动器之间的通信。HDMI管理着从数字影音来源传送到显示设备的数据。PCI Express (PCIe)是为连接PC环境中的外围设备设计的,现在正广泛用于其它专用接口不能满足的各种应用中。
您会经常发现所有这些总线及多种并行总线共存在一个电子系统中。这种发展趋势加强了对跨总线调试解决方案的需求,这些解决方案应提供简单的整合方式,一次查看多条不同总线之间的逻辑关系。市场上提供了各种各样的解决方案,其中一种方法是结合使用特定标准协议分析仪及逻辑分析仪,前者负责串行采集,后者捕获可能与手边的调试问题有关的并行总线数据。在这种方法中,用户并不能在一个整合平台中执行跨总线分析。通过使用带有总线支持套件的逻辑分析仪,套件中包括一个外部接口,以把串行数据转换成逻辑分析仪使用的并行数据,可以在一个整合平台中提供跨总线分析功能。
但是,越来越多的设计人员正转向同时把串行采集模块和并行采集模块集成到逻辑分析仪主机中的解决方案。通过这种解决方案,设计人员可以在一个系统内部整合并行采集模块和串行采集模块。通过增加这种串行功能,这些仪器可以在同一个逻辑分析仪屏幕上,捕获、交叉触发和显示时间相关的并行数据和串行数据及来自示波器的模拟波形。
这种功能旨在简化数字调试工作。通过结合使用PCIe串行模块和并行模块,可以使用一个逻辑分析仪系统执行跨总线分析。
数字解决方案通常从模拟调试入手
PCIe串行链路采用既定的底层结构。带有SERDES (串行器-解串器)的PCIe 发射机通常作为FPGA内部的嵌入式单元,把8b/10b编码信息发送到系统中其它地方的接收机。PCI Express基本规范中明确规定了传输阻抗、位速率和时钟特点,允许不同制造商的PCIe元件实现互通操作。
PCIe链路问题既可能源自数字元件,也可能源自模拟元件。PCIe链路的错误(如
配有并行模块和串行模块、并能够导入模拟波形的逻辑分析仪为跨总线分析提供了完善的平台。图1显示了来自PCIe链路的数字波形及来自链路上一条PCIe通道的模拟波形。光标位置标出了PCIe链路上开始发生错误的位置。在本例中,在链路上开始发生
模拟波形描述了上方数字波形显示画面中表示的单路PCIe链路。两个波形在时间上相关。在理论上,可以手动解码实际二进制波形数据,来确认这一点。通过查看光标附近的模拟波形,可以明显看出,错误不是由欠幅脉冲或毛刺之类的模拟域问题导致的。由于两个视图在时间上精确相关,设计人员可以确定,链路上的错误并非源自底层模拟问题。但是,通过使用抖动分析软件测量通道上的抖动,设计人员可能会选择进一步验证抖动不是问题。如果有这样的问题,下一个调试步骤将依靠逻辑分析仪交叉触发示波器,来追踪根本原因。但图1中的结果强烈暗示基于数字的问题来自定时问题或其它数字冲突。逻辑分析仪很适合完成这一工作。
调试端口的并行数据提供了不同的串行链路活动视图
设计人员通常会为PCIe芯片内置“调试端口”。这个并行输出提供实时数据,概括PCIe 设备的内部状态。通过发射机和接收机上的调试端口,开发人员可以监测链路的运行状况,把许多类型的问题范围缩小到链路的发送一侧或接收一侧。PCIe串行接收机内部可能使用的简单状态机将包括Idle、Recovery、Transmit和Overflow等交互。合法的状态跳变有从Transmit到Idle、从Transmit到Overflow或Idle、从Overflow到Recovery及从Recovery到Idle。
PCIe串行链路的测试设置将包括发射机和接收机调试端口。假设这是为定位串行链路上出现的混乱数据而设计的调试例程,那么调试端口将连接到一个并行采集模块上,PCIe链路将连接到逻辑分析仪的一个串行模块上。
图2是逻辑分析仪采集的屏幕图。这个视图增加了从接收机的调试端口中捕获的并行数据流。新的逻辑分析仪波形信息包括状态机图(底部波形)中所示的十六进制值。更仔细地看一下红色光标线与其相交的点上的两个波形。在这里,链路进入Overflow (001)状态,出现了问题。该例程直接从Idle跳到Overflow,如果状态机正确循环经过各条指令,那么这是不可能的。由于在同一台逻辑分析仪主机内部运行的多个紧密集成的串行和并行采集模块,图2中的三个波形信息在时间上相关。在某些情况下,串行总线跳变可能会由于时延滞后于调试端口输出,时延是指在状态改变后串行缓冲器刷新内容所需的时间。在这些情况下,跨总线视图中看到的定时差将准确体现这一时延。
在图2中,串行波形的黄色部分与状态机曲线上的001状态一致。串行波形的蓝色部分定时信息与调试端口上的E81 Idle状态一致。链路运行并通信,但没有遵循预计例程。由于串行数据错误与调试端口上的Overflow状态一致,同时由于串行总线由SERDES驱动,因此可以合理地假设问题与定时有关,源自SERDES内部。这时,可能有多种潜在的调试策略,这些策略受到结构因素或其它调试结果的影响。
最常见的情况是,在FPGA中采用这里讨论的串行链路功能。FPGA设计成变换为编程人员定义的功能单元。这种“变换”过程称为合成,因为它使用内部选通合成所需的功能。在知道这一点后,机敏的设计人员会先复核FPGA合成结果,确保正确实现所有状态机跳变的定时,调试错误。
如果这没有揭示问题根源,那么第二个实用步骤是把其它信号路由到调试连接器上,追踪设备的行为。例如,在评估图2所示的Current State数据后,FPGA可以被重新编程,为调试端口提供“Next State”数据。这可以揭示Current State中没有看到的问题,当然除此之外,还可以考察更多的状态。
一次监测三条总线,追踪错误
要求跨总线调试功能的实例之一是调试PC主板。这是一种复杂完善的电子设计,各种高速串行总线和并行总线在IC元器件之间、在板载子系统之间及在外设和存储介质之间传送信号。任何总线上的问题都会表现为在完全不同的总线上发生错误。
在最简单的形式下,逻辑分析仪必须触发在一条总线上发生的错误,同时查看不同子系统或系统中的错误来源及其在第三条总线上的结果。在主板开发过程中,在电气上没有相连的总线之间的交互和相关性可以在很大程度上揭示新兴产品的稳定性。
看一下下面的实例:主板原型设计完毕,在设计验证过程中,它在例行功能试验中频频遇到问题。在最坏的情况下,设备被冻结,必须重新引导。在其它情况下,设备似乎正常运行,但显示混乱,不能理解。为追踪问题,主板上的处理器、
我们创建了一项测试,其中包括一系列READ和WRITE操作及其它操作。测试过程如下:
– 首先,CPU发出一条WRITE命令,把数据13FF (这一讨论中的所有值均为十六进制)发送到
– 然后,显卡向同一个地址发出一条READ指令。这条命令通过PCIe总线,经芯片组传送到
– 最后,CPU发出第二条WRITE命令,把新数据发送到
但结果却是13EF。PCIe图形接口操作不符合预期,发生了错误。是什么导致这个问题呢?
实践证明,并发监测事务涉及的全部三条总线,可以快速简便地追踪问题。PCIe、
看一下PCIe总线的事务(采用解串形式,由PCIe采集模块提供,如图3所示),可以明显看出PCIe显卡实际上接收了不正确的13EF数据字。它相应地报告了有问题的数据。显卡和PCIe总线都不是问题的根源。
下一步是查看
这三条总线似乎都没有错。数据被正确发送,到达CPU命令的所需存储器位置。还有一个可能是某类定时冲突。潜在的怀疑对象是READ/WRITE定时。但前面的步骤已经确定,CPU在预计的时间发出了WRITE。
在怀疑定时问题和同步问题时,逻辑分析仪从三条总线中查看相关曲线的能力可以节约大量的时间。看一下存储器总线,可以发现READ位于第二个WRITE周期后面,而不是前面,如图4所示。PCIe显卡收到的存储数据要比预计操作晚了一个操作。这个定时采集中画圈的数字对应下面几个步骤:
1. Row打开
2和3. 第一个Writes
4和5. 第二个Writes
6. Read (应该发生在第3步和第4步之间)
各自总线上READ、WRITE和数据值的时间相关视图揭示了典型的问题:设计成“业务控制器”的芯片组没有为显卡的READ请求提供正确定时。READ未能象预计的那样在第一个CPU WRITE周期后访问存储器。芯片组是这个问题的根源。
总结
追踪系统问题通常涉及大量的工作,而不仅仅是追踪毛刺根源,找到某个逻辑单元。一条总线上的错误可能有自己的特定来源,并影响系统中的多条总线。因此,全面进行跨总线分析成为必不可少的调试方法。随着把时间相关的串行事件、并行事件、甚至模拟事件放到一个逻辑分析仪屏幕上的集成式工具的出现,设计人员获得了强大的新型调试工具。跨总线分析可望同时查看整个系统中的交互,不仅可以加快追踪错误的速度,还可以加快追踪其根本原因的速度。
Sarah Boen现任泰克逻辑分析仪产品线串行应用产品市场专员。她在泰克公司工作了9年时间,先后担任逻辑分析仪产品市场经理和产品规划师、方案经理和软件设计工程师等职位。她从波特兰大学毕业,获得MBA和BSCS学位。


