JP2004213438A - データ転送回路 - Google Patents
データ転送回路 Download PDFInfo
- Publication number
- JP2004213438A JP2004213438A JP2003000810A JP2003000810A JP2004213438A JP 2004213438 A JP2004213438 A JP 2004213438A JP 2003000810 A JP2003000810 A JP 2003000810A JP 2003000810 A JP2003000810 A JP 2003000810A JP 2004213438 A JP2004213438 A JP 2004213438A
- Authority
- JP
- Japan
- Prior art keywords
- data
- circuit
- crc
- data transfer
- strobe
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
【課題】データとストローブとのスキューがばらつくことで生じるCRC(Cyclic Redundancy Check)エラーの頻発を防ぐとともに、転送レートの低下を防止し、かつデータの高信頼性を確保する。
【解決手段】入力データと入力ストローブとの位相を複数通りにずらして計算することによりCRC演算部23で得られる複数のCRCコードと、データ転送終了後に送信機器から転送されるCRCコードとをそれぞれCRC比較回路25で比較し、それらの比較結果に応じてデータ確定部28で入力データと入力ストローブとの位相を調整することにより受信データを確定する。
【選択図】 図2
【解決手段】入力データと入力ストローブとの位相を複数通りにずらして計算することによりCRC演算部23で得られる複数のCRCコードと、データ転送終了後に送信機器から転送されるCRCコードとをそれぞれCRC比較回路25で比較し、それらの比較結果に応じてデータ確定部28で入力データと入力ストローブとの位相を調整することにより受信データを確定する。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、ストローブを用いたデータ転送を実行するためのデータ転送回路に関するものである。
【0002】
【従来の技術】
パーソナルコンピュータにおいて、ホストプロセッサと、ハードディスクドライブ、CD−ROMドライブなどの記憶装置とを接続するためのインターフェースの1つとして、ATA/ATAPI(AT Attachment / AT Attachment PacketInterface)規格が知られている。ハードディスクドライブの場合の転送モードには、PIO(Program Input/Output)モード、シングルワードDMA(DirectMemory Access)モード、マルチワードDMAモード、UltraDMAモード(UltraATAモードとも言う。)がある。このうち、同期DMAバーストモードであるUltraDMAモードが最高転送レートを実現できる。
【0003】
UltraDMAモードの技術によれば、データを送信している機器(ホスト又はドライブ)がストローブを制御する責任を負う。具体的には、ホストがデータをドライブに書き込む場合にはストローブ信号としてHSTROBEを、その逆の場合にはドライブがDSTROBEをそれぞれ駆動する。しかも、ストローブ信号の立ち上がりエッジと立ち下がりエッジとの両方を使う。データバスは、例えば16ビットの双方向バスである。データ転送の終了時には、CRC(Cyclic Redundancy Check)コードによるエラーチェックを行う。CRCコードはドライブ側、ホスト側それぞれに送信又は受信したデータについて巡回的に計算を行い、負論理のDMACK信号の立ち上がりエッジで、ホストが計算したCRCコードをドライブに書き込む。これは、データの転送方向がホストからドライブであっても、その逆であっても同じである。そして、ドライブ側は自身が計算したCRCコードと、ホストが書き込んだCRCコードとを比較して、それらが一致していればデータ転送が正常に終了したということになる。CRCエラーが検出された場合、ドライブは、エラーレジスタのエラービットをセットし、コマンドの終了時にホストにエラーを報告する(特許文献1参照)。
【0004】
【特許文献1】
特表平10−513294号公報
【0005】
【発明が解決しようとする課題】
近年、UltraDMA転送においても転送レートが上がるにつれ、データとストローブとのスキューが無視できなくなってきている。
【0006】
本発明の目的は、データとストローブとのスキューがばらつくことで生じるCRCエラーの頻発を防ぐとともに、転送レートの低下を防止し、かつデータの高信頼性を確保することにある。
【0007】
【課題を解決するための手段】
上記目的を達成するために、本発明は、データ受信機器において、入力データと入力ストローブとの位相を複数通りにずらして計算することにより得られる複数のCRCコードと、データ転送終了後に送信機器から転送されるCRCコードとをそれぞれ比較し、それらの比較結果に応じて入力データと入力ストローブとの位相を調整することとしたものである。
【0008】
具体的に説明すると、本発明は、送信機器から転送されるデータとストローブとを受け取るデータ転送回路において、入力データと入力ストローブとの位相を複数にずらして複数組のデータとストローブとを出力するためのCRC演算用位相制御回路と、該CRC演算用位相制御回路から出力されたデータとストローブとの各組をもとにCRCコードをそれぞれ演算するための複数の演算回路を有するCRC演算部と、データ転送終了後に送信機器から転送されるCRCコードを該送信機器から転送されるCRC用ストローブに応答してラッチするためのCRCラッチ回路と、CRC演算部の複数の出力のうちのいずれがCRCラッチ回路の出力と一致しているかを判定するようにCRC演算部の複数の出力とCRCラッチ回路の出力とをそれぞれ比較するためのCRC比較回路と、CRC演算用位相制御回路からのデータとストローブとの各組の出力のうちCRC比較回路の判定結果に対応する組の出力に基づいて受信データを確定するためのデータ確定部とを備えることとしたものである。
【0009】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて説明する。
【0010】
図1は、本発明に係るデータ転送回路を利用したデータ処理システムの構成例を示している。図1において、10はホストプロセッサ、11はハードディスクドライブなどの記憶装置である。ここでは、ホスト10からドライブ11へのデータ転送について説明する。データバスは例えば16ビット幅であり、データ及びCRCコードの転送に共用される。ホスト10は、データの転送タイミングを表すストローブ(HSTROBE)の他に、データ転送終了後のCRC用ストローブ(DMACK)をドライブ11へ供給する。
【0011】
図2は、図1中のドライブ11に利用された本発明に係るデータ転送回路の構成例を示している。図2のデータ転送回路は、入力データ遅延制御回路20と、入力ストローブ遅延制御回路21と、CRC演算用位相制御回路22とを備えている。入力データ遅延制御回路20は、ホスト10からの入力データに遅延を付加し、その結果に係るデータD1をCRC演算用位相制御回路22に与えるための回路である。入力ストローブ遅延制御回路21は、ホスト10からの入力ストローブに遅延を付加し、その結果に係るストローブS1をCRC演算用位相制御回路22に与えるための回路である。CRC演算用位相制御回路22は、データD1とストローブS1との位相を複数通りにずらしてn(nは2以上の整数)組のデータとストローブとを出力するための回路である。ここで、CRC演算用位相制御回路22の出力データをD2−1,D2−2,…,D2−nとし、出力ストローブをS2−1,S2−2,…,S2−nとする。
【0012】
図2のデータ転送回路は、CRC演算部23と、CRCラッチ回路24と、CRC比較回路25と、データ確定部26とを更に備えている。CRC演算部23は、CRC演算用位相制御回路22から出力されたデータとストローブとの各組をもとにCRCコードをそれぞれ演算するためのn個の演算回路を有する。第1の演算回路は、CRC演算用位相制御回路22の出力のうち第1組のデータD2−1とストローブS2−1とを用いてCRC演算を行い、CRCコードCA1を出力する。第2の演算回路は、CRC演算用位相制御回路22の出力のうち第2組のデータD2−2とストローブS2−2とを用いてCRC演算を行い、CRCコードCA2を出力する。同様に第nの演算回路は、CRC演算用位相制御回路22の出力のうち第n組のデータD2−nとストローブS2−nとを用いてCRC演算を行い、CRCコードCAnを出力する。このようにして、CRC演算部23はCRC演算用位相制御回路22から出力されたn組のデータとストローブとをもとにn通りのCRCコードCA1,CA2,…,CAnを出力する。CRCラッチ回路24は、データ転送終了後にホスト10から入力データと共通のデータバスを介して転送されるCRCコードを、CRC用ストローブに応答してラッチするための回路である。CRC比較回路25は、CRC演算部23で演算されたn個のCRCコードCA1,CA2,…,CAnのうちのいずれがCRCラッチ回路24の出力CBと一致しているかを判定するように、CA1,CA2,…,CAnとCBとをそれぞれ比較するための回路である。なお、CRC演算用位相制御回路22のデータとストローブとの組数(すなわち、CRC演算部23の演算回路数)nは、これを3〜7のいずれかの値とするのが好適である。
【0013】
データ確定部26は、CRC演算用位相制御回路22からのデータとストローブとのn組の出力のうちCRC比較回路25の判定結果に対応する組の出力に基づいて受信データD4を確定するように、選択回路27と、データ取り込み部28とで構成されている。選択回路27は、CRC演算用位相制御回路22からのデータとストローブとのn組の出力のうちCRC比較回路25の判定結果に対応する組の出力、すなわちCRCラッチ回路24の出力CBと一致している演算結果を出力しているCRC演算部23内の演算回路に入力されているデータ及びストローブをデータD3及びストローブS3として選択するための回路である。データ取り込み部28は、ストローブS3に基づいてデータD3を取り込み、図示しない後段のデータ処理回路へ受信データD4を与える。
【0014】
図2のデータ転送回路は、転送モード判別回路29と、位相差調整回路30と、CRC演算動作制御回路31と、ポーズ発生回路32とを更に備えている。転送モード判別回路29は、データ転送前に予め設定される転送モードを判別するための回路である。位相差調整回路30は、CRC演算用位相制御回路22の出力におけるデータ間又はストローブ間の位相差を調整するための回路である。CRC演算動作制御回路31は、データ確定部26により受信データD4が一旦確定した後は、CRC比較回路25が不一致判定をしない限りCRC演算部23中の対応演算回路以外の演算回路の動作を停止させるための回路である。CRC演算部23は、CRC演算動作制御回路31の出力に応じて一部の演算回路の動作を停止する機能を有する。ポーズ発生回路32は、ホスト10にデータ転送の中断を要求するための回路である。なお、入力データ遅延制御回路20により付加すべき遅延、入力ストローブ遅延制御回路21により付加すべき遅延、及び位相差調整回路30により実現すべき位相差は、それぞれCRC比較回路25の判定結果に応じて、又は転送モード判別回路29の判別結果に応じて制御されるようになっている。
【0015】
図3は、図2中のCRC演算用位相制御回路22の内部構成例を示している。図3の回路例は(n−1)個の遅延要素からなり、入力ストローブ遅延制御回路21から与えられたストローブS1をもとにn相のストローブS2−1,S2−2,S2−3,S2−4,…,S2−nを生成している。各遅延要素の遅延量は、位相差調整回路30の出力に応じて可変である。この場合には、入力データ遅延制御回路20から与えられたデータD1がそのまま出力データD2−1,D2−2,…,D2−nとされる。
【0016】
図4は、図2中のCRC演算用位相制御回路22の他の内部構成例を示している。図4の回路例は(n−1)個の遅延要素からなり、入力データ遅延制御回路20から与えられたデータD1をもとにn相のデータD2−1,D2−2,D2−3,D2−4,…,D2−nを生成している。各遅延要素の遅延量は、位相差調整回路30の出力に応じて可変である。この場合には、入力ストローブ遅延制御回路21から与えられたストローブS1がそのまま出力ストローブS2−1,S2−2,…,S2−nとされる。
【0017】
次に、図8〜図10を参照しながら、図2のデータ転送回路の動作を具体的に説明する。
【0018】
図8(a)〜図8(d)は、図2のデータ転送回路におけるデータとストローブとの種々の位相関係を示している。入力データと入力ストローブとの位相としては、図8(a)のように入力データの中央付近に入力ストローブのエッジが来るのが理想である。しかし、ホスト10とドライブ11との間の配線遅延により入力データと入力ストローブの位相がずれてしまい、図8(c)や図8(d)のような位相関係の入力データと入力ストローブとが図2のデータ転送回路に与えられることがある。このような入力データと入力ストローブとをそのまま使用した場合には、誤ったデータを取り込んでしまう。ところが、図2のデータ転送回路は、図8(c)や図8(d)のような位相関係の入力データと入力ストローブとが入力されても、正しいデータを取り込める機能を有している。
【0019】
まず、図8(a)のような位相関係の入力データと入力ストローブとが入力された場合について説明する。転送モード判別回路29は、データ転送前に予め設定される転送モードによりストローブに対してデータのセットアップタイムを判別し、それを入力データ遅延制御回路20へ通知する。入力データ遅延制御回路20は、CRC演算用位相制御回路22へのデータD1とストローブS1との位相関係が図8(c)のようになるように入力データに対して遅延を付加する。この場合、入力ストローブ遅延制御回路21は入力ストローブに対して遅延を付加する必要はない。CRC演算用位相制御回路22は、入力ストローブ遅延制御回路21から出力された、データD1に対して図8(c)のような位相関係を持つストローブS1をもとに、図8(b)のように位相をn通りにずらしたストローブS2−1,S2−2,…,S2−nを出力する。
【0020】
初期化直後の最初のデータ転送など、CRC比較回路25の出力がない場合には、選択回路27はCRC演算用位相制御回路22のn組のデータ及びストローブのうちのいずれか1組をデータD3及びストローブS3として選択している。例えば、ホスト10から転送される入力データ及び入力ストローブと同じ位相のもの(D2−1及びS2−1)を選択するものとする。
【0021】
選択回路27から出力されるデータD3及びストローブS3により、データ取り込み部28はデータを取り込む。データ取り込み部28がデータを取り込むのと並行して、CRC演算部23はCRC演算用位相制御回路22からのn通りの位相関係を持つデータ及びストローブによりCRC演算を行い、n通りのCRCコードCA1,CA2,…,CAnを出力する。
【0022】
一方、CRCラッチ回路24は、データ転送終了後にホスト10から入力データと共通のデータバスを用いて転送されるCRCコードをCRC用ストローブによりラッチし、ラッチしたCRCコードを出力する。CRC比較回路25は、CRC演算部23のn個のCRCコードCA1,CA2,…,CAnとCRCラッチ回路24の出力CBとをそれぞれ比較し、n個のCRCコードCA1,CA2,…,CAnのうちのいずれがCRCラッチ回路24の出力CBと一致しているかを示す信号を出力する。
【0023】
ここで、CRC演算部23のn個の演算回路のうち選択回路27が選択しているデータ及びストローブと同じ位相のデータ及びストローブで演算している演算回路の出力を、今回のデータ転送において取り込んだデータのCRCコードとし、CRCラッチ回路24の出力CBと一致している場合はデータ取り込み部28に取り込んだデータは有効とみなし、図示しない後段のデータ処理回路で処理を行う。一致していない場合はデータ取り込み部28に取り込んだデータは無効とみなし、図示しない後段のデータ処理回路には転送しない。また、一致していない場合にはホスト10にCRCエラーを通知し、ホスト10がデータ再送などの処理を行う。
【0024】
また、データ転送及びCRC比較終了後、選択回路27は次のデータ転送に備えて、CRC比較回路25においてCRCラッチ回路24の出力CBと一致している演算結果を出力しているCRC演算部23内の演算回路に入力されているデータ及びストローブを選択し、データD3及びストローブS3を出力する。
【0025】
以上のとおり、図2のデータ転送回路によれば、一度のデータ転送によって入力データと入力ストローブとが最適な位相関係を持つように調整することができる。そのため、転送レートを落とすことなく入力データと入力ストローブとのスキューのずれによるCRCエラーを抑えることができる。
【0026】
なお、選択回路27は、CRC演算部23のn個の出力CA1,CA2,…,CAnの中にCRCラッチ回路24の出力CBと一致するものが複数存在する場合には、そのうちの1つの出力を選択する。例えば、一致している複数の演算回路の出力のうち入力されているデータとストローブとの位相が図8(a)のような関係にある演算回路の入力を選択するものとする。図8(b)の場合で説明すると、CRC比較回路25においてCRC演算部23のn個の出力のうちCAaからCAbまでがCRCラッチ回路24の出力CBと一致する(1≦a<b≦n)。この場合には、数字aと数字bとの中央あたりの数字をcとすると、選択回路27においてはCRC演算用位相制御回路22の出力のうち、D2−c及びS2−cを選択すればよい。
【0027】
また、一度データ転送を行い、CRC比較回路25の出力に応じて選択回路27においてデータ取り込み部28に必要なデータD3及びストローブS3を選択した後は、CRC比較回路25の判定結果に基づき、CRC演算動作制御回路31は、選択回路27で選択したデータとストローブとが入力されている演算回路以外は停止させるような信号を出力する。この場合、CRC演算部23内のn個の演算回路のうち1個だけが動作するようになるので、その消費電力を抑えることが可能となる。この動作している演算回路を用いた次回以降のデータ転送においてCRCエラーが検出されると、CRC演算動作制御回路31から出力される信号によりCRC演算部23のn個の演算回路が全て動き出し、再度位相調整を行うこととなる。
【0028】
CRC演算動作制御回路31を使用せずにCRC演算部23の全演算回路を常時動作させれば、常に位相調整が可能となるため、電圧変動や温度変動により入力データと入力ストローブとの位相が変わってもCRCエラーを出すことなく確実にデータを取り込むことができる。
【0029】
図9(a)及び図9(b)は、図2中の入力データ遅延制御回路20及び入力ストローブ遅延制御回路21のはたらきを説明するための図である。以上の説明では入力データと入力ストローブとの位相が図8(a)のようになる場合を考えたが、ホスト10とドライブ11との間の伝送線路の状況によっては入力データと入力ストローブとの位相関係が図8(c)や図8(d)のようになる場合がある。図8(c)のような位相関係にある入力データと入力ストローブとが与えられた場合、CRC演算用位相制御回路22の出力は図9(a)のようになる。このとき、CRC演算部23から出力されるCA1〜CAxはCRC比較回路25によってCRCラッチ回路24の出力CBと不一致となり、CRC演算部23から出力されるCAy〜CAnはCRC比較回路25によってCRCラッチ回路24の出力CBと一致する(1≦x<y≦n)。このような場合は、CRC比較回路25の判定結果に応じて入力ストローブ遅延制御回路21が入力ストローブに遅延を付加することにより、CRC演算用位相制御回路22の出力は図8(b)に近づく。逆に図8(d)のような位相関係にある入力データと入力ストローブとが与えられた場合、CRC演算用位相制御回路22の出力は図9(b)のようになる。このとき、CRC演算部23から出力されるCA1〜CAxはCRC比較回路25によってCRCラッチ回路24の出力CBと一致となるが、CRC演算部23から出力されるCAy〜CAnはCRC比較回路25によってCRCラッチ回路24の出力CBと不一致となる(1≦x<y≦n)。このような場合は、CRC比較回路25の判定結果に応じて入力データ遅延制御回路20が入力データに遅延を付加することにより、CRC演算用位相制御回路22の出力は図8(b)に近づく。このようにしてCRC演算用位相制御回路22の出力を図8(b)に近づけることにより、CRC演算部23のn個の演算回路を有効に使うことができる。
【0030】
図10(a)及び図10(b)は、図2中の位相差調整回路30のはたらきを説明するための図である。以上の説明においてはCRC演算用位相制御回路22の出力が図8(b)のようになる場合を考えたが、位相差によっては図10(a)のように有効なデータをラッチできるストローブの数がnに比べてとても小さく、n個の演算回路のほとんどがエラーとなるCRCコードを演算している場合や、図10(b)のように全てのストローブが有効なデータをラッチしているが必要以上の分解能を有している場合がある。
【0031】
図10(a)のようなデータとストローブとをCRC演算用位相制御回路22が出力した場合、CRC演算部23から出力されるCRCコードCA1,CA2,…,CAnのうち、CAx及びCAy以外のCRCコードはCRC比較回路25においてCRCラッチ回路24の出力CBと不一致となる(1≦x<y≦n)。このような場合は、CRC比較回路25の判定結果に応じて位相差調整回路30がCRC演算用位相制御回路22の隣接ストローブであるS2−(i−1)とS2−iとの位相差が小さくなるような信号を出力する(2≦i≦n)。これによりCRC演算用位相制御回路22の出力は図8(b)に近づく。逆に図10(b)のようなデータとストローブとをCRC演算用位相制御回路22が出力した場合、CRC演算部23から出力されるCRCコードCA1,CA2,…,CAnの全てがCRC比較回路25においてCRCラッチ回路24の出力CBと一致する。このような場合は、CRC比較回路25の判定結果に応じて位相差調整回路30がCRC演算用位相制御回路22の隣接ストローブであるS2−(i−1)とS2−iとの位相差が大きくなるような信号を出力する(2≦i≦n)。これによりCRC演算用位相制御回路22の出力は図8(b)に近づく。このようにしてCRC演算用位相制御回路22の出力を図8(b)に近づけることにより、CRC演算部23のn個の演算回路を有効に使うことができる。
【0032】
最後に、図2のデータ転送回路に設けたポーズ発生回路32のはたらきを説明する。初期化直後の最初のデータ転送などにおいては、選択回路27で選択しているデータとストローブとの位相が最適化されていない。そのため最初のデータ転送においては、CRCエラーとなる可能性がある。この場合、データ取り込み部28で取り込んだデータは無効となり、ホスト10がデータ再送を行う。最初の転送データ量が大きい場合にこのようにCRCエラーとなると、転送時間の大きなロスとなる。そこでポーズ発生回路32から、ある程度の量のデータを受け取った時にホスト10にデータ転送を途中で停止させる信号を出力する。こうすることにより、ホスト10が一度に大量のデータを送信しようとしている時でも途中で転送を止め、そこまでのデータでのCRCコードとホスト10が転送中断後に送信してくるCRCコードとを比較することにより、入力データと入力ストローブとの位相を最適調整することができる。つまり、初期化直後の最初のデータ転送などによるデータとストローブとの位相最適化を、転送データ量に関わらず、受信側の決める時間で行うことができる。
【0033】
なお、図2中のCRCラッチ回路24はホスト10よりデータ転送終了後に入力データと共通のデータバスを用いて転送されるCRCコードをラッチするものとしたが、入力データと異なる信号線を用いて転送されるCRCコードをラッチする場合にも、本発明は適用可能である。
【0034】
さて、図5は、図2中のCRCラッチ回路24の内部構成例を示している。図5のCRCラッチ回路24は、CRCコードとCRC用ストローブとの位相をm(mは2以上の整数)通りにずらして当該CRCコードをラッチするためのラッチ回路40と、このラッチ回路40のm個の出力CB1,CB2,…,CBmの中からCRC比較回路25へ供給すべきCRCコードCBを多数決により決定するための多数決回路41とを有するものである。多数決回路41を設けたことにより、CRCラッチ回路24の出力CBの信頼性が向上する。
【0035】
図6は、図2中のデータ確定部26の他の構成例を示している。図6のデータ確定部26は、データ取り込み部50と、取り込みデータ選択回路51とを有するものである。データ取り込み部50は、CRC演算用位相制御回路22からのデータとストローブとのn組の出力をもとに各ストローブS2−1,S2−2,…,S2−nに基づいて各データD2−1,D2−2,…,D2−nを取り込むように、n個のラッチで構成される。取り込みデータ選択回路51は、データ取り込み部50から出力されたn個のデータDA1,DA2,…,DAnのうちCRC比較回路25の判定結果に対応するデータを選択し、これを受信データD4として、図示しない後段のデータ処理回路へ与える。これにより、図2の場合と同様の機能を達成できる。なお、データ取り込み部50は、CRC演算部23と同様にCRC演算動作制御回路31の出力に応じて一部の回路動作を停止する機能を有する。
【0036】
図7は、図2のデータ転送回路の変形例を示している。図2の構成と異なる点は、CRC比較回路25の判定結果をもとに出力データと出力ストローブとの位相差を調整するための出力位相調整回路60を更に備えたことである。この場合の出力ストローブは、前述のDSTROBEに相当する。出力位相調整回路60は、図2中の選択回路27で選択したデータD3とストローブS3とがそれぞれ入力データと入力ストローブとに対してどれだけ遅延が付加されているかをCRC比較回路25の判定結果より算出し、その算出した結果をもとに、出力時のデータとストローブとの位相差を決定し、その決定した位相差を持つデータとストローブとを出力する。これは、受信時のデータとストローブとの位相のずれを検出した結果を送信時に適用したものである。
【0037】
例えば、ホスト10が図8(a)のように理想的なデータとストローブとの位相で出力してもドライブ11側において図8(d)のようにデータとストローブがずれていたとする。これは、ホスト10とドライブ11との間の伝送線路などにおいてストローブの方がデータより遅延が大きかったことによる。このことから、当該ホスト10とドライブ11との間においてはストローブの方がデータより遅延が大きいと判断できるため、逆にデータとストローブとをドライブ11が出力する際には図8(c)のような位相関係を持つデータとストローブとを出力することにより、先ほどまで送信側であったホスト10では図8(a)のような理想的なデータとストローブとを受け取ることが可能となる。このように、データ及びストローブ受信時の位相調整結果よりデータ出力時のデータとストローブとの位相を調整することにより、元の送信側でデータを確実に受けることができるようになる。
【0038】
【発明の効果】
以上説明してきたとおり、本発明によれば、データ受信機器において、入力データと入力ストローブとの位相を複数通りにずらして計算することにより得られる複数のCRCコードと、データ転送終了後に送信機器から転送されるCRCコードとをそれぞれ比較し、それらの比較結果に応じて入力データと入力ストローブとの位相を調整することとしたので、CRCエラーの頻発を防ぐとともに、転送レートの低下を防止し、かつデータの高信頼性を確保することができる。
【0039】
しかも、一度のデータ転送で入力データと入力ストローブとの位相を調整することができる利点がある。また、入力データと入力ストローブとの位相を受信側で調整するため、送信機器側の回路構成は変更不要である。また、CRC演算を入力データと同じビット幅で演算した場合、入力データの全てのビットに対して入力ストローブとの位相調整を行えるという利点もある。
【図面の簡単な説明】
【図1】本発明に係るデータ転送回路を利用したデータ処理システムの構成例を示すブロック図である。
【図2】図1中のドライブに利用された本発明に係るデータ転送回路の構成例を示すブロック図である。
【図3】図2中のCRC演算用位相制御回路の内部構成例を示す回路図である。
【図4】図2中のCRC演算用位相制御回路の他の内部構成例を示す回路図である。
【図5】図2中のCRCラッチ回路の内部構成例を示すブロック図である。
【図6】図2中のデータ確定部の他の構成例を示すブロック図である。
【図7】図2のデータ転送回路の変形例を示すブロック図である。
【図8】(a)〜(d)は図2のデータ転送回路におけるデータとストローブとの種々の位相関係を示すタイミング図である。
【図9】(a)及び(b)は図2中の入力データ遅延制御回路及び入力ストローブ遅延制御回路のはたらきを説明するためのタイミング図である。
【図10】(a)及び(b)は図2中の位相差調整回路のはたらきを説明するためのタイミング図である。
【符号の説明】
10 ホスト
11 ドライブ
20 入力データ遅延制御回路
21 入力ストローブ遅延制御回路
22 CRC演算用位相制御回路
23 CRC演算部
24 CRCラッチ回路
25 CRC比較回路
26 データ確定部
27 選択回路
28 データ取り込み部
29 転送モード判別回路
30 位相差調整回路
31 CRC演算動作制御回路
32 ポーズ発生回路
40 ラッチ回路
41 多数決回路
50 データ取り込み部
51 取り込みデータ選択回路
60 出力位相調整回路
【発明の属する技術分野】
本発明は、ストローブを用いたデータ転送を実行するためのデータ転送回路に関するものである。
【0002】
【従来の技術】
パーソナルコンピュータにおいて、ホストプロセッサと、ハードディスクドライブ、CD−ROMドライブなどの記憶装置とを接続するためのインターフェースの1つとして、ATA/ATAPI(AT Attachment / AT Attachment PacketInterface)規格が知られている。ハードディスクドライブの場合の転送モードには、PIO(Program Input/Output)モード、シングルワードDMA(DirectMemory Access)モード、マルチワードDMAモード、UltraDMAモード(UltraATAモードとも言う。)がある。このうち、同期DMAバーストモードであるUltraDMAモードが最高転送レートを実現できる。
【0003】
UltraDMAモードの技術によれば、データを送信している機器(ホスト又はドライブ)がストローブを制御する責任を負う。具体的には、ホストがデータをドライブに書き込む場合にはストローブ信号としてHSTROBEを、その逆の場合にはドライブがDSTROBEをそれぞれ駆動する。しかも、ストローブ信号の立ち上がりエッジと立ち下がりエッジとの両方を使う。データバスは、例えば16ビットの双方向バスである。データ転送の終了時には、CRC(Cyclic Redundancy Check)コードによるエラーチェックを行う。CRCコードはドライブ側、ホスト側それぞれに送信又は受信したデータについて巡回的に計算を行い、負論理のDMACK信号の立ち上がりエッジで、ホストが計算したCRCコードをドライブに書き込む。これは、データの転送方向がホストからドライブであっても、その逆であっても同じである。そして、ドライブ側は自身が計算したCRCコードと、ホストが書き込んだCRCコードとを比較して、それらが一致していればデータ転送が正常に終了したということになる。CRCエラーが検出された場合、ドライブは、エラーレジスタのエラービットをセットし、コマンドの終了時にホストにエラーを報告する(特許文献1参照)。
【0004】
【特許文献1】
特表平10−513294号公報
【0005】
【発明が解決しようとする課題】
近年、UltraDMA転送においても転送レートが上がるにつれ、データとストローブとのスキューが無視できなくなってきている。
【0006】
本発明の目的は、データとストローブとのスキューがばらつくことで生じるCRCエラーの頻発を防ぐとともに、転送レートの低下を防止し、かつデータの高信頼性を確保することにある。
【0007】
【課題を解決するための手段】
上記目的を達成するために、本発明は、データ受信機器において、入力データと入力ストローブとの位相を複数通りにずらして計算することにより得られる複数のCRCコードと、データ転送終了後に送信機器から転送されるCRCコードとをそれぞれ比較し、それらの比較結果に応じて入力データと入力ストローブとの位相を調整することとしたものである。
【0008】
具体的に説明すると、本発明は、送信機器から転送されるデータとストローブとを受け取るデータ転送回路において、入力データと入力ストローブとの位相を複数にずらして複数組のデータとストローブとを出力するためのCRC演算用位相制御回路と、該CRC演算用位相制御回路から出力されたデータとストローブとの各組をもとにCRCコードをそれぞれ演算するための複数の演算回路を有するCRC演算部と、データ転送終了後に送信機器から転送されるCRCコードを該送信機器から転送されるCRC用ストローブに応答してラッチするためのCRCラッチ回路と、CRC演算部の複数の出力のうちのいずれがCRCラッチ回路の出力と一致しているかを判定するようにCRC演算部の複数の出力とCRCラッチ回路の出力とをそれぞれ比較するためのCRC比較回路と、CRC演算用位相制御回路からのデータとストローブとの各組の出力のうちCRC比較回路の判定結果に対応する組の出力に基づいて受信データを確定するためのデータ確定部とを備えることとしたものである。
【0009】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて説明する。
【0010】
図1は、本発明に係るデータ転送回路を利用したデータ処理システムの構成例を示している。図1において、10はホストプロセッサ、11はハードディスクドライブなどの記憶装置である。ここでは、ホスト10からドライブ11へのデータ転送について説明する。データバスは例えば16ビット幅であり、データ及びCRCコードの転送に共用される。ホスト10は、データの転送タイミングを表すストローブ(HSTROBE)の他に、データ転送終了後のCRC用ストローブ(DMACK)をドライブ11へ供給する。
【0011】
図2は、図1中のドライブ11に利用された本発明に係るデータ転送回路の構成例を示している。図2のデータ転送回路は、入力データ遅延制御回路20と、入力ストローブ遅延制御回路21と、CRC演算用位相制御回路22とを備えている。入力データ遅延制御回路20は、ホスト10からの入力データに遅延を付加し、その結果に係るデータD1をCRC演算用位相制御回路22に与えるための回路である。入力ストローブ遅延制御回路21は、ホスト10からの入力ストローブに遅延を付加し、その結果に係るストローブS1をCRC演算用位相制御回路22に与えるための回路である。CRC演算用位相制御回路22は、データD1とストローブS1との位相を複数通りにずらしてn(nは2以上の整数)組のデータとストローブとを出力するための回路である。ここで、CRC演算用位相制御回路22の出力データをD2−1,D2−2,…,D2−nとし、出力ストローブをS2−1,S2−2,…,S2−nとする。
【0012】
図2のデータ転送回路は、CRC演算部23と、CRCラッチ回路24と、CRC比較回路25と、データ確定部26とを更に備えている。CRC演算部23は、CRC演算用位相制御回路22から出力されたデータとストローブとの各組をもとにCRCコードをそれぞれ演算するためのn個の演算回路を有する。第1の演算回路は、CRC演算用位相制御回路22の出力のうち第1組のデータD2−1とストローブS2−1とを用いてCRC演算を行い、CRCコードCA1を出力する。第2の演算回路は、CRC演算用位相制御回路22の出力のうち第2組のデータD2−2とストローブS2−2とを用いてCRC演算を行い、CRCコードCA2を出力する。同様に第nの演算回路は、CRC演算用位相制御回路22の出力のうち第n組のデータD2−nとストローブS2−nとを用いてCRC演算を行い、CRCコードCAnを出力する。このようにして、CRC演算部23はCRC演算用位相制御回路22から出力されたn組のデータとストローブとをもとにn通りのCRCコードCA1,CA2,…,CAnを出力する。CRCラッチ回路24は、データ転送終了後にホスト10から入力データと共通のデータバスを介して転送されるCRCコードを、CRC用ストローブに応答してラッチするための回路である。CRC比較回路25は、CRC演算部23で演算されたn個のCRCコードCA1,CA2,…,CAnのうちのいずれがCRCラッチ回路24の出力CBと一致しているかを判定するように、CA1,CA2,…,CAnとCBとをそれぞれ比較するための回路である。なお、CRC演算用位相制御回路22のデータとストローブとの組数(すなわち、CRC演算部23の演算回路数)nは、これを3〜7のいずれかの値とするのが好適である。
【0013】
データ確定部26は、CRC演算用位相制御回路22からのデータとストローブとのn組の出力のうちCRC比較回路25の判定結果に対応する組の出力に基づいて受信データD4を確定するように、選択回路27と、データ取り込み部28とで構成されている。選択回路27は、CRC演算用位相制御回路22からのデータとストローブとのn組の出力のうちCRC比較回路25の判定結果に対応する組の出力、すなわちCRCラッチ回路24の出力CBと一致している演算結果を出力しているCRC演算部23内の演算回路に入力されているデータ及びストローブをデータD3及びストローブS3として選択するための回路である。データ取り込み部28は、ストローブS3に基づいてデータD3を取り込み、図示しない後段のデータ処理回路へ受信データD4を与える。
【0014】
図2のデータ転送回路は、転送モード判別回路29と、位相差調整回路30と、CRC演算動作制御回路31と、ポーズ発生回路32とを更に備えている。転送モード判別回路29は、データ転送前に予め設定される転送モードを判別するための回路である。位相差調整回路30は、CRC演算用位相制御回路22の出力におけるデータ間又はストローブ間の位相差を調整するための回路である。CRC演算動作制御回路31は、データ確定部26により受信データD4が一旦確定した後は、CRC比較回路25が不一致判定をしない限りCRC演算部23中の対応演算回路以外の演算回路の動作を停止させるための回路である。CRC演算部23は、CRC演算動作制御回路31の出力に応じて一部の演算回路の動作を停止する機能を有する。ポーズ発生回路32は、ホスト10にデータ転送の中断を要求するための回路である。なお、入力データ遅延制御回路20により付加すべき遅延、入力ストローブ遅延制御回路21により付加すべき遅延、及び位相差調整回路30により実現すべき位相差は、それぞれCRC比較回路25の判定結果に応じて、又は転送モード判別回路29の判別結果に応じて制御されるようになっている。
【0015】
図3は、図2中のCRC演算用位相制御回路22の内部構成例を示している。図3の回路例は(n−1)個の遅延要素からなり、入力ストローブ遅延制御回路21から与えられたストローブS1をもとにn相のストローブS2−1,S2−2,S2−3,S2−4,…,S2−nを生成している。各遅延要素の遅延量は、位相差調整回路30の出力に応じて可変である。この場合には、入力データ遅延制御回路20から与えられたデータD1がそのまま出力データD2−1,D2−2,…,D2−nとされる。
【0016】
図4は、図2中のCRC演算用位相制御回路22の他の内部構成例を示している。図4の回路例は(n−1)個の遅延要素からなり、入力データ遅延制御回路20から与えられたデータD1をもとにn相のデータD2−1,D2−2,D2−3,D2−4,…,D2−nを生成している。各遅延要素の遅延量は、位相差調整回路30の出力に応じて可変である。この場合には、入力ストローブ遅延制御回路21から与えられたストローブS1がそのまま出力ストローブS2−1,S2−2,…,S2−nとされる。
【0017】
次に、図8〜図10を参照しながら、図2のデータ転送回路の動作を具体的に説明する。
【0018】
図8(a)〜図8(d)は、図2のデータ転送回路におけるデータとストローブとの種々の位相関係を示している。入力データと入力ストローブとの位相としては、図8(a)のように入力データの中央付近に入力ストローブのエッジが来るのが理想である。しかし、ホスト10とドライブ11との間の配線遅延により入力データと入力ストローブの位相がずれてしまい、図8(c)や図8(d)のような位相関係の入力データと入力ストローブとが図2のデータ転送回路に与えられることがある。このような入力データと入力ストローブとをそのまま使用した場合には、誤ったデータを取り込んでしまう。ところが、図2のデータ転送回路は、図8(c)や図8(d)のような位相関係の入力データと入力ストローブとが入力されても、正しいデータを取り込める機能を有している。
【0019】
まず、図8(a)のような位相関係の入力データと入力ストローブとが入力された場合について説明する。転送モード判別回路29は、データ転送前に予め設定される転送モードによりストローブに対してデータのセットアップタイムを判別し、それを入力データ遅延制御回路20へ通知する。入力データ遅延制御回路20は、CRC演算用位相制御回路22へのデータD1とストローブS1との位相関係が図8(c)のようになるように入力データに対して遅延を付加する。この場合、入力ストローブ遅延制御回路21は入力ストローブに対して遅延を付加する必要はない。CRC演算用位相制御回路22は、入力ストローブ遅延制御回路21から出力された、データD1に対して図8(c)のような位相関係を持つストローブS1をもとに、図8(b)のように位相をn通りにずらしたストローブS2−1,S2−2,…,S2−nを出力する。
【0020】
初期化直後の最初のデータ転送など、CRC比較回路25の出力がない場合には、選択回路27はCRC演算用位相制御回路22のn組のデータ及びストローブのうちのいずれか1組をデータD3及びストローブS3として選択している。例えば、ホスト10から転送される入力データ及び入力ストローブと同じ位相のもの(D2−1及びS2−1)を選択するものとする。
【0021】
選択回路27から出力されるデータD3及びストローブS3により、データ取り込み部28はデータを取り込む。データ取り込み部28がデータを取り込むのと並行して、CRC演算部23はCRC演算用位相制御回路22からのn通りの位相関係を持つデータ及びストローブによりCRC演算を行い、n通りのCRCコードCA1,CA2,…,CAnを出力する。
【0022】
一方、CRCラッチ回路24は、データ転送終了後にホスト10から入力データと共通のデータバスを用いて転送されるCRCコードをCRC用ストローブによりラッチし、ラッチしたCRCコードを出力する。CRC比較回路25は、CRC演算部23のn個のCRCコードCA1,CA2,…,CAnとCRCラッチ回路24の出力CBとをそれぞれ比較し、n個のCRCコードCA1,CA2,…,CAnのうちのいずれがCRCラッチ回路24の出力CBと一致しているかを示す信号を出力する。
【0023】
ここで、CRC演算部23のn個の演算回路のうち選択回路27が選択しているデータ及びストローブと同じ位相のデータ及びストローブで演算している演算回路の出力を、今回のデータ転送において取り込んだデータのCRCコードとし、CRCラッチ回路24の出力CBと一致している場合はデータ取り込み部28に取り込んだデータは有効とみなし、図示しない後段のデータ処理回路で処理を行う。一致していない場合はデータ取り込み部28に取り込んだデータは無効とみなし、図示しない後段のデータ処理回路には転送しない。また、一致していない場合にはホスト10にCRCエラーを通知し、ホスト10がデータ再送などの処理を行う。
【0024】
また、データ転送及びCRC比較終了後、選択回路27は次のデータ転送に備えて、CRC比較回路25においてCRCラッチ回路24の出力CBと一致している演算結果を出力しているCRC演算部23内の演算回路に入力されているデータ及びストローブを選択し、データD3及びストローブS3を出力する。
【0025】
以上のとおり、図2のデータ転送回路によれば、一度のデータ転送によって入力データと入力ストローブとが最適な位相関係を持つように調整することができる。そのため、転送レートを落とすことなく入力データと入力ストローブとのスキューのずれによるCRCエラーを抑えることができる。
【0026】
なお、選択回路27は、CRC演算部23のn個の出力CA1,CA2,…,CAnの中にCRCラッチ回路24の出力CBと一致するものが複数存在する場合には、そのうちの1つの出力を選択する。例えば、一致している複数の演算回路の出力のうち入力されているデータとストローブとの位相が図8(a)のような関係にある演算回路の入力を選択するものとする。図8(b)の場合で説明すると、CRC比較回路25においてCRC演算部23のn個の出力のうちCAaからCAbまでがCRCラッチ回路24の出力CBと一致する(1≦a<b≦n)。この場合には、数字aと数字bとの中央あたりの数字をcとすると、選択回路27においてはCRC演算用位相制御回路22の出力のうち、D2−c及びS2−cを選択すればよい。
【0027】
また、一度データ転送を行い、CRC比較回路25の出力に応じて選択回路27においてデータ取り込み部28に必要なデータD3及びストローブS3を選択した後は、CRC比較回路25の判定結果に基づき、CRC演算動作制御回路31は、選択回路27で選択したデータとストローブとが入力されている演算回路以外は停止させるような信号を出力する。この場合、CRC演算部23内のn個の演算回路のうち1個だけが動作するようになるので、その消費電力を抑えることが可能となる。この動作している演算回路を用いた次回以降のデータ転送においてCRCエラーが検出されると、CRC演算動作制御回路31から出力される信号によりCRC演算部23のn個の演算回路が全て動き出し、再度位相調整を行うこととなる。
【0028】
CRC演算動作制御回路31を使用せずにCRC演算部23の全演算回路を常時動作させれば、常に位相調整が可能となるため、電圧変動や温度変動により入力データと入力ストローブとの位相が変わってもCRCエラーを出すことなく確実にデータを取り込むことができる。
【0029】
図9(a)及び図9(b)は、図2中の入力データ遅延制御回路20及び入力ストローブ遅延制御回路21のはたらきを説明するための図である。以上の説明では入力データと入力ストローブとの位相が図8(a)のようになる場合を考えたが、ホスト10とドライブ11との間の伝送線路の状況によっては入力データと入力ストローブとの位相関係が図8(c)や図8(d)のようになる場合がある。図8(c)のような位相関係にある入力データと入力ストローブとが与えられた場合、CRC演算用位相制御回路22の出力は図9(a)のようになる。このとき、CRC演算部23から出力されるCA1〜CAxはCRC比較回路25によってCRCラッチ回路24の出力CBと不一致となり、CRC演算部23から出力されるCAy〜CAnはCRC比較回路25によってCRCラッチ回路24の出力CBと一致する(1≦x<y≦n)。このような場合は、CRC比較回路25の判定結果に応じて入力ストローブ遅延制御回路21が入力ストローブに遅延を付加することにより、CRC演算用位相制御回路22の出力は図8(b)に近づく。逆に図8(d)のような位相関係にある入力データと入力ストローブとが与えられた場合、CRC演算用位相制御回路22の出力は図9(b)のようになる。このとき、CRC演算部23から出力されるCA1〜CAxはCRC比較回路25によってCRCラッチ回路24の出力CBと一致となるが、CRC演算部23から出力されるCAy〜CAnはCRC比較回路25によってCRCラッチ回路24の出力CBと不一致となる(1≦x<y≦n)。このような場合は、CRC比較回路25の判定結果に応じて入力データ遅延制御回路20が入力データに遅延を付加することにより、CRC演算用位相制御回路22の出力は図8(b)に近づく。このようにしてCRC演算用位相制御回路22の出力を図8(b)に近づけることにより、CRC演算部23のn個の演算回路を有効に使うことができる。
【0030】
図10(a)及び図10(b)は、図2中の位相差調整回路30のはたらきを説明するための図である。以上の説明においてはCRC演算用位相制御回路22の出力が図8(b)のようになる場合を考えたが、位相差によっては図10(a)のように有効なデータをラッチできるストローブの数がnに比べてとても小さく、n個の演算回路のほとんどがエラーとなるCRCコードを演算している場合や、図10(b)のように全てのストローブが有効なデータをラッチしているが必要以上の分解能を有している場合がある。
【0031】
図10(a)のようなデータとストローブとをCRC演算用位相制御回路22が出力した場合、CRC演算部23から出力されるCRCコードCA1,CA2,…,CAnのうち、CAx及びCAy以外のCRCコードはCRC比較回路25においてCRCラッチ回路24の出力CBと不一致となる(1≦x<y≦n)。このような場合は、CRC比較回路25の判定結果に応じて位相差調整回路30がCRC演算用位相制御回路22の隣接ストローブであるS2−(i−1)とS2−iとの位相差が小さくなるような信号を出力する(2≦i≦n)。これによりCRC演算用位相制御回路22の出力は図8(b)に近づく。逆に図10(b)のようなデータとストローブとをCRC演算用位相制御回路22が出力した場合、CRC演算部23から出力されるCRCコードCA1,CA2,…,CAnの全てがCRC比較回路25においてCRCラッチ回路24の出力CBと一致する。このような場合は、CRC比較回路25の判定結果に応じて位相差調整回路30がCRC演算用位相制御回路22の隣接ストローブであるS2−(i−1)とS2−iとの位相差が大きくなるような信号を出力する(2≦i≦n)。これによりCRC演算用位相制御回路22の出力は図8(b)に近づく。このようにしてCRC演算用位相制御回路22の出力を図8(b)に近づけることにより、CRC演算部23のn個の演算回路を有効に使うことができる。
【0032】
最後に、図2のデータ転送回路に設けたポーズ発生回路32のはたらきを説明する。初期化直後の最初のデータ転送などにおいては、選択回路27で選択しているデータとストローブとの位相が最適化されていない。そのため最初のデータ転送においては、CRCエラーとなる可能性がある。この場合、データ取り込み部28で取り込んだデータは無効となり、ホスト10がデータ再送を行う。最初の転送データ量が大きい場合にこのようにCRCエラーとなると、転送時間の大きなロスとなる。そこでポーズ発生回路32から、ある程度の量のデータを受け取った時にホスト10にデータ転送を途中で停止させる信号を出力する。こうすることにより、ホスト10が一度に大量のデータを送信しようとしている時でも途中で転送を止め、そこまでのデータでのCRCコードとホスト10が転送中断後に送信してくるCRCコードとを比較することにより、入力データと入力ストローブとの位相を最適調整することができる。つまり、初期化直後の最初のデータ転送などによるデータとストローブとの位相最適化を、転送データ量に関わらず、受信側の決める時間で行うことができる。
【0033】
なお、図2中のCRCラッチ回路24はホスト10よりデータ転送終了後に入力データと共通のデータバスを用いて転送されるCRCコードをラッチするものとしたが、入力データと異なる信号線を用いて転送されるCRCコードをラッチする場合にも、本発明は適用可能である。
【0034】
さて、図5は、図2中のCRCラッチ回路24の内部構成例を示している。図5のCRCラッチ回路24は、CRCコードとCRC用ストローブとの位相をm(mは2以上の整数)通りにずらして当該CRCコードをラッチするためのラッチ回路40と、このラッチ回路40のm個の出力CB1,CB2,…,CBmの中からCRC比較回路25へ供給すべきCRCコードCBを多数決により決定するための多数決回路41とを有するものである。多数決回路41を設けたことにより、CRCラッチ回路24の出力CBの信頼性が向上する。
【0035】
図6は、図2中のデータ確定部26の他の構成例を示している。図6のデータ確定部26は、データ取り込み部50と、取り込みデータ選択回路51とを有するものである。データ取り込み部50は、CRC演算用位相制御回路22からのデータとストローブとのn組の出力をもとに各ストローブS2−1,S2−2,…,S2−nに基づいて各データD2−1,D2−2,…,D2−nを取り込むように、n個のラッチで構成される。取り込みデータ選択回路51は、データ取り込み部50から出力されたn個のデータDA1,DA2,…,DAnのうちCRC比較回路25の判定結果に対応するデータを選択し、これを受信データD4として、図示しない後段のデータ処理回路へ与える。これにより、図2の場合と同様の機能を達成できる。なお、データ取り込み部50は、CRC演算部23と同様にCRC演算動作制御回路31の出力に応じて一部の回路動作を停止する機能を有する。
【0036】
図7は、図2のデータ転送回路の変形例を示している。図2の構成と異なる点は、CRC比較回路25の判定結果をもとに出力データと出力ストローブとの位相差を調整するための出力位相調整回路60を更に備えたことである。この場合の出力ストローブは、前述のDSTROBEに相当する。出力位相調整回路60は、図2中の選択回路27で選択したデータD3とストローブS3とがそれぞれ入力データと入力ストローブとに対してどれだけ遅延が付加されているかをCRC比較回路25の判定結果より算出し、その算出した結果をもとに、出力時のデータとストローブとの位相差を決定し、その決定した位相差を持つデータとストローブとを出力する。これは、受信時のデータとストローブとの位相のずれを検出した結果を送信時に適用したものである。
【0037】
例えば、ホスト10が図8(a)のように理想的なデータとストローブとの位相で出力してもドライブ11側において図8(d)のようにデータとストローブがずれていたとする。これは、ホスト10とドライブ11との間の伝送線路などにおいてストローブの方がデータより遅延が大きかったことによる。このことから、当該ホスト10とドライブ11との間においてはストローブの方がデータより遅延が大きいと判断できるため、逆にデータとストローブとをドライブ11が出力する際には図8(c)のような位相関係を持つデータとストローブとを出力することにより、先ほどまで送信側であったホスト10では図8(a)のような理想的なデータとストローブとを受け取ることが可能となる。このように、データ及びストローブ受信時の位相調整結果よりデータ出力時のデータとストローブとの位相を調整することにより、元の送信側でデータを確実に受けることができるようになる。
【0038】
【発明の効果】
以上説明してきたとおり、本発明によれば、データ受信機器において、入力データと入力ストローブとの位相を複数通りにずらして計算することにより得られる複数のCRCコードと、データ転送終了後に送信機器から転送されるCRCコードとをそれぞれ比較し、それらの比較結果に応じて入力データと入力ストローブとの位相を調整することとしたので、CRCエラーの頻発を防ぐとともに、転送レートの低下を防止し、かつデータの高信頼性を確保することができる。
【0039】
しかも、一度のデータ転送で入力データと入力ストローブとの位相を調整することができる利点がある。また、入力データと入力ストローブとの位相を受信側で調整するため、送信機器側の回路構成は変更不要である。また、CRC演算を入力データと同じビット幅で演算した場合、入力データの全てのビットに対して入力ストローブとの位相調整を行えるという利点もある。
【図面の簡単な説明】
【図1】本発明に係るデータ転送回路を利用したデータ処理システムの構成例を示すブロック図である。
【図2】図1中のドライブに利用された本発明に係るデータ転送回路の構成例を示すブロック図である。
【図3】図2中のCRC演算用位相制御回路の内部構成例を示す回路図である。
【図4】図2中のCRC演算用位相制御回路の他の内部構成例を示す回路図である。
【図5】図2中のCRCラッチ回路の内部構成例を示すブロック図である。
【図6】図2中のデータ確定部の他の構成例を示すブロック図である。
【図7】図2のデータ転送回路の変形例を示すブロック図である。
【図8】(a)〜(d)は図2のデータ転送回路におけるデータとストローブとの種々の位相関係を示すタイミング図である。
【図9】(a)及び(b)は図2中の入力データ遅延制御回路及び入力ストローブ遅延制御回路のはたらきを説明するためのタイミング図である。
【図10】(a)及び(b)は図2中の位相差調整回路のはたらきを説明するためのタイミング図である。
【符号の説明】
10 ホスト
11 ドライブ
20 入力データ遅延制御回路
21 入力ストローブ遅延制御回路
22 CRC演算用位相制御回路
23 CRC演算部
24 CRCラッチ回路
25 CRC比較回路
26 データ確定部
27 選択回路
28 データ取り込み部
29 転送モード判別回路
30 位相差調整回路
31 CRC演算動作制御回路
32 ポーズ発生回路
40 ラッチ回路
41 多数決回路
50 データ取り込み部
51 取り込みデータ選択回路
60 出力位相調整回路
Claims (19)
- 送信機器から転送されるデータとストローブとを受け取るデータ転送回路であって、
入力データと入力ストローブとの位相を複数にずらして複数組のデータとストローブとを出力するためのCRC演算用位相制御回路と、
前記CRC演算用位相制御回路から出力されたデータとストローブとの各組をもとにCRC(Cyclic Redundancy Check)コードをそれぞれ演算するための複数の演算回路を有するCRC演算部と、
データ転送終了後に前記送信機器から転送されるCRCコードを、前記送信機器から転送されるCRC用ストローブに応答してラッチするためのCRCラッチ回路と、
前記CRC演算部の複数の出力のうちのいずれが前記CRCラッチ回路の出力と一致しているかを判定するように、前記CRC演算部の複数の出力と前記CRCラッチ回路の出力とをそれぞれ比較するためのCRC比較回路と、
前記CRC演算用位相制御回路からのデータとストローブとの各組の出力のうち前記CRC比較回路の判定結果に対応する組の出力に基づいて受信データを確定するためのデータ確定部とを備えたことを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記データ確定部は、
前記CRC演算用位相制御回路からのデータとストローブとの各組の出力のうち前記CRC比較回路の判定結果に対応する組の出力を選択するための選択回路と、
前記選択回路により選択された組のストローブに基づいて、当該組のデータを前記受信データとして取り込むためのデータ取り込み部とを有することを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記CRCラッチ回路は、
前記CRCコードと前記CRC用ストローブとの位相を複数にずらして前記CRCコードをラッチするためのラッチ回路と、
前記ラッチ回路の複数の出力の中から前記CRC比較回路へ供給すべきCRCコードを多数決により決定するための多数決回路とを有することを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記データ確定部は、
前記CRC演算用位相制御回路からのデータとストローブとの複数組の出力をもとに各ストローブに基づいて各データを取り込むためのデータ取り込み部と、
前記データ取り込み部に取り込まれた複数のデータのうち前記CRC比較回路の判定結果に対応するデータを選択するためのデータ選択回路とを有することを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記CRC演算用位相制御回路に与える入力データに遅延を付加するための入力データ遅延制御回路を更に備えたことを特徴とするデータ転送回路。 - 請求項5記載のデータ転送回路において、
データ転送前に予め設定される転送モードを判別するための転送モード判別回路を更に備え、
前記入力データ遅延制御回路により付加すべき遅延を前記転送モード判別回路の判別結果に応じて制御することを特徴とするデータ転送回路。 - 請求項5記載のデータ転送回路において、
前記入力データ遅延制御回路により付加すべき遅延を前記CRC比較回路の判定結果に応じて制御することを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記CRC演算用位相制御回路に与える入力ストローブに遅延を付加するための入力ストローブ遅延制御回路を更に備えたことを特徴とするデータ転送回路。 - 請求項8記載のデータ転送回路において、
データ転送前に予め設定される転送モードを判別するための転送モード判別回路を更に備え、
前記入力ストローブ遅延制御回路により付加すべき遅延を前記転送モード判別回路の判別結果に応じて制御することを特徴とするデータ転送回路。 - 請求項8記載のデータ転送回路において、
前記入力ストローブ遅延制御回路により付加すべき遅延を前記CRC比較回路の判定結果に応じて制御することを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記CRC演算用位相制御回路の出力におけるデータ間又はストローブ間の位相差を調整するための位相差調整回路を更に備えたことを特徴とするデータ転送回路。 - 請求項11記載のデータ転送回路において、
データ転送前に予め設定される転送モードを判別するための転送モード判別回路を更に備え、
前記位相差調整回路により実現すべき位相差を前記転送モード判別回路の判別結果に応じて制御することを特徴とするデータ転送回路。 - 請求項11記載のデータ転送回路において、
前記位相差調整回路により実現すべき位相差を前記CRC比較回路の判定結果に応じて制御することを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記CRC演算部の全演算回路が常時動作することを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記データ確定部により受信データが一旦確定した後は、前記CRC比較回路が不一致判定をしない限り前記CRC演算部中の対応演算回路以外の演算回路の動作を停止させるためのCRC演算動作制御回路を更に備えたことを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記送信機器にデータ転送の中断を要求するためのポーズ発生回路を更に備えたことを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記データ確定部は、前記CRC演算部の複数の出力の中に前記CRCラッチ回路の出力と一致するものが複数存在する場合には、そのうちのほぼ中央の出力に基づいて前記受信データを確定することを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記CRC比較回路の判定結果をもとに出力データと出力ストローブとの位相差を調整するための出力位相調整回路を更に備えたことを特徴とするデータ転送回路。 - 請求項1記載のデータ転送回路において、
前記CRC演算用位相制御回路のデータとストローブとの組数及び前記CRC演算部の演算回路数を3〜7としたことを特徴とするデータ転送回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003000810A JP2004213438A (ja) | 2003-01-07 | 2003-01-07 | データ転送回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003000810A JP2004213438A (ja) | 2003-01-07 | 2003-01-07 | データ転送回路 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004213438A true JP2004213438A (ja) | 2004-07-29 |
Family
ID=32818992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003000810A Pending JP2004213438A (ja) | 2003-01-07 | 2003-01-07 | データ転送回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004213438A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009529289A (ja) * | 2006-03-06 | 2009-08-13 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 高速双方向信号伝送の非対称制御 |
US8161331B2 (en) | 2006-12-04 | 2012-04-17 | Samsung Electronics Co., Ltd. | Data training system and method thereof |
-
2003
- 2003-01-07 JP JP2003000810A patent/JP2004213438A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009529289A (ja) * | 2006-03-06 | 2009-08-13 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 高速双方向信号伝送の非対称制御 |
US7729465B2 (en) * | 2006-03-06 | 2010-06-01 | Globalfoundries Inc. | Asymmetric control of high-speed bidirectional signaling |
CN101416435B (zh) * | 2006-03-06 | 2012-04-04 | 格罗方德半导体公司 | 高速双向发信号的非对称控制 |
US8161331B2 (en) | 2006-12-04 | 2012-04-17 | Samsung Electronics Co., Ltd. | Data training system and method thereof |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6584526B1 (en) | Inserting bus inversion scheme in bus path without increased access latency | |
US7761753B2 (en) | Memory channel with bit lane fail-over | |
US7821919B2 (en) | Data processing apparatus and data processing method | |
JP4331756B2 (ja) | 一部のフレームについての早期crc供給 | |
KR100894346B1 (ko) | 메모리 컨트롤러, 메모리 회로, 메모리 시스템 및 신호 간위상 관계 조정 방법 | |
US9166625B2 (en) | Circuits, integrated circuits, and methods for interleaved parity computation | |
US8627174B2 (en) | Memory devices and systems including error-correction coding and methods for error-correction coding | |
US8484546B2 (en) | Information processing apparatus, information transmitting method, and information receiving method | |
US20060159023A1 (en) | CRC error history mechanism | |
JP2004213438A (ja) | データ転送回路 | |
US10790852B2 (en) | Cyclic redundancy check (CRC) system for detecting error in data communication | |
JPH04303234A (ja) | データ転送方式 | |
JP5344577B2 (ja) | メモリ制御装置及び制御方法 | |
JPH07146825A (ja) | メモリシステム | |
JP2003345674A5 (ja) | ||
US9317295B2 (en) | Asynchronous pipeline system, stage, and data transfer mechanism | |
WO2023159736A1 (zh) | 数据纠错电路和数据传输电路 | |
JP2007258995A (ja) | データ信号位相調整装置及び半導体装置 | |
JP2829137B2 (ja) | 外付キーボード接続確認装置 | |
JPH0614012A (ja) | データ伝送方式 | |
JPH08139710A (ja) | 二重化伝送路の位相差吸収方法及び位相差吸収回路 | |
Fu et al. | Energy Efficient Error Control Implementation | |
JP2007201786A (ja) | 伝送誤り検出方式および伝送装置 | |
JP2000003312A (ja) | 同期式シリアル通信システム及びその制御方法 | |
JP2000059442A (ja) | メモリ制御回路 |