EDN首页   博客首页

日志档案

发表于 2007-7-23 22:43:19

4

标签: avalon  virtual  jtag  

Avalon-MM总线上的vjtag master总线调试工具

    想了很久,昨天终于做成了——Avalon-MM总线上的vjtag master。 riple

 

    Virtual JTAG可以很方便地用来向FPGA的内部逻辑输入激励,或者从FPGA的内部逻辑读取信息,输入和读取的动作可以完全受控于Tcl程序,而Tcl程序又可以实现很灵活的控制序列和友好的人机交互界面,Virtual JTAG  + Tcl这样一种组合使得FPGA的调试具备了良好的可控性和可观测性。 riple

    以往Avalon-MM总线的调试多借助Nios II CPU来实现,Nios II可以向总线上的从设备发起各种操作序列,并且可以把操作的结果通过UART反馈给调试者。但是这一调试环境是以一系列已经调试成功的代码作为先决条件的。为了一个很简单的调试,调试者也不得不编译一定量的代码;如果需要实现一定的人机交互功能,还需要UART的配合。对于像我这样从硬件角度入手学习Avalon-MM总线的人来说,这是一个不低的门槛。 riple

    所以,如何把Virtual JTAG  + Tcl这样易用的调试组合应用到Avalon-MM总线上,替代Nios II进行SOPC Builder的调试,一直是我在思考的一个问题。 riple

    细想一下,其实也不难。只要把Virtual JTAG包装成一个Avalon-MM总线的主设备,并实现基本的主设备读写操作就成了。 riple

 

    Virtual JTAG最适宜实现数据的操作,对于总线传输控制信号的操作不是很直接,需要采用边沿提取逻辑把Virtual JTAG的状态信号转化为Avalon-MM总线的同步操作信号,还需要结合waitrequest信号实现Avalon-MM总线的特定握手关系。 riple

    采用这样的方式,Avalon-MM总线读操作可以分解为地址移入,读控制信号移入,waitrequest状态信息移出和判断,数据移出四步操作;Avalon-MM总线写操作可以分解为地址移入,数据移入,写控制信号移入,waitrequest状态信息移出和判断四步操作。 riple

    实现了读写操作,再配合一段交互式命令输入的循环代码就可以实现在命令行控制Avalon-MM总线的目的了。 riple

    此外,为了支持中断信号,还加入了中断信息读取的操作。 riple

    压缩文件rar是添加好的SOPC Builder模块,操作很简单,在命令行运行quartus_stp -t avalon_vjtag_master.tcl即可。 riple

    操作界面示例: riple

点击看大图

系统分类: CPLD/FPGA   |   用户分类: SOPC Builder   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1298)    回复(4)  

投一票您将和博主都有获奖机会!

最新评论

  • stephen100

    2007-7-24 15:23:35

    好,但是tcl用在什么地方了?

  • stephen100

    2007-7-24 17:22:23

    看到了,呵呵

  • riple

    2007-7-24 16:23:19

    看看这个:http://www.ednchina.com/blog/riple/10862/category.aspx

  • pooomc

    2007-7-24 14:09:58

    写得不错。曾经用的处理器都是独立于FPGA,Nios II还没去玩过。你的设计用在什么地方?