(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024137305
(43)【公開日】2024-10-07
(54)【発明の名称】シリアルデータ受信装置およびシリアルデータ受信方法
(51)【国際特許分類】
H04L 7/00 20060101AFI20240927BHJP
H04L 25/49 20060101ALI20240927BHJP
H03M 7/14 20060101ALI20240927BHJP
【FI】
H04L7/00 830
H04L25/49 A
H03M7/14 B
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023048775
(22)【出願日】2023-03-24
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】真狩 弘夫
【テーマコード(参考)】
5K029
5K047
【Fターム(参考)】
5K029GG03
5K029HH21
5K029HH26
5K047FF17
5K047GG13
5K047LL05
(57)【要約】
【課題】ビットエラーが発生したパケット以外のパケットに、ビットエラーの影響が及ぶのを低減できるシリアルデータ受信装置等を提供する。
【解決手段】実施形態のシリアルデータ受信装置は、検出部と、アラインメント部とを備える。検出部は、シリアルデータから変換された、アラインメントが調整されていない3ワード分のパラレルデータのビット配列の中から、1ワード分のアイドルコードまたはエンドコードと、1ワード分の先頭コードと、が順に連続する特定のビット配列を検出する。アラインメント部は、検出された特定のビット配列のビット境界に基づき、ワードデータのアラインメントを調整する。
【選択図】
図10
【特許請求の範囲】
【請求項1】
シリアルデータから変換された、アラインメントが調整されていない3ワード分のパラレルデータのビット配列の中から、データコードがないことを示す1ワード分のアイドルコードまたはパケットの終端を示す1ワード分のエンドコードと、パケットの先頭を示す1ワード分の先頭コードと、が順に連続する特定のビット配列を検出する検出部と、
検出された前記特定のビット配列のビット境界に基づき、ワードデータのアラインメントを調整するアラインメント部と、
を備えるシリアルデータ受信装置。
【請求項2】
受信した前記シリアルデータを、第1のビット幅のパラレルデータに変換して、1ワード分のデータとして送信するシリアル・パラレル変換部を備え、
前記検出部は、
前記シリアル・パラレル変換部から受信した連続する2ワード分のデータのビット配列の中から、前記アイドルコードのビット配列と、前記エンドコードのビット配列とを探索して、何れか一方が検出された場合に第1の検出信号を送信する第1の検出部と、
前記第1の検出部から前記第1の検出信号を受信して、前記第1の検出部が次の1ワード分のデータを含む連続する2ワード分のデータのビット配列の中から前記何れか一方を検出している期間、前記第1の検出信号を保持するラッチ回路と、
前記シリアル・パラレル変換部から受信した連続する2ワード分のデータのビット配列の中から、前記先頭コードのビット配列を検出し、前記ラッチ回路に前記第1の検出信号が保持されている期間に前記先頭コードのビット配列が検出されたら、アラインメントのビット境界を示す境界指示信号を送信する第2の検出部と、
を有し、
前記アラインメント部は、前記第2の検出部から前記境界指示信号を受信した場合に、前記シリアル・パラレル変換部から受信した連続する2ワード分のデータのビット配列の中から、アラインメントを調整した1ワードデータを送信し、
前記アラインメント部から受信した前記第1のビット幅の1ワードデータを、前記第1のビット幅よりも狭い第2のビット幅の1ワードデータにデコードするデコーダ、
をさらに備える請求項1に記載のシリアルデータ受信装置。
【請求項3】
前記アラインメント部は、前記境界指示信号を受信した以後は、アラインメントを調整した1ワードデータを送信する毎に、タイミング信号を送信し、
前記アラインメント部から前記タイミング信号を受信し、受信した前記タイミング信号の数をカウントし、前記先頭コードと前記エンドコードとを除く1パケット分のワード数がカウントされたらパケット終了信号を送信するカウンタと、
前記デコーダから受信される1ワードデータを少なくとも1パケット分保持するバッファと、
前記カウンタから前記パケット終了信号を受信するまでに前記バッファに保持された1パケット分のデータの内の、前記先頭コードと前記エンドコードとを除くデータのビットエラーを検出し、ビットエラーが検出された場合にエラー信号を送信する誤り検出部と、
前記誤り検出部から前記エラー信号を受信した場合に、ビットエラーが検出されたパケットを再度送信するようシリアルデータ送信装置に要求する再送処理部と、
をさらに備える請求項2に記載のシリアルデータ受信装置。
【請求項4】
前記シリアルデータは、8B10B方式でエンコードされたデータであり、
前記第1のビット幅は10ビット、前記第2のビット幅は8ビットであり、
前記デコーダは、8B10B方式のコード表を参照して、10ビットコードから8ビットデータにデコードする10B8Bデコーダである、
請求項2に記載のシリアルデータ受信装置。
【請求項5】
シリアルデータから変換された、アラインメントが調整されていない3ワード分のパラレルデータのビット配列の中から、データコードがないことを示す1ワード分のアイドルコードまたはパケットの終端を示す1ワード分のエンドコードと、パケットの先頭を示す1ワード分の先頭コードと、が順に連続する特定のビット配列を検出する検出ステップと、
検出された前記特定のビット配列のビット境界に基づき、ワードデータのアラインメントを調整するアラインメントステップと、
を備えるシリアルデータ受信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、パケット単位で送信されるシリアルデータを受信するシリアルデータ受信装置およびシリアルデータ受信方法に関する。
【背景技術】
【0002】
データを1ビットずつ連続的に送受信するシリアル通信方式が、従来から広く用いられている。高速シリアル通信では、8ビットのデータを10ビットのコード(シンボルともいう)に変換して送信する8B10B方式が普及している。
【0003】
8B10B方式では、8ビットのデータを10ビットのコードに変換する際に、データ中の「1」と「0」の数の差が常に+/-1以内となるようにし、さらにビット値「0」や「1」が5ビット以上連続しないようにランレングスを制限している。これにより、シリアル信号に含まれる低周波成分を抑制し、シンボル間干渉(ISI:Inter Symbol Interference)ジッタを低減できる。さらに、8B10B方式では、「0」と「1」が交互に複数繰り返す最大トグル周波数がコードをまたいで連続しないようにしている。これにより、シリアル信号に含まれる高周波成分も抑制している。
【0004】
ところで、複数のワードデータで構成されるパケットをシリアルデータ送信装置から送信し、シリアルデータ受信装置で受信したときに、ノイズ等の影響でビットエラーが発生することがある。シリアルデータ受信装置は、例えば、CRC(Cyclic Redundancy Check:巡回冗長検査)などの誤り検出方式を採用して、ビットエラーの発生を検出している。そして、ビットエラーを検出した場合、シリアルデータ受信装置は、パケットの再送要求をシリアルデータ送信装置へ送信する。
【0005】
しかし、発生したビットエラーによっては、ビットエラーが発生したパケット以外のパケットに、ビットエラーの影響が及ぶことがある。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
そこで、実施形態は、ビットエラーが発生したパケット以外のパケットに、ビットエラーの影響が及ぶのを低減できるシリアルデータ受信装置およびシリアルデータ受信方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
実施形態のシリアルデータ受信装置は、シリアルデータから変換された、アラインメントが調整されていない3ワード分のパラレルデータのビット配列の中から、データコードがないことを示す1ワード分のアイドルコードまたはパケットの終端を示す1ワード分のエンドコードと、パケットの先頭を示す1ワード分の先頭コードと、が順に連続する特定のビット配列を検出する検出部と、検出された前記特定のビット配列のビット境界に基づき、ワードデータのアラインメントを調整するアラインメント部と、を備える。
【図面の簡単な説明】
【0009】
【
図1】比較例に係わるシリアルデータ受信装置の構成を示すブロック図である。
【
図2】第1の実施形態および比較例に係わり、8B10B方式におけるパケットの一般的な構成例を示す図である。
【
図3】第1の実施形態および比較例に係わり、8B10B方式において、送信するデータがないときに、データコードがないことを示すアイドルコードを送信する例を示す図である。
【
図4】第1の実施形態および比較例に係わり、8B10B方式において用いられるデータコード表の一部の例を示す図表である。
【
図5】第1の実施形態および比較例に係わり、8B10B方式において用いられる制御コード表の例を示す図表である。
【
図6】第1の実施形態および比較例に係わり、8B10B方式において、パケットの先頭を示す先頭コードと、一例としての2つのデータコードと、を並べて示す図表である。
【
図7】第1の実施形態および比較例に係わり、
図6に示す2つのデータコードが連続して送信された際に、ビットエラーが発生すると、先頭コードと同一のビット配列が生じる例を示す図である。
【
図8】第1の実施形態および比較例に係わり、パケット内にビットエラーが発生したときに、ビットエラーが発生したフレームが棄却される例を示す図である。
【
図9】比較例に係わり、あるパケット内に発生したビットエラーにより先頭コードと同一のビット配列が生じたときに、ビットエラーが発生したフレームだけでなく、さらに次のフレームが棄却される例を示す図である。
【
図10】第1の実施形態に係わるシリアルデータ受信装置の構成を示すブロック図である。
【
図11】第1の実施形態に係わり、ビットエラーにより先頭コードと同一のビット配列が生じても、ビットエラーが発生したフレームの次のフレームは棄却されない例を示す図である。
【
図12】第1の実施形態の変形例に係わるシリアルデータ受信装置の構成を示すブロック図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して比較例および実施形態を説明する。
図1は、比較例に係わるシリアルデータ受信装置の構成を示すブロック図である。
【0011】
シリアルデータ受信装置は、シリアル通信システムにおいて、シリアルデータ送信装置(トランスミッタ)から通信経路を経由して送信されたシリアルデータを受信するレシーバである。なお、以下では、8B10B方式を採用したシリアル通信システムの例を説明する。
【0012】
比較例のシリアルデータ受信装置は、シリアル・パラレル変換部1と、先頭コード検出部2と、アラインメント部3と、10B8Bデコーダ4と、カウンタ5と、バッファ6と、再送処理部7と、を有する。
【0013】
シリアル・パラレル変換部1は、シリアルデータDATAを受信して、シリアルデータDATAを第1のビット幅(8B10B方式では10ビット)のパラレルデータに変換し、1ワード分のデータとして送信する。
【0014】
具体的に、シリアル・パラレル変換部1は、シリアルデータDATAとクロックCLKとを受信する。シリアル・パラレル変換部1は、クロックCLKに同期して順次に受信した10ビット分のシリアルデータDATAを、パラレルデータ[9:0]に変換して送信する。
【0015】
なお、[9:0]は、0番目のビットから9番目のビットまでの10ビットデータであることを示す。また、シリアルデータ受信装置内においてパラレルデータとして転送される10ビットまたは8ビットのデータを、適宜、ワードデータという。
【0016】
シリアル・パラレル変換部1は、入力したシリアルデータDATAを、単純に10ビット毎にパラレルデータ[9:0]に変換しているだけである。このため、パラレルデータ[9:0]は、シリアルデータ送信装置が送信した2つのワードデータにまたがっていることが一般的であり、後段のアラインメント部3による処理が必要となる。
【0017】
先頭コード検出部2(第2の検出部)は、シリアル・パラレル変換部1から受信した10ビットのワードデータを、連続する2ワード分保持する。先頭コード検出部2は、保持する2ワード分のデータのビット配列の中から、パケットpktの先頭を示す1ワード分の先頭コードK28.5(制御コード(Kコード)の1つ)(
図5参照)と一致する10ビットのビット配列を探索する。
【0018】
探索の結果、先頭コードK28.5と一致するビット配列が検出されたら、先頭コード検出部2は、アラインメントのビット境界(ワード境界)を示す境界指示信号Sig1を送信する。境界指示信号Sig1は、シリアル・パラレル変換部1から受信するワードデータの10ビット境界を、何ビット分ずらせば正しいワードデータが得られるかを示す情報を含む。
【0019】
アラインメント部3は、シリアル・パラレル変換部1から受信した10ビットのワードデータを、連続する2ワード分保持する。アラインメント部3は、先頭コード検出部2から境界指示信号Sig1を受信するまでは、シリアル・パラレル変換部1から受信したパラレルデータをそのまま送信する。アラインメント部3は、先頭コード検出部2から境界指示信号Sig1を受信した場合に、保持している連続する2ワード分のデータのビット配列の中に正しい10ビット境界を設定してアラインメントを調整し、アラインメントを調整した1ワードデータを10B8Bデコーダ4へ送信する。
【0020】
また、アラインメント部3は、境界指示信号Sig1を受信した以後は、アラインメントを調整した1ワードデータを送信する毎に、タイミング信号Sig3をカウンタ5へ送信する。
【0021】
10B8Bデコーダ4(8B10B方式におけるデコーダ)は、アラインメント部3から受信した第1のビット幅(8B10B方式では10ビット)の1ワードデータを、
図4に示すようなデータコード(Dコード)表および
図5に示すような制御コード表を参照して、第1のビット幅よりも狭い第2のビット幅(8B10B方式では8ビット)の1ワードデータにデコードする。なお、データコード表と制御コード表とをまとめて、単にコード表と呼ぶことにする。
【0022】
図2は、第1の実施形態および比較例に係わり、8B10B方式におけるパケットpktの一般的な構成例を示す図である。
図5は、第1の実施形態および比較例に係わり、8B10B方式において用いられる制御コード表の例を示す図表である。
【0023】
図2および
図5に示すように、8B10B方式において、パケットpktの先頭を示す1ワード分の制御コードである先頭コードK28.5は、「Comma」と呼ばれる。また、パケットpktの終端を示す1ワード分の制御コードであるエンドコードK29.7は、「END」と呼ばれる。
【0024】
1つのパケットpktは、先頭コードK28.5(Comma)で開始され、エンドコードK29.7(END)で終端する。先頭コードK28.5とエンドコードK29.7で挟まれた部分にデータコード(D**.*)(なお、D**.*は、下記に説明するように、D0.0~D31.7の何れか)が配置される。1つのパケットpktに配置される先頭コードK28.5とエンドコードK29.7とを除くデータコードのワード数は、固定長のN個であるとする。この場合、先頭コードK28.5およびエンドコードK29.7を含む1つのパケットpktの固定長は、(N+2)ワードとなる。
【0025】
カウンタ5は、アラインメント部3からタイミング信号Sig3を受信する。カウンタ5は、アラインメント部3が10ビット境界を設定して以後に受信するタイミング信号Sig3の数をカウントアップする。カウンタ5は、カウントした値が、先頭コードK28.5とエンドコードK29.7で挟まれたデータコードのワード数Nに達したら、パケットpktのエンドに達したことを示すパケット終了信号Sig4をバッファ6へ送信する。また、カウンタ5は、先頭コードK28.5に基づく境界指示信号Sig1を受信したアラインメント部3が10ビット境界を再設定したら、リセットされる。
【0026】
バッファ6は、10B8Bデコーダ4から送信される8ビットのワードデータを順次蓄積して、1パケットpktに対応する1フレーム分のデータを少なくとも保持する。
【0027】
バッファ6は、CRC部6a(誤り検出部)を備える。CRC部6aは、カウンタ5からパケット終了信号Sig4を受信したら、バッファ6に保持された1フレーム内の先頭コードK28.5とエンドコードK29.7を除くデータコード(D**.*)のCRC(Cyclic Redundancy Check:巡回冗長検査)を行い、ビットエラーを検出する。CRC部6aがビットエラーを検出しない場合、バッファ6が保持しているフレームのデータは、後段の構成部により使用可能となる。
【0028】
一方、CRC部6aがビットエラーを検出したら、バッファ6が保持しているフレームのデータは棄却されて、後段の構成部による使用が不可能となる。さらに、CRC部6aは、ビットエラーが検出されたら、エラー信号Sig5を再送処理部7へ送信する。
【0029】
再送処理部7は、CRC部6aからエラー信号Sig5を受信したら、ビットエラーが検出されたパケットpktを再度送信することを要求する再送要求信号を、シリアル通信システムのシリアルデータ送信装置へ送信する。
【0030】
このような構成において、10B8Bデコーダ4は、デコード結果が先頭コードK28.5であった以降は、一定数(
図2に示すM個)のワードデータが
図4および
図5に示すようなコード表に基づき正しくデコードされたか否かを監視し、正しくデコードされた場合にはイネーブル信号Sig2を先頭コード検出部2へ送信する。
【0031】
図3は、第1の実施形態および比較例に係わり、8B10B方式において、送信するデータがないときに、データコードがないことを示すアイドルコードを送信する例を示す図である。
【0032】
図3に示す例では、第1のパケットpkt1の以前、および第1のパケットpkt1と第2のパケットpkt2との間がアイドル期間となっている。アイドル期間には、アイドルコードがシリアルデータ送信装置から送信される。1ワード分の制御コードであるアイドルコードK28.3は、「Idle」と呼ばれる(
図5参照)。
【0033】
10B8Bデコーダ4は、デコード結果が先頭コードK28.5であって、パケットpktが開始されたと認識して以降は、アラインメント部3により調整されたアラインメントが本当に正しいかを確認するために、その後の幾つか(
図2に示すM個)のワード数のデータコードについても、正しくデコードされたか否かを監視する。
【0034】
図4は、第1の実施形態および比較例に係わり、8B10B方式において用いられるデータコード表の一部の例を示す図表である。なお、
図4には8B10B方式で用いるデータコード表の一部としてデータコードD0.0~D7.0を図示しているが、実際のデータコード表は、D0.0~D31.7までのデータコードを含む。
【0035】
図4において、10ビット変換後のコードには、ランニング・ディスパリティ(RD:running disparity)がプラス(+)/マイナス(-)の2種類が存在する。このため、データコードの種類は、256×2=512種類となる。ランニング・ディスパリティの初期値はマイナスであり、シリアルデータ送信装置からは、ランニング・ディスパリティがマイナスのコードと、プラスのコードと、が原則的に交互に送信される。
【0036】
また、
図5の例に示す制御コードは、RD+/-を考慮すれば9×2=18種類ある。従って、データコードおよび制御コードを合わせたコードの種類は、例えば、512+18=530種類となる。一方、10ビットのビット配列は、1024種類ある。従って、コード表に存在しない10ビットのビット配列が、およそ500種類存在する。仮にランダムなビット配列のワードデータを受信した場合、10B8Bデコーダ4は、コード表に存在しない10ビット配列を、約1/2の確率で検出する。10B8Bデコーダ4は、こうした正しくデコードされない10ビット配列を監視する。
【0037】
10B8B方式のシリアルデータ送信装置は、8ビットデータを、
図4のデータコード表を参照して10ビットのデータコードに変換(エンコード)し、
図5の制御コード表に示すような10ビットの制御コードを付加して送信する。
【0038】
10B8Bデコーダ4は、先頭コードK28.5をデコードした後に
図2に示すM(M<N)個のワードデータを受信している間は、受信した10ビットデータがデータコード表に記載されていればイネーブル信号Sig2を先頭コード検出部2へ送信する。イネーブル信号Sig2は、データコードが正しくデコードされたから、10ビット境界の同期を維持すべきであることを示す信号である。また、10B8Bデコーダ4は、受信した10ビットデータがデータコード表に記載されていない場合、イネーブル信号Sig2を先頭コード検出部2へ送信しない。
【0039】
さらに、10B8Bデコーダ4は、受信したデータコードがM個に達するまで正しくデコードされた場合、現在設定されている10ビット境界が正しいと判断する。そして、10B8Bデコーダ4は、受信したデータコードがM個を超えたら、次の先頭コードK28.5の検出が可能となるように、イネーブル信号Sig2の送信を停止する。
【0040】
先頭コード検出部2は、一旦先頭コードK28.5を検出した後、イネーブル信号Sig2を受信している間は、アラインメント部3へ送信した境界指示信号Sig1が正しいとして、先頭コードK28.5と一致する10ビットのビット配列の探索を行わない。こうして、先頭コード検出部2がイネーブル信号Sig2を受信している間は、10ビット境界の同期が維持される。
【0041】
一方、先頭コード検出部2は、イネーブル信号Sig2を受信しなくなったら、先頭コードK28.5と一致する10ビットのビット配列の探索を再開する。
【0042】
図6は、第1の実施形態および比較例に係わり、8B10B方式において、パケットpktの先頭を示す先頭コードK28.5と、一例としての2つのデータコードD9.3およびD22.0と、を並べて示す図表である。
図7は、第1の実施形態および比較例に係わり、
図6に示す2つのデータコードD9.3およびD22.0が連続して送信された際に、ビットエラーが発生すると、先頭コードK28.5と同一のビット配列が生じる例を示す図である。
【0043】
図6に示すような、RD+のデータコードD9.3と、RD+のデータコードD22.0とが連続して送信されると、
図7に示すようなビット配列となる。
図7において、点線の楕円で囲んだ部分のビット配列は「0011011010」である。
【0044】
このとき、RD+のデータコードD22.0の先頭ビット「0」(
図7において実線の四角で囲んだビット)がビットエラーにより「1」に変化すると、点線の楕円で囲んだ部分のビット配列は「0011111010」となり、RD-の先頭コードK28.5のビット配列と同じになる。
【0045】
なお、
図7には、連続する2つのデータコードの内の、後側のデータコードに生じたビットエラーにより先頭コードK28.5と同一のビット配列が生じる例を示したが、これに限らず、前側のデータコードに生じたビットエラーにより先頭コードK28.5と同一のビット配列が生じることもある。
【0046】
図8は、第1の実施形態および比較例に係わり、パケットpkt内にビットエラーが発生したときに、ビットエラーが発生したフレームが棄却される例を示す図である。
【0047】
CRC部6aは、1フレーム内のデータコード全体の中にビットエラーが発生したか否かを検出する。シリアルデータ送信装置は、1フレーム内のデータコード全体を数とみなして、特定の数で割ったときの余りをデータコードに付加することで、余りが0となるようなデータコードを生成し、送信する。CRC部6aは、受信した1フレーム内のデータコード全体を特定の数で割って、余りが0であればビットエラーは発生しておらず、余りが0以外であればビットエラーが発生したと検出する。
【0048】
ビットエラーが発生したことをCRC部6aが検出すると、ビットエラーが発生したフレームが棄却される(具体的には、後段の構成部による使用が不可能となる)。単純なビットエラーが発生しただけの場合、
図8に示すように、ビットエラーが発生したフレームの次のフレームから、通常の動作が行われる。
【0049】
図9は、比較例に係わり、あるパケットpkt内に発生したビットエラーにより先頭コードK28.5と同一のビット配列が生じたときに、ビットエラーが発生したフレームだけでなく、さらに次のフレームが棄却される例を示す図である。
【0050】
先頭コードK28.5と同じビット配列が、
図7を参照して説明したように、2つのワードデータの10ビット境界を挟んで生じたとする。
【0051】
このき、先頭コードK28.5と同じビット配列が生じた位置が、パケットpktの先頭から先頭コードK28.5を除いてワード数M個以内の位置であれば、イネーブル信号Sig2を受信しているため、先頭コード検出部2は、先頭コードK28.5と一致する10ビットのビット配列の探索を行わない。
【0052】
従って、既に調整されている10ビット境界の同期が維持されるため、
図7に示す2ワードデータは、1ワードの正しいデータコードD9.3と、1ワードのビットエラーが生じたデータコードD22.0であると解釈され、ビットエラーが生じたデータコードD22.0を含む1つのフレームが棄却されるだけである。
【0053】
一方、先頭コードK28.5と同じビット配列が生じた位置が、パケットpktの先頭から先頭コードK28.5を除いてワード数M個を超えた位置であれば、イネーブル信号Sig2を受信していないため、先頭コード検出部2は、先頭コードK28.5と一致する10ビットのビット配列の探索を行う。従って、
図7に示す2ワードデータの中から、先頭コードK28.5と同一のビット配列が検出される。
【0054】
このとき検出されたビット配列を、疑似先頭コードK28.5と呼ぶことにする。先頭コード検出部2は、2ワード内における疑似先頭コードK28.5の位置に従った新たな境界指示信号Sig1をアラインメント部3へ送信する。これにより、アラインメント部3は、
図7において点線の楕円で囲んだビット配列を新たな10ビット境界として設定する。
図9において、点線で示す新たな10ビット境界は、実線で示す本来の10ビット境界とはずれた位置に設定されている。そして、
図9の点線で示すデータ列が、新たなパケットpktとしてアラインメント部3から順次送信される。
【0055】
カウンタ5は、疑似先頭コードK28.5に基づく境界指示信号Sig1によりアラインメント部3が10ビット境界を設定したらリセットされる。リセット時点ではカウント数が
図2に示した1パケットpkt内のデータコードのワード数Nに達していないため、先頭コードK28.5から疑似先頭コードK28.5までのデータは棄却される。
【0056】
そして、カウンタ5は、疑似先頭コードK28.5に基づく境界指示信号Sig1によりアラインメント部3が10ビット境界を設定して以後に受信するタイミング信号Sig3の数を、上述と同様にカウントアップする。このとき、疑似先頭コードK28.5に続いてアラインメント部3から送信されるワードデータのビット配列が、データコード表にあるデータコードD0.0~D31.7のビット配列の何れかに一致したとする。本来のデータコードではないのに、データコード(D**.*)として認識されるビット配列を、以下では、疑似データコード(D**.*)と呼ぶことにする。
【0057】
図9の点線で示すような疑似データコード(D**.*)が連続して送信されている間に、
図9の実線で示すように、本来の次のパケットpktの先頭コードK28.5が送信されたとする。このとき、本来の次のパケットpktの先頭コードK28.5の位置が、疑似先頭コードK28.5からワード数M個以内であると、上述のように先頭コード検出部2は、先頭コードK28.5と一致する10ビットのビット配列の探索を行わない。そのため、本来の次のパケットpktの先頭コードK28.5は認識されず、結果として、次のフレームも棄却される。
【0058】
こうして、ビットエラーにより先頭コードK28.5と同一のビット配列が生じた場合、発生したビットエラーの位置によっては、ビットエラーが発生したフレームだけでなく、ビットエラーが発生したフレームの次のフレームまで影響が及んで、連続する2フレームが棄却されることがある。
【0059】
図10は、第1の実施形態に係わるシリアルデータ受信装置の構成を示すブロック図である。
図10の説明において、上述と同様の部分に同一の符号を付して説明を適宜省略し、異なる点を主に説明する。
【0060】
第1の実施形態に係わるシリアルデータ受信装置は、
図1に示した構成に加えて、エンドコード・アイドルコード検出部11と、ラッチ回路12と、を備えている。
【0061】
シリアル・パラレル変換部1はエンドコード・アイドルコード検出部11へ接続される。エンドコード・アイドルコード検出部11はラッチ回路12へ接続される。ラッチ回路12は、先頭コード検出部2へ接続される。
【0062】
また、10B8Bデコーダ4は、
図1に示したイネーブル信号Sig2を先頭コード検出部2へ送信せず、先頭コード検出部2は、イネーブル信号Sig2を処理に用いない。
【0063】
エンドコード・アイドルコード検出部11は、シリアル・パラレル変換部1から受信した10ビットのワードデータを、連続する2ワード分保持する。エンドコード・アイドルコード検出部11は、保持する2ワード分のデータのビット配列の中から、データコードがないことを示す1ワード分のアイドルコードK28.3のビット配列と、パケットpktの終端を示す1ワード分のエンドコードK29.7のビット配列とに一致する10ビットのビット配列を探索する。
【0064】
探索の結果、アイドルコードK28.3とエンドコードK29.7との何れか一方に一致するビット配列が検出された場合に、エンドコード・アイドルコード検出部11は、第1の検出信号SigAをラッチ回路12へ送信する。
【0065】
第1の検出信号SigAは、アイドルコードK28.3とエンドコードK29.7との何れか一方に一致するビット配列が、シリアル・パラレル変換部1から受信するワードデータの10ビット境界を、何ビット分ずらした位置に検出されたかを示す情報を含む。
【0066】
ラッチ回路12は、エンドコード・アイドルコード検出部11から第1の検出信号SigAを受信して、第1の検出信号SigAを保持する。ラッチ回路12が第1の検出信号SigAを保持する期間は、先頭コード検出部2が、次の1ワード分のデータを含む連続する2ワード分のデータのビット配列の中から、先頭コードK28.5のビット配列を探索する期間である。
【0067】
この期間は、エンドコード・アイドルコード検出部11が、次の1ワード分のデータを含む連続する2ワード分のデータのビット配列の中から、アイドルコードK28.3とエンドコードK29.7との何れか一方のビット配列を探索する期間と同一である。
【0068】
ラッチ回路12は、第1の検出信号SigAを保持している期間は、第2の検出信号SigBを先頭コード検出部2へ送信する。第2の検出信号SigBは、上述した第1の検出信号SigAと同様の、10ビット境界を何ビット分ずらすかを示す情報を含む。
【0069】
先頭コード検出部2は、ラッチ回路12から第2の検出信号SigBを受信している期間に、2ワード分のデータのビット配列の中における、第2の検出信号SigBで示される10ビット境界の位置に、先頭コードK28.5と一致するビット配列が検出されるかを監視する。先頭コードK28.5と一致するビット配列が検出されたら、先頭コード検出部2は、境界指示信号Sig1をアラインメント部3へ送信する。
【0070】
ここで送信される境界指示信号Sig1は、アイドルコードK28.3とエンドコードK29.7との何れか一方に一致するビット配列と、先頭コードK28.5と一致するビット配列と、に共通する10ビット境界の情報を含むことになる。
【0071】
こうして、先頭コード検出部2が境界指示信号Sig1をアラインメント部3へ送信するのは、シリアル・パラレル変換部1から、アイドルコードK28.3と先頭コードK28.5とが連続して送信されたとき、または、エンドコードK29.7と先頭コードK28.5とが連続して送信されたときの何れかとなる。
【0072】
上述したエンドコード・アイドルコード検出部11(第1の検出部)と、ラッチ回路12と、先頭コード検出部2(第2の検出部)とは、検出部を構成する。
【0073】
エンドコード・アイドルコード検出部11がアイドルコードK28.3またはエンドコードK29.7を検出した連続する2ワード分のデータと、先頭コード検出部2が先頭コードK28.5を検出した連続する2ワード分のデータとは、1ワード分ずれている。従って、検出部は、シリアルデータDATAから変換された、アラインメントが調整されていない3ワード分のパラレルデータのビット配列の中から、アイドルコードK28.3またはエンドコードK29.7と、先頭コードK28.5と、が順に連続する特定のビット配列を検出している。
【0074】
なお、先頭コード検出部2はイネーブル信号Sig2を受信しないため、検出部による特定のビット配列の検出は、シリアル・パラレル変換部1からワードデータが送信される毎に行われる。
【0075】
アラインメント部3は、特定のビット配列が検出された結果、先頭コード検出部2から境界指示信号Sig1を受信したら、上述したように保持している連続する2ワード分のデータのビット配列の中に正しい10ビット境界を設定してアラインメントを調整し、アラインメントを調整した1ワードデータを10B8Bデコーダ4へ送信する。
【0076】
第1の実施形態に係わるシリアルデータ受信装置のその他の構成および作用は、
図1に示した比較例と同様である。
【0077】
図11は、第1の実施形態に係わり、ビットエラーにより先頭コードK28.5と同一のビット配列が生じても、ビットエラーが発生したフレームの次のフレームは棄却されない例を示す図である。
【0078】
図11の例においても、
図9の例と同様の、パケットpktの先頭から先頭コードK28.5を除いてワード数M個を超えた位置で、ビットエラーにより、疑似先頭コードK28.5が生じたとする。
【0079】
第1の実施形態の構成では、疑似先頭コードK28.5の前に、アイドルコードK28.3とエンドコードK29.7との何れか一方に一致するビット配列が検出されない。従って、エンドコード・アイドルコード検出部11から第1の検出信号SigAが送信されず、ラッチ回路12から第2の検出信号SigBが送信されない。
【0080】
このため、先頭コード検出部2が境界指示信号Sig1を送信するための条件、つまり、先頭コードK28.5と一致するビット配列が検出されるのが、第2の検出信号SigBを受信している期間であるという条件が成立しない。従って、先頭コード検出部2は、新たな境界指示信号Sig1をアラインメント部3へ送信せず、それまでの10ビット境界の同期が維持される。
【0081】
その結果、
図11に示すように、ビットエラーが生じたフレームは棄却されるが、次のフレームに関しては、アイドルコードK28.3と先頭コードK28.5とが連続して検出されているため、棄却されることなく通常の動作が行われる。
【0082】
第1の実施形態によれば、パケット内でビットエラーにより疑似先頭コードK28.5が生じたとしても、ビットエラーが発生したパケット以外のパケットに、ビットエラーの影響が及ぶのを低減できる。
【0083】
図12は、第1の実施形態の変形例に係わるシリアルデータ受信装置の構成を示すブロック図である。
【0084】
本変形例は、
図10に示した第1の実施形態の構成から、エンドコード・アイドルコード検出部11およびラッチ回路12を省略している。その結果、本変形例は、
図1に示した比較例に対して、10B8Bデコーダ4がイネーブル信号Sig2を先頭コード検出部2へ送信せず、先頭コード検出部2がイネーブル信号Sig2を処理に用いない点が相違している。
【0085】
この場合、先頭コード検出部2による先頭コードK28.5のビット配列の検出は、シリアル・パラレル変換部1からワードデータが送信される毎に行われる。その結果、疑似先頭コードK28.5が検出される。
【0086】
ただし、疑似先頭コードK28.5の後に送信される本来の次のパケットpktの先頭コードK28.5も、先頭コード検出部2により検出される。
【0087】
このため、ビットエラーが発生したフレームの次のフレームは棄却されず、次のフレームから通常の動作が行われる。
【0088】
こうして、第1の実施形態の変形例によっても、ビットエラーが発生したパケット以外のパケットに、ビットエラーの影響が及ぶのを低減できる。
【0089】
なお、上述ではシリアルデータ受信装置を主に説明したが、本発明の実施形態は、各部の構成をそれぞれ処理ステップに読み替えたシリアルデータ受信方法であってもよい。
【0090】
また、上述では8B10B方式のシリアル通信システムの例を説明したが、実施形態はこれに限定されない。実施形態は、パケットが1ワード分の先頭コードで開始され、先頭コードの前にデータコードがないことを示す1ワード分のアイドルコードまたはパケットの終端を示す1ワード分のエンドコードが配置されるシリアル通信システムに広く適用可能である。
【0091】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0092】
1…シリアル・パラレル変換部、2…先頭コード検出部、3…アラインメント部、4…10B8Bデコーダ、5…カウンタ、6…バッファ、6a…CRC部、7…再送処理部、11…エンドコード・アイドルコード検出部、12…ラッチ回路、CLK…クロック、DATA…シリアルデータ、Sig1…境界指示信号、Sig2…イネーブル信号、Sig3…タイミング信号、Sig4…パケット終了信号、Sig5…エラー信号、SigA…第1の検出信号、SigB…第2の検出信号、pkt…パケット