多时钟切换装置及其切换方法转让专利

申请号 : CN200710162813.0

文献号 : CN101135921B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 伍尚智

申请人 : 威盛电子股份有限公司

摘要 :

一种多时钟切换装置及其切换方法,可有效防止输出时钟信号上出现毛刺信号,该装置包括:控制单元根据从控就绪信号,有效寄存器地址及时钟选择寄存器地址产生时钟停止信号;采样延时单元,采样时钟停止信号产生时钟停止延迟信号,在第一预定时间后置低时钟停止延迟信号;采样时钟停止信号产生时钟选择延迟信号,在第二预定时间后置低时钟选择延迟信号,第一预定时间长于或等于第二预定时间;时钟选择信号单元,根据时钟选择延迟信号将时钟选择信号输出为时钟选择寄存信号;多工器根据时钟选择寄存信号在多个时钟信号中选择一个,产生预输出时钟信号;锁存单元耦接至多工器和采样延时单元,根据时钟停止延迟信号和预输出时钟信号产生输出时钟信号。

权利要求 :

1.一种多时钟切换装置,其特征在于,包括:

一控制单元,根据一从控就绪信号,一有效寄存器地址以及一时钟选择寄存器地址产生一时钟停止信号;

一采样延时单元,其采样该时钟停止信号产生一时钟停止延迟信号,并在一第一预定时间后置低该时钟停止延迟信号;其采样该时钟停止信号产生一时钟选择延迟信号,并在一第二预定时间后置低该时钟选择延迟信号,该第一预定时间长于或等于该第二预定时间;

一时钟选择信号单元,根据该时钟选择延迟信号将一时钟选择信号输出为一时钟选择寄存信号;

一多工器,其根据该时钟选择寄存信号在多个时钟信号中选择一个,产生一预输出时钟信号;以及一锁存单元,耦接至该多工器和该采样延时单元,根据该时钟停止延迟信号和该预输出时钟信号,产生一输出时钟信号。

2.根据权利要求1所述的多时钟切换装置,其特征在于,该从控就绪信号来自于一总线接口模块,当该总线接口模块被寻址且准备好接收数据时,置低该从控就绪信号,并接收总线上的该时钟选择信号。

3.根据权利要求2所述的多时钟切换装置,其特征在于,该第一预定时间为至少两个总线时钟周期,该第二预定时间为一个总线时钟周期。

4.根据权利要求2所述的多时钟切换装置,其特征在于,控制单元在该从控就绪信号置低,且该有效寄存器地址等于该时钟选择寄存器地址时,置高该时钟停止信号。

5.根据权利要求2所述的多时钟切换装置,其特征在于,该时钟选择信号单元包括:一时钟选择信号模块,耦接至该总线接口模块和该采样延时单元,当时钟选择延迟信号置高时,将该时钟选择信号输出并保持为该时钟选择寄存信号;以及一时钟选择信号寄存器,耦接至该时钟选择信号模块,其地址为该时钟选择寄存器地址,保存该时钟选择寄存信号。

6.根据权利要求1所述的多时钟切换装置,其特征在于,该锁存单元还包括:一反相器,其输入端耦接该时钟停止延迟信号;

一锁存器,其数据输入端耦接至该反相器的输出端,当该预输出时钟信号置低时,使能该锁存器输出一时钟门控信号,当该预输出时钟信号置高时,保持该时钟门控信号不变;以及一与逻辑门,根据该时钟门控信号和该预输出时钟信号,产生一输出时钟信号。

7.一种多时钟切换方法,其特征在于,包括如下步骤:

根据一从控就绪信号,一有效寄存器地址以及一时钟选择寄存器地址产生一时钟停止信号;

采样该时钟停止信号产生一时钟停止延迟信号,并在一第一预定时间后置低该时钟停止延迟信号;采样该时钟停止信号产生一时钟选择延迟信号,并在一第二预定时间后置低该时钟选择延迟信号,该第一预定时间长于或等于该第二预定时间;

根据该时钟选择延迟信号将一时钟选择信号输出并保持为一时钟选择寄存信号;

根据该时钟选择寄存信号在多个时钟信号中选择一个,产生一预输出时钟信号;以及根据该时钟停止延迟信号和该预输出时钟信号,产生一输出时钟信号。

