原创 虚拟JTAG工具在FPGA调试中的应用(待续)

2006-10-19 18:30 8557 9 15 分类: FPGA/CPLD

    最近学习了Altera的Virtual JTAG工具的使用。下面是我的使用心得。 riple


 


    Altera在Quartus II 6.0中加入了一个sld_virtual_jtag 参数化宏单元模块,并提供了相应的Tcl程序包。有了这套工具,使用sld_virtual_jtag 和相应的Tcl命令,我们就可以构建自己的虚拟JTAG链路,并进行自定义的JTAG调试了。 riple


一、 相关文件 riple


    后面的链接是Quartus帮助文件中的内容,前两个是我从Help里拷出来用Word保存的html文件,由于里面的一些链接指向本地文件,会被当作危险代码,不理就是了,不是病毒。 riple



  1.     sld_virtual_jtag 的说明:rar。只给出了VHDL的例化方式,对于各个选项的配置给了说明。  riple
  2.     ::quartus::jtag Tcl命令包的说明:rar。每个命令都给了使用的例子,拷到一个空Tcl文件中,保存后用Quartus的Tcl scripts工具运行即可。
  3.   Altera提供的用户指南:太大了传不上来,给个链接,自己下吧。里面有JTAG协议的讲解和两个示例。 riple

二、 Virtual JTAG要点解析 riple


    澄清一个概念:所谓虚拟JTAG,是Altera用PLD上的硬件JTAG电路和可编程逻辑资源搭建的一个IP core。这个IP core实现了JTAG接口电路的功能,但本身不是硬件JTAG电路的一部分,是用可编程逻辑“虚拟”出来的。 riple


    这个IP core有两个接口:一个接口在布局布线时连接到硬件JTAG电路上,用户不可见;一个接口由用户通过电路图或者HDL例化到代码中,并通过这个接口自定义JTAG操作。 riple


    这个IP core的功能 = JTAG信号hub + JTAG TAP控制器 + IR/DR IO。 riple


    用户看到的是虚拟JTAG电路对内的接口,看不到硬件JTAG电路接口;并且这个接口是从JTAG TAP控制器引出的,信号方向和大家通常从外部对JTAG电路的理解不一样,所以容易引起混淆,理解上会有一定的困难。 riple


    用户看到(可以利用)的接口有四组: riple



  1. JTAG协议中的接口(TDI、TDO、TCK)。TDI是IP core的输出;TDO是IP core的输入;没有TMS,这个引脚的功能被另一组接口解析并代替了;TCK是唯一没有变化的引脚。  riple
  2. 命令寄存器接口(IR_IN[]、IR_OUT[])。这组接口是Tcl命令和用户逻辑交互的接口,很有用。也可用来简单地传递数据。  riple
  3. 虚拟JTAG TAP控制器状态接口(virtual_state_...)。这组接口是虚拟JTAG的状态机输出,一个状态对应一个输出,可以看作状态信号灯。这组信号就是TMS的解析。如果需要实现复杂地数据传递功能,一定要理解这组信号的功能。  riple
  4. 硬件JTAG TAP控制器状态接口(jtag_state_...)。这组接口是硬件JTAG的状态机输出。这些功能暂时不会用,可能是用来实现更高级控制和数据传递功能的。 riple

 


    理解虚拟JTAG概念的关键有以下两点: riple



  1. 在IP core的背后有四根看不见的JTAG信号,这四根信号才是我们通常从外部理解的JTAG。  riple
  2. 看得见的TDI和TDO是两根等待连接的信号(就像墙上插座里的两根线),我们通过在这两根线之间或串接或并接或简单或复杂的逻辑,实现我们的JTAG链路。 riple

    理解了这些概念,看懂用户指南应该不成问题了。然后再看示例程序的verilog代码。 riple


    我的一个空想:如果Altera能够把用户不可见的硬件JTAG电路接口开放出来(用户可见),那么用户就可以把这个接口上的标准JTAG接口连接到PLD的引脚上,再把这组引脚连接到外部JTAG电路上,那么这个IP core就不再是“虚拟”的了。 riple


 


相关链接:Actel Application Note:How to Use UJTAG riple

PARTNER CONTENT

文章评论10条评论)

登录后参与讨论

用户377235 2014-5-12 13:02

叼炸天

用户1739054 2014-3-24 17:43

单链多FPGA的virtual jtag使用问题:我在verilong中加入tdo输出的选择逻辑后,就不能,用tcl总是提示ERROR: The specified virtual JTAG instance cannot be found. while executing "device_virtual_ir_shift -instance_index 0 -ir_value 5 -no_captured_ir_value" (file "my_jtag.tcl" line 36) sigtap不能进行调试。但是去掉tdo选择输出语句后就可以使用 这是什么原因 是需要什么设置还是?

用户377235 2012-3-22 09:55

支持。

ash_riple_768180695 2011-8-9 21:15

VJI就是一个同步的数字电路。通过写命令和读命令实现数据的串行移入和移出。Quartus中的In-system Sources and Probes就是VJI的一个典型应用。你可以参考这个Mega Core来实现读取counter值。

用户351126 2011-8-6 14:47

hi! 好不容易找到你的文章. 写的太好了! 我不知道这个问题会不会问的太晚, 我想问一下你对Quartus II 的Tcl 有没有研究? 和串口比起来, Tcl貌似不需要做handshaking什么的. 我们希望把VJI当作串口使用, 来读取一个external counter的count. 原来用serial的时候, 我们的设计是每读取一次进行一次Handshake, 每读取一个周期 (由C code定义)进行一次verification(就是输入一串数据然后反读回来). 在这里希望能请教你一下, 不知道你觉得如果改用VJI的话, 过程可不可以简化一些? handshake貌似Tcl的程序库帮我们做了已经... 所以貌似就不需要了? 谢谢!!

用户837343 2010-6-2 18:37

嗯,楼主很厉害,分析的很透彻,我刚遇到一个类似的问题,还在解决中

用户266529 2010-4-3 00:54

最近我做的一个项目也有类似的问题,搞了好久,甚至感觉自己都不想再继续下去了,特别是修改了一处无关紧要的地方,却影响了其他很多地方,今天看了博主的文章很受启发

用户1542249 2010-3-17 23:25

我决定继承你riple大哥脚步!^_^

ash_riple_768180695 2010-3-11 18:12

我现在越发地发现写工作日志的好处,几年后回头看,许多事情都能回忆起来,许多经验教训都不会忘掉。无论是单位要求写的,还是自己整理到博客上的,都很有用。每天几句总结就够了,遇到收获大的可以多写一些。能对别人有借鉴作用当然就更好了。几年后回头看,也会觉得自己当时的工作很充实,没有虚度光阴。

用户1542249 2010-3-11 13:11

作为一个学习FPGA的新人,riple写的文章对我的学习帮助很大,因为很多问题是我没想过,没碰过的,而这都是你在工作中总结的成果,在此谢过了!
相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
10
9
关闭 站长推荐上一条 /3 下一条