分享

透露某些 USB-Blaster 在NIOS调试的时候报警告的秘密

 rookie 2012-03-18
nios2-terminal: connected to hardware target using JTAG UART on cable
nios2-terminal: "USB-Blaster [USB-0]", device 1, instance 0
nios2-terminal: Warning: The JTAG cable you are using is not supported for Nios
nios2-terminal: II systems.  You may experience intermittent JTAG communication
nios2-terminal: failures with this cable.  Please use a USB Blaster revision B
nios2-terminal: cable or another supported cable. 

上面这个警告,相信很多人都见到过,呵呵。我之前也一直不知道具体的原因。

最先在网上看到USB-Blaster的制作资料,就是在ourdev上面,里面CPLD的代码都有,于是照着做,结果是失败,坛子里有的人做成功了,但是失败的也不在少数。我搞了一个多月,也没搞定。

后来又看到了用68013做的USB-Blaster的资料,那时候的还只有JTAG模式。照这个资料做,成功了,后来又根据CPLD的代码加入 了AS、PS模式。然后才发现,其实CPLD的代码时序是有问题的,即TCK与其他信号在同一个时钟变化,输出去之后因为路径延迟的差别,肯定会有先有 后,以至于有人成功有人失败,而我向来运气不好,所以也就失败了,呵呵。不过也好,让我有机会发现这个bug,后来增加了一个状态,让TCK先变化,再是 其他信号,然后就一切正常了。

调试NIOS的时候,用68013做的版本就出现上面这个警告了,百思不得其解,因为也可以正常调试,只是开始有这个警告而已。于是上网 找,USB-Blaster,A、B、C各版有什么差别。最后的结果就是,没什么太大差别,只是换了换排线插头,C版就加了一个74LV244。仍然是一 头雾水。

这样糊涂了很久,又一次,公司坏了一片Cyclone III的芯片,用原装的RevC下载线都无法识别了。于是这片尸体被我顺回了家,呵呵。回 去我用68013做的USB-Blaster,竟然把它识别出来了,竟然还可以用!这个时候,我又想起了NIOS问题,怀疑是时序冗余不够。所以把慢速的 USB-Blaster搞去试了一下,还是不行,然后再代码里面加了无数个NOP,增加时序冗余,还是不行!

论坛上有人说,这个是ALTERA公司专门为了打击盗版而做的手脚,不是原装的就让你不爽。这个说法似乎很有道理,但是不能明确具体是什么手脚,呵呵。

后来发现在68013的代码中有一段是注释掉的,是在响应一个Vender Request,在读取EEPROM里面的东西,这里作者(后来知道 是引入者)注释掉了,并给了说明,说直接回应00,下载线一样可以用,所以没有模拟EEPROM的内容读取。将这段改回德国人的原版,EEPROM的内容 直接把REV.B的写进去,后面再试,就不出现警告了!

总结下来,其实就是Quartus读取了EEPROM的内容,从这里了解了下载线的版本,如果不是REV.B或者更新的版本,就会提示这个警告,因为A版时序冗余是不够的。而用68013模拟FT245BL的版本,因为之前去掉了EEPROM的内容,所以

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多