8.根据权利要求7所述的多时钟切换方法,其特征在于,该有效寄存器地址和该时钟选择信号接收自于同一系统总线。

9.根据权利要求7所述的多时钟切换方法,其特征在于,产生该时钟停止延迟信号和该时钟选择延迟信号的步骤和输出并保持该时钟选择寄存信号的步骤都依据一总线时钟信号进行操作。

10.根据权利要求9所述的多时钟切换方法,其特征在于,该第一预定时间为至少两个总线时钟周期,该第二预定时间为一个总线时钟周期。

11.根据权利要求7所述的多时钟切换方法,其特征在于,该从控就绪信号置低,且该有效寄存器地址等于该时钟选择寄存器地址时,置高该时钟停止信号。

12.根据权利要求7所述的多时钟切换方法,其特征在于,输出该输出时钟信号的步骤还包括:当该预输出时钟信号置低时,根据该时钟停止延迟信号的反相信号,产生一时钟门控信号;

当该预输出时钟信号置高时,保持该时钟门控信号不变;以及当该时钟门控信号置低时,置低该预输出时钟信号。

说明书 :

技术领域

本发明涉及的是一种多时钟切换装置及方法,更具体地说,是一种防止在切换时产生毛刺(glitch)的多时钟切换装置及其切换方法。

背景技术

现在的计算机系统中一般都会存在不同频率的多个时钟信号,这些不同频率的时钟信号通常由一主机板上的一时钟芯片提供。为了降低功耗,或者为了在即插即用(Plug-and-Play)的外围设备改变时,提供不同频率时钟信号,需要专门的来实现时钟信号的切换。
图1是传统的多时钟切换装置的示意图。传统多时钟切换装置,这里用三个时钟信号的切换装置来说明,是通过一多工器(MUX)10以及一时钟选择信号CLK_SEL[1:0]来实现时钟信号CLK1、CLK2及CLK3的切换。
现在参考图2,当时钟选择信号CLK_SEL[1:0]为01时,多工器10选中时钟信号CLK1,即输出时钟信号CLK_OUT为时钟信号CLK1;当系统欲切换输出时钟信号CLK_OUT时,在时刻t改变时钟选择信号CLK_SEL[1:0]的值,如图2所示,时钟选择信号CLK_SEL[1:0]在时刻t以后变为11,则多工器10应选择时钟信号CLK3,即输出时钟信号CLK_OUT为时钟信号CLK3。但实际的情况是,当多工器10切换输出时,时钟信号CLK1和CLK3处于不同电平,于是就会出现如图2所示的毛刺(glitch)201。毛刺的出现可能会使得以该输出时钟信号为参考时钟信号的电路出现同步失败、丢失数据等误操作,从而会影响整个系统的正常运行。
现有技术中,采用不同的电路和方法来防止多时钟切换时的毛刺产生。通常是在多工器之前对时钟选择信号进行一些预处理,例如通过预处理可以使时钟切换发生在时钟信号CLK1和CLK3同为低电平时,这种情形下发生的时钟切换,输出时钟信号CLK_OUT就不会出现毛刺。但是这些预处理电路通常是由一些时序电路来实现,时序电路就存在时延,在非理想情况下,输出时钟信号同样会有毛刺出现。

发明内容

