説明

送受信装置およびこれを中継するシステム

【課題】転送データのエラーを認識でき、データ破壊を防止に有利な送受信装置およびそれを中継するシステムを提供する。
【解決手段】実施形態によれば、第1送受信装置(Device 0)および第2送受信装置(Device 1)を含み、複数の送受信装置が順次リング状に接続されるシステムにおいて、中継局となる送受信装置(Device 0)のデータ転送動作の際、転送経路においてエラーが発生した場合、前記中継局となる送受信装置(Device 0)が、中継する送信データの一部を内部で生成したデータに差し替えを行い、下流に送信する。

【発明の詳細な説明】
【技術分野】
【0001】
送受信装置およびこれを中継するシステムに関するものである。
【背景技術】
【0002】
近年、SDカード(登録商標)などのデータ記憶デバイスの大容量化、デジタルカメラ等の解像度向上による画像の高精細化、また画像データのフレームレート向上による高画質化には目覚ましいものがある。このような背景のもと、デジタルカメラ等のホスト機器と、データを記録する記憶デバイス等との間のデータ伝送量は、増大の一途をたどっている。このような大容量データ伝送においては、接続ケーブルの簡略化、消費電力の抑制、EMI放射ノイズ低減などの観点から、小振幅差動信号による高速シリアル伝送方式が一般的に用いられるようになってきている。また、この様な高速シリアル伝送方式では、伝送の安定化を図るために8b/10bの様なコーディングが用いられることが一般的である。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−273939号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
転送データのエラーを認識でき、データ破壊の防止に有利な送受信装置およびこれを中継するシステムを提供する。
【課題を解決するための手段】
【0005】
実施形態によれば、第1送受信装置および第2送受信装置を含み、複数の送受信装置が順次リング状に接続されるシステムにおいて、中継局となる送受信装置のデータ転送動作の際、転送経路においてエラーが発生した場合、前記中継局となる送受信装置が、中継する送信データの一部を内部で生成したデータに差し替えを行い、下流に送信する。
【図面の簡単な説明】
【0006】
【図1】参考例に係るシステム(リングトポロジー)を示すブロック図。
【図2】参考例に係るData Burst Streamingの有効化を示すフロー図。
【図3】参考例に係るData Burst Streamingの無効化を示すフロー図。
【図4】参考例に係るループバックパスを示すブロック図。
【図5】第1の実施形態に係る送受信装置(Device 0)の構成例を示すブロック図。
【図6】第1の実施形態に係るエラー情報の発生(1)を示す図。
【図7】第1の実施形態に係るエラー情報の発生(2)を示す図。
【図8】第1の実施形態に係るエラー情報の伝達を示す図。
【図9】第1の実施形態に係るエラー情報のエラー検知を示すフロー図。
【図10】第2の実施形態に係るK-Symbolを示す図。
【図11】第2の実施形態に係るエラー情報の伝達を示す図。
【図12】第2の実施形態に係るエラー情報のエラー検知を示すフロー図。
【図13】第3の実施形態に係るエラー情報の伝達を示す図。
【図14】第3の実施形態に係るエラー情報のエラー検知を示すフロー図。
【図15】第4の実施形態に係るエラー情報の伝達を示す図。
【図16】第4の実施形態に係るエラー情報のエラー検知を示すフロー図。
【発明を実施するための形態】
【0007】
[参考例]
まず、参考例について、図1乃至図4を参照して、説明する。
【0008】
<システム(リングトポロジー)>
まず、図1を用い、システム(リングトポロジー)について説明する。
【0009】
図示するように、本例のシステムは、ホスト(Host)と、2つの送受信デバイス(Device 0, Device 1)との各ノードの送信端子が次のノードの受信端子に接続される。そのため、このようなシステムを、リング(輪)を構成することから、リングトポロジーと称される。
【0010】
本例のリングトポロジーは、例えば、SDアソシエーションが策定したUHS-II規格等に準拠される。このように、リングトポロジーは、複数のデバイスを接続するための接続形態の一つとして想定されるものである。
【0011】
ここで、上記UHS-II規格に準拠したリングトポロジーでは、各ノード間でやりとりをするパケットにはヘッダが格納されており、パケット受信時にはヘッダ内に記載されている宛先ID(以下DID)と、自局のID(OWN_NODE_ID)との比較を行って、自局宛のパケットか、他局当てのパケットかの判断を行っている。
【0012】
しかし、例えばUHS-II規格においては、パケット受信時に、パケットの内容にエラーが発生していないかを、巡回符号検査(CRC)を用いて確認する必要がある。つまり一旦全データを受信し、パケットに埋め込まれているCRCの値と、受信したデータを利用して計算したCRCの値が一致し、エラーが発生していないことを確認できた場合にのみ、パケットの内容を見て宛先を判断できることになる。そのため、パケットサイズが比較的大きな(512Bなど)データパケットの場合に、他局宛のパケットの中継に時間がかかってしまうという傾向がある。
【0013】
そこで、UHS-II規格においては、データパケットの転送が発生するデータバースト転送においては、パケットの中継にかかる時間を低く抑えるData Burst Streamingという仕組みを導入している。
【0014】
<Data Burst Streamingの有効化フロー>
図2に沿って、Data Burst Streamingの有効化フローについて説明する。ここでは、上記リングトポロジーにおいて、ホストからの送信されたパケットを受信(Rx)した上流のデバイス(Device 0)が、下流のデバイス(Device 1)にパケットを送信(Tx)する場合を一例に挙げる。なお、以下のフローの制御は、後述するように、例えば、デバイス(Device 0, Device 1)内のコントローラが行う。
まず、ステップS11の際、上流のデバイス(Device 0)は、ホストからパケットを受信する。
【0015】
続いて、ステップS12の際、受信したパケットのヘッダを確認する。
【0016】
続いて、ステップS13の際、ヘッダの内容から自局宛か否かを判定する。
【0017】
続いて、ステップS14の際、上記ステップS13の際に自局宛であると判定される場合(Yes)、自局である上流のデバイス(Device 0)でパケット処理を行い、このフローを終了する(End)。
【0018】
続いて、ステップS15の際、上記ステップS13の際に自局宛でないと判定される場合(No)、受信パケットを下位の局(本例では、Device 1)に送信する。
【0019】
続いて、ステップS16の際、パケット受信した下流の局(Device 1)は、フローコントロールリクエストパケット(FCREQパケット)か否かを判定する。FCREQパケットでないと判定される場合(No)、このフローを終了する。
【0020】
続いて、ステップS17の際、上記ステップS16の際にFCREQパケットである判定される場合(Yes)、Data Burst Streamingの有効化し、このフローを終了する(End)。
【0021】
このように、上記Data Burst Streamingフローでは、バースト転送に先立って行なわれフロー制御に使われるフローコントロールリクエスト(FCREQ)パケットを利用して、バースト転送の中継が有効化される(S17)。そのため、上流のデバイス(Device 0)から下流のデバイス(Device 1)におけるパケットの中継時に、そのパケットがFCREQパケットの有無により、後続の下流のデバイス(Device 1)へのデータバースト転送が発生すると判断できる。そのため、続く下流のデバイス(Device 1)へのデータバースト中のパケットでは、ヘッダの確認などを行われず、送信されるデータをバッファリングせずにそのまま中継することができ、パケットの中継にかかる時間を低く抑えることができる。
【0022】
また、この中継状態では、データバーストの最後に転送される特殊な制御コード(例えば、EDB: End of Data Burst)を中継したことで無効化される。次に、この動作のフローを示す。
【0023】
<Data Burst Streamingの無効化フロー>
図3に沿って、Data Burst Streamingの無効化フローについて説明する。ここでは、上記リングトポロジーのデータ中継時において、上流のデバイス(Device 0)から、下流のデバイス(Device 1)にData Burst Streamingの有効化により、パケットが送信(Tx)された場合を一例に挙げる。なお、以下のフローの制御は、同様に、例えば、デバイス(Device 0, Device 1)内のコントローラが行い、Data Burst Streamingが有効化されているのみ実行される。
まず、ステップS21の際、上流のデバイス(Device 0)は、ホストから送信されたパケットデータを受信する。
【0024】
続いて、ステップS22の際、上流のデバイス(Device 0)は、受信したパケットを、上記Data Burst Streamingの有効化により、下流のデバイス(Device 1)に中継して送信する。
【0025】
続いて、ステップS23の際、上流のデバイス(Device 0)は、中継されたデータを確認する。
【0026】
続いて、ステップS24の際、上流のデバイス(Device 0)は、中継されたデータに、データバーストの最後に転送される終了制御コード(EDB: End of Data Burst)があるか否かを判定する。上記ステップS24の際に、終了制御コード(EDB)がないと判定される場合(No)、このフローを終了する(End)。
【0027】
続いて、ステップS25の際、ステップS24の際に、上記ステップS24の際に終了制御コード(EDB)があると判定される場合(Yes)、Data Burst Streamingを無効化し、このフローを終了する(End)。
【0028】
<ループバックパス(Loopback Path)について>
次に、図4を用いて、上記「来たデータをそのまま中継する」ループバックパスについて説明する。
【0029】
図示するように、ループバックパスについては、Deserializerの後で受信したデータを送信し直すLoopback Path(1)と、10b8b Decodingの後に受信したデータを送信し直すLoopback Path(2)という2種類が提示されている。
【0030】
図中に示す、8b10b Encoding、10b8b Decodingとは、8b10b符号化方式の符号化、復号化を行うブロックである。8b10b符号化方式は、8bitのデータを10bitで表現することにより、データの中にクロックや制御コードを埋め込むことができる。この方式は、例えば、イーサネット(登録商標)、ファイバーチャネル、IEEE 1394、PCI Express 2.0、Serial ATA、USB 3.0など数多くの規格で採用されている。
【0031】
Serializerは、10bit幅のデータから、10倍の速度の1bit幅のデータに変換する(Serialize処理)。Deserializerは、その逆で、1bit幅のデータを10分の1の速度の10bit幅のデータに変換する(Deserialize処理)。上記8b10b Encoding、10b8b Decoding、Serializer、Deserializerは、必要なデバイス(Device 0, Device 1)中の後述するコントローラ等が行う。
【0032】
上記の2種類の方法のうち、前者Loopback Path(1)の方法は、Loopback Path(2)の方法よりもデータの中継にかかるレイテンシが短いものの、8b10b符号化方式の特徴であるランニングディスパリティの保持に関して特殊な対処が必要となる。そのため、10b8b Decoding後に折り返すLoopback Path(2)の方が実装の観点から難易度が低く、好ましい。しかしながら、後者のLoopback Path(2)の方法でも、以下のような傾向が存在する。
【0033】
ここで、UHS-II規格において、受信データは、以下の二段構えで、エラーのチェックを行なう。すなわち、
1. 10b8b Decodingにおいて10bitのデータが変換テーブルに存在するか否か
2. 8bitデータからパケットを抽出後、CRCを用いてパケットの正当性を確認する
このように、10b8b DecodingとCRCによる二重のチェックが行われることになる。
【0034】
しかしながら、ここで懸念されるのは、図1に示した構成において、次のような状況が発生した場合である。
【0035】
(I) HostからDevice1へデータパケットを送信する。
【0036】
(II) 続いて、この際、Device0は中継局となるため、Loopback Path(2)の方法でデータパケットを中継する。
【0037】
(III) HostとDevice0間の経路においてノイズが入り、データは10b8b Decodingできないデータ化けが発生する。
【0038】
ここで、もしDevice0へのデータの送信だった場合には、中継局が入らないため、10b8b Decoding時にエラーを検出でき、そのデータパケットはCRCの結果に依らず無効と判断することができる。しかしながらDevice0は中継局なため、エラーが存在しているという8bitのデータを再度送信する必要がある。それは、8b10b Encodingにおいてエラー情報を伝達するという仕組み、機能は存在しないため、Device1へはエラー情報が存在しない10bitのデータが送信されることになるからである。
【0039】
そのため、Device1では10b8b Decodingは正常に終了し、CRCでのみパケットの正当性を確認することになる。CRCはパケットの全データのシグネチャのようなものであるため、まったく異なるデータでも可能性はとても低いものの偶然にCRCの値が一致する場合が存在する。そのため、10b8b Decodingでのエラーの検出が出来ない場合には、本来間違っているデータが正しいデータであると誤判断される可能性が上昇する。送信されたデータのエラー箇所を認識できないと、下流のデバイス(Device 1)ではエラーが発生したにも関わらず正しいデータであると誤認識し、結果としてデータが破壊されるおそれがある。
【0040】
このように、下流のデバイス(Device1)がエラーデータを認識できず、そのまま受け取ってしまうという可能性が上昇してしまうため、データが破壊されるおそれがある。
【0041】
そこで、以下の実施形態では、上記参考例での知見を元に、上記のような受信データの誤受信を防ぐことができ、中継局となる上流のデバイスにおいて、どのようにして10b8b Decoding処理において検知したエラー情報を伝達し、次局の下流のデバイスに伝えていくかに関し、図面を参照してより具体的に説明する。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
【0042】
[第1実施形態]
次に、第1の実施形態について、図5乃至図9を用いて説明する。この説明において、上記の説明と重複する部分の詳細な説明を省略する。
【0043】
<1.送受信装置(Device 0)の構成例>
まず、図5を用い、第1の実施形態に係る送受信装置(本例では、半導体記憶装置)の構成例について説明する。ここでは、一例として上記UHS-II規格に準拠されるシステム(リングトポロジー)に配置される1つの送受信デバイス(Device 0)を一例に挙げる。
【0044】
ここで、図示するDevice 0は、例えば、SDカード(登録商標)などに代表されるような、NAND Flash Memory 11を実装したDeviceのブロック図である。しかしながら、ここに示したメモリデバイス構成に限れない。本例は、下記に説明するController12内のHost Interface Controller21に関連する技術においては、例えばMemory Controller12とNAND Flash Memory 11の替わりに、無線LAN Interfaceを実装した無線LANカードのような送受信Deviceにおいても適用可能である。
【0045】
図示するように、本例に係るデバイス(Device 0)は、NAND型フラッシュメモリ11、およびこのNAND型フラッシュメモリ11を制御するコントローラ12を備える。
【0046】
NAND型フラッシュメモリ(NAND Flash Memory)11は、ワード線およびビット線の交差位置にマトリックス状に配置される複数のメモリセルを有するメモリセルアレイに、データを不揮発に記憶する。メモリセルのそれぞれは、半導体基板上に順次積層されるトンネル絶縁膜、電荷蓄積層、電極間絶縁膜、制御ゲートを備える。制御ゲートは、上記ワード線に接続される。メモリセルの電流経路は、ビット線方向に複数個接続され、メモリセルユニットを形成する。
また、データ書き込み、データ読み出しは、ワード線単位(ページ単位)で行われる。データ消去は、ブロック単位で一括して行われる。
【0047】
コントローラ(Controller)12は、ホストインターフェイス21、MPU22、バッファ23、およびメモリコントローラ24を備える。
【0048】
ホストインターフェイス(Host Interface Controller)21は、このデバイスの外部(ホストや自分以外のデバイス)からのコマンドパケットやデータパケットの受信RXおよび送信TXの際の所定の変換、例えば8b10b Encoding処理、10b8b Decoding処理、Serialize処理、Deserialize処理、CRC付加処理、CRCチェック処理を行う。
【0049】
MPU22は、このコントローラ12全体の制御を行う。
【0050】
バッファ(Buffer)23は、ホストインターフェイス21やメモリコントローラ24からのデータや制御プログラム等を展開し、記憶する。
【0051】
メモリコントローラ(Memory Controller)24は、MPU22の制御を受け、NAND型フラッシュメモリ11の制御を行う。
【0052】
<2.データ転送動作>
次に、上記構成おけるデータ転送動作について説明する。
2−1.エラー情報の発生について
まず、図6乃至図8を用い、データ転送動作の際のエラー情報の発生までについて説明する。ここでは、上記図1に示したメモリシステム(リングトポロジー)において、ホスト(Host)から送信されたデータについて、上流の中継局としてのデバイス(Device 0)が、下流のデバイス(Device 1)に対して、データを転送する場合を一例に挙げて以下説明する。また、以下の動作については、コントローラ12がその制御を行う。
【0053】
まず、図6(a)に示すように、ホストは、8bデータ列(Host Tx Side 8b)を、上流のデバイス(Device 0)に送信するため、このデータ列中のデータ(8b Data)とシンボル情報(Symbol)に対して8b10b Encoding処理(1)を行い、図6(b)に示す10bのデータ列(Host Tx Side 10b)に変換する。
ここで、K-Symbolとは8b10b符号化において、8bitの情報を10bitで表現することにより、余った10bitのパターンのうち、いくつかを制御コードとして利用するためのコードである。例えば、UHS-II規格において使用されるK-Symbolの詳細については、次に第2の実施形態で後述する。
【0054】
続いて、ホストから送信された10bのデータ列は伝送路を通り、HostからDevice0へ転送が行われる。実際には送信側のSerialize処理によって1bitのビット列に変換され伝送路を通り、受信側でDeserialize処理されることで10bitのデータ列に変換されるが、簡略化のため、10bit単位で説明を行なう。また、以後の例でも同様である。
【0055】
この間にエラーが発生し(2)、10bのデータ列の値が化け、図6(c)に示す”Device0 Rx Side 10b”で示されるデータ列になるとする。本例では、図6(c)中のデータ"0x3FB", "0x3F0"が、データ化けした箇所とする。
【0056】
続いて、図7(c)から(d)に示すように、Device0において、10bのデータ列を10b8b Decodingによって、8bのデータ列(Device 0 Rx Side8b)に変換する(3)。ここでエラーが発生した箇所"0x3FB", "0x3F0"は、10b8bの変換ができない値に化けている。そのため、8bのデータ列(Device 0 Rx Side8b)では、エラーフラグ付き(Error)のデータ"0xFB", "0xF0"として変換される。ここで8bデータの値は実装によって値が異なるが、本実施例では10bデータの下位8bitを抽出している。また、Symbol情報はデコードできなかったということで不明とされる。
【0057】
ここで、このエラーを含んだ8bのデータ列(Device 0 Rx Side 8b)を、そのまま下流のデバイス(Device 1)に転送すると、本来間違っているデータ"0xFB", "0xF0"が正しいデータであると誤判断されるおそれがある。これは、例えば、10b8b Decodingでのエラーの検出が出来ない場合にその可能性が上昇する。
【0058】
その結果、下流のデバイス(Device 1)が、エラーのデータを正しいデータとして受け取り、結果としてデータ破壊が発生してしまう。
【0059】
2−2.エラーデータの差し替え
そこで、図8(e)に示すように、エラーが発生している場合には、8b10b Encoding&Error injection処理(4)の際、エラーが発生している箇所"0xFB", "0xF0"に、8b10b符号化では利用されていない10bitのパターンである(0x010)に差し替えを行う。
そして、下流のデバイス(Device 1)に、この差し替えられた後のデータ列(Device 0 Tx 10b)を送信することで、次の下流のデバイス(Device 1)に10b8b Decoding時にエラーを検知させることが可能となる。
【0060】
2−3.データ転送動作フロー
上記データ転送動作を動作フローに示すと、図9のように示される。
まず、ステップS31の際、上流のデバイス(Device 0)は、ホストから送信されたパケットデータを受信する。この際、受信したデータに対して、例えば、10b8b Decoding処理を行う。
【0061】
続いて、ステップS32の際、デバイス(Device 0)は、変換後の受信データを確認する。
【0062】
続いて、ステップS33の際、受信データにエラーが発生しているか否かを判定する。この際、コントローラ12は、例えば、エラーフラグの有無により、エラーが発生しているか否かを判定する。例えば、上記図7に示したように、エラーが発生した箇所"0x3FB", "0x3F0"は、10b8bの変換ができない値に化けているため、8bのデータ列(Device 0 Rx Side8b)では、エラーフラグ付き(Error)のデータ"0xFB", "0xF0"として変換される。
【0063】
続いて、ステップS34の際、上記ステップS33の際にエラーが発生していると判定される場合(Yes)には、8b10b Encodingで割り当てられていないデータに差し替えて、下流のデバイス(Device 1)に送信し、このフローを終了する(End)。
【0064】
例えば、上記図8に示したように、エラーが発生している場合には、コントローラ12は、8b10b Encoding&Error injection処理(4)の際、エラーが発生している箇所"0xFB", "0xF0"に、未登録パターンである(0x010)に差し替えを行う。そのため、下流のデバイス(Device 1)に、この差し替えられた後のデータ列(Device 0 Tx Side 10b)を送信することで、次の下流のデバイス(Device 1)に10b8b Decoding時にエラーを検知させることが可能となる。
【0065】
一方、ステップS35の際、上記ステップS33の際にエラーが発生していないと判定される場合(No)には、上記のような差し替えを行わず、8b10b Encoding処理を行ったデータを、下流のデバイス(Device 1)に送信し、このフローを終了する(End)。
【0066】
<3.作用効果>
第1の実施形態に係る構成および動作によれば、少なくとも下記(1)の効果が得られる。
【0067】
(1)転送データのエラーを認識でき、データ破壊を防止できる。
上記図1に示したように、本例では、ホスト装置(Host)から、第1送受信装置(Device 0)および第2送受信装置(Device 1)を含み、複数の送受信装置が順次リング状に接続されるシステムに適用される。そして、上流のデバイス(Device 0)が中継局となる場合のデータ転送動作の際、伝送路においてエラーが発生した場合、上流のデバイス(Device 0)は、下流のデバイス(Device 1)宛の送信データ中のエラーが発生した箇所に割り当てられていないデータを差し替えて、送信する(S34)。
【0068】
例えば、上記図8に示したように、エラーが発生している場合には、コントローラ12は、8b10b Encoding&Error injection処理(4)の際、エラーが発生している箇所"0xFB", "0xF0"に、未登録パターンである(0x010)に差し替えを行う。
【0069】
このように、本例では、中継局の上流側のデバイス(Device 0)の8b10b Encoding処理において、転送データ列中のエラー箇所を、本来8b10b変換テーブルには載っていないパターン(0x010)に差し替えることにより、下流側のデバイス(Device 1)にエラー情報を伝達する。
【0070】
そのため、続く下流側のデバイス(Device 1)では、転送されたデータ列を10b8b Decodingする際に、当該未登録パターン(0x010)に差し替えられた箇所がエラーであると認識することができ、エラーを検出できる。
【0071】
このように、本例では、ホストと中継局である上流のデバイス(Device 0)の伝送経路中に転送データにノイズ等により10b8b Decodingできないデータ化けが発生した場合であっても、下流のデバイス(Device 1)は、そのエラー発生の箇所を認識することができる。
【0072】
送信されたデータのエラー箇所を認識できないと、下流のデバイス(Device 1)では誤って正しいデータと認識して受理する可能性が増加し、ホストにとってはデバイスに書き込んだデータが破壊されてしまうというおそれがある。
【0073】
よって、転送データのエラー発生箇所を認識でき、データ破壊を防止できる点で有利である。
【0074】
なお、第1の実施形態では全エラーにおいて、一つの未登録パターン(0x010)を利用しているが、未登録パターンを複数用意し、任意の未登録パターンを利用しても良いことは勿論である。
【0075】
[第2の実施形態]
次に、第2の実施形態について、図10乃至図12を用いて説明する。第2の実施形態は、エラー発生箇所に、規格上利用されていないK-Symbolを差し替える一例に関するものである。この説明において、上記説明と重複する部分の詳細な説明を省略する。
【0076】
<K-Symbolについて>
まず、図10を用い、K-Symbolについて説明する。
【0077】
図示するように、K-Symbolとは8b10b符号化において、8bitの情報を10bitで表現することにより、余った10bitのパターンのうち、いくつかを制御コードとして利用することである。本例で図示するものは、UHS-II規格においても使用される制御コードとしてのK-Symbolを一例に挙げる。
【0078】
例えば、図中のK-Symbol(K28.0)のシンボル名はSDBであり、機能としてはデータバーストを開始すること(Start of Data Burst)であり、値は0x1Cである。以下、同様に、図示するようなK-Symbolが定められている。
【0079】
ここで、図中のK-Symbolのうち、例えば、K28.2 (Value:0x5C)、K28.4 (Value:0x9C)、K28.7 (Value:0xFC)、K30.7 (Value:0xFE)については、利用されていない未使用のK-Symbolである。
【0080】
本例では、以下に詳説するように、エラー発生箇所に、K28.4 (Value:0x9C)等の利用されていない未使用のK-Symbolを差し替える点で、上記第1の実施形態と相違する。
【0081】
<データ転送動作>
本例では、UHS-II規格においては利用されていない図10に示した以外のK-Symbolをエラーがあった箇所に埋め込むことで、後続のノードにエラーを検知させる。
【0082】
まず、図11を用いて、データ転送動作について説明する。なお、エラーの発生までは上記第1の実施形態と同様であるため、詳細な説明は省略する。
【0083】
図11(b)に示すように、ホストから中継局としてデータ列(Device 0 Rx Side 8b)を受信した上流のデバイス(Device 0)は、8b10b Encoding 処理(5)の前に、エラーの発生した箇所について、D-Symbolから規格では未使用のK-Symbol(本実施例では0x9CのK-Symbol)に差し替えを行なう(処理4)。
【0084】
続いて、上流のデバイス(Device 0)は、差し替えられたデータに同様の8b10b Encoding を行い(処理5)、次の下流のデバイス(Device 1)にデータを転送する。
【0085】
<データ転送フロー>
本例のデータ転送フローは、図12のように示される。
図示するように、本例では、ステップS44の際、ステップS43の際にエラーが発生していると判定される場合(Yes)には、エラーの発生した箇所について、D-Symbolから未使用のK-Symbol(制御コード)に差し替える点で、上記第1の実施形態と相違する。例えば、上記図11(b)に示したように、エラーが発生している場合には、エラーの発生した箇所"0xFB"、"0xF0"について、D-Symbolから未使用のK-Symbol(制御コード)に差し替える。
【0086】
続いて、ステップS45の際、差し替えられたデータに同様の8b10b Encoding を行い、次の下流のデバイス(Device 1)にデータを転送する(End)。そのため、上記図11(c)に示すように、8b10b Encoding処理が行われた後のデータ列は、エラー発生箇所が"0x0F2"、"0x30D"となり、次の下流のデバイス(Device 1)に10b8b Decoding時にエラーを検知させることが可能となる。
【0087】
これは、後続の下流のデバイス(Device 1)では、元々エラーが発生していた箇所に、規格未定義のK-Symbolを発見することになるので、正常のデータではないと判断することができるためである。
【0088】
なお、この方法では、後続のノードにおいて利用されていないK-Symbolが存在した場合にどう動作するか、によって影響されるため不確定とも思われる。
【0089】
<作用効果>
第2の実施形態によれば、少なくとも上記(1)と同様の効果が得られる。
【0090】
本例では、エラーが発生していると判定される場合(Yes)には、エラーの発生した箇所について、D-Symbolから未使用のK-Symbol(制御コード)に差し替える点で、上記第1の実施形態と相違する。例えば、上記図11(b)に示したように、エラーが発生している場合には、エラーの発生した箇所"0xFB"、"0xF0"について、D-Symbolから未使用のK-Symbol(0x9C)に差し替える。
【0091】
続いて、差し替えられたデータに同様の8b10b Encoding を行い、次の下流のデバイス(Device 1)にデータを転送する。そのため、上記図11(c)に示すように、8b10b Encoding処理が行われた後のデータ列は、エラー発生箇所が"0x0F2"、"0x30D"となり、次の下流のデバイス(Device 1)に10b8b Decoding時にエラーを検知させることが可能となる。
【0092】
これは、後続の下流のデバイス(Device 1)では、元々エラーが発生していた箇所に、規格未定義のK-Symbolを発見することになるので、正常のデータではないと判断することができるためである。
【0093】
[第3の実施形態(CRCチェック)]
次に、第3の実施形態について、図13、図14を用いて説明する。この実施形態は、CRCチェックを行う際のエラー検知に関するものである。この説明において、上記説明と重複する部分の詳細な説明を省略する。
【0094】
<データ転送動作>
本例では、データを中継する際にレイテンシを低く抑える上記第1、第2の実施形態とは異なり、データを中継する際にCRCチェックを行い、そのCRCチェックでエラーを検知する一例に関する。
【0095】
このように、本例では、データ転送の中継時にも、受信時と同じように受信データに対してCRC計算を行う。そして、新しく計算したCRCを最低でも1bit値を変更したもので古いCRCを差し替え、下流のデバイスに送信する点で、上記第1、第2の実施形態と相違する。
【0096】
このようにすることで、次の下流のデバイスでは、CRCチェックを行った結果、エラーとなるため、誤受信を防止することができる。
【0097】
なお、CRCはパケット内のデータに対して計算が行われ、パケットの先頭を示すCOM+SOP制御コード、データ、CRC、パケットの終了を示すCOM+EOPという順番で送信される。
【0098】
例えば、本例の場合、より具体的には、図13のように示される。
【0099】
まず、図13(a)〜(b)に示すように、エラーによって化けたデータ"0xFB"は、そのまま通常のデータとみなして、CRCの再計算を行なう。
【0100】
ただし、元々パケット中に存在していたCRCの該当箇所(本例では、COM+EOPの前の2バイトデータ"0x57", "0x84 ")に関しては、本例の計算の対象外である。
【0101】
このように、図中の処理(4)のように、新しく再計算したCRCでは該当箇所の値を反転させて古いCRCの箇所と置き換えを行う。CRCは最低1bitを反転させれば良いが、本実施例では全ビット反転させるとした。
【0102】
その後、同様の8b10b Encodingを行い(処理(5))、次の下流のデバイスにデータを転送する。
【0103】
<データ転送フロー>
本例のデータ転送フローは、図14のように示される。
図示するように、まず、本例では、ステップS53の際、上流のデバイス(Device 0)が確認した転送データ内に、COM+SOP受信後かつCOM+EOPの2Byte以上前か否かの判定を行う。上記ステップS53の際に該当しないと判定される場合(No)には、次のステップS55に進む。
【0104】
続いて、ステップS54の際、上記ステップS53の際に該当すると判定される場合(Yes)には、エラーの発生した箇所について、通常のCRC計算の対象とする点で、上記実施形態と相違する。
【0105】
続いて、ステップS55の際、COM+EOPの1Byteもしくは2Byte前か否かの判定を行う。
【0106】
続いて、ステップS56の際、上記ステップS55の際に該当すると判定される場合(Yes)には、計算していたCRCを反転させる。例えば、図13に示したように、新しく再計算したCRCでは該当箇所の値を反転させて古いCRCの箇所と置き換えを行う。
【0107】
続いて、ステップS57に進む。
【0108】
続いて、ステップS57の際、上記ステップS55の際に該当しないと判定される場合(No)には、同様にデータに8b10b Encodingを行い、次の下流のデバイス(Device 1)にデータを転送する(End)。
【0109】
<作用効果>
第3の実施形態によれば、少なくとも上記(1)と同様の効果が得られる。
【0110】
さらに、本例では、データを中継する際にCRCチェックを行い、そのCRCチェックでエラーを検知させる。
【0111】
例えば、ステップS56の際、上記ステップS55の際に該当すると判定される場合(Yes)には、計算していたCRCを反転させる。図13に示したように、新しく再計算したCRCでは該当箇所の値を反転させて古いCRCの箇所と置き換えを行う。
【0112】
この操作によって、送信したデータは、下流のデバイス(Device 1)でCRCエラーとなるため、間接的にHostからDevice 0への伝送路でエラーが発生したことを伝えることができる。そのため、誤受信を防止することができる。
【0113】
[第4の実施形態(使用される制御コードと差し替える一例)]
次に、第4の実施形態について、図15、図16を用いて説明する。この実施形態は、使用される制御コードに差し替えてエラーを検知させる一例に関するものである。この説明において、上記実施形態と重複する部分の詳細な説明を省略する。
【0114】
<データ転送動作>
本例では、規格で利用されている制御コードを使う方法に関する。
【0115】
第2の実施形態で説明したように、UHS-II規格においてK-Symbolが定められているが、制御コードはCOMというK-Symbolと、もう一つのK-Symbolがセットになることで、一つの意味を持つ制御コードとなる。また、制御コードには、COM+LIDLやCOM+DIDLのように、アイドル状態を示すだけの制御コードが定められている。
【0116】
そのため、本例では、アイドル状態を示すだけの制御コードを、エラーがあった箇所に埋め込むことで、続く下流のデバイス(Device 1)にエラーを検知させる。なお、エラーの発生までは第1の実施形態と同様である。
【0117】
図15(a)、(b)に示すように、処理(4)の際、2バイト単位でエラーが発生しているかチェックを行い、エラーが発生していた箇所("0xFB", "0xF0")には、データバースト転送中のアイドル状態を示すCOM+DIDLに差し替えを行う。
【0118】
続いて、その後は、同様の8b10b Encodingを行い(処理(5))、次の下流のデバイス(Device 1)への転送データとする。
【0119】
<データ転送フロー>
本例のデータ転送フローは、図16のように示される。
図示するように、本例では、ステップS64の際、ステップS63の際にエラーが発生していると判定される場合(Yes)には、該当箇所をデータバースト転送中のアイドル状態を示すCOM+DIDLに差し替えを行う。例えば、図15に示したように、エラーが発生していた箇所("0xFB", "0xF0")には、データバースト転送中のアイドル状態を示すCOM+DIDLに差し替えを行う。
【0120】
続いて、同様にデータに8b10b Encodingを行い、次の下流のデバイス(Device 1)にデータを転送する(End)。
【0121】
このように、本例では、元々エラーが発生していた箇所に、アイドル状態を示すCOM+DIDLが存在することになるが、データパケット中にCOM+DIDLが存在することは規格に定義されたデータ構造ではない。そのため、後続の下流のデバイスではCOM+DIDLが混ざったパケットは、正常のデータではないと判断することができる。
【0122】
<作用効果>
第4の実施形態によれば、少なくとも上記(1)と同様の効果が得られる。
【0123】
さらに、本例では、ステップS64の際、ステップS63の際にエラーが発生していると判定される場合(Yes)には、該当箇所をデータバースト転送中のアイドル状態を示すCOM+DIDLに差し替えを行う。例えば、図15に示したように、エラーが発生していた箇所("0xFB", "0xF0")には、データバースト転送中のアイドル状態を示すCOM+DIDLに差し替えを行う。
【0124】
このように、元々エラーが発生していた箇所に、アイドル状態を示すCOM+DIDLが存在することになるが、データパケット中にCOM+DIDLが存在することは規格に定義されたデータ構造ではない。そのため、後続の下流のデバイスではCOM+DIDLが混ざったパケットは、正常のデータではないと判断することができる。
【0125】
必要に応じて、本例を適用することが可能である。
【0126】
[変形例]
上記参考例および実施形態では、リング状にされたホスト装置(Host)および2つのデバイス(Device 0, Device 1)を一例に挙げたが、これに限られることはない。
【0127】
例えば、リング状に接続されるホスト装置(Host)および3つの以上のデバイス(Device 0, Device 1, Device 2, ,,, , Device N)であっても同様に適用可能である。この場合、データの中継局は、宛先局以外のデバイスが該当し得る。
【0128】
また、ホスト装置からデバイスへのデータ転送を例に説明したが、デバイスからホスト装置へのデータ転送においても、間に中継局が存在すれば、同様に適用可能である。
【0129】
また、リング接続に限られず、例えば、ホストと複数のデバイスが直列に接続される多重伝送システム等に対しても同様に適用可能である。
【0130】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0131】
Host…ホスト装置、Device 0…上流の第1送受信装置(中継局)、Device 1…下流の第2送受信装置。

