riple

Stay Hungry, Stay Foolish.

Virtual JTAG仿真要点(附图)

0
阅读(2967)

Virtual JTAG仿真要点图形说明。从下图可以看出Virtual JTAG与Real JTAG的对应关系。下面两幅Modelsim仿真截屏的上半部分是VJI命令发出后Real JTAG的状态变化,下半部分是Virtual JTAG状态机的变化。

一、device_virtual_ir_shift

Virtual IR操作对应一次Real IR操作和两次Real DR操作。从图中可以看出Virtual JTAG的ir_in由0000变为0001,这是执行device_virtual_ir_shift命令的结果。从图中还可以看 出,device_virtual_ir_shift命令在virtual jtag部分没有对应的操作。也就是说,除了传递Virtual IR值之外,device_virtual_ir_shift命令是无法对用户逻辑产生影响的,我们无法利用 device_virtual_ir_shift命令进行用户自定义的操作。

二、device_virtual_dr_shift

Virtual DR操作对应一次Real IR操作和一次Real DR操作。与device_virtual_ir_shift命令不同,device_virtual_dr_shift命令在virtual jtag部分对应一次DR移位操作,这一操作是我们可以用来控制自定义扫描链逻辑的。

需要注意的是,从仿真看来,VJI电路有以下几个特点:

1. TCK信号不是一个标准时钟。除了速度只有10MHz之外,它也不是连续恒定翻转的。

2. 在一次Virtual DR操作结束后,VJI的状态跳转到udr(update dr),该状态一直持续到下一次VJI操作。所以,采用该信号实现寄存器加载操作不合适,应该代之以e1dr信号。

3. 从VJI的virtual jtag接口看来,只有device_virtual_dr_shift命令可用于操作自定义扫描链。但是由于VJI还提供了一组real jtag接口(low level 接口),可以利用real jtag接口信号操作自定义扫描链,这样一来,device_virtual_ir_shift命令也可以用于自定义扫描链操作了。然而,这样做并没有资 料可以参考,需要三思而后行。

4. 在virtual jtag接口看到的JTAG接口信号是经过屏蔽的。如第二幅图所示,上半部分Real JTAG接口信号中的tdi信号在下半部分并没有完整出现。其实,Virtual JTAG原本就是Real JTAG的简化和抽象,抽象的结果就是VJI仅仅保留了自定义扫描链操作最本质和必要的接口,而忽略了在空间上和时间上不必要的信息。

Baidu
map