(57)【要約】【課題】データとストローブとのスキューがばらつくことで生じるＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）エラーの頻発を防ぐとともに、転送レートの低下を防止し、かつデータの高信頼性を確保する。【解決手段】入力データと入力ストローブとの位相を複数通りにずらして計算することによりＣＲＣ演算部２３で得られる複数のＣＲＣコードと、データ転送終了後に送信機器から転送されるＣＲＣコードとをそれぞれＣＲＣ比較回路２５で比較し、それらの比較結果に応じてデータ確定部２８で入力データと入力ストローブとの位相を調整することにより受信データを確定する。【選択図】        図２
2004213438.tif 000002
【特許請求の範囲】
【請求項１】
送信機器から転送されるデータとストローブとを受け取るデータ転送回路であって、
入力データと入力ストローブとの位相を複数にずらして複数組のデータとストローブとを出力するためのＣＲＣ演算用位相制御回路と、
前記ＣＲＣ演算用位相制御回路から出力されたデータとストローブとの各組をもとにＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）コードをそれぞれ演算するための複数の演算回路を有するＣＲＣ演算部と、
データ転送終了後に前記送信機器から転送されるＣＲＣコードを、前記送信機器から転送されるＣＲＣ用ストローブに応答してラッチするためのＣＲＣラッチ回路と、
前記ＣＲＣ演算部の複数の出力のうちのいずれが前記ＣＲＣラッチ回路の出力と一致しているかを判定するように、前記ＣＲＣ演算部の複数の出力と前記ＣＲＣラッチ回路の出力とをそれぞれ比較するためのＣＲＣ比較回路と、
前記ＣＲＣ演算用位相制御回路からのデータとストローブとの各組の出力のうち前記ＣＲＣ比較回路の判定結果に対応する組の出力に基づいて受信データを確定するためのデータ確定部とを備えたことを特徴とするデータ転送回路。
【請求項２】
請求項１記載のデータ転送回路において、
前記データ確定部は、
前記ＣＲＣ演算用位相制御回路からのデータとストローブとの各組の出力のうち前記ＣＲＣ比較回路の判定結果に対応する組の出力を選択するための選択回路と、
前記選択回路により選択された組のストローブに基づいて、当該組のデータを前記受信データとして取り込むためのデータ取り込み部とを有することを特徴とするデータ転送回路。
【請求項３】
請求項１記載のデータ転送回路において、
前記ＣＲＣラッチ回路は、
前記ＣＲＣコードと前記ＣＲＣ用ストローブとの位相を複数にずらして前記ＣＲＣコードをラッチするためのラッチ回路と、
前記ラッチ回路の複数の出力の中から前記ＣＲＣ比較回路へ供給すべきＣＲＣコードを多数決により決定するための多数決回路とを有することを特徴とするデータ転送回路。
【請求項４】
請求項１記載のデータ転送回路において、
前記データ確定部は、
前記ＣＲＣ演算用位相制御回路からのデータとストローブとの複数組の出力をもとに各ストローブに基づいて各データを取り込むためのデータ取り込み部と、
前記データ取り込み部に取り込まれた複数のデータのうち前記ＣＲＣ比較回路の判定結果に対応するデータを選択するためのデータ選択回路とを有することを特徴とするデータ転送回路。
【請求項５】
請求項１記載のデータ転送回路において、
前記ＣＲＣ演算用位相制御回路に与える入力データに遅延を付加するための入力データ遅延制御回路を更に備えたことを特徴とするデータ転送回路。
【請求項６】
請求項５記載のデータ転送回路において、
データ転送前に予め設定される転送モードを判別するための転送モード判別回路を更に備え、
前記入力データ遅延制御回路により付加すべき遅延を前記転送モード判別回路の判別結果に応じて制御することを特徴とするデータ転送回路。
【請求項７】
請求項５記載のデータ転送回路において、
前記入力データ遅延制御回路により付加すべき遅延を前記ＣＲＣ比較回路の判定結果に応じて制御することを特徴とするデータ転送回路。
【請求項８】
請求項１記載のデータ転送回路において、
前記ＣＲＣ演算用位相制御回路に与える入力ストローブに遅延を付加するための入力ストローブ遅延制御回路を更に備えたことを特徴とするデータ転送回路。
【請求項９】
請求項８記載のデータ転送回路において、
データ転送前に予め設定される転送モードを判別するための転送モード判別回路を更に備え、
前記入力ストローブ遅延制御回路により付加すべき遅延を前記転送モード判別回路の判別結果に応じて制御することを特徴とするデータ転送回路。
【請求項１０】
請求項８記載のデータ転送回路において、
前記入力ストローブ遅延制御回路により付加すべき遅延を前記ＣＲＣ比較回路の判定結果に応じて制御することを特徴とするデータ転送回路。
【請求項１１】
請求項１記載のデータ転送回路において、
前記ＣＲＣ演算用位相制御回路の出力におけるデータ間又はストローブ間の位相差を調整するための位相差調整回路を更に備えたことを特徴とするデータ転送回路。
【請求項１２】
請求項１１記載のデータ転送回路において、
データ転送前に予め設定される転送モードを判別するための転送モード判別回路を更に備え、
前記位相差調整回路により実現すべき位相差を前記転送モード判別回路の判別結果に応じて制御することを特徴とするデータ転送回路。
【請求項１３】
請求項１１記載のデータ転送回路において、
前記位相差調整回路により実現すべき位相差を前記ＣＲＣ比較回路の判定結果に応じて制御することを特徴とするデータ転送回路。
【請求項１４】
請求項１記載のデータ転送回路において、
前記ＣＲＣ演算部の全演算回路が常時動作することを特徴とするデータ転送回路。
【請求項１５】
請求項１記載のデータ転送回路において、
前記データ確定部により受信データが一旦確定した後は、前記ＣＲＣ比較回路が不一致判定をしない限り前記ＣＲＣ演算部中の対応演算回路以外の演算回路の動作を停止させるためのＣＲＣ演算動作制御回路を更に備えたことを特徴とするデータ転送回路。
【請求項１６】
請求項１記載のデータ転送回路において、
前記送信機器にデータ転送の中断を要求するためのポーズ発生回路を更に備えたことを特徴とするデータ転送回路。
【請求項１７】
請求項１記載のデータ転送回路において、
前記データ確定部は、前記ＣＲＣ演算部の複数の出力の中に前記ＣＲＣラッチ回路の出力と一致するものが複数存在する場合には、そのうちのほぼ中央の出力に基づいて前記受信データを確定することを特徴とするデータ転送回路。
【請求項１８】
請求項１記載のデータ転送回路において、
前記ＣＲＣ比較回路の判定結果をもとに出力データと出力ストローブとの位相差を調整するための出力位相調整回路を更に備えたことを特徴とするデータ転送回路。
【請求項１９】
請求項１記載のデータ転送回路において、
前記ＣＲＣ演算用位相制御回路のデータとストローブとの組数及び前記ＣＲＣ演算部の演算回路数を３〜７としたことを特徴とするデータ転送回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ストローブを用いたデータ転送を実行するためのデータ転送回路に関するものである。
【０００２】
【従来の技術】
パーソナルコンピュータにおいて、ホストプロセッサと、ハードディスクドライブ、ＣＤ−ＲＯＭドライブなどの記憶装置とを接続するためのインターフェースの１つとして、ＡＴＡ／ＡＴＡＰＩ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ  ／  ＡＴ  Ａｔｔａｃｈｍｅｎｔ  ＰａｃｋｅｔＩｎｔｅｒｆａｃｅ）規格が知られている。ハードディスクドライブの場合の転送モードには、ＰＩＯ（Ｐｒｏｇｒａｍ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）モード、シングルワードＤＭＡ（ＤｉｒｅｃｔＭｅｍｏｒｙ  Ａｃｃｅｓｓ）モード、マルチワードＤＭＡモード、ＵｌｔｒａＤＭＡモード（ＵｌｔｒａＡＴＡモードとも言う。）がある。このうち、同期ＤＭＡバーストモードであるＵｌｔｒａＤＭＡモードが最高転送レートを実現できる。
【０００３】
ＵｌｔｒａＤＭＡモードの技術によれば、データを送信している機器（ホスト又はドライブ）がストローブを制御する責任を負う。具体的には、ホストがデータをドライブに書き込む場合にはストローブ信号としてＨＳＴＲＯＢＥを、その逆の場合にはドライブがＤＳＴＲＯＢＥをそれぞれ駆動する。しかも、ストローブ信号の立ち上がりエッジと立ち下がりエッジとの両方を使う。データバスは、例えば１６ビットの双方向バスである。データ転送の終了時には、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）コードによるエラーチェックを行う。ＣＲＣコードはドライブ側、ホスト側それぞれに送信又は受信したデータについて巡回的に計算を行い、負論理のＤＭＡＣＫ信号の立ち上がりエッジで、ホストが計算したＣＲＣコードをドライブに書き込む。これは、データの転送方向がホストからドライブであっても、その逆であっても同じである。そして、ドライブ側は自身が計算したＣＲＣコードと、ホストが書き込んだＣＲＣコードとを比較して、それらが一致していればデータ転送が正常に終了したということになる。ＣＲＣエラーが検出された場合、ドライブは、エラーレジスタのエラービットをセットし、コマンドの終了時にホストにエラーを報告する（特許文献１参照）。
【０００４】
【特許文献１】
特表平１０−５１３２９４号公報
【０００５】
【発明が解決しようとする課題】
近年、ＵｌｔｒａＤＭＡ転送においても転送レートが上がるにつれ、データとストローブとのスキューが無視できなくなってきている。
【０００６】
本発明の目的は、データとストローブとのスキューがばらつくことで生じるＣＲＣエラーの頻発を防ぐとともに、転送レートの低下を防止し、かつデータの高信頼性を確保することにある。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、本発明は、データ受信機器において、入力データと入力ストローブとの位相を複数通りにずらして計算することにより得られる複数のＣＲＣコードと、データ転送終了後に送信機器から転送されるＣＲＣコードとをそれぞれ比較し、それらの比較結果に応じて入力データと入力ストローブとの位相を調整することとしたものである。
【０００８】
具体的に説明すると、本発明は、送信機器から転送されるデータとストローブとを受け取るデータ転送回路において、入力データと入力ストローブとの位相を複数にずらして複数組のデータとストローブとを出力するためのＣＲＣ演算用位相制御回路と、該ＣＲＣ演算用位相制御回路から出力されたデータとストローブとの各組をもとにＣＲＣコードをそれぞれ演算するための複数の演算回路を有するＣＲＣ演算部と、データ転送終了後に送信機器から転送されるＣＲＣコードを該送信機器から転送されるＣＲＣ用ストローブに応答してラッチするためのＣＲＣラッチ回路と、ＣＲＣ演算部の複数の出力のうちのいずれがＣＲＣラッチ回路の出力と一致しているかを判定するようにＣＲＣ演算部の複数の出力とＣＲＣラッチ回路の出力とをそれぞれ比較するためのＣＲＣ比較回路と、ＣＲＣ演算用位相制御回路からのデータとストローブとの各組の出力のうちＣＲＣ比較回路の判定結果に対応する組の出力に基づいて受信データを確定するためのデータ確定部とを備えることとしたものである。
【０００９】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて説明する。
【００１０】
図１は、本発明に係るデータ転送回路を利用したデータ処理システムの構成例を示している。図１において、１０はホストプロセッサ、１１はハードディスクドライブなどの記憶装置である。ここでは、ホスト１０からドライブ１１へのデータ転送について説明する。データバスは例えば１６ビット幅であり、データ及びＣＲＣコードの転送に共用される。ホスト１０は、データの転送タイミングを表すストローブ（ＨＳＴＲＯＢＥ）の他に、データ転送終了後のＣＲＣ用ストローブ（ＤＭＡＣＫ）をドライブ１１へ供給する。
【００１１】
図２は、図１中のドライブ１１に利用された本発明に係るデータ転送回路の構成例を示している。図２のデータ転送回路は、入力データ遅延制御回路２０と、入力ストローブ遅延制御回路２１と、ＣＲＣ演算用位相制御回路２２とを備えている。入力データ遅延制御回路２０は、ホスト１０からの入力データに遅延を付加し、その結果に係るデータＤ１をＣＲＣ演算用位相制御回路２２に与えるための回路である。入力ストローブ遅延制御回路２１は、ホスト１０からの入力ストローブに遅延を付加し、その結果に係るストローブＳ１をＣＲＣ演算用位相制御回路２２に与えるための回路である。ＣＲＣ演算用位相制御回路２２は、データＤ１とストローブＳ１との位相を複数通りにずらしてｎ（ｎは２以上の整数）組のデータとストローブとを出力するための回路である。ここで、ＣＲＣ演算用位相制御回路２２の出力データをＤ２−１，Ｄ２−２，…，Ｄ２−ｎとし、出力ストローブをＳ２−１，Ｓ２−２，…，Ｓ２−ｎとする。
【００１２】
図２のデータ転送回路は、ＣＲＣ演算部２３と、ＣＲＣラッチ回路２４と、ＣＲＣ比較回路２５と、データ確定部２６とを更に備えている。ＣＲＣ演算部２３は、ＣＲＣ演算用位相制御回路２２から出力されたデータとストローブとの各組をもとにＣＲＣコードをそれぞれ演算するためのｎ個の演算回路を有する。第１の演算回路は、ＣＲＣ演算用位相制御回路２２の出力のうち第１組のデータＤ２−１とストローブＳ２−１とを用いてＣＲＣ演算を行い、ＣＲＣコードＣＡ１を出力する。第２の演算回路は、ＣＲＣ演算用位相制御回路２２の出力のうち第２組のデータＤ２−２とストローブＳ２−２とを用いてＣＲＣ演算を行い、ＣＲＣコードＣＡ２を出力する。同様に第ｎの演算回路は、ＣＲＣ演算用位相制御回路２２の出力のうち第ｎ組のデータＤ２−ｎとストローブＳ２−ｎとを用いてＣＲＣ演算を行い、ＣＲＣコードＣＡｎを出力する。このようにして、ＣＲＣ演算部２３はＣＲＣ演算用位相制御回路２２から出力されたｎ組のデータとストローブとをもとにｎ通りのＣＲＣコードＣＡ１，ＣＡ２，…，ＣＡｎを出力する。ＣＲＣラッチ回路２４は、データ転送終了後にホスト１０から入力データと共通のデータバスを介して転送されるＣＲＣコードを、ＣＲＣ用ストローブに応答してラッチするための回路である。ＣＲＣ比較回路２５は、ＣＲＣ演算部２３で演算されたｎ個のＣＲＣコードＣＡ１，ＣＡ２，…，ＣＡｎのうちのいずれがＣＲＣラッチ回路２４の出力ＣＢと一致しているかを判定するように、ＣＡ１，ＣＡ２，…，ＣＡｎとＣＢとをそれぞれ比較するための回路である。なお、ＣＲＣ演算用位相制御回路２２のデータとストローブとの組数（すなわち、ＣＲＣ演算部２３の演算回路数）ｎは、これを３〜７のいずれかの値とするのが好適である。
【００１３】
データ確定部２６は、ＣＲＣ演算用位相制御回路２２からのデータとストローブとのｎ組の出力のうちＣＲＣ比較回路２５の判定結果に対応する組の出力に基づいて受信データＤ４を確定するように、選択回路２７と、データ取り込み部２８とで構成されている。選択回路２７は、ＣＲＣ演算用位相制御回路２２からのデータとストローブとのｎ組の出力のうちＣＲＣ比較回路２５の判定結果に対応する組の出力、すなわちＣＲＣラッチ回路２４の出力ＣＢと一致している演算結果を出力しているＣＲＣ演算部２３内の演算回路に入力されているデータ及びストローブをデータＤ３及びストローブＳ３として選択するための回路である。データ取り込み部２８は、ストローブＳ３に基づいてデータＤ３を取り込み、図示しない後段のデータ処理回路へ受信データＤ４を与える。
【００１４】
図２のデータ転送回路は、転送モード判別回路２９と、位相差調整回路３０と、ＣＲＣ演算動作制御回路３１と、ポーズ発生回路３２とを更に備えている。転送モード判別回路２９は、データ転送前に予め設定される転送モードを判別するための回路である。位相差調整回路３０は、ＣＲＣ演算用位相制御回路２２の出力におけるデータ間又はストローブ間の位相差を調整するための回路である。ＣＲＣ演算動作制御回路３１は、データ確定部２６により受信データＤ４が一旦確定した後は、ＣＲＣ比較回路２５が不一致判定をしない限りＣＲＣ演算部２３中の対応演算回路以外の演算回路の動作を停止させるための回路である。ＣＲＣ演算部２３は、ＣＲＣ演算動作制御回路３１の出力に応じて一部の演算回路の動作を停止する機能を有する。ポーズ発生回路３２は、ホスト１０にデータ転送の中断を要求するための回路である。なお、入力データ遅延制御回路２０により付加すべき遅延、入力ストローブ遅延制御回路２１により付加すべき遅延、及び位相差調整回路３０により実現すべき位相差は、それぞれＣＲＣ比較回路２５の判定結果に応じて、又は転送モード判別回路２９の判別結果に応じて制御されるようになっている。
【００１５】
図３は、図２中のＣＲＣ演算用位相制御回路２２の内部構成例を示している。図３の回路例は（ｎ−１）個の遅延要素からなり、入力ストローブ遅延制御回路２１から与えられたストローブＳ１をもとにｎ相のストローブＳ２−１，Ｓ２−２，Ｓ２−３，Ｓ２−４，…，Ｓ２−ｎを生成している。各遅延要素の遅延量は、位相差調整回路３０の出力に応じて可変である。この場合には、入力データ遅延制御回路２０から与えられたデータＤ１がそのまま出力データＤ２−１，Ｄ２−２，…，Ｄ２−ｎとされる。
【００１６】
図４は、図２中のＣＲＣ演算用位相制御回路２２の他の内部構成例を示している。図４の回路例は（ｎ−１）個の遅延要素からなり、入力データ遅延制御回路２０から与えられたデータＤ１をもとにｎ相のデータＤ２−１，Ｄ２−２，Ｄ２−３，Ｄ２−４，…，Ｄ２−ｎを生成している。各遅延要素の遅延量は、位相差調整回路３０の出力に応じて可変である。この場合には、入力ストローブ遅延制御回路２１から与えられたストローブＳ１がそのまま出力ストローブＳ２−１，Ｓ２−２，…，Ｓ２−ｎとされる。
【００１７】
次に、図８〜図１０を参照しながら、図２のデータ転送回路の動作を具体的に説明する。
【００１８】
図８（ａ）〜図８（ｄ）は、図２のデータ転送回路におけるデータとストローブとの種々の位相関係を示している。入力データと入力ストローブとの位相としては、図８（ａ）のように入力データの中央付近に入力ストローブのエッジが来るのが理想である。しかし、ホスト１０とドライブ１１との間の配線遅延により入力データと入力ストローブの位相がずれてしまい、図８（ｃ）や図８（ｄ）のような位相関係の入力データと入力ストローブとが図２のデータ転送回路に与えられることがある。このような入力データと入力ストローブとをそのまま使用した場合には、誤ったデータを取り込んでしまう。ところが、図２のデータ転送回路は、図８（ｃ）や図８（ｄ）のような位相関係の入力データと入力ストローブとが入力されても、正しいデータを取り込める機能を有している。
【００１９】
まず、図８（ａ）のような位相関係の入力データと入力ストローブとが入力された場合について説明する。転送モード判別回路２９は、データ転送前に予め設定される転送モードによりストローブに対してデータのセットアップタイムを判別し、それを入力データ遅延制御回路２０へ通知する。入力データ遅延制御回路２０は、ＣＲＣ演算用位相制御回路２２へのデータＤ１とストローブＳ１との位相関係が図８（ｃ）のようになるように入力データに対して遅延を付加する。この場合、入力ストローブ遅延制御回路２１は入力ストローブに対して遅延を付加する必要はない。ＣＲＣ演算用位相制御回路２２は、入力ストローブ遅延制御回路２１から出力された、データＤ１に対して図８（ｃ）のような位相関係を持つストローブＳ１をもとに、図８（ｂ）のように位相をｎ通りにずらしたストローブＳ２−１，Ｓ２−２，…，Ｓ２−ｎを出力する。
【００２０】
初期化直後の最初のデータ転送など、ＣＲＣ比較回路２５の出力がない場合には、選択回路２７はＣＲＣ演算用位相制御回路２２のｎ組のデータ及びストローブのうちのいずれか１組をデータＤ３及びストローブＳ３として選択している。例えば、ホスト１０から転送される入力データ及び入力ストローブと同じ位相のもの（Ｄ２−１及びＳ２−１）を選択するものとする。
【００２１】
選択回路２７から出力されるデータＤ３及びストローブＳ３により、データ取り込み部２８はデータを取り込む。データ取り込み部２８がデータを取り込むのと並行して、ＣＲＣ演算部２３はＣＲＣ演算用位相制御回路２２からのｎ通りの位相関係を持つデータ及びストローブによりＣＲＣ演算を行い、ｎ通りのＣＲＣコードＣＡ１，ＣＡ２，…，ＣＡｎを出力する。
【００２２】
一方、ＣＲＣラッチ回路２４は、データ転送終了後にホスト１０から入力データと共通のデータバスを用いて転送されるＣＲＣコードをＣＲＣ用ストローブによりラッチし、ラッチしたＣＲＣコードを出力する。ＣＲＣ比較回路２５は、ＣＲＣ演算部２３のｎ個のＣＲＣコードＣＡ１，ＣＡ２，…，ＣＡｎとＣＲＣラッチ回路２４の出力ＣＢとをそれぞれ比較し、ｎ個のＣＲＣコードＣＡ１，ＣＡ２，…，ＣＡｎのうちのいずれがＣＲＣラッチ回路２４の出力ＣＢと一致しているかを示す信号を出力する。
【００２３】
ここで、ＣＲＣ演算部２３のｎ個の演算回路のうち選択回路２７が選択しているデータ及びストローブと同じ位相のデータ及びストローブで演算している演算回路の出力を、今回のデータ転送において取り込んだデータのＣＲＣコードとし、ＣＲＣラッチ回路２４の出力ＣＢと一致している場合はデータ取り込み部２８に取り込んだデータは有効とみなし、図示しない後段のデータ処理回路で処理を行う。一致していない場合はデータ取り込み部２８に取り込んだデータは無効とみなし、図示しない後段のデータ処理回路には転送しない。また、一致していない場合にはホスト１０にＣＲＣエラーを通知し、ホスト１０がデータ再送などの処理を行う。
【００２４】
また、データ転送及びＣＲＣ比較終了後、選択回路２７は次のデータ転送に備えて、ＣＲＣ比較回路２５においてＣＲＣラッチ回路２４の出力ＣＢと一致している演算結果を出力しているＣＲＣ演算部２３内の演算回路に入力されているデータ及びストローブを選択し、データＤ３及びストローブＳ３を出力する。
【００２５】
以上のとおり、図２のデータ転送回路によれば、一度のデータ転送によって入力データと入力ストローブとが最適な位相関係を持つように調整することができる。そのため、転送レートを落とすことなく入力データと入力ストローブとのスキューのずれによるＣＲＣエラーを抑えることができる。
【００２６】
なお、選択回路２７は、ＣＲＣ演算部２３のｎ個の出力ＣＡ１，ＣＡ２，…，ＣＡｎの中にＣＲＣラッチ回路２４の出力ＣＢと一致するものが複数存在する場合には、そのうちの１つの出力を選択する。例えば、一致している複数の演算回路の出力のうち入力されているデータとストローブとの位相が図８（ａ）のような関係にある演算回路の入力を選択するものとする。図８（ｂ）の場合で説明すると、ＣＲＣ比較回路２５においてＣＲＣ演算部２３のｎ個の出力のうちＣＡａからＣＡｂまでがＣＲＣラッチ回路２４の出力ＣＢと一致する（１≦ａ＜ｂ≦ｎ）。この場合には、数字ａと数字ｂとの中央あたりの数字をｃとすると、選択回路２７においてはＣＲＣ演算用位相制御回路２２の出力のうち、Ｄ２−ｃ及びＳ２−ｃを選択すればよい。
【００２７】
また、一度データ転送を行い、ＣＲＣ比較回路２５の出力に応じて選択回路２７においてデータ取り込み部２８に必要なデータＤ３及びストローブＳ３を選択した後は、ＣＲＣ比較回路２５の判定結果に基づき、ＣＲＣ演算動作制御回路３１は、選択回路２７で選択したデータとストローブとが入力されている演算回路以外は停止させるような信号を出力する。この場合、ＣＲＣ演算部２３内のｎ個の演算回路のうち１個だけが動作するようになるので、その消費電力を抑えることが可能となる。この動作している演算回路を用いた次回以降のデータ転送においてＣＲＣエラーが検出されると、ＣＲＣ演算動作制御回路３１から出力される信号によりＣＲＣ演算部２３のｎ個の演算回路が全て動き出し、再度位相調整を行うこととなる。
【００２８】
ＣＲＣ演算動作制御回路３１を使用せずにＣＲＣ演算部２３の全演算回路を常時動作させれば、常に位相調整が可能となるため、電圧変動や温度変動により入力データと入力ストローブとの位相が変わってもＣＲＣエラーを出すことなく確実にデータを取り込むことができる。
【００２９】
図９（ａ）及び図９（ｂ）は、図２中の入力データ遅延制御回路２０及び入力ストローブ遅延制御回路２１のはたらきを説明するための図である。以上の説明では入力データと入力ストローブとの位相が図８（ａ）のようになる場合を考えたが、ホスト１０とドライブ１１との間の伝送線路の状況によっては入力データと入力ストローブとの位相関係が図８（ｃ）や図８（ｄ）のようになる場合がある。図８（ｃ）のような位相関係にある入力データと入力ストローブとが与えられた場合、ＣＲＣ演算用位相制御回路２２の出力は図９（ａ）のようになる。このとき、ＣＲＣ演算部２３から出力されるＣＡ１〜ＣＡｘはＣＲＣ比較回路２５によってＣＲＣラッチ回路２４の出力ＣＢと不一致となり、ＣＲＣ演算部２３から出力されるＣＡｙ〜ＣＡｎはＣＲＣ比較回路２５によってＣＲＣラッチ回路２４の出力ＣＢと一致する（１≦ｘ＜ｙ≦ｎ）。このような場合は、ＣＲＣ比較回路２５の判定結果に応じて入力ストローブ遅延制御回路２１が入力ストローブに遅延を付加することにより、ＣＲＣ演算用位相制御回路２２の出力は図８（ｂ）に近づく。逆に図８（ｄ）のような位相関係にある入力データと入力ストローブとが与えられた場合、ＣＲＣ演算用位相制御回路２２の出力は図９（ｂ）のようになる。このとき、ＣＲＣ演算部２３から出力されるＣＡ１〜ＣＡｘはＣＲＣ比較回路２５によってＣＲＣラッチ回路２４の出力ＣＢと一致となるが、ＣＲＣ演算部２３から出力されるＣＡｙ〜ＣＡｎはＣＲＣ比較回路２５によってＣＲＣラッチ回路２４の出力ＣＢと不一致となる（１≦ｘ＜ｙ≦ｎ）。このような場合は、ＣＲＣ比較回路２５の判定結果に応じて入力データ遅延制御回路２０が入力データに遅延を付加することにより、ＣＲＣ演算用位相制御回路２２の出力は図８（ｂ）に近づく。このようにしてＣＲＣ演算用位相制御回路２２の出力を図８（ｂ）に近づけることにより、ＣＲＣ演算部２３のｎ個の演算回路を有効に使うことができる。
【００３０】
図１０（ａ）及び図１０（ｂ）は、図２中の位相差調整回路３０のはたらきを説明するための図である。以上の説明においてはＣＲＣ演算用位相制御回路２２の出力が図８（ｂ）のようになる場合を考えたが、位相差によっては図１０（ａ）のように有効なデータをラッチできるストローブの数がｎに比べてとても小さく、ｎ個の演算回路のほとんどがエラーとなるＣＲＣコードを演算している場合や、図１０（ｂ）のように全てのストローブが有効なデータをラッチしているが必要以上の分解能を有している場合がある。
【００３１】
図１０（ａ）のようなデータとストローブとをＣＲＣ演算用位相制御回路２２が出力した場合、ＣＲＣ演算部２３から出力されるＣＲＣコードＣＡ１，ＣＡ２，…，ＣＡｎのうち、ＣＡｘ及びＣＡｙ以外のＣＲＣコードはＣＲＣ比較回路２５においてＣＲＣラッチ回路２４の出力ＣＢと不一致となる（１≦ｘ＜ｙ≦ｎ）。このような場合は、ＣＲＣ比較回路２５の判定結果に応じて位相差調整回路３０がＣＲＣ演算用位相制御回路２２の隣接ストローブであるＳ２−（ｉ−１）とＳ２−ｉとの位相差が小さくなるような信号を出力する（２≦ｉ≦ｎ）。これによりＣＲＣ演算用位相制御回路２２の出力は図８（ｂ）に近づく。逆に図１０（ｂ）のようなデータとストローブとをＣＲＣ演算用位相制御回路２２が出力した場合、ＣＲＣ演算部２３から出力されるＣＲＣコードＣＡ１，ＣＡ２，…，ＣＡｎの全てがＣＲＣ比較回路２５においてＣＲＣラッチ回路２４の出力ＣＢと一致する。このような場合は、ＣＲＣ比較回路２５の判定結果に応じて位相差調整回路３０がＣＲＣ演算用位相制御回路２２の隣接ストローブであるＳ２−（ｉ−１）とＳ２−ｉとの位相差が大きくなるような信号を出力する（２≦ｉ≦ｎ）。これによりＣＲＣ演算用位相制御回路２２の出力は図８（ｂ）に近づく。このようにしてＣＲＣ演算用位相制御回路２２の出力を図８（ｂ）に近づけることにより、ＣＲＣ演算部２３のｎ個の演算回路を有効に使うことができる。
【００３２】
最後に、図２のデータ転送回路に設けたポーズ発生回路３２のはたらきを説明する。初期化直後の最初のデータ転送などにおいては、選択回路２７で選択しているデータとストローブとの位相が最適化されていない。そのため最初のデータ転送においては、ＣＲＣエラーとなる可能性がある。この場合、データ取り込み部２８で取り込んだデータは無効となり、ホスト１０がデータ再送を行う。最初の転送データ量が大きい場合にこのようにＣＲＣエラーとなると、転送時間の大きなロスとなる。そこでポーズ発生回路３２から、ある程度の量のデータを受け取った時にホスト１０にデータ転送を途中で停止させる信号を出力する。こうすることにより、ホスト１０が一度に大量のデータを送信しようとしている時でも途中で転送を止め、そこまでのデータでのＣＲＣコードとホスト１０が転送中断後に送信してくるＣＲＣコードとを比較することにより、入力データと入力ストローブとの位相を最適調整することができる。つまり、初期化直後の最初のデータ転送などによるデータとストローブとの位相最適化を、転送データ量に関わらず、受信側の決める時間で行うことができる。
【００３３】
なお、図２中のＣＲＣラッチ回路２４はホスト１０よりデータ転送終了後に入力データと共通のデータバスを用いて転送されるＣＲＣコードをラッチするものとしたが、入力データと異なる信号線を用いて転送されるＣＲＣコードをラッチする場合にも、本発明は適用可能である。
【００３４】
さて、図５は、図２中のＣＲＣラッチ回路２４の内部構成例を示している。図５のＣＲＣラッチ回路２４は、ＣＲＣコードとＣＲＣ用ストローブとの位相をｍ（ｍは２以上の整数）通りにずらして当該ＣＲＣコードをラッチするためのラッチ回路４０と、このラッチ回路４０のｍ個の出力ＣＢ１，ＣＢ２，…，ＣＢｍの中からＣＲＣ比較回路２５へ供給すべきＣＲＣコードＣＢを多数決により決定するための多数決回路４１とを有するものである。多数決回路４１を設けたことにより、ＣＲＣラッチ回路２４の出力ＣＢの信頼性が向上する。
【００３５】
図６は、図２中のデータ確定部２６の他の構成例を示している。図６のデータ確定部２６は、データ取り込み部５０と、取り込みデータ選択回路５１とを有するものである。データ取り込み部５０は、ＣＲＣ演算用位相制御回路２２からのデータとストローブとのｎ組の出力をもとに各ストローブＳ２−１，Ｓ２−２，…，Ｓ２−ｎに基づいて各データＤ２−１，Ｄ２−２，…，Ｄ２−ｎを取り込むように、ｎ個のラッチで構成される。取り込みデータ選択回路５１は、データ取り込み部５０から出力されたｎ個のデータＤＡ１，ＤＡ２，…，ＤＡｎのうちＣＲＣ比較回路２５の判定結果に対応するデータを選択し、これを受信データＤ４として、図示しない後段のデータ処理回路へ与える。これにより、図２の場合と同様の機能を達成できる。なお、データ取り込み部５０は、ＣＲＣ演算部２３と同様にＣＲＣ演算動作制御回路３１の出力に応じて一部の回路動作を停止する機能を有する。
【００３６】
図７は、図２のデータ転送回路の変形例を示している。図２の構成と異なる点は、ＣＲＣ比較回路２５の判定結果をもとに出力データと出力ストローブとの位相差を調整するための出力位相調整回路６０を更に備えたことである。この場合の出力ストローブは、前述のＤＳＴＲＯＢＥに相当する。出力位相調整回路６０は、図２中の選択回路２７で選択したデータＤ３とストローブＳ３とがそれぞれ入力データと入力ストローブとに対してどれだけ遅延が付加されているかをＣＲＣ比較回路２５の判定結果より算出し、その算出した結果をもとに、出力時のデータとストローブとの位相差を決定し、その決定した位相差を持つデータとストローブとを出力する。これは、受信時のデータとストローブとの位相のずれを検出した結果を送信時に適用したものである。
【００３７】
例えば、ホスト１０が図８（ａ）のように理想的なデータとストローブとの位相で出力してもドライブ１１側において図８（ｄ）のようにデータとストローブがずれていたとする。これは、ホスト１０とドライブ１１との間の伝送線路などにおいてストローブの方がデータより遅延が大きかったことによる。このことから、当該ホスト１０とドライブ１１との間においてはストローブの方がデータより遅延が大きいと判断できるため、逆にデータとストローブとをドライブ１１が出力する際には図８（ｃ）のような位相関係を持つデータとストローブとを出力することにより、先ほどまで送信側であったホスト１０では図８（ａ）のような理想的なデータとストローブとを受け取ることが可能となる。このように、データ及びストローブ受信時の位相調整結果よりデータ出力時のデータとストローブとの位相を調整することにより、元の送信側でデータを確実に受けることができるようになる。
【００３８】
【発明の効果】
以上説明してきたとおり、本発明によれば、データ受信機器において、入力データと入力ストローブとの位相を複数通りにずらして計算することにより得られる複数のＣＲＣコードと、データ転送終了後に送信機器から転送されるＣＲＣコードとをそれぞれ比較し、それらの比較結果に応じて入力データと入力ストローブとの位相を調整することとしたので、ＣＲＣエラーの頻発を防ぐとともに、転送レートの低下を防止し、かつデータの高信頼性を確保することができる。
【００３９】
しかも、一度のデータ転送で入力データと入力ストローブとの位相を調整することができる利点がある。また、入力データと入力ストローブとの位相を受信側で調整するため、送信機器側の回路構成は変更不要である。また、ＣＲＣ演算を入力データと同じビット幅で演算した場合、入力データの全てのビットに対して入力ストローブとの位相調整を行えるという利点もある。
【図面の簡単な説明】
【図１】本発明に係るデータ転送回路を利用したデータ処理システムの構成例を示すブロック図である。
【図２】図１中のドライブに利用された本発明に係るデータ転送回路の構成例を示すブロック図である。
【図３】図２中のＣＲＣ演算用位相制御回路の内部構成例を示す回路図である。
【図４】図２中のＣＲＣ演算用位相制御回路の他の内部構成例を示す回路図である。
【図５】図２中のＣＲＣラッチ回路の内部構成例を示すブロック図である。
【図６】図２中のデータ確定部の他の構成例を示すブロック図である。
【図７】図２のデータ転送回路の変形例を示すブロック図である。
【図８】（ａ）〜（ｄ）は図２のデータ転送回路におけるデータとストローブとの種々の位相関係を示すタイミング図である。
【図９】（ａ）及び（ｂ）は図２中の入力データ遅延制御回路及び入力ストローブ遅延制御回路のはたらきを説明するためのタイミング図である。
【図１０】（ａ）及び（ｂ）は図２中の位相差調整回路のはたらきを説明するためのタイミング図である。
【符号の説明】
１０  ホスト
１１  ドライブ
２０  入力データ遅延制御回路
２１  入力ストローブ遅延制御回路
２２  ＣＲＣ演算用位相制御回路
２３  ＣＲＣ演算部
２４  ＣＲＣラッチ回路
２５  ＣＲＣ比較回路
２６  データ確定部
２７  選択回路
２８  データ取り込み部
２９  転送モード判別回路
３０  位相差調整回路
３１  ＣＲＣ演算動作制御回路
３２  ポーズ発生回路
４０  ラッチ回路
４１  多数決回路
５０  データ取り込み部
５１  取り込みデータ選択回路
６０  出力位相調整回路
【図１】
2004213438.tif 000003
【図２】
2004213438.tif 000004
【図３】
2004213438.tif 000005
【図４】
2004213438.tif 000006
【図５】
2004213438.tif 000007
【図６】
2004213438.tif 000008
【図７】
2004213438.tif 000009
【図８】
2004213438.tif 000010
【図９】
2004213438.tif 000011
【図１０】
2004213438.tif 000012