专利名称::一种jtag端口控制器的制作方法
技术领域:
:本发明涉及集成电路测试
技术领域:
,特别是JTAG(JointTestActionGroup)端口控制器领域。
背景技术:
:20世纪80年代以来,随着计算机嵌入式系统的广泛应用,微控制器(MCU,microcontrollerunit/单片机)得到飞速的发展。早期的单片机是按照嵌入式应用技术要求设计的计算机的单芯片化集成电路器件,也就是电子计算机的全部特性器件都集成到一片芯片上,故被形象的称为单片机。随着单片机应用范围的不断加大,对于其仿真调试功能的要求也逐渐提高。目前几乎所有的高速嵌入式处理器都用JTAG仿真调试模块。它是对IEEE1149.1协议进行了扩展,将原本用于测试的JTAG接口扩展成一个调试接口。JTAG是标准的国际协议(参阅IEEEstandard1149.1)。JTAG调试访问端口配置有以下5个管脚TCK,TMS,TDI,TDO和TRST。TCK(TestClock)为调试时钟端口,为JTAG控制器提供时钟。TMS(TestModeSelect)为模式选择端口,可控制JTAG控制器的状态变化。TDI(TestDataInput)为串行调试输入数据端口,可通过该端口在TCK的上升沿移位输入TAP(TestAccessPort,调试访问端口)指令和数据。TDO(TestDataInput)为串行调试输出数据端口,可通过该端口在TCK的下降沿输出调试数据。TRST(TestReset)为复位端口,复位JTAG仿真调试模块。图1是通用的JTAG仿真调试系统,JTAG仿真调试模块与外部控制电路通过JTAG端口进行通信,JTAG仿真调试模块将从JTAG端口得到的调试信息送到微控制器并进行调试。JTAG仿真调试模块一般包括JTAG端口控制器(用于与JTAG端口通信,并与微控制器进行寄存器读写信息的传送,这里提及的寄存器是指CPU调试状态寄存器,调试时通常要求将微控制器的CPU调试状态寄存器的状态信息反馈给用户且能通过JTAG端口写CPU调试状态寄存器,所以需要通过JTAG端口对CPU调试状态寄存器进行读写操作)和调试控制模块(与微控制器进行调试信息的传送)。目前的JTAG端口控制器通常将串行的TDI数据转换为并行数据,再将并行数据写到JTAG相关的寄存器(如跟踪计数器,JTAG状态寄存器,CPU调试状态寄存器等,其中CPU调试状态寄存器存在于微控制器内,其他寄存器都存在于JTAG端口控制器内)中。在写某个寄存器时,并不能观测到此寄存器的新值和旧值的区别。而调试环境通常要求将寄存器的改变信息反馈给用户,让用户实时观测到寄存器值的改变,有哪些改变。若想知道寄存器值的改变情况,通常的做法是先将寄存器的值读出来,再与即将要写进去的值进行比较,从而获得寄存器值的改变信息。因为必须进行一次读寄存器的操作,所以比较浪费时间。
发明内容本发明目的是提供一种JTAG端口控制器,该控制器在进行写操作的同时,就能实时地观测到调试过程中信息的变化。为达到上述目的,本发明采用的技术方案是一种JTAG端口控制器,—种JTAG端口控制器,至少包括测试访问端口、指令寄存器、指令解码模块、第一数据寄存器、端口寄存器,还包括状态机控制模块、第一选通器、信号组合模块、信号分离模块、第二选通器,其中,所述状态机控制模块,用于控制所述JTAG端口控制器所处的工作状态;所述第一选通器,根据所述指令寄存器的控制位信息,接受来自所述测试访问端口中数据输入端口的串行数据信息并依次从其输出端口输出单比特信息;或,接受来自所述信号分离模块一个输出端口输出的位于所述第一数据寄存器中第O位信息并从其输出端口输出该第0位信息;所述信号组合模块,将所述信号分离模块一个输出端口输出的位于所述第一数据寄存器中第1位至最高位信息与所述第一选通器输出的单比特信息组合成并行数据信息,其中,单比特信息位于该并行数据信息的最高位;所述第一数据寄存器为上升沿触发的寄存器,在时钟的上升沿将并行数据信息输出至该寄存器的输出端;所述信号分离模块,接受来自所述第一数据寄存器输出的并行数据信息,并将该并行数据信息的第0位信息与其它位信息分离;所述端口寄存器为下降沿触发的寄存器,接收来自所述信号分离模块的第O位信息并在时钟的下降沿将该第0位信息输出至该寄存器的输出端。所述第二选通器,根据所述指令寄存器的控制位信息,控制将何种并行数据送到所述第一数据寄存器的输入端,当该第二选通器一个输入端有效时,将所述信号组合模块输出端口输出的并行数据信息选送到所述第一数据寄存器的输入端;当该第二选通器另一个输入端有效时,将保持所述第一数据寄存器的输出端数据不变。上述技术方案中的有关内容解释如下1、上述方案中,还包括第三选通器和第二数据寄存器,该第三选通器位于所述数据寄存器与端口寄存器之间,用于选择第一数据寄存器和第二数据寄存器第0位信息的输出。2、上述方案中,所述测试访问端口还包括模式选择端口、时钟端口、数据输出端口和复位端口。由于上述技术方案运用,本发明与现有技术相比具有下列优点和效果1、本发明JTAG端口控制器在进行写数据操作同时,就能实时地观测到调试过程中信息的变化,从而有利于开发人员及时发现问题和问题的查找。2、本发明相对现有技术,不需要通过增加一次读操作才能观测到调试过程中的变化信息,节省了硬件资源并提高了效率。3、本发明能提供前后数据实时对比并将结果反馈给用户。4、本发明JTAG端口控制器的电路实现方式简单,并不需要增加很多的电路逻辑,性价比高。附图1为JTAG仿真调试系统示意4附图2为JTAG端口控制器的状态;附图3为指令解码模块示意图;附图4为本发明JTAG端口控制器的原理图;附图5为本发明通过数据输入和输出端口的数据比较信息;附图6为本发明数据寄存器的移位操作示意图。以上附图中1、指令寄存器;2、指令解码模块;3、第一数据寄存器;4、端口寄存器;5、状态机控制模块;6、第一选通器;7、信号组合模块;8、信号分离模块;9、第二选通器;10、第三选通器;11、第二数据寄存器。具体实施例方式下面结合附图及实施例对本发明作进一步描述实施例一种JTAG端口控制器—种JTAG端口控制器,至少包括测试访问端口、指令寄存器1、指令解码模块2、第一数据寄存器3、端口寄存器4,还包括状态机控制模块5、第一选通器6、信号组合模块7、信号分离模块8、第二选通器9、第三选通器10、第二数据寄存器ll,其中,所述状态机控制模块5,用于控制所述JTAG端口控制器所处的状态;所述第一选通器6,根据所述指令寄存器1的控制位信息,接受来自所述测试访问端口中数据输入端口TDI的串行数据信息并依次从其输出端口输出单比特信息;或,接受来自所述信号分离模块8—个输出端口输出的位于所述第一数据寄存器3中第0位信息并从其输出端口输出该第0位信息;所述信号组合模块7,将所述信号分离模块8—个输出端口输出的位于所述第一数据寄存器3中第l位至最高位信息与所述第一选通器6输出的单比特信息组合成并行数据信息,其中,单比特信息位于该并行数据信息的最高位;所述第一数据寄存器3为上升沿触发的寄存器,在时钟的上升沿将并行数据信息输出至该寄存器的输出端;所述信号分离模块8,接受来自所述第一数据寄存器3输出的并行数据信息,并将该并行数据信息的第0位信息与其它位信息分离;所述端口寄存器4为下降沿触发的寄存器,接收来自所述信号分离模块8的第0位信息并在时钟的下降沿将该第0位信息输出至该寄存器的输出端。所述第二选通器9,根据所述指令寄存器1的控制位信息,控制将何种并行数据送到所述第一数据寄存器3的输入端,当该第二选通器9一个输入端有效时,将所述信号组合模块7输出端口输出的并行数据信息选送到所述第一数据寄存器3的输入端;当该第二选通器9另一个输入端有效时,将保持所述第一数据寄存器3的输出端数据不变。所述第三选通器10和第二数据寄存器ll,该第三选通器10位于所述数据寄存器3、11与端口寄存器4之间,用于选择第一数据寄存器3和第二数据寄存器11第0位信息的输出。所述测试访问端口还包括模式选择端口TMS、时钟端口TCK、数据输出端口TDO和复位端口TRST。本实施例上述内容具体解释如下。5JTAG端口控制器将从数据输入端口TDI输入的串行数据信息依次输入到相关的寄存器中,同时将JTAG相关寄存器的值转为串行数据信息并送到端口寄存器4的输出端TD0上。由模式选择端口TMS和复位端口TRST决定JTAG端口控制器的状态,并由JTAG端口控制器的状态和其它信息决定将从数据输入端口TDI输入的串行数据信息存入不同的寄存器,或从不同的寄存器中读出数据信息。JTAG相关寄存器包括指令寄存器1(IR)、数据寄存器(DR)。指令寄存器1(IR)是一个包含在JTAG端口控制器内的8位寄存器,数据寄存器(DR)是指多个寄存器的集合,包括第一数据寄存器3,第二数据寄存器11,CPU调试状态寄存器等,数据寄存器(DR)都是由指令寄存器1(IR)控制如何进行读写操作的。在某个时刻只能操作其中一个数据寄存器(DR),至于要操作哪个数据寄存器(DR),则由指令寄存器1(IR)中的RS4RSO位决定。附图2是JTAG端口控制器的状态图。根据模式选择端口TMS和复位端口TRST的不同输入信息决定JTAG端口控制器进入不同的状态。当复位端口TRST的复位信号有效即被拉高时,无论模式选择端口TMS为何值,JTAG端口控制器都会立即进入到Test-Logic-Reset状态,且一直停留在Test-Logic-Reset状态直到复位端口(TRST)的复位信号无效即被拉低。当复位信号TRST无效且模式选择端口TMS为l,则停留在Test-Logic-Reset状态直到模式选择端口TMS为0。当复位信号TRST无效且模式选择端口TMS为0,则在TCK上升沿后离开Test-Logic-Reset状态而进入到Run-Test/Idle状态。另夕卜,当在Select-IR-Scan状态且TMS为1时,在TCK上升沿后JTAG端口控制器也会进入至ljTest—Logic—Reset状态。除了Test—Logic—Reset状态禾口Run—Test/Idle状态,其f也状态的进入都只与TMS和当前状态有关,与TRST无关。比如当JTAG端口控制器处于Run-Test/Idle状态且TMS输入为0时,JTAG端口控制器会一直停留在此状态;如果TMS为1,则在TCK上升沿后进入Select-DR-Scan状态。通常,我们在系统上电时,会让复位信号TRST有效,让JTAG端口控制器进入到Test-Logic-Reset状态,然后让复位信号TRST无效且让模式选择信号TMS为0,在TCK上升沿后进入到R皿-Test/Idle状态,继续让模式选择信号TMS保持为0从而停留在Run-Test/Idle状态。当用户需要写指令寄存器(IR)或数据寄存器(DR)时,会控制模式选择信号TMS取不同的值从而进入不同的状态,从而完成相关操作。比如要写指令寄存器1(IR),JTAG端口控制器会从Run-Test/Idle状态开始,经历Select-DR-Scan,Select-IR-Scan,C即ture-IR,Shift-IR,Exitl-IR,Update-IR状态,最后再回到Run-Test/Idle状态,直到有新的操作。要写数据寄存器(DR),JTAG端口控制器也是从R皿-Test/Idle状态开始,经历Select-DR-Scan,Capture-DR,Shift-DR,Exitl-DR,Update-DR状态,最后同样回到Run-Test/Idle状态,直到有新的操作。具体的操作请见后面用户写不同数据寄存器(DR)时的三个步骤。当用户要写不同的数据寄存器(DR)时,需要如下三个步骤步骤一首先要写指令寄存器1(IR)。通过模式选择端口TMS输入相应的值让JTAG端口控制器进入到需要的状态,在Shift-IR状态时会将的串行输入值依次存入指令寄存器l(IR)中,经过8个TCK时钟周期后,指令寄存器1(IR)的8个位都被更新为需要的值,最后JTAG端口控制器又回到Run-Test/Idle状态,直到有新的操作才会离开Run-Test/Idle状态而进入Select-DR-Scan状态。指令寄存器1(IR)每一位的说明,如下76543210<table>tableseeoriginaldocumentpage7</column></row><table>(1)R/Wbit1:读选中的数据寄存器(DR)0:写选中的数据寄存器(DR)(2)RS4RSObits5,bOOOOO5,b00010:保留5'b00011:选中16位tracecounterOTC(追踪计数器,即第一数据寄存器3)5'b00100:选中32位memorybreakpointAcounterMBCA(存储器断点A计数器)5'b00101:选中32位memorybreakpointBcounterMBCB(存储器断点B计数器)5'b00110:选中16位programcounterfirstinfirstoutbufferPCFIFO(禾呈序计数器先进先出缓冲器)5'b00111:选中32位memorybreakpointAbaseaddressregisterBABA(存储器断点A基地址寄存器)5'b01000:选中32位memorybreakpointBbaseaddressregisterBABB(存储器断点B基地址寄存器)5'b01001:选中32位memorybreakpointAmaskaddressregisterBAMA(存储器断点A屏蔽地址寄存器)5'b01010:选中32位memorybreakpointBmaskaddressregisterBAMB(存储器断点B屏蔽地址寄存器)5,b01011:选中128位CPUstatusregisterCPUSCR(CPU调试状态寄存器,保存微控制器的一些状态信息,如是否在调试模式,程序计数器的值等)5'b01100:不选中任何寄存器5'b01101:选中32位位JTAGcontrolregisterOCR(JTAG控制寄存器)5'b01110:选中32位JTAGstatusregisterOSR(JTAG状态寄存器,即第二数据寄存器ll)5,b011115,blllll:保留步骤二指令寄存器1(IR)的写操作完成后,它的RS4RSO位和JTAG端口控制器中的Shift-DR状态信号被送到指令寄存器1(IR)的指令解码模块2中进行解码,决定选中哪个数据寄存器(DR)进行操作,相应的选择信号会被拉高。图3是指令寄存器1的指令解码模块2,它根据JTAG端口控制器的Shift_DR状态信号和IR寄存器的RS4RSO位解码得出不同数据寄存器(DR)的选择信号,如Sel_otC,sel—osr信号等。要选中某个数据寄存器(DR),JTAG端口控制器必须处于Shift-DR状态,表明此时可以将TDI串行数据依次存入被选中的数据寄存器(DR)中。比如RS4RS0位为5'b00011,且JTAG端口控制器处于Shift-DR状态时,则信号sel_otC被拉高,表明第一数据寄存器3即0TC寄存器被选中了。如RS4RSO位为5'b01110,且JTAG端口控制器处于Shift-DR状态时,则信号sel_0Sr被拉高,表明第二数据寄存器11即OSR寄存器被选中了。步骤三最后再写被选中的数据寄存器(DR)。要通过TMS输入相应的值让JTAG端口控制器进入到需要的状态,通常在JTAG端口不进行任何操作的时候,JTAG端口控制器会停留在Run-Test/Idle状态,所以需要经过的状态依次为Select-DR-Scan,C即ture-DR,Shift-DR,Exitl-DR,Update-DR,Run-Test/Idle,其中Shift-DR状态停留的TCK时钟周期由被选中的数据寄存器(DR)的位数决定,比如第一数据寄存器3即OTC寄存器是16位的寄存器,当选中第一数据寄存器3即OTC寄存器时,Shift-DR状态会停留16个TCK时钟周期;又比如第二数据寄存器ll即0SR寄存器是32位的寄存器,当选中第二数据寄存器11即OSR寄存器时,Shift-DR状态会停留32个TCK时钟周期。R皿-Test/Idle状态会一直停留直到有新的操作,其他状态只停留一个TCK时钟周期,在Shift-DR状态时会将TDI的串行输入值依次存入被选中的数据寄存器(DR)中,经过N个TCK时钟周期后,数据寄存器(DR)的N位都被更新为需要的值,N表示被选中的数据寄存器(DR)的位数,当选中第一数据寄存器3即OTC寄存器时,则N为16,当选中第二数据寄存器11即OSR寄存器时,N为32,最后JTAG端口控制器又回到Run-Test/Idle状态,直到有新的操作才会离开Run-Test/Idle状态而进入Select-DR-Scan状态。经过这三个步骤,就完成了对某个数据寄存器(DR)的写操作。下面结合电路图和波形图对如何完成数据寄存器(DR)的写操作以及通过写操作来实时观测数据寄存器(DR)的变化做进一步说明。图4是JTAG端口控制器的实现装置,它包括指令寄存器1(IR),状态机控制模块5,指令解码模块2,数据寄存器读写模块。指令寄存器1(IR)是一个包含在JTAG端口控制器内的8位寄存器,用于控制数据寄存器(DR)的读写操作。状态机控制模块5用于控制JTAG端口控制器进入何种状态,具体描述见前面对图2的说明。指令解码模块2的描述见前面图3的说明。数据寄存器读写模块用于控制除CPU调试状态寄存器(CPUSCR)以外的所有数据寄存器(DR)的读写操作,接收输入的串行数据信息,输出串行输出数据信息。下面先以第一数据寄存器3即OTC寄存器为例做具体说明。步骤一当指令寄存器1中的R/W位为0,即写操作时,数据输出端口(TDO)被第一选通器6送到j_otc_si信号上。如果R/W位为1即读操作,第一数据寄存器3即OTC寄存器的第0位q_otc被第一选通器6送到j_otc_si信号上。步骤二1位信号j_otc_si和15位信号q_otc[15:1]经信号组合模块7组合成一个新的16位信号{j—otc—si,q_otc[15:l]}。步骤三当指令解码模块2的输出信号Sel_otC被拉高,即OTC寄存器被选中时,新的组合信号{j_otC_Si,q_0tc[15:l]}被第二选通器9送到信号cLotc[15:0]上。步骤四信号cLotc[15:0]在TCK上升沿时被保存到第一数据寄存器3即OTC寄存器中。此时,TDI(写OTC寄存器)或(Lotc[O]即OTC寄存器的第0位的旧值(读OTC寄存器)被保存到0TC寄存器的第15位,而0TC寄存器的第1位的旧值被移到第0位。经过16个TCK时钟周期后,如果是写OTC寄存器操作,OTC寄存器的16位值全部更新为测试访问端口中数据输入端口TDI的串行数据信息;如果是读OTC寄存器操作,OTC寄存器的168位值全部更新为OTC寄存器的16位旧值,换句话说,经过16个TCK时钟周期后,OTC寄存器保持不变。此操作表明OTC寄存器被选中且是写操作时,串行数据信息TDI被依次存入0TC寄存器的16位数据中(从最低位q—otc到最高位q_otc[15]),即串行数据信息TDI第一个值最终被存入q_otc,第二个值最终被存入q_otc[1],第十六个值最终被存入q_otc[15]。步骤五信号q_Otc[15:0](即OTC寄存器输出信号)是由信号q_otc(信号q_otc[15:0]的第O位)和信号(Lotc[15:1](信号(Lotc[15:0]的第15位到第1位)构成。当信号sel_otC被拉高时,信号q_otc通过第三选通器10被送到端口寄存器4的输入端的信号d_tdo。信号d_tdo在TCK的下降沿被保存到端口寄存器4即TDO寄存器中。经过16个TCK时钟周期后,第一数据寄存器3即OTC寄存器的16位值全部从端口寄存器4输出端输出。此操作表明OTC寄存器被选中时(此时在Shift-DR状态),OTC寄存器的16位值依次被送到端口寄存器4输出端端口(从最低位q—otc到最高位q—otc[15]),即q_otc被送到输出端TDO的的第1个数据,q_otc[l]被送到输出端TDO的第2个数据,q_otc[15]被送到输出端口TDO的第16个数据。综上所述,如果是写OTC寄存器,我们可以得知第一个TDI的值是OTC寄存器的第0位的新值;第一个TDO的值是OTC寄存器的第0位的旧值。此时我们在TCK的上升沿比较TDI和TDO,如果它们不相同则表明OTC寄存器的第0位会被改变,如果相同则表明OTC寄存器的第0位不会改变。同理我们可以得知OTC寄存器的其他位是否会有改变。接着我们用图5的波形图来进一步说明。此波形图的前提是指令寄存器1被写成8'b00000011,即R/W位为0,RS4RSO位为5'bOOOll,表明写OTC寄存器操作。信号q_otc是OTC寄存器输出信号cLotc[15:0]的第0位(事件1)。当JTAG端口控制器由C即ture-DR状态变为Shift-DR状态时,信号Sel_otC被拉高(事件2),表明选中OTC寄存器可以进行移位操作了。当信号sel_otC被拉高时,q_otc通过第三选通器10被送到d_tdo(事件3),即事件3由事件1和事件2共同决定。在TCK下降沿(事件4)将d_tdo(事件3)的值存入TDO寄存器中(事件5),即事件5由事件4和事件3共同决定。综上可知,寄存器OTC的第0位旧值在TCK下降沿后被送到了TDO端口上。因为R/W为O,所以TDI的值通过第一选通器6被送到信号j_otc_si(事件6)。信号q_otc[15:1]是OTC寄存器输出信号q_otc[15:0]的高15位(q—otc[15]q_otc[1])(事件7)。当信号Sel_otC被拉高后(事件2),新的组合信号{j_otC_si,q_otc[15:l]}通过第二选通器9被送到d_otc[15:0](事件8),即事件8由事件2,事件6和事件7—起决定。在TCK上升沿(事件9)将cLotc[15:0](事件8)的值存入OTC寄存器(Lotc[15:0]中(事件a)。综上可知,第一数据寄存器3即OTC寄存器的值由OOOF变成了0007,是因为第一个TDI的值被送到了OTC寄存器的第15位(经过16个TCK时钟后,该数据信息会被移位到OTC寄存器的第0位),OTC寄存器的第0位被移出到TDO端口上。我们在TCK的上升沿(事件9)比较TDI和TDO,可以发现OTC寄存器的第0位由原来的1(被送到端口寄存器4输出端即TDO端口上,即事件5)变成了0(第一个TDI的值为0,被送到了寄存器OTC的第15位,当写OTC操作完成后会被送到OTC的第0位)。同理,我们通过事件b能发现OTC的第0位到第3位均由1变成了0,通过事件c能发现OTC的第4位到第11位没有改变,通过事件d能发现OTC的第12位到第15位均由O变成了1。当JTAG端口控制器状态由Shift-DR状态变成Exitl-DR状态时,信号Sel_otC被拉低(事件e),表明OTC寄存器不能进行移位操作了,OTC寄存器的值会保持FOOO不变(即信号Sel_otC为低时,将保持OTC寄存器的输出端数据不变;),直到下一次移位操作。sel_0tc:OTC寄存器的选择信号。sel_otC为高表示选中了OTC寄存器进行移位操作。Sel_otC为低表示没选中OTC寄存器。j_otc_si:第一选通器6的输出。q—otc[15:1]:寄存器OTC的第15位到第1位。d_otc[15:0]:寄存器OTC的输入。q_otc[15:0]:寄存器OTC的输出。q_otc:寄存器OTC的第0位。d_tdo:寄存器TDO即端口寄存器4的输入,第二选通器9的输出。TDO:JTAG的串行输出数据。TDI:JTAG的串行输入数据。图6是OTC寄存器在Shift-DR状态期间的移位操作,对应于图5中OTC寄存器由OOOF变为FOOO的过程。只列了时钟周期为0,1,2,14,15,16时的情况。经过16个TCK时钟周期后(从时钟周期0到时钟周期15),OTC寄存器的值由OOOF变为FOOO。到时钟周期16时,OTC寄存器的第15位为时钟周期15时的TDI值,OTC寄存器的第14位为时钟周期14时的TDI值,OTC寄存器的第13位为时钟周期13时的数据输入端口TDI的值,依此类推。上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。权利要求一种JTAG端口控制器,至少包括测试访问端口、指令寄存器(1)、指令解码模块(2)、第一数据寄存器(3)、端口寄存器(4),其特征在于还包括状态机控制模块(5)、第一选通器(6)、信号组合模块(7)、信号分离模块(8)、第二选通器(9),其中,所述状态机控制模块(5),用于控制所述JTAG端口控制器所处的工作状态;所述第一选通器(6),根据所述指令寄存器(1)的控制位信息,接受来自所述测试访问端口中数据输入端口(TDI)的串行数据信息并从其输出端口输出单比特信息;或,接受来自所述信号分离模块(8)一个输出端口输出的位于所述第一数据寄存器(3)中第0位信息并从其输出端口输出该第0位信息;所述信号组合模块(7),将所述信号分离模块(8)一个输出端口输出的位于所述第一数据寄存器(3)中第1位至最高位信息与所述第一选通器(6)输出的单比特信息组合成并行数据信息,其中,单比特信息位于该并行数据信息的最高位;所述第一数据寄存器(3)为上升沿触发的寄存器,在时钟的上升沿将并行数据信息输出至该寄存器的输出端;所述信号分离模块(8),接受来自所述第一数据寄存器(3)输出的并行数据信息,并将该并行数据信息的第0位信息与其它位信息分离;所述端口寄存器(4)为下降沿触发的寄存器,接收来自所述信号分离模块(8)的第0位信息并在时钟的下降沿将该第0位信息输出至该寄存器的输出端。所述第二选通器(9),根据所述指令寄存器(1)的控制位信息,控制将何种并行数据送到所述第一数据寄存器(3)的输入端,当该第二选通器(9)一个输入端有效时,将所述信号组合模块(7)输出端口输出的并行数据信息选送到所述第一数据寄存器(3)的输入端;当该第二选通器(9)另一个输入端有效时,将保持所述第一数据寄存器(3)的输出端数据不变。2.根据权利要求1或2所述的JTAG端口控制器,其特征在于还包括第三选通器(10)和第二数据寄存器(ll),该第三选通器(10)位于所述数据寄存器(3、11)与端口寄存器(4)之间,用于选择第一数据寄存器(3)和第二数据寄存器(11)第0位信息的输出。3.根据权利要求l所述的,其特征在于所述测试访问端口还包括模式选择端口(TMS)、时钟端口(TCK)、数据输出端口(TD0)和复位端口(TRST)。全文摘要一种JTAG端口控制器,至少包括指令寄存器、指令解码模块、第一数据寄存器、端口寄存器、状态机控制模块、第一选通器、第二选通器、信号组合模块和信号分离模块,其中,第一选通器接受来自所述测试访问端口中数据输入端口的串行数据信息并依次从其一个输出端口输出单比特信息;信号组合模块将第一数据寄存器的第1位至最高位信息与单比特信息组合成并行数据信息;所述第一数据寄存器为上升沿触发的寄存器;所述信号分离模块,将第一数据寄存器输出的并行数据信息的第0位信息与其它位信息分离;所述端口寄存器为下降沿触发的寄存器。本发明具有在进行写操作的同时,就能实时地观测到调试过程中信息的变化的优点。文档编号G01R31/28GK101782626SQ20101012652公开日2010年7月21日申请日期2010年3月11日优先权日2010年3月11日发明者于麦口,肖佐楠,蒋小梅,郑茳申请人:苏州国芯科技有限公司