(57)【要約】【課題】異なるクロックで動作するデータ転送回路を簡素化する。【解決手段】周辺回路側の周辺クロックpclkで動作する本体レジスタ１４の他、バスクロックbclkで動作し、読出データrdata と書込データwdata に共用するデータバッファ１２と、周辺クロックpck で動作し、本体レジスタ１４のレジスタデータregdata が更新されたときに、これをコピーして読出保持データとして出力する読出バッファ１６を設け、これらの２つのバッファ１２，１６でクロック信号の相違を補償する。【選択図】図１
2007128438.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロック信号に同期して動作するバスインタフェースを介して、該第１のクロック信号とは異なる第２のクロック信号に同期して動作する周辺回路内の本体レジスタとの間でデータの転送を行うデータ転送回路であって、
前記バスインタフェースから与えられる書込データ、該バスインタフェースへ出力する読出データ、または読出保持データの内のいずれか１つを、第１の選択信号に従って選択する第１のセレクタと、
前記第１のセレクタで選択されたデータを、前記第１のクロック信号に同期して保持すると共に、保持したデータを前記読出データとして出力するデータバッファと、
前記データバッファから出力されるデータ、前記本体レジスタの保持されたデータ、または前記周辺回路内で発生した内部データの内のいずれか１つを、第２の選択信号に従って選択して該本体レジスタに与える第２のセレクタと、
前記本体レジスタの保持されたデータまたは前記読出保持データを、第３の選択信号に従って選択する第３のセレクタと、
前記第３のセレクタで選択されたデータを、前記第２のクロック信号に同期して保持すると共に、保持したデータを前記読出保持データとして出力する読出バッファと、
前記バスインタフェースからの書込制御信号を受信し、該書込制御信号と前記読出保持データの選択を制御する読出確定信号とに基づいて前記第１の選択信号を生成し、該書込制御信号と前記内部データの発生状態を示す信号とに基づいて前記第２の選択信号を生成し、前記本体レジスタのデータの更新状態を示す信号に基づいて前記第３の選択信号を生成する制御部とを、
備えたことを特徴とするデータ転送回路。
【請求項２】
前記制御部は、
前記読出確定信号が与えられたときには前記読出保持データを選択し、前記書込制御信号が与えられたときには前記書込データを選択し、これらの読出確定信号と書込制御信号のいずれも与えられないときには前記読出データを選択するように前記第１の選択信号の状態を制御する第１の制御部と、
前記書込制御信号が与えられたときには前記データバッファから出力されるデータを選択し、前記内部データの発生状態を示す信号が該内部データが発生したことを指示する時には該内部データを選択し、該書込制御信号が与えられず、かつ該内部データの発生状態を示す信号が該内部データが発生したことを指示しないときには前記本体レジスタに保持されたデータを選択するように前記第２の選択信号の状態を制御する第２の制御部と、
前記本体レジスタのデータの更新状態を示す信号がデータ更新を指示するときには該本体レジスタに保持されたデータを選択し、該本体レジスタのデータの更新状態を示す信号がデータ更新を指示しないときには前記読出保持データを選択するように前記第３の選択信号の状態を制御する第３の制御部とを、
有することを特徴とする請求項１記載のデータ転送回路。
【請求項３】
前記第２の制御部は、パルス信号同期化回路により構成されていることを特徴とする請求項２記載のデータ転送回路。
【請求項４】
前記第１の制御部は、前記第１のクロック信号に同期して動作し、前記第３の制御部は、前記第２のクロック信号に同期して動作することを特徴とする請求項２または３記載のデータ転送回路。
【請求項５】
前記読出確定信号の状態は、前記第３の選択信号の状態に応じて制御されることを特徴とする請求項１〜４のいずれか１項に記載のデータ転送回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック周波数の異なる回路間でデータを転送するためのデータ転送回路に関するものである。
【背景技術】
【０００２】
図２は、従来のデータ転送回路の概略の構成図である。
このデータ転送回路は、ＣＰＵとは異なるクロックで動作するタイマや通信回路等の周辺回路が、バスを介してＣＰＵとの間で安定したデータ転送を行うための回路であり、データ転送部５０、書込バッファ制御部６０、読出データ制御部７０、及びパルス信号同期化部８０で構成されている。
【０００３】
データ転送部５０は、書込保持データwbufd とＣＰＵから与えられる書込データwdataを、選択信号wdsel に従って選択するセレクタ５１と、このセレクタ５１の出力側に接続され、バスクロックbclkに同期してデータを保持する書込バッファ５２を有している。書込バッファ５２に保持された書込保持データwbufd は、セレクタ５１の入力側に戻されると共に、セレクタ５３に与えられるようになっている。
【０００４】
セレクタ５３は、書込保持データwbufd の他、レジスタデータregdata と内部データindataが与えられ、選択信号regwe1,0に従っていずれか１つを選択するものである。セレクタ５３の出力側には、周辺クロックpclkに同期してデータを保持し、保持したデータをレジスタデータregdata として出力する本体レジスタ５４が接続されている。本体レジスタ５４の出力側には、セレクタ５５が接続されている。
【０００５】
セレクタ５５は、レジスタデータregdata と読出保持データrbufd の内の一方を、選択信号rdweに従って選択するもので、このセレクタ５５の出力側に、周辺クロックpclkに同期してデータを保持し、保持したデータを読出保持データrbufd として出力する読出バッファ５６が接続されている。読出バッファ５６の出力側には、セレクタ５７が接続されている。
【０００６】
セレクタ５７は、読出データrdata と読出保持データrbufd のいずれか一方を、選択信号rdackbに従って選択するもので、このセレクタ５７の出力に読出バッファ５８が接続されている。読出バッファ５８は、バスクロックbclkに同期してデータを保持するものである。読出バッファ５８に保持されたデータは、読出データrdata としてＣＰＵ側へ出力されると共に、セレクタ５７の入力側に戻されるようになっている。
【０００７】
書込バッファ制御部６０は、バスクロックbclkに同期して動作し、ＣＰＵから与えられる書込制御信号wdweb と、パルス信号同期化部７０から与えられる書込許可信号wdackbに従い、この書込許可信号wdweb が与えられたときに、誤動作を起こさないタイミングで書込データwdata を選択するための選択信号wdsel を出力するものである。
【０００８】
読出データ制御部７０は、周辺クロックpclkに同期して動作し、セレクタ５３に対する選択信号regwe1,0を使用して、本体レジスタ５４のレジスタデータregdata を読出バッファ５６に書き込むための選択信号rdweを生成するものである。
【０００９】
パルス信号同期化部８０は、安定したパルス幅の信号を生成するために、バスクロック幅の信号wdsel,rdackbを、周辺クロック幅のパルス信号wdwep(regwe0),rdackpに変換し、周辺クロック幅の信号rdwe,rdwepをバスクロック幅の信号wdackbに変換するものである。また、読出保存データrbufd が変化した時に、この読出保存データrbufd を読出バッファ５８に書き込むための選択信号rdackbを出力するようになっている。
【００１０】
次に、図２の基本動作を説明する。
バスから本体レジスタ５５へデータを書き込む場合、書込データwdata をバスクロックbclkに同期して書込バッファ５２に書き込み、その後、この書込バッファ５２に保持されている書込保持データwbufd を、周辺クロックpclkに同期して本体レジスタ５４へ書き込む。
【００１１】
また、本体レジスタ５４に書き込まれているレジスタデータregdata を読み出す場合、このレジスタデータregdata を周辺クロックpclkに同期して読出バッファ５６にコピーし、読出保持データrbufd として読出バッファ５８へ転送する。読出保持データrbufd は、更にバスクロックbclkに同期して読出バッファ５８に取り込まれ、読出データrdata としてバスを介してＣＰＵへ出力される。
【００１２】
このように、書込バッファ５２に書込データwdata を一旦書き込むことにより、本体レジスタ５４にデータが書き込まれるまで、書込保持データの値を安定させることができる。また、本体レジスタ５４のレジスタデータregdata を読出バッファ５６にコピーすることにより、読出バッファ５８へのデータ転送期間、読出保持データrbufd の値を安定させることができる。更に、読出バッファ５８に読出データrdata を保持することにより、本体レジスタ５４からデータを読み出す時間がバスアクセスサイクル数よりも長い場合に対応することができる。
【００１３】
【特許文献１】特開２００２−２６９０３６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、前記データ転送回路では、本体レジスタ５４の他、書込バッファ５２、読出バッファ５６，５８の３組のフリップフロップ（以下、「ＦＦ」という）が必要になる。各ＦＦは、データ幅と同じビット数を有するので、回路規模が大きくなるという課題があった。
【００１５】
また、ＣＰＵ側から本体レジスタ５４にデータを書き込んだ直後に読み出しを行うと、書き込んだデータではなく、読出バッファ５８に保持されている書き込み前のデータが読み出されてしまう。このため、ＣＰＵ側から本体レジスタ５４にデータを書き込んで周辺回路を動作させ、動作が終了した時点で本体レジスタ５４のビットをクリアするような機能の場合、動作が終了していないにも拘らず、動作が終了している状態を示すデータが読み出されるおそれがあった。
【００１６】
本発明は、異なるクロックで動作するデータ転送回路を簡素化することを目的としている。
【課題を解決するための手段】
【００１７】
本発明は、第１のクロック信号に同期して動作するバスインタフェースを介して、該第１のクロック信号とは異なる第２のクロック信号に同期して動作する周辺回路内の本体レジスタとの間でデータの転送を行うデータ転送回路を次のように構成している。
【００１８】
即ち、このデータ転送回路は、バスインタフェースから与えられる書込データ、バスインタフェースへ出力する読出データ、または読出保持データの内のいずれか１つを、第１の選択信号に従って選択する第１のセレクタと、第１のセレクタで選択されたデータを、第１のクロック信号に同期して保持すると共に、保持したデータを読出データとして出力するデータバッファと、データバッファから出力されるデータ、本体レジスタの保持されたデータ、または周辺回路内で発生した内部データの内のいずれか１つを、第２の選択信号に従って選択して本体レジスタに与える第２のセレクタと、本体レジスタの保持されたデータまたは読出保持データを、第３の選択信号に従って選択する第３のセレクタと、第３のセレクタで選択されたデータを、第２のクロック信号に同期して保持すると共に、保持したデータを読出保持データとして出力する読出バッファと、前記バスインタフェースからの書込制御信号を受信し、該書込制御信号と前記読出保持データの選択を制御する読出確定信号とに基づいて前記第１の選択信号を生成し、該書込制御信号と前記内部データの発生状態を示す信号とに基づいて前記第２の選択信号を生成し、前記本体レジスタのデータの更新状態を示す信号に基づいて前記第３の選択信号を生成する制御部とを備えている。
【発明の効果】
【００１９】
本発明では、本体レジスタの他、バス側の第１のクロック信号で動作し、読出データと書込データに共用するデータバッファと、周辺回路側の第２のクロック信号で動作する読出バッファの２つのバッファでクロック信号の相違を補償するようにしている。これにより、従来のように、本体バッファの他に３つのバッファを使用するデータ転送回路に比べてバッファ数が減少し、回路規模を簡素化することができるという効果がある。
【発明を実施するための最良の形態】
【００２０】
この発明の前記並びにその他の目的と新規な特徴は、次の好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
【実施例１】
【００２１】
図１は、本発明の実施例を示すデータ転送回路の構成図である。
このデータ転送回路は、ＣＰＵとは異なるクロックで動作するタイマや通信回路等の周辺回路が、バスを介してＣＰＵとの間で安定したデータ転送を行うための回路であり、データ転送部１０、バッファ制御部２０、読出データ制御部３０、及びパルス信号同期化部４０で構成されている。
【００２２】
データ転送部１０は、読出データrdata と、読出保持データrbufd と、ＣＰＵから与えられる書込データwdata を、選択信号wdsel,rdsel に従って選択するセレクタ１１を有している。セレクタ１１は、選択信号wdsel が“１”の時は書込データwdata を、選択信号wdsel が“０”で選択信号rdsel が“１”の時は読出保持データrbufd を、選択信号wdsel,rdsel が共に“０”の時は読出データrdata を選択して出力するものである。セレクタ１１の出力側にはデータバッファ１２が接続されている。
【００２３】
データバッファ１２は、バスクロックbclkに同期してデータを保持するもので、このデータバッファ１２に保持されたデータは、読出データrdata としてＣＰＵ側へ出力されると共に、セレクタ１１，１３に与えられるようになっている。
【００２４】
セレクタ１３は、データバッファ１２に保持されたデータの他、レジスタデータregdata と、本体レジスタ１４の機能的要因による内部データindataが与えられ、選択信号regwe1,0に従っていずれか１つを選択するものである。選択信号regwe1は、本体レジスタ１４の機能的要因（例えば、周辺回路の処理終了によるレジスタ値のクリア等）による信号である。また、選択信号regwe0は、パルス信号同期化部４０から与えられるようになっている。このセレクタ１３では、選択信号regwe0が“１”の時はデータバッファ１２に保持されたデータを、選択信号regwe0，regwe1がそれぞれ“０”，“１”の時は内部データindataを、選択信号regwe0，regwe1が共に“０”の時はレジスタデータregdata を、それぞれ選択するようになっている。
【００２５】
セレクタ１３の出力側には、本体レジスタ１４が接続されている。本体レジスタ１４は、セレクタ１３で選択されたデータを周辺クロックpclkに同期して保持し、保持したデータをレジスタデータregdata として出力するものである。本体レジスタ１４の出力側には、セレクタ１５が接続されている。
【００２６】
セレクタ１５は、レジスタデータregdata と読出保持データrbufd の内の一方を、選択信号rdwep に従って選択するものである。このセレクタ１５では、選択信号rdwep が“０”の時に読出保持データrbufd を、“１”の時にはレジスタデータregdata を選択して出力するようになっている。セレクタ１５の出力側には、読出バッファ１６が接続されている。読出バッファ１６は、周辺クロックpclkに同期してデータを保持し、保持したデータを読出保持データrbufd として出力するものである。
【００２７】
バッファ制御部２０は、バスクロックbclkに同期して動作し、ＣＰＵから与えられる書込制御信号wdweb 、パルス信号同期化部４０から与えられる書込応答信号wdackb、読出制御信号rdweb 及び読出確定信号rdwev に従って、セレクタ１１に対する選択信号wdsel,rdsel を出力するものである。
【００２８】
読出データ制御部３０は、周辺クロックpclkに同期して動作し、選択信号regwe1,0と読出許可信号rdackpに従って、本体レジスタ１４のレジスタデータregdata を読出バッファ１６に書き込むための選択信号rdwep を生成するものである。
【００２９】
パルス信号同期化部４０は、安定したパルス幅の信号を生成するために、バスクロック幅の信号wdsel,rdweb を、周辺クロック幅の信号regwe0,rdackp に変換し、周辺クロック幅の信号rdwep,regwe0をバスクロック幅の信号rdweb,wdackbに変換するものである。
【００３０】
図３は、図１中のバッファ制御部２０の回路図である。
このバッファ制御部２０は、セレクタ２１とＦＦ２２で同期セット・リセット回路を構成し、データバッファ１２に書込データwdata を書き込むための選択信号wdsel を生成するようになっている。書込応答信号wdackbが“１”のときＦＦ２２はリセットされ、書込応答信号wdackbが“０”で書込制御信号wdweb が“１”のときＦＦ２２はセットされ、書込許可信号wdackbと書込制御信号wdweb が“０”のときＦＦ２２は状態を維持するようになっている。ＦＦ２２から出力される抑止信号wbufl は、データバッファ１２のデータ転送中にこのデータバッファ１２の更新を抑止するための信号として使用される。抑止が必要な理由は、データ転送中にデータバッファ１２の値が変化すると、正しくデータが転送できない場合があるためである。抑止信号wbufl の反転信号、即ちＦＦ２２の反転出力端子の信号と書込制御信号wdweb は、ＡＮＤ２３によって論理積が取られ、選択信号wdselとして出力される。
【００３１】
更に、このバッファ制御部２０では、読出保持データrbufd をデータバッファ１２に書き込むための選択信号rdsel を生成するために、ＡＮＤ２４とＯＲ２５による回路を有している。ＡＮＤ２４は、読出制御信号rdweb と抑止信号wbufl の反転信号の論理積を取るもので、ＯＲ２５によって、このＡＮＤ２４の出力信号と読出確定信号rdwev の論理積が取られ、選択信号rdsel が生成される。これにより、データバッファ１２が使用中でないときの読出制御信号rdweb のアサート、または読出確定信号rdwev のアサートにより、選択信号rdsel がアサートするようになっている。
【００３２】
図４は、図１中の読出データ制御部３０の回路図である。
この読出データ制御部３０は、セレクタ３１とＦＦ３２で同期セット・リセット回路を構成し、読出バッファ１６の更新を抑止するための抑止信号rbufl を生成するようになっている。選択信号rdwep が“１”のときＦＦ３２はセットされ、選択信号rdwep が“０”で読出応答信号rdackpが“１”のときＦＦ３２はリセットされ、選択信号rdwep と読出応答信号rdackpが“０”のときＦＦ３２は状態を維持するようになっている。ＦＦ３２の出力端子Ｑから抑止信rbufl が、反転出力端子／Ｑからは、抑止信号rbufl を反転した信号が出力されるようになっている。
【００３３】
また、この読出データ制御部３０は、レジスタ機能要因によるデータ書き込みを制御する回路（ＡＮＤ３４〜ＯＲ３８）と、バスインタフェースからの書き込みとレジスタ機能要因による書き込みが同時であった場合の抑止回路（ＡＮＤ３９）を有している。
【００３４】
即ち、ＦＦ３２の反転出力端子／Ｑは、ＯＲ３３の一方の入力側に接続され、このＯＲ３３の他方の入力側には、選択信号regwe0が与えられている。選択信号regwe0は、更にインバータで反転されてＡＮＤ３４の一方の入力側に与えられ、このＡＮＤ３４の他方の入力側には、選択信号regwe1が与えられている。ＡＮＤ３４の出力側は、周辺クロックpclkに同期して動作するＦＦ３５に接続され、このＦＦ３５からレジスタ書込信号regweff が出力されるようになっている。ＯＲ３３の出力信号s33 と、レジスタ書込信号regweff は、セレクタ３６の選択信号として与えられている。
【００３５】
セレクタ３６はＦＦ３７と共に同期セット・リセット回路を構成し、信号s33 が“１”のときＦＦ３７はリセットされ、信号s33 が“０”でレジスタ書込信号regweff が“１”のときＦＦ３７はセットされ、信号s33 とレジスタ書込信号regweff が共に“０”のときＦＦ３７は状態を維持するようになっている。そして、ＦＦ３７から読出データ制御信号rdweh が出力されるようになっている。
【００３６】
ＦＦ３７の出力側は、ＯＲ３８の一方の入力側に接続され、このＯＲ３８の他方の入力側に、ＦＦ３５のレジスタ書込信号regweff が与えられている。ＯＲ３８の出力側はＡＮＤ３９の一方の入力側に接続され、このＡＮＤ３９の他方の入力側は、ＦＦ３２の反転出力端子／Ｑに接続されている。そして、ＡＮＤ３９の出力側から、選択信号rdwep が出力されるようになっている。
【００３７】
図５は、図１中のパルス信号同期化部４０の回路図である。
このパルス信号同期化部４０は、バスクロックbclkの１サイクル分のパルスを周辺クロックpclkの１サイクル分のパルスに変換するパルス信号同期化回路４１，４４と、周辺クロックpclkの１サイクル分のパルスをバスクロックbclkの１サイクル分のパルスに変換するパルス信号同期化回路４２，４３を有している。
【００３８】
パルス信号同期化回路４１〜４４は、入力側のクロックに従って入力データを保持する１段のフリップフロップと、出力側のクロックに従って動作する２段のフリップフロップを縦続接続したものである。
【００３９】
パルス信号同期化回路４１，４４は、選択信号wdsel と読出制御信号rdweb を、それぞれ選択信号regwe0と読出応答信号rdackpに変換するものである。また、パルス信号同期化回路４２，４３は、選択信号regwe0と選択信号rdwep を、それぞれ書込応答信号wdackbと読出制御信号rdweb に変換するものである。
【００４０】
更に、このパルス信号同期化部４０は、データの更新順序を示す更新順序信号s46 と，データ“０”，“１”を、選択信号regwe0,rdwebに従って選択するセレクタ４５を有している。このセレクタ４５は、選択信号regwe0が“１”の時にはデータ“０”、選択信号regwe0が“０”で選択信号rdwep が“１”の時にはデータ“１”、選択信号regwe0,rdwebが共に“０”の時には更新順序信号s46 を、それぞれ選択するものである。セレクタ４５の出力側は、周辺クロックpclkに同期して動作するフリップフロップ４６に接続され、このフリップフロップ４６から更新順序信号s46 が出力されるようになっている。
【００４１】
フリップフロップ４６の出力側は、更に、バスクロックbclkに同期して動作するフリップフロップ４７に接続され、このフリップフロップ４７の出力側が、３入力のＡＮＤゲート４８の入力側に接続されている。ＡＮＤゲート４８の他の２つの入力側には、書込応答信号wdackbと読出制御信号rdweb が与えられ、このＡＮＤゲート４８の出力側から読出確定信号rdwev が出力されるようになっている。これにより、書込応答信号wdackbと読出制御信号rdweb が共に“１”のときにのみ、読出確定信号rdwev が“１”となり、バッファ制御回路２０に与えられるようになっている。
【００４２】
図６〜図８は、それぞれ図１の基本動作タイムチャート１〜３である。以下、これらの図６〜図８を参照しつつ、図１の動作を説明する。
【００４３】
図６は、バスクロックbclkの周波数が周辺クロックpclkの周波数よりも高い場合の基本動作（１）を示している。
【００４４】
ＣＰＵ側から本体レジスタ１４にデータを書き込む場合、まず、バスクロックbclkに同期して、バス側の書込制御信号wdweb がアサートされ、書込データwdata として値（Ｂ）が出力される。これにより、次のバスクロックbclkの立ち上がりでデータバッファ１２の値が（Ｂ）となり、バッファ制御部２０の抑止信号wbufl がアクティブとなる。
【００４５】
また、パルス信号同期化部４０内のパルス信号同期化回路４１により、周辺クロックpclkで同期化された選択信号regwe0がアサートする。選択信号regwe0はパスル同期化回路４３に与えられ、バスクロックbclkで同期化された書込応答信号wdackbが、ハンドシェークの応答信号として折り返される。折り返されてきた書込応答信号wdackbにより、データバッファ１２の更新を抑止している抑制信号wbufl がネゲートされる。そして、選択信号regwe0のアサートにより、周辺クロックpclkの次のサイクルで、本体レジスタ１４のレジスタデータregdata が書込データwdata の値（Ｂ）に切り替わる。
【００４６】
一方、レジスタ機能要因によるレジスタ書き込みが発生した場合は、まず、選択信号regwe1がアサートする。これにより、セレクタ１３によって内部データindataが選択され、本体レジスタ１４のレジスタデータregdata は、内部データindataの値（Ｃ）に切り替わる。
【００４７】
読出データ制御部３０では、選択信号regwe1を受けて、レジスタ書込信号regweff と選択信号rdwep がアサートする。選択信号rdwep がアクティブになると、読出バッファ１６の読出保持データrbufd の値がレジスタデータregdata の値（Ｃ）に切り替わると同時に、抑止信号rbufl がアサートする。
【００４８】
また、選択信号rdwep は、パルス信号同期化部４０のパルス信号同期化回路４３によってバスクロックbclkで同期化され、読出制御信号rdweb としてアサートされる。読出制御信号rdweb は、更にパルス同期化回路４４によって周辺クロックpclkで同期化され、ハンドシェークの応答信号として、読出応答信号rdackpが読出データ制御部３０に折り返される。
【００４９】
読出データ制御部３０では、折り返されてきた読出応答信号rdackpにより、読出バッファ１６の更新を抑止している抑止信号rbufl がネゲートされる。そして、バス側から与えられる書込制御信号rdweb のアサートにより、バスクロックbclkの次のサイクルで、読出データrdata が読出保持データrbufd の値（Ｃ）に切り替わる。
【００５０】
図７は、バスクロックbclkの周波数が周辺クロックpclkの周波数よりも低い場合で、本体レジスタ１４に対してレジスタの機能要因による書き込みが連続して発生した後に、バスインタフェースからの書き込みが発生した場合の基本動作（２）である。
【００５１】
レジスタの機能要因による連続書き込みにより、選択信号regwe1 
が連続してアサートした場合、読出データ制御部３０では、１回目のアサートによるハンドシェークの応答信号である読出応答信号rdackpが返るまで、２回目のアサートは読出データ制御信号rdwehによって保持される。通常、１回目のハンドシェークにより読出バッファ１６からデータ（Ｂ）が転送され、その後、読出応答信号rdackpの受信と読出データ制御信号rdweh により、２回目のハンドシェークが行われ、１回目のデータ（Ｃ）が読出データrdata に反映される。本図の動作では、更にバスインタフェースからの書込要求が発生しているため、１回目、２回目とも読出バッファ１６からデータバッファ１２への書き込みが抑止される。１回目はバッファ制御部２０の抑止信号wbufl によって抑止され、２回目は選択信号regwe0によって読出データ制御部３０の読出データ制御信号rdweh がクリアされることで抑止される。この抑止機能により、本体レジスタ１４における最終のレジスタデータregdata の値（Ｄ）と、読出データrdata の値が一致する。
【００５２】
図８は、バスクロックbclkの周波数が周辺クロックpclkの周波数よりも低い場合で、本体レジスタ１４に対してバスインタフェースからの書き込みが発生した直後に、この本体レジスタ１４の機能要因による書き込みが発生した場合の基本動作（３）である。
【００５３】
バスインタフェースからの書き込みと、本体レジスタ１４の機能要因による書き込みでは、この本体レジスタ１４へのタイミングには周辺クロックpclkの１サイクルの差がある。これに対し、バス側の書込応答信号wdackbと読出制御信号rdweb は、アサートのタイミングが一致する。
【００５４】
このような場合は、読出確定信号rdwev による判断が行われる。即ち、読出確定信号rdwev は、本体レジスタ１４への書き込みが後で発生したときの値となっている。本例のように、本体レジスタ１４の機能要因による選択信号regwe1が後で発生した場合、読出確定信号rdwev が“１”となっているので、バッファ制御部２０の抑止信号wbufl に拘らずデータバッファ１２の値は書き替えられる。なお、読出確定信号rdwev が“０”の場合は、データバッファ１２の値は書き替えられず、そのままの値（バスインタフェースからの書込データwdata の値）が保持される。
【００５５】
以上のように、この実施例のデータ転送回路は、本体レジスタ１４の他、バスクロックbclkで動作し、読出データrdata と書込データwdata に共用するデータバッファ１２と、周辺クロックpclkで動作する読出バッファ１６の２つのバッファでクロックの相違を補償するようにしているので、従来のように３つのバッファを使用するデータ転送回路に比べてバッファ数が減少し、回路規模を簡素化することができるという利点がある。
【００５６】
また、バッファ制御部２０では、本体レジスタ１４の内容が変化したときに、レジスタデータregdata をデータバッファ１２に転送しておくように制御が行われるので、ＣＰＵから本体レジスタ１４に書き込んだ書込データwdata を、次のサイクルで読み出すことができるという利点がある。
【００５７】
なお、本発明は、上記実施例に限定されず、種々の変形が可能である。即ち、実施例で示した各部の具体的な回路構成に限定されることなく、同様の機能を有する回路構成であれば、同様に適用することができる。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施例を示すデータ転送回路の構成図である。
【図２】従来のデータ転送回路の概略の構成図である。
【図３】図１中のバッファ制御部２０の回路図である。
【図４】図１中の読出データ制御部３０の回路図である。
【図５】図１中のパルス信号同期化部４０の回路図である。
【図６】図１の基本動作タイムチャート１である。
【図７】図１の基本動作タイムチャート２である。
【図８】図１の基本動作タイムチャート３である。
【符号の説明】
【００５９】
１０    データ転送部
１１，１３，１５    セレクタ
１２    データバッファ
１４    本体レジスタ
１６    読出バッファ
２０    バッファ制御部
３０    読出データ制御部
４０    パルス信号同期化部
【図１】
2007128438.tif 000003
【図２】
2007128438.tif 000004
【図３】
2007128438.tif 000005
【図４】
2007128438.tif 000006
【図５】
2007128438.tif 000007
【図６】
2007128438.tif 000008
【図７】
2007128438.tif 000009
【図８】
2007128438.tif 000010