访问数据处理系统中寄存器的方法和装置 一般地说,本发明涉及数据处理系统,更具体地说,涉及访问一数据处理器中的寄存器的方法。
在一个微处理器系统中,某些“控制”寄存器及位(bits)用于确定系统配置。许多数据处理器有敏感的控制寄存器和位,它们被保护起来,除非是在特殊情况下,否则不允许写入。典型的保护机制包括:只在复位后的某个时间段内写这些位的能力以及在每次复位后只能对它们写入一次的能力。这些位控制数据处理器的基本配置,而事故性的写入能造成严重的系统问题。一旦设置好了,控制位便保持不变,直到该部分被复位为止。保护措施使它实际上包括了由软件控制的特征,如果不是为了保护,这些特征可能会是被排除的。可能需要的控制寄存器和位的数目随着数据处理器的复杂程度而增加。这对那些寄存器访问方式(scheme)提出了一个问题,因为这些方式要求对控制寄存器地全部写入应在某一时间段内完成。
为保持系统完整性,在“通常的”或“用户的”操作方式中,通常只允许写入一次敏感控制位。在“特殊”操作方式,其保护机制可以被取消,此时可以重复改变这些位而不必进入复位序列。在测试过程中这种“取消”特性特别有用,在测试过程中必须在最短时间内完成尽可能多的可能配置。在仿真操作方式过程中,数据处理器保持一种预定配置,而且希望禁止写入敏感的控制寄存器,例如必须保持插头(pin)配置以启动端口替换单元。已经开发出许多方法来适应各种操作方式的需要。
仿真方式的设计允许用户有能力看到数据处理器的实际操作。随着设计复杂性的增大,仿真对于应用开发是至关重要的。在实践中,常常必须写入附加代码来适应仿真设置的需要。这种附加代码增加了复杂程度,并对仿真过程引进了多义性(ambiguity)。所以希望建立一种具有一致性的控制方法,其中仿真不会被用户代码破坏。
图1以方框图形式给出根据本发明的一个实施例的数据处理器;
图2是以寄存器形式给出根据本发明的一个实施例的控制寄存器;
图3以方框图形式给出根据本发明的一个实施例的总线接口单元;
图4以电路图形式给出根据本发明的一个实施例的特殊写控制电路。
图5以方框图形式给出根据本发明的一个实施例的仿真器;以及
图6以方框图形式给出根据本发明的一个实施例的仿真器。
在下面的描述中,将给出大量的具体细节,例如特定控制寄存器的位长等,以提供对本发明的彻底理解。然而,对本领域技术人员而言,显然是没有这些特定的细节也能实现本发明。在其他情况下,以方框图形式显示出电路,以防本发明被掩盖于不必要的细节之中。大部分关于时序考虑的细节以及其他类似细节已被尽量略去,因为这些细节对于全面理解本发明是不必要的,而且是在对相关技术有一般了解的人们的知识范围之内。
将使用“总线”一词表示可用于传送一种或多种信息(例如数据、地址、控制或状态信息)的一组信号或导线。术语“认定(assert)”和“否定(negate)”将分别用于表示使一个信号、状态位或类似装置进入其逻辑真或逻辑伪状态。如果逻辑真状态是逻辑电平1,则逻辑伪状态将是逻辑电平0(零)。如果逻辑真状态是逻辑电平零,则逻辑伪状态将是逻辑电平1。
本发明提供一种访问数据处理器中的寄存器的方法,它允许控制一次选择被写位而不有效写入,又能在其后有效地被写入。在本发明的一个实施例中,用户方式允许控制选择一次被写位。其后的写操作无效。而在用于测试的仿真的“特殊”方式中,第一次写操作无效,然而其后的所有写操作都有效。
通过参考系统配置和控制,一个示例性实施例利用对寄存器位的写操作。另一些实施例使用任意种方法去改变(即认定或否定)寄存器位,包括逻辑操作和软件指令,但不限于这些。在每种情况下,一旦进入“特殊”方式,控制位便对初始时所作的改变不起作用,但对其后所作的改变起作用。
本发明允许应用代码在仿真方式下运行而无需修改,同时保证系统配置的确定性和稳定性。本发明增加了数据处理器仿真的灵活性。此外,本发明提供了一种代码认证方法以检测出对控制寄存器的多重写入。
现在参考附图,这里所显示的各个部件不一定是按尺寸比例画出的。在几幅图中相似的部件用相同的参考标号来代表。
图1给出本发明的一个实施例,这里的中央处理单元(CPU)4、总线8、总线接口单元10、控制寄存器12、以及存储器单元6都是数据处理器2的组成组件。CPU4、存储器单元6及总线接口单元10各自通过多重双向导线与总线8相连。通过多重双向导线作为通络,使总线接口单元10与其他模块以及外部设备进行通信。总线接口单元10包括控制寄存器12,它用于影响数据处理器2的系统配置。
图2显示了控制寄存器12的细节。在本发明的一个实施例中,控制寄存器12为8位长度,其高4位被保留。其低4位被指定为“非外部时钟(No E-Clock)”(NECLK)34、“低选通使能(Low Strobe Enable”(LSTRE)36、内部可视性(IVIS)38、端口控制40。每位的重要性依赖于操作方式。
参考图3,图3中给出总线接口单元10的一例。在本发明的一个实施例中,在数据处理器2中包含总线8、总线接口单元10及方式逻辑80。总线接口单元10包括控制寄存器12、特殊写控制电路75、以及寄存器解码电路50。
为了传送数据信息,总线8通过控制寄存器12经由双向数据导线9与总线接口单元10相连,这里的控制寄存器12包括几个信息位。在一个实施例中,位0 70对于特殊写控制电路75是不可用的,但位1 71和位2 72(它们是控制寄存器12中其他多位的一个示例)由特殊写控制电路75控制。
在本发明的一个实施例中,“方式逻辑”信号80指示其操作方式是正常方式还是“特殊”方式。在“特殊”方式中,特殊写控制电路75在复位之后防止对控制寄存器12中那些由特殊写控制电路75所控制的各位的初始写,但允许其后的所有写。由特殊写控制电路75所控制的各位被称作敏感控制位。
为传送地址信息,总线8经由地址导线11与寄存器解码电路50相连。寄存器解码电路50也接收“模块选择”信号56、“写”信号52、及“读”信号54。在本发明的一个实施例中,通过单个导线接收这些信号,但在其他一些实施例中可以使用任意个数导线或者说多重导线。再有,寄存器解码电路50接收指明为写操作或读操作的信号。写信号52指明此时的操作是写操作。寄存器解码电路50也接收地址11。在本发明的一个实施例中,当地址11和模块选择56指向控制寄存器12时,由读信号54和写信号52所代表的读和写信息分别被送到读寄存器58和写寄存器60。在一个总线周期期间只有读54和写52二者之一是有效的,所以当地址11指向控制寄存器12时只有读寄存器58和写寄存器60二者之一是有效的。
再有,寄存器解码电路50接收指明下一个操作是写或读的信号。信号写寄存器60选择数据写入控制寄存器12,并用于影响对控制寄存器12中的敏感控制位(即由特殊控制电路75控制的位)以及其他位的写入。类似地,信号读寄存器58选择对控制寄存器12数据读,并能影响对控制寄存器12的敏感控制位及其他位的读。
仍然参考图3,寄存器解码电路50经由信号读寄存器58初始化从控制寄存器12读数据,并经由信号写寄存器60初始化写数据。写寄存器60也被提供给特殊写控制电路75,它在复位后禁止初始写并允许其后经由特殊写76写控制寄存器12中的敏感控制位。在本发明的一个实施例中,特殊写76被送到连接特殊写控制电路75和控制寄存器12的单一导线上。其他实施例中可能利用单一导线或任意个数导线。
在一个实施例中,特殊写控制电路75通过一个导线从寄存器解码电路75接收信号写寄存器60。通过一个导线将复位信号84提供给特殊控制写电路75,指示数据处理器2复位。方式逻辑80确定数据处理器2的操作方式,并相应地通过导线把特殊方式信号81和正常方式信号82提供给特殊写控制电路75。请注意,一个实施例对每个信号有单个导线。而其他实施例可能利用多重导线或者是单个导线与多重导线的组合。在一个实施例中,特殊控制写电路经由一个导线接收复位信号84。
特殊方式信号81指示数据处理器2是在以“特殊”方式操作。对于处在“特殊”方式的数据处理器2,特殊写控制电路75的作用是禁止对控制寄存器12的敏感控制位的初始写入,使那个写成为无效。请注意,特殊控制写电路75不影响对非敏感控制位的写入。再有,在“特殊”方式下,特殊写控制电路75的作用是使其后能对敏感控制位写入,使其后的写变为有效。
正常方式信号82指示数据处理器2是在以正常方式或者说用户方式操作。对于处在正常方式的数据处理器2,特殊写控制电路75不禁止对控制寄存器12中敏感控制位的写入。再有,在正常方式,特殊写控制电路75没有在其后使能对敏感控制位写入的作用。在本发明的一个实施例中,对于正常方式的数据处理器2操作,特殊写控制电路75的作用是使能对控制寄存器12中的敏感控制位进行初始写入,而禁止其后对这些位的一切写入。
在本发明的另一些实施例中,控制寄存器12只包含敏感控制位,因而被认为是一个敏感控制寄存器。在本发明的一个实施例中,控制寄存器12包含敏感控制位、其他控制位、以及与控制无关的位。其他实施例可能在控制寄存器12中有多位的任何组合或可能包含多个寄存器。
图4给出特殊写控制电路75的一个实施例,它通过各单个导线接收特殊方式信号81、正常方式信号82、及复位信号84。写寄存器信号60通过与寄存器解码电路50相连的导线提供。在一个实施例中,特殊写控制电路75经由多重导线与控制寄存器12相连。在本发明的一个实施例中,特殊写控制电路75含有两个触发器DFF2 92及DFF1 90,以及逻辑门94、96、98、100、101、102、103。
本发明的一个实施例有一个“特殊”操作方式用于仿真和测试。如图5所示,一个系统仿真器16使用“特殊”方式去仿真数据处理系统18。在本发明的一个实施例中,数据处理系统18、端口替换单元(PRU)26以及存储器30都是系统仿真器16的组成部件。数据处理系统18通过双向导线(地址线20)向PRU 26及存储器30提供地址信息,而在其他实施例中可以通过单向导线提供。数据处理系统18、PRU 26及存储器30各通过双向导线(数据线22)发送和接收数据信息。类似地,数据处理系统18、PRU 26及存储器30各通过双向导线(控制线24)发送和接收控制信息。在本发明的一个实施例中,用户能利用系统仿真器16使用应用代码仿真数据处理系统18而无需修改。系统仿真器16通过PRU26与用户应用程序通信。PRU 26通过指定给每个被代表端口的双向导线来向用户应用程序发送信号和从中接收信号。请注意,在本发明的一个实施例中,数据处理系统18是一个集成电路。
在图6所示本发明的一个实施例中,系统仿真器40仿真数据处理系统18的扩展操作。数据处理系统18、端口替换单元(PRU)28及用户存储器32都是系统仿真器40的组成部分。数据处理系统18通过双向导线(地址线42)向PRU 28及用户存储器32提供地址信息,而在其他实施例中可能通过单向导线提供。数据处理系统18、PRU 28及用户存储器32每个各通过双向导线(数据线44)发送和接收数据信息。类似地,数据处理系统18,PRU 28及用户存储器32每个各通过双向导线(控制线46)发送和接收控制信息。在本发明的一个实施例中,用户能利用系统仿真器40使用应用代码仿真数据处理系统18而无需修改。系统仿真器40通过PRU 28与用户应用程序通信。PRU 28通过指定给一个扩展端口的双向导线向用户应用程序及用户存储器32发送和从中接收信息信号和控制信号。
许多数据处理器有敏感控制寄存器和位,它们被保护只能在特殊情况下才能写入。参考图1,在本发明的一个实施例中,数据处理器2可以在用户方式(也称作正常方式)下操作,或者在“特殊”方式下操作以供测试和仿真。在用户方式下,数据处理器2的内部操作是不能被用户观察到的。对于用户方式操作,应用代码存储在存储器单元6中。
在一个实施例中,数据处理器2把控制信息存于控制寄存器12中。控制信息规定CPU 4的操作。换句话说,控制信息指出影响CPU 4操作条件的控制参数。通过访问控制寄存器12的单个位,可以改变或确认控制参数。
例如,在本发明的一个实施例中,一个控制参数是“中断灵敏性”。中断灵敏性是指将触发中断的输入状态,例如,一个上升缘将引起CPU 4从正常操作中中断出来。中断灵敏性是可选择的,并在控制寄存器12中有相应的位。中断灵敏性是由这些位控制的。类似地,其他控制参数也在控制寄存器12中有相应的位。其他实施例中可以有任何个数控制参数或任意的组合。请注意,通常一个控制寄存器可用于多个控制参数。
一个控制参数,如果它与操作方式不一致或者将使数据处理器2的操作失灵或不稳定,则认为这个参数是敏感控制位。对于精确的、稳健(robust)的操作,希望防止无意中对敏感控制位的访问,因为那将造成数据处理系统中的不稳定状态。请注意,在其他实施例中,可使用任意种定义来把一个控制位定义为敏感控制位。
如图2所示,在本发明的一个实施例中控制寄存器12包含控制位NECLK 34、LSTRE 36、IVIS 38及端口控制40,这里的每个位影响仿真过程中的一种控制,它们统称为敏感控制位。应用代码根据所希望的系统配置来改变每一位。一旦定义了敏感控制位,在另一次复位发生之前,其应用代码不能改变这种定义。请注意,NECLK 34,LSTRE36、IVIS 38及端口控制40只是任何可数的可能的敏感位中的举例,而在其他实施例中,敏感性由应用程序确定,而且可能包括具有其他意义的位(例如,不是控制位)。
用户方式(或者说正常方式)是用户的操作环境,所以意味着既是灵活的又是稳健的。在一个实施例中,通过允许用户在数据处理器2复位后只能一次性地选择某些控制参数来实现这二个目标。用户有其灵活性来改变各种控制参数作为条件保证,但在没有对数据处理器2复位的情况下不能改变,一旦设定了的控制参数。
在本发明的一个实施例中,“特殊”方式允许对数据处理器2的内部操作的观察能力。除了其他用途外,“特殊”方式用于对数据处理器2的用户仿真。通常仿真需要一个仿真系统用来代替数据处理器。图6给出一个实施例的系统仿真器40。系统仿真器40包含数据处理器2,它在“特殊”方式下工作,这里的内部信号(如地址42、数据44及控制46)从外部提供给数据处理器2。提供外部信号需要数据处理器2的资源,这些资源通常是指定给用户方式的各端口的。系统仿真器40包含PRU 28,它重建各个端口。根据从地址42、数据44及控制46收到的输入,PRU 28作为数据处理器2的允许外部一致性的端口资源。这样,数据处理器2的作用是作为使系统仿真器40能够工作的一个部件,而系统仿真器40在用户应用程序中起到数据处理器2的作用。
在仿真过程中,系统配置对于正确操作是至关重要的。如果用户改变配置,系统仿真器40可能会不正确地工作,或者会完全终止工作。一个问题是在何处由应用代码来改变仿真器的配置。往往为了仿真而修改应用代码,去掉对控制位的任何改变。一个显然的缺点是需要二套应用代码,一套用于用户方式,一套用于仿真。本发明允许在仿真过程中使用应用代码,其作法是不考虑或忽略对控制位的初始写。在本发明的一个实施例中,PRU 28利用初始写来建立和重建端口。
在如图3所示的本发明一个实施例中,特殊写控制电路75的作用是允许和禁止控制寄存器12中敏感控制位的适当改变。这里,控制寄存器12中含有不敏感的控制位、敏感的控制位(如位1 71)、以及非控制位(如位0 70)。在“特殊”方式期间,特殊写控制电路75将禁止位1 71(它在本实施例中是一个敏感控制位)的第一次改变,但将不禁止对位070(它不是敏感控制位)的第一次改变。在正常方式期间,特殊写控制电路75的作用是使能对位1 71进行初始改变,但将禁止其后对位1 71的写入,而寄存器解码电路50影响初始的和其后的对位0 70的改变。通过把控制位、非控制位及敏感控制位组合到单个寄存器中,使数据处理器2没有带保留的未用位的额外寄存器。
图4给出的本发明一个实施例包含了逻辑门和其他逻辑部件。其他实施例可以利用任何类型的电路来实现对敏感控制位的类似控制。
在本发明的一个实施例中,要求应用代码严格地只一次与入每个控制位。一旦每个控制位被写入,则系统配置被确定,并一直保持到下一次复位为止。然后,应用代码可在仿真状态下运行,这里对敏感控制位的第一次写入被忽略。其后对敏感控制器的写入是有效的。请注意,如果应用代码包含对敏感控制位的多次写,则仿真器可能会失效,并向用户提出警告:应用代码中含有对敏感控制位的多次写。
在本发明的一个实施例中,某些控制位只当它们的作用影响到仿真时才定义为敏感控制位。在一个实施例中,敏感控制位被组合到控制寄存器12中。而本发明的另一些实施例中把全部控制位定义为敏感控制位。在其他实施例中,某些寄存器位被定义为敏感的,但它们不一定是控制位。
在本发明的一个实施例中,NECLK 34是控制寄存器12中的一位,用于确定数据处理器2是否将提供外部时钟信号。在用户方式下,总线接口单元10及外部设备使用外部时钟信号。在“特殊”方式下,一个外部时钟信号被用于跟踪内部指令路径,并象总线接口单元中那样影响总线接口。系统配置取决于这一决定。如果不提供一个外部时钟信号,对于端口功能将可用附加资源。“特殊”方式允许用户具有作出这种决定的灵活性。通常,外部时钟信号被用于一种“扩展方式”,这里提供了在用户方式下不可见的信号(例如地址和数据信号)。然而,一旦作出了决定,用户必须只能改变NECLK 34一次,因为这对于系统配置是一个至关重要的决定。
应用代码只包括每次复位后的一次写入NECLK 34。在本发明的一个实施例中,用户方式只允许一一写入NECLK 34而对其后的所有写全部不考虑,而“特殊”方式不考虑对NECLK 34的第一次写,而使所有其后的写有效。用户写的应用代码要符合用户方式提出的只写一次NECLK 34的要求。于是应用代码对“特殊”方式下的仿真是可用的,这里第一次写将不被考虑。这时对于仿真是至关重要的,因为那里的系统配置是由仿真器预先确定的。此外,如果应用代码错误地包括了对这些位的多次写,则仿真将揭露这一错误。
如图2所见,本发明的一个实施例把NECLK 34、LSTRE 36、IVIS 38及端口控制40各控制位组合到控制寄存器12中。这里LSTRE36、IVIS38及端口控制40也被定义为敏感控制位,因为每个都伴随着影响仿真的控制功能。
LSTRE 36用于使能一个由数据处理器2提供的低选通信号。一个低选通信号利用系统资源,否则这些资源将是对端口功能可用的,所以,决定使LSTRE 36有效,对于系统配置考虑是至关重要的。
类似地,使内部可见功能有效的IVIS 38和使某种端口配置有效的端口控制40影响系统资源和系统配置。IVIS 38及端口控制40对于系统配置考虑是至关重要的。请注意,尽管在一个实施例中四个控制信号都影响系统配置和系统资源分配,用户也能确定一种不受这些决定冲击的系统配置。然而,通常影响系统配置的控制功能对于数据处理器2的应用是至关重要的。
在本发明的一个实施例中,在每次复位后对这四个控制功能的每一个只能定义一次,因为每个决定都影响系统配置。系统配置取决于每个控制,系统资源也相应地被分配,而且一旦确定了,系统配置便被保持下去。
本发明允许将应用代码用于仿真而无需修改。在一个实施例中,用户可以自由地写应用代码,无需考虑适应于仿真。应用代码只对敏感控制位写一次,以建立用户对操作的优先考虑。然后用户可直接把应用代码用于仿真。在仿真过程中,对敏感控制位的初始写被忽略,保持仿真系统配置。包含对敏感控制位多次写的应用代码会侵害仿真器。应用代码一般写成满足正常操作要求,在正常操作中对控制位的初始写有效,而其后对控制位的写是无效的。
参考图5,系统仿真16用于查错、设计和研究。系统仿真器16使用PRU 26与用户应用程序“交谈”。系统仿真器16“插入”或者说被连到用户应用程序上。数据处理系统18的作用是一个虚拟类用户方式,尽管实际上是在“特殊”方式下操作,从而允许在应用程序操作过程中的内部可见功能。仿真在应用设计中是至关重要的。在本发明的一个实施例中,系统仿真器16使用数据处理系统18的端口资源,而数据处理系统18包含数据处理器2,使得实际端口资源对于应用程序是不可用的,在仿真过程中,数据处理系统18在“特殊”方式下操作,改变它的操作环境将造成功能失效。为数据处理系统18写的应用代码包括改变敏感控制位的指令。为用于仿真,“特殊”方式不考虑初始改变,但允许其后的所有改变。如果应用代码确实只有一次改变敏感控制位,则仿真将平稳地运行。
在扩展的仿真过程中,如图6所示的数据处理系统18再次在“特殊”方式下操作,但系统仿真器40使用PRU 28作为与扩展的应用之间的接口。这里的端口资源用作为扩展总线功能而不是用作端口。在仿真中,改变数据处理系统18的操作环境也会造成功能失效。
本发明允许对数据处理器2的任意数量的仿真技术,而不需要对应用代码进行修改。附加的考虑是在测试状态下的操作。
本发明的寄存器访问方法为装置测试增加了好处。在一个实施例中,数据处理器2在“特殊”方式下用于测试,而对每个敏感控制位的第一次写不被考虑,但其后的每次写是有效的。与仿真不同,测试需要有效地进行系统重新配置。借助于不考虑第一次写但使其后的写有效,使数据处理器2能在各种系统配置下被测试而不需要执行复位序列。这允许既增强了测试时间也增大了产品的灵活性。
总之,本发明提供了既能访问寄存器又保护敏感控制的方法。通过提供“特殊”方式(在这种方式下初始改变某些位是无效的而其后的改变是有效的),本发明对仿真和测试提供了一种统一的解决办法。敏感控制被保护以免于不适当地使用,而用户不需要重复工作来产生用于仿真的修改过的应用代码。本发明也适可用于装置测试,在测试过程中仍然允许重复访问敏感控制位。
虽然已参考具体实施例图示描述了本发明,对于本领域技术人员而言,将会进一步修改和改善。例如,尽管这里已描述了本发明的几种应用,但在集成电路中“第一次写无效而其后至少一次写有效”的寄存器位或存储器位置具有广泛的应用种类。请注意,本发明的其他实施例能引起“最初的N次写”无效,这里N是预定整数,或者是一个由用户编程的变量,或者是由硬件确定的值(例如在计数器中确定的值)。所以,应该理解,本发明不限于所示的特定形式,而所附权利要求覆盖了不偏离本发明精神和范围的全部修正。