(57)【要約】【課題】シリアルデータの入力遅延を計測して、データ転送レートを下げずにデータ通信を行なうことが可能な通信装置を提供すること。【解決手段】イニシエータは、ターゲット２に対してシリアルデータの入力遅延検出モードであることを示すＡＤＪＵＳＴ信号を出力するＳＩＯ制御部２０と、ターゲット２から出力されるシリアルデータの入力遅延値を検出する入力遅延検出回路５３と、入力遅延検出回路５３によって検出された入力遅延値に基づいて、ターゲット２から出力されるシリアルデータのラッチタイミングを調整する遅延調整回路５７とを含む。また、ターゲット２は、ＳＩＯ制御部２０からシリアルデータの入力遅延検出モードであることを示す信号を受けたときに、入力遅延値検出用のシリアルデータを出力するデータ出力回路２０２を含む。したがって、データ転送レートを下げずにデータ通信を行なうことが可能となる。【選択図】図９
2011010178.tif 000002
【特許請求の範囲】
【請求項１】
クロックに同期してシリアルデータを送受信するイニシエータとターゲットとを含んだ通信装置であって、
前記イニシエータは、前記ターゲットに対してシリアルデータの入力遅延検出モードであることを示す信号を出力する制御手段と、
前記ターゲットから出力されるシリアルデータの入力遅延値を検出する入力遅延検出手段と、
前記入力遅延検出手段によって検出された入力遅延値に基づいて、前記ターゲットから出力されるシリアルデータのラッチタイミングを調整する遅延調整手段とを含み、
前記ターゲットは、前記制御手段からシリアルデータの入力遅延検出モードであることを示す信号を受けたときに、入力遅延値検出用のシリアルデータを出力するデータ出力手段を含む、通信装置。
【請求項２】
前記シリアルクロックは、サンプルクロックの整数倍の周波数を有するクロック信号であり、
前記入力遅延検出手段は、前記ターゲットから出力されるシリアルデータを前記サンプルクロックでサンプリングする第１のフリップフロップと、
前記第１のフリップフロップから出力される信号をさらに前記サンプルクロックでサンプリングする第２のフリップフロップと、
前記第１のフリップフロップから出力される信号と、前記第２のフリップフロップから出力される信号との不一致を検出するデータ不一致検出回路と、
前記データ不一致検出回路によってデータ不一致が検出された時間を計測して前記入力遅延値とする遅延時間計測回路とを含む、請求項１記載の通信装置。
【請求項３】
前記制御手段は、前記入力遅延検出手段によって検出された入力遅延値を格納する第１のレジスタを含み、
前記通信装置はさらに、前記第１のレジスタに格納された入力遅延値を読み出して、前記遅延調整手段を制御するプロセッサを含む、請求項１または２記載の通信装置。
【請求項４】
前記制御手段はさらに、前記シリアルデータをラッチするタイミング信号を前記サンプルクロックの何クロック分遅らすかを設定する第２のレジスタと、
前記シリアルデータをラッチするタイミング信号の周期を前記サンプルクロックの何クロックとするかを設定する第３のレジスタとを含み、
前記遅延調整手段は、前記プロセッサによって設定された前記第２のレジスタおよび第３のレジスタの値に応じて前記タイミング信号を生成する、請求項３記載の通信装置。
【請求項５】
前記通信装置はさらに、駆動能力が異なる複数の出力回路を含み、
前記制御手段はさらに、想定される入力遅延値よりも大きな値が前記プロセッサによって設定される第４のレジスタを含み、
前記制御手段は、前記入力遅延検出手段によって検出された入力遅延値が前記第４のレジスタに設定された値と等しくなったときに、前記複数の出力手段を切り替えて駆動能力が高い出力手段によって前記シリアルクロックを駆動させる、請求項４記載の通信装置。
【請求項６】
前記制御手段はさらに、前記前記入力遅延検出手段によって検出された入力遅延値が前記第４のレジスタに設定された値と等しくなったときに設定される第５のレジスタと、
前記複数の出力手段の切替えを制御する第６のレジスタとを含み、
前記プロセッサは、前記第５のレジスタが設定されたのを検出して、前記第６のレジスタに値を設定して前記複数の出力手段を切り替える、請求項５記載の通信装置。
【請求項７】
前記制御手段はさらに、想定される入力遅延値よりも大きな値が前記プロセッサによって設定される第４のレジスタと、
前記入力遅延検出手段によって検出された入力遅延値が前記第４のレジスタに設定された値と等しくなったときに、通信エラーが発生したことを前記プロセッサに通知するための情報が設定される第５のレジスタとを含む、請求項４記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアルでデータ通信を行なう技術に関し、特に、受信時におけるシリアルデータの入力遅延を計測して、データ転送レートを下げずにデータ通信を行なうことが可能な通信装置に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータなどの情報処理装置の高機能化、多機能化が進んでおり、様々な機能ブロックが搭載されるようになってきている。そのような機能ブロックの１つとして、クロック同期式シリアルＩ／Ｏ（Input/Output）を挙げることができる。下記の非特許文献１は、クロック同期式シリアルＩ／Ｏの１つであるシリアルＧＰＩＯ（ＳＧＰＩＯ）について規定している。
【０００３】
このようなクロック同期式シリアルＩ／Ｏにおいては、接続されるデバイスや、コネクタ、ケーブルなどの形態によって、受信時にシリアルデータ入力遅延（レイテンシ）が発生する。そのため、入力遅延が大きくなると、シリアルデータ転送速度を遅くして接続しなければならなくなる。これに関連する技術として、下記の特許文献１〜３に開示された発明がある。
【０００４】
特許文献１は、受信データ遅延に対してデータ転送レートを落とすことなくデータ通信を実現した半導体集積回路装置およびシステムの提供を目的とする。クロック生成回路により基本クロック信号を分周して伝送クロック信号を生成して外部デバイスに向けて出力し、入力端子に上記出力端子を通して外部デバイスに伝えられた伝送クロック信号に対応して上記外部デバイスからの送信データが入力される。かかる入力端子における受信データを取り込む入力回路として、上記基本クロックのエッジと上記伝送クロックを計数するカウンタ回路のカウンタ出力との組合せにより特定されるタイミング信号を用いる。
【０００５】
特許文献２は、動作環境の変動に係らず、高周波数の駆動クロック信号によって同期式ＤＲＡＭからデータを読み出すことができる情報処理装置の提供を目的とする。入力されたクロックに同期させて、１クロック期間ごとにデータを出力する記憶部と、記憶部にクロックを入力し、データを受け取る制御部とを備える。制御部から出力され記憶部に入力される直前の駆動クロックを引き戻し、データを取り込むクロック信号として用いる。これにより、記憶部からのデータと、それを取り込むためのクロックのディレイとの差を小さく抑える。
【０００６】
特許文献３は、テスト装置のピン間スキューによる制限を受けることなく、高い精度でタイミングずれを除去することができるタイミング調整回路の提供を目的とする。タイミング調整回路に、データ入力回路のレプリカ回路を設ける。レプリカ回路は、初段回路とラッチ回路とを含む。初段回路は、外部クロック信号を受け参照クロック信号を出力する。クロックドライバ６４からの内部クロック信号に同期して、参照クロック信号をラッチし、外部出力端子へ位相進み遅れ信号として出力する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−３５４３５３号公報
【特許文献２】特開２００１−２９０６９８号公報
【特許文献３】特開２００８−２１１８０９号公報
【非特許文献】
【０００８】
【非特許文献１】SFF Committee SFF-8485 Specification for Serial GPIO (SGPIO) Bus
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述のように、受信時のシリアルデータ入力遅延を考慮してデータ転送速度を調整しなければならない。この場合、従来では、受信データ入力遅延時間の計測および調整は、製品設計段階において入力遅延のシミュレーションを行なうか、または製品評価段階においてオシロスコープなどの計測機器を用いて計測を行ない、そのシミュレーション結果または計測結果に基づいてシリアルクロック（ＳＣＬＫ）の周波数を変更することにより行なわれていた。
【００１０】
しかしながら、製造ばらつきや、ＩｎｉｔｉａｔｏｒとＴａｒｇｅｔとの間の接続形態の変化などにより、製品出荷後に実際の入力遅延時間が想定した値よりも大きくなった場合には対応ができない。そのため、通信エラーが発生して製品として正常に動作しなくなったり、最悪の場合には市場クレームに発展したりするといった問題があった。
【００１１】
また、シリアルデータを正常にラッチするためには、ＳＣＬＫ周期におけるサイクル時間を遅延時間よりも大きくする必要があり、ＳＣＬＫの周波数を下げざるを得なくなる。これによって、データ転送レートが低下するといった問題もあった。
【００１２】
また、現在、クロック同期シリアル通信は様々な製品に搭載されており、製品によってはＬＥＤ（Light Emitted Device）表示や、液晶ディスプレイ表示用基板のインタフェースにクロック同期シリアル通信が採用されていることもある。そのため、製品毎に接続する基板が変更されたり、オプション基板として追加されたりすることが想定される。
【００１３】
この場合、製品のメイン基板にＩｎｉｔｉａｔｏｒがあり、メイン基板に接続される基板にＴａｒｇｅｔがあるといった形態になる。このような製品形態においては、エンドユーザがオプション基板を購入して接続することになるため、遅延時間の再調整が必要になる可能性があるといった問題があった。
【００１４】
さらには、メイン基板に接続される基板の故障についても、インタフェース信号の断線などによるＴａｒｇｅｔの通信異常しか検出することができず、上述のようなシリアルデータ入力遅延の増大によるデータ転送信号の品質悪化を検出することができない。
【００１５】
本発明は、上記問題点を解決するためになされたものであり、その目的は、シリアルデータの入力遅延を計測して、データ転送レートを下げずにデータ通信を行なうことが可能な通信装置を提供することである。
【課題を解決するための手段】
【００１６】
本発明の一実施例によれば、クロックに同期してシリアルデータを送受信するイニシエータとターゲットとを含んだ通信装置が提供される。イニシエータは、ターゲットに対してシリアルデータの入力遅延検出モードであることを示すＡＤＪＵＳＴ信号を出力するＳＩＯ制御部と、ターゲットから出力されるシリアルデータの入力遅延値を検出する入力遅延検出回路と、入力遅延検出回路によって検出された入力遅延値に基づいて、ターゲットから出力されるシリアルデータのラッチタイミングを調整する遅延調整回路とを含む。また、ターゲットは、ＳＩＯ制御部からシリアルデータの入力遅延検出モードであることを示す信号を受けたときに、入力遅延値検出用のシリアルデータを出力するデータ出力回路を含む。
【発明の効果】
【００１７】
この実施例によれば、入力遅延検出回路がターゲットから出力されるシリアルデータの入力遅延値を検出し、遅延調整回路がターゲットから出力されるシリアルデータのラッチタイミングを調整するので、データ転送レートを下げずにデータ通信を行なうことが可能となる。
【図面の簡単な説明】
【００１８】
【図１】一般的な情報処理装置におけるクロック同期シリアルＩ／Ｏの接続例を説明するための図である。
【図２】Ｉｎｉｔｉａｔｏｒ３００の内部構成を示すブロック図である。
【図３】図２に示すＩｎｉｔｉａｔｏｒ３００の動作を説明するためのタイミングチャートである。
【図４】ＳＩＯブロック３１０内のデータ受信制御部３５０およびＴａｒｇｅｔ４００の構成をさらに詳細に説明するためのブロック図である。
【図５】図４に示すＩｎｉｔｉａｔｏｒ３００のＳＩＯブロック３１０およびＴａｒｇｅｔ４００において発生するシリアルデータの遅延時間を説明するためのタイミングチャートである。
【図６】本発明の第１の実施の形態におけるクロック同期シリアルＩ／Ｏの接続例を説明するための図である。
【図７】本発明の第１の実施の形態におけるＩｎｉｔｉａｔｏｒ１の内部構成を示すブロック図である。
【図８】本発明の第１の実施の形態におけるＩｎｉｔｉａｔｏｒ１の動作を説明するためのタイミングチャートである。
【図９】本発明の第１の実施の形態におけるＳＩＯブロック１０内のデータ受信制御部５０およびＴａｒｇｅｔ２の構成をさらに詳細に説明するためのブロック図である。
【図１０】図９に示す入力遅延検出回路５３の内部構成を示すブロック図である。
【図１１】図１０に示す入力遅延検出回路５３の入力遅延検出動作を説明するためのタイミングチャートである。
【図１２】図１０に示す計測制御シーケンサ６５の処理手順を説明するためのフローチャートである。
【図１３】図９に示すデータラッチトリガ回路５２をさらに詳細に説明するためのブロック図である。
【図１４】図１３に示すデータラッチトリガ回路５２の動作を説明するためのタイミングチャートである。
【図１５】図１３に示すデータラッチトリガ回路５２の処理手順を説明するためのフローチャートである。
【図１６】本発明の第２の実施の形態におけるＩｎｉｔｉａｔｏｒのＳＩＯブロックの詳細を説明するための図である。
【図１７】本発明の第２の実施の形態における入力遅延検出回路９１の内部構成を説明するためのブロック図である。
【図１８】図１７に示す入力遅延検出回路９１のドライブ切替え検出動作を説明するためのタイミングチャートである。
【図１９】図１７に示す計測制御シーケンサ１１４の処理手順を説明するためのフローチャートである。
【図２０】本発明の第３の実施の形態におけるＩｎｉｔｉａｔｏｒのＳＩＯブロックの詳細を説明するための図である。
【図２１】本発明の第３の実施の形態における入力遅延検出回路１３１の内部構成を説明するためのブロック図である。
【図２２】図２１に示す入力遅延検出回路１３１のシリアル通信エラー検出動作を説明するためのタイミングチャートである。
【図２３】図２１に示す計測制御シーケンサ１５１の処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
図１は、一般的な情報処理装置におけるクロック同期シリアルＩ／Ｏの接続例を説明するための図である。図１は、Ｉｎｉｔｉａｔｏｒ３００と、Ｔａｒｇｅｔ４００とが１：１で接続されている場合を示している。Ｉｎｉｔｉａｔｏｒ３００から出力されるＳＬＯＡＤ信号、ＳＣＬＫ信号およびＳＤＡＴＡ＿ＯＵＴ信号が、コネクタやケーブルを介してＴａｒｇｅｔ４００に入力される。同様に、Ｔａｒｇｅｔ４００から出力されるＳＤＡＴＡ＿ＩＮ信号が、コネクタやケーブルを介してＩｎｉｔｉａｔｏｒ３００に入力される。
【００２０】
図２は、Ｉｎｉｔｉａｔｏｒ３００の内部構成を示すブロック図である。このＩｎｉｔｉａｔｏｒ３００は、ＳＩＯブロック３１０と、ＣＰＵ３６０とがＣＰＵバス３７０を介して接続される。
【００２１】
ＳＩＯブロック３１０は、ＳＩＯデータ転送を制御するＳＩＯ制御部３２０と、シリアルクロックの周波数を切り替えるシリアルクロック制御部３３０と、データ送信を制御するデータ送信制御部３４０と、データ受信を制御するデータ受信制御部３５０とを含む。
【００２２】
また、ＳＩＯ制御部３２０は、ＳＩＯ制御レジスタ３２４、送信データレジスタ３２５、受信データレジスタ３２６などで構成されるレジスタ群３２２と、レジスタ群３２２をＣＰＵバス３７０に接続するＣＰＵバスＩ／Ｆ（Interface）３２３と、ＳＩＯ制御レジスタ３２４に設定された内容に基づいてデータ送受信の開始を指示し、データ送受信の終了を検知するＳＩＯ送受信制御部３２１とを含む。
【００２３】
ＳＩＯ制御レジスタ３２４は、ＳＩＯデータ転送ビット長を指定するｄａｔａ＿ｌｅｎビットと、シリアルクロック周波数を設定するｓｃｌｋ＿ｓｅｌビットと、データ転送の開始を指示するｓｉｏ＿ｅｎ＿ｒｅｇビットとを含む。なお、図示していないが、レジスタ群３２２には、データ転送が終了したことを示すレジスタも含まれる。
【００２４】
ＣＰＵ３６０によってＳＩＯ制御レジスタ３２４のｓｃｌｋ＿ｓｅｌビットにシリアルクロック周波数が設定されると、ＳＩＯ送受信制御部３２１は、シリアルクロック制御部３３０に対してｓｃｌｋ＿ｓｅｌ信号を出力する。
【００２５】
シリアルクロック制御部３３０は、ＳＩＯ送受信制御部３２１からｓｃｌｋ＿ｓｅｌ信号を受けると、システムクロックｓｙｓｃｌｋを分周して設定された周波数のシリアルクロックを生成し、ｓｉｏ＿ｓｔａｒｔ信号がアサートされたときにＳＣＬＫ信号としてＴａｒｇｅｔ４００に出力する。ｓｉｏ＿ｓｔａｒｔ信号がネゲートされると、シリアルクロック制御部３３０は、ＳＣＬＫ信号に“Ｈ”レベルを出力する。また、シリアルクロック制御部３３０は、内部シリアルクロック信号としてデータ送信制御部３４０にｔｘ＿ｃｌｋ信号を出力し、データ受信制御部３５０にｒｘ＿ｃｌｋ信号を出力する。
【００２６】
ＣＰＵ３６０が送信データレジスタ３２５に送信データを設定すると、ＳＩＯ送受信制御部３２１は、ｔｘ＿ｄａｔａ信号によってその送信データをデータ送信制御部３４０に出力する。そして、ＣＰＵ３６０が、データ転送開始を示すｓｉｏ＿ｅｎ＿ｒｅｇに“１”を設定すると、ＳＩＯ送受信制御部３２１は、データ送信制御部３４０に対してデータ送信開始を示すｔｘ＿ｓｔａｒｔ信号を出力する。
【００２７】
データ送信制御部３４０は、ＣＰＵ３６０がＳＩＯ制御レジスタ３２４に設定したデータ転送ビット長（ｄａｔａ＿ｌｅｎ）および送信データ（ｔｘ＿ｄａｔａ）を保持している。そして、ＳＩＯ送受信制御部３２１から出力されるｔｘ＿ｓｔａｒｔ信号が“Ｈ”レベルになるのを検出すると、ｔｘ＿ｃｌｋ信号の立ち下がりエッジに同期して送信データ（ｔｘ＿ｄａｔａ）をＬＳＢビットから順にＳＤＡＴＡ＿ＯＵＴ信号としてＴａｒｇｅｔ４００に出力する。
【００２８】
そして、データ送信制御部３４０は、データ転送ビット長分のデータの送信を終了すると、ｔｘ＿ｅｎｄ信号にｓｙｓｃｌｋ信号の１クロック分の“Ｈ”レベルのパルスを出力して、ＳＩＯ送受信制御部３２１にデータ送信の終了を通知する。
【００２９】
なお、ＣＰＵ３６０は、ＳＩＯ制御レジスタ３２４に値を設定することにより、ＬＳＢビットから順にデータを送信するか、ＭＳＢビットから順にデータを送信するかを切り替えることができる。
【００３０】
ＣＰＵ３６０が、データ転送開始を示すｓｉｏ＿ｅｎ＿ｒｅｇに“１”を設定すると、ＳＩＯ送受信制御部３２１は、データ受信制御部３５０に対してデータ受信開始を示すｒｘ＿ｓｔａｒｔ信号を出力する。
【００３１】
データ受信制御部３５０は、ＣＰＵ３６０がＳＩＯ制御レジスタ３２４に設定したデータ転送ビット長（ｄａｔａ＿ｌｅｎ）を保持している。そして、ＳＩＯ送受信制御部３２１から出力されるｒｘ＿ｓｔａｒｔ信号が“Ｈ”レベルになるのを検出すると、Ｔａｒｇｅｔ４００から出力されるＳＤＡＴＡ＿ＩＮ信号をｒｘ＿ｃｌｋ信号の立ち上がりエッジに同期してラッチすることによりシリアルデータを受信する。このとき、データ受信制御部３５０は、ＬＳＢビットから順にシリアルデータを受信する。
【００３２】
そして、データ受信制御部３５０は、データ転送ビット長分のシリアルデータをラッチすると、ｒｘ＿ｅｎｄ信号にｓｙｓｃｌｋ信号の１クロック分の“Ｈ”レベルのパルスを出力し、ラッチしたシリアルデータをパラレルデータに変換してｒｘ＿ｄａｔａ信号に出力する。ＳＩＯ送受信制御部３２１は、ｒｘ＿ｄａｔａ信号によって受信データを受けると、受信データレジスタ３２６に受信データを設定する。これによって、ＣＰＵ３６０が受信データレジスタ３２６から受信データを読み出すことができる。
【００３３】
なお、ＣＰＵ３６０は、ＳＩＯ制御レジスタ３２４に値を設定することにより、ＬＳＢビットから順にデータを受信するか、ＭＳＢビットから順にデータを受信するかを切り替えることができる。
【００３４】
図３は、図２に示すＩｎｉｔｉａｔｏｒ３００の動作を説明するためのタイミングチャートである。図３においては、シリアルクロックＳＣＬＫの周波数がｓｙｓｃｌｋを２分周した周波数であり、データ転送ビット長が８ビットの場合を示している。図３においては、Ｉｎｉｔｉａｔｏｒ３００がＴａｒｇｅｔ４００との間で、ＳＤＡＴＡ＿ＯＵＴを介してのデータの送信と、ＳＤＡＴＡ＿ＩＮを介しての別のデータの受信とを並列に行なう例を示している。当然のこととして、データの送信と別データの受信とは夫々単独に行なうことも可能である。
【００３５】
まず、Ｔ１において、ＣＰＵ３６０がＳＩＯ制御レジスタ３２４のｓｉｏ＿ｅｎ＿ｒｅｇビットに“１”を設定すると、データ転送が開始される。
【００３６】
ＳＩＯ送受信制御部３２１は、ｓｉｏ＿ｅｎ＿ｒｅｇビットに“１”が設定されたのを検出すると、Ｔ２において、データ送信制御部３４０に対してｓｙｓｃｌｋの１クロック分の“Ｈ”レベルのパルスをｔｘ＿ｓｔａｒｔ信号に出力し、データ受信制御部３５０に対してｓｙｓｃｌｋの１クロック分の“Ｈ”レベルのパルスをｒｘ＿ｓｔａｒｔ信号に出力する。そして、ＳＩＯ送受信制御部３２１は、Ｔａｒｇｅｔ４００に対してＳＣＬＫの１クロック分の“Ｌ”レベルのパルスをＳＬＯＡＤ信号に出力する。
【００３７】
Ｔ３において、ＳＬＯＡＤ信号の立ち上がりと同時に、ＳＩＯ送受信制御部３２１は、ｓｉｏ＿ｓｔａｒｔ信号を“Ｈ”レベルにアサートして、シリアルクロック制御部３３０に対してＳＣＬＫ信号の出力を指示する。このとき、ＳＩＯ送受信制御部３２１は、ｓｃｌｋ＿ｓｅｌ信号によってＳＣＬＫの周波数としてｓｙｓｃｌｋを２分周した周波数とするよう指示する。
【００３８】
Ｔ４において、Ｔａｒｇｅｔ４００に対するＳＣＬＫ信号の出力が開始されると、データ送信制御部３４０は、ｔｘ＿ｃｌｋ信号の立ち下がりに同期して、ＳＣＬＫの立ち下がりのタイミングにＳＤＡＴＡ＿ＯＵＴ信号によりシリアルデータをＬＳＢから順に送信する。また、Ｔ５において、データ受信制御部３５０は、ｒｘ＿ｃｌｋ信号の立ち上がりに同期して、ＳＣＬＫの立ち上がりのタイミングにＳＤＡＴＡ＿ＩＮ信号によりシリアルデータをＬＳＢから順に受信する。
【００３９】
Ｔ６において、８ビットのデータ送信が終了すると、データ送信制御部３４０は、ＳＩＯ送受信制御部３２１に対してデータ送信完了を示すｔｘ＿ｅｎｄ信号を“Ｈ”レベルにアサートする。また、８ビットのデータ受信が終了すると、データ受信制御部３５０は、ＳＩＯ送受信制御部３２１に対してデータ受信完了を示すｒｘ＿ｅｎｄ信号を“Ｈ”レベルにアサートする。
【００４０】
Ｔ７において、ＳＩＯ送受信制御部３２１はｔｘ＿ｅｎｄ信号とｒｘ＿ｅｎｄ信号の両方が“Ｈ”レベルにアサートされたことに応じて、シリアルクロック制御部３３０に対してｓｉｏ＿ｓｔａｒｔ信号を“Ｌ”レベルにネゲートし、ＳＣＬＫの出力を停止させる。Ｔ８において、シリアルクロック制御部３３０は、Ｔａｒｇｅｔ４００に対してＳＬＯＡＤ信号に“Ｌ”レベルを出力し、８ビットのデータ受信が完了したことを通知する。
【００４１】
なお、ＳＩＯ送受信制御部３２１がｓｉｏ＿ｓｔａｒｔ信号をネゲートするまでに、ＣＰＵ３６０が次のデータ転送開始を指示していれば、Ｔ８において、ｔｘ＿ｓｔａｒｔ信号およびｒｘ＿ｓｔａｒｔ信号がアサートされ、Ｔ９以降において、ＳＣＬＫの出力と次の８ビットのデータ転送が連続して行なわれる。
【００４２】
図４は、ＳＩＯブロック３１０内のデータ受信制御部３５０およびＴａｒｇｅｔ４００の構成をさらに詳細に説明するためのブロック図である。データ受信制御部３５０は、データ受信の開始および終了を制御する受信制御シーケンサ３５１と、受信データのデータラッチタイミングのトリガ（ｄａｔａ＿ｅｎ）信号を生成するデータラッチトリガ回路３５３と、データラッチトリガ回路３５３から出力されるｄａｔａ＿ｅｎ信号によって受信データをラッチするデータラッチ回路３５４と、データラッチ回路３５４によってラッチされたシリアルデータ（ｓｄａｔａ＿ｉｎ）をパラレルデータに変換して受信データバッファに格納するシリアル・パラレル変換回路３５２とを含む。
【００４３】
また、受信制御シーケンサ３５１は、ＣＰＵ３６０がＳＩＯ制御レジスタ３２４に設定した受信データビット長（ｄａｔａ＿ｌｅｎ）を保持してカウントする受信データビットカウンタ３５５を有する。受信制御シーケンサ３５１は、ＳＩＯ制御部３２０によってｒｘ＿ｓｔａｒｔ信号がアサートされると、データラッチトリガ回路３５３に対してｒｘ＿ｅｎ信号をアサートし、受信データビットカウンタ３５５に受信データのビット数のカウントを開始させる。そして、受信データビットカウンタ３５５が受信データビット長だけ受信データをカウントしたときに、ｒｘ＿ｅｎ信号をネゲートする。
【００４４】
なお、以下においては、受信データビットカウンタ３５５がデクリメントカウンタによって構成される場合について説明するが、受信データのビット数をカウントできるものであれば、どのような構成であってもよい。
【００４５】
データラッチトリガ回路３５３は、受信制御シーケンサ３５１からのｒｘ＿ｅｎ信号がアサートされると、データラッチ回路３５４がＳＤＡＴＡ＿ＩＮ信号のシリアルデータをラッチするタイミングを示すｓｄａｔａ＿ｅｎ信号を生成する。
【００４６】
データラッチ回路３５４は、データラッチトリガ回路３５３から出力されるｄａｔａ＿ｅｎ信号に同期してＳＤＡＴＡ＿ＩＮ信号のシリアルデータをラッチし、ｓｄａｔａ＿ｉｎ信号としてシリアル・パラレル変換回路３５２に出力する。
【００４７】
シリアル・パラレル変換回路３５２は、データラッチ回路３５４から出力されるｓｄａｔａ＿ｉｎ信号およびデータラッチトリガ回路３５３から出力されるｓｄａｔａ＿ｅｎ信号を受け、ｓｄａｔａ＿ｅｎ信号によってｓｄａｔａ＿ｉｎ信号に対して最大８ビットのビットシフトを行なってパラレルデータを生成し、そのパラレルデータを受信データバッファに格納する。
【００４８】
図４において、ＳＣＬＫ（ｏｕｔ）信号は、Ｉｎｉｔｉａｔｏｒ３００の端子から出力されるＳＣＬＫ信号であり、基板またはケーブルに接続される。ＳＣＬＫ（ｉｎ）信号は、Ｔａｒｇｅｔ４００の端子から入力され、Ｔａｒｇｅｔ４００内の各回路に供給されるＳＣＬＫ信号である。ＳＤＡＴＡ＿ＩＮ信号は、Ｔａｒｇｅｔ４００の端子から出力され、基板またはケーブルに接続されたＩｎｉｔｉａｔｏｒ３００の端子から入力されて、データ受信制御部３５０に供給される信号である。
【００４９】
Ｔａｒｇｅｔ４００は、Ｉｎｉｔｉａｔｏｒ３００に送信する送信データを生成し、ＳＣＬＫ（ｉｎ）信号の立ち下がりエッジに同期してｓｄａｔａ＿ｏｕｔ信号として出力する送信データ回路４１０と、ＳＣＬＫ（ｉｎ）信号の立ち上がりエッジに同期してシリアルデータをＳＤＡＴＡ＿ＩＮとして出力するデータ出力回路４２０とを含む。
【００５０】
図５は、図４に示すＩｎｉｔｉａｔｏｒ３００のＳＩＯブロック３１０およびＴａｒｇｅｔ４００において発生するシリアルデータの遅延時間を説明するためのタイミングチャートである。
【００５１】
Ｔ１において、ＳＩＯ制御部３２０から出力されるｒｘ＿ｓｔａｒｔ信号がアサートされると、受信制御シーケンサ３５１は、データラッチトリガ回路３５３に対してｒｘ＿ｅｎ信号をアサートする。このとき、受信データビットカウンタ３５５に、受信データビット長から１を差し引いた値“７”がロードされる。
【００５２】
Ｔ２において、データラッチトリガ回路３５３は、ｒｘ＿ｅｎ信号が“Ｈ”レベルであり、ｒｘ＿ｃｌｋ信号が“Ｌ”レベルであることを検出し、ｄａｔａ＿ｅｎ信号に“Ｈ”レベルのパルスを出力する。このとき、データラッチ回路３５４は、Ｔａｒｇｅｔ４００からのＳＤＡＴＡ＿ＩＮ信号のシリアルデータをラッチし、ｓｄａｔａ＿ｉｎ信号としてシリアル・パラレル変換回路３５２に出力する。
【００５３】
Ｔ３において、データラッチトリガ回路３５３は、ｓｄａｔａ＿ｅｎ信号に“Ｈ”レベルのパルスを出力して、シリアル・パラレル変換回路３５２に対してデータラッチ回路３５４からのｓｄａｔａ＿ｉｎ信号のラッチタイミングを指示する。このとき、受信データビットカウンタ３５５は、ｄａｔａ＿ｅｎ信号の“Ｈ”レベルのパルスを検出して、ダウンカウントを行なう。
【００５４】
Ｔ４において、ＳＣＬＫ（ｏｕｔ）信号が立ち上がる。このとき、ｒｘ＿ｃｌｋ信号の立ち上がりに対して遅延時間（ａ）が発生する。また、Ｔ５において、ＳＣＬＫ（ｉｎ）信号が立ち上がる。このとき、ＳＣＬＫ（ｏｕｔ）信号の立ち上がりに対して遅延時間（ｂ）が発生する。
【００５５】
Ｔ６において、Ｔａｒｇｅｔ４００内のデータ出力回路４２０がＳＣＬＫ（ｉｎ）信号の立ち上がりエッジに同期してＳＤＡＴＡ＿ＩＮ信号に次のシリアルデータ“＃２”を出力する。このとき、ＳＣＬＫ（ｉｎ）信号の立ち上がりに対して遅延時間（ｃ）が発生する。
【００５６】
Ｔ７において、データラッチ回路３５４は、ｄａｔａ＿ｅｎ信号の“Ｈ”レベルのパルスに応じてシリアルデータ“＃２”をラッチする。このとき、ＳＤＡＴＡ＿ＩＮ信号の変化点から、ｄａｔａ＿ｅｎ信号が“Ｈ”レベルでありＳＣＬＫ信号の立ち上がりエッジまでの時間がデータセットアップ時間（ｄ）となる。また、受信データビットカウンタ３５５は、ｄａｔａ＿ｅｎ信号の“Ｈ”レベルのパルスを検出して、ダウンカウントを行なう。以下、同様の処理が行われる。
【００５７】
受信データビットカウンタ３５５の値が“０”になると、Ｔ８において、受信制御シーケンサ３５１は、ＳＩＯ制御部３２０に対してｒｘ＿ｅｎｄ信号をアサートし、データ受信が完了したことをＳＩＯ制御部３２０に通知する。そして、ｒｘ＿ｅｎ信号に“Ｌ”レベルを出力し、データラッチトリガ回路３５３に対してデータ受信の終了を通知する。
【００５８】
図５に示すように、シリアルクロック制御部３３０によって生成されたＳＣＬＫは、Ｉｎｉｔｉａｔｏｒ３００の端子から出力されるまでの遅延時間と、基板またはケーブルによる配線遅延時間とを加算した時間（ａ）だけ遅れて、ＳＣＬＫ（ｏｕｔ）信号としてＴａｒｇｅｔ４００に入力される。
【００５９】
また、Ｔａｒｇｅｔ４００の端子に入力されるＳＣＬＫ（ｏｕｔ）信号は、時間（ｂ）だけ遅れてＳＣＬＫ（ｉｎ）信号としてデータ出力回路４２０に入力される。さらに、時間（ｃ）だけ遅れてデータ出力回路４２０からのＳＤＡＴＡ＿ＩＮ信号がデータラッチ回路３５４に入力される。
【００６０】
Ｉｎｉｔｉａｔｏｒ３００のデータラッチ回路３５４がＳＤＡＴＡ＿ＩＮ信号を正常にラッチするためには、ｄａｔａ＿ｅｎ信号が“Ｈ”レベルであり、かつＳＣＬＫ信号の立ち上がりの時間までにＳＤＡＴＡ＿ＩＮ信号が確定していること、すなわちデータセットアップ時間（ｄ）が以下の条件を満たしていることが必要である。
【００６１】
データセットアップ時間（ｄ）＝ＳＣＬＫ周期サイクル時間−（（ａ）＋（ｂ）＋（ｃ））＞０    …（１）
したがって、Ｉｎｉｔｉａｔｏｒ３００のシリアルクロック制御部３３０から出力されたＳＣＬＫ信号の立ち上がりから、ＳＤＡＴＡ＿ＩＮ信号がＩｎｉｔｉａｔｏｒ３００のデータラッチ回路３５４に入力されるまでの遅延時間（ａ）＋（ｂ）＋（ｃ）が大きくなり、ＳＤＡＴＡ＿ＩＮ信号のデータセットアップ時間（ｄ）を確保できない場合には、データラッチ回路３５４はデータを正常にラッチすることができない。
【００６２】
（第１の実施の形態）
図６は、本発明の第１の実施の形態におけるクロック同期シリアルＩ／Ｏの接続例を説明するための図である。図６は、Ｉｎｉｔｉａｔｏｒ１と、Ｔａｒｇｅｔ２とが１：１で接続されている場合を示している。Ｉｎｉｔｉａｔｏｒ１から出力されるＡＤＪＵＳＴ信号、ＳＬＯＡＤ信号、ＳＣＬＫ信号およびＳＤＡＴＡ＿ＯＵＴ信号が、コネクタやケーブルを介してＴａｒｇｅｔ２に入力される。同様に、Ｔａｒｇｅｔ２から出力されるＳＤＡＴＡ＿ＩＮ信号が、コネクタやケーブルを介してＩｎｉｔｉａｔｏｒ１に入力される。
【００６３】
図７は、本発明の第１の実施の形態におけるＩｎｉｔｉａｔｏｒ１の内部構成を示すブロック図である。このＩｎｉｔｉａｔｏｒ１は、ＳＩＯブロック１０と、ＣＰＵ６０とがＣＰＵバス７０を介して接続される。
【００６４】
ＳＩＯブロック１０は、ＳＩＯデータ転送を制御するＳＩＯ制御部２０と、シリアルクロックの周波数を切り替えるシリアルクロック制御部３０と、データ送信を制御するデータ送信制御部４０と、データ受信を制御するデータ受信制御部５０とを含む。
【００６５】
また、ＳＩＯ制御部２０は、ＳＩＯ制御レジスタ２４、ｉｎｐｕｔ＿ｄｅｌａｙレジスタ２５、ａｄｊ＿ｄｅｌａｙレジスタ２６、ｌａｔｃｈ＿ｃｙｃレジスタ２７などで構成されるレジスタ群２２と、レジスタ群２２をＣＰＵバス７０に接続するＣＰＵバスＩ／Ｆ２３と、ＳＩＯ制御レジスタ２４に設定された内容に基づいてデータ送受信の開始を指示し、データ送受信の終了を検知するＳＩＯ送受信制御部２１とを含む。
【００６６】
ＳＩＯ制御レジスタ２４は、ＳＩＯデータ転送ビット長を指定するｄａｔａ＿ｌｅｎビット、シリアルクロック周波数を設定するｓｃｌｋ＿ｓｅｌビット、データ転送の開始を指示するｓｉｏ＿ｅｎ＿ｒｅｇビット以外に、受信データの入力遅延を検出するためのモードを設定するａｄｊｕｓｔ＿ｒｅｇビットを含む。
【００６７】
ｉｎｐｕｔ＿ｄｅｌａｙレジスタ２５は、受信データの入力遅延値として後述するサンプルクロックｓｍｐｃｌｋのクロック数が設定されるレジスタであり、ＣＰＵ６０から読出し可能である。
【００６８】
ａｄｊ＿ｄｅｌａｙレジスタ２６は、受信データのデータラッチタイミングの調整値としてｓｍｐｃｌｋのクロック数を設定するためのレジスタであり、ＣＰＵ６０によって設定可能である。
【００６９】
ｌａｔｃｈ＿ｃｙｃレジスタ２７は、受信データのデータラッチタイミングの周期としてｓｍｐｃｌｋのクロック数を設定するためのレジスタであり、ＣＰＵ６０によって設定可能である。
【００７０】
ＣＰＵ６０によってＳＩＯ制御レジスタ２４のｓｃｌｋ＿ｓｅｌビットにシリアルクロック周波数が設定されると、ＳＩＯ送受信制御部２１は、シリアルクロック制御部３０に対してｓｃｌｋ＿ｓｅｌ信号を出力する。また、ＣＰＵ６０によってＳＩＯ制御レジスタ２４のａｄｊｕｓｔ＿ｒｅｇビットに“１”が設定されると、ＳＩＯ受信制御部２１は、Ｔａｒｇｅｔ２に対して受信データ入力遅延検出モードであることを示すＡＤＪＵＳＴ信号を出力する。
【００７１】
シリアルクロック制御部３０は、ＳＩＯ送受信制御部２１からｓｃｌｋ＿ｓｅｌ信号を受けると、ｓｍｐｃｌｋを分周して設定された周波数のシリアルクロックを生成し、ｓｉｏ＿ｓｔａｒｔ信号がアサートされたときにＳＣＬＫ信号としてＴａｒｇｅｔ２に出力する。ｓｉｏ＿ｓｔａｒｔ信号がネゲートされると、シリアルクロック制御部３０は、ＳＣＬＫ信号に“Ｈ”レベルを出力する。また、シリアルクロック制御部３０は、内部シリアルクロック信号としてデータ送信制御部４０にｔｘ＿ｃｌｋ信号を出力し、データ受信制御部５０にｒｘ＿ｃｌｋ信号を出力する。
【００７２】
ＣＰＵ６０が送信データレジスタに送信データを設定すると、ＳＩＯ送受信制御部２１は、ｔｘ＿ｄａｔａ信号によってその送信データをデータ送信制御部４０に出力する。そして、ＣＰＵ６０が、データ転送開始を示すｓｉｏ＿ｅｎ＿ｒｅｇに“１”を設定すると、ＳＩＯ送受信制御部２１は、データ送信制御部４０に対してデータ送信開始を示すｔｘ＿ｓｔａｒｔ信号を出力する。
【００７３】
データ送信制御部４０は、ＣＰＵ６０がＳＩＯ制御レジスタ２４に設定したデータ転送ビット長（ｄａｔａ＿ｌｅｎ）および送信データ（ｔｘ＿ｄａｔａ）を保持している。そして、ＳＩＯ送受信制御部２１から出力されるｔｘ＿ｓｔａｒｔ信号が“Ｈ”レベルになるのを検出すると、ｔｘ＿ｃｌｋ信号の立ち下がりエッジに同期して送信データ（ｔｘ＿ｄａｔａ）をＬＳＢビットから順にＳＤＡＴＡ＿ＯＵＴ信号としてＴａｒｇｅｔ２に出力する。
【００７４】
そして、データ送信制御部４０は、データ転送ビット長分のデータの送信を終了すると、ｔｘ＿ｅｎｄ信号にｓｍｐｃｌｋ信号の１クロック分の“Ｈ”レベルのパルスを出力して、ＳＩＯ送受信制御部２１にデータ送信の終了を通知する。
【００７５】
ＣＰＵ６０が、データ転送開始を示すｓｉｏ＿ｅｎ＿ｒｅｇに“１”を設定すると、ＳＩＯ送受信制御部２１は、データ受信制御部５０に対してデータ受信開始を示すｒｘ＿ｓｔａｒｔ信号を出力する。
【００７６】
データ受信制御部５０は、ＣＰＵ６０がＳＩＯ制御レジスタ２４に設定したデータ転送ビット長（ｄａｔａ＿ｌｅｎ）を保持している。そして、ＳＩＯ送受信制御部２１から出力されるｒｘ＿ｓｔａｒｔ信号が“Ｈ”レベルになるのを検出すると、Ｔａｒｇｅｔ２から出力されるＳＤＡＴＡ＿ＩＮ信号をｒｘ＿ｃｌｋ信号の立ち上がりエッジに同期してラッチすることによりシリアルデータを受信する。
【００７７】
このとき、データ受信制御部５０は、ＳＤＡＴＡ＿ＩＮ信号の入力遅延を検出し、その入力遅延値をｉｎｐｕｔ＿ｄｅｌａｙ信号としてＳＩＯ制御部２０に出力する。ＳＩＯ制御部２０は、入力遅延値をｉｎｐｕｔ＿ｄｅｌａｙレジスタ２５に格納する。
【００７８】
また、データ受信制御部５０は、ＳＩＯ制御部２０のａｄｊ＿ｄｅｌａｙレジスタ２６およびｌａｔｃｈ＿ｃｙｃレジスタ２７に設定された値に応じて、ＳＤＡＴＡ＿ＩＮ信号のシリアルデータのラッチタイミングを調整する。
【００７９】
そして、データ受信制御部５０は、データ転送ビット長分のシリアルデータをラッチすると、ｒｘ＿ｅｎｄ信号にｓｍｐｃｌｋ信号の１クロック分の“Ｈ”レベルのパルスを出力し、ラッチしたシリアルデータをパラレルデータに変換してｒｘ＿ｄａｔａ信号として出力する。ＳＩＯ送受信制御部２１は、ｒｘ＿ｄａｔａ信号によって受信データを受けると、受信データレジスタに受信データを設定する。これによって、ＣＰＵ６０が受信データレジスタから受信データを読み出すことができる。
【００８０】
図８は、本発明の第１の実施の形態におけるＩｎｉｔｉａｔｏｒ１の動作を説明するためのタイミングチャートである。図８においては、シリアルクロックＳＣＬＫの周波数の４倍の周波数を有するｓｍｐｃｌｋが用いられ、データ転送ビット長が８ビットの場合を示している。図８においても、図３と同様に、Ｉｎｉｔｉａｔｏｒ３００がＴａｒｇｅｔ４００との間で、ＳＤＡＴＡ＿ＯＵＴを介してのデータの送信と、ＳＤＡＴＡ＿ＩＮを介しての別のデータの受信とを並列に行なう例を示しており、データの送信と別データの受信とは夫々単独に行なうことも可能である。
【００８１】
まず、Ｔ１において、ＣＰＵ６０がＳＩＯ制御レジスタ２４のｓｉｏ＿ｅｎ＿ｒｅｇビットおよびａｄｊｕｓｔ＿ｒｅｇビットに“１”を設定すると、ＳＩＯ送受信制御部２１はデータ転送を開始する。
【００８２】
ＳＩＯ送受信制御部２１は、ｓｉｏ＿ｅｎ＿ｒｅｇビットおよびａｄｊｕｓｔ＿ｒｅｇビットに“１”が設定されたのを検出すると、Ｔ２において、Ｔａｒｇｅｔ２に対して受信データ入力遅延検出モードであることを示すＡＤＪＵＳＴ信号に“Ｈ”レベルを出力すると共に、データ送信制御部４０に対してｓｍｐｃｌｋの１クロック分の“Ｈ”レベルのパルスをｔｘ＿ｓｔａｒｔ信号に出力し、データ受信制御部５０に対してｓｍｐｃｌｋの１クロック分の“Ｈ”レベルのパルスをｒｘ＿ｓｔａｒｔ信号に出力する。そして、ＳＩＯ送受信制御部２１は、Ｔａｒｇｅｔ２に対してＳＣＬＫの１クロック分の“Ｌ”レベルのパルスをＳＬＯＡＤ信号に出力する。
【００８３】
Ｔａｒｇｅｔ２は、ＡＤＪＵＳＴ信号が“Ｈ”レベルになり受信データ入力遅延検出モードであることを検知すると、Ｉｎｉｔｉａｔｏｒ１に対してＳＤＡＴＡ＿ＩＮ信号に“０”、“１”を交互に繰り返すシリアルデータのパターンを出力する。
【００８４】
Ｔ３において、ＳＬＯＡＤ信号の立ち上がりと同時に、ＳＩＯ送受信制御部２１は、ｓｉｏ＿ｓｔａｒｔ信号を“Ｈ”レベルにアサートして、シリアルクロック制御部３０に対してＳＣＬＫ信号の出力を指示する。このとき、ＳＩＯ送受信制御部２１は、ｓｃｌｋ＿ｓｅｌ信号によってＳＣＬＫの周波数としてｓｍｐｃｌｋを４分周した周波数とするよう指示する。
【００８５】
Ｔ４において、Ｔａｒｇｅｔ２に対するＳＣＬＫ信号の出力が開始されると、データ送信制御部４０は、ｔｘ＿ｃｌｋ信号の立ち下がりに同期して、ＳＣＬＫの立ち下がりのタイミングにＳＤＡＴＡ＿ＯＵＴ信号によりシリアルデータをＬＳＢから順に送信する。また、Ｔ５において、データ受信制御部５０は、ｒｘ＿ｃｌｋ信号の立ち上がりに同期して、ＳＣＬＫの立ち上がりのタイミングにＳＤＡＴＡ＿ＩＮ信号によりシリアルデータをＬＳＢから順に受信する。
【００８６】
Ｔ６において、８ビットのデータ送信が終了すると、データ送信制御部４０は、ＳＩＯ送受信制御部２１に対してデータ送信完了を示すｔｘ＿ｅｎｄ信号を“Ｈ”レベルにアサートする。また、８ビットのデータ受信が終了すると、データ受信制御部５０は、ＳＩＯ送受信制御部２１に対してデータ受信完了を示すｒｘ＿ｅｎｄ信号を“Ｈ”レベルにアサートする。
【００８７】
Ｔ７において、ＳＩＯ送受信制御部２１はｔｘ＿ｅｎｄ信号とｒｘ＿ｅｎｄ信号の両方が“Ｈ”レベルにアサートされたことに応じて、シリアルクロック制御部３０に対してｓｉｏ＿ｓｔａｒｔ信号を“Ｌ”レベルにネゲートし、ＳＣＬＫの出力を停止させる。Ｔ８において、シリアルクロック制御部３０は、Ｔａｒｇｅｔ２に対してＳＬＯＡＤ信号に“Ｌ”レベルを出力し、８ビットのデータ受信が完了したことを通知する。
【００８８】
なお、ＳＩＯ送受信制御部２１がｓｉｏ＿ｓｔａｒｔ信号をネゲートするまでに、ＣＰＵ６０が次のデータ転送開始を指示していれば、Ｔ８において、ｔｘ＿ｓｔａｒｔ信号およびｒｘ＿ｓｔａｒｔ信号がアサートされ、Ｔ９以降において、ＳＣＬＫの出力と次の８ビットのデータ転送が連続して行なわれる。
【００８９】
図９は、本発明の第１の実施の形態におけるＳＩＯブロック１０内のデータ受信制御部５０およびＴａｒｇｅｔ２の構成をさらに詳細に説明するためのブロック図である。データ受信制御部５０は、データ受信の開始および終了を制御する受信制御シーケンサ５１と、受信データのデータラッチタイミングのトリガ（ｄａｔａ＿ｅｎ）信号を生成するデータラッチトリガ回路５２と、受信データの入力遅延を検出する入力遅延検出回路５３と、データラッチトリガ回路５２から出力されるｄａｔａ＿ｅｎ信号によって受信データをラッチするデータラッチ回路５４と、データラッチ回路５４によってラッチされたシリアルデータ（ｓｄａｔａ＿ｉｎ）をパラレルデータに変換して受信データバッファに格納するシリアル・パラレル変換回路５５とを含む。
【００９０】
また、受信制御シーケンサ５１は、ＣＰＵ６０がＳＩＯ制御レジスタ２４に設定した受信データビット長（ｄａｔａ＿ｌｅｎ）を保持してカウントする受信データビットカウンタ５６を有する。受信制御シーケンサ５１は、ＳＩＯ制御部２０によってｒｘ＿ｓｔａｒｔ信号がアサートされると、データラッチトリガ回路５２に対してｒｘ＿ｅｎ信号をアサートし、受信データビットカウンタ５６に受信データのビット数のカウントを開始させる。そして、受信データビットカウンタ５６が受信データビット長だけ受信データをカウントしたときに、ｒｘ＿ｅｎ信号をネゲートする。
【００９１】
データラッチトリガ回路５２は、受信制御シーケンサ５１からのｒｘ＿ｅｎ信号がアサートされると、データラッチ回路５４がＳＤＡＴＡ＿ＩＮ信号のシリアルデータをラッチするタイミングを示すｄａｔａ＿ｅｎ信号を生成する。また、データラッチトリガ回路５２は、遅延調整回路５７を有しており、ＳＩＯ制御部２０のａｄｊ＿ｄｅｌａｙレジスタ２６に設定された値およびｌａｔｃｈ＿ｃｙｃレジスタ２７に設定された値に応じてｄａｔａ＿ｅｎ信号およびｓｄａｔａ＿ｅｎ信号の出力タイミングを調整する。この遅延調整回路５７の詳細については後述する。
【００９２】
データラッチ回路５４は、データラッチトリガ回路５２から出力されるｄａｔａ＿ｅｎ信号に同期して入力遅延検出回路５３から出力されるＳＤＡＴＡ＿ＩＮ＿Ｆ２信号のシリアルデータをラッチし、ｓｄａｔａ＿ｉｎ信号としてシリアル・パラレル変換回路５５に出力する。
【００９３】
シリアル・パラレル変換回路５５は、データラッチ回路５４から出力されるｓｄａｔａ＿ｉｎ信号およびデータラッチトリガ回路５２から出力されるｓｄａｔａ＿ｅｎ信号を受け、ｓｄａｔａ＿ｅｎ信号によってｓｄａｔａ＿ｉｎ信号に対して最大８ビットのビットシフトを行なってパラレルデータを生成し、そのパラレルデータを受信データバッファに格納する。
【００９４】
また、Ｔａｒｇｅｔ２内の送信データ回路２０１は、ＡＤＪＵＳＴ信号が“Ｈ”レベルになるのを検知し、ＳＬＯＡＤ信号がアサートされると、ｓｄａｔａ＿ｏｕｔ信号に“０”、“１”を交互に繰り返すシリアルデータのパターンを出力する。
【００９５】
また、データ出力回路２０２は、ＳＣＬＫ（ｉｎ）信号の立ち上がりエッジに同期して送信データ回路２０１から受けたシリアルデータをＳＤＡＴＡ＿ＩＮ信号としてＩｎｉｔｉａｔｏｒ１に出力する。
【００９６】
図１０は、図９に示す入力遅延検出回路５３の内部構成を示すブロック図である。この入力遅延検出回路５３は、ｓｍｐｃｌｋに同期して動作するものであり、遅延時間計測回路６１と、データ不一致検出回路６２と、フリップフロップＦＦ１（６３）およびＦＦ２（６４）とを含む。
【００９７】
また、遅延時間計測回路６１は、計測制御シーケンサ６５と、遅延時間計測カウンタ（ＳＣＬＫ＿Ｄ１）６６とを含む。
【００９８】
計測制御シーケンサ６５は、ＡＤＪＵＳＴ信号が“Ｈ”レベルとなって受信データ入力遅延検出モードであることを確認し、ＳＩＯ制御部２０からのＳＬＯＡＤ信号がアサートされると、ｃｈｅｃｋ＿ｓｔａｒｔ信号をアサートしてデータ不一致検出回路６２にデータ不一致の検出開始を指示する。
【００９９】
そして、計測制御シーケンサ６５は、シリアルクロック制御部３０からのｒｘ＿ｃｌｋ信号の立ち上がりエッジを検出すると、遅延時間計測カウンタ６６に対してカウント開始を指示する。
【０１００】
計測制御シーケンサ６５は、データ不一致検出回路６２からデータ不一致を検出したことを示すｎｏ＿ｍａｔｃｈ信号を受けると、遅延時間計測カウンタ６６にカウントの停止を指示し、ｃｈｅｃｋ＿ｓｔａｒｔ信号をネゲートしてデータ不一致検出回路６２にデータ不一致の検出終了を指示する。
【０１０１】
遅延時間計測カウンタ６６は、計測制御シーケンサ６５からの指示に応じてカウンタの初期化（“０”クリア）を行なう。そして、計測制御シーケンサ６５からカウント開始の指示を受けると、ｓｍｐｃｌｋ信号に同期してカウントアップを開始する。そして、計測制御シーケンサ６５からカウント停止の指示を受けると、カウントアップを停止してＳＩＯ送受信制御部２１に対してｉｎｐｕｔ＿ｄｅｌａｙ信号によりカウント値を出力する。
【０１０２】
ＳＩＯ送受信制御部２１は、遅延時間計測カウンタ６６から出力されたカウント値をｉｎｐｕｔ＿ｄｅｌａｙレジスタ２５に格納する。
【０１０３】
ＦＦ１（６３）は、ＳＤＡＴＡ＿ＩＮ信号をｓｍｐｃｌｋ信号の立ち上がりでサンプリングし、ＳＤＡＴＡ＿ＩＮ＿Ｆ信号としてデータ不一致検出回路６２およびＦＦ２（６４）に出力する。
【０１０４】
ＦＦ２（６４）は、ＦＦ１（６３）から出力されたＳＤＡＴＡ＿ＩＮ＿Ｆ信号をｓｍｐｃｌｋ信号の立ち上がりでサンプリングし、ＳＤＡＴＡ＿ＩＮ＿Ｆ２信号としてデータ不一致検出回路６２およびデータラッチ回路５４に出力する。
【０１０５】
なお、ＦＦ１（６３）およびＦＦ２（６４）は、ＳＤＡＴＡ＿ＩＮのデータ入力経路としても使用されるため、ＡＤＪＵＳＴ信号のレベルに関係なく動作する。
【０１０６】
データ不一致検出回路６２は、ＳＤＡＴＡ＿ＩＮ＿Ｆ信号とＳＤＡＴＡ＿ＩＮ＿Ｆ２信号とを比較してデータの一致／不一致を検出し、データが不一致の場合に遅延時間計測回路６１に対してｎｏ＿ｍａｔｃｈ信号を出力する。なお、ＳＤＡＴＡ＿ＩＮ＿Ｆ信号とＳＤＡＴＡ＿ＩＮ＿Ｆ２信号とのデータ不一致は、ＳＤＡＴＡ＿ＩＮの１ビット目と２ビット目のビット変化の遅延、すなわちＳＤＡＴＡ＿ＩＮの入力遅延となる。
【０１０７】
図１１は、図１０に示す入力遅延検出回路５３の入力遅延検出動作を説明するためのタイミングチャートである。Ｔ１において、計測制御シーケンサ６５は、データ転送開始時にＳＩＯ制御部２０から出力されるＳＬＯＡＤ信号が“Ｌ”レベルになるのを検出すると、ＡＤＪＵＳＴ信号の“Ｈ”レベルによって受信データ入力遅延検出モードであることを確認し、受信データの入力遅延検出動作を開始する。
【０１０８】
Ｔ２において、計測制御シーケンサ６５は、ｃｈｅｃｋ＿ｓｔａｒｔ信号をアサートし、データ不一致検出回路６２に対してデータ不一致の検出開始を指示すると共に、遅延時間計測カウンタ６６に対してカウンタの初期化を指示する。Ｔ３において、遅延時間計測カウンタ６６は、カウント値を“０”に初期化する。
【０１０９】
Ｔ４およびＴ５において、計測制御シーケンサ６５は、ｒｘ＿ｃｌｋ信号が“Ｌ”レベルから“Ｈ”レベルに変化するのを検出すると、遅延時間計測カウンタ６６にカウント動作を開始させる。
【０１１０】
Ｔ６において、ＳＤＡＴＡ＿ＩＮ＿Ｆ信号およびＳＤＡＴＡ＿ＩＮ＿Ｆ２信号が共に“Ｌ”レベルであるため、データ不一致検出回路６２はデータ一致と判定する。Ｔ７において、ＳＤＡＴＡ＿ＩＮ＿Ｆ信号が“Ｈ”レベルに変化すると、データ不一致検出回路６２はデータ不一致と判定する。
【０１１１】
Ｔ８において、データ不一致検出回路６２は、ｎｏ＿ｍａｔｃｈ信号をアサートして計測制御シーケンサ６５に対してデータ不一致検出を通知する。このとき、計測制御シーケンサ６５は、遅延時間計測カウンタ６６に対してカウント停止を指示する。
【０１１２】
Ｔ９において、計測制御シーケンサ６５は、ｃｈｅｃｋ＿ｓｔａｒｔ信号をネゲートして、データ不一致検出回路６２にデータ不一致の検出終了を指示する。なお、遅延時間計測カウンタ６６のカウント値は、ｉｎｐｕｔ＿ｄｅｌａｙ信号によってＳＩＯ制御部２０に通知される。
【０１１３】
図１２は、図１０に示す計測制御シーケンサ６５の処理手順を説明するためのフローチャートである。まず、計測制御シーケンサ６５は、ＳＩＯ制御部２０から出力されるＡＤＪＵＳＴ信号が“１”であり、かつＳＬＯＡＤ信号が“０”であるか否かを判定する（Ｓ１１）。ＡＤＪＵＳＴ信号が“０”であるか、ＳＬＯＡＤ信号が“１”であれば（Ｓ１１，Ｎｏ）、ステップＳ１１の処理を繰り返す。
【０１１４】
ＡＤＪＵＳＴ信号が“１”であり、かつＳＬＯＡＤ信号が“０”であれば（Ｓ１１，Ｙｅｓ）、ｃｈｅｃｋ＿ｓｔａｒｔ信号を“１”にし、遅延時間計測カウンタ６６を“０”に初期化する（Ｓ１２）。
【０１１５】
次に、計測制御シーケンサ６５は、シリアルクロック制御部３０から出力されるｒｘ＿ｃｌｋ信号が“０”であるか否かを判定する（Ｓ１３）。ｒｘ＿ｃｌｋ信号が“１”であれば（Ｓ１３，Ｎｏ）、ステップＳ１３の処理を繰り返す。また、ｒｘ＿ｃｌｋ信号が“０”であれば（Ｓ１３，Ｙｅｓ）、ｒｘ＿ｃｌｋ信号が“１”になるまで待機する（Ｓ１４）。
【０１１６】
ｒｘ＿ｃｌｋ信号が“１”になると（Ｓ１４，Ｙｅｓ）、遅延時間計測カウンタ６６に対してカウント開始を指示する（Ｓ１５）。そして、データ不一致検出回路６２から出力されるｎｏ＿ｍａｔｃｈ信号が“１”であるか否かを判定する（Ｓ１６）。
【０１１７】
計測制御シーケンサ６５は、ｎｏ＿ｍａｔｃｈ信号が“１”であれば（Ｓ１６，Ｙｅｓ）、遅延時間計測カウンタ６６に対してカウント停止を指示し、データ不一致検出回路６２に対してｃｈｅｃｋ＿ｓｔａｒｔ信号に“０”を出力する（Ｓ１７）。そして、ステップＳ１１に戻って、以降の処理を繰り返す。
【０１１８】
図１３は、図９に示すデータラッチトリガ回路５２をさらに詳細に説明するためのブロック図である。データラッチトリガ回路５２は、ｓｍｐｃｌｋに同期して動作するものであり、データラッチトリガ制御シーケンサ７１と、遅延調整回路５７とを含む。また、遅延調整回路５７は、ｄａｔａ＿ｅｎ調整カウンタ（ＤＡＴＡ＿ＤＬＹ）７２と、ｄａｔａ＿ｅｎ周期カウンタ（ＬＡＴＣＨ＿ＣＮＴ）７３とを含む。なお、データラッチトリガ回路５２は、受信データ入力遅延検出モードであるか否かに関係なく、常に動作する。
【０１１９】
データラッチトリガ制御シーケンサ７１は、ＳＬＯＡＤ信号が“Ｌ”レベルから“Ｈ”レベルになる直前にＳＩＯ制御部２０から出力されるａｄｊ＿ｔｒｇ信号を受け、遅延調整を開始する。このとき、データラッチトリガ制御シーケンサ７１は、遅延調整回路５７に対してｄｌｙ＿ｓｔａｒｔ信号を出力して、ｄａｔａ＿ｅｎ信号の遅延調整を開始させる。
【０１２０】
データラッチトリガ制御シーケンサ７１は、遅延調整回路５７から遅延調整が完了したことを示すｄｌｙ＿ｍａｔｃｈ信号を受けると、遅延調整回路５７に対してｃｙｃ＿ｓｔａｒｔ信号を出力して、ｄａｔａ＿ｅｎ信号の周期を計測させる。遅延調整回路５７は、所定の周期を計測したときに、データラッチトリガ制御シーケンサ７１に対してｃｙｃ＿ｍａｔｃｈ信号を出力する。
【０１２１】
データラッチトリガ制御シーケンサ７１は、遅延調整回路５７から出力されるｄｌｙ＿ｍａｔｃｈ信号およびｃｙｃ＿ｍａｔｃｈ信号に同期して、ｄａｔａ＿ｅｎ信号を出力し、ｓｍｐｃｌｋの１クロック後にｓｄａｔａ＿ｅｎ信号を出力する。
【０１２２】
ｄａｔａ＿ｅｎ調整カウンタ７２は、データラッチトリガ制御シーケンサ７１から出力されるｄｌｙ＿ｓｔａｒｔ信号がアサートされると、“０”からカウントを開始する。そして、カウント値がａｄｊ＿ｄｅｌａｙレジスタ２６に設定される値と一致すると、ｄａｔａ＿ｅｎ調整カウンタ７２はカウントを停止して、ｄｌｙ＿ｍａｔｃｈ信号をデータラッチトリガ制御シーケンサ７１に出力する。
【０１２３】
ｄａｔａ＿ｅｎ周期カウンタ７３は、データラッチトリガ制御シーケンサ７１から出力されるｃｙｃ＿ｓｔａｒｔ信号がアサートされると、“０”からカウントを開始する。そして、カウント値がｌａｔｃｈ＿ｃｙｃレジスタ２７に設定される値と一致すると、ｄａｔａ＿ｅｎ周期カウンタ７３はカウントを停止して、ｃｙｃ＿ｍａｔｃｈ信号をデータラッチトリガ制御シーケンサ７１に出力する。
【０１２４】
ＣＰＵ６０は、受信データ入力遅延検出モードで得られた入力遅延値をａｄｊ＿ｄｅｌａｙレジスタ２６に設定することにより、シリアルデータの１ビット目のｄａｔａ＿ｅｎ信号の出力タイミングを調整する。
【０１２５】
また、ＣＰＵ６０は、ＳＣＬＫの１周期がｓｍｐｃｌｋの何クロックに相当するかをｌａｔｃｈ＿ｃｙｃレジスタ２７に設定することにより、シリアルデータの２ビット目以降のｄａｔａ＿ｅｎ信号の出力タイミングを調整する。
【０１２６】
この遅延調整アルゴリズムは、Ｔａｒｇｅｔ２から出力されるＳＤＡＴＡ＿ＩＮ信号の入力遅延がＳＣＬＫ信号の立ち上がりエッジに対して常に一定であり、１ビット目の入力遅延を調整すれば、２ビット目以降はＳＣＬＫ周期でビット変化が発生することを前提としている。
【０１２７】
図１４は、図１３に示すデータラッチトリガ回路５２の動作を説明するためのタイミングチャートである。図１４においては、ｄａｔａ＿ｅｎ信号の遅延調整値としてａｄｊ＿ｄｅｌａｙレジスタ２６に“３”が設定され、ｄａｔａ＿ｅｎ信号の周期としてｌａｔｃｈ＿ｃｙｃレジスタ２７にｓｍｐｓｌｋのクロック数である“４”から１を差し引いた“３”が設定される場合を示している。
【０１２８】
まず、データラッチトリガ回路５２は、受信制御シーケンサ５１から出力されるｒｘ＿ｅｎ信号が“Ｈ”レベルになるのを検出して、ｄａｔａ＿ｅｎ信号の遅延調整を開始する。
【０１２９】
Ｔ１において、ＳＩＯ制御部２０からのａｄｊ＿ｔｒｇ信号に“Ｈ”レベルのパルスが出力されると、データラッチトリガ制御シーケンサ７１は、ｄｌｙ＿ｓｔａｒｔ信号に“Ｈ”レベルのパルスを出力して、ｄａｔａ＿ｅｎ調整カウンタ７２にカウントを開始させる。
【０１３０】
Ｔ２およびＴ３において、ｄａｔａ＿ｅｎ調整カウンタ７２は、ｓｍｐｃｌｋ信号の立ち上がりに同期してカウントアップを行なう。Ｔ４において、ｄａｔａ＿ｅｎ調整カウンタ７２は、カウント値とａｄｊ＿ｄｌｙ信号の値とが一致するので、データラッチトリガ制御シーケンサ７１に対してｄｌｙ＿ｍａｔｃｈ信号をアサートすると共に、カウント動作を停止する。
【０１３１】
データラッチトリガ制御シーケンサ７１は、ｄａｔａ＿ｅｎ調整カウンタ７２からｄｌｙ＿ｍａｔｃｈ信号を受けると、Ｔ５において、ｄａｔａ＿ｅｎ信号にシリアルデータの１ビット目に対応する“Ｈ”レベルのパルスを出力すると共に、ｃｙｃ＿ｓｔａｒｔ信号に“Ｈ”レベルのパルスを出力して、ｄａｔａ＿ｅｎ周期カウンタ７３にカウントを開始させる。このとき、ｄａｔａ＿ｅｎ調整カウンタ７２は、カウントを停止してカウント値を“０”クリアする。
【０１３２】
Ｔ６において、データラッチトリガ制御シーケンサ７１は、シリアル・パラレル変換回路５５に対してｓｄａｔａ＿ｅｎ信号に“Ｈ”レベルのパルスを出力する。Ｔ６およびＴ７において、ｄａｔａ＿ｅｎ周期カウンタ７３は、ｓｍｐｃｌｋ信号の立ち上がりに同期してカウントアップを行なう。
【０１３３】
Ｔ８において、ｄａｔａ＿ｅｎ周期カウンタ７３は、カウント値とｌａｔｃｈ＿ｃｙｃ信号の値とが一致するので、データラッチトリガ制御シーケンサ７１に対してｃｙｃ＿ｍａｔｃｈ信号をアサートすると共に、カウント値を“０”クリアする。
【０１３４】
データラッチトリガ制御シーケンサ７１は、ｄａｔａ＿ｅｎ周期カウンタ７３からｃｙｃ＿ｍａｔｃｈ信号を受けると、Ｔ９において、ｄａｔａ＿ｅｎ信号にシリアルデータの２ビット目に対応する“Ｈ”レベルのパルスを出力する。
【０１３５】
Ｔ１０以降において、データラッチトリガ制御シーケンサ７１は同様の動作を繰り返し、ｄａｔａ＿ｅｎ信号に３ビット目以降のシリアルデータに対応する“Ｈ”レベルのパルスを出力する。
【０１３６】
Ｔ１５において、受信制御シーケンサ５１が、ｒｘ＿ｅｎｄ信号に“Ｈ”レベルを出力して、ＳＩＯ制御部２０にデータ受信の終了を通知する。そして、Ｔ１６において、受信制御シーケンサ５１がｒｘ＿ｅｎ信号に“Ｌ”レベルを出力して、データラッチトリガ回路５２にデータ受信の終了を通知する。このとき、ｄａｔａ＿ｅｎ周期カウンタ７３は、カウントを停止してカウント値を“０”クリアする。
【０１３７】
図１５は、図１３に示すデータラッチトリガ回路５２の処理手順を説明するためのフローチャートである。まず、データラッチトリガ制御シーケンサ７１は、受信制御シーケンサ５１から出力されるｒｘ＿ｅｎ信号が“１”であるか否かを判定する（Ｓ２１）。ｒｘ＿ｅｎ信号が“０”であれば（Ｓ２１，Ｎｏ）、ステップＳ２１の処理を繰り返す。
【０１３８】
ｒｘ＿ｅｎ信号が“１”であれば（Ｓ２１，Ｙｅｓ）、データラッチトリガ制御シーケンサ７１は、ＳＩＯ制御部２０から出力されるａｄｊ＿ｔｒｇ信号が“１”であるか否かを判定する（Ｓ２２）。
【０１３９】
ａｄｊ＿ｔｒｇ信号が“０”であれば（Ｓ２２，Ｎｏ）、ステップＳ２２の処理を繰り返す。また、ａｄｊ＿ｔｒｇ信号が“１”であれば（Ｓ２２，Ｙｅｓ）、ｄｌｙ＿ｓｔａｒｔ信号に“Ｈ”レベルのパルスを出力して、ｄａｔａ＿ｅｎ調整カウンタ７２に対してカウント開始を指示する（Ｓ２３）。
【０１４０】
ｄａｔａ＿ｅｎ調整カウンタ７２は、カウントを行ない（Ｓ２４）、カウント値がａｄｊ＿ｄｅｌａｙの値と一致するか否かを判定する（Ｓ２５）。カウント値がａｄｊ＿ｄｅｌａｙの値と一致しなければ（Ｓ２５，Ｎｏ）、ステップＳ２４に戻ってカウントアップを繰り返す。
【０１４１】
また、カウント値とａｄｊ＿ｄｅｌａｙの値とが一致すれば（Ｓ２５，Ｙｅｓ）、ｄａｔａ＿ｅｎ調整カウンタ７２は、データラッチトリガ制御シーケンサ７１に対してｄｌｙ＿ｍａｔｃｈ信号に“Ｈ”レベルのパルスを出力する（Ｓ２６）。
【０１４２】
データラッチトリガ制御シーケンサ７１は、ｄａｔａ＿ｅｎ調整カウンタ７２からｄｌｙ＿ｍａｔｃｈ信号を受けると、ｄａｔａ＿ｅｎ調整カウンタ７２に対してカウントを停止させ、カウント値を“０”クリアさせる。そして、ｄａｔａ＿ｅｎ信号に１回目の“Ｈ”レベルのパルスを出力し、ｓｍｐｃｌｋの１クロック後にｓｄａｔａ＿ｅｎ信号に“Ｈ”レベルのパルスを出力する。そして、ｃｙｃ＿ｓｔａｒｔ信号に“Ｈ”レベルのパルスを出力して、ｄａｔａ＿ｅｎ周期カウンタ７３に対してカウント開始を指示する（Ｓ２７）。
【０１４３】
ｄａｔａ＿ｅｎ周期カウンタ７３は、カウントを行ない（Ｓ２８）、カウント値がｌａｔｃｈ＿ｃｙｃの値と一致するか否かを判定する（Ｓ２９）。カウント値がｌａｔｃｈ＿ｃｙｃの値と一致しなければ（Ｓ２９，Ｎｏ）、ステップＳ２８に戻ってカウントアップを繰り返す。
【０１４４】
また、カウント値とｌａｔｃｈ＿ｃｙｃの値とが一致すれば（Ｓ２９，Ｙｅｓ）、ｄａｔａ＿ｅｎ周期カウンタ７３は、データラッチトリガ制御シーケンサ７１に対してｃｙｃ＿ｍａｔｃｈ信号に“Ｈ”レベルのパルスを出力する。そして、ｄａｔａ＿ｅｎ信号に“Ｈ”レベルのパルスを出力し、ｓｍｐｃｌｋの１クロック後にｓｄａｔａ＿ｅｎ信号に“Ｈ”レベルのパルスを出力する（Ｓ３０）。
【０１４５】
次に、データラッチトリガ制御シーケンサ７１は、受信制御シーケンサ５１から出力されるｒｘ＿ｅｎ信号が“０”であるか否かを判定する（Ｓ３１）。ｒｘ＿ｅｎ信号が“１”であれば（Ｓ３１，Ｎｏ）、ステップＳ２８に戻って以降の処理を繰り返す。また、ｒｘ＿ｅｎ信号が“０”であれば（Ｓ３１，Ｙｅｓ）、ｄａｔａ＿ｅｎ周期カウンタ７３に対してカウントを停止させ、カウント値を“０”クリアさせ（Ｓ３２）、ステップＳ２１に戻って以降の処理を繰り返す。
【０１４６】
以上説明したように、本実施の形態におけるＩｎｉｔｉａｔｏｒ１によれば、ＣＰＵ６０が、ＳＩＯ制御部２０に設けられたＳＩＯ制御レジスタ２４のａｄｊｕｓｔ＿ｒｅｇビットに“１”を設定することによりＡＤＪＵＳＴ信号に“Ｈ”レベルが出力され、Ｉｎｉｔｉａｔｏｒ１およびＴａｒｇｅｔ２を受信データ入力遅延検出モードに移行させるようにした。これによって、任意のタイミングで、ＣＰＵ６０がシリアルデータの入力遅延を検出でき、入力遅延値に応じてシリアルデータのラッチタイミングを調整することが可能となった。
【０１４７】
また、入力遅延検出回路５３は、ＡＤＪＵＳＴ信号が“Ｈ”レベルになるのを検出して、シリアルデータの入力遅延を検出し、その入力遅延値をＳＩＯ制御部２０内のｉｎｐｕｔ＿ｄｅｌａｙレジスタ２５に設定するようにした。これによって、ＣＰＵ６０は、シリアルデータの入力遅延値を容易に把握することが可能となった。したがって、受信データ入力遅延検出処理を実現するプログラムを製品に実装しておけば、製品出荷後においても任意のタイミングで受信データ入力遅延を検出することができる。
【０１４８】
また、ＳＩＯ制御部２０に、ＣＰＵ６０が値を設定することができるａｄｊ＿ｄｅｌａｙレジスタ２６およびｌａｔｃｈ＿ｃｙｃレジスタ２７を設け、遅延調整回路５７がこれらのレジスタの値に応じてシリアルデータのラッチタイミングを調整するようにした。これによって、シリアルデータの入力遅延値に応じてラッチタイミングを調整することができ、データ転送速度を下げずにシリアルデータを確実にラッチすることが可能となった。したがって、この入力遅延調整処理を実現するプログラムを製品に実装しておけば、製品出荷後においても任意のタイミングでシリアルデータのラッチタイミングを調整することができる。
【０１４９】
（第２の実施の形態）
第１の実施の形態において、製品出荷後であってもＩｎｉｔｉａｔｏｒとＴａｒｇｅｔとの間のシリアルデータの入力遅延調整が可能となることを説明した。しかしながら、エンドユーザが接続ケーブルを変更したり、Ｔａｒｇｅｔの特性を変更したりして、入力遅延が著しく大きくなる場合には、ＳＩＯ通信エラーやデータ転送性能の悪化に至る場合も考えられる。本発明の第２の実施の形態においては、出力Ｉ／Ｏバッファの性能を高めることでＳＩＯ通信エラーやデータ転送性能の悪化を防止するものである。
【０１５０】
図１６は、本発明の第２の実施の形態におけるＩｎｉｔｉａｔｏｒのＳＩＯブロックの詳細を説明するための図である。なお、このＳＩＯブロック１０’が、ＣＰＵバス７０を介してＣＰＵ６０と接続される点においては、図７に示すＩｎｉｔｉａｔｏｒ１の構成と同様である。また、図７および図９に示す第１の実施の形態におけるＳＩＯブロック１０と同様の構成および機能を有する部分については、同じ参照番号を付すものとする。
【０１５１】
ＳＩＯブロック１０’は、ＳＩＯ制御部８１と、データ送信制御部４０と、シリアルクロック制御部３０と、データ受信制御部８４と、４ｍＡのドライブ能力を有する４ｍＡＩＯセルブロック８５−１〜８５−４と、８ｍＡのドライブ能力を有する８ｍＡＩＯセルブロック８６−１〜８６−４とを含む。
【０１５２】
ＳＩＯ制御部８１は、ＳＩＯ制御レジスタ１０１と、ＳＤＡＴＡ＿ＩＮ信号が変化しない一定時間を設定するためのｄｒｖ＿ｄａｔａレジスタ１０２と、ＳＤＡＴＡ＿ＩＮ信号が一定時間変化しない場合に設定されるｄｒｖ＿ｉｎｔレジスタ１０３とを含む。
【０１５３】
ＳＩＯ制御レジスタ１０１は、ＳＩＯデータ転送ビット長を指定するｄａｔａ＿ｌｅｎビット、シリアルクロック周波数を設定するｓｃｌｋ＿ｓｅｌビット、データ転送の開始を指示するｓｉｏ＿ｅｎ＿ｒｅｇビット、受信データの入力遅延を検出するためのモードを設定するａｄｊｕｓｔ＿ｒｅｇビット以外に、４ｍＡＩＯ８５−１〜８５−４および８ｍＡＩＯ８６−１〜８６−４のいずれを選択するかを指定する４ｍａ＿ｏｅ＿ｒｅｇビットおよび８ｍａ＿ｏｅ＿ｒｅｇビットを含む。
【０１５４】
ＣＰＵ６０が４ｍａ＿ｏｅ＿ｒｅｇビットに“１”を設定したときに、ＳＩＯ制御部８１から出力される４ＭＡ＿ＯＥ信号によって４ｍＡＩＯ８５−１〜８５−４が選択され、それぞれＳＤＡＴＡ＿ＯＵＴ信号、ＳＣＬＫ信号、ＡＤＪＵＳＴ信号およびＳＬＯＡＤ信号を駆動する。
【０１５５】
また、ＣＰＵ６０が８ｍａ＿ｏｅ＿ｒｅｇビットに“１”を設定したときに、ＳＩＯ制御部８１から出力される８ＭＡ＿ＯＥ信号によって８ｍＡＩＯ８６−１〜８６−４が選択され、それぞれＳＤＡＴＡ＿ＯＵＴ信号、ＳＣＬＫ信号、ＡＤＪＵＳＴ信号およびＳＬＯＡＤ信号を駆動する。
【０１５６】
データ受信制御部８４は、受信制御シーケンサ５１と、データラッチトリガ回路５２と、データラッチ回路５４と、シリアル・パラレル変換回路５５と、入力遅延検出回路９１とを含む。
【０１５７】
入力遅延検出回路９１は、受信データの入力遅延を検出するときに、想定している入力遅延時間よりもさらにＳＤＡＴＡ＿ＩＮ信号が一定時間変化しないか否かを検出する。このＳＤＡＴＡ＿ＩＮ信号が変化しない一定時間が、ＣＰＵ６０によってｄｒｖ＿ｄａｔａレジスタ１０２に設定され、入力遅延検出回路９１にｄｒｖ＿ｄａｔａ信号として与えられる。
【０１５８】
また、入力遅延検出回路９１は、想定している入力遅延時間よりもさらにＳＤＡＴＡ＿ＩＮ信号が一定時間変化しないこと、すなわち、入力遅延の計測値がｄｒｖ＿ｄａｔａとして設定された値と等しいことを検出したときに、ｄｒｖ＿ｉｎｔ信号によってＳＩＯ制御部８１に通知する。ＳＩＯ制御部８１は、その情報をｄｒｖ＿ｉｎｔレジスタ１０３に格納する。ｄｒｖ＿ｉｎｔレジスタ１０３に格納された情報は、ＣＰＵ６０によって適宜読み出される。
【０１５９】
ＣＰＵ６０は、ｄｒｖ＿ｉｎｔレジスタの内容を読出し、想定している入力遅延時間よりもさらにＳＤＡＴＡ＿ＩＮ信号が一定時間変化しないことを確認した場合、ＳＩＯ制御レジスタ１０１の８ｍａ＿ｏｅ＿ｒｅｇビットに“１”を設定して、４ｍＡＩＯから８ｍＡＩＯにＩ／Ｏ出力バッファを切り替える。
【０１６０】
図１７は、本発明の第２の実施の形態における入力遅延検出回路９１の内部構成を説明するためのブロック図である。この入力遅延検出回路９１は、遅延時間計測回路１１０と、データ不一致検出回路６２と、ＦＦ１（６３）およびＦＦ２（６４）とを含む。また、遅延時間計測回路１１０は、計測制御シーケンサ１１４と、ドライブ切替え検出回路１１５と、遅延時間計測カウンタ１１６とを含む。なお、図１０に示す第１の実施の形態における入力遅延検出回路５３と同様の構成および機能を有する部分については、同じ参照番号を付すものとする。
【０１６１】
計測制御シーケンサ１１４は、ＡＤＪＵＳＴ信号が“Ｈ”レベルとなって受信データ入力遅延検出モードであることを確認し、ＳＩＯ制御部８１からのＳＬＯＡＤ信号がアサートされると、ｃｈｅｃｋ＿ｓｔａｒｔ信号をアサートしてデータ不一致検出回路６２にデータ不一致の検出開始を指示する。
【０１６２】
そして、計測制御シーケンサ１１４は、シリアルクロック制御部３０からのｒｘ＿ｃｌｋ信号の立ち上がりエッジを検出すると、遅延時間計測カウンタ１１６に対してカウント開始を指示する。遅延時間計測カウンタ１１６は、カウント値をドライブ切替え検出回路１１５に出力する。
【０１６３】
ドライブ切替え検出回路１１５は、ｄｒｖ＿ｄａｔａの値と遅延時間計測カウンタ１１６から出力されるカウント値とを比較し、一致したときにＳＩＯ制御部８１に対してｄｒｖ＿ｉｎｔ信号を出力する。
【０１６４】
また、ｄｒｖ＿ｄａｔａの値と遅延時間計測カウンタ１１６から出力されるカウント値とが一致する前に、データ不一致検出回路６２がデータ不一致を検出した場合は、ドライブ切替え検出回路１１５からｄｒｖ＿ｉｎｔ信号は出力されない。
【０１６５】
計測制御シーケンサ１１４は、データ不一致検出回路６２からデータ不一致を検出したことを示すｎｏ＿ｍａｔｃｈ信号を受けるか、ドライブ切替え検出回路１１５がｄｒｖ＿ｉｎｔ信号に“Ｈ”レベルのパルスを出力すると、遅延時間計測カウンタ１１６にカウントの停止を指示し、ｃｈｅｃｋ＿ｓｔａｒｔ信号をネゲートしてデータ不一致検出回路６２にデータ不一致の検出終了を指示する。
【０１６６】
図１８は、図１７に示す入力遅延検出回路９１のドライブ切替え検出動作を説明するためのタイミングチャートである。図１８においては、ｄｒｖ＿ｄａｔａレジスタ１０２に“６”が設定され、Ｉ／Ｏ出力バッファとして４ｍＡＩＯセルブロックが選択されている場合を示している。
【０１６７】
Ｔ１において、計測制御シーケンサ１１４は、データ転送開始時にＳＩＯ制御部８１から出力されるＳＬＯＡＤ信号が“Ｌ”レベルになるのを検出すると、ＡＤＪＵＳＴ信号の“Ｈ”レベルによって受信データ入力遅延検出モードであることを確認し、受信データの入力遅延検出を開始する。
【０１６８】
計測制御シーケンサ１１４は、ｃｈｅｃｋ＿ｓｔａｒｔ信号をアサートし、データ不一致検出回路６２に対してデータ不一致の検出開始を指示すると共に、遅延時間計測カウンタ１１６に対してカウンタの初期化を指示する。Ｔ３において、遅延時間計測カウンタ１１６は、カウント値を“０”に初期化する。
【０１６９】
Ｔ４およびＴ５において、計測制御シーケンサ１１４は、ｒｘ＿ｃｌｋ信号が“Ｌ”レベルから“Ｈ”レベルに変化するのを検出すると、遅延時間計測カウンタ１１６にカウント動作を開始させる。
【０１７０】
Ｔ６において、ｎｏ＿ｍａｔｃｈ信号が“Ｌ”レベルのままであり、遅延時間計測カウンタ１１６のカウント値がｄｒｖ＿ｄａｔａの値と一致する。Ｔ７において、ドライブ切替え検出回路１１５は、ＳＩＯ制御部８１に対してｄｒｖ＿ｉｎｔ信号に“Ｈ”レベルを出力する。
【０１７１】
Ｔ８において、計測制御シーケンサ１１４は、ｄｒｖ＿ｉｎｔ信号が“Ｈ”レベルになったのを検出して、ｃｈｅｃｋ＿ｓｔａｒｔ信号をネゲートして、データ不一致検出回路６２にデータ不一致の検出終了を指示する。
【０１７２】
図１９は、図１７に示す計測制御シーケンサ１１４の処理手順を説明するためのフローチャートである。まず、計測制御シーケンサ１１４は、ＳＩＯ制御部８１から出力されるＡＤＪＵＳＴ信号が“１”であり、かつＳＬＯＡＤ信号が“０”であるか否かを判定する（Ｓ４１）。ＡＤＪＵＳＴ信号が“０”であるか、ＳＬＯＡＤ信号が“１”であれば（Ｓ４１，Ｎｏ）、ステップＳ４１の処理を繰り返す。
【０１７３】
ＡＤＪＵＳＴ信号が“１”であり、かつＳＬＯＡＤ信号が“０”であれば（Ｓ４１，Ｙｅｓ）、ｃｈｅｃｋ＿ｓｔａｒｔ信号を“１”にし、遅延時間計測カウンタ１１６を“０”に初期化する（Ｓ４２）。
【０１７４】
次に、計測制御シーケンサ１１４は、シリアルクロック制御部３０から出力されるｒｘ＿ｃｌｋ信号が“０”であるか否かを判定する（Ｓ４３）。ｒｘ＿ｃｌｋ信号が“１”であれば（Ｓ４３，Ｎｏ）、ステップＳ４３の処理を繰り返す。また、ｒｘ＿ｃｌｋ信号が“０”であれば（Ｓ４３，Ｙｅｓ）、ｒｘ＿ｃｌｋ信号が“１”になるまで待機する（Ｓ４４）。
【０１７５】
ｒｘ＿ｃｌｋ信号が“１”になると（Ｓ４４，Ｙｅｓ）、遅延時間計測カウンタ１１６に対してカウント開始を指示する（Ｓ４５）。これと並行して、ドライブ切替え検出回路１１５は、ドライブ切替え検出動作を開始し、遅延時間計測カウンタ１１６のカウント値がｄｒｖ＿ｄａｔａの値と等しいか否かを判定する（Ｓ５１）。等しい場合には（Ｓ５１，Ｙｅｓ）、ｄｒｖ＿ｉｎｔ信号に“Ｈ”レベルのパルスを出力する（Ｓ５２）。
【０１７６】
計測制御シーケンサ１１４は、データ不一致検出回路６２から出力されるｎｏ＿ｍａｔｃｈ信号が“１”であるか、またはｄｒｖ＿ｉｎｔ信号に“１”が出力されているかを判定する（Ｓ４６）。
【０１７７】
計測制御シーケンサ１１４は、ｎｏ＿ｍａｔｃｈ信号が“１”であるか、ｄｒｖ＿ｉｎｔ信号が“１”であれば（Ｓ４６，Ｙｅｓ）、遅延時間計測カウンタ１１６に対してカウント停止を指示し、データ不一致検出回路６２に対してｃｈｅｃｋ＿ｓｔａｒｔ信号に“０”を出力する（Ｓ４７）。そして、ステップＳ４１に戻って、以降の処理を繰り返す。
【０１７８】
以上説明したように、本実施の形態におけるＩｎｉｔｉａｔｏｒ１によれば、ドライブ切替え検出回路１１５が想定している入力遅延時間よりもさらにＳＤＡＴＡ＿ＩＮ信号が一定時間変化しないことを検出したときにｄｒｖ＿ｉｎｔ信号を出力し、その内容がＳＩＯ制御部８１内のｄｒｖ＿ｉｎｔレジスタ１０３に格納される。そして、ＣＰＵ６０がｄｒｖ＿ｉｎｔレジスタ１０３の内容を読み出してＩ／Ｏ出力バッファを切り替えるようにしたので、第１の実施の形態において説明した効果に加えて、ＳＩＯ通信エラーやデータ転送性能の悪化を防止することが可能となった。
【０１７９】
（第３の実施の形態）
本発明の第３の実施の形態におけるＩｎｉｔｉａｔｏｒは、第２の実施の形態におけるＩｎｉｔｉａｔｏｒと同様に、ＳＤＡＴＡ＿ＩＮ信号が一定時間変化しないことを検出するものであるが、その状態をシリアル通信状態異常としてＣＰＵに通知するものである。
【０１８０】
図２０は、本発明の第３の実施の形態におけるＩｎｉｔｉａｔｏｒのＳＩＯブロックの詳細を説明するための図である。なお、このＳＩＯブロック１０”が、ＣＰＵバス７０を介してＣＰＵ６０と接続される点においは、図７に示すＩｎｉｔｉａｔｏｒ１の構成と同様である。また、図７および図９に示す第１の実施の形態におけるＳＩＯブロック１０と同様の構成および機能を有する部分については、同じ参照番号を付すものとする。
【０１８１】
ＳＩＯブロック１０”は、ＳＩＯ制御部１２０と、シリアルクロック制御部３０と、データ受信制御部１２２とを含む。
【０１８２】
ＳＩＯ制御部１２０は、ＳＤＡＴＡ＿ＩＮ信号が変化しない一定時間を設定するためのｅｒｒ＿ｄａｔａレジスタ１２３と、ＳＤＡＴＡ＿ＩＮ信号が一定時間変化しない場合にシリアル通信異常として設定されるｅｒｒ＿ｉｎｔレジスタ１２４とを含む。
【０１８３】
データ受信制御部１２２は、受信制御シーケンサ５１と、データラッチトリガ回路５２と、データラッチ回路５４と、シリアル・パラレル変換回路５５と、入力遅延検出回路１３１とを含む。
【０１８４】
入力遅延検出回路１３１は、受信データの入力遅延を検出するときに、想定している入力遅延時間よりもさらにＳＤＡＴＡ＿ＩＮ信号が一定時間変化しないか否かを検出する。このＳＤＡＴＡ＿ＩＮ信号が変化しない一定時間が、ＣＰＵ６０によってｅｒｒ＿ｄａｔａレジスタ１２３に設定され、入力遅延検出回路１３１にｅｒｒ＿ｄａｔａ信号として与えられる。
【０１８５】
また、入力遅延検出回路１３１は、想定している入力遅延時間よりもさらにＳＤＡＴＡ＿ＩＮ信号が一定時間変化しないこと、すなわち、入力遅延の計測値がｅｒｒ＿ｄａｔａとして設定された値と等しいことを検出したときに、ｅｒｒ＿ｉｎｔ信号によってＳＩＯ制御部１２０に通知する。ＳＩＯ制御部１２０は、その情報をｅｒｒ＿ｉｎｔレジスタ１２４に格納する。ｅｒｒ＿ｉｎｔレジスタ１２４に格納された情報は、ＣＰＵ６０によって適宜読み出される。
【０１８６】
ＣＰＵ６０は、ｅｒｒ＿ｉｎｔレジスタ１２４の内容を読出し、想定している入力遅延時間よりもさらにＳＤＡＴＡ＿ＩＮ信号が一定時間変化しないことを確認した場合、シリアル通信異常が発生していると判断する。
【０１８７】
図２１は、本発明の第３の実施の形態における入力遅延検出回路１３１の内部構成を説明するためのブロック図である。この入力遅延検出回路１３１は、遅延時間計測回路１４１と、データ不一致検出回路６２と、ＦＦ１（６３）およびＦＦ２（６４）とを含む。また、遅延時間計測回路１４１は、計測制御シーケンサ１５１と、シリアル通信エラー検出回路１５２と、遅延時間計測カウンタ１５３とを含む。なお、図１０に示す第１の実施の形態における入力遅延検出回路５３と同様の構成および機能を有する部分については、同じ参照番号を付すものとする。
【０１８８】
計測制御シーケンサ１５１は、ＡＤＪＵＳＴ信号が“Ｈ”レベルとなって受信データ入力遅延検出モードであることを確認し、ＳＩＯ制御部１２０からのＳＬＯＡＤ信号がアサートされると、ｃｈｅｃｋ＿ｓｔａｒｔ信号をアサートしてデータ不一致検出回路６２にデータ不一致の検出開始を指示する。
【０１８９】
そして、計測制御シーケンサ１５１は、シリアルクロック制御部３０からのｒｘ＿ｃｌｋ信号の立ち上がりエッジを検出すると、遅延時間計測カウンタ１５３に対してカウント開始を指示する。遅延時間計測カウンタ１５３は、カウント値をシリアル通信エラー検出回路１５２に出力する。
【０１９０】
シリアル通信エラー検出回路１５２は、ｅｒｒ＿ｄａｔａの値と遅延時間計測カウンタ１５３から出力されるカウント値とを比較し、一致したときにＳＩＯ制御部１２０に対してｅｒｒ＿ｉｎｔ信号を出力する。
【０１９１】
また、ｅｒｒ＿ｄａｔａの値と遅延時間計測カウンタ１５３から出力されるカウント値とが一致する前に、データ不一致検出回路６２がデータ不一致を検出した場合は、シリアル通信エラー検出回路１５２からｅｒｒ＿ｉｎｔ信号は出力されない。
【０１９２】
計測制御シーケンサ１５１は、データ不一致検出回路６２からデータ不一致を検出したことを示すｎｏ＿ｍａｔｃｈ信号を受けるか、シリアル通信エラー検出回路１５２がｅｒｒ＿ｉｎｔ信号に“Ｈ”レベルのパルスを出力すると、遅延時間計測カウンタ１５３にカウントの停止を指示し、ｃｈｅｃｋ＿ｓｔａｒｔ信号をネゲートしてデータ不一致検出回路６２にデータ不一致の検出終了を指示する。
【０１９３】
図２２は、図２１に示す入力遅延検出回路１３１のシリアル通信エラー検出動作を説明するためのタイミングチャートである。図２２においては、ｅｒｒ＿ｄａｔａレジスタ１２３に“１４”が設定されている場合を示している。
【０１９４】
Ｔ１において、計測制御シーケンサ１５１は、データ転送開始時にＳＩＯ制御部１２０から出力されるＳＬＯＡＤ信号が“Ｌ”レベルになるのを検出すると、ＡＤＪＵＳＴ信号の“Ｈ”レベルによって受信データ入力遅延検出モードであることを確認し、受信データの入力遅延検出を開始する。
【０１９５】
計測制御シーケンサ１５１は、ｃｈｅｃｋ＿ｓｔａｒｔ信号をアサートし、データ不一致検出回路６２に対してデータ不一致の検出開始を指示すると共に、遅延時間計測カウンタ１５３に対してカウンタの初期化を指示する。Ｔ３において、遅延時間計測カウンタ１５３は、カウント値を“０”に初期化する。
【０１９６】
Ｔ４およびＴ５において、計測制御シーケンサ１５１は、ｒｘ＿ｃｌｋ信号が“Ｌ”レベルから“Ｈ”レベルに変化するのを検出すると、遅延時間計測カウンタ１５３にカウント動作を開始させる。
【０１９７】
Ｔ６において、ｎｏ＿ｍａｔｃｈ信号が“Ｌ”レベルのままであり、遅延時間計測カウンタ１５３のカウント値がｅｒｒ＿ｄａｔａの値と一致する。Ｔ７において、シリアル通信エラー検出回路１５２は、ＳＩＯ制御部１２０に対してｅｒｒ＿ｉｎｔ信号に“Ｈ”レベルを出力する。
【０１９８】
Ｔ８において、計測制御シーケンサ１５１は、ｅｒｒ＿ｉｎｔ信号が“Ｈ”レベルになったのを検出して、ｃｈｅｃｋ＿ｓｔａｒｔ信号をネゲートして、データ不一致検出回路６２にデータ不一致の検出終了を指示する。
【０１９９】
図２３は、図２１に示す計測制御シーケンサ１５１の処理手順を説明するためのフローチャートである。まず、計測制御シーケンサ１５１は、ＳＩＯ制御部１２０から出力されるＡＤＪＵＳＴ信号が“１”であり、かつＳＬＯＡＤ信号が“０”であるか否かを判定する（Ｓ６１）。ＡＤＪＵＳＴ信号が“０”であるか、ＳＬＯＡＤ信号が“１”であれば（Ｓ６１，Ｎｏ）、ステップＳ６１の処理を繰り返す。
【０２００】
ＡＤＪＵＳＴ信号が“１”であり、かつＳＬＯＡＤ信号が“０”であれば（Ｓ６１，Ｙｅｓ）、ｃｈｅｃｋ＿ｓｔａｒｔ信号を“１”にし、遅延時間計測カウンタ１５３を“０”に初期化する（Ｓ６２）。
【０２０１】
次に、計測制御シーケンサ１５１は、シリアルクロック制御部３０から出力されるｒｘ＿ｃｌｋ信号が“０”であるか否かを判定する（Ｓ６３）。ｒｘ＿ｃｌｋ信号が“１”であれば（Ｓ６３，Ｎｏ）、ステップＳ６３の処理を繰り返す。また、ｒｘ＿ｃｌｋ信号が“０”であれば（Ｓ６３，Ｙｅｓ）、ｒｘ＿ｃｌｋ信号が“１”になるまで待機する（Ｓ６４）。
【０２０２】
ｒｘ＿ｃｌｋ信号が“１”になると（Ｓ６４，Ｙｅｓ）、遅延時間計測カウンタ１５３に対してカウント開始を指示する（Ｓ６５）。これと並行して、シリアル通信エラー検出回路１５２は、シリアル通信エラー検出動作を開始し、遅延時間計測カウンタ１５３のカウント値がｅｒｒ＿ｄａｔａの値と等しいか否かを判定する（Ｓ７１）。等しい場合には（Ｓ７１，Ｙｅｓ）、ｅｒｒ＿ｉｎｔ信号に“Ｈ”レベルのパルスを出力する（Ｓ７２）。
【０２０３】
計測制御シーケンサ１５１は、データ不一致検出回路６２から出力されるｎｏ＿ｍａｔｃｈ信号が“１”であるか、またはｅｒｒ＿ｉｎｔ信号に“１”が出力されているかを判定する（Ｓ６６）。
【０２０４】
計測制御シーケンサ１５１は、ｎｏ＿ｍａｔｃｈ信号が“１”であるか、ｅｒｒ＿ｉｎｔ信号が“１”であれば（Ｓ６６，Ｙｅｓ）、遅延時間計測カウンタ１５３に対してカウント停止を指示し、データ不一致検出回路６２に対してｃｈｅｃｋ＿ｓｔａｒｔ信号に“０”を出力する（Ｓ６７）。そして、ステップＳ６１に戻って、以降の処理を繰り返す。
【０２０５】
以上説明したように、本実施の形態におけるＩｎｉｔｉａｔｏｒ１によれば、シリアル通信エラー検出回路１５２が想定している入力遅延時間よりもさらにＳＤＡＴＡ＿ＩＮ信号が一定時間変化しないことを検出したときにｅｒｒ＿ｉｎｔ信号を出力し、その内容がＳＩＯ制御部１２０内のｅｒｒ＿ｉｎｔレジスタ１２４に格納される。そして、ＣＰＵ６０がｅｒｒ＿ｉｎｔレジスタ１２４の内容を読み出すようにしたので、第１の実施の形態において説明した効果に加えて、ＣＰＵ６０がシリアル通信エラーの発生の有無を容易に判定することが可能となった。
【０２０６】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２０７】
１，３００  Ｉｎｉｔｉａｔｏｒ、２，４００  Ｔａｒｇｅｔ、１０，１０’，１０”，３１０  ＳＩＯブロック、２０，８１，１２０，３２０  ＳＩＯ制御部、２１，３２１  ＳＩＯ送受信制御部、２２  レジスタ群、２３  ＣＰＵバスＩ／Ｆ、２４，１０１，３２４  ＳＩＯ制御レジスタ、２５  ｉｎｐｕｔ＿ｄｅｌａｙレジスタ、２６  ａｄｊ＿ｄｅｌａｙレジスタ、２７  ｌａｔｃｈ＿ｃｙｃレジスタ、３０，３３０  シリアルクロック制御部、４０，３４０  データ送信制御部、５０，８４，１２２，３５０  データ受信制御部、５１  受信制御シーケンサ、５２  データラッチトリガ回路、５３  入力遅延検出回路、５４  データラッチ回路、５５  シリアル・パラレル変換回路、５６  受信データビットカウンタ、５７  遅延調整回路、６０，３６０  ＣＰＵ、６１，１１０  遅延時間計測回路、６２  データ不一致検出回路、６３，６４  フリップフロップ、６５，１１４，１５１  計測制御シーケンサ、６６，１１６，１５３  遅延時間計測カウンタ、７０，３７０  ＣＰＵバス、７１  データラッチトリガ制御シーケンサ、７２  ｄａｔａ＿ｅｎ調整カウンタ、７３  ｄａｔａ＿ｅｎ周期カウンタ、８５−１〜８５−４  ４ｍＡＩＯ、８６−１〜８６−４  ８ｍＡＩＯ、９１，１３１  入力遅延検出回路、１０２  ｄｒｖ＿ｄａｔａレジスタ、１０３  ｄｒｖ＿ｉｎｔレジスタ、１１５  ドライブ切替え検出回路、１２３  ｅｒｒ＿ｄａｔａレジスタ、１２４  ｅｒｒ＿ｉｎｔレジスタ、１５２  シリアル通信エラー検出回路、２０１  送信データ回路、２０２  データ出力回路、３２５  送信データレジスタ、３２６  受信データレジスタ。
【図１】
2011010178.tif 000003
【図２】
2011010178.tif 000004
【図３】
2011010178.tif 000005
【図４】
2011010178.tif 000006
【図５】
2011010178.tif 000007
【図６】
2011010178.tif 000008
【図７】
2011010178.tif 000009
【図８】
2011010178.tif 000010
【図９】
2011010178.tif 000011
【図１０】
2011010178.tif 000012
【図１１】
2011010178.tif 000013
【図１２】
2011010178.tif 000014
【図１３】
2011010178.tif 000015
【図１４】
2011010178.tif 000016
【図１５】
2011010178.tif 000017
【図１６】
2011010178.tif 000018
【図１７】
2011010178.tif 000019
【図１８】
2011010178.tif 000020
【図１９】
2011010178.tif 000021
【図２０】
2011010178.tif 000022
【図２１】
2011010178.tif 000023
【図２２】
2011010178.tif 000024
【図２３】
2011010178.tif 000025