为了更有效地防止时钟切换时输出时钟信号上出现毛刺,本发明提供了一种多时钟切换装置及其切换方法。该多时钟切换装置包括:一控制单元,根据一从控就绪信号,一有效寄存器地址以及一时钟选择寄存器地址产生一时钟停止信号;一采样延时单元,其采样该时钟停止信号产生一时钟停止延迟信号,并在一第一预定时间后置低该时钟停止延迟信号;其采样该时钟停止信号产生一时钟选择延迟信号,并在一第二预定时间后置低该时钟选择延迟信号,该第一预定时间长于或等于该第二预定时间;一时钟选择信号单元,根据该时钟选择延迟信号,将一时钟选择信号输出为一时钟选择寄存信号;一多工器,其根据该时钟选择寄存信号在多个时钟信号中选择一个,产生一预输出时钟信号;以及一锁存单元,耦接至该多工器和该采样延时单元,根据该时钟停止延迟信号和该预输出时钟信号,产生一输出时钟信号。
本发明提供的该多时钟切换方法包括:根据一从控就绪信号,一有效寄存器地址以及一时钟选择寄存器地址产生一时钟停止信号;采样该时钟停止信号产生一时钟停止延迟信号,并在一第一预定时间后置低该时钟停止延迟信号;采样该时钟停止信号产生一时钟选择延迟信号,并在一第二预定时间后置低该时钟选择延迟信号,该第一预定时间长于或等于该第二预定时间;根据该时钟选择延迟信号将一时钟选择信号输出并保持为一时钟选择寄存信号;根据该时钟选择寄存信号在多个时钟信号中选择一个,产生一预输出时钟信号;以及根据该时钟停止延迟信号和该预输出时钟信号,产生一输出时钟信号。
本发明所述的多时钟切换装置及其切换方法利用了系统总线上信号的时序来有效探测时钟切换的时机,从而能有效地防止输出时钟信号上出现毛刺信号。

附图说明

图1是传统的多时钟切换装置的示意图。
图2是传统的多时钟切换的信号时序图。
图3是本发明多时钟切换装置的一实施例的示意图。
图4是本发明多时钟切换的信号时序图。
图5是本发明多时钟切换方法的步骤流程图。

具体实施方式

