具体实施方式
在本环境中电子设备的表达意味着包括设备如:个人数字助理(PDA)、蜂窝电话、计算终端、手持计算机、相机、多媒体设备、消耗者设备、DECT设备等。这个清单并不意味着是详尽的。
子模块的实例是:GSM/UMTS调制解调器、MP3播放器、FM收音机、PDA、彩色显示器、键盘等。这个清单并不意味着是详尽的。
如图1和图2中所示例,根据本发明的电子设备10包括主控制处理器11和几个可附上的/可拆下的子模块12,13。电子设备10的主板14包括连接器15等,其允许子模块12,13被附着和被拆下。存在总线结构和将连接器15与控制处理器11互连的若干互连。在本实施例中,存在回路互连16,其形成串行连接根据JTAD标准专用的TDI和TDO数据管脚的闭合回路。在空插槽(其中没有子模块被***的插槽)情况下,通过连接TDI数据管脚和TDO数据管脚回路被闭合。除这两个管脚以外,连接器15还可包括由运行电子设备10的应用(被称为应用连接17)所使用的管脚,且它可包括由JTAG标准所定义的TAP管脚和TAP连接18。
取决于所需要的应用,在送电之前或者当应用正在运行时通过插进新的子模块可由用户修改***的硬件配置。在图1中,电子设备10被示在包括仅一个子模块12的配置中。存在其中TDO和TDI管脚被串行连接的两个空插槽。在图2中,示出同一电子设备10。第二子模块13已经被附着。运行电子设备10的主应用的控制处理器11能够快速探测到***配置的这个修改。子模块可以***进连接器以修改***的配置。控制处理器11可以支持主应用硬件和软件,例如电话应用或PDA应用。控制处理器11具有主JTAG控制器19的特点,其可以串行地访问每个子模块12,13的从属机JTAG20。它探测所连接的子模块12,13的存在和类型,并且相应地使应用软件适应。除了从属JTAG控制器20以外,子模块12,13还包括应用专用硬件和软件(在图1和2中未被示例)。
根据本发明,标准JTAG协议被用来实时探测子模块12,13的连接和断开并且用来在每个子模块12,13上读取和写入一些参数。
在本实施例中,连接器15是以与Test Access Port(测试存取端口)(TAP)兼容的至少四个管脚:TMS,TDI,TDO,TCLK,外加TRST_N作为选用管脚为特点的JTAG连接器。其它管脚可由例如下述应用所使用:存储器的数据和地址总线以及键盘的控制总线。JTAG连接器15被串行链接在主板14上。当连接器15未被使用时,管脚TDI和TDO从机械上或电子上被短路。当子模块***进时,管脚TDI,TDO被连接到从属JTAG控制器2O的相应管脚。线TCK,TMS,TRST_N对于所有子模块12,13是公用的。当JTAG标准支持对从属JTAG控制器20复位的其它方法时,TRST_N管脚可以被去除。
子模块12的实例被示例于图3。每个子模块具有被存储在数据寄存器21中的特定(优选地唯一的)识别符IDCODE。在32位上被编码的这个识别符可与JTAG标准兼容。它可包含版本号和由应用所使用的其它参数,其可以通过TAP连接器15被读取。这样通过扫描输入与所需要一样多的位直至探测到已知的识别符IDCODE,控制处理器11能够探测哪个子模块被连接到电子设备10。当检查是否所有部件都存在且是否是正确类型时,相同的概念通常被应用到具有外部测试设备的测试板。
子模块被装备有作为子模块12上独立芯片而被实施的或者被集成在子模块12的芯片中的标准JTAG控制器20。
从属JTAG控制器20是基于Join Test Action Group(JTAG)标准。JTAG校准的详细说明可见于IEEE Standard Test Access Portand Boundary-Scan Architecture,IEEE Standard 1149.1-1990。JTAG硬件包括Test Access Port(TAP)22、翻译被发送到JTAG子模块12上的命令的TAP控制器(TAPC)23、指令寄存器(IR)24、以及Test Data Registers(TDR)25组。IDCODE被存储在TDR25之一即寄存器21中。所有的寄存器可以在移位寄存器中被捕捉且被移出(shift out)到TDO端口26,或根据被从TDI端口27被移入(shifted-in)的值而被更新。
在本实施例中,TAP22包括下述管脚:
TCK(Test clock)(测试时钟):运行在20MHz范围内且独立于应用时钟的JTAG时钟。
TDI(Test Data Input)(测试数据输入)27:JTAG控制器20中的串行输入,在TCK的上升沿被采样。
TDO(Test Date Output)(测试数据输出)26:JTAG控制器20的串行输出,在TCK的下降沿被触发。
TMS(Test Mode Select)(测试模式选择)28:用于控制TAPC23,在TCK的上升沿被采样。
TRST_N(Test Reset)(测试复位):TAPC23的任选异步复位。
优选地,TAP控制器23遵从图4中所示例的下述标准Finite StateMachine(有限状态机)(FSM)的操作,借此所有过渡由TMS输入28的状态来控制。下述表达被用在图4中:
Capture(捕捉):在移位寄存器中拷贝寄存器;
Update(更新):将移位寄存器拷贝到寄存器;
指令保持激活,直至再次得到Update_IR。
状态机的更详细说明可以见于上述提到的IEEE标准及US专利6,000,051,其两者被引入作为参考。
TAP控制器23更新指令寄存器IR24。然后相应的指令被执行且可以启动标准的测试程序或连接TDI输入27和TDO输出26之间的数据寄存器TDR25,其将经由回路16和控制处理器11被扫描入或扫描出。
标准的JTAG指令是:
INTEST:用于测试
EXTEST:用于测试
SAMPLE/PRELOAD:用于测试
BYPASS(IR寄存器24根本被设置到逻辑“1”):这个指令连接TDI27和TDO26之间的BYPASS寄存器28。
IDCODE:这个指令连接TDI26和TDO27之间的子模块12的识别码。
为了简化实施,优选地是具有下述限制性:所有子模块的JTAG指令寄存器具有为Ninstr_长度位(例如6位)的相同长度,因此能够将Ninstr_长度编码成2的幂(power2)指令。在简单方案中每个指令(标准指令除外)可以寻址被包括在每个子模块12,13中的特殊TDR寄存器25之一。具有不同长度的指令寄存器的方案可以得到研制,但将使配置探测更加复杂。对于本发明的本实施,在复位时或操作期间利用即将被控制处理器11读取的子模块12,13参数一些应用数据寄存器TDR25被初始化。相同或其它的寄存器可以被写入,以设置子模块12,13的配置参数。为了存取这些数据寄存器25,新的应用具体指令被添加到标准指令中,像例如:
CONFIG_REGx:连接在TDI27和TDO26之间的当前子模块的寄存器REGx。捕捉、移位及更新动作可被执行。
根据本发明,如图5中所示例,控制处理器11被装备有特定主JTAG控制器19,其监视子模块12,13的从属JTAG控制器20。在标准的JTAG测试环境(由IEEE标准所规定)中这个功能由测试设备进行。如下所解释,主JTAG控制器19可以以在微处理器上运行的软件或以硬件被实施。
在图5中,给出主JTAG控制器19的微处理器的实施。主JTAG控制器19完全地由在微处理器29上运行的软件实施,所述微处理器装备有能够驱动TDO,TMS,TRST_N并且输入TDI输入的并行端口30。微处理器29可与被用来运行电子设备10的主应用31(例如蜂窝电话的电话应用)的微处理器相同。
运行在微处理器29上的软件接收具有来自主应用31的参数的命令,并且返回具有来自子模块12,13的参数的***配置。在下章节将给出操作的详细说明。微处理器29产生信号TCK,TMS,TDO,TRST_N的全部波形并且根据主机的JTAG协议(与从属机相比较二进制极性被颠倒)对输入TDI的状态进行采样:
TOD在TCK的下降沿被触发。
TMS在TCK的下降沿被触发。
TDI在TCK的上升沿被采样。
作为选择地,如图6所示例JTAG主控制器19可完全地以硬件被实施。在图6中给出这样硬件实施的一个可能的方框图。JTAG主控制器19包括:
中央有限状态机32:它从应用31接收命令且控制JTAG线。它将状态字通过由软件或由中断启动而可以轮询(poll)的状态寄存器33返回到应用31。
应用接口34:它允许应用31来控制FSM32并且通过并行总线35读取/写入输入、输出寄存器。位数Nr优选地与微处理器36的字长例如32位如IDCODE长度相同。例如通过Phillips IIC接口、UART或任何其它标准串行接口,串行存取也是可能的。微处理器36可是CPU(例如,电子设备11的中央处理单元)。
输出和移位寄存器37:应用31将字装载到输出寄存器37,其在FSM32的控制下被移出到TDO管脚。数字经由TDO管脚38被移出进入JTAG从属机20。
输入和移位寄存器39:应用31可以读取在FSM32控制下从TDI管脚40移进的字。即来自JTAG从属机20的数据经由TDI管脚40被接收。数据既可以通过状态机32被直接读取(这是经由互连42进行的),数据又可以经由移位寄存器39被读取。
当在TCK的两个沿上事件应该被触发且其它被采样时,所有方框由与TCK相比较的倍频率时钟钟控。如上面所提到的参考所解释,JTAG管脚的时序是根据主机的JTAG协议。
在下述段中,主机19和从属JTAG控制器20的操作被加以说明。这个段给出有关这些控制器19和20的操作的更详细信息。
由主JTAG控制器19所执行的操作是:
复位从属JTAG控制器20:在加电后且在执行应用期间从属JTAG控制器20将被复位。所有从属机的复位或者通过启动管脚TRST_N或者通过不断拉高TMS以及根据JTAG协议对TCK钟控而被执行。如果在操作期间,***配置未被定义,则必要执行从属机的复位。这个复位并不影响应用具体数据寄存器。
检查***配置:主控制器19将扫描出JTAG命令以探测被连接的子模块12,13的数量且发现它们的识别码(识别信息)。配置以例如参数清单被返回到主应用31。主控制器19还将获知子模块12,13被连接到哪个连接器。检查应该被至少重复两次以保证因***、拔下子模块12,13导致的瞬时值一直未被记录。在应用31的执行期间,优选地这个操作应该连续地每隔一定间隔(例如2秒)被重复,以探测配置的修改(移走子模块,添加子模块)。根据JTAG协议,在复位后每个从属机的IDCODE被装载进它们的指令寄存器24。通过在状态Shift_IR下驱动所有的从属TAPC控制器20,有可能将所有子模块12,13的IDCODE扫描入进主控制器19。被称为START的特定二进制型式可以从主机19中被移出。移位操作被加以重复直至在主输入移位寄存器39中探测到START型式。有可能确定子模块的数量(Nmodules)及它们沿着扫描链的位置。
读取或写入子模块的参数:主JTAG控制器19利用具体JTAG指令存取所定义的子模块12或13的TDR。为了读取具体子模块12的数据寄存器25,利用旁路指令将其它子模块13设定在旁路模式下且利用这个寄存器的读取指令装载具体的模块12便足够了。然后主JTAG控制器19将所有从属控制器20驱动到状态Shift_DR且移出数据寄存器。序列的长度是已知的,因为每个旁路寄存器仅1位且DR寄存器的长度根据IDCODE知识被推导出。几个模块参数可以在相同的移位序列中被读取。写入操作通过移入一序列且将从属机驱动到Update_DR状态而被执行。同样在这种情况下不同模块中的几个参数可以被写入到相同的移位序列。读取和写入操作还可以以与下述相同的移位序列被完成,即首先从属FSM转到Capture_DR,移位发生且然后Update_DR被执行。
检查子模块的写入操作:在写入到子模块12或13之后,重要地是检查子模块12或13在该期间还一直未被移走。为了做到此,例如检查配置被重新开启或对相同寄存器的读取被执行。
当控制处理器11探测到新的子模块12或13已经***进时,则它将动态地修改应用软件31的参数。例如如果键盘被连接,则Email将通过这个键盘且不通过电话键盘被录入。如果大的彩色显示器被***,则图形被重新导引到这个显示器以调节画面的分辨率。所有这些配置修改对于使用者是透明的且并不要求通过键盘或电子设备10的再引导对任何子模块类型的澄清。
利用JTAG的自动快速配置的一个方法在有关图7A和7B中被加以说明。在第一步骤中,控制单元11向第一子模块13发送JTAG命令,将第一子模块13置于旁路模式。在旁路模式下,相应子模块的TDI管脚及TDO管脚被互连,由参考号41所示例。这个步骤被重复直至除一个子模块以外(在图7A中为子模块12)的所有其它的子模块(在本情况中仅存在一个另外的子模块12)处在旁路模式下。换句话说,控制单元11向除一个以外的所有的子模块发送JTAG命令,以为了将除一个外的所有子模块置于旁路模式。然后,识别信息被从未处于旁路模式的一个子模块中被读取(见图7A)。在随后的步骤中,控制单元11向未处于旁路模式的一个子模块12发送JTAG命令,以将它也置于旁路模式。然后,控制单元11发出JTAG命令,以移走其它子模块之一的旁路模式。在本实例中,子模块13的旁路模式现在被移走(见图7B)。控制单元11从子模块13读取识别信息。如果存在多于两个的子模块,则上述步骤被重复直至所有子模块的识别信息已经被读取。控制单元可以将参数写入到一个或多个子模块12,13以及/或控制单元可以从一个或多个子模块12,13读取参数。这是否必要取决于子模块的类型。为了能够探测到配置是否已经变化,配置时常被重新检查。如果配置已经变化,则上述步骤可以被重复。在另一实施例中,上述步骤自动地以某一时间间隔被重复。这也保证配置变化被加以探测和应付。
根据本发明的一个实施例,JTAG主控制器19在第一步骤中确定是否存在任何子模块,如果是yes,则存在多少子模块。然后它从一个子模块接着一个子模块中读取识别信息,以获知哪些子模块存在。如果有必要,JTAG主控制器19向一个或多个子模块内写入参数,以保证与电子设备10的适当配合动作。
在本发明的另一实施例中,IDCODE可以被读取而不必将一个特定子模块置于IDCODE模式,而将其它置于旁路模式。所有的子模块可以从JTAG主机中接收IDCODE指令且数据移位将在相同序列中读取所有可用的IDCODE。
相同的原理可以被应用于向子模块内写入参数或用于从子模块中读取参数,即相同的指令可以被发送到所有的子模块且参数可以被读取或写入。
在另一实施例中,每个子模块被一个接一个地寻址,从而将所有其它的子模块置于旁路模式。
在一个特定的实施例中,空插槽或间(bay)包括一开关或类似的装置,当没有子模块被***时其简单地连接TDI和TDO管脚。同样,人们可以使用当子模块被移走之后被手动置位的跳线。所述跳线连接TDI和TDO管脚。
应当理解:为了清楚起见在分开的实施例环境中所说明的本发明的各种特点还可通过单个实施例的组合被提供。相反地,为了简洁在单个实施例环境中所说明的本发明的各种特点还可被分开或以任何适当的子组合加以提供。
在附图和技术说明书中一直阐明本发明的优选实施例,以及虽然具体的术语被使用,但是由此给出的说明仅从通用及说明性意义上使用术语且并不是为了限制性的目的。