(57)【要約】【課題】同期クロック信号とシリアルデータとの時間的なずれを抑制する。【解決手段】データ送受信システム１を構成するマスタＩＣ１０および２つのスレーブＩＣ２０は、シリアル・ペリフェラル・インタフェース（Serial Peripheral Interface：ＳＰＩ）によって接続されている。チップセレクト信号ＣＳ＃（＝１、２）がアサートされたスレーブＩＣ２０は、マスタＩＣ１０から、同期クロック信号ＳＰＩ＿ＳＣＬＫと入力シリアルデータＳＰＳ＿ＤＩとを受信し、受信した同期クロック信号ＳＰＩ＿ＳＣＬＫと入力シリアルデータＳＰＳ＿ＤＩとを用いて作成した出力シリアルデータＳＰＳ＿ＤＯを、同期クロック信号ＳＰＩ＿ＳＣＬＫに同期させてマスタＩＣ１０に返信する。このとき、スレーブＩＣ２０は、出力シリアルデータＳＰＳ＿ＤＯをマスタＩＣ１０に返信する際に、その出力タイミングを前倒しする。【選択図】図１
2018045409.tif 000002
【特許請求の範囲】
【請求項１】
同期クロック信号と当該同期クロック信号に同期した入力シリアルデータとを受信する受信手段と、
受信した前記同期クロック信号と前記入力シリアルデータとを用いて作成された出力シリアルデータを、当該同期クロック信号に同期させて送信する送信手段と、
前記同期クロック信号に対し予め定められた前記出力シリアルデータの送信タイミングを前倒しする前倒し手段と
を含むデータ送受信装置。
【請求項２】
前記前倒し手段は、前記同期クロック信号の周期に応じて前記出力シリアルデータの送信タイミングの前倒し量を決定することを特徴とする請求項１記載のデータ送受信装置。
【請求項３】
前記前倒し手段は、自装置内での前記同期クロック信号の遅延量に合わせて、前記出力シリアルデータの送信タイミングの前倒し量を決定することを特徴とする請求項１または２記載のデータ送受信装置。
【請求項４】
前記出力シリアルデータの送信タイミングを前倒しするか否かを選択する選択手段をさらに含むことを特徴とする請求項１乃至３のいずれか１項記載のデータ送受信装置。
【請求項５】
同期クロック信号と当該同期クロック信号に同期させた入力シリアルデータとを送信する第１の装置と、
前記第１の装置から受信した前記同期クロック信号と前記入力シリアルデータとを用いて作成された出力シリアルデータを、当該同期クロック信号に同期させて当該第１の装置に返信する第２の装置と
を備え、
前記第２の装置は、前記同期クロック信号に対し予め定められた前記出力シリアルデータの送信タイミングを前倒しして、前記第１の装置に返信すること
を特徴とするデータ送受信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ送受信装置、データ送受信システムに関する。
【背景技術】
【０００２】
１つのマスタデバイスと複数のスレーブデバイスとを接続し、１つのマスタデバイスが複数のスレーブデバイスを制御する制御方式が知られている。そして、マスタデバイスと各スレーブデバイスとの間でのデータの授受を、シリアル・ペリフェラル・インタフェース(Serial Peripheral Interface：ＳＰＩ)やマイクロワイヤ（Microwire）など、クロック同期式のシリアル通信で行うことが知られている。
【０００３】
特許文献１には、マスタデバイスが作成し、制御対象となるスレーブデバイスの選択に用いられるチップセレクト信号のアサートおよびネゲートのタイミングを、同期用のクロック信号との関係により変更することが記載されている。
【０００４】
また、特許文献２には、マスタデバイスが、スレーブデバイス毎に同期用のクロックの周波数を設定し、対象となるスレーブデバイスとの間では、対象となるスレーブデバイス用に設定された周波数のクロックでシリアル通信を行うことが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１４１６２９号公報
【特許文献２】特開２０１２−１３４８４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、マスタデバイス側で、各々のスレーブデバイスに応じた通信用の設定を行う構成を採用した場合には、マスタデバイスに接続されるスレーブデバイスの数に応じた設定が必要となる。このような設定をソフトウェアで行う場合には、対象となるスレーブデバイスを切り替えるたびに設定を変更するための時間が必要となる分、マスタデバイスが実行する処理の効率が低下する。また、このような設定をハードウェアで行う場合には、マスタデバイスの構成が複雑化する。
【０００７】
本発明は、同期クロック信号とシリアルデータとの時間的なずれを抑制することを目的とする。
【課題を解決するための手段】
【０００８】
請求項１記載の発明は、同期クロック信号と当該同期クロック信号に同期した入力シリアルデータとを受信する受信手段と、受信した前記同期クロック信号と前記入力シリアルデータとを用いて作成された出力シリアルデータを、当該同期クロック信号に同期させて送信する送信手段と、前記同期クロック信号に対し予め定められた前記出力シリアルデータの送信タイミングを前倒しする前倒し手段とを含むデータ送受信装置である。
請求項２記載の発明は、前記前倒し手段は、前記同期クロック信号の周期に応じて前記出力シリアルデータの送信タイミングの前倒し量を決定することを特徴とする請求項１記載のデータ送受信装置である。
請求項３記載の発明は、前記前倒し手段は、自装置内での前記同期クロック信号の遅延量に合わせて、前記出力シリアルデータの送信タイミングの前倒し量を決定することを特徴とする請求項１または２記載のデータ送受信装置である。
請求項４記載の発明は、前記出力シリアルデータの送信タイミングを前倒しするか否かを選択する選択手段をさらに含むことを特徴とする請求項１乃至３のいずれか１項記載のデータ送受信装置である。
請求項５記載の発明は、同期クロック信号と当該同期クロック信号に同期させた入力シリアルデータとを送信する第１の装置と、前記第１の装置から受信した前記同期クロック信号と前記入力シリアルデータとを用いて作成された出力シリアルデータを、当該同期クロック信号に同期させて当該第１の装置に返信する第２の装置とを備え、前記第２の装置は、前記同期クロック信号に対し予め定められた前記出力シリアルデータの送信タイミングを前倒しして、前記第１の装置に返信することを特徴とするデータ送受信システムである。
【発明の効果】
【０００９】
請求項１記載の発明によれば、同期クロック信号とシリアルデータとの時間的なずれを抑制することができる。
請求項２記載の発明によれば、より簡易に、同期クロック信号とシリアルデータとの時間的なずれを抑制することができる。
請求項３記載の発明によれば、同期クロック信号とシリアルデータとの時間的なずれを、より小さくすることができる。
請求項４記載の発明によれば、例えば同期クロック信号の周波数が低い場合に、同期クロック信号とシリアルデータとの時間的なずれを抑制することができる。
請求項５記載の発明によれば、同期クロック信号とシリアルデータとの時間的なずれを抑制するができる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態が適用されるデータ送受信システムの構成を示す図である。
【図２】（ａ）はスレーブＩＣの構成を示す図であり、（ｂ）はスレーブＩＣから出力される出力シリアルデータの構成を示す図である。
【図３】スレーブＩＣによる読み出し処理を説明するためのフローチャートである。
【図４】スレーブＩＣによる読み出し処理を説明するためのタイミングチャートである。
【図５】読み出し処理における同期クロック解析部の動作を説明するためのタイミングチャートである。
【図６】読み出し処理における周期検出部の動作を説明するためのタイミングチャートである。
【図７】読み出し処理における出力基準信号作成部およびシフトレジスタの動作を説明するためのタイミングチャートである。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
［データ送受信システムの構成］
図１は、本実施の形態が適用されるデータ送受信システム１の構成を示す図である。
このデータ送受信システム１は、マスタ集積回路（以下では、「マスタＩＣ」と表記）１０と、それぞれがマスタＩＣ１０に接続される複数（ここでは２つ）のスレーブ集積回路（以下では、「スレーブＩＣ」と表記）２０とを備えている。本実施の形態のデータ送受信システム１は、例えば複写機等の画像形成装置の制御系で用いられる。この場合、マスタＩＣ１０が、画像形成装置の全体を制御するメインコントローラとして、各スレーブＩＣ２０が、メインコントローラ（マスタＩＣ１０）による制御の下、画像形成装置の一部（例えばモータ）を制御するサブコントローラとして、それぞれ機能する。
【００１２】
このデータ送受信システム１において、マスタＩＣ１０と、２つのスレーブＩＣ２０とは、シリアル・ペリフェラル・インタフェース（Serial Peripheral Interface：ＳＰＩ）によって接続されている。ＳＰＩは、クロック同期式且つ全二重方式のシリアルバスの一種である。ＳＰＩでは、マスタＩＣ１０と各スレーブＩＣ２０とが、それぞれ４本の信号線を用いてデータの送受信を行う。
【００１３】
ＳＰＩで用いられる４つの信号のうちの１つ目は、マスタＩＣ１０が、通信対象となるスレーブＩＣ２０を選択するために用いられるチップセレクト信号ＣＳ♯（この例では♯：１、２）である。このチップセレクト信号ＣＳ♯は、マスタＩＣ１０が作成して各スレーブＩＣ２０に送る。なお、ＳＰＩでは、チップセレクト信号ＣＳ♯がアサートに設定されたスレーブＩＣ２０が通信対象となり、チップセレクト信号ＣＳ＃がネゲートに設定されたスレーブＩＣ２０が非通信対象となる。
【００１４】
ＳＰＩで用いられる４つの信号のうちの２つ目は、マスタＩＣ１０とスレーブＩＣ２０との同期を取るために用いられる、同期クロック信号ＳＰＩ＿ＳＣＬＫである。この同期クロック信号ＳＰＩ＿ＳＣＬＫは、マスタＩＣ１０が作成して各スレーブＩＣ２０に送る。なお、この例において、同期クロック信号ＳＰＩ＿ＳＣＬＫの周波数（周期）は、常に一定となるように設定される。
【００１５】
ＳＰＩで用いられる４つの信号のうちの３つ目は、マスタＩＣ１０がスレーブＩＣ２０に各種要求を行うために用いられる、入力シリアルデータＳＰＳ＿ＤＩである。この入力シリアルデータＳＰＳ＿ＤＩは、マスタＩＣ１０が作成して各スレーブＩＣ２０に送る。なお、この入力シリアルデータＳＰＳ＿ＤＩには、上記要求として、スレーブＩＣ２０が実行するコマンド等が含まれる。
【００１６】
ＳＰＩで用いられる４つの信号のうちの４つ目は、スレーブＩＣ２０がマスタＩＣ１０からの各種要求に対する応答を行うために用いられる、出力シリアルデータＳＰＳ＿ＤＯである。この出力シリアルデータＳＰＳ＿ＤＯは、各スレーブＩＣ２０が作成してマスタＩＣ１０に送る。なお、この出力シリアルデータＳＰＳ＿ＤＯには、上記応答として、マスタＩＣ１０から出力要求を受けたデータ等が含まれる。
【００１７】
そして、ＳＰＩでは、これら入力シリアルデータＳＰＳ＿ＤＩおよび出力シリアルデータＳＰＳ＿ＤＯの送受信が、同期クロック信号ＳＰＩ＿ＳＣＬＫと同期するように行われる。また、ＳＰＩでは、これら入力シリアルデータＳＰＳ＿ＤＩおよび出力シリアルデータＳＰＳ＿ＤＯの送受信が常に並列（全二重）に行われ得る。
【００１８】
なお、送受信システム１を構成するスレーブＩＣ２０が１つだけの場合、すなわち、１つのマスタＩＣ１０と１つのスレーブＩＣ２０とでデータ送受信システム１を構成する場合、チップセレクト信号ＣＳ＃は不要となり、ＳＰＩに必要な信号線の数は３本となる。
【００１９】
［スレーブＩＣの構成］
図２（ａ）は、スレーブＩＣ２０の構成を示す図である。
スレーブＩＣ２０は、第１フリップフロップ２１（以下では、「第１ＦＦ２１」と表記）と、第２フリップフロップ２２（以下では、「第２ＦＦ２２」と表記）と、同期クロック解析部２３と、周期検出部２４と、出力基準信号作成部２５と、マルチプレクサ２６と、内部回路２７と、シフトレジスタ２８と、トライステートバッファ２９とを備えている。
【００２０】
第１ＦＦ２１は、Ｄ型フリップフロップで構成されている。この第１ＦＦ２１には、マスタＩＣ１０（図１参照）から供給される同期クロック信号ＳＰＩ＿ＳＣＬＫが入力される。そして、第１ＦＦ２１は、同期クロック信号ＳＰＩ＿ＳＣＬＫをラッチし、予め決められた時間（この例では、後述するシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの１周期分）だけ遅延させて出力する。
【００２１】
第２ＦＦ２２も、Ｄ型フリップフロップで構成されている。この第２ＦＦ２２には、第１ＦＦ２１から供給される同期クロック信号ＳＰＩ＿ＳＣＬＫが入力される。そして、第２ＦＦ２２は、同期クロック信号ＳＰＩ＿ＳＣＬＫをラッチし、予め決められた時間（この例では、後述するシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの１周期分）だけ遅延させて出力する。
【００２２】
この例において、マスタＩＣ１０からスレーブＩＣ２０に供給される同期クロック信号ＳＰＩ＿ＳＣＬＫは、第１ＦＦ２１および第２ＦＦ２２を通過することにより、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの２周期分だけ遅延した状態で、同期クロック解析部２３に向けて出力されることになる。
【００２３】
同期クロック解析部２３には、第２ＦＦ２２から、同期クロック信号ＳＰＩ＿ＳＣＬＫが入力される。また、同期クロック解析部２３には、スレーブＩＣ２０に内蔵されるクロック発生部（図示せず）から、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫが入力される。そして、同期クロック解析部２３は、同期クロック信号ＳＰＩ＿ＳＣＬＫとシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫとを用いて、同期クロック信号ＳＰＩ＿ＳＣＬＫにおける、パルスの立ち上がり（「Ｌ」→「Ｈ」）に対応する立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴと、パルスの立ち下がり（「Ｈ」→「Ｌ」）に対応する立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴとを作成し、出力する。
【００２４】
周期検出部２４には、同期クロック解析部２３から、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴが入力される。また、周期検出部２４には、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫが入力される。そして、周期検出部２４は、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴとシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫとを用いて、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴの１周期におけるシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの周期の数に対応する周期値信号ＦＲＥＱを作成し、出力する。
【００２５】
出力基準信号作成部２５には、同期クロック解析部２３から、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴが入力される。また、出力基準信号作成部２５には、周期検出部２４から、周期値信号ＦＲＥＱが入力される。さらに、出力基準信号作成部２５には、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫが入力される。そして、出力基準信号作成部２５は、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴと周期値信号ＦＲＥＱとシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫとを用いて、出力シリアルデータＳＰＳ＿ＤＯの出力で使用する出力基準信号ＰＲＥ＿ＤＥＴＥＣＴを作成し、出力する。
【００２６】
マルチプレクサ２６には、同期クロック解析部２３から、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴが入力される。また、マルチプレクサ２６には、出力基準信号作成部２５から、出力基準信号ＰＲＥ＿ＤＥＴＥＣＴが入力される。さらに、マルチプレクサ２６には、スレーブＩＣ２０に対し予め設定された動作モード（「通常モード」および「前倒しモード」：詳細は後述する）に対応したモード信号ＭＯＤＥ＿ＳＥＮＤが入力される。そして、マルチプレクサ２６は、モード信号ＭＯＤＥ＿ＳＥＮＤが「通常モード（＝０）」に設定されている場合は、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴを選択して出力する。また、マルチプレクサ２６は、モード信号ＭＯＤＥ＿ＳＥＮＤが「前倒しモード（＝１）」に設定されている場合は、出力基準信号ＰＲＥ＿ＤＥＴＥＣＴを選択して出力する。
【００２７】
内部回路２７には、マスタＩＣ１０から供給される入力シリアルデータＳＰＳ＿ＤＩが入力される。そして、内部回路２７は、入力シリアルデータＳＰＳ＿ＤＩに基づいて得られた、出力シリアルデータＳＰＳ＿ＤＯの元となる出力パラレルデータＤＡＴＡ＿ＯＵＴ［７：０］を出力する。ここで、本実施の形態では、出力シリアルデータＳＰＳ＿ＤＯが８ビットのデータであることから、出力パラレルデータＤＡＴＡ＿ＯＵＴ［７：０］も８ビットのデータとなっている。
【００２８】
シフトレジスタ２８には、マルチプレクサ２６から、動作モードに応じて立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴまたは出力基準信号ＰＲＥ＿ＤＥＴＥＣＴが入力される。また、シフトレジスタ２８には、内部回路２７から出力パラレルデータＤＡＴＡ＿ＯＵＴ［７：０］が入力される。そして、シフトレジスタ２８は、８ビットの出力パラレルデータＤＡＴＡ＿ＯＵＴ［７：０］から、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴまたは出力基準信号ＰＲＥ＿ＤＥＴＥＣＴに同期してシリアル化させた８ビットの出力シリアルデータＳＰＳ＿ＤＯを作成し、出力する。
【００２９】
トライステートバッファ２９は、出力レベルを「Ｈ」、「Ｌ」および「Ｈｉ−Ｚ（ハイインピーダンス）」の３状態に切り替え可能なバッファである。トライステートバッファ２９には、シフトレジスタ２８から、出力シリアルデータＳＰＳ＿ＤＯが入力される。そして、トライステートバッファ２９は、イネーブル信号ＥＮＢがオフ（０）になっているときに、シフトレジスタ２８からの入力をそのまま出力シリアルデータＳＰＳ＿ＤＯとして出力する。また、トライステートバッファ２９は、イネーブル信号ＥＮＢがオン（１）になっているときにＨｉ−Ｚとなり、出力シリアルデータＳＰＳ＿ＤＯをＨｉ−Ｚとする。
【００３０】
［出力シリアルデータ］
図２（ｂ）は、スレーブＩＣ２０から出力される出力シリアルデータＳＰＳ＿ＤＯの構成を示す図である。
本実施の形態において、出力シリアルデータＳＰＳ＿ＤＯは、最上位ビット（Most Significant Bit：ＭＳＢ）であるＤＡＴＡ７から、最下位ビット（Least Significant Bit：ＬＳＢ）であるＤＡＴＡ０の順に、時間軸に沿って８個のデータが配列されている。そして、出力シリアルデータＳＰＳ＿ＤＯを構成するＤＡＴＡ７〜ＤＡＴＡ０のそれぞれは、同期クロック信号ＳＰＩ＿ＳＣＬＫの周期と同じ長さに設定される。
【００３１】
ここで、本実施の形態では、マスタＩＣ１０が第１の装置の一例として、スレーブＩＣ２０が第２の装置およびデータ送受信装置の一例として、それぞれ機能している。また、本実施の形態では、第１ＦＦ２１および内部回路２７が受信手段の一例として、トライステートバッファ２９が送信手段の一例として、それぞれ機能している。さらに、本実施の形態では、出力基準信号作成部２５、マルチプレクサ２６およびシフトレジスタ２８が、前倒し手段の一例として機能している。
【００３２】
［スレーブＩＣによる読み出し処理］
では、本実施の形態のデータ送受信システム１の動作について、具体例を挙げて説明を行う。なお、ここでは、マスタＩＣ１０が、対象となるスレーブＩＣ２０に対してデータの読み出し要求を送信（出力）し、対象となるスレーブＩＣ２０が、読み出し要求に応じて読み出したデータをマスタＩＣ１０に返信（出力）する動作（読み出し処理）を、スレーブＩＣ２０側からみた場合を例として説明する。
【００３３】
［読み出し処理の説明］
図３は、スレーブＩＣ２０による読み出し処理を説明するためのフローチャートである。なお、初期状態において、すべてのチップセレクト信号ＣＳ＃（ここではＣＳ１およびＣＳ２）は、ネゲートに設定されている。
【００３４】
まず、１つのチップセレクト信号ＣＳ♯（例えば図１の右上に示すスレーブＩＣ２０の場合はチップセレクト信号ＣＳ１）がネゲートからアサートに変更される（ステップ１０）と、対象となるスレーブＩＣ２０は、マスタＩＣ１０が出力する同期クロック信号ＳＰＩ＿ＳＣＬＫの受信を開始する（ステップ２０）。そして、対象となるスレーブＩＣ２０では、受信した同期クロック信号ＳＰＩ＿ＳＣＬＫを、第１ＦＦ２１および第２ＦＦ２２を介して、同期クロック解析部２３へと出力する。なお、このとき、対象となるスレーブＩＣ２０は、マスタＩＣ１０が出力する入力シリアルデータＳＰＳ＿ＤＩの受信も開始する。そして、スレーブＩＣ２０では、受信した入力シリアルデータＳＰＳ＿ＤＩを、内部回路２７へと出力する。
【００３５】
次に、同期クロック解析部２３は、入力されてくる、同期クロック信号ＳＰＩ＿ＳＣＬＫとシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫとを用い、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴと立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴとを作成する（ステップ３０）。
【００３６】
次いで、周期検出部２４は、入力されてくる、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴとシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫとを用い、周期値信号ＦＲＥＱを作成する（ステップ４０）。
【００３７】
続いて、出力基準信号作成部２５は、入力されてくる、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴと周期値信号ＦＲＥＱとシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫとを用い、出力基準信号ＰＲＥ＿ＤＥＴＥＣＴを作成する（ステップ５０）。
【００３８】
そして、マルチプレクサ２６において、モード信号ＭＯＤＥ＿ＳＥＮＤが「前倒しモード」に設定されているか否かが判断される（ステップ６０）。
【００３９】
ステップ６０において肯定の判断（ＹＥＳ）がなされた場合、すなわち、モード信号ＭＯＤＥ＿ＳＥＮＤが「前倒しモード」に設定されている場合、マルチプレクサ２６は、出力基準信号ＰＲＥ＿ＤＥＴＥＣＴを選択してシフトレジスタ２８に出力する（ステップ７０）。そして、シフトレジスタ２８は、内部回路２７から供給される出力パラレルデータＤＡＴＡ＿ＯＵＴ［７：０］を、マルチプレクサ２６から供給される出力基準信号ＰＲＥ＿ＤＥＴＥＣＴに同期させてシリアル化し、出力シリアルデータＳＰＳ＿ＤＯとして出力する（ステップ８０）。
【００４０】
一方、ステップ６０において否定の判断（ＮＯ）がなされた場合、すなわち、モード信号ＭＯＤＥ＿ＳＥＮＤが「通常モード」に設定されている場合、マルチプレクサ２６は、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴを選択してシフトレジスタ２８に出力する（ステップ９０）。そして、シフトレジスタ２８は、内部回路２７から供給される出力パラレルデータＤＡＴＡ＿ＯＵＴ［７：０］を、マルチプレクサ２６から供給される立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴに同期させてシリアル化し、出力シリアルデータＳＰＳ＿ＤＯとして出力する（ステップ１００）。
【００４１】
では、データ送受信システム１における、スレーブＩＣ２０による読み出し処理について、タイミングチャートを用いて、さらに詳細な説明を行う。
【００４２】
図４は、スレーブＩＣ２０による読み出し処理を説明するためのタイミングチャートである。ここで、図４は、チップセレクト信号ＣＳ♯と、同期クロック信号ＳＰＩ＿ＳＣＬＫと、入力シリアルデータＳＰＳ＿ＤＩと、出力シリアルデータＳＰＳ＿ＤＯとの関係を示している。なお、ここでは、ＳＰＩの「ＭＯＤＥ０」を採用した場合を例とする。
【００４３】
初期状態において、スレーブＩＣ２０に供給されるチップセレクト信号ＣＳ♯（例えばＣＳ１）はネゲート（この場合は「Ｈ」）に設定されており、スレーブＩＣ２０は、マスタＩＣ１０から同期クロック信号ＳＰＩ＿ＳＣＬＫおよび入力シリアルデータＳＰＳ＿ＤＩを受信しないようになっている。また、初期状態において、スレーブＩＣ２０に設けられたトライステートバッファ２９は、ハイインピーダンス（Ｈｉ−Ｚ）状態に設定されており、出力シリアルデータＳＰＳ＿ＤＯもハイインピーダンス（Ｈｉ−Ｚ）となっている。
【００４４】
スレーブＩＣ２０において、ネゲート（Ｈ）されている自身のチップセレクト信号ＣＳ♯（例えばＣＳ１）がアサート（Ｌ）されると、スレーブＩＣ２０は、同期クロック信号ＳＰＩ＿ＳＣＬＫおよび入力シリアルデータＳＰＳ＿ＤＩの受信を開始する。
【００４５】
チップセレクト信号ＣＳ＃がアサートされている期間（以下では、『有効期間』と称する）のうち、同期クロック信号ＳＰＩ＿ＳＣＬＫの最初の８周期（０〜７）は、データを読み出す「ＲＥＡＤ」コマンドを８ビットで指定する『コマンド期間』となる。なお、コマンドには、「ＲＥＡＤ」コマンド以外に、データを書き込む「ＷＲＩＴＥ」コマンド等が存在する。
【００４６】
コマンド期間に入力される入力シリアルデータＳＰＳ＿ＤＩには、上記コマンドが含まれている。また、コマンド期間において、出力シリアルデータＳＰＳ＿ＤＯは、初期状態と同じハイインピーダンス（Ｈｉ−Ｚ）に維持される。
【００４７】
次に、上記有効期間のうち、コマンド期間に続く同期クロック信号ＳＰＩ＿ＳＣＬＫの２４周期（８〜３１）は、読み出したいデータのアドレスを指定する『アドレス期間』となる。アドレス期間に入力される入力シリアルデータＳＰＳ＿ＤＩには、シリアル化されたマルチビット（この例では２４ビット）のアドレスが含まれている。このとき、入力シリアルデータＳＰＳ＿ＤＩは、最上位ビット（ＡＤＲＳ２３）から最下位ビット（ＡＤＲＳ０）の順に配列されている。また、アドレス期間において、出力シリアルデータＳＰＳ＿ＤＯは、コマンド期間と同じハイインピーダンス（Ｈｉ−Ｚ）に維持される。
【００４８】
次いで、上記有効期間のうち、アドレス期間に続く同期クロック信号ＳＰＩ＿ＳＣＬＫの８周期（３２〜３９）は、アドレス期間で指定されたアドレスに対応するデータを出力する『データ期間』となる。データ期間に出力される出力シリアルデータＳＰＳ＿ＤＯには、シリアル化された８ビットのデータが含まれている。このとき、出力シリアルデータＳＰＳ＿ＤＯは、図２（ｂ）にも示したように、最上位ビット（ＤＡＴＡ７）から最下位ビット（ＤＡＴＡ０）の順に配列されている。
【００４９】
なお、データ期間に入る前（アドレス期間の終了時）までに、トライステートバッファ２９のハイインピーダンス（Ｈｉ−Ｚ）の設定は解除されている。
【００５０】
本実施の形態では、動作モードが、「通常モード」に設定されている場合と「前倒しモード」に設定されている場合とで、データ期間内において、出力シリアルデータＳＰＳ＿ＤＯを構成する８ビットのシリアルデータであるＤＡＴＡ７〜ＤＡＴＡ０を出力するタイミングを異ならせている。より具体的に説明すると、「通常モード」では、同期クロック信号ＳＰＩ＿ＳＣＬＫの立ち下がりタイミングそのものに基づいて作成された立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴを基準として、出力シリアルデータＳＰＳ＿ＤＯの出力タイミングを設定している。これに対し、「前倒しモード」では、上記立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴのタイミングを、スレーブＩＣ２０内における同期クロック信号ＳＰＩ＿ＳＣＬＫの遅延（この例ではシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの２周期）分だけ前倒しするように補正した出力基準信号ＰＲＥ＿ＤＥＴＥＣＴを基準として、出力シリアルデータＳＰＳ＿ＤＯの出力タイミングを設定している。
【００５１】
［読み出し処理における同期クロック解析部の動作］
図５は、読み出し処理における同期クロック解析部２３の動作を説明するためのタイミングチャートである。図５に示す動作は、図３に示すステップ３０に対応するものである。ここで、図５は、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫと、同期クロック信号ＳＰＩ＿ＳＣＬＫと、クロックレベル信号ＣＬＫ＿ＬＶＬ（詳細は後述する）と、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴと、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴとの関係を示している。
【００５２】
同期クロック解析部２３には、スレーブＩＣ２０内に設けられたクロック発生部（図示せず）から供給されるシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫと、第１ＦＦ２１および第２ＦＦ２２を通過した同期クロック信号ＳＰＩ＿ＳＣＬＫとが入力される。ここで、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫは、同期クロック信号ＳＰＩ＿ＳＣＬＫの２倍以上となる周波数に設定されている。なお、この例では、同期クロック信号ＳＰＩ＿ＳＣＬＫの周波数（周期）が５０ＭＨｚ（２０ｎｓ）に、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの周波数（周期）が２００ＭＨｚ（５ｎｓ）に、それぞれ設定されているものとする。ただし、スレーブＩＣ２０は、同期クロック信号ＳＰＩ＿ＳＣＬＫの周波数（周期）に関する情報を有していない（未知である）ものとする。
【００５３】
同期クロック解析部２３は、同期クロック信号ＳＰＩ＿ＳＣＬＫに対し、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫを用いたオーバーサンプリングを行い、クロックレベル信号ＣＬＫ＿ＬＶＬを作成する。より具体的に説明すると、同期クロック解析部２３は、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫが「Ｌ→Ｈ」に移行する立ち上がりタイミングで、同期クロック信号ＳＰＩ＿ＳＣＬＫが「Ｈ」であればクロックレベル信号ＣＬＫ＿ＬＶＬを「Ｈ」に設定し、同期クロック信号ＳＰＩ＿ＳＣＬＫが「Ｌ」であればクロックレベル信号ＣＬＫ＿ＬＶＬを「Ｌ」に設定する、という処理を繰り返し行う。
【００５４】
また、同期クロック解析部２３は、自身が作成したクロックレベル信号ＣＬＫ＿ＬＶＬに基づき、さらに、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴと立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴとを作成する。ここで、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴおよび立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴは、初期状態および通常状態において、それぞれ「Ｌ」に設定される。そして、同期クロック解析部２３は、クロックレベル信号ＣＬＫ＿ＬＶＬが「Ｌ→Ｈ」に移行する立ち上がりタイミングで、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴを「Ｌ→Ｈ」に設定するとともに、予め決められた期間（ここではシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの１周期分）だけ「Ｈ」に維持させる処理を行う。また、同期クロック解析部２３は、クロックレベル信号ＣＬＫ＿ＬＶＬが「Ｈ→Ｌ」に移行する立ち下がりタイミングで、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴを「Ｌ→Ｈ」に設定するとともに、予め決められた期間（ここではシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの１周期分）だけ「Ｈ」に維持させる処理を行う。
【００５５】
［読み出し処理における周期検出部の動作］
図６は、読み出し処理における周期検出部２４の動作を説明するためのタイミングチャートである。図６に示す動作は、図３に示すステップ４０に対応するものである。ここで、図６には、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫと、同期クロック信号ＳＰＩ＿ＳＣＬＫと、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴと、周期カウント信号ＦＲＥＱ＿ＣＮＴ（詳細は後述する）と、周期値信号ＦＲＥＱと、入力シリアルデータＳＰＳ＿ＤＩとの関係を示している。
【００５６】
周期検出部２４には、クロック発生部（図示せず）から供給されるシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫと、同期クロック解析部２３から供給される立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴとが入力される。
【００５７】
周期検出部２４は、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴに対し、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫを用いて、まず、周期カウント信号ＦＲＥＱ＿ＣＮＴを作成する。より具体的に説明すると、周期検出部２４は、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴが「Ｌ→Ｈ」に移行する立ち上がりタイミングから次の立ち上がりタイミングまでの期間（立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴの１周期）における、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの周期の数をカウントする。また、周期検出部２４は、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴの１周期が終了すると、このカウントをリセットし、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴの次の１周期における、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの周期の数をカウントする、という処理を繰り返す。そして、周期検出部２４は、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴの１周期分のカウント数を、周期カウント信号ＦＲＥＱ＿ＣＮＴとする。続いて、周期検出部２４は、作成した周期カウント信号ＦＲＥＱ＿ＣＮＴを用いて、周期値信号ＦＲＥＱを作成する。より具体的に説明すると、周期検出部２４は、コマンド期間における同期クロック信号ＳＰＩ＿ＳＣＬＫの８周期（０〜７）のうちの最初の４周期（０〜３）の周期カウント信号ＦＲＥＱ＿ＣＮＴから、周期値信号ＦＲＥＱを決定する。
【００５８】
ここで、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴの１周期は、図６からも明らかなように、同期クロック信号ＳＰＩ＿ＳＣＬＫの１周期（２０ｎｓ）と同じである。そして、図６に示す例では、同期クロック信号ＳＰＩ＿ＳＣＬＫの１周期（２０ｎｓ）が、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの１周期（５ｎｓ）の４倍となっており、周期の数のカウント値は、４つの周期のそれぞれにおいて、「０、１、２、３」となっている。そこで、この例において、周期検出部２４は、周期カウント信号ＦＲＥＱ＿ＣＮＴのカウント値である「３」を、周期値信号ＦＲＥＱとして出力する。
【００５９】
そして、周期検出部２４における周期カウント信号ＦＲＥＱ＿ＣＮＴおよび周期値信号ＦＲＥＱの作成は、図６に示したように、入力シリアルデータＳＰＳ＿ＤＩとしてコマンド（図中には「Ｃｏｍｍａｎｄ＿ｄａｔａ７〜Ｃｏｍｍａｎｄ＿ｄａｔａ１」と表記）が入力されるコマンド期間（図４も参照）内において、コマンドの受信と平行して行われる。ただし、周期値信号ＦＲＥＱを作成するタイミングは、上記コマンド期間に限られるものではなく、図４に示すアドレス期間であってもよい。
【００６０】
なお、本実施の形態の周期検出部２４は、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴから周期カウント信号ＦＲＥＱ＿ＣＮＴおよび周期値信号ＦＲＥＱを作成しているが、立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴに代えて立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴを用いても、同じ結果が得られる。
【００６１】
［読み出し処理における出力基準信号作成部およびシフトレジスタの動作］
図７は、読み出し処理における出力基準信号作成部２５およびシフトレジスタ２８の動作を説明するためのタイミングチャートである。図７に示す動作は、図３に示すステップ５０〜ステップ１００に対応するものである。ここで、図７には、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫと、同期クロック信号ＳＰＩ＿ＳＣＬＫ（１）と、同期クロック信号ＳＰＩ＿ＳＣＬＫ（２）と、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴと、出力カウント信号ＰＲＥ＿ＣＮＴ（詳細は後述する）と、出力基準信号ＰＲＥ＿ＤＥＴＥＣＴと、出力シリアルデータＳＰＳ＿ＤＯ（Ａ）と、出力シリアルデータＳＰＳ＿ＤＯ（Ｂ）との関係を示している。
【００６２】
なお、図７に示す同期クロック信号ＳＰＩ＿ＳＣＬＫ（１）は、マスタＩＣ１０から第１ＦＦ２１（図１参照）に入力される同期クロック信号ＳＰＩ＿ＳＣＬＫを意味している。一方、図７に示す同期クロック信号ＳＰＩ＿ＳＣＬＫ（２）は、第１ＦＦ２１および第２ＦＦ２２を介して同期クロック解析部２３（図１参照）に入力される、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの２周期分だけ遅延した同期クロック信号ＳＰＩ＿ＳＣＬＫを意味している。ここで、本実施の形態では、同期クロック解析部２３において作成される立ち上がり検知信号ＵＰ＿ＤＥＴＥＣＴおよび立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴが、同期クロック信号ＳＰＩ＿ＳＣＬＫ（１）ではなく、同期クロック信号ＳＰＩ＿ＳＣＬＫ（２）から作成されていることになる。
【００６３】
また、図７に示す出力シリアルデータＳＰＳ＿ＤＯ（Ａ）は、モード信号ＭＯＤＥ＿ＳＥＮＤが『前倒しモード』に設定されている場合（図３に示すステップ６０で「ＹＥＳ」）における出力シリアルデータＳＰＳ＿ＤＯを意味している。一方、図７に示す出力シリアルデータＳＰＳ＿ＤＯ（Ｂ）は、モード信号ＭＯＤＥ＿ＳＥＮＤが『通常モード』に設定されている場合（図３に示すステップ６０で「ＮＯ」）における出力シリアルデータＳＰＳ＿ＤＯを意味している。ここで、『前倒しモード』では、出力基準信号ＰＲＥ＿ＤＥＴＥＣＴに同期させて出力シリアルデータＳＰＳ＿ＤＯ（Ａ）の出力を行う。一方、『通常モード』では、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴに同期させて出力シリアルデータＳＰＳ＿ＤＯ（Ｂ）の出力を行う。
【００６４】
出力基準信号作成部２５には、クロック発生部（図示せず）から供給されるシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫと、同期クロック解析部２３から供給される立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴと、周期検出部２４から供給される周期値信号ＦＲＥＱとが入力される。
【００６５】
出力基準信号作成部２５は、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴに対し、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫを用いて、まず、出力カウント信号ＰＲＥ＿ＣＮＴを作成する。より具体的に説明すると、出力基準信号作成部２５は、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴが「Ｌ→Ｈ」に移行する立ち上がりタイミングから次の立ち上がりタイミングまでの期間（立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴの１周期）における、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの周期の数をカウントする。また、出力基準信号作成部２５は、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴの１周期が終了すると、このカウントをリセットし、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴの次の１周期における、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの周期の数をカウントする、という処理を繰り返す。そして、出力基準信号作成部２５は、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴの１周期分のカウント数を、周期カウント信号ＦＲＥＱ＿ＣＮＴとする。
【００６６】
また、出力基準信号作成部２５は、周期値信号ＦＲＥＱ（この例では、「３」）と、このスレーブＩＣ２０における同期クロック信号ＳＰＩ＿ＳＣＬＫの遅延時間（この例では、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの「２」周期分）とを用い、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴの前倒し量に相当する、同期クロック信号ＳＰＩ＿ＳＣＬＫの周期の数（前倒し周期数）を求める。この例では、前倒し周期数＝周期値信号ＦＲＥＱ−同期クロック信号ＳＰＩ＿ＳＣＬＫの遅延時間、すなわち、３−２＝１となる。
【００６７】
そして、出力基準信号作成部２５は、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴに対し、上述した前倒し周期数だけタイミングを前倒しした出力基準信号ＰＲＥ＿ＤＥＴＥＣＴを作成する。より具体的に説明すると、出力基準信号作成部２５は、周期カウント信号ＦＲＥＱ＿ＣＮＴのカウント値が、上記前倒し周期数（＝１）となった後のタイミングで、出力基準信号ＰＲＥ＿ＤＥＴＥＣＴを「Ｌ→Ｈ」に設定するとともに、予め決められた期間（ここではシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの１周期分）だけ「Ｈ」に維持させる処理を行う。そして、この例において、出力基準信号作成部２５は、同期クロック信号ＳＰＩ＿ＳＣＬＫのうち、データ期間における最初の周期（この例では３２周期目）の１つ前となる、アドレス期間における最後の周期（この例では３１周期目）を基準として、出力基準信号ＰＲＥ＿ＤＥＴＥＣＴを作成する。この例における出力基準信号ＰＲＥ＿ＤＥＴＥＣＴは、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴと比べて、同期クロック信号ＳＰＩ＿ＳＣＬＫの２周期分だけ、前倒しされた状態となる。
【００６８】
シフトレジスタ２８には、マルチプレクサ２６から供給される立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴ（通常モードの場合）または出力基準信号ＰＲＥ＿ＤＥＴＥＣＴ（前倒しモードの場合）と、内部回路２７から供給される出力パラレルデータＤＡＴＡ＿ＯＵＴ［７：０］とが入力される。
【００６９】
前倒しモードの場合、シフトレジスタ２８は、出力パラレルデータＤＡＴＡ＿ＯＵＴ［７：０］をシリアル化したＤＡＴＡ７〜ＤＡＴＡ０（出力シリアルデータＳＰＳ＿ＤＯ）を、出力基準信号ＰＲＥ＿ＤＥＴＥＣＴが「Ｌ→Ｈ」に移行する立ち上がりタイミングで順次出力する。
【００７０】
一方、通常モードの場合、シフトレジスタ２８は、出力パラレルデータＤＡＴＡ＿ＯＵＴ［７：０］をシリアル化したＤＡＴＡ７〜ＤＡＴＡ０（出力シリアルデータＳＰＳ＿ＤＯ）を、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴが「Ｌ→Ｈ」に移行する立ち上がりタイミングで順次出力する。
【００７１】
図７に示す例では、マスタＩＣ１０が出力する同期クロック信号ＳＰＩ＿ＳＣＬＫ（１）と、スレーブＩＣ２０の内部で使用される同期クロック信号ＳＰＩ＿ＳＣＬＫ（２）とに、遅延に起因するずれが生じている。そして、図７に示す例では、『通常モード』の場合に、同期クロック信号ＳＰＩ＿ＳＣＬＫ（１）に対して出力シリアルデータＳＰＳ＿ＤＯ（Ｂ）が遅れて出力されることにより、マスタＩＣ１０が、ＤＡＴＡ７〜ＤＡＴＡ０の内容を、誤って把握するおそれがある。これに対し、図７に示す例では、『前倒しモード』の場合に、同期クロック信号ＳＰＩ＿ＳＣＬＫ（１）に対して出力シリアルデータＳＰＳ＿ＤＯ（Ａ）が遅れを取り戻した状態で（前倒しされた状態）で出力されることにより、マスタＩＣ１０が、ＤＡＴＡ７〜ＤＡＴＡ０の内容を、正しく把握することが可能となる。
【００７２】
［その他］
なお、本実施の形態では、同期クロック信号ＳＰＩ＿ＳＣＬＫの周波数が、ＳＰＩとしては比較的高めであるために、同期クロック信号ＳＰＩ＿ＳＣＬＫの遅延が問題となっていた。ただし、同期クロック信号ＳＰＩ＿ＳＣＬＫの周波数が低めである場合には、周期が長くなる分、マスタＩＣ１０が、ＤＡＴＡ７〜ＤＡＴＡ０の内容を、誤って把握するおそれが減る。したがって、このような場合には、スレーブＩＣ２０を、『前倒しモード』ではなく、『通常モード』に設定するとよい。これ以外に、例えば内部での同期クロック信号ＳＰＩ＿ＳＣＬＫの遅延が少ない場合にも、スレーブＩＣ２０を、『前倒しモード』ではなく、『通常モード』に設定するとよい。
【００７３】
また、ここでは、スレーブＩＣ２０内で、同期クロック信号ＳＰＩ＿ＳＣＬＫがシステムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの２周期分だけ遅延する場合を例として説明を行ったが、同期クロック信号ＳＰＩ＿ＳＣＬＫの遅延は、マスタＩＣ１０とスレーブＩＣ２０とを接続する外部配線、スレーブＩＣ２０内に設けられた内部配線および各種回路等でも生じる。このため、同期クロック信号ＳＰＩ＿ＳＣＬＫの遅延量は、システムクロック信号Ｓｙｓｔｅｍ＿ＣＬＫの２周期分には限られないし、同期クロック信号ＳＰＩ＿ＳＣＬＫの１周期以内にも限られない。
【００７４】
さらに、ここでは、１つのスレーブＩＣ２０に着目して説明を行ったが、図１に示したように、データ送受信システム１が複数のスレーブＩＣ２０を有する場合には、各スレーブＩＣ２０で同期クロック信号ＳＰＩ＿ＳＣＬＫの遅延量が異なっていることが多い。このため、各スレーブＩＣ２０において、自身の同期クロック信号ＳＰＩ＿ＳＣＬＫの遅延量に応じた前倒し量を設定するとよい。また、各スレーブＩＣ２０の特性によっては、データ送受信システム１において、あるスレーブＩＣ２０には『前倒しモード』を設定し、別のスレーブＩＣ２０には『通常モード』を設定する、という事態も生じ得る。
【００７５】
ここで、ＳＰＩにおいて、同期クロック信号ＳＰＩ＿ＳＣＬＫの遅延が問題となるのは、上述した「ＲＥＡＤ」コマンドなど、有効期間内において、マスタＩＣ１０からスレーブＩＣ２０が入力シリアルデータＳＰＳ＿ＤＩを受信した後、スレーブＩＣ２０からマスタＩＣ１０に出力シリアルデータＳＰＳ＿ＤＯを送信（返信）する必要がある場合である。したがって、例えば「ＷＲＩＴＥ」コマンドなど、有効期間内において、マスタＩＣ１０からスレーブＩＣ２０が入力シリアルデータＳＰＳ＿ＤＩを受信した後、スレーブＩＣ２０からマスタＩＣ１０に出力シリアルデータＳＰＳ＿ＤＯを送信（返信）する必要がない場合には、立ち下がり検知信号ＤＷ＿ＤＥＴＥＣＴを用いればよく、出力基準信号ＰＲＥ＿ＤＥＴＥＣＴは不要である。
【００７６】
なお、本実施の形態では、データ送受信システム１を、画像形成装置の制御系に適用した場合を例として説明を行ったが、これに限られるものではない。このデータ送受信システム１を、例えばマスタＩＣ１０をＣＰＵ（Central Processing Unit）で構成し、スレーブＩＣ２０をＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）で構成したコンピュータ装置に適用してもよい。
【００７７】
また、本実施の形態では、マスタＩＣ１０とスレーブＩＣ２０とを接続するシリアルバスとして、ＳＰＩを使用する場合を例として説明を行ったが、これに限られるものではない。すなわち、シリアルデータと同期クロックとを異なる信号線で送受信するものであればよく、例えばＭｉｃｒｏｗｉｒｅインタフェースを採用したデータ送受信システム１に適用してもかまわない。
【符号の説明】
【００７８】
１…データ送受信システム、１０…マスタＩＣ、２０…スレーブＩＣ、２１…第１フリップフロップ、２２…第２フリップフロップ、２３…同期クロック解析部、２４…周期検出部、２５…出力基準信号作成部、２６…マルチプレクサ、２７…内部回路、２８…シフトレジスタ、２９…トライステートバッファ
【図１】
2018045409.tif 000003
【図２】
2018045409.tif 000004
【図３】
2018045409.tif 000005
【図４】
2018045409.tif 000006
【図５】
2018045409.tif 000007
【図６】
2018045409.tif 000008
【図７】
2018045409.tif 000009