基于系统总线的计算机结构已经成为现代主流的计算机体系结构。在基于系统总线的计算机结构中,中央处理器与其它设备的通信都会经由总线。时钟切换请求通常是由操作系统发出的,该时钟选择信号通常都会经由总线发给需要该输出时钟的设备或电路,因此时钟切换动作何时发生可以在总线上探测到。基于此,本发明便是提供了一种多时钟切换装置和方法来更有效地防止输出时钟信号上毛刺的出现。
为了让本发明的目的、特征及优点能更明显易懂,下文特举较佳实施例,并配合所附图3至图5做详细的说明。
图3是本发明多时钟切换装置的一实施例的示意图。该多时钟切换装置300包括总线接口模块310、控制单元320、采样延时单元330、时钟选择单元340、多工器350和锁存单元360。总线接口模块310挂于一系统总线上,这里以常用的系统总线PCI总线为例,该总线接口模块310接收来自于PCI总线的有效寄存器地址Addr[7:0]和时钟选择信号CLK_SEL[1:0],CLK_SEL[1:0]可以是来自于操作系统中某电路的驱动程序要求切换时钟的请求。现有PCI总线技术的人都知道,当挂在PCI总线上的设备作为总线上数据传输的目标设备被寻址时,会发出应答信号以回应总线时序,因此当该总线接口模块310被寻址且准备好接收总线上的数据CLK_SEL[1:0]时,发出一从控就绪信号TRDY#来回应。控制单元320根据该从控就绪信号TRDY#,该有效寄存器地址Addr[7:0]和时钟选择寄存器地址Add_CLK_SEL_NF[7:0]产生时钟停止信号CLK_STOP。采样延时单元330通过采样时钟停止信号CLK_STOP产生时钟停止延迟信号CLK_STOP1,并在一第一预定时间后置低时钟停止延迟信号CLK_STOP1;在一第二预定时间后置低时钟停止延迟信号CLK_STOP1,产生时钟选择延迟信号CLK_DELAY。时钟选择信号单元340根据该时钟选择延迟信号CLK_DELAY,将时钟选择信号CLK_SEL[1:0]延迟输出为时钟选择寄存信号CLK_SEL_NF[1:0]。多工器350根据该时钟选择寄存信号CLK_SEL_NF[1:0]在多个时钟信号CLK1、CLK2、CLK3中选择一个,输出为预输出时钟信号CLK_G。锁存单元360根据该时钟停止延迟信号CLK_STOP1和该预输出时钟信号CLK_G,产生输出时钟信号CLK_OUT。该多时钟切换装置300的时钟切换发生在时钟选择寄存信号CLK_SEL_NF[1:0]更新时,该时刻输出的CLK_G上可能会出现毛刺,但是由于时钟停止延迟信号CLK_STOP1的控制,使得输出时钟信号CLK_OUT在时钟切换前后足够长的时间内置低,因此能够保证滤掉可能出现的毛刺信号。下面将详细阐述该多时钟切换装置300的具体结构,说明如何保证该时序。
控制单元320包括比较逻辑321、或逻辑门322及反相器323,其中该比较逻辑321可以是一个多位数值比较器,由最高位开始,逐位比较该有效寄存器地址Addr[7:0]和该时钟选择寄存器地址Add_CLK_SEL_NF[7:0]的每一位是否相等,若都相等,则置低其输出;或逻辑门322根据该比较逻辑321的输出和从控就绪信号TRDY#,输出再经由反相器323输出时钟停止信号CLK_STOP。
采样延时单元330采用PCI总线的总线时钟CLK_BUS作为参考时钟信号。其包括反相器331、或逻辑门332、与逻辑门333、触发器334、触发器335、触发器336、反相器337、与逻辑门338、反相器339、与逻辑门3310。时钟停止信号CLK_STOP通过或逻辑门332和与逻辑门333耦接至触发器334,触发器334在总线时钟CLK_BUS控制下,输出时钟停止延迟信号CLK_STOP1,触发器335耦接至触发器334的输出端,在总线时钟CLK_BUS控制下,输出第二时钟停止延迟信号CLK_STOP2,触发器336耦接至触发器335的输出端,在总线时钟CLK_BUS控制下,输出第三时钟停止延迟信号CLK_STOP3;与逻辑门338根据第三时钟停止延迟信号CLK_STOP3经反相器337后的输出信号和第二时钟停止延迟信号CLK_STOP2,产生时钟停止反馈信号CLK_STOP_BACK;时钟停止反馈信号CLK_STOP_BACK通过反相器331输出到与逻辑门333,而或逻辑门332的另一输入端耦接时钟停止延迟信号CLK_STOP1。因此与逻辑门333的输出可以保持高电位直到时钟停止反馈信号CLK_STOP_BACK的反相信号将其拉低。这部分电路实现了采样时钟停止信号CLK_STOP的置高跳变沿来产生时钟停止延迟信号CLK_STOP1,并将CLK_STOP1的置高时间保持一第一预定时间(本实施例为两个总线时钟周期)。与逻辑门3310根据第二时钟停止延迟信号CLK_STOP2经过反相器339的输出信号和时钟停止延迟信号CLK_STOP1,产生时钟选择延迟信号CLK_DELAY,其置高时间保持了一第二预定时间(本实施例为一个总线时钟周期)。
在本发明的另一实施例中,采样延时单元330可以在触发器334和触发器335之间加触发器来实现第一预定时间长于两个总线时钟周期。在本发明的另一实施例中,可以采用时钟停止延迟信号CLK_STOP1代替CLK_DELAY作为时钟选择信号模块341的使能信号。采样延时单元330实现了采样时钟停止信号CLK_STOP的置高跳变沿来产生时钟停止延迟信号CLK_STOP1,并将CLK_STOP1的置高时间保持一第一预定时间(至少两个总线时钟周期),依照本发明实施例对采样延迟单元330做其它改进来实现这些功能,对本领域技术人员来说是显而易见的。
该时钟选择信号单元340包括时钟选择信号模块341和时钟选择信号寄存器342。时钟选择信号模块341耦接至该总线接口模块310和该采样延时单元330,依据总线时钟CLK_BUS,当时钟选择延迟信号CLK_DELAY置高时,将总线接口模块接收到的时钟选择信号CLK_SEL[1:0]输出为时钟选择寄存信号CLK_SEL_NF[1:0],并在之后保持输出该时钟选择寄存信号CLK_SEL_NF[1:0]。时钟选择信号寄存器342耦接至该时钟选择信号模块341,其保存该时钟选择寄存信号CLK_SEL_NF[1:0],时钟选择信号寄存器342的地址即为时钟选择寄存器地址Add_CLK_SEL_NF[7:0]。
表1是时钟选择信号模块341的逻辑功能表。
表1

