yxm433 发表于 2010-8-4 21:35:14

JTAG读ID_CODE的问题

关于JTAG的问题:
我用fpga做JTAG的控制器,从“被测芯片--ep2c5t144”的JTAG读ID_CODE,我发现每次读的都不一样,会是什么问题呢?

我用的TCK的频率为 =50MHz/8,

我读回的数据是用USB芯片68013发给上位机的,从被测芯片出来的数据用signaltapII看到,是不一样的

yxm433 发表于 2010-8-4 21:36:36

每次都是上电重新读的,不一样,一共32bit,其中几位不同,有时候基本全部都不同

Gorgon_Meducer 发表于 2010-8-10 11:31:26

应该不会出现这种状况,检查连线?或者用这个硬件读去别的JTAG设备的ID看看
首先降低读取频率看看。实在不行用示波器看看信号。

yxm433 发表于 2010-8-15 12:53:45

用这硬件读过2块EP2C5T144的,都是出现同样的情况,现在准备降低频率试试

yxm433 发表于 2010-8-15 15:09:45

刚刚试了把频率降低到16分频,测得的结果跟原来的还是一样,每次测都不同

Gorgon_Meducer 发表于 2010-8-16 09:16:19

找一个JTAGID肯定是固定的器件去读读看。

yxm433 发表于 2010-8-16 19:14:57

问题终于解决了,问题出现在:
1.TMS信号的初始值没 确定好
2.被测芯片TDO数据的有效要比TDI数据的有效慢,我原来我把它2看成同一时间处理

用fpga控制这些时序是要很讲究啊,呵呵

yxm433 发表于 2010-8-16 19:19:10

再补充详细点:
1.TMS信号的初始值没 确定好
解决了上面的问题后,我发现每次读的数据已经稳定下来了,每次都一样,但和官方说的不一样。

我也没发现出什么规律了,后来将它们全部写成二进制的形式才看出来,我和官方提供的ID_CODE对照如下:
0000-0100-0001-0110-0010-0001-1011-1011->LSB,测试所得数据
0000-0010-0000-1011-0001-0000-1101-1101(官方的数据),
就是读TDO快了一个TCK周期,后来将它们延迟一个TCK周期就解决了

yxm433 发表于 2010-8-16 19:21:26

谢谢Gorgon Meducer 傻孩子对我问题的关注,
现在搞这个JTAG的人太少了,有问题都没人讨论啊

Gorgon_Meducer 发表于 2010-8-18 10:40:19

你要注意SCK的边沿
有采样沿(Sampling)和置数沿(Setting)。你要对照官方的说法,看看上升沿和下降沿分别是哪一种,然后要遵循这个。
如果发现和官方说法不同,请怀疑自己的时序。官方不会在这种基础时序上出错的。

yxm433 发表于 2010-8-21 20:17:13

后来问题并没解决,还是出现被测芯片的TDO数据不稳定的情况。
后来发现,原来是那根接地的线没接好,郁闷,搞了这么久,问题原来出在这里!!

yxm433 发表于 2010-8-21 20:22:53

再次请教Gorgon Meducer 傻孩子 一个问题:


关于Bypass 旁路寄存器读取的问题,按理应该如果发1111的话,接收应该是01111(最左边为发送的第一位),看下图的情况:
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_576801.JPG
(原文件名:bypass仿真波形.JPG)

上面这样正确吗?

现在问题是:我在实测被测芯片得到却不是这样,类似这样的情况:
发送:1100-1100(最左边为发送的第一位)
接收:0100-1100

第一位就强制被置零,好像Bypass不存在那样,为什么会这样的呢?
页: [1]
查看完整版本: JTAG读ID_CODE的问题