一种基于JTAG协议的仿真装置技术领域
本发明涉及JTAG仿真技术领域,尤其涉及一种基于JTAG协议的仿真装置。
背景技术
芯片在设计、制造和封装过程中都有可能存在问题,由此带来的错误不但会影响整个芯片的性能或引起芯片的失效,还会影响芯片的开发效率和应用质量,因而为了保证芯片功能的正确性,必然还需要对芯片进行调试,调试的正确性和有效性对生产高质量的芯片至关重要。目前主流的调试方式是采用片上调试,即在处理器内部嵌入额外的控制模块,当满足了一定的触发条件时进入特殊的状态,在该特殊状态下应用程序停止运行,主机则通过仿真器访问芯片内部的各种资源。
目前采用的仿真器主要有2种:一种是在线仿真器(InCircuitEmulator,ICE),该在线仿真器作为专用的调试设备,需要配置专用于特定芯片的接头,以使得既可以用来监视芯片引脚的活动以及芯片的外部环境,又可以仿真芯片的运行,但是每种CPU仿真时都需要一种与之对应的ICE,因而开发成本非常高;另外一种是JTAG仿真器(JTAGEmulator),也是目前应用最多的一种仿真器,JTAG为一种国际标准测试协议(IEEE-1149.1标准),JTAG仿真器即采用JTAG接口,同时通过芯片提供的JTAG接口来进行调试,因此可以节省硬件的开销。JTAG仿真器执行仿真时,由JTAG仿真器连接调试主机和目标芯片,由目标芯片提供调试接口逻辑,该逻辑采用两级模式,分别为运行模式和调试模式,其中在运行模式下,调试结构不对芯片的运行进行控制,芯片系统正常工作;在调试模式下,芯片停止正常工作,转而接受调试接口发出的命令,此时仿真器可以读写目标芯片的内存和寄存器、控制程序的运行等。
当想要通过JTAG控制目标芯片时,则必须要通过连接一个仿真器实现,但JTAG仿真器在应用时还存在以下问题:目前JTAG仿真器对数据流的处理方式上,一种方式是直接将主机的并口数据通过FPGA或者CPLD转换成JTAG数据,然后通过在主机端软件编程来控制来实现,这种方式速度慢,并且需要主机支持并口设备;还有一种方式是通过USB串口或者网口通信的仿真器,这种方式虽然速度快,但是通常是采用已成型的专用实体电路板,即采用集成电路板的形式,且由于目前仿真时通常只能采用在调试主机外再挂接一个仿真器的方法进行通信,而不同的仿真器和调试主机的接口协议也是不尽相同的,因而使用上并不便利、通用性能差,用户很难再集成扩展其他器件和功能。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种结构简单、能够基于IP核实现JTAG仿真功能、仿真速度快且通用性及可扩展性能强的基于JTAG协议的仿真装置。
为解决上述技术问题,本发明提出的技术方案为:
一种基于JTAG协议的仿真装置,包括并行总线接口、JTAG接口、JTAG处理IP核以及用于接口逻辑转换的接口转换单元,所述JTAG处理IP核的一端通过所述并行总线接口、接口转换单元连接调试主机,另一端通过所述JTAG接口连接目标芯片,所述JTAG处理IP核通过所述并行总线接口接收调试主机的调试数据,转换为JTAG控制数据后通过所述JTAG接口输出至目标芯片,以及所述JTAG处理IP核通过所述JTAG接口接收目标芯片的JTAG数据,转换为符合并行总线协议的数据后通过所述并行总线接口、接口转换单元输出至调试主机。
作为本发明的进一步改进:所述JTAG处理IP核包括用于接入并行调试数据、输出并行仿真数据的数据接口模块、用于执行JTAG协议转换的JTAG转换模块、用于执行数据串并转换的数据转换模块、以及用于对数据进行缓存的存储缓冲模块,所述数据接口模块通过所述JTAG转换模块与所述数据转换模块连接,所述存储缓冲模块分别与所述数据接口模块、数据转换模块连接。
作为本发明的进一步改进:所述JTAG转换模块包括相互连接的处理单元以及状态控制单元,所述处理单元根据所述调试数据配置JTAG协议信号,所述状态控制单元根据所述处理单元的配置产生对应JTAG协议信号作为JTAG控制数据。
作为本发明的进一步改进:所述处理单元包括用于配置JTAG协议信号的状态的控制寄存器、用于配置JTAG协议中串行数据移位次数的移位次数寄存器、用于指定串行数据的链路属性和控制启动数据传输的命令寄存器,以及用于缓存读出、写入数据的读写缓冲寄存器,通过配置上述各寄存器配置JTAG协议信号。
作为本发明的进一步改进:所述处理单元配置时,通过配置控制寄存器或者命令寄存器以配置为JTAG协议信号静态输出状态,或根据读写操作类型通过分别配置控制寄存器、移位次数寄存器、命令寄存器以及读写缓冲寄存器以配置为JTAG协议信号动态数据状态。
作为本发明的进一步改进:所述状态控制单元包括TMS状态机,所述TMS状态机按照JTAG协议中TAP控制器状态机的时序产生JTAG协议信号。
作为本发明的进一步改进:当启动一次数据操作时,所述状态控制单元接收启动命令启动内部的TMS状态机,所述TMS状态机根据所述处理单元的配置按照JTAG协议进行状态转换,并当状态处于移位状态时,产生数据移位的状态信号发送给数据转换模块。
作为本发明的进一步改进:所述数据转换模块包括读写移位寄存器、计数器以及用于控制与所述存储缓冲模块之间数据传输的传输控制单元,所述读写移位寄存器由所述计数器控制执行读写数据的串行移位传输。
作为本发明的进一步改进:所述读写移位寄存器接收状态控制单元发送的移位信号时,采样输入数据进行移位操作并输出启动信号至所述计数器;所述计数器接收读写移位寄存器的启动信号开始计数,计数完成后输出计数完成信号至所述传输控制功能单元;所述传输控制功能单元接收到计数完成信号后,控制将读写移位寄存器中数据读出或写入存储缓冲模块,并控制启动下一次移位,直至移位信号无效。
作为本发明的进一步改进:所述存储缓冲模块包括单端口RAM体以及存储控制器。
与现有技术相比,本发明的优点在于:
1)本发明基于JTAG协议的仿真装置,以IP核的形式实现JTAG仿真器的功能,以将JTAG仿真器IP化,从而使用该IP核就能够完成仿真器的功能,实现对JTAG仿真器的替换,使得JTAG仿真器不再局限于电路板的形式,而是可以作为IP核集成到SOC上或用户的FPGA中,有效提高了仿真器的集成度;同时还提供了通用的并行接口和JTAG接口,因而基于本实施例仿真装置的IP核可以方便的进行各种应用扩展,大大提高了仿真装置的通用性和便利性;
2)本发明基于JTAG协议的仿真装置,结合JTAG处理IP核能够将符合并行总线协议的数据转换成符合标准的JTAG协议的数据,输出控制目标芯片的JTAG控制数据;同时,JTAG处理IP核还能够将目标芯片输出的JTAG数据转换成并行数据后通过总线输出,实现调试主机与目标芯片之间命令和数据的交换,完成JTAG仿真器的功能,且传输结构简单,可以有效的提高JTAG串行数据的传输速率;
3)本发明基于JTAG协议的仿真装置,JTAG处理IP核具体通过一套数字逻辑电路实现,IP核的整个逻辑使用硬件描述语言实现,无需依赖实体电路板实现仿真器功能,能够方便的集成到FPGA、ASIC等芯片的设计中,便于使用以及配置;
4)本发明基于JTAG协议的仿真装置,在并行总线协议的基础上,只需要添加一端符合并行总线协议、另一端符合主机通信协议的任意通信接口(如传统的并口、USB接口和以太网接口等),就可以扩展为支持与调试主机之间任意接口方式的通信;
5)本发明基于JTAG协议的仿真装置,处理单元进一步设置多种寄存器,通过多种寄存器的配置可以灵活的配置不同JTAG协议信号来控制目标芯片,增加了仿真调试的灵活性和可控性,同时寄存器的设置也符合嵌入式系统的使用习惯,因而便于实现集成及扩展。
附图说明
图1是本实施例基于JTAG协议的仿真装置执行仿真的原理示意图。
图2是本实施例基于JTAG协议的仿真装置的结构示意图。
图3是本实施例读写操作时处理单元配置寄存器的实现流程示意图。
图4是本实施例数据转换模块以及状态控制的原理示意图。
图例说明:1、JTAG处理IP核;11、数据接口模块;12、JTAG转换模块;121、处理单元;122、状态控制单元;13、数据转换模块;14、存储缓冲模块。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1、2所示,本实施例基于JTAG协议的仿真装置包括并行总线接口、JTAG接口、JTAG处理IP核1以及用于接口逻辑转换的接口转换单元,JTAG处理IP核1的一端通过并行总线接口、接口转换单元连接调试主机,另一端通过JTAG接口连接目标芯片,JTAG处理IP核1通过并行总线接口接收调试主机的调试数据,转换为JTAG控制数据后通过所述JTAG接口输出至目标芯片,以及JTAG处理IP核1通过JTAG接口接收目标芯片的JTAG数据,转换为符合并行总线协议的数据后通过所述并行总线接口、接口转换单元输出至调试主机。
IP核(intellectualpropertycore,知识产权核)是形式为逻辑单元,可重复使用的集成电路设计模块,以IP核为基础能够进行专用集成电路或FPGA的逻辑设计,从而减少设计周期。如图1所示,本实施例仿真装置以IP核的形式实现调试主机与目标芯片之间JTAG仿真器的功能,以将JTAG仿真器IP化,从而使用该IP核就能够完成仿真器的功能,实现对JTAG仿真器的替换,使得JTAG仿真器不再局限于电路板的形式,而是可以作为IP核集成到SOC或FPGA上,有效提高了仿真器的集成度,同时本实施例仿真装置提供了通用的并行接口和JTAG接口,因而基于本实施例仿真装置的IP核可以方便的进行各种应用扩展,大大提高了仿真装置的通用性和便利性。
本实施例并行总线接口为基于并行总线协议的接口,结合JTAG处理IP核1能够将符合并行总线协议的数据转换成符合IEEE1149.1标准的JTAG协议的数据,输出控制目标芯片的JTAG控制数据,目标芯片可以为各类支持JTAG协议的芯片;同时,JTAG处理IP核1还能够将目标芯片输出的JTAG数据转换成并行数据后通过总线输出,实现调试主机与目标芯片之间命令和数据的交换,完成JTAG仿真器的功能,且传输结构简单,可以有效的提高JTAG串行数据的传输速率,传输速率具体可以根据需求进行设置及调整。
本实施例接口转换单元为基于并行总线协议的接口转换逻辑,通过转换接口逻辑可以实现用户自定义的任意通信接口的通信连接。本实施例JTAG处理IP核1通过并行总线接口连接至接口转换单元,接口转换单元再通过用户自定义的任意通信接口连接至调试主机,从而使得JTAG处理IP核1可以支持一端符合并行总线协议的任意通信接口。因此本实施例在并行总线协议的基础上,只需要添加一端符合并行总线协议、另一端符合主机通信协议的任意通信接口(如传统的并口、USB接口和以太网接口等),就可以扩展为支持与调试主机之间任意接口方式的通信。
仿真测试时,调试主机的调试数据经过接口转换单元的接口转换逻辑后通过并行总线接口输出至JTAG处理IP核1,JTAG处理IP核1输出的数据由并行总线接口发送至接口转换单元,接口转换单元进行接口转换逻辑后提供给调试主机。
如图2所示,本实施例中JTAG处理IP核1包括用于接入并行调试数据、输出并行仿真数据的数据接口模块11(Interface模块)、用于执行JTAG协议转换的JTAG转换模块12、用于执行数据串并转换的数据转换模块13(Trans模块)、以及用于对数据进行缓存的存储缓冲模块14(FIFO模块),数据接口模块11通过JTAG转换模块12与数据转换模块13连接,存储缓冲模块14分别与数据接口模块11、数据转换模块13连接。通过上述各模块构成JTAG处理IP核1,能够实现JTAG仿真器的功能,同时作为IP核使用时,可操作性强且可灵活配置。
本实施例中,数据接口模块11具体处理并行总线的访问,采样总线传入的并行数据,同时通过总线返回并行数据。为提高IP核使用的灵活性,本实施例数据接口模块11包括2个时钟,一个是用户时钟,另一个是JTAG测试时钟(TCK),其中用户时钟提供给用户接口使用,TCK时钟则是整个IP核内部的工作时钟。本实施例数据接口模块11中上述2个时钟域信号之间还进行了异步对接处理。
如图2所示,数据接口模块11处理并行总线的访问时,在CLK时钟域下,根据写数据使能信号WE以及地址信号Addr(本实施例宽度取4bit),捕获写入的数据信号Data(本实施例宽度取16bit);或者根据读数据使能信号RE以及地址信号Addr,将数据信号Data输出;忙信号(Busy)有效时表示数据接口模块11正处于异步对接过程或者IP核中其他模块正处于工作状态,因此读写操作是在Busy信号无效时发出。
本实施例中,JTAG转换模块12具体包括相互连接的处理单元121(Processor单元)以及状态控制单元122(StateCtrl单元),处理单元121根据调试数据配置JTAG协议信号,状态控制单元122根据处理单元121的配置产生对应JTAG协议信号作为JTAG控制数据。处理单元121具体是处理来自数据接口模块11同步后的地址数据,进行地址译码后配置JTAG协议信号。
本实施例中,处理单元121包括用于配置JTAG协议信号的状态的控制寄存器、用于配置JTAG协议中串行数据移位次数的移位次数寄存器、用于指定串行数据的链路属性和控制启动数据传输的命令寄存器,以及用于缓存读出、写入数据的读写缓冲寄存器,通过配置上述各寄存器配置JTAG协议信号。本实施例处理单元121具体设置控制寄存器(Control寄存器)、移位次数寄存器(Count寄存器)、读缓冲寄存器(ReadBuffer寄存器)、写缓冲寄存器(WriteBuffer寄存器)以及命令寄存器(Command寄存器)共5个寄存器,每个寄存器的宽度为16bit,根据数据接口模块11的地址译码数据配置各寄存器,通过对上述5个寄存器的不同配置,能够控制产生不同的JTAG信号。各寄存器具体为:
控制寄存器(Control寄存器):通过配置该寄存器能够控制JTAG协议中的时钟(TCK)的开启、关闭或者输出稳定的低电平或高电平;控制状态信号(TMS)的开启和关闭;控制串行数据输出信号(TDO)的开启、关闭、输出稳定的低电平或高电平、输出有效数据;
移位次数寄存器(Count寄存器):通过配置该寄存器能够指定JTAG协议中串行数据移位的次数,其中本实施例设置为最大支持65536次移位;
读缓冲寄存器(ReadBuffer寄存器):该寄存器用于缓存一次读出的16bit数据,且为只读寄存器;根据地址配置的不同,读数据的来源可以是处理单元121中其他寄存器的值,也可以是存储缓冲模块14中的数据;
写缓冲寄存器(WriteBuffer寄存器):该寄存器用于缓存一次写入的16bit数据,且为只读寄存器;根据地址配置的不同,写数据的目标可以是处理单元121中其他寄存器,也可以是存储缓冲模块14;
命令寄存器(Command寄存器):通过配置该寄存器能够控制JTAG处理IP核1中所有模块的软复位,且控制复位时,输出的JTAG复位信号(TRST)也会处于复位有效状态;通过配置该寄存器还能够控制选择JTAG协议中的数据(DR)链路或者指令(IR)链路、能够控制启动一次JTAG串行数据的传输、以及能够配置TCK时钟的频率。
通过上述多种寄存器的配置可以灵活的配置不同JTAG协议信号来控制目标芯片,增加了仿真调试的灵活性和可控性,同时寄存器的设置也符合嵌入式系统的使用习惯,因而便于实现集成。
本实施例处理单元121配置时,通过配置控制寄存器或者命令寄存器以配置为JTAG协议信号静态输出状态,或根据读写操作类型通过分别配置控制寄存器、移位次数寄存器、命令寄存器以及读写缓冲寄存器以配置为JTAG协议信号动态数据状态。配置信号静态输出时,通过配置Control寄存器或者Command寄存器,使得JTAG的TMS、TDO和TRST信号输出保持稳定的静态电平或者维持高阻态,该配置应用于特定需求模式;配置动态数据时,通过配置上述各寄存器使得JTAG接口能够正确有效的输出、输入数据,该配置应用于正常工作模式。
本实施例配置动态数据如图3所示,首先根据需求配置Control寄存器,指定JTAG的数据输出源是来自写入的数据还是恒定值;然后配置Count寄存器,指定串行数据输入或输出的个数;再启动Command寄存器,指定串行数据的链路属性,并启动一次数据操作,具体包括:
当使用读操作时,先配置启动一次数据操作,使得JTAG处理IP核1进入数据传输状态,且传输的数据会暂存到存储缓冲模块14;当Busy信号无效后,配置ReadBuffer寄存器,将数据从存储缓冲模块14中读出,多个数据读时,则需要多次配置ReadBuffer寄存器;
当使用写操作时,先配置WriteBuffer寄存器以将数据写入,写入的数据会暂存到存储缓冲模块14中;然后配置启动一次数据操作后,使得JTAG处理IP核1进入数据传输状态,将存储缓冲模块14中的数据输出;当Busy信号无效后,再启动下一次写操作,多个数据写入时,则需要多次配置WriteBuffer寄存器。
本实施例中,状态控制单元122包括TMS状态机,TMS状态机按照JTAG协议中TAP控制器状态机的时序产生JTAG协议信号,即TMS状态机参考JTAG协议中的TAP(TestAccessPort,测试访问端口)控制器状态机的时序执行,因而能够根据处理单元121中Control寄存器和Count寄存器的不同配置,产生各种不同的TMS、TRST和TDO信号(JTAG协议信号),并在TCK时钟域下以符合IEEE1149.1标准协议的形式输出。
本实施例中,当启动一次数据操作后,状态控制单元122接收启动命令,启动内部的TMS状态机,TMS状态机会根据Command寄存器中的配置,选择通过IR指令链路或者DR数据链路按照JTAG协议来完成整个状态的转换,即状态转换符合JTAG标准协议的要求;当状态处于移位(Shift-State)状态时,会产生数据移位的状态信号(Data_Shift)并发送给数据转换模块13,通知其开始数据移位。
本实施例存储缓冲模块14具体缓存数据接口模块11输出的写数据,以传输给数据转换模块13进行处理,以及缓存数据转换模块13输出的数据,以传输给数据接口模块11进行处理,从而能够缓存数据接口模块11发来的写数据,并传输到数据转换模块13处理,也能够缓存数据转换模块13发来的数据并传输给数据接口模块11处理。存储缓冲模块14当数据写满后,则发出信号通知后续数据暂停写入。本实施例基于并行总线,因而可以通过Busy信号来感知存储缓冲模块14的状态。
本实施例中,存储缓冲模块14具体包括一个单端口RAM体以及存储控制器,其中RAM体的数据宽度具体取16bit、深度取2K,且设置最大支持32Kb数据的存储。
本实施例中,数据转换模块13包括读写移位寄存器、计数器以及用于控制与存储缓冲模块(14)之间数据传输的传输控制单元,读写移位寄存器由计数器控制执行读写数据的串行移位传输以完成数据串并转换。如图4所示,本实施例具体包含2个移位寄存器(ShiftReg)、1个16位的计数器(Counter16)以及2个传输控制功能单元(TransferFunction),由2个移位寄存器分别负责处理读数据和写数据的串行移位传输、计数器用于控制读写数据的串并转换、传输控制功能单元控制移位寄存器和存储缓冲模块14之间的数据交互。
本实施例中,读写移位寄存器接收状态控制单元122发送的移位信号,采样输入数据TDI进行移位操作并输出启动信号至计数器;计数器接收到读写移位寄存器的启动信号开始计数,计数完成后输出计数完成信号至传输控制功能单元;传输控制功能单元接收计数完成信号,控制将写移位寄存器中数据读出或写入存储缓冲模块14,并控制启动下一次移位,直至移位信号无效。
数据转换模块13执行读、写数据的串行移位传输具体为:
当读数据时,在接收到处理单元121发来的读有效信号后,根据状态控制单元122发来的Data_Shift移位信号,读移位器ReadShiftReg开始工作,采样数据TDI并进行移位操作;同时启动计数器Counter16开始计数,计数16次完成后,发出计数完成信号。传输控制功能单元TransferFunction接收到计数完成信号后,将移位寄存器中的数据写入存储缓冲模块14中,并控制再次开始移位;上述过程一直持续到Data_Shift信号无效后,计数器停止计数,移位随之停止;
当写数据时,在接收到处理单元121发来的写有效信号后,根据状态控制单元122发来的Data_Shift移位信号,写移位器WriteShiftReg开始工作,进行移位操作并将数据TDO输出;同时启动计数器Counter16开始计数,计数16次完成后,发出计数完成信号;传输控制功能单元TransferFunction接收到计数完成信号后,从存储缓冲模块14中读出下一个并行数据放入移位寄存器中,并控制再次开始移位;上述过程一直持续到Data_Shift信号无效,计数器停止计数,移位随之停止。
本实施例数据转换模块13中整个移位过程受Data_Shift移位信号控制,因此移位的数据TDI是与TMS互相配合的,因而符合JTAG协议。
本实施例JTAG处理IP核1具体通过一套数字逻辑电路实现,IP核的上述整个逻辑使用硬件描述语言实现,无需依赖实体电路板实现仿真器功能,能够方便的集成到FPGA、ASIC等芯片的设计中,便于使用以及配置。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。