【特許請求の範囲】
【請求項1】
第1送受信装置および第2送受信装置を含み、複数の送受信装置が順次リング状に接続されるシステムにおいて、
中継局となる送受信装置のデータ転送動作の際、転送経路においてエラーが発生した場合、前記中継局となる送受信装置が、中継する送信データの一部を内部で生成したデータに差し替えを行い、下流に送信する。
【請求項2】
前記内部で生成したデータの差し替えることは、エラーが発生した箇所を8b10b Encodingにおいて使用されていないデータパターンに差し替えることかまたは規格上使用されていないK-Symbolかまたはアイドル状態を示す制御コードに差し替えることである
請求項1に記載のシステム。
【請求項3】
転送経路においてエラーが発生した場合、前記中継局である送受信装置は、中継データのCRCを計算し、中継データ中のCRCに対して計算したCRCを破壊した値への差し替えを行い、受信先のホスト装置乃至前記送受信装置とは別個の送受信装置のCRCチェックでエラー検知させる
請求項1に記載のシステム。
【請求項4】
複数の送受信装置が順次リング状に接続されるシステムにおいて、
前記複数の送受信装置のうちの中継局となる場合の送受信装置は、データ転送動作の際、転送経路においてエラーが発生した場合、中継局である前記受信装置は、送信データ中の一部を内部で生成したデータに差し替えを行い、下流に送信する。
【請求項5】
前記装置内部で生成したデータの差し替えとは、エラーが発生した箇所を8b10b Encodingにおいて使用されていないデータパターンに差し替えることかまたは規格上使用されていないK-Symbolかまたはアイドル状態を示す制御コードに差し替えることである
請求項4に記載の送受信装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2013−17090(P2013−17090A)
【公開日】平成25年1月24日(2013.1.24)
【国際特許分類】
【出願番号】特願2011−149379(P2011−149379)
【出願日】平成23年7月5日(2011.7.5)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】