(57)【要約】【課題】短い転送時間でエラーなくデータを転送する。【解決手段】メインＣＰＵ２は、コマンドを３つのブロックに分割してサブＣＰＵ３に出力する。サブＣＰＵ３は、メインＣＰＵ２から出力されるデータを全て受信するとＯＰＴＩＯＮの出力を”Ｌｏｗ”から”Ｈｉｇｈ”に切り換える。メインＣＰＵ２は、３つのブロックを出力してから、ＯＰＴＩＯＮの出力が”Ｈｉｇｈ”になるまでの受信完了時間を計測し、受信完了時間がエラー判別時間を超えると、エラーを検出する。メインＣＰＵ２は、エラーを検出するとサブＣＰＵ３にコマンドを再送する。【選択図】　図１
2004064699.tif 000002
【特許請求の範囲】
【請求項１】
第１のチップと第２のチップとの間でシリアル転送を行うデータ送受信システムにおいて、
上記第１のチップは、
送信する一連のデータを複数のブロックに分割する分割手段と、
上記ブロックを上記第２のチップに送信する送信手段と
を有し、
上記第２のチップは、
上記第１のチップから送信されるブロックを受信する受信手段と、
上記分割手段によって分割された全てのブロックを受信したときに受信完了信号を上記第１のチップに通知する通知手段と
を有し、
上記第１のチップは、上記分割された複数のブロックの全てを上記送信手段により送信完了した時間から上記受信完了信号を受けるまでの受信完了時間を計測し、上記受信完了時間が所定の長さを超えると転送エラーを検出するエラー検出手段と、
上記エラー検出手段により、エラーを検出すると、上記第２のチップに対して上記一連のデータを再送する再送手段と
を有することを特徴とするデータ送受信システム。
【請求項２】
上記一連のデータの長さは１２バイトであり、上記分割手段は、上記一連のデータを長さ４バイトの３つのブロックに分割することを特徴とする請求項１記載のデータ送受信システム。
【請求項３】
第１のチップと第２のチップとの間でシリアル転送を行う際のデータ送受信方法であって、
上記第１のチップが送信する一連のデータを複数のブロックに分割する分割工程と、
上記第１のチップが上記第２のチップに上記ブロックを送信する送信工程と、
上記第２のチップが上記送信工程において送信されたブロックを受信する受信工程と、
上記第２のチップが上記分割工程において分割された全てのブロックを受信したときに上記第１のチップに受信完了信号を通知する通知工程と、
上記第１のチップが上記分割された複数のブロックの全てを上記送信工程によって送信完了した時刻から上記受信完了信号を受けるまでの受信完了時間を計測し、この時間が所定の長さを超えるとデータの転送エラーを検出するエラー検出工程と、
上記第１のチップが上記エラー検出工程によってエラー検出すると、上記第２のチップに対して上記一連のデータの再送を行う再送工程と
を有することを特徴とするデータ送受信方法。
【請求項４】
上記一連のデータの長さは１２バイトであり、上記分割工程は、上記一連のデータを長さ４バイトの３つのブロックに分割することを特徴とする請求項３記載のデータ送受信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、チップ間でデータの送受信を行うためのデータ送受信システムおよびデータ送受信方法に関する。
【０００２】
【従来の技術】
従来、複数のチップを内蔵する電子機器が存在し、このような電子機器の内部では、複数のチップが互いに通信を行っている。複数のチップが互いに通信をする場合、例えば、データをパケット化して転送する場合がある。パケット化とは、データを分割し、転送できる形式に変換することであり、分割したデータの先頭にスタートビット、終端にチェックサムを付属して、パケットを生成する。
【０００３】
スタートビットは、データ転送の同期をとるための信号であり、受信側のチップは、スタートビットを検出すると、新しいデータが転送されることを認識する。また、チェックサムは、エラー検出のためのデータであり、送信するデータの和が記録されている。受信側のチップは、受信したデータの和とチェックサムの値を比較し、これらの値が一致しなかった場合ときに転送エラーを検出する。
【０００４】
このように、データを分割して転送すると、一回の転送あたりのデータ量が小さくなり、転送エラーが減少するとともに、一つのデータが回線を占有することがなくなり、データの転送効率が上がる。
【０００５】
【発明が解決しようとする課題】
しかしながら、データをパケット化すると、スタートビットとチェックサムとが付属されるのでスタートビットとチェックサムの分だけデータの容量が大きくなり、データ転送時間が長くなる。そのため、スタートビットとチェックサムを削減しデータの転送時間を短くする方法が考えられる。
【０００６】
そこで、スタートビットとチェックサムを削減すると、転送エラーによってパケットが欠落したとき、パケットの順番は、欠落した分だけずれてしまう。これを解消するために、インジケータのようなパケットの順番を示すデータを付加し、パケットのずれを訂正できるようにしなければならない。
【０００７】
しかし、インジケータのようなデータを付加すると、データを付加した分だけ転送するデータの容量が大きくなるので、スタートビットとチェックサムを削減してもデータの転送容量を削減させることができない。
【０００８】
本発明は、上記課題に鑑みてなされたものであって、短い転送時間でエラーなくデータを転送するデータ送受信システムおよびデータ送受信方法に関する。
【０００９】
【課題を解決するための手段】
上述した課題を解決するために、本発明にかかるデータ送受信システムは、第１のチップと第２のチップとの間でシリアル転送を行うデータ送受信システムにおいて、第１のチップは、送信する一連のデータを複数のブロックに分割する分割手段と、ブロックを第２のチップに送信する送信手段とを有し、第２のチップは、第１のチップから送信されるブロックを受信する受信手段と、分割手段によって分割された全てのブロックを受信したときに受信完了信号を第１のチップに通知する通知手段とを有し、第１のチップは、分割された複数のブロックの全てを送信手段により送信完了した時間から受信完了信号を受けるまでの受信完了時間を計測し、受信完了時間が所定の長さを超えると転送エラーを検出するエラー検出手段と、エラー検出手段により、エラーを検出すると、第２のチップに対して一連のデータを再送する再送手段とを有する。
【００１０】
また、上述の目的を達成するために本発明にかかるデータ送受信方法は、第１のチップと第２のチップとの間でシリアル転送を行う際のデータ送受信方法であって、上記第１のチップが送信する一連のデータを複数のブロックに分割する分割工程と、第１のチップが第２のチップにブロックを送信する送信工程と、第２のチップが送信工程において送信されたブロックを受信する受信工程と、第２のチップが分割工程において分割された全てのブロックを受信したときに第１のチップに受信完了信号を通知する通知工程と、第１のチップが分割された複数のブロックの全てを送信工程によって送信完了した時刻から受信完了信号を受けるまでの受信完了時間を計測し、この時間が所定の長さを超えるとデータの転送エラーを検出するエラー検出工程と、第１のチップが上記エラー検出工程によってエラー検出すると、第２のチップに対して一連のデータの再送を行う再送工程とを有することを特徴とする。
【００１１】
【発明の実施の形態】
以下、本発明を適用したデータ送受信システム１について説明する。本発明におけるデータ送受信システム１は、チップ間でシリアル転送を行うためのシステムである。このデータ送受信システム１では、送信するデータを複数のブロックに分割して転送する。エラー検出は、データの転送完了時間をもとに行われる。送信側のチップは、すべてのデータの出力が完了すると、受信側からの受信完了信号が返信されるまでの時間をカウントし、この時間が所定の時間より長い場合にエラーを検出する。データ送受信システム１では、データを複数のブロックに分割し、一度に転送するデータのデータ長を短くしてデータの転送エラーを減少させるとともに、データの転送完了時間をもとにエラーを検出するため、エラー検出用の制御信号を少なくし、転送データ量を削減することができる。
【００１２】
図１は、データ送受信システム１の構成を示している。図１に示すデータ送受信システム１は、メインＣＰＵ２とサブのサブＣＰＵ３とを有し、サブＣＰＵ３はメインＣＰＵ２により制御されている。メインＣＰＵ２とサブＣＰＵ３とは、シリアルバス４によって接続されている。シリアルバス４は、割り込み発生を通知する信号ＣＳ、シリアルクロックＳＣＫ、メインＣＰＵ２からサブＣＰＵ３に伝送されるデータ、サブＣＰＵ３からメインＣＰＵ２に転送されるデータを転送する。メインＣＰＵからサブＣＰＵへ転送されるデータを入出力する端子をＳＩと呼び、サブＣＰＵからメインＣＰＵへ転送されるデータを入出力するための端子をＳＯと呼ぶ。また、サブＣＰＵ３とメインＣＰＵ２は、サブＣＰＵ３のデータ受信完了を示す信号ＯＰＴＩＯＮを転送する信号線５が接続されている。
【００１３】
サブＣＰＵ３は、メインＣＰＵ２からのコマンドを受信し、メインＣＰＵ２からの制御を受ける。サブＣＰＵ３は、メインＣＰＵ２から送信されるデータＳＯを入力する。サブＣＰＵ３は、シリアル通信で送受信されるデータを格納するためのシリアルデータレジスタ６を備えており、シリアルクロックの立下りに同期して、メインＣＰＵ２から出力される信号をシリアルデータレジスタ６に格納する。また、サブＣＰＵ３は、データをシリアルデータレジスタ６に格納し、シリアルクロックの立ち上がりに同期してシリアルデータレジスタ６の値をメインＣＰＵ２に出力する。
【００１４】
また、サブＣＰＵ３は、サブＣＰＵ３がデータの通信状態であるか否を示す信号ＯＰＴＩＯＮを出力しており、データの通信可能状態であるときは、ＯＰＴＩＯＮの出力を”Ｌｏｗ”にし、データの通信状態であるときは、ＯＰＴＩＯＮの出力を”Ｈｉｇｈ”にする。
【００１５】
メインＣＰＵ２は、サブＣＰＵ３を制御するＣＰＵであり、サブＣＰＵ３に対してコマンドを出力する。メインＣＰＵ２がコマンドを出力するときの手順は以下のようになる。メインＣＰＵ２は、まず、割り込み信号ＣＳを”Ｌｏｗ”にする。そして、メインＣＰＵ２は、コマンドを転送できる形式に変換する。変換されたコマンドは、３つブロックに分割されており、コマンドの１１バイト目にはチェックサムが挿入されている。そして、メインＣＰＵ２は、ＯＰＴＩＯＮの出力を検出し、ＯＰＴＩＯＮの出力が”Ｌｏｗ”であれば、信号線ＳＩを介してコマンドを１ブロックづつ出力する。
【００１６】
次に、図２、図３を参照して、本発明を適用したデータ送受信システム１の動作について説明する。なお、図２、図３に示すＤＡＴＡとは、データの転送が行われているタイミングを示しており、ＤＡＴＡに描かれた一本のパルスは、１バイトのデータに相当する。
【００１７】
図２は、データ転送が正常に行われたときの信号ＣＳ、ＯＰＴＩＯＮの値を示している。図２に示すように、メインＣＰＵ２がサブＣＰＵ３にコマンドを出力する際、メインＣＰＵ２は、ＣＳの出力を”Ｌｏｗ”にし、サブＣＰＵ３に対して割り込み要求を行う。割り込み要求を受けたサブＣＰＵ３は、転送されたデータを格納するためのシリアルデータレジスタ６を用意する。そして、サブＣＰＵ３は、ＯＰＴＩＯＮの出力を”Ｈｉｇｈ”に切り換え、通信状態であることをメインＣＰＵ２に通知する。ＯＰＴＩＯＮの出力が”Ｈｉｇｈ”になると、メインＣＰＵ２は、出力するコマンドの形式を変換する。コマンド形式の変換方法の一例を説明する。例えば、コマンドのデータ長が１２バイトのとき、メインＣＰＵ２は、コマンドを４バイトづつの３つのブロックに分割し、コマンドの１１バイト目にチェックサムを挿入する。チェックサムは、例えば、コマンドの０バイト目から１０バイト目までの値の和とするが、チェックサムの計算方法は特に限定されない。
【００１８】
コマンドの形式を変換すると、メインＣＰＵ２は、端子ＳＩを介して、コマンドをサブＣＰＵ３に出力する。サブＣＰＵ３は、入力したコマンドをシリアルデータレジスタ６に格納するとともに、端子ＳＯを介してシリアルデータレジスタ６に格納されたデータをメインＣＰＵ２に出力する。
【００１９】
メインＣＰＵ２とサブＣＰＵ３とのデータ転送は、１ブロックごとに行われる。メインＣＰＵ２は、１ブロックのデータ出力を開始するとき、ＣＳの出力を”Ｌｏｗ”にし、１ブロックのデータ出力が完了するとＣＳの出力を”Ｈｉｇｈ”にする。
【００２０】
サブＣＰＵ３は、メインＣＰＵ２から出力された３つのブロックを受信すると、３ブロック目のデータに記録されたチェックサムの値を読み出し、０バイト目から１１バイト目までの値の合計と比較する。そして、０バイト目から１１バイト目までの値の合計とチェックサムの値とが一致すると、サブＣＰＵ３は、ＯＰＴＩＯＮの出力を”Ｌｏｗ”に切り換え、データの受信完了をメインＣＰＵ２に通知する。
【００２１】
メインＣＰＵ２は、最後のブロックを出力してからＯＰＴＩＯＮの値が”Ｌｏｗ”になるまでの時間（以下、受信完了時間と呼ぶ）を計測し、受信完了時間が所定の範囲内であれば、データ転送処理を終了する。
【００２２】
データ転送が正常に完了しない場合には、データ送受信システム１の動作は、以下のようになる。図３は、データ転送が正常に完了しない場合の信号ＣＳ、ＯＰＴＩＯＮの値を示した図である。図３に示すように、メインＣＰＵ２とサブＣＰＵ３とのデータ転送は、１ブロックごとに行われる。メインＣＰＵ２は、１ブロックのデータ出力を開始するとき、ＣＳの出力を”Ｌｏｗ”にし、１ブロックのデータ出力が完了するとＣＳの出力を”Ｈｉｇｈ”にする。
【００２３】
メインＣＰＵ２は、サブＣＰＵ３に３ブロックのデータを出力する。このとき、メインＣＰＵ２から出力されたブロックがサブＣＰＵ３に到達しなかった場合、サブＣＰＵ３は、ＯＰＴＩＯＮの出力を”Ｈｉｇｈ”の状態で継続し、データの受信が完了していないことをメインＣＰＵに通知する。
【００２４】
また、サブＣＰＵ３は、メインＣＰＵ２から出力されたすべてのブロックを受信すると、受信したデータの０バイト目から１０バイト目までの和を求め、チェックサムと比較する。ここで、データの０バイト目から１０バイト目までの値の和がチェックサムと一致しない場合には、ＯＰＴＩＯＮの出力を”Ｈｉｇｈ”の状態で継続する。
【００２５】
メインＣＰＵ２は、最後のブロックを出力してからＯＰＴＩＯＮの値が”Ｌｏｗ”になるまでの受信完了時間を計測する。ここで、サブＣＰＵ３がすべてのブロックを受信できなかった場合やチェックサムの値が一致しなかった場合には、ＯＰＴＩＯＮの値は、”Ｈｉｇｈ”のまま出力される。メインＣＰＵ２は、受信完了時間がエラー判別時間を超えると、転送エラーを検出する。メインＣＰＵ２は、転送エラーを検出すると、データの再送を行う。なお、エラー判別時間は、システムにより異なり、各々のデータ送受信システムに設定されているものとする。
【００２６】
本発明では、データを３つのブロックに分割したため、一度に転送するデータの量が少なくなり、データの転送エラーが減少する。また、データ転送の時間をもとにエラーの検出を行うので、データを複数のブロックに分割しても、各ブロックにエラー検出用の制御情報を挿入する必要はなく、効率よくデータの転送ができる。
【００２７】
次に、データ送受信システム１が１ブロックのデータを転送するときの動作について説明する。図４は、メインＣＰＵ２からサブＣＰＵ３へコマンドを転送するときのＣＳ、ＳＣＫ、ＳＩ、ＳＯの値を示している。上述したように、ＣＳはメインＣＰＵ２からサブＣＰＵ３に割り込み要求を示す信号、ＳＣＫはシリアル通信の基準となるシリアルクロック、ＳＩはメインＣＰＵ２からサブＣＰＵ３に転送されるデータの入出力端子、ＳＯはサブＣＰＵ３からメインＣＰＵ２に転送されるデータの入出力端子である。
【００２８】
まず、メインＣＰＵ２は、ＣＳを”Ｌｏｗ”にし、サブＣＰＵ３に対して割り込みを要求する。そして、メインＣＰＵ２は、シリアルクロックＳＣＫおよびデータＳＩをサブＣＰＵ３に転送する。１ブロックのデータは４バイトのデータから構成され、１バイトのデータは８ビットのデータから構成される。シリアルクロックは、連続した８回のパルスを所定の間隔Ｔｓをあけて４回発生し、１ブロックのデータを転送させる。
【００２９】
メインＣＰＵ２からサブＣＰＵ３に転送されるデータは、シリアルクロックの立下りに同期して転送され、サブＣＰＵ３からメインＣＰＵ２に転送されるデータは、シリアルクロックＳＣＫの立ち上がりに同期して転送される。
【００３０】
サブＣＰＵ３には、図５に示すようなシリアルデータを格納するためのシリアルデータレジスタ６が設けられている。サブＣＰＵ３は、入力した信号ＳＩの１ビットをシリアルデータレジスタ６の最上位ビット（ＭＳＢ）に格納する。また、シリアルデータレジスタ６の最下位ビット（ＬＳＢ）の値は、シリアルクロックの立下りに同期して、メインＣＰＵ２に出力される。このように、サブＣＰＵ３とメインＣＰＵ２の間では、シリアルクロックに同期したデータの送受信が行われる。
【００３１】
上記のデータの送受信のタイミングは、ＣＰＵの特性などをもとに規定されている。具体的には、ＣＳが”Ｌｏｗ”に切り換わったときからシリアルクロック発生までの時間ＴＳＯは５０μｓ以上であり、ＣＳが”Ｌｏｗ”に切り換わったときから１バイト分のシステムクロックを発生した時間ＴＢＯは５．２ｍｓ以下であり、システムクロックの終了から次のシステムクロックの発生までの時間ＴＳは２５μｓ以上であり、システムクロックの終了から次のシステムクロックの終了までの時間ＴＢは５．２ｍｓ以下である。また、１ブロック目のデータ転送が完了し２ブロック目のデータ転送が開始するまでの時間および２ブロック目のデータ転送が完了し３ブロック目のデータ転送が開始するまでの時間ＴＣＳは１００μｓ〜４００ｍｓ、コマンドの転送完了から次のコマンドの転送が開始するまでの時間ＴＣＳは１００μｓ〜５００ｍｓであり、シリアルクロックの１周期分の時間は１．０７μｓである。以上のように、タイミングで駆動するデータ送受信システム１では、エラー判別時間は５００ｍｓになり、受信完了時間が５００ｍｓの間”Ｈｉｇｈ”であれば、メインＣＰＵ２は、転送エラーを検出し、コマンドの再送を行う。
【００３２】
次に、上述したデータ送受信システムを適応した例について説明する。図６は、データ送受信システムを適応した電子機器１０の内部構成を示すブロック図である。電子機器１０は、第２のＣＰＵ１２と第１のＣＰＵ１１と第３のＣＰＵ１３とを有する。第２のＣＰＵ１２は、複数のＩＣ１４ａ〜１４ｄと接続され、これらのＩＣ１４ａ〜１４ｄを制御する。第３のＣＰＵ１３はパラレル転送を行い、第２のＣＰＵ１２はシリアル転送を行う。第１のＣＰＵ１１はパラレル転送とシリアル転送の両方が可能であり、第２のＣＰＵ１２と第１のＣＰＵ１１との間のデータ転送を中継する。
【００３３】
第２のＣＰＵ１２と第１のＣＰＵ１１との間は、上述したデータ送受信システムが適応されている。一般に、パラレル転送は、シリアル転送よりも転送速度が速い。そのため、第３のＣＰＵ１３から第２のＣＰＵ１２にデータを転送するときは、パラレル転送とシリアル転送との転送速度の違いを埋める必要がある。この第２のＣＰＵ１２と第１のＣＰＵ１１との間には、上述したデータ送受信システムが適応されており、一度に多くのデータが転送できるようになっている。そのため、パラレル転送とシリアル転送との転送速度の差が減少し、データ転送が安定する。
【００３４】
なお、本発明は、上記実施の形態に限定されるものではなく、本発明の要旨を含む範囲での変形、改良は本発明に含まれるものとする。例えば、上記実施の形態において、データ長１２バイトのコマンドを３つのブロックに分割するとしたが、コマンドのデータ長やブロックの個数は特に限定されるものではなく、任意のサイズのコマンドを任意の個数のブロックに分割してもよい。
【００３５】
また、メインＣＰＵ２とサブＣＰＵ３とは、等価な２つのＣＰＵとしてもよく、コマンドを送受信するのではなく、互いにデータを送受信するものとしてもよい。
【００３６】
また、ＣＰＵの個数も特に限定されるものではなく、２つ以上のＣＰＵを接続して、同じ手順でデータの送受信を行ってもよい。
【００３７】
【発明の効果】
上述したように、本発明を適用したデータ送受信システムでは、送信側のチップは、送信するデータを複数のブロックに分割して送信する。送信側のチップは、全てのブロックの送信を完了すると、受信側のチップから送信される受信完了信号が通知されるまでの時間をカウントし、この時間が所定の長さを超えると転送エラーを検出する。送信側のチップは、転送エラーを検出すると、データの再送を行う。
【００３８】
このように、本発明を適用したデータ送受信システムでは、転送エラーの検出に受信完了信号が通知されるまでの時間を利用するので、データ転送量が削減され、短い転送時間でエラーなくデータを転送することができる。
【００３９】
また、本発明を適用したデータ送受信方法は、送信側のチップは、送信するデータを複数のブロックに分割して送信する。送信側のチップは、全てのブロックの送信を完了すると、受信側のチップから送信される受信完了信号が通知されるまでの時間をカウントし、この時間が所定の長さを超えると転送エラーを検出する。送信側のチップは、転送エラーを検出すると、データの再送を行う。
【００４０】
このように、本発明を適用したデータ送受信システムでは、転送エラーの検出に受信完了信号が通知されるまでの時間を利用するので、データ転送量が削減され、短い転送時間でエラーなくデータを転送することができる。
【図面の簡単な説明】
【図１】本発明を適用したデータ送受信システムの構成を示す図である。
【図２】本発明を適用したデータ送受信システムの動作を説明する図である。
【図３】本発明を適用したデータ送受信システムの動作を説明する図である。
【図４】１ブロックのデータを送信するときの信号の変化を示す図である。
【図５】シリアルデータレジスタの構造を示す図である。
【図６】本発明を適用した電子機器の構成を示す図である。
【符号の説明】
１　データ送受信システム、２　メインＣＰＵ、３　サブＣＰＵ、４　シリアルバス、５　信号線、６　シリアルデータレジスタ
【図１】
2004064699.tif 000003
【図２】
2004064699.tif 000004
【図３】
2004064699.tif 000005
【図４】
2004064699.tif 000006
【図５】
2004064699.tif 000007
【図６】
2004064699.tif 000008