(第1実施形態)
以下、第1実施形態を図1〜図3に従って説明する。
図1に示すクロック切替回路1では、互いに非同期で、且つ周波数の異なる2つの入力クロック信号CLK1,CLK2が選択信号SELに応じて切り替えられ、その選択信号SELに応じて選択された入力クロック信号が出力クロック信号CLKOUTとして出力される。本実施形態の選択信号SELは、入力クロック信号CLK1,CLK2に対して非同期信号であり、入力クロック信号CLK1の選択時には論理Lレベルになり、入力クロック信号CLK2の選択時には論理Hレベルになる。
このクロック切替回路1は、同期化回路10と、検出回路20と、マスク信号生成回路30と、クロック選択回路40と、解除回路60とを有している。
同期化回路10には、上記選択信号SELと、出力クロック信号CLKOUTと、初期化信号ISとが入力される。同期化回路10は、選択信号SELを出力クロック信号CLKOUTに基づいて同期化し、その同期化後の選択信号SELaを検出回路20及びクロック選択回路40に出力する。この同期化回路10は、初期化信号ISにより初期化(リセット)されると、Lレベルの選択信号SELaを出力する。
検出回路20は、選択信号SELaの信号レベルの変化(つまり、HレベルからLレベルの変化、及びLレベルからHレベルの変化)を検出したときにマスク開始信号MSを生成する。このマスク開始信号MSは、出力クロック信号CLKOUTをマスクする、具体的には複数の入力クロック信号CLK1,CLK2を所定レベル(ここでは、Hレベル)でマスクするマスク信号MASKの生成開始を指令する信号である。
マスク信号生成回路30には、マスク開始信号MSと、解除回路60からのマスク解除信号MRと、初期化信号ISとが入力される。マスク信号生成回路30は、マスク開始信号MSに基づいてマスク信号MASKを生成し、マスク解除信号MRに基づいてマスク信号MASKの生成を停止する。なお、マスク信号生成回路30は、初期化信号ISにより初期化されると、Lレベルのマスク信号MASKを出力する。このマスク信号MASKはクロック選択回路40に供給される。
クロック選択回路40には、複数の入力クロック信号CLK1,CLK2と、選択信号SELaと、マスク信号MASKとが入力される。クロック選択回路40は、選択信号SELa及びマスク信号MASKに基づいて、入力クロック信号CLK1,CLK2又は所定レベルに固定された信号を出力クロック信号CLKOUTとして出力する。具体的には、クロック選択回路40は、選択信号SELaに応じて入力クロック信号CLK1,CLK2の中から1つの入力クロック信号を選択し、その選択した信号を選択クロック信号SCLKとして生成する。さらに、クロック選択回路40は、マスク信号MASKに応じて選択クロック信号SCLKをマスクして所定レベル(ここでは、Hレベル)に固定された信号を出力クロック信号CLKOUTとして出力する。換言すると、クロック選択回路40は、マスク信号MASKに応じて、出力クロック信号CLKOUTをHレベルでマスクする。また、クロック選択回路40は、マスク信号MASKの生成停止に応じて選択クロック信号SCLKを出力クロック信号CLKOUTとして出力する。
解除回路60には、マスク信号生成回路30からのマスク信号MASKと、クロック選択回路40からの選択クロック信号SCLKとが入力される。解除回路60は、マスク信号MASKが生成されているときに、選択クロック信号SCLKの信号レベルが所定レベルに変化したことを検出したときに上記マスク解除信号MRを生成する。このマスク解除信号MRは、上記マスク信号MASKの生成停止を指令する信号である。なお、解除回路60は、マスク信号MASKの生成が停止されているときには、マスク解除信号MRの生成を停止する。
次に、上記クロック切替回路1の各回路10〜60の内部構成例を図2に従って説明する。
同期化回路10は、複数段(ここでは、2段)のD−フリップフロップ回路(D−FF)11,12を含むFF群13を有している。FF群13には、2つの入力クロック信号CLK1,CLK2の中から1つの入力クロック信号を選択するために必要な1ビットの選択信号SELが入力される。ここで、同期化回路10内のFF群は、選択対象の入力クロック信号の数をNとしたときに、log2N(小数点以下切り上げ)個、ここではlog22=1個設けられている。
初段のD−FF11は、選択信号SELを出力クロック信号CLKOUTの立ち上がりエッジ(LレベルからHレベルへの遷移)に同期して取り込み、その取り込んだ信号を次段のD−FF11に出力する。D−FF12は、D−FF11の出力信号を出力クロック信号CLKOUTの立ち上がりエッジに同期して取り込み、その取り込んだ信号を上記選択信号SELaとして出力する。これらD−FF11,12のクリア端子CLRには初期化信号ISが入力される。これらD−FF11,12は、初期化時に初期化信号ISがLレベルになるとクリアされ、Lレベルを保持する。
このように複数段のD−FF11,12を有する同期化回路10は、メタステーブルの発生を回避し、選択信号SELを出力クロック信号CLKOUTに同期させて正しく取り込むための回路である。ここで、メタステーブルとは、データとクロック信号が非同期信号の場合に、受信側レジスタの出力レベルが不安定になる現象をいう。このとき、上記選択信号SELは入力クロック信号CLK1,CLK2及び出力クロック信号CLKOUTに対して非同期の信号であるため、D−FF11の出力信号が不定となる可能性がある。そこで、上記同期化回路10では、適切な段数(ここでは、2段)の同期化用のD−FF11,12が直列に接続され、それらD−FF11,12において出力クロック信号CLKOUTにリタイミングされることにより、入力される選択信号SELの同期化が行われる。これにより、D−FF11の出力信号が不定値になった場合であっても、D−FF12で出力値を確定することができるため、不定値を後段に伝播することを抑制することができる。なお、同期化回路10におけるD−FF11,12の段数は、メタステーブルの発生を回避することの可能な段数であれば特に制限されない。
検出回路20は、奇数段(ここでは、1段)のインバータ回路21とXOR回路22とを含む検出部23を有している。検出部23には、選択信号SELaが入力される。ここで、検出回路20内の検出部は、選択対象の入力クロック信号の数をNとしたときに、log2N(小数点以下切り上げ)個、ここではlog22=1個設けられている。
インバータ回路21は、同期化回路10からの選択信号SELaを論理反転した反転信号をXOR回路22に出力する。XOR回路22は、同期化回路10からの選択信号SELaと、インバータ回路21からの反転信号とを排他的論理和演算した結果を持つマスク開始信号MSを生成する。具体的には、例えば選択信号SELaの信号レベルがHレベルからLレベルに遷移すると、インバータ回路21による遅延時間だけXOR回路22の両入力信号がLレベルになるため、上記遅延時間分だけマスク開始信号MSがLレベルになる。同様に、選択信号SELaの信号レベルがLレベルからHレベルに遷移すると、インバータ回路21による遅延時間だけXOR回路22の両入力信号がHレベルになるため、その遅延時間分だけマスク開始信号MSがLレベルになる。
マスク信号生成回路30は、D−FF31を有している。D−FF31の入力端子Dには、図示しない電源回路により生成された高電位電源電圧VDDが供給される。D−FF31のクロック端子には解除回路60からマスク解除信号MRが入力される。D−FF31のプリセット端子PRには初期化信号ISの反転レベルが入力される。D−FF31のクリア端子CLRにはマスク開始信号MSが入力される。そして、D−FF31の反転出力端子XQから上記マスク信号MASKが出力される。
D−FF31は、初期化時に初期化信号ISがLレベルになるとプリセットされ、高電位電源電圧VDDレベル(Hレベル)を保持してLレベルのマスク信号MASKを出力する。D−FF31は、選択信号SELaの信号レベルの変化に応答してマスク開始信号MSがLレベルになるとクリアされ、Hレベルのマスク信号MASKを出力する。また、D−FF31は、マスク解除信号MRの立ち上がりエッジに応答して、入力端子Dに供給されている信号(高電位電源電圧VDD)を保持し、Lレベルのマスク信号MASKを出力する。
クロック選択回路40は、セレクタ41と、OR回路42とを有している。セレクタ41は、選択信号SELaに応じて、入力クロック信号CLK1,CLK2のいずれか1つの入力クロック信号を選択し、その選択した入力クロック信号を選択クロック信号SCLKとして出力する。例えばセレクタ41は、Lレベルの選択信号SELaに応答して入力クロック信号CLK1を選択クロック信号SCLKとして出力し、Hレベルの選択信号SELaに応答して入力クロック信号CLK2を選択クロック信号SCLKとして出力する。
OR回路42は、選択クロック信号SCLKとマスク信号MASKとを論理和演算した結果を持つ出力クロック信号CLKOUTを出力する。具体的には、OR回路42は、マスク信号MASKがLレベルのときに、選択クロック信号SCLKを出力クロック信号CLKOUTとして出力する。これにより、選択信号SELa(選択信号SEL)に応じて選択された入力クロック信号が出力クロック信号CLKOUTとして出力される。一方、OR回路42は、マスク信号MASKがHレベルのときに、選択クロック信号SCLKの信号レベルに関わらずHレベル固定の出力クロック信号CLKOUTを出力する。すなわち、Hレベルのマスク信号MASKにより選択クロック信号SCLKがマスクされ、出力クロック信号CLKOUTがHレベルに固定される。このように、Hレベルのマスク信号MASKは選択クロック信号SCLK(つまり、入力クロック信号CLK1及び入力クロック信号CLK2)を無効にする信号として機能し、OR回路42は選択クロック信号SCLKを無効にする回路として機能する。ここで、Hレベルのマスク信号MASKは、選択信号SELa(選択信号SEL)の信号レベルが変化したとき、つまり入力クロック信号CLK1,CLK2が切り替えられるときに、Lレベルのマスク開始信号MSに応答して生成される。このため、Hレベルのマスク信号MASKは、クロック切替時における入力クロック信号CLK1,CLK2の双方を無効化し、クロック切替時における出力クロック信号CLKOUTをHレベルに固定する信号であると言える。
解除回路60は、NAND回路61を有している。NAND回路61は、選択クロック信号SCLKの反転レベルとマスク信号MASKとを否定論理積演算した結果を持つマスク解除信号MRを生成し、そのマスク解除信号MRを上記D−FF31のクロック端子に出力する。具体的には、NAND回路61は、マスク信号MASKがLレベルのときに、選択クロック信号SCLKの信号レベルに関わらずLレベル固定のマスク解除信号MRを出力する。すなわち、マスク信号MASKにより選択クロック信号SCLKがマスクされていないときには、Hレベル固定のマスク解除信号MRが出力される。一方、NAND回路61は、マスク信号MASKがHレベルのときに、選択クロック信号SCLKと同じ論理レベルのマスク解除信号MRを出力する。このため、選択クロック信号SCLKに対するマスクが開始された後に、選択クロック信号SCLKがLレベルからHレベルに遷移するとマスク解除信号MRもLレベルからHレベルに立ち上がる。なお、このマスク解除信号MRの立ち上がりエッジに応答して上記D−FF31でマスク信号MASKがLレベルに遷移される。
本実施形態において、XOR回路22は第1論理回路の一例、セレクタ41は第2論理回路の一例、OR回路42は第2論理回路の一例である。
次に、上記クロック切替回路1の動作を図3に従って説明する。まず、クロック切替回路1の初期化動作について説明する。
今、時刻t1において、初期化信号ISがLレベルに立ち下がると、D−FF11,12がクリアされてLレベルの選択信号SELaが出力されるとともに、D−FF31がプリセットされてLレベルのマスク信号MASKが出力される。このLレベルのマスク信号MASKに応答してNAND回路61からHレベルのマスク解除信号MRが出力される。なお、クロック切替回路1(同期化回路10)には、Lレベルの選択信号SELが入力される。
このような初期化後には、上記Lレベルの選択信号SELaに応じて、入力クロック信号CLK1,CLK2のうち入力クロック信号CLK1がセレクタ41で選択され、その入力クロック信号CLK1が選択クロック信号SCLKとして出力される。このとき、上述のようにマスク信号MASKがLレベルであるため、選択クロック信号SCLK、つまり入力クロック信号CLK1が出力クロック信号CLKOUTとして出力される。このため、同期化回路10において、入力クロック信号CLK1(出力クロック信号CLKOUT)により選択信号SELの同期化が行われる。
続いて、入力クロック信号CLK1から入力クロック信号CLK2に切り替える動作について説明する。
時刻t2において、入力クロック信号CLK1から入力クロック信号CLK2に切り替えるために選択信号SELがLレベルからHレベルに遷移される。すると、その遷移後に発生する最初の出力クロック信号CLKOUT(ここでは、入力クロック信号CLK1)の立ち上がりエッジに応答して上記Hレベルの選択信号SELがD−FF11に保持される(時刻t3)。続いて、次の出力クロック信号CLKOUTの立ち上がりエッジに応答して、D−FF11から出力されるHレベルの出力信号がD−FF12に保持され、そのD−FF12からHレベルの選択信号SELaが出力される(時刻t4)。すなわち、時刻t4において、D−FF12から出力される選択信号SELaがLレベルからHレベルに遷移される。これにより、上記遷移後のHレベルの選択信号SELが出力クロック信号CLKOUT(つまり、クロック切替前の入力クロック信号CLK1)で同期化されたことになる。なお、このように選択信号SELがLレベルからHレベルに遷移してから、そのHレベルの選択信号SELに対する同期化が完了するまで(選択信号SELaがHレベルに遷移するまで)は、Lレベルの選択信号SELaに応じて入力クロック信号CLK1が選択クロック信号SCLKとして出力されている。
そして、上述のように選択信号SELaがLレベルからHレベルに遷移すると、その遷移(変化)に応答してXOR回路22からLレベルのマスク開始信号MSが所定期間(インバータ回路21の遅延時間分)だけ出力される。このLレベルのマスク開始信号MSに応答してD−FF31からHレベルのマスク信号MASKが出力される。
一方、クロック選択回路40では、上記遷移後のHレベルの選択信号SELaに応じて入力クロック信号CLK2がセレクタ41で選択され、その入力クロック信号CLK2が選択クロック信号SCLKとして出力される。すなわち、セレクタ41では、Hレベルの選択信号SELaに応じて、入力クロック信号CLK1から入力クロック信号CLK2への切り替えが行われる。但し、このときのOR回路42には上記Hレベルのマスク信号MASKが入力されるため、そのマスク信号MASKにより選択クロック信号SCLKがマスクされ、出力クロック信号CLKOUTがHレベルに固定される。このように、入力クロック信号CLK1から入力クロック信号CLK2に切り替えられるときにHレベルのマスク信号MASKが生成される。このため、例えばセレクタ41でのクロック切り替え直前の入力クロック信号CLK1がHレベルで、クロック切り替え直後の入力クロック信号CLK2がLレベルである場合の細い幅のHパルスのハザード(選択クロック信号SCLK)が出力クロック信号CLKOUTとして出力されることが抑制される。
また、解除回路60では、上記遷移後のHレベルのマスク信号MASKに応じて、選択クロック信号SCLK(つまり、クロック切替後の入力クロック信号CLK2)と同じ論理レベルのマスク解除信号MRがNAND回路61から出力される。上記時刻t4における選択クロック信号SCLKがLレベルであるため、その時刻t4においてマスク解除信号MRがLレベルに遷移する。その後、選択クロック信号SCLKがHレベルに遷移すると(時刻t5)、マスク解除信号MRがHレベルに立ち上がる。このマスク解除信号MRの立ち上がりエッジに応答してマスク信号MASKがHレベルからLレベルに遷移する。すると、選択クロック信号SCLKに対するマスクが解除されるため、その選択クロック信号SCLK(ここでは、クロック切替後の入力クロック信号CLK2)が出力クロック信号CLKOUTとして出力される。このようにして、入力クロック信号CLK1から入力クロック信号CLK2への切り替えが完了する。なお、マスク信号MASKがLレベルに遷移すると、NAND回路61からはHレベル固定のマスク解除信号MRが出力されることになる。
続いて、入力クロック信号CLK2から入力クロック信号CLK1に切り替える動作について説明する。
時刻t6において、入力クロック信号CLK2から入力クロック信号CLK1に切り替えるために選択信号SELがHレベルからLレベルに遷移される。すると、そのLレベルの選択信号SELが出力クロック信号CLKOUT(ここでは、入力クロック信号CLK2)で同期化され、出力クロック信号CLKOUTの立ち上がりエッジに同期してLレベルの選択信号SELaが出力される(時刻t7)。なお、このように選択信号SELがHレベルからLレベルに遷移してから、そのLレベルの選択信号SELに対する同期化が完了するまで(選択信号SELaがLレベルに遷移するまで)は、Hレベルの選択信号SELaに応じて入力クロック信号CLK2が選択クロック信号SCLKとして出力される。
そして、上述のように選択信号SELaがHレベルからLレベルに遷移すると、その遷移(変化)に応答してXOR回路22からLレベルのマスク開始信号MSが所定期間だけ出力される。このLレベルのマスク開始信号MSに応答してD−FF31からHレベルのマスク信号MASKが出力される。
一方、クロック選択回路40では、上記遷移後のLレベルの選択信号SELaに応じて入力クロック信号CLK1がセレクタ41で選択され、その入力クロック信号CLK1が選択クロック信号SCLKとして出力される。すなわち、セレクタ41では、Lレベルの選択信号SELaに応じて、入力クロック信号CLK2から入力クロック信号CLK1への切り替えが行われる。但し、このときのOR回路42には上記Hレベルのマスク信号MASKが入力されるため、そのマスク信号MASKにより選択クロック信号SCLKがマスクされ、出力クロック信号CLKOUTがHレベルに固定される。
また、上記時刻t7において、上記Hレベルのマスク信号MASK及びLレベルの選択クロック信号SCLKに応じてマスク解除信号MRがLレベルに遷移する。その後、選択クロック信号SCLKがHレベルに遷移すると(時刻t8)、マスク解除信号MRがHレベルに立ち上がる。このマスク解除信号MRの立ち上がりエッジに応答してマスク信号MASKがHレベルからLレベルに遷移する。すると、選択クロック信号SCLKに対するマスクが解除されるため、その選択クロック信号SCLK(ここでは、クロック切替後の入力クロック信号CLK1)が出力クロック信号CLKOUTとして出力される。このようにして、入力クロック信号CLK2から入力クロック信号CLK1への切り替えが完了する。
以上説明したように、クロック切替回路1では、選択信号SELaの信号レベルが変化したとき、つまり入力クロック信号CLK1,CLK2の切り替え時にHレベルのマスク信号MASKが生成される。このときの選択信号SELaは出力クロック信号CLKOUTの立ち上がりエッジに同期化されているため、マスク信号MASKも出力クロック信号CLKOUTの立ち上がりエッジに同期化して生成される。このため、出力クロック信号CLKOUTがHレベルに遷移したときにHレベルのマスク信号MASKが生成され、そのマスク信号MASKにより選択クロック信号SCLKがマスクされて出力クロック信号CLKOUTがHレベルに固定される。これにより、クロック切替時に出力クロック信号CLKOUTの信号レベルをHレベルに固定することができる。換言すると、選択信号SELaに応じてセレクタ41で切り替えられた入力クロック信号(選択クロック信号SCLK)がその切り替え直後に出力クロック信号CLKOUTとして出力されることを防止することができる。このため、切り替え直後の選択クロック信号SCLKがLレベルであっても、出力クロック信号CLKOUTがLレベルに遷移することが防止され、クロック切替時におけるハザードの発生を好適に抑制することができる。
さらに、クロック切替回路1では、選択クロック信号SCLKに対するマスクが開始された後、選択クロック信号SCLKがLレベルからHレベルに遷移したときに、その選択クロック信号SCLKに対するマスクが解除される。このため、選択クロック信号SCLKに対するマスクが開始されてからそのマスクが解除されるまでの期間は出力クロック信号CLKOUTがHレベルに固定され、さらに上記マスクの解除後にHレベルパルスの選択クロック信号SCLKが出力クロック信号CLKOUTとして出力される。したがって、クロック切替時において、入力クロック信号CLK1,CLK2のうちの短い方のパルス幅よりさらに短いパルス幅の信号が出力クロック信号CLKOUTとして出力されることを好適に抑制することができる。なお、このような短いパルス幅が出力クロック信号CLKOUTに現れる場合には、この出力クロック信号CLKOUTにより動作する回路に誤動作が発生する確率が高まるが、長いパルス幅の信号が出力クロック信号CLKOUTに現れる場合には、通常、誤動作が発生することはない。
以上説明した本実施形態によれば、以下の効果を奏することができる。
(1)選択信号SELを出力クロック信号CLKOUTで同期化し、その同期化後の選択信号SELaの信号レベルが変化したときに、複数の入力クロック信号CLK1,CLK2を所定レベル(ここでは、Hレベル)でマスクするマスク信号MASKを生成するようにした。また、マスク信号MASKが生成された後、選択信号SELaに応じて選択される入力クロック信号、つまり選択クロック信号SCLKの所定レベル(ここでは、Hレベル)への遷移を検出したときに、マスク信号MASKの生成を停止するようにした。これにより、選択クロック信号SCLKに対するマスクが開始されてからそのマスクが解除されるまでの期間は出力クロック信号CLKOUTがHレベルに固定され、さらに上記マスクの解除後にHレベルパルスの選択クロック信号SCLKが出力クロック信号CLKOUTとして出力される。したがって、クロック切替時におけるハザードの発生を好適に抑制することができる。
(2)同期化回路10では、選択信号SELを1つの出力クロック信号(選択後の入力クロック信号)で同期化を行うようにした。このため、選択信号SELを入力クロック信号CLK1,CLK2毎に同期化を行う場合に比べて、回路規模を縮小することができる。具体的には、同期化回路10内のFF群13は、選択対象の入力クロック信号CLK1,CLK2の個数N(ここでは、2)個分設ける必要はなく、log2N(小数点以下切り上げ)個分だけ設ければよい。このため、選択対象の入力クロック信号の個数Nが増加した場合であっても、その個数Nと同数のFF群13を設ける場合に比べて、回路規模の増大を抑制することができる。
さらに、2つの入力クロック信号CLK1,CLK2に対して同期化後の選択信号SELaが1つ使用されるため、その選択信号SELaに応じてマスク信号MASKを生成する検出回路20、マスク信号生成回路30及び解除回路60の回路規模の増大も抑制することができる。
(3)上述のようにクロック切替時におけるハザードの発生を抑制できるため、任意のタイミングで選択信号SELの信号レベルを切り替えることができる、つまり任意のタイミングで入力クロック信号CLK1,CLK2を切り替えることができる。また、マスク信号MASKの生成後、選択クロック信号SCLKの最初の立ち上がりエッジに応答して入力クロック信号CLK1,CLK2の切り替えを完了することができる。このため、選択信号SELの同期化が完了した後に短期間で入力クロック信号CLK1,CLK2を切り替えることができ、入力クロック信号CLK1,CLK2をダイナミックに切り替えることができる。さらに、クロック切替後の入力クロック信号の立ち上がりエッジに応答してマスク信号MASKの生成が停止されるため、入力クロック信号CLK1,CLK2の周波数比及び位相に関係なく、上記ハザードの発生を抑制することができる。
(4)ところで、クロック切替時にハザードが発生する回路では、シミュレーションを行う際に、実際の回路とシミュレーション回路を部分的に変更する等の処置が必要になり、この変更した部分に起因して全体回路が所望の動作と異なる動作になるといった問題があった。これに対し、クロック切替時におけるハザードの発生を抑制できるクロック切替回路1では、実際の回路とシミュレーション回路とを同一の回路にすることができるため、上記問題の発生を未然に防止することができる。
(5)選択信号SELaを、出力クロック信号CLKOUTの立ち上がりエッジで同期化するようにした。これにより、出力クロック信号CLKOUTがHレベルに遷移したときにHレベルのマスク信号MASKが生成され、そのマスク信号MASKにより選択クロック信号SCLKがマスクされて出力クロック信号CLKOUTがHレベルに固定される。したがって、クロック切替時に出力クロック信号CLKOUTの信号レベルをHレベルに固定することができる。このため、クロック切替直後の選択クロック信号SCLKがLレベルであっても、出力クロック信号CLKOUTがLレベルに遷移することが防止され、クロック切替時におけるハザードの発生を好適に抑制することができる。
(6)選択信号SELを出力クロック信号で同期化を行うようにしたため、入力クロック信号CLK1,CLK2に対して非同期信号である選択信号SELに応じて入力クロック信号CLK1,CLK2の切り替えを行うことができる。
(7)同期化回路10において、複数段のD−FF11,12によって選択信号SELを出力クロック信号CLKOUTに従って取り込むようにした。これにより、メタステーブルの発生を抑制することができ、選択信号SELを正しく取り込むことができる。さらに、上述したように選択対象の入力クロック信号の個数Nが増加した場合に、FF群13の増加が抑制されるため、メタステーブル対策を行った場合の回路規模の増大も抑制することができる。
(8)検出回路20では、選択信号SELaの信号レベルの変化、つまりHレベルからLレベルへの変化と、LレベルからHレベルへの変化との双方の変化をXOR回路22で検出するようにしたため、回路規模の増大を抑制することができる。
(第1実施形態の変形例)
なお、上記第1実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記第1実施形態における同期化回路10の内部構成例は特に限定されない。例えば複数段のD−FF11,12の代わりに、1段のD−FFを設けるようにしてもよい。このような構成であっても、上記第1実施形態の(1)〜(6)、(8)と同様の効果を奏することができる。
・上記第1実施形態では、D−FF11,12をクリア端子CLR付きフリップフロップとし、そのクリア端子CLRに初期化信号ISを供給するようにした。これにより、初期化時において、D−FF12からLレベルの選択信号SELaが出力され、セレクタ41から入力クロック信号CLK1が選択クロック信号SCLKとして出力される。これに限らず、例えばD−FF11,12をプリセット端子PR付きフリップフロップに変更し、そのプリセット端子PRに初期化信号ISを供給するようにしてもよい。この場合には、初期化時において、D−FF12からHレベルの選択信号SELaが出力されるため、セレクタ41から入力クロック信号CLK2が選択クロック信号SCLKとして出力されることになる。なお、この場合には、選択信号SELの初期値をHレベルに設定することが好ましい。
なお、D−FF11,12としては、クリア端子CLR又はプリセット端子PRを有さないフリップフロップを使用することも可能である。但し、設計段階の論理シミュレーションにおいて、シミュレーション初期のこれらのフリップフロップの不定値がセレクタ41に伝播してしまう。このため、クリア端子CLR又はプリセット端子PRを有するフリップフロップを使用することが好ましい。
・上記第1実施形態における検出回路20の内部構成例は特に限定されない。上記第1実施形態の検出回路20では、選択信号SELaの双方の信号レベルの変化(HレベルからLレベルへの変化、及びLレベルからHレベルの変化)をインバータ回路21及びXOR回路22で検出するようにした。これに限らず、例えば検出回路20において、選択信号SELaのHレベルからLレベルへの変化と、選択信号SELaのLレベルからHレベルへの変化とを個別に検出する論理回路を設けるようにしてもよい。このような構成であっても、上記第1実施形態の(1)〜(7)と同様の効果を奏することができる。
・上記第1実施形態におけるマスク信号生成回路30の内部構成例は特に限定されない。例えば図4に示されるように、上記D−FF31の代わりに、2つのNAND回路32,33により形成されるRS−FF34を設けるようにしてもよい。具体的には、3入力端子を有するNAND回路32には、初期化信号ISと、マスク開始信号MSと、2入力端子を有するNAND回路33の出力信号とが入力される。このNAND回路32の出力信号は上記マスク信号MASKとして出力されるとともに、NAND回路32の出力信号はNAND回路33に入力される。NAND回路33にはマスク解除信号MRが供給される。このようなRS−FF34では、セット端子Sに入力されるLレベルのマスク開始信号MS(セット信号)に応答してセット状態に遷移し、Hレベルのマスク信号MASKを出力する。また、リセット端子Rに入力されるLレベルのマスク解除信号MR(リセット信号)に応答してリセット状態に遷移し、Lレベルのマスク信号MASKを出力する。このような構成であっても、上記第1実施形態と同様の効果を奏することができる。
・あるいは、上記第1実施形態のD−FF31では、入力端子Dに高電位電源電圧VDDを供給し、反転出力端子XQからマスク信号MASKを出力するようにした。これに限らず、例えばD−FF31の入力端子に低電位電源電圧を供給し、出力端子Qからマスク信号MASKを出力するようにしてもよい。
・上記第1実施形態における解除回路60の内部構成例は特に限定されない。例えば図5に示されるように、バッファ回路(遅延回路)62とOR回路63とを追加するようにしてもよい。具体的には、OR回路63には、マスク信号MASKが直接供給されるとともに、マスク信号MASKをバッファ回路62により遅延させた遅延信号が供給される。このため、マスク解除信号MRの立ち上がりエッジに応答してマスク信号MASKがLレベルに遷移された場合に、その遷移後もバッファ回路62による遅延時間(具体的には、D−FF31の出力が変化するだけの時間)分だけマスク解除信号MRがHレベルに確実に維持される。これにより、マスク解除信号MRのパルス幅(D−FF31のクロックパルス幅)を確保することができるため、マスク信号MASKを確実にLレベルに遷移させることができる。
・あるいは、図6に示されるように、解除回路60の内部構成を変更するようにしてもよい。具体的には、図6に示した解除回路60は、3入力端子を有するNAND回路64,65を有している。NAND回路64には、選択クロック信号SCLKの反転レベルと、マスク信号MASKと、NAND回路65の出力信号とが入力される。NAND回路65には、選択クロック信号SCLKの反転レベルと、マスク信号MASKの反転レベルと、NAND回路64の出力信号とが入力される。そして、NAND回路64の出力信号がマスク解除信号MRとして出力される。このような回路では、初期化動作によりLレベルのマスク信号MASKが入力されると、NAND回路64からHレベルのマスク解除信号MRが出力される。その後、マスク信号MASKがHレベルに遷移すると、その時の選択クロック信号SCLKと同じ論理レベルのマスク解除信号MRが出力される。そして、マスク信号MASKがHレベルであるときに、選択クロック信号SCLKがLレベルからHレベルに遷移すると、マスク解除信号MRもLレベルからHレベルに遷移する。すると、そのマスク解除信号MRの立ち上がりエッジに応答してマスク信号MASKがLレベルに遷移する。すなわち、このような構成であっても、Hレベルのマスク信号MASKが生成された後、選択クロック信号SCLKの立ち上がりエッジに応答してマスク信号MASKをLレベルに遷移させることができる。
・上記第1実施形態におけるクロック選択回路40及び解除回路60の内部構成例は特に限定されない。例えば図7に示されるように、クロック選択回路40及び解除回路60の内部構成を変更するようにしてもよい。具体的には、クロック選択回路40は、インバータ回路43と、AND回路44,45と、3入力端子を有するOR回路46とを有している。AND回路44には、入力クロック信号CLK1と、選択信号SELaがインバータ回路43により論理反転された信号とが入力される。また、AND回路45には、入力クロック信号CLK2と、選択信号SELaとが入力される。OR回路46には、AND回路44,45の出力信号と、マスク信号MASKとが入力される。このOR回路46から上記出力クロック信号CLKOUTが出力される。このようなクロック選択回路40では、Lレベルの選択信号SELaに応じて、AND回路44から入力クロック信号CLK1が出力され、AND回路45からLレベル固定の出力信号が出力される。そして、マスク信号MASKがLレベルであるときには、AND回路44から出力される入力クロック信号CLK1が出力クロック信号CLKOUTとして出力される。一方、クロック選択回路40では、Hレベルの選択信号SELaに応じて、AND回路44からLレベル固定の出力信号が出力され、AND回路45から入力クロック信号CLK2が出力される。そして、マスク信号MASKがLレベルであるときには、AND回路45から出力される入力クロック信号CLK2が出力クロック信号CLKOUTとして出力される。なお、マスク信号MASKがHレベルであるときには、AND回路44,45の出力信号(つまり、入力クロック信号CLK1,CLK2)の信号レベルに関わらずに、Hレベル固定の出力クロック信号CLKOUTが出力される。
一方、解除回路60は、インバータ回路66と、3入力端子を有するOR回路67とを有している。OR回路67には、マスク信号MASKがインバータ回路66により論理反転された信号と、AND回路44,45の出力信号とが入力される。このOR回路67から上記マスク解除信号MRが出力される。このような解除回路60では、Lレベルの選択信号SELaに応じてAND回路44から入力クロック信号CLK1が出力され、且つHレベルのマスク信号MASKが出力されている場合には、入力クロック信号CLK1と同じ論理レベルのマスク解除信号MRが出力される。また、Hレベルの選択信号SELaに応じてAND回路45から入力クロック信号CLK2が出力され、且つHレベルのマスク信号MASKが出力されている場合には、入力クロック信号CLK2と同じ論理レベルのマスク解除信号MRが出力される。なお、Lレベルのマスク信号MASKが出力されている場合には、AND回路44,45の出力信号の信号レベルに関わらずに、Hレベル固定の出力クロック信号CLKOUTが出力される。このような構成であっても、上記第1実施形態と同様の効果を奏することができる。
・上記第1実施形態では、選択信号SELを出力クロック信号CLKOUTの立ち上がりエッジで同期化し、選択クロック信号SCLK(入力クロック信号CLK1,CLK2)をHレベルでマスクするようにした。これに限らず、例えば選択信号SELを出力クロック信号CLKOUTの立ち下がりエッジで同期化し、選択クロック信号SCLK(入力クロック信号CLK1,CLK2)をLレベルでマスクするようにしてもよい。
・上記第1実施形態では、選択信号SELを出力クロック信号CLKOUTの立ち上がりエッジで同期化するようにした。また、選択クロック信号SCLKがマスク信号MASKによりマスクされているときに、選択クロック信号SCLKの立ち上がりエッジに応答してマスク信号MASKによるマスクを解除するようにした。これに限らず、例えば選択信号SELを出力クロック信号CLKOUTの立ち下がりエッジで同期化するようにしてもよい。また、選択クロック信号SCLKがマスク信号MASKによりマスクされているときに、選択クロック信号SCLKの立ち下がりエッジに応答してマスク信号MASKによるマスクを解除するようにしてもよい。
・上記第1実施形態では、マスク信号生成回路30内のD−FF31の初期化を初期化信号ISにより行うようにした。これに限らず、例えばD−FF31の初期化を、初期化信号IS及びマスク開始信号MSにより行うようにしてもよい。具体的には、図8に示されるように、検出回路20に、初期化信号ISとXOR回路22の出力信号とが供給されるAND回路24を追加し、そのAND回路24の出力信号をマスク開始信号MSとしてD−FF31のクリア端子CLRに供給するようにしてもよい。この場合には、D−FF31のプリセット端子への初期化信号ISの供給が省略されている。
このような回路では、図9に示す時刻t9において、初期化信号ISがLレベルに立ち下がると、D−FF11,12がクリアされてLレベルの選択信号SELaが出力される一方で、AND回路24からLレベルのマスク開始信号MSが出力される。すると、Lレベルのマスク開始信号MSに応答してHレベルのマスク信号MASKが出力される。すなわち、Lレベルの初期化信号ISがマスク開始信号MSとしてD−FF31に入力されると、D−FF31でHレベルのマスク信号MASKが生成される。そのHレベルのマスク信号MASKにより選択クロック信号SCLKがマスクされてHレベル固定の出力クロック信号CLKOUTが出力される。一方、解除回路60では、上記Lレベルのマスク信号MASKに応じて、選択クロック信号SCLKと同じ論理レベル(時刻t9ではLレベル)のマスク解除信号MRが出力される。その後、選択クロック信号SCLKがHレベルに遷移すると(時刻t10)、マスク解除信号MRがLレベルからHレベルに遷移し、そのマスク解除信号MRの立ち上がりエッジに応答してマスク信号MASKがLレベルに遷移する。これにより、クロック切替回路1の初期化が完了し、選択信号SELaに応じて選択される入力クロック信号CLK1が出力クロック信号CLKOUTとして出力される。このように、図8に示したクロック切替回路1では、選択クロック信号SCLKの立ち上がりエッジに同期して初期化が完了する。
・あるいは、図10に示されるように、同期化回路10及び解除回路60の内部構成を変更するようにしてもよい。具体的には、図10に示した同期化回路10は、D−FF11,12と、AND回路14,15とを有している。AND回路14は、選択信号SELと初期化信号ISとを論理積演算した結果を持つ信号をD−FF11の入力端子Dに出力する。D−FF11は、AND回路14の出力信号を出力クロック信号CLKOUTの立ち上がりエッジに同期して取り込み、その取り込んだ信号をAND回路15に出力する。AND回路15は、D−FF11の出力信号と初期化信号ISとを論理積演算した結果を持つ信号D−FF12の入力端子Dに出力する。D−FF12は、AND回路15の出力信号を出力クロック信号CLKOUTの立ち上がりエッジに同期して取り込み、その取り込んだ信号を上記選択信号SELaとして出力する。
また、図10に示した解除回路60は、2入力端子を有するAND回路68と、3入力端子を有するOR回路69と、2入力端子を有するOR回路70と、2入力端子を有するAND回路71とを有している。AND回路68には、選択クロック信号SCLKと、マスク信号MASKとが入力される。OR回路69には、マスク信号MASKの反転レベルと、初期化信号ISの反転レベルと、AND回路68の出力信号とが入力される。OR回路70には、初期化信号ISと、選択クロック信号SCLKとが入力される。AND回路71には、OR回路69の出力信号と、OR回路70の出力信号とが入力される。そして、AND回路71からマスク解除信号MRが出力される。
次に、図10に示したクロック切替回路1の動作を説明する。なお、ここでは、電源投入時において、D−FF11,12の出力端子Qから出力される信号がLレベル、D−FF31の反転出力端子XQから出力される信号(マスク信号MASK)がLレベルになる場合の動作について説明する。
図11に示す時刻t11の直前、つまり電源投入時においては、D−FF12からLレベルの選択信号SELaが出力され、D−FF31からLレベルのマスク信号MASKが出力されているため、入力クロック信号CLK1が選択クロック信号SCLKとして出力され、入力クロック信号CLK1が出力クロック信号CLKOUTとして出力されている。続いて、時刻t11において初期化信号ISがLレベルに立ち下がると、OR回路69からHレベル固定の出力信号が出力され、OR回路70から選択クロック信号SCLK(ここでは、入力クロック信号CLK1)が出力信号として出力される。このため、AND回路71から入力クロック信号CLK1と同じ論理レベル(時刻t11ではLレベル)のマスク解除信号MRが出力される。その後、出力クロック信号CLKOUT(ここでは、入力クロック信号CLK1)がHレベルに遷移すると(時刻t12)、AND回路14,15から出力されるLレベルの出力信号(Lレベルの初期化信号IS)がD−FF11,12に取り込まれ、D−FF11,12からLレベルの出力信号が出力される。このようにして、Lレベルの初期化信号ISによって選択信号SELaの論理レベルがLレベルに確定される。すなわち、同期化回路10では、Lレベルの初期化信号ISに基づいて選択信号SELaがLレベルに設定される(初期化される)。
また、上述のように入力クロック信号CLK1がHレベルに遷移すると、マスク解除信号MRがLレベルからHレベルに遷移し、そのマスク解除信号MRの立ち上がりエッジに応答して、マスク信号MASKがLレベルに確定される。すなわち、解除回路60では、上記初期化されたLレベルの選択信号SELaに応じて選択された入力クロック信号CLK1のLレベルからHレベルの遷移に応答してマスク解除信号MRが生成される。そして、マスク信号生成回路30では、上記マスク解除信号MRに基づいてマスク信号MASKの生成が停止される。これにより、クロック切替回路1の初期化が完了し、選択信号SELaに応じて選択される入力クロック信号CLK1が出力クロック信号CLKOUTとして出力される。
このように、図10に示したクロック切替回路1では、出力クロック信号CLKOUTの立ち上がりエッジに同期して初期化が完了する。したがって、この変形例における初期化信号ISは、Lレベルに立ち下がった後、出力クロック信号CLKOUTがLレベルからHレベルに遷移するまではLレベルを維持する必要がある。このため、例えば入力クロック信号CLK1,CLK2のいずれか一方の信号が出力クロック信号CLKOUTとして出力されている定常動作状態において、ノイズ等に起因して初期化信号ISがLレベルに短時間だけ遷移しても、そのLレベルの初期化信号ISに応じてD−FF11,12,31がクリアされることを抑制することができる。具体的には、例えば時刻t13において、初期化信号ISがノイズ等に起因してLレベルに遷移した場合であっても、初期化信号ISがLレベルの期間に出力クロック信号CLKOUTのHレベルへの遷移が発生しない限り、選択信号SELaの論理レベルが意図せずに遷移することはない。このため、マスク開始信号MSがLレベルに立ち下がることを抑制でき、D−FF31がクリアされることを抑制することができる。すなわち、意図せずにHレベルのマスク信号MASKが生成されることを抑制することができる。このように、図10に示したクロック切替回路1ではノイズ耐性を高めることができる。
なお、初期化信号ISがLレベルの期間は選択クロック信号SCLKと同じ論理レベルのマスク解除信号MRが出力され、初期化信号ISがHレベルの期間はOR回路70からHレベル固定の出力信号が出力される。
・上記第1実施形態のクロック選択回路40では、選択信号SELaに応じて入力クロック信号CLK1,CLK2のいずれか一方の信号を選択した後に、その選択後の選択クロック信号SCLKに対してマスク信号MASKでマスクするようにした。これに限らず、例えば入力クロック信号CLK1,CLK2の各々に対してマスク信号MASKでマスクした後に、選択信号SELaに応じて1つのクロック信号を選択するようにしてもよい。この場合のクロック切替回路1の回路例を図12に示している。クロック選択回路40は、OR回路47,48とセレクタ49とを有している。OR回路47には入力クロック信号CLK1とマスク信号MASKとが入力され、OR回路48には入力クロック信号CLK2とマスク信号MASKとが入力される。これらOR回路47,48は、マスク信号MASKがLレベルのときに、入力クロック信号CLK1,CLK2をそれぞれ出力信号としてセレクタ49に出力する。また、OR回路47,48は、マスク信号MASKがHレベルのときに、Hレベル固定の出力信号をそれぞれセレクタ49に出力する。セレクタ49は、Lレベルの選択信号SELaに応じてOR回路47の出力信号を出力クロック信号CLKOUTとして出力し、Hレベルの選択信号SELaに応じてOR回路48の出力信号を出力クロック信号CLKOUTとして出力する。このように、クロック選択回路40は、マスク信号MASK及び選択信号SELaに応じて、入力クロック信号CLK1,CLK2又は所定レベル(Hレベル)に固定された信号を出力クロック信号CLKOUTとして出力する。
また、この場合の解除回路60は、NAND回路72,73とセレクタ74とを有している。NAND回路72にはマスク信号MASKと入力クロック信号CLK1の反転レベルとが入力され、NAND回路73にはマスク信号MASKと入力クロック信号CLK2の反転レベルとが入力される。これらNAND回路72,73は、マスク信号MASKがLレベルのときに、Hレベル固定の出力信号をそれぞれセレクタ74に出力する。また、NAND回路72,73は、マスク信号MASKがHレベルのときに、入力クロック信号CLK1,CLK2をそれぞれ出力信号としてセレクタ74に出力する。セレクタ74は、Lレベルの選択信号SELaに応じてNAND回路72の出力信号をマスク解除信号MRとして出力し、Hレベルの選択信号SELaに応じてNAND回路73の出力信号をマスク解除信号MRとして出力する。このような解除回路60では、マスク信号MASKがHレベルであって選択信号SELaがLレベルであるときに、その選択信号SELaに応じて選択される入力クロック信号CLK1がLレベルからHレベルに遷移すると、セレクタ74から出力されるマスク解除信号MRがLレベルからHレベルに遷移する。すると、そのマスク解除信号MRの立ち上がりエッジに応答してマスク信号MASKがLレベルに遷移する。このように、解除回路60では、マスク信号MASKがHレベルであるときに、選択信号SELaにより選択される入力クロック信号のLレベルからHレベルへの遷移に応答して、マスク信号MASKの生成を停止するマスク解除信号MRが生成される。
・上記第1実施形態のクロック選択回路40では、選択信号SELaに応じて入力クロック信号CLK1,CLK2のいずれか一方の信号を選択した後に、その選択後の選択クロック信号SCLKに対してマスク信号MASKでマスクするようにした。これに限らず、例えば選択信号SELaによる選択とマスク信号MASKによるマスクとを共通の回路で行うようにしてもよい。この場合のクロック切替回路1の回路例を図13に示している。クロック選択回路40は、インバータ回路50と、3入力端子を有するOR回路51,52と、AND回路53とを有している。OR回路51には、入力クロック信号CLK1と、選択信号SELaと、マスク信号MASKとが入力される。OR回路52には、入力クロック信号CLK2と、選択信号SELaがインバータ回路50により論理反転された信号と、マスク信号MASKとが入力される。AND回路53は、OR回路51の出力信号とOR回路52の出力信号とを論理積演算した結果を持つ信号を上記出力クロック信号CLKOUTとして出力する。このようなクロック選択回路40では、例えばマスク信号MASKがLレベルであって選択信号SELaがLレベルである場合に、OR回路51から入力クロック信号CLK1が出力され、OR回路52からHレベル固定の出力信号が出力される。このため、この場合のAND回路53は、OR回路51の出力信号、つまり入力クロック信号CLK1を出力クロック信号CLKOUTとして出力する。一方、例えばマスク信号MASKがHレベルである場合には、OR回路51,52の双方からHレベル固定の出力信号が出力されるため、AND回路53からはHレベル固定の出力クロック信号CLKOUTが出力される。このように、クロック選択回路40は、マスク信号MASK及び選択信号SELaに応じて、入力クロック信号CLK1,CLK2又はHレベルに固定された信号を出力クロック信号CLKOUTとして出力する。
また、この場合の解除回路60は、インバータ回路75,76,77と、3入力端子を有するOR回路78,79と、AND回路80とを有している。OR回路78には、入力クロック信号CLK1と、選択信号SELaと、マスク信号MASKがインバータ回路75により論理反転された信号とが入力される。OR回路79には、入力クロック信号CLK2と、選択信号SELaがインバータ回路76により論理反転された信号と、マスク信号MASKがインバータ回路77により論理反転された信号とが入力される。AND回路80は、OR回路78の出力信号とOR回路79の出力信号とを論理積演算した結果を持つ上記マスク解除信号MRを出力する。このような解除回路60では、例えばマスク信号MASKがHレベルであって選択信号SELaがLレベルである場合に、OR回路78から入力クロック信号CLK1が出力され、OR回路79からHレベル固定の出力信号が出力される。このため、この場合のAND回路80は、OR回路78の出力信号、つまり入力クロック信号CLK1をマスク解除信号MRとして出力する。したがって、入力クロック信号CLK1がLレベルからHレベルに遷移すると、マスク解除信号MRもLレベルからHレベルに遷移する。すると、そのマスク解除信号MRの立ち上がりエッジに応答してマスク信号MASKの生成が停止される。一方、例えばマスク信号MASKがLレベルである場合には、OR回路78,79の双方からHレベル固定の出力信号が出力されるため、AND回路80からはHレベル固定のマスク解除信号MRが出力される。
・上記第1実施形態及び上記各変形例を適宜組み合わせるようにしてもよい。例えば図8に示したクロック切替回路1において、その図8に示したクロック選択回路40及び解除回路60を、図12に示したクロック選択回路40及び解除回路60に変更するようにしてもよい。
(第2実施形態)
以下、第2実施形態を図14及び図15に従って説明する。この実施形態のクロック切替回路1Aは、選択対象の入力クロック信号が2個から8個に増加している点が上記第1実施形態と異なっている。以下、第1実施形態との相違点を中心に説明する。
図14に示すように、クロック切替回路1Aは、同期化回路10Aと、検出回路20Aと、マスク信号生成回路30と、クロック選択回路40Aと、解除回路60とを有している。
同期化回路10Aは、D−FF11,12を含むFF群13A〜13Cを有している。FF群13A〜13Cには、8つの入力クロック信号CLK1〜CLK8の中から1つの入力クロック信号を選択するために必要な3ビットの選択信号SEL1〜SEL3がそれぞれ供給される。ここで、同期化回路10A内のFF群は、選択対象の入力クロック信号の数をNとしたときに、log2N(小数点以下切り上げ)個、ここではlog28=log223=3個設けられている。
FF群13Aは、選択信号SEL1を出力クロック信号CLKOUTの立ち上がりエッジで同期化し、その同期化後の選択信号SEL1aを検出回路20A及びクロック選択回路40Aに出力する。FF群13Bは、選択信号SEL2を出力クロック信号CLKOUTの立ち上がりエッジで同期化し、その同期化後の選択信号SEL2aを検出回路20A及びクロック選択回路40Aに出力する。FF群13Cは、選択信号SEL3を出力クロック信号CLKOUTの立ち上がりエッジで同期化し、その同期化後の選択信号SEL3aを検出回路20A及びクロック選択回路40Aに出力する。
検出回路20Aは、インバータ回路21及びXOR回路22を含む検出部23A〜23Cと、AND回路25とを有している。検出部23A〜23Cには、選択信号SEL1a〜SEL3aがそれぞれ供給される。ここで、検出回路20A内の検出部は、選択対象の入力クロック信号の数をNとしたときに、log2N(小数点以下切り上げ)個、ここではlog28=3個設けられている。
検出部23Aは、選択信号SEL1aの信号レベルの変化を検出したときにXOR回路22からLレベルの出力信号を出力する。検出部23Bは、選択信号SEL2aの信号レベルの変化を検出したときにXOR回路22からLレベルの出力信号を出力する。検出部23Cは、選択信号SEL3aの信号レベルの変化を検出したときにXOR回路22からLレベルの出力信号を出力する。そして、AND回路25は、検出部23A〜23C内のXOR回路22、つまり3つのXOR回路22の出力信号を論理積演算した結果を持つマスク開始信号MSを生成する。すなわち、AND回路25は、検出部23A〜23Cにおいて選択信号SEL1a〜SEL3aのいずれか1つの選択信号の信号レベルの変化が検出されたときに、Lレベルのマスク開始信号MSを生成する。このマスク開始信号MSは、マスク信号生成回路30内のD−FF31のクリア端子に供給される。
クロック選択回路40Aは、セレクタ41Aと、OR回路42とを有している。セレクタ41Aは、選択信号SEL1a〜SEL3aに応じて、入力クロック信号CLK1〜CLK8のいずれか1つの入力クロック信号を選択し、その選択した入力クロック信号を選択クロック信号SCLKとして出力する。例えば選択信号SEL1a〜SEL3aが全てLレベルのときに入力クロック信号CLK1が選択クロック信号SCLKとして出力され、選択信号SEL1a〜SEL3aが全てHレベルのときに入力クロック信号CLK8が選択クロック信号SCLKとして出力される。この選択クロック信号SCLKは、OR回路42に供給されるとともに、解除回路60内のNAND回路61に供給される。
次に、上記クロック切替回路1Aの動作を図15に従って説明する。ここでは、入力クロック信号CLK2から入力クロック信号CLK8に切り替える動作について説明する。
時刻t14の直前においては、選択信号SEL1aがHレベル、選択信号SEL2aがLレベル、選択信号SEL3aがLレベルであり、これら選択信号SEL1a〜SEL3aに応じて入力クロック信号CLK2が出力クロック信号CLKOUTとして出力されている。その後、時刻t14において、入力クロック信号CLK2から入力クロック信号CLK8に切り替えるために選択信号SEL2a,SEL3aがLレベルからHレベルに遷移される。すると、それら選択信号SEL2a,SEL3aが出力クロック信号CLKOUT(ここでは、入力クロック信号CLK2)で同期化され、出力クロック信号CLKOUTの立ち上がりエッジに同期してHレベルの選択信号SEL2a,SEL3aが出力される(時刻t15)。
これら選択信号SEL2a,SEL3aがLレベルからHレベルに遷移すると、その遷移(変化)に応答して検出部23B,23CからLレベルの出力信号が所定期間だけ出力され、AND回路25からLレベルのマスク開始信号MSが所定期間だけ出力される。このLレベルのマスク開始信号MSに応答してD−FF31からHレベルのマスク信号MASKが出力される。
一方、クロック選択回路40では、上記遷移後の選択信号SEL1a〜SEL3aに応じて入力クロック信号CLK8がセレクタ41で選択され、その入力クロック信号CLK8が選択クロック信号SCLKとして出力される。すなわち、セレクタ41では、Hレベルの選択信号SEL1a〜SEL3aに応じて、入力クロック信号CLK2から入力クロック信号CLK8への切り替えが行われる。但し、このときのOR回路42には上記Hレベルのマスク信号MASKが入力されるため、そのマスク信号MASKにより選択クロック信号SCLKがマスクされ、出力クロック信号CLKOUTがHレベルに固定される。
また、上記時刻t15において、上記Hレベルのマスク信号MASK及びLレベルの選択クロック信号SCLKに応じてマスク解除信号MRがLレベルに遷移する。その後、選択クロック信号SCLK(ここでは、入力クロック信号CLK8)がHレベルに遷移すると(時刻t16)、マスク解除信号MRがHレベルに立ち上がる。このマスク解除信号MRの立ち上がりエッジに応答してマスク信号MASKがHレベルからLレベルに遷移する。すると、選択クロック信号SCLKに対するマスクが解除されるため、その選択クロック信号SCLK(ここでは、クロック切替後の入力クロック信号CLK8)が出力クロック信号CLKOUTとして出力される。このようにして、入力クロック信号CLK2から入力クロック信号CLK8への切り替えが完了する。
以上説明した本実施形態によれば、上記第1実施形態と同様の効果を奏する。
(第2実施形態の変形例)
・上記第2実施形態のクロック切替回路1Aにおける各回路10A,20A,30,40A,60を、上記第1実施形態の変形例と同様に変更するようにしてもよい。
・上記第2実施形態における解除回路60の内部構成例は特に限定されない。例えばNAND回路61の前段に、マスク信号MASKを所定時間だけ遅延させる遅延回路を設けるようにしてもよい。これにより、マスク信号MASKがHレベルに遷移されてから所定時間経過後にNAND回路61から選択クロック信号SCLKが出力クロック信号CLKOUTとして出力される。このため、クロック選択回路40A内のセレクタ41Aによるクロック切替が終了する前に、NAND回路61から選択クロック信号SCLK(クロック切替前の入力クロック信号)が出力クロック信号CLKOUTとして出力されることを好適に抑制することができる。
・上記第2実施形態における検出回路20の内部構成例は特に限定されない。例えばAND回路25から出力されるマスク開始信号MSを所定時間だけ遅延させた信号をAND回路25に出力する遅延回路を設けるようにしてもよい。これにより、マスク開始信号MSがLレベルに遷移された後、所定時間だけLレベルのマスク開始信号MSの出力を維持することができる。
(他の実施形態)
なお、上記各実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記各実施形態では、非同期クロックである入力クロック信号CLK1,CLK2(又は、第2実施形態の入力クロック信号CLK1〜CLK8)を切り替えるクロック切替回路に具体化したが、非同期クロックの関係にない複数の入力クロック信号を切り替えるクロック切替回路に具体化してもよい。例えば、入力クロック信号CLK1と、その入力クロック信号CLK1を分周して生成した入力クロック信号CLK2とを切り替えるクロック切替回路に具体化してもよい。
・上記各実施形態では、入力クロック信号CLK1,CLK2に対して非同期信号である選択信号SELに応じて入力クロック信号CLK1,CLK2を切り替えるようにした。また、入力クロック信号CLK1〜CLK8に対して非同期信号である選択信号SEL1〜SEL3に応じて入力クロック信号CLK1〜CLK8を切り替えるようにした。これに限らず、例えば入力クロック信号CLK1〜CLK8の少なくとも1つの入力クロック信号に同期した選択信号に応じて入力クロック信号CLK1〜CLK8を切り替えるようにしてもよい。