(57)【特許請求の範囲】
【請求項１】
システムクロックに同期して動作する周辺デバイスの内部レジスタにデータを書き込むためのレジスタ回路であって、
ＣＰＵからの書込信号を前記システムクロックに同期させることによって、前記ＣＰＵからのデータを前記内部レジスタに書き込むためのタイミング信号を発生するタイミング発生回路と、前記タイミング信号に応じて、前記ＣＰＵからのデータまたは前記周辺デバイスの内部で発生されたデータのいずれか一方を書込データとして出力する第１のセレクタ回路と、前記タイミング信号に応じて、前記ＣＰＵからの書込信号または前記システムクロックのいずれか一方を書込クロックとして出力する第２のセレクタ回路と、前記ＣＰＵからの書込信号と前記システムクロックとを切り替えるときに、前記書込クロックにグリッチが発生するのを防止するグリッチ防止回路とを有し、
前記書込クロックによって、前記内部レジスタに前記書込データを書き込むことを特徴とするレジスタ回路。
【請求項２】
請求項１に記載のレジスタ回路であって、
さらに、前記システムクロックが停止されたときに、前記第１のセレクタ回路からは、前記ＣＰＵからのデータが前記書込データとして出力され、かつ、前記第２のセレクタ回路からは、前記ＣＰＵからの書込信号が書込クロックとして出力されるように制御するクロック停止回路を有することを特徴とするレジスタ回路。
【請求項３】
システムクロックに同期して動作する周辺デバイスの内部レジスタにデータを書き込むためのレジスタ回路であって、
ＣＰＵからのデータを保持するデータレジスタと、このデータレジスタに前記ＣＰＵからのデータが保持されたことを示す書込フラグを保持するフラグレジスタと、前記書込フラグを前記システムクロックに同期させることによって、前記データレジスタに保持された前記ＣＰＵからのデータを前記内部レジスタに書き込むためのタイミング信号を発生し、かつ、前記フラグレジスタに保持された書込フラグをクリアするためのリセット信号を発生するタイミング発生回路と、前記タイミング信号に応じて、前記データレジスタに保持されたデータまたは前記周辺デバイスの内部で発生されたデータのいずれか一方を書込データとして出力するセレクタ回路とを有し、
前記タイミング信号に応じて、前記システムクロックによって、前記内部レジスタに前記書込データを書き込んだ後、前記リセット信号によって、前記フラグレジスタに保持された書込フラグをクリアすることを特徴とするレジスタ回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、システムクロックに同期して動作する周辺デバイスの内部レジスタにデータを書き込むためのレジスタ回路に関するものである。
【０００２】
【従来の技術】
例えば、ハードディスクコントローラ等の周辺デバイスの内部には、その動作を制御するための様々な内部レジスタが設けられており、ＣＰＵから周辺デバイスの内部レジスタにデータを設定する場合には、周辺デバイスのシステムクロックに同期させて、ＣＰＵのデータを周辺デバイスの内部レジスタに書き込んだり、あるいは、ＣＰＵのライト信号によって、ＣＰＵのデータを周辺デバイスの内部レジスタに直接書き込んでいる。
【０００３】
ここで、図５に、従来のレジスタ回路の一例の構成回路図を示す。
このレジスタ回路７８は、周辺デバイスのシステムクロックに同期させて、ＣＰＵからのデータを周辺デバイスの内部レジスタに書き込む場合のレジスタ回路の一例を示したもので、図示例においては、フリップフロップ８０，８２、アドレスデコーダ２６、フリップフロップ８４，８６、ゲート８８、ＡＮＤゲート９０、セレクタ９２および内部レジスタ１２を有する。
【０００４】
一般的に、ＣＰＵから周辺デバイスの内部レジスタ１２にデータを書き込む場合、ＣＰＵからは、内部レジスタ１２にデータを書き込むためのストローブ信号となるライト信号ＣＰＵ＿ＷＲＩＴＥが立ち下がった後、データを書き込む内部レジスタ１２を指定するためのアドレスＣＰＵ＿ＡＤＤＲＥＳＳや、内部レジスタ１２に書き込むデータＣＰＵ＿ＤＡＴＡ等が出力され、ライト信号ＣＰＵ＿ＷＲＩＴＥが立ち上がる時点で、これらの値は有効（Ｖａｌｉｄ）になる。
【０００５】
図６のタイミングチャートに示されるように、ＣＰＵのライト信号ＣＰＵ＿ＷＲＩＴＥの立ち上がりで、ＣＰＵから出力された有効なアドレスＣＰＵ＿ＡＤＤＲＥＳＳとデータＣＰＵ＿ＤＡＴＡが、それぞれのフリップフロップ８０，８２に保持され、それぞれラッチアドレスＬＡＴＣＨ＿ＡＤＤＲＥＳＳとラッチデータＬＡＴＣＨ＿ＤＡＴＡとして出力された後、ラッチアドレスＬＡＴＣＨ＿ＡＤＤＲＥＳＳが、アドレスデコーダ２６によってデコードされる。
【０００６】
また、ＣＰＵのライト信号ＣＰＵ＿ＷＲＩＴＥが、周辺デバイスのシステムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫによって、フリップフロップ８４，８６に順次シフトされる。その後、ゲート８８によって、ライト信号ＣＰＵ＿ＷＲＩＴＥの立ち上がりが検出され、フリップフロップ８２に保持されたラッチデータＬＡＴＣＨ＿ＤＡＴＡを内部レジスタ１２に書き込むための、１クロックサイクルのハイレベルのタイミング信号が発生される。
【０００７】
ここで、ラッチアドレスＬＡＴＣＨ＿ＡＤＤＲＥＳＳが、内部レジスタ１２を指定するものであれば、アドレスデコーダ２６の出力はハイレベルとなり、上述するタイミング信号が、ＡＮＤゲート９０を経て、同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥとしてセレクタ９２の選択入力端子に入力される。これにより、セレクタ９２から、ラッチデータＬＡＴＣＨ＿ＤＡＴＡが１クロックサイクルの間出力され、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫの立ち上がりで内部レジスタ１２に書き込まれる。
【０００８】
これに対し、ラッチアドレスＬＡＴＣＨ＿ＡＤＤＲＥＳＳが、内部レジスタ１２を指定するものでなければ、アドレスデコーダ２６の出力はローレベルとなり、ＡＮＤゲート９０によって、同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥがローレベルに保持される。これにより、セレクタ９２からは、内部レジスタ１２に保持されているデータが出力され、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫの立ち上がりで再び内部レジスタ１２に取り込まれる。
【０００９】
続いて、図７に、従来のレジスタ回路の別の例の構成回路図を示す。
このレジスタ回路９４は、ＣＰＵのライト信号によって、ＣＰＵのデータを周辺デバイスの内部レジスタに直接書き込む場合のレジスタ回路の一例を示したもので、図示例においては、アドレスデコーダ２６、ゲート９６および内部レジスタ１２を有する。
【００１０】
図８のタイミングチャートに示されるように、ＣＰＵのアドレスＣＰＵ＿ＡＤＤＲＥＳＳが、アドレスデコーダ２６によってデコードされ、アドレスＣＰＵ＿ＡＤＤＲＥＳＳが、内部レジスタ１２を指定するものであれば、ライト信号ＣＰＵ＿ＷＲＩＴＥが、ゲート９６を経てレジスタライト信号ＲＥＧ＿ＷＲＩＴＥとして出力され、ＣＰＵのデータＣＰＵ＿ＤＡＴＡが、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥの立ち上がりで内部レジスタ１２に書き込まれる。
【００１１】
これに対し、アドレスＣＰＵ＿ＡＤＤＲＥＳＳが、内部レジスタ１２を指定するものでなければ、アドレスデコーダ２６の出力はローレベルとなり、ゲート９６によって、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥがハイレベルに保持される。すなわち、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥが変化しないため、ＣＰＵのデータＣＰＵ＿ＤＡＴＡは、内部レジスタ１２には書き込まれず、内部レジスタ１２のデータは保持される。
【００１２】
ところで、ＣＰＵによって、周辺デバイスの内部レジスタにデータが設定された後、周辺デバイスの内部では、その内部レジスタに設定されたデータが参照されるだけであれば、すなわち、周辺デバイスの内部で、システムクロックに同期して、内部レジスタのデータを変更して使用する必要がないのであれば、上述するいずれのレジスタ回路７８，９４の構成であってもよいが、レジスタ回路９４の方が、回路規模が小さいという利点がある。
【００１３】
これに対し、周辺デバイスの内部で、ＣＰＵによって設定された内部レジスタのデータを変更する必要がある場合、レジスタ回路９４の構成では、周辺デバイスのシステムクロックに同期して、内部レジスタ１２のデータを変更することができないため、回路規模は増大するが、レジスタ回路７８の構成のように、周辺デバイスのシステムクロックに同期して、内部レジスタ１２にデータを書き込むような回路構成にする必要がある。
【００１４】
例えば、図９に、従来のレジスタ回路のさらに別の例の構成回路図を示す。
図示例のレジスタ回路９８は、ＣＰＵによって内部レジスタに書き込まれたデータを初期値として、周辺デバイスのシステムクロックに同期して、ＣＰＵによって設定された内部レジスタのデータをカウントアップする場合のレジスタ回路の一例を示したもので、図５に示されるレジスタ回路７８において、さらに、インクリメンタ４８およびセレクタ５０を有する。
【００１５】
レジスタ回路９８においては、ＣＰＵから内部レジスタ１２にデータが書き込まれた後、インクリメンタ４８によって、内部レジスタ１２の値がインクリメント（＋１）される。ここで、カウントアップ信号ＣＯＵＮＴ＿ＵＰがハイレベルであれば、インクリメントされた値が、セレクタ５０，９２を経て、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫの立ち上がりで内部レジスタ１２に書き込まれ、内部レジスタ１２のデータがカウントアップされる。
【００１６】
これに対し、カウントアップ信号ＣＯＵＮＴ＿ＵＰがローレベルのときには、内部レジスタ１２に保持されているデータが、セレクタ５０，９２を経て、再度、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫの立ち上がりで内部レジスタ１２に取り込まれる。すなわち、内部レジスタ１２のデータは保持される。
なお、周辺デバイスの内部で、内部レジスタ１２のデータを変更する必要があるのは、上述するカウントアップに限定されるものではない。
【００１７】
ところで、例えばノートブック型のパーソナルコンピュータ等のように、電池駆動の電子機器においては、消費電力を削減して駆動時間を延長するために、例えば電源は投入されているが、所定の一定時間使用されていない等のように、特定の条件を満足したときには、例えばハードディスクのコントローラＬＳＩのシステムクロックを停止させたいというように、周辺デバイスのシステムクロックを停止させたいという要求が多くなっている。
【００１８】
しかしながら、レジスタ回路９８の構成では、周辺デバイスのシステムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫに同期して、内部レジスタ１２のデータを変更することはできるが、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫを停止すると、ＣＰＵからのデータを周辺デバイスの内部レジスタ１２に書き込むことができないため、単純には、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫを停止することができず、消費電力を削減するのが困難であるという問題点があった。
【００１９】
【発明が解決しようとする課題】
本発明の目的は、前記従来技術に基づく問題点をかえりみて、回路規模を増大させることなく、システムクロックを停止して消費電力を削減することができるレジスタ回路を提供することにある。
【００２０】
【課題を解決するための手段】
上記目的を達成するために、本発明は、システムクロックに同期して動作する周辺デバイスの内部レジスタにデータを書き込むためのレジスタ回路であって、ＣＰＵからの書込信号を前記システムクロックに同期させることによって、前記ＣＰＵからのデータを前記内部レジスタに書き込むためのタイミング信号を発生するタイミング発生回路と、前記タイミング信号に応じて、前記ＣＰＵからのデータまたは前記周辺デバイスの内部で発生されたデータのいずれか一方を書込データとして出力する第１のセレクタ回路と、前記タイミング信号に応じて、前記ＣＰＵからの書込信号または前記システムクロックのいずれか一方を書込クロックとして出力する第２のセレクタ回路と、前記ＣＰＵからの書込信号と前記システムクロックとを切り替えるときに、前記書込クロックにグリッチが発生するのを防止するグリッチ防止回路とを有し、
前記書込クロックによって、前記内部レジスタに前記書込データを書き込むことを特徴とするレジスタ回路を提供するものである。
【００２１】
ここで、上記レジスタ回路であって、
さらに、前記システムクロックが停止されたときに、前記第１のセレクタ回路からは、前記ＣＰＵからのデータが前記書込データとして出力され、かつ、前記第２のセレクタ回路からは、前記ＣＰＵからの書込信号が書込クロックとして出力されるように制御するクロック停止回路を有するのが好ましい。
【００２２】
また、本発明は、システムクロックに同期して動作する周辺デバイスの内部レジスタにデータを書き込むためのレジスタ回路であって、
ＣＰＵからのデータを保持するデータレジスタと、このデータレジスタに前記ＣＰＵからのデータが保持されたことを示す書込フラグを保持するフラグレジスタと、前記書込フラグを前記システムクロックに同期させることによって、前記データレジスタに保持された前記ＣＰＵからのデータを前記内部レジスタに書き込むためのタイミング信号を発生し、かつ、前記フラグレジスタに保持された書込フラグをクリアするためのリセット信号を発生するタイミング発生回路と、前記タイミング信号に応じて、前記データレジスタに保持されたデータまたは前記周辺デバイスの内部で発生されたデータのいずれか一方を書込データとして出力するセレクタ回路とを有し、
前記タイミング信号に応じて、前記システムクロックによって、前記内部レジスタに前記書込データを書き込んだ後、前記リセット信号によって、前記フラグレジスタに保持された書込フラグをクリアすることを特徴とするレジスタ回路を提供するものである。
【００２３】
【発明の実施の形態】
以下に、添付の図面に示す好適実施例に基づいて、本発明のレジスタ回路を詳細に説明する。
【００２４】
図１は、本発明のレジスタ回路の一実施例の構成回路図である。
このレジスタ回路１０は、システムクロックに同期して動作する周辺デバイスの内部レジスタにデータを書き込むためのレジスタ回路の一例を示したもので、図示例においては、内部レジスタ１２の他、アドレスデコード回路１４、タイミング発生回路１６、セレクタ回路１８、グリッチ防止回路２０、クロック停止回路２２およびカウントアップ回路２４を有する。
【００２５】
ここで、アドレスデコード回路１４は、ＣＰＵからのアドレスＣＰＵ＿ＡＤＤＲＥＳＳおよびライト信号ＣＰＵ＿ＷＲＩＴＥから、内部レジスタ１２にＣＰＵからのデータＣＰＵ＿ＤＡＴＡを書き込むための書込信号となるレジスタライト信号ＲＥＧ＿ＷＲＩＴＥを発生するもので、ＣＰＵからのアドレスＣＰＵ＿ＡＤＤＲＥＳＳをデコードするアドレスデコーダ２６、および、ゲート２８を有する。
【００２６】
アドレスデコーダ２６には、ＣＰＵからのアドレスＣＰＵ＿ＡＤＤＲＥＳＳが入力され、その出力は、ゲート２８の一方の入力端子に入力されている。また、ゲート２８の他方の反転入力端子には、ＣＰＵからのライト信号ＣＰＵ＿ＷＲＩＴＥが入力され、その出力は、ＣＰＵからのデータＣＰＵ＿ＤＡＴＡを内部レジスタ１２に書き込むための書込信号となるレジスタライト信号ＲＥＧ＿ＷＲＩＴＥとされている。
【００２７】
続いて、タイミング発生回路１６は、ＣＰＵからの書込信号であるライト信号ＣＰＵ＿ＷＲＩＴＥをシステムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫに同期させることによって、ＣＰＵからのデータＣＰＵ＿ＤＡＴＡを内部レジスタ１２に書き込むためのタイミング信号ＣＰＵ＿ＷＲ＿Ｄ１，ＣＰＵ＿ＷＲ＿Ｄ２を発生するもので、図示例においては、直列接続された２つのフリップフロップ３０，３２を有する。
【００２８】
フリップフロップ３０のデータ入力端子には、ＣＰＵからのライト信号ＣＰＵ＿ＷＲＩＴＥが入力され、その出力は、タイミング信号ＣＰＵ＿ＷＲ＿Ｄ１とされている。また、フリップフロップ３２のデータ入力端子には、タイミング信号ＣＰＵ＿ＷＲ＿Ｄ１が入力され、その出力は、タイミング信号ＣＰＵ＿ＷＲ＿Ｄ２とされている。また、フリップフロップ３０，３２のクロック入力端子には、ともにシステムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが入力されている。
【００２９】
続いて、セレクタ回路１８は、図示例においては、タイミング信号ＲＥＧ＿ＣＫ＿ＳＥＬに応じて、内部レジスタ１２への書込データとなるレジスタデータＲＥＧ＿ＤＡＴＡ、および、内部レジスタ１２の書込クロックとなるレジスタクロックＲＥＧ＿ＣＬＯＣＫを切り替えるもので、第１および第２のセレクタとなる２つのセレクタ３４，３６を有する。
【００３０】
セレクタ３４は、ＣＰＵからのデータＣＰＵ＿ＤＡＴＡ、または、カウントアップ回路２４から出力されるデータのいずれか一方を書込データであるレジスタデータＲＥＧ＿ＤＡＴＡとして出力するもので、その入力端子１，０には、それぞれカウントアップ回路２４の出力、および、ＣＰＵからのデータＣＰＵ＿ＤＡＴＡが入力され、その出力であるレジスタデータＲＥＧ＿ＤＡＴＡは、内部レジスタ１２のデータ入力端子に入力されている。
【００３１】
セレクタ３６は、ＣＰＵからの書込信号であるレジスタライト信号ＲＥＧ＿ＷＲＩＴＥ、または、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫのいずれか一方を書込クロックであるレジスタクロックＲＥＧ＿ＣＬＯＣＫとして出力するもので、その入力端子１，０には、それぞれシステムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫ、および、クロック停止回路２２の出力が入力され、その出力であるレジスタクロックＲＥＧ＿ＣＬＯＣＫは、内部レジスタ１２のクロック入力端子に入力されている。
【００３２】
続いて、グリッチ防止回路２０は、ＣＰＵからの書込信号であるレジスタライト信号ＲＥＧ＿ＷＲＩＴＥとシステムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫとを切り替えるときに、書込クロックとなるレジスタクロックＲＥＧ＿ＣＬＯＣＫにグリッチが発生するのを防止するもので、図示例においては、ゲート３８が用いられている。ゲート３８には、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥおよびタイミング信号ＣＰＵ＿ＷＲ＿Ｄ２が入力されている。
【００３３】
続いて、クロック停止回路２２は、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが停止されたときに、セレクタ回路１８のセレクタ３４からは、ＣＰＵからのデータＣＰＵ＿ＤＡＴＡが書込データとして出力され、かつ、セレクタ３６からは、ＣＰＵからの書込信号であるレジスタライト信号ＲＥＧ＿ＷＲＩＴＥが書込クロックとして出力されるように制御するもので、図示例においては、フリップフロップ４０、セレクタ４２、および、ゲート４６を有する。
【００３４】
フリップフロップ４０のクロック入力端子には、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが入力され、その出力は、クロックストップ信号ＣＬＯＣＫ＿ＳＴＯＰとされている。なお、図示を省略しているが、フリップフロップ４０のデータ入力端子には、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫを停止するための条件を満足したときに、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫを停止するための制御信号が与えられる。
【００３５】
また、セレクタ４２の入力端子１，０には、それぞれレジスタライト信号ＲＥＧ＿ＷＲＩＴＥ、および、グリッチ防止回路２０のゲート３８出力が入力され、その選択入力端子には、クロックストップ信号ＣＬＯＣＫ＿ＳＴＯＰが入力され、その出力は、セレクタ回路１８のセレクタ３６の入力端子０に入力されている。また、ゲート４６には、クロックストップ信号ＣＬＯＣＫ＿ＳＴＯＰおよびタイミング信号ＣＰＵ＿ＷＲ＿Ｄ１が入力され、その出力は、セレクタ回路１８のセレクタ３４，３６の選択入力端子に入力されている。
【００３６】
続いて、カウントアップ回路２４は、カウントアップ信号ＣＯＵＮＴ＿ＵＰに応じて、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫに同期して、内部レジスタ１２のデータをカウントアップするもので、図示例においては、インクリメンタ４８およびセレクタ５０を有する。インクリメンタ４８には、内部レジスタ１２の出力が入力されている。セレクタ５０の入力端子１，０には、それぞれインクリメンタ４８の出力および内部レジスタ１２の出力が入力され、その出力は、セレクタ回路１８のセレクタ３４の入力端子１に入力されている。
【００３７】
レジスタ回路１０において、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが動作しているときに、すなわち、図示例においては、クロックストップ信号ＣＬＯＣＫ＿ＳＴＯＰがローレベルのときに、ＣＰＵから内部レジスタ１２にデータを書き込もうとした場合、図２（ａ）のタイミングチャートに示されるように、まず、ＣＰＵからのアドレスＣＰＵ＿ＡＤＤＲＥＳＳが、アドレスデコード回路１４のアドレスデコーダ２６によってデコードされる。
【００３８】
ここで、ＣＰＵのアドレスＣＰＵ＿ＡＤＤＲＥＳＳが、内部レジスタ１２を指定するものであれば、アドレスデコーダ２６の出力はハイレベルとなり、ＣＰＵからのライト信号ＣＰＵ＿ＷＲＩＴＥが、ゲート２８を経て、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥとして出力される。一方、ＣＰＵのアドレスＣＰＵ＿ＡＤＤＲＥＳＳが、内部レジスタ１２を指定するものでなければ、アドレスデコーダ２６の出力はローレベルとなり、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥはハイレベルの状態に保持される。
【００３９】
また、レジスタ回路１０においては、ＣＰＵからのライト信号ＣＰＵ＿ＷＲＩＴＥが、タイミング発生回路１６の２つのフリップフロップ３０，３２によって、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫに同期して順次シフトされ、フリップフロップ３０，３２からは、それぞれＣＰＵからのデータＣＰＵ＿ＤＡＴＡを内部レジスタ１２に書き込むためのタイミング信号ＣＰＵ＿ＷＲ＿Ｄ１，ＣＰＵ＿ＷＲ＿Ｄ２が出力される。
【００４０】
ここでは、クロックストップ信号ＣＬＯＣＫ＿ＳＴＯＰがローレベルであるため、タイミング信号ＣＰＵ＿ＷＲ＿Ｄ１が、ゲート４６を経て、セレクタ回路１８の２つのセレクタ３４，３６の選択入力端子に入力される。
【００４１】
これにより、タイミング信号ＣＰＵ＿ＷＲ＿Ｄ１がローレベルの間、セレクタ３４からは、ＣＰＵからのデータＣＰＵ＿ＤＡＴＡが、書込データとなるレジスタデータＲＥＧ＿ＤＡＴＡとして出力され、セレクタ３６からは、グリッチ防止回路２０のゲート３８、クロック停止回路２２のセレクタ４２を経て、書込クロックとなるレジスタライト信号ＲＥＧ＿ＷＲＩＴＥが出力され、レジスタデータＲＥＧ＿ＤＡＴＡは、レジスタクロックＲＥＧ＿ＣＬＯＣＫの立ち上がりで内部レジスタ１２に書き込まれる。
【００４２】
なお、グリッチ防止回路２０において、ゲート３８でレジスタライト信号ＲＥＧ＿ＷＲＩＴＥとタイミング信号ＣＰＵ＿ＷＲ＿Ｄ２の論理和を取っていることにより、タイミング信号ＣＰＵ＿ＷＲ＿Ｄ１によって、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥとシステムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫを切り替えるときの両者のレベルがいずれもハイレベルとなるため、レジスタクロックＲＥＧ＿ＣＬＯＣＫにグリッチが発生するのを防止することができ、回路の誤動作を防止することができる。
【００４３】
続いて、ＣＰＵから内部レジスタ１２にデータが書き込まれ、ＣＰＵからのライト信号ＣＰＵ＿ＷＲＩＴＥがハイレベルになると、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫに同期して、タイミング信号ＣＰＵ＿ＷＲ＿Ｄ１，ＣＰＵ＿ＷＲ＿Ｄ２はいずれもハイレベルとなり、セレクタ回路１８のセレクタ３４からは、レジスタデータＲＥＧ＿ＤＡＴＡとして、カウントアップ回路２４の出力が出力され、セレクタ３６からは、レジスタクロックＲＥＧ＿ＣＬＯＣＫとして、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが出力される。
【００４４】
従来技術の説明において既に述べたように、カウントアップ回路２４においては、インクリメンタ４８によって、内部レジスタ１２のデータがインクリメント（＋１）される。ここで、カウントアップ信号ＣＯＵＮＴ＿ＵＰがハイレベルであれば、インクリメントされたデータが、セレクタ５０，３４を経て、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫの立ち上がりで内部レジスタ１２に再度書き込まれ、内部レジスタ１２のデータがカウントアップされる。
【００４５】
ここで、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫを停止する条件を満足したときに、クロック停止回路２２のフリップフロップ４０のデータ入力端子に、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫを停止するための制御信号が入力されると、図２（ｂ）のタイミングチャートに示されるように、フリップフロップ４０からは、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫに同期して、クロックストップ信号ＣＬＯＣＫ＿ＳＴＯＰが出力される。
【００４６】
システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが停止された後、すなわち、図示例においては、クロックストップ信号ＣＬＯＣＫ＿ＳＴＯＰがハイレベルとされた後、ＣＰＵから内部レジスタ１２にデータを書き込もうとした場合、クロックストップ信号ＣＬＯＣＫ＿ＳＴＯＰがハイレベルであるため、ゲート４６によって、セレクタ回路１８の２つのセレクタ３４，３６の選択入力端子はローレベルとされる。
【００４７】
これにより、セレクタ３４からは、ＣＰＵからのデータＣＰＵ＿ＤＡＴＡが、書込データとなるレジスタデータＲＥＧ＿ＤＡＴＡとして出力され、セレクタ３６からは、クロック停止回路２２のセレクタ４２を経て、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥが、書込クロックとなるレジスタクロックＲＥＧ＿ＣＬＯＣＫとして出力される。このレジスタデータＲＥＧ＿ＤＡＴＡは、レジスタクロックＲＥＧ＿ＣＬＯＣＫの立ち上がりで内部レジスタ１２に書き込まれる。
【００４８】
次いで、図３に、本発明のレジスタ回路の別の実施例の構成回路図を示す。
レジスタ回路５２は、システムクロックに同期して動作する周辺デバイスの内部レジスタにデータを書き込むためのレジスタ回路の別の例を示したもので、図示例においては、内部レジスタ１２の他、アドレスデコード回路１４、データレジスタ５４、フラグレジスタ５８、タイミング発生回路６２、セレクタ回路７４、および、カウントアップ回路２４を有する。
【００４９】
ここで、データレジスタ５４は、ＣＰＵからのデータＣＰＵ＿ＤＡＴＡを一時的に保持するためのもので、図示例においては、フリップフロップ５６が用いられている。フリップフロップ５６のデータ入力端子には、ＣＰＵからのデータＣＰＵ＿ＤＡＴＡが入力され、そのクロック入力端子には、アドレスデコード回路１４によって発生される、ＣＰＵからの書込信号となるレジスタライト信号ＲＥＧ＿ＷＲＩＴＥが入力されている。
【００５０】
続いて、フラグレジスタ５８は、ＣＰＵからのライト信号ＣＰＵ＿ＷＲＩＴＥによって、データレジスタ５４にＣＰＵからのデータＣＰＵ＿ＤＡＴＡが保持されたことを示す書込フラグを保持するもので、図示例においては、フリップフロップ６０が用いられている。フリップフロップ６０のデータ入力端子は電源に接続され、そのクロック入力端子には、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥが入力され、その出力は、ライトフラグ信号ＷＲ＿ＦＬＡＧとされている。
【００５１】
続いて、タイミング発生回路６２は、書込フラグとなるライトフラグ信号ＷＲ＿ＦＬＡＧをシステムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫに同期させることによって、データレジスタ５４に保持されたＣＰＵからのデータＣＰＵ＿ＤＡＴＡを内部レジスタ１２に書き込むためのタイミング信号である同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥを発生し、かつ、フラグレジスタ５８のフリップフロップ６０に保持されたライトフラグ信号ＷＲ＿ＦＬＡＧをクリアするためのリセット信号となるフラグリセット信号ＦＬＡＧ＿ＲＳＴを発生するものである。
【００５２】
図示例のタイミング発生回路６２は、フリップフロップ６４，６６、ゲート６８、フリップフロップ７０、および、インバータ７２を有する。フリップフロップ６４のデータ入力端子には、ライトフラグ信号ＷＲ＿ＦＬＡＧが入力され、その出力は、フリップフロップ６６のデータ入力端子に入力されている。ゲート６８には、フリップフロップ６４，６６の出力が入力され、その出力は、同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥとされている。
【００５３】
また、フリップフロップ７０のデータ入力端子には、同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥが入力され、その出力は、インバータ７２に入力されている。インバータ７２の出力は、フラグリセット信号ＦＬＡＧ＿ＲＳＴとされ、フラグレジスタ５８のフリップフロップ６０のリセット入力端子に入力されている。また、フリップフロップ６４，６６，７０のクロック入力端子には、ともにシステムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが入力されている。
【００５４】
続いて、セレクタ回路７４は、タイミング信号である同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥに応じて、データレジスタ５４のフリップフロップ５６に保持されたＣＰＵからのデータＣＰＵ＿ＤＡＴＡ、または、カウントアップ回路２４から出力されるデータのいずれか一方を書込データとして出力するもので、図示例においては、セレクタ７６が用いられている。セレクタ７６の入力端子１，０には、それぞれデータレジスタ５４のフリップフロップ５６に保持されたＣＰＵからのデータＣＰＵ＿ＤＡＴＡ、および、カウントアップ回路２４の出力が入力され、その選択入力端子には、同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥが入力されている。
【００５５】
また、内部レジスタ１２のデータ入力端子には、セレクタ回路７４のセレクタ７６の出力が入力され、そのクロック入力端子には、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが入力されている。なお、アドレスデコード回路１４およびカウントアップ回路２４は、図１に示される本発明のレジスタ回路１０において使用されているものと全く同じものであるから、同一の構成要素には同一符号を付し、ここでは、その詳細な説明を省略する。
【００５６】
レジスタ回路５２において、例えばシステムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが停止された後、ＣＰＵから内部レジスタ１２にデータを書き込もうとした場合、図４のタイミングチャートに示されるように、ＣＰＵのアドレスＣＰＵ＿ＡＤＤＲＥＳＳが、内部レジスタ１２を指定するものであれば、ＣＰＵからのライト信号ＣＰＵ＿ＷＲＩＴＥが、ゲート２８を経て、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥとして出力される。
【００５７】
これにより、ＣＰＵからのデータＣＰＵ＿ＤＡＴＡが、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥの立ち上がりで、データレジスタ５４のフリップフロップ５６に保持されるのと同時に、フラグレジスタ５８のフリップフロップ６０が、レジスタライト信号ＲＥＧ＿ＷＲＩＴＥの立ち上がりで、電源に接続されたデータ入力端子のハイレベルを保持することにより、書込フラグとなるライトフラグ信号ＷＲ＿ＦＬＡＧがハイレベルとなる。
【００５８】
その後、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが動作を開始すると、フラグレジスタ５８のフリップフロップ６０のライトフラグ信号ＷＲ＿ＦＬＡＧが、タイミング発生回路６２の２つのフリップフロップ６４，６６によって、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫに同期して順次シフトされ、ゲート６８によって、ライトフラグ信号ＷＲ＿ＦＬＡＧがハイレベルにセットされていることが検出され、同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥが出力される。
【００５９】
これにより、同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥがハイレベルの間、セレクタ回路７４のセレクタ７６からは、書込データとして、データレジスタ５４のフリップフロップ５６に保持されているＣＰＵからのデータＣＰＵ＿ＤＡＴＡが出力され、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫの立ち上がりで、内部レジスタ１２に書き込まれるのと同時に、同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥのハイレベルが、フリップフロップ７０に保持される。
【００６０】
続いて、フリップフロップ７０に保持された同期ライト信号ＳＹＮＣ＿ＷＲＩＴＥのハイレベルは、インバータ７２によって反転され、リセット信号となるフラグリセット信号ＦＬＡＧ＿ＲＳＴとして、フラグレジスタ５８のフリップフロップ６０のリセット入力端子に入力される。フリップフロップ６０は、このフラグリセット信号ＦＬＡＧ＿ＲＳＴによってリセットされ、ライトフラグ信号ＷＲ＿ＦＬＡＧがローレベルとなる。
【００６１】
その後、図示例のレジスタ回路５２においては、カウントアップ回路２４によって、カウントアップ信号ＣＯＵＮＴ＿ＵＰに応じて、内部レジスタ１２のデータが適宜カウントアップされる。
なお、レジスタ回路５２においては、システムクロックＳＹＳＴＥＭ＿ＣＬＯＣＫが動作中の場合であっても、同じように、ＣＰＵから内部レジスタ１２へデータを書き込むことができるのは言うまでもないことである。
【００６２】
このように、本発明のレジスタ回路においては、図１に示されるレジスタ回路１０、および、図３に示されるレジスタ回路５２のいずれの構成の場合であっても、システムクロックが動作中にはもちろん、システムクロックが停止されていたとしても、ＣＰＵから周辺デバイスの内部レジスタにデータを書き込むことができるし、かつ、内部レジスタのデータをシステムクロックに同期させて変更することもできる。
【００６３】
また、本発明のレジスタ回路は、例えば図９に示される従来のレジスタ回路９８と比較して、ＣＰＵからのアドレスやデータを保持するための数十個のフリップフロップが必要ないため、回路規模を削減することができるという利点もある。また、従来のレジスタ回路では、システムクロックを停止することはできなかったが、本発明のレジスタ回路においては、システムクロックを停止することができるため、消費電力を削減することができる。
【００６４】
例えば、パーソナルコンピュータ等の補助記憶装置として使用されるハードディスクの標準インターフェースであるＩＤＥ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ  ）インターフェースのコントローラＬＳＩにおいては、ＣＰＵから、転送セクタ数、セクタ番号、シリンダ番号、ヘッド番号を所定のレジスタに設定した後、読み出しまたは書き込みのコマンドを所定のレジスタに書き込むことによって、データの読み出しまたは書き込みが行われる。
【００６５】
また、コマンドの実行時には、１セクタのデータの読み出しまたは書き込みが終了する毎に、例えば転送セクタ数がデクリメント（−１）され、セクタ番号がインクリメント（＋１）される。このように、ＩＤＥインターフェースのコントローラＬＳＩにおいては、まず、ＣＰＵによって各レジスタに初期値が設定された後、コントローラＬＳＩの内部で、ＣＰＵによって設定された各レジスタの値が変更されて使用される。
【００６６】
ここで、ＩＤＥインターフェースのコントローラＬＳＩにおいては、例えば消費電力を削減するために、コントローラＬＳＩのシステムクロックを停止した場合であっても、ＣＰＵからコントローラＬＳＩの各内部レジスタへのデータの書き込みは可能でなければならない。また、読み出しまたは書き込みのコマンドが所定のレジスタに書き込まれると、システムクロックが再起動され、コントローラＬＳＩの動作が再開されなければならない。
【００６７】
しかしながら、既に述べたように、図９に示される従来のレジスタ回路９８の構成では、システムクロックを停止すると、ＣＰＵからのデータを内部レジスタ１２に書き込むことができないため、単純にシステムクロックを停止することはできないが、本発明のレジスタ回路１０，５２の構成であれば、システムクロックを停止しても、内部レジスタ１２にデータを書き込むことができるため、システムクロックを停止して消費電力を削減することができる。
【００６８】
このように、本発明のレジスタ回路は、例えばＣＰＵおよび周辺デバイスの両方からデータが書き込まれる内部レジスタを有する周辺デバイスにおいて、システムクロックを停止する必要のある場合に好適に用いることができる。
なお、上記実施例においては、周辺デバイスの内部で、内部レジスタの値が変更される場合の一例として、カウントアップ回路を例示しているが、これに限定されるものではない。
【００６９】
以上、本発明のレジスタ回路について詳細に説明したが、本発明は上記実施例に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【００７０】
【発明の効果】
以上詳細に説明したように、本発明のレジスタ回路においては、周辺デバイスのシステムクロックが動作しているときはもちろん、停止されているときでも、ＣＰＵから周辺デバイスの内部レジスタにデータを書き込むことができるし、周辺デバイスの内部で、システムクロックに同期して内部レジスタの値を変更することもできる。このため、本発明のレジスタ回路によれば、特定の条件を満足したときに、周辺デバイスのシステムクロックを停止して消費電力を削減することができる。また、本発明のレジスタ回路によれば、従来のレジスタ回路のように、ＣＰＵからのアドレスやデータを一旦保持しておく必要がないため、回路規模を大幅に削減することができるという効果もある。
【図面の簡単な説明】
【図１】本発明のレジスタ回路の一実施例の構成回路図である。
【図２】（ａ）および（ｂ）は、ともに図１に示される本発明のレジスタ回路の動作を表す一実施例のタイミングチャートである。
【図３】本発明のレジスタ回路の別の実施例の構成回路図である。
【図４】図３に示される本発明のレジスタ回路の動作を表す一実施例のタイミングチャートである。
【図５】従来のレジスタ回路の一例の構成回路図である。
【図６】図５に示される従来のレジスタ回路の動作を表す一例のタイミングチャートである。
【図７】従来のレジスタ回路の別の例の構成回路図である。
【図８】図７に示される従来のレジスタ回路の動作を表す一例のタイミングチャートである。
【図９】従来のレジスタ回路のさらに別の例の構成回路図である。
【符号の説明】
１０，５２，７８，９４，９８  レジスタ回路
１２  内部レジスタ
１４  アドレスデコード回路
１６，６２  タイミング発生回路
１８，７４  セレクタ回路
２０  グリッチ防止回路
２２  クロック停止回路
２４  カウントアップ回路
２６  アドレスデコーダ
３０，３２，４０，５６，６０，６４，６６，７０，８０，８２，８４，８６フリップフロップ
３４，３６，４２，５０，７６，９２  セレクタ
４８  インクリメンタ
５４  データレジスタ
５８  フラグレジスタ
９０  ＡＮＤゲート
７２  インバータ
２８，３８，４６，６８，８８，９６  ゲート
ＣＰＵ＿ＡＤＤＲＥＳＳ  ＣＰＵアドレス
ＣＰＵ＿ＤＡＴＡ  ＣＰＵデータ
ＣＰＵ＿ＷＲＩＴＥ  ライト信号
ＳＹＳＴＥＭ＿ＣＬＯＣＫ  システムクロック
ＣＰＵ＿ＷＲ＿Ｄ１，ＣＰＵ＿ＷＲ＿Ｄ２，ＲＥＧ＿ＣＫ＿ＳＥＬ  タイミング信号
ＣＬＯＣＫ＿ＳＴＯＰ  クロックストップ信号
ＲＥＧ＿ＷＲＩＴＥ  レジスタライト信号
ＲＥＧ＿ＤＡＴＡ  レジスタデータ
ＲＥＧ＿ＣＬＯＣＫ  レジスタクロック
ＣＯＵＮＴ＿ＵＰ  カウントアップ信号
ＳＹＮＣ＿ＷＲＩＴＥ  同期ライト信号
ＷＲ＿ＦＬＡＧ  ライトフラグ信号
ＦＬＡＧ＿ＲＳＴ  フラグリセット信号
ＬＡＴＣＨ＿ＡＤＤＲＥＳＳ  ラッチアドレス
ＬＡＴＣＨ＿ＤＡＴＡ  ラッチデータ
【図１】
0003563223.tif 000002
【図２】
0003563223.tif 000003
【図３】
0003563223.tif 000004
【図４】
0003563223.tif 000005
【図５】
0003563223.tif 000006
【図６】
0003563223.tif 000007
【図７】
0003563223.tif 000008
【図８】
0003563223.tif 000009
【図９】
0003563223.tif 000010