时钟选择信号模块341以总线时钟信号CLK_BUS作为时钟信号,在其上升沿触发动作:当时钟选择延迟信号CLK_DELAY为高电位时,时钟选择寄存信号CLK_SEL_NF[1:0]等于时钟选择信号CLK_SEL[1:0];当时钟选择延迟信号CLK_DELAY为低电位时,时钟选择寄存信号CLK_SEL_NF[1:0]的值保持不变。
锁存单元360包括反相器361、反相器362、锁存器363和与逻辑门364。其中反相器361的输入端耦接时钟停止延迟信号CLK_STOP1,其输出端耦接至锁存器363的数据输入端。反相器362的输入端耦接至预输出时钟信号CLK_G,其输出端耦接至锁存器363的使能端。本领域技术人员都知道,锁存器的使能端为高电位时使能输出,因此,当预输出时钟信号CLK_G置低时,使能该锁存器363输出时钟门控信号CLK_EN,当该预输出时钟信号CLK_G置高时,保持时钟门控信号CLK_EN不变。与逻辑门364根据时钟门控信号CLK_EN和预输出时钟信号CLK_G,产生输出时钟信号CLK_OUT。这样保证了时钟门控信号CLK_EN的跳变一定出现在预输出时钟信号CLK_G置低时。
图4是本发明多时钟切换的时序图。图中从控就绪信号TRDY#、时钟停止信号CLK_STOP、时钟停止延迟信号CLK_STOP1、第二时钟停止延迟信号CLK_STOP2、第三时钟停止延迟信号CLK_STOP3、时钟停止反馈信号CLK_STOP_BACK、时钟选择延迟信号CLK_DELAY、时钟选择寄存信号CLK_SEL_NF[1:0]、时钟门控信号CLK_EN均与总线时钟信号CLK_BUS同步,即这些信号的动作都在总线时钟信号CLK_BUS的上升沿进行;而待切换的时钟信号CLK1,CLK2和CLK3与总线时钟信号CLK_BUS可以是完全异步的。
PCI总线的数据地址线AD上,首先出现有效寄存器地址Addr[7:0],发送完毕后,出现时钟选择信号CLK_SEL[1:0],图中示出从控就绪信号TRDY#被总线接口模块310置低一个总线时钟周期,在此期间总线接口模块310接收来自总线的时钟选择信号CLK_SEL[1:0]。控制单元320确认有效寄存器地址Addr[7:0]等于时钟选择寄存器地址Add_CLK_SEL_NF[7:0]时,将时钟停止信号CLK_STOP在从控就绪信号TRDY#置低的同时置高。时钟停止延迟信号CLK_STOP1的上升沿是采样时钟停止信号CLK_STOP产生的,而第二时钟停止延迟信号CLK_STOP2的上升沿是采样时钟停止延迟信号CLK_STOP1产生的,而第三时钟停止延迟信号CLK_STOP3的上升沿是采样第二时钟停止延迟信号CLK_STOP2产生的。时钟停止反馈信号CLK_STOP_BACK由第三时钟停止延迟信号CLK_STOP3反相后与第二时钟停止延迟信号CLK_STOP2做与运算产生,将其反相后去控制时钟停止延迟信号CLK_STOP1置低,这样时钟停止延迟信号CLK_STOP1置高两个总线时钟周期后置低,本领域技术人员都知道,这里也可以通过增加触发器的个数来实现时钟停止延迟信号CLK_STOP1置高的第一预定时间可以为任意多个总线时钟周期。时钟选择延迟信号CLK_DELAY由第二时钟停止延迟信号CLK_STOP2反相后与时钟停止延迟信号CLK_STOP1做与运算产生,因此其置高的第二预定时间为一个总线周期。在探测到时钟选择延迟信号CLK_DELAY为高时,根据时钟选择信号CLKS_EL[1:0]更新时钟选择寄存信号CLK_SEL_NF[1:0],此时发生时钟切换动作,即在图中的时刻t2,预输出时钟信号CLK_G由时钟信号CLK1切换至CLK3,在预输出时钟信号CLK_G上会出现毛刺信号401。时钟门控信号CLK_EN由锁存器363根据时钟停止延迟信号CLK_STOP1和预输出时钟信号CLK_G产生,其只在预输出时钟信号CLK_G置低时才会跳变;时钟门控信号CLK_EN与预输出时钟信号CLK_G做与运算产生输出时钟信号CLK_OUT,在时刻t1和时刻t3之间输出时钟信号CLK_OUT被置低,从而过滤掉了毛刺信号401。
图5是本发明多时钟切换方法的步骤流程图。首先步骤S501“判断是否从控就绪信号TRDY#置低,且有效寄存器地址Addr[7:0]等于时钟选择寄存器地址Add_CLK_SEL_NF[7:0]”,如果是,表明总线上出现了时钟切换请求,则执行步骤S502“置高时钟停止信号CLK_STOP”。接着执行步骤S503“采样该时钟停止信号CLK_STOP产生时钟停止延迟信号CLK_STOP1,并在一第一预定时间后置低该时钟停止延迟信号CLK_STOP1;其采样该时钟停止信号CLK_STOP产生时钟选择延迟信号CLK_DELAY,并在一第二预定时间后置低该时钟选择延迟信号CLK_DELAY”,参考图4可以知道,“采样时钟停止信号CLK_STOP”是指依据总线时钟信号CLK_BUS,采样时钟停止信号CLK_STOP的上升跳变沿来产生时钟停止延迟信号CLK_STOP1和时钟选择延迟信号CLK_DELAY,“在一第一预定时间后置低该时钟停止延迟信号”是指经过如图4所示的两个总线时钟周期,置低时钟停止延迟信号CLK_STOP1;“在一第二预定时间后置低该时钟选择延迟信号”是指经过如图4所示的一个总线时钟周期,置低时钟选择延迟信号CLK_DELAY。接着执行步骤S504“根据该时钟选择延迟信号CLK_DELAY将时钟选择信号CLK_SEL[1:0]输出并保持为时钟选择寄存信号CLK_SEL_NF[1:0]”指依据总线时钟CLK_BUS,当时钟选择延迟信号CLK_DELAY置高时,将来自系统总线的时钟选择信号CLK_SEL[1:0]输出为时钟选择寄存信号CLK_SEL_NF[1:0],并在之后保持输出该时钟选择寄存信号CLK_SEL_NF[1:0]。接着执行步骤S505“根据该时钟选择寄存信号CLK_SEL_NF[1:0]在多个时钟信号中选择一个,产生预输出时钟信号CLK_G”,即在时钟选择寄存信号更新的同时,进行时钟切换,产生的预输出时钟信号CLK_G上可能会有毛刺信号。接着执行步骤S506“根据该时钟停止延迟信号CLK_STOP1和该预输出时钟信号CLK_G,产生输出时钟信号CLK_OUT”,参照图4,即当该预输出时钟信号CLK_G置低时,由该时钟停止延迟信号CLK_STOP1的反相信号,产生时钟门控信号CLK_EN;当该预输出时钟信号CLK_G置高时,保持该时钟门控信号CLK_EN不变。且当该时钟门控信号CLK_EN置低时,置低该预输出时钟信号CLK_G,输出为该输出时钟信号CLK_OUT。
综合以上的叙述,本发明所揭露的多时钟切换的装置和方法克服了现有技术中时钟切换中出现毛刺的问题。本发明利用了系统总线上信号的时序来有效探测时钟切换的时机,当探测到总线上有时钟切换请求后,延迟一第二预定时间,再更新时钟选择信号寄存器中的数据,此时才产生时钟切换的动作,而时钟切换时刻前后的一第一预定时间内,输出时钟信号都是置低的,从而有效地防止了输出时钟信号上的毛刺信号。
实施例示出的是三个时钟信号CLK1,CLK2,CLK3,实际上,本领域技术人员都知道,本发明所揭露的多时钟切换的装置和方法可以适用于N个时钟信号的切换(N≥2)。以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
附图中符号的简单说明如下:
300:时钟切换装置
310:总线接口模块
320:控制单元
321:比较逻辑
322:或逻辑门
323:反相器
330:采样延时单元
331:反相器
332:或逻辑门
333:与逻辑门
334:触发器
335:触发器
336:触发器
337:反相器
338:与逻辑门
339:反相器
3310:与逻辑门
340:时钟选择单元
341:时钟选择信号模块
342:时钟选择信号寄存器
350:多工器
360:锁存单元
361:反相器
362:反相器
363:锁存器
364:与逻辑门