发明内容
由于现有方法存在上述问题,本申请提出一种在FPGA芯片内复用JTAG管脚的电路及方法。
第一方面,本申请提出一种在FPGA芯片内复用JTAG管脚的电路,包括:
多个输入端子,包括测试时钟TCK管脚、测试模式选择TMS管脚和测试数据输入TDI管脚;其中,TCK管脚提供TCK时钟,TMS管脚提供TMS信号,TDI管脚提供TDI信号;
测试数据输出TDO管脚;
虚拟联合测试行动组JTAG器件,用于在所述TCK时钟的控制下,根据所述TMS信号和所述TDI信号,产生虚拟JTAG输出;或者
用户逻辑器件,用于在所述TCK时钟的控制下,根据所述TMS信号和所述TDI信号,产生用户逻辑JTAG输出;
选通电路,用于根据用户逻辑的控制,在一种情况下,将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述虚拟JTAG器件,将所述虚拟JTAG器件的虚拟JTAG输出通过所述TDO管脚输出;在另一种情况下,将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述用户逻辑器件,将所述用户逻辑器件的用户逻辑JTAG输出通过所述TDO管脚输出。
在一种可能的实现中,所述选通电路包括:
配置位单元,用于输出第一信号,所述第一信号用于使能与门以及作为所述与门的一个输入信号;
JTAG测试访问端口TAP状态机,用于根据所述TCK时钟、所述TMS信号、所述TDI信号以及它们之间的时序关系,输出第二信号和第三信号,所述第二信号与所述第一信号用于确定所述与门输出的第四信号,所述第四信号用于确定第一选择器的第一选择结果和第二选择器的第二选择结果,所述第三信号在所述虚拟JTAG器件被使能的情况下,被发送至所述虚拟JTAG器件,或者在所述用户逻辑器件被使能的情况下,被发送至所述用户逻辑器件;
所述与门,用于根据所述第一信号和所述第二信号,输出所述第四信号;
所述第一选择器,用于根据所述第四信号,确定第一选择结果,所述第一选择结果为在一种情况下,将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述虚拟JTAG器件;在另一种情况下,将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述用户逻辑器件;
所述第二选择器,用于根据所述第四信号,确定第二选择结果,所述第二选择结果为在一种情况下,通过所述TDO管脚输出所述虚拟JTAG器件的虚拟JTAG输出;在另一种情况下,通过所述TDO管脚输出所述用户逻辑器件的用户逻辑JTAG输出。
在一种可能的实现中,所述FPGA芯片还包括:
外部输入管脚,用于输出第五信号,所述第五信号、所述第一信号以及所述第二信号用于确定所述与门输出的第四信号。
第二方面,本申请提出一种在FPGA芯片内复用JTAG管脚的方法,包括:
在TCK管脚提供的TCK时钟的控制下,根据TMS管脚提供的TMS信号和TDI管脚提供的TDI信号,通过虚拟JTAG器件产生虚拟JTAG输出;或者
在TCK管脚提供的TCK时钟的控制下,根据TMS管脚提供的TMS信号和TDI管脚提供的TDI信号,通过用户逻辑器件产生用户逻辑JTAG输出;
根据用户逻辑的控制,在一种情况下,通过选通电路将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述虚拟JTAG器件,将所述虚拟JTAG器件的虚拟JTAG输出通过TDO管脚输出;在另一种情况下,通过选通电路将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述用户逻辑器件,将所述用户逻辑器件的用户逻辑JTAG输出通过所述TDO管脚输出。
在一种可能的实现中,所述选通电路包括配置位单元、JTAG TAP状态机、与门、第一选择器和第二选择器;
所述根据用户逻辑的控制,在一种情况下,通过选通电路将所述TMS信号和所述TDI信号提供给所述虚拟JTAG器件,将所述虚拟JTAG器件的虚拟JTAG输出通过TDO管脚输出;在另一种情况下,通过选通电路将所述TMS信号和所述TDI信号提供给所述用户逻辑器件,将所述用户逻辑器件的用户逻辑JTAG输出通过所述TDO管脚输出,包括:
通过配置位单元输出第一信号,所述第一信号用于使能与门以及作为所述与门的一个输入信号;
根据所述TCK时钟、所述TMS信号、所述TDI信号以及它们之间的时序关系,通过JTAG TAP状态机输出第二信号和第三信号,所述第二信号与所述第一信号用于确定所述与门输出的第四信号,所述第四信号用于确定第一选择器的第一选择结果和第二选择器的第二选择结果,所述第三信号在所述虚拟JTAG器件被使能的情况下,被发送至所述虚拟JTAG器件,或者在所述用户逻辑器件被使能的情况下,被发送至所述用户逻辑器件;
根据所述第一信号和所述第二信号,通过所述与门输出所述第四信号;
根据所述第四信号,通过所述第一选择器确定第一选择结果,所述第一选择结果为在一种情况下,将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述虚拟JTAG器件;在另一种情况下,将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述用户逻辑器件;
根据所述第四信号,通过所述第二选择器确定第二选择结果,所述第二选择结果为在一种情况下,通过所述TDO管脚输出所述虚拟JTAG器件的虚拟JTAG输出;在另一种情况下,通过所述TDO管脚输出所述用户逻辑器件的用户逻辑JTAG输出。
在一种可能的实现中,所述方法还包括:
通过外部输入管脚输出第五信号;
根据所述第五信号、所述第一信号以及所述第二信号,确定所述与门输出的第四信号。
第三方面,本申请还提出一种在FPGA芯片内复用JTAG管脚的装置,包括
处理单元,用于在TCK管脚提供的TCK时钟的控制下,根据TMS管脚提供的TMS信号和TDI管脚提供的TDI信号,通过虚拟JTAG器件产生虚拟JTAG输出;或者
所述处理单元,用于在TCK管脚提供的TCK时钟的控制下,根据TMS管脚提供的TMS信号和TDI管脚提供的TDI信号,通过用户逻辑器件产生用户逻辑JTAG输出;
收发单元,用于根据用户逻辑的控制,在一种情况下通过选通电路将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述虚拟JTAG器件,将所述虚拟JTAG器件的虚拟JTAG输出通过TDO管脚输出;在另一种情况下通过选通电路将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述用户逻辑器件,将所述用户逻辑器件的用户逻辑JTAG输出通过所述TDO管脚输出。
第四方面,本申请还提出一种在FPGA芯片内复用JTAG管脚的装置,包括至少一个处理器,所述处理器用于执行存储器中存储的程序,当所述程序被执行时,使得所述装置执行如第二方面及各种可能的实现中的各个步骤。
第五方面,本申请还提出一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第二方面及各种可能的实现中的各个步骤。
由上述技术方案可知,本申请中的虚拟JTAG器件和用户逻辑器件通过共用四个JTAG管脚,只需将四个JTAG管脚连接到一组用户输入/输出(Input/Output,IO)接口上通过一个调试器进行调试,或者通过一个编程器进行编程,或者通过一个测试器进行测试,减少了用户IO接口和调试器、编程器或测试器的使用数量,减小了资源开销。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
需要说明的是,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一选择器和第二选择器等是用于区别不同的选择器,而不是用于描述目标对象的特定顺序。在本申请实施例中,“示例性的”、“举例来说”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”、“举例来说”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
在一种可能的实现中,越来越多的应用设计企业会将用户逻辑设计烧录到FPGA器件中。其中很多用户会在用户逻辑设计中集成复杂的带有JTAG调试功能的设计,比如MCU设计等。为方便调试MCU设计中的MCU程序,用户会将MCU设计的一组JTAG管脚,如TCK管脚、TMS管脚、TDI管脚和TDO管脚连接到一组用户IO接口上,通过用户IO接口连接调试器进行调试,或者连接编程器进行编程,或者连接测试器进行测试。如此,当有多个MCU设计时,便会有多组JTAG管脚。此时,需要通过多组用户IO接口连接多个调试器进行调试,或者连接多个编程器进行编程,或者连接多个测试器进行测试,造成大量的资源开销。
为解决上述技术问题,本申请实施例提出了一种在FPGA芯片内复用JTAG管脚的电路。该电路的示意图如图1a所示。该电路的示意图具体包括:多个输入端子、TDO管脚104、虚拟JTAG器件105、用户逻辑器件106和选通电路107;其中,多个输入端子包括:TCK管脚101,用于提供TCK时钟、TMS管脚102,用于提供TMS信号、TDI管脚103,用于提供TDI信号,选通电路107包括配置位单元1071、JTAG TAP状态机1072、与门1073、第一选择器1074和第二选择器1075。
参阅图1a,根据用户逻辑的控制,在一种情况下(即虚拟JTAG器件105被使能,用户逻辑器件106被关闭),虚拟JTAG器件105分别与选通电路107、TCK管脚101、TMS管脚102和TDO管脚104相连;其中,选通电路107与TDI管脚103相连。选通电路107将TCK时钟、TMS信号和TDI信号提供给虚拟JTAG器件105,将虚拟JTAG器件105的虚拟JTAG输出通过TDO管脚104输出。或者
根据用户逻辑的控制,在另一种情况下(即用户逻辑器件106被使能,虚拟JTAG器件105被关闭),用户逻辑器件106分别与选通电路107、TCK管脚101、TMS管脚102和TDO管脚104相连;其中,选通电路107与TDI管脚103相连。选通电路107将TCK时钟、TMS信号和TDI信号提供给用户逻辑器件106,将用户逻辑器件106的用户逻辑JTAG输出通过TDO管脚104输出。可以理解的是,用户逻辑器件106通过将用户逻辑设计烧录到FPGA器件中获得。
参阅图1a,配置位单元1071用于输出第一信号,该第一信号用于使能与门1073以及作为与门1073的一个输入信号。可以理解的是,配置位单元1071是烧录在电路中的,并且其输出的第一信号在电路接通电源被供电的情况下,置为1,在电路被断电的情况下,才置为0。第一信号为1表示使能与门1073,并且第一信号作为与门1073的一个输入信号。
JTAG TAP状态机1072与TCK管脚101、TMS管脚102和TDI管脚103相连,用于根据TCK时钟、TMS信号、TDI信号以及它们之间的时序关系,输出第二信号和第三信号,所述第二信号与所述第一信号用于确定与门1073输出的第四信号,所述第四信号用于确定第一选择器1074的第一选择结果和第二选择器1075的第二选择结果,所述第三信号在虚拟JTAG器件105被使能的情况下,被发送至虚拟JTAG器件105,或者在用户逻辑器件106被使能的情况下,被发送至用户逻辑器件106。
与门1073用于根据第一信号和第二信号,输出第四信号。示例性的,当第一信号为1,第二信号也为1时,与门1073输出的第四信号即为1;或者当第一信号为1,第二信号为0时,与门1073输出的第四信号为0。
在此需要说明的是,以图1a中的“#Enable”代表使能用户逻辑器件106为例,此时需要与门1073输出的第四信号为1。又由于与门1073的一个输入信号是配置位单元1071输出的第一信号,即1,因此,与门1073的另一个输入信号需要为1时,才能使得与门1073输出的第四信号为1。也即是说,JTAG TAP状态机1072输出的第二信号为1,并且第二信号作为与门1073的另一个输入信号,才能使得与门1073输出的第四信号为1。
第一选择器1074用于根据第四信号,确定第一选择结果,所述第一选择结果为在一种情况下(即虚拟JTAG器件105被使能,用户逻辑器件106被关闭),将TCK时钟、TMS信号和TDI信号提供给虚拟JTAG器件105;在另一种情况下(即用户逻辑器件106被使能,虚拟JTAG器件105被关闭),将TCK时钟、TMS信号和TDI信号提供给用户逻辑器件106。在一个例子中,如图1a所示,若第四信号为0,则确定使能虚拟JTAG器件105,将TCK时钟、TMS信号和TDI信号提供给虚拟JTAG器件105;若第四信号为1,则确定使能用户逻辑器件106,将TCK时钟、TMS信号和TDI信号提供给用户逻辑器件106。
第二选择器1075用于根据第四信号,确定第二选择结果,所述第二选择结果为在一种情况下(即虚拟JTAG器件105被使能,用户逻辑器件106被关闭),通过TDO管脚104输出虚拟JTAG器件105的虚拟JTAG输出;在另一种情况下(即用户逻辑器件106被使能,虚拟JTAG器件105被关闭),通过TDO管脚104输出用户逻辑器件106的用户逻辑JTAG输出。在一个例子中,如图1a所示,若第四信号为0,则确定使能虚拟JTAG器件105,通过TDO管脚104输出虚拟JTAG器件105的虚拟JTAG输出;若第四信号为1,则确定使能用户逻辑器件106,通过TDO管脚104输出用户逻辑器件106的用户逻辑JTAG输出。
在一种可能的实现中,前述TCK管脚101、TMS管脚102、TDI管脚103、TDO管脚104通过四个输入/输出IO接口连接到前述电路外部的一个调试器、一个编程器或者一个测试器。当第一选择器1074确定使能虚拟JTAG器件105时,调试器会对JTAG TAP状态机1072和虚拟JTAG器件105进行调试,或者编程器会对JTAG TAP状态机1072和虚拟JTAG器件105进行编程,或者测试器会对JTAG TAP状态机1072和虚拟JTAG器件105进行测试。当第一选择器1074确定使能用户逻辑器件106时,调试器会对JTAG TAP状态机1072和用户逻辑器件106进行调试,或者编程器会对JTAG TAP状态机1072和用户逻辑器件106进行编程,或者测试器会对JTAG TAP状态机1072和用户逻辑器件106进行测试。
可以理解的是,用户逻辑器件106在使用过程中,可能会出现短路。在这样紧急的情况下,需要及时关闭用户逻辑器件106,也就是说,与门1073的输出需要及时变为0。因此,在本申请实施例中,在图1a所示的电路的基础上增加了一个外部输入管脚108,如图1b所示。该外部输入管脚108用于输出第五信号。该外部输入管脚108在电路接通电源被供电的情况下,输出的第五信号置为1;遇到紧急情况,如用户逻辑器件106在使用过程中,出现了短路,则将输出的第五信号置为0。所述第五信号、所述第一信号以及所述第二信号共同确定与门1073输出的第四信号。示例性的,当第五信号、第一信号和第二信号均为1时,与门1073输出的第四信号为1,此时,仍是使能用户逻辑器件106,关闭虚拟JTAG器件105。当第五信号为0时,即使第一信号和第二信号均为1,此时与门1073输出的第四信号为0,此时会关闭用户逻辑器件106,使能虚拟JTAG器件105,如此通过外部输入管脚108便可以控制与门1073输出的第四信号,从而有效控制在用户逻辑器件106出现短路的情况下,及时关闭用户逻辑器件106,使能虚拟JTAG器件105。
由上述技术方案可知,本申请实施例中的第一虚拟JTAG器件和第一FPGA用户逻辑器件通过共用四个JTAG管脚,只需将四个JTAG管脚连接到一组用户IO接口上通过一个调试器进行调试,或者通过一个编程器进行编程,或者通过一个测试器进行测试,减少了用户IO接口和调试器、编程器或测试器的使用数量,减小了资源开销。
图2为本申请实施例提供的一种在FPGA芯片内复用JTAG管脚的方法的流程示意图,该流程示意图包括:S201-S202;
S201,在TCK管脚提供的TCK时钟的控制下,根据TMS管脚提供的TMS信号和TDI管脚提供的TDI信号,通过虚拟JTAG器件产生虚拟JTAG输出;或者在TCK管脚提供的TCK时钟的控制下,根据TMS管脚提供的TMS信号和TDI管脚提供的TDI信号,通过用户逻辑器件产生用户逻辑JTAG输出。
在本申请实施例中,TCK管脚101提供TCK时钟、TMS管脚102提供TMS信号、TDI管脚103提供TDI信号。在TCK时钟的控制下,根据TMS信号和TDI信号,通过虚拟JTAG器件105产生虚拟JTAG输出;或者在TCK时钟的控制下,根据TMS信号和TDI信号,通过用户逻辑器件106产生用户逻辑JTAG输出。
S202,根据用户逻辑的控制,在一种情况下,通过选通电路将TCK时钟、TMS信号和TDI信号提供给虚拟JTAG器件,将虚拟JTAG器件的虚拟JTAG输出通过TDO管脚输出;在另一种情况下,通过选通电路将TCK时钟、TMS信号和TDI信号提供给用户逻辑器件,将用户逻辑器件的用户逻辑JTAG输出通过TDO管脚输出。
在本申请实施例中,根据用户逻辑的控制,在一种情况下(即虚拟JTAG器件105被使能,用户逻辑器件106被关闭),通过选通电路107将TCK时钟、TMS信号和TDI信号提供给虚拟JTAG器件105,将虚拟JTAG器件105的虚拟JTAG输出通过TDO管脚104输出;在另一种情况下(即用户逻辑器件106被使能,虚拟JTAG器件105被关闭),通过选通电路107将TCK时钟、TMS信号和TDI信号提供给用户逻辑器件106,将用户逻辑器件106的用户逻辑JTAG输出通过TDO管脚104输出。
在一个例子中,通过配置位单元1071输出第一信号,所述第一信号用于使能与门1073以及作为与门1073的一个输入信号。根据TCK时钟、TMS信号、TDI信号以及它们之间的时序关系,通过JTAG TAP状态机1072输出第二信号和第三信号,所述第二信号与所述第一信号用于确定与门1073输出的第四信号,所述第四信号用于确定第一选择器1074的第一选择结果和第二选择器1075的第二选择结果,所述第三信号在虚拟JTAG器件105被使能的情况下,被发送至虚拟JTAG器件105,或者在用户逻辑器件106被使能的情况下,被发送至用户逻辑器件106。根据第一信号和第二信号,通过与门1073输出第四信号。根据第四信号,通过第一选择器1074确定第一选择结果,所述第一选择结果为在一种情况下,将TCK时钟、TMS信号和TDI信号提供给虚拟JTAG器件105;在另一种情况下,将TCK时钟、TMS信号和TDI信号提供给用户逻辑器件106。根据第四信号,通过第二选择器确定第二选择结果,所述第二选择结果为在一种情况下,通过TDO管脚104输出虚拟JTAG器件105的虚拟JTAG输出;在另一种情况下,通过TDO管脚104输出用户逻辑器件106的用户逻辑JTAG输出。
在一种可能的实现中,所述方法还包括:通过外部输入管脚108输出第五信号。根据第五信号、第一信号以及第二信号,确定与门1073输出的第四信号。
本申请实施例中的虚拟JTAG器件和用户逻辑器件通过共用四个JTAG管脚,只需将四个JTAG管脚连接到一组用户IO接口上通过一个调试器进行调试,或者通过一个编程器进行编程,或者通过一个测试器进行测试,减少了用户IO接口和调试器、编程器或测试器的使用数量,减小了资源开销。
图3为本申请实施例提供的一种在FPGA芯片内复用JTAG管脚的装置,包括:
处理单元301用于在TCK管脚提供的TCK时钟的控制下,根据TMS管脚提供的TMS信号和TDI管脚提供的TDI信号,通过虚拟JTAG器件产生虚拟JTAG输出;或者
所述处理单元301用于在TCK管脚提供的TCK时钟的控制下,根据TMS管脚提供的TMS信号和TDI管脚提供的TDI信号,通过用户逻辑器件产生用户逻辑JTAG输出;
收发单元302用于根据用户逻辑的控制,在一种情况下通过选通电路将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述虚拟JTAG器件,将所述虚拟JTAG器件的虚拟JTAG输出通过TDO管脚输出;在另一种情况下通过选通电路将所述TCK时钟、所述TMS信号和所述TDI信号提供给所述用户逻辑器件,将所述用户逻辑器件的用户逻辑JTAG输出通过所述TDO管脚输出。
在一种可能的实现中,收发单元302用于通过配置位单元输出第一信号,所述第一信号用于使能与门以及作为与门的一个输入信号;
收发单元302用于根据TCK时钟、TMS信号、TDI信号以及它们之间的时序关系,通过JTAG TAP状态机输出第二信号和第三信号,所述第二信号与所述第一信号用于确定与门输出的第四信号,所述第四信号用于确定第一选择器的第一选择结果和第二选择器的第二选择结果,所述第三信号在虚拟JTAG器件被使能的情况下,被发送至虚拟JTAG器件,或者在用户逻辑器件被使能的情况下,被发送至用户逻辑器件;
收发单元302用于根据第一信号和第二信号,通过与门输出第四信号;
处理单元301用于根据第四信号,通过第一选择器确定第一选择结果,所述第一选择结果为在一种情况下,将TCK时钟、TMS信号和TDI信号提供给虚拟JTAG器件;在另一种情况下,将TCK时钟、TMS信号和TDI信号提供给用户逻辑器件;
处理单元301用于根据第四信号,通过第二选择器确定第二选择结果,所述第二选择结果为在一种情况下,通过TDO管脚输出虚拟JTAG器件的虚拟JTAG输出;在另一种情况下,通过TDO管脚输出用户逻辑器件的用户逻辑JTAG输出。
在一种可能的实现中,收发单元302用于通过外部输入管脚输出第五信号;
处理单元301用于根据第五信号、第一信号以及第二信号,确定与门输出的第四信号。
本申请实施例还提供一种在FPGA芯片内复用JTAG管脚的装置,包括至少一个处理器,所述处理器用于执行存储器中存储的程序,当所述程序被执行时,使得所述装置执行前述一种在FPGA芯片内复用JTAG管脚的方法的各个步骤。
本申请实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述一种在FPGA芯片内复用JTAG管脚的方法的各个步骤。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。