`
本文节选自特权同学的图书《FPGA设计实战演练(逻辑篇)》(特权同学版权所有)
FPGA的板级调试方法有很多,借助于常规的示波器和逻辑分析仪的调试方法是最典型的手段。如图10.1所示,基于传统的台式示波器或逻辑分析仪进行板级调试有着诸多的不便,相对于设计
威廉希尔官方网站
深藏在芯片内部的FPGA设计来说有着很大的局限性,简单的列举如下。(特权同学,版权所有)
l 台式机器价格昂贵,设备成本高。(特权同学,版权所有)
l 只能访问到FPGA的I/O引脚信号,对内部信号只能通过引出到I/O引脚的方式进行观察,并且此方式只有个别信号可行,大量内部信号就无能为力了。(特权同学,版权所有)
l PCB的layout设计必须预留足够的空间用于外部探针对被测试信号的连接,浪费板级空间且降低了威廉希尔官方网站
可靠性,同时也会潜在的增加成本。(特权同学,版权所有) l 测试信号较多,调试过程极其繁琐并容易犯错。(特权同学,版权所有)
l 灵活性差,只能观察设计之初就预留了探针接口的一些信号。(特权同学,版权所有)
图10.1 基于传统逻辑分析仪的板级调试
当然了,这些局限性在大多数产品的板级调试中都存在,尤其是在芯片集成度越来越高的当下。而FPGA器件由于其灵活的可编程特性,也使得它具有了更大独特的调试手段。在FPGA器件支持并且剩余逻辑资源足够的情况下,设计者往往习惯于使用开发软件提供的在线逻辑分析仪进行调试,如ISE的Chipscole和QuartusII的SignalTappII,它们的功能都很强大,并且非常的简单实用。它们相较于传统的外置仪器,不仅大大降低了调试门槛和成本,而且由于其内嵌于被调试FPGA器件内部的特性,使得其可调试性和灵活性上也更胜一筹,如它可以访问到FPGA内部的一些中间过程信号。除此以外,还有一些其它的手段在不同的应用背景下都有助于加速板级调试。(特权同学,版权所有)
下面列举Quartus II工具所支持的五种非常实用的在线调试方法。(特权同学,版权所有)
l SignalProbe,即信号探针,这种在线调试方式不影响原有的设计功能和布局布线,只是通过增加额外布线将需要观察调试的信号连接到预先保留或者暂时不使用的I/O接口上。该方式相应得到的信号电平会随布线有一定的延时,不适合于高速、大容量信号的观察调试,也不适合做板级的时序分析。它的优势在于不影响原有设计,额外资源消耗几乎为零,调试中也不需要保持连接JTAG等其他线缆,能够最小化编译或重编译的时间。(特权同学,版权所有)
l SignalTap II Embedded Logic Analyzer,即SignalTap II在线逻辑分析仪,它在很大程度上可以替代昂贵的传统台式逻辑分析仪,为开发节约成本;同时也为调试者省去了原本繁琐的连线工作,而有些板级连接的外部设备很难观察到的信号都能够被在线逻辑分析仪轻松的捕获到。如果对设计进行模块的区域约束,也能够最小化使用在线逻辑分析仪对设计带来的影响。在线逻辑分析仪的采样存储深度和宽度都在一定程度上受制于FPGA器件资源的大小。使用该方式必须通过JTAG接口,它的采样频率可以达到200MHz(若器件支持)以上,而不用像外部调试设备一样担心信号完整性问题。(特权同学,版权所有)
l Logic Analyzer Interface,即逻辑分析仪接口。这里的逻辑分析仪接口是针对于外部逻辑分析仪的。调试者可以设置FPGA器件内部多个信号映射到一个预先保留或者暂时不使用的I/O接口上,从而通过较少的I/O接口就能够观察到FPGA内部的多组信号。(特权同学,版权所有)
l In-System Memory Content Editor,即在线存储内容编辑,它是针对设计中例化的内嵌存储器内容或常量的调试。可以通过这种方式在线重写或者读出工程中的内嵌存储器内容或常量。对于某些应用可以通过在线更改存储器内容后观察响应来验证设计,也可以在不同激励下在线读取当前存储内容来验证设计。总之,这种方式对存储器的验证是很有帮助的。(特权同学,版权所有)
l In-System Sources and Probes Editor,这种方式是通过例化一个定制的寄存器链到FPGA器件内部。这些寄存器链通过JTAG接口与Quartus II软件通信,它又能够驱动FPGA器件内部的某些输入节点信号,采样某些输出节点信号。这就使得调试者不用借助外部设备就能够给FPGA添加激励并观察响应。(特权同学,版权所有) 以上所提的这些在线调试方式大都是通过FPGA器件引出的JTAG接口,同时使用了一些FPGA片内固有的逻辑、存储器或布线资源就能够实现的。这些调试功能通常也只需要随着用户设计所生产的配置文件一同下载到目标FPGA器件中运行。相比于复杂的传统台式仪器,如图10.2所示,基于FPGA的在线调试仅需一条JTAG线缆连接FPGA和PC机,非常简单清爽,调试起来更是得心应手。(特权同学,版权所有)
图10.2 基于FPGA在线调试方式的板级连接
而在FPGA内部,则相应的有VJI(Virtual JTAG Interface,即虚拟JTAG接口)和LAI(LogicAnalyzer Interface,即逻辑分析仪接口)逻辑来与FPGA的设计逻辑相连接并进行数据交互。VJI和LAI其实就是FPGA用自身内部的逻辑和存储器实现了原本应该在复杂的台式仪器中实现的信号实时采集、存储以及传输功能,人机交互的波形显示和回放等功能则由深谙此道的PC机来做,正可谓物尽其用。(特权同学,版权所有)
图10.3 FPGA在线调试功能框图
至于我们所提到的这些在线调试手段,可以根据不同的应用和设计进行选择。因为不同的设计往往会有不同的约束和需求,例如可以根据闲置不使用引脚的数量、逻辑和存储器资源剩余量大小等进行不同的在线调试方式选择。(特权同学,版权所有)
SignalProbe、Logic Analyzer Interface和SignalTap II Embedded Logic Analyzer三种方式的采样或调试速率主要取决于设计本身的最大时钟频率,它们可以最大限度的对所有FPGA内部的信号节点进行访问。在器件剩余的逻辑和存储器资源充足的情况下,使用SignalTapII Embedded Logic Analyzer进行在线系统调试能够达到最好的板级验证和调试效果。当然了,在器件的逻辑和存储器资源相对短缺的情况下,SignalProbe和Logic Analyzer Interface可以帮助将FPGA器件内部的信号引出到外部的引脚上,同样便于使用外部的调试设备进行观察。(特权同学,版权所有)
`