(57)【要約】【課題】  より精度の高い読出し異常検出を行うことを可能とし、ＦＩＦＯメモリ内に滞留しているセルを消失することなく正常状態へと復旧することが可能なＡＴＭセル転送装置を提供する。【解決手段】  ＳＯＣ異常検出部３３はＦＩＦＯメモリ２２から読出したＲ＿ＳＯＣ信号についてハイパルスから次のハイパルスまでの長さをカウントし、異常が発生していないかを監視し、Ｒ＿ＳＯＣ信号と基準ＳＯＣ信号との位相を比較してハイパルスのずれ幅を検出する。ＳＯＣ異常検出部３３はＳＯＣ異常検出信号にてＳＯＣ補正部４と外部とに異常を検出したことを通知し、検出したずれ幅をカウンタ補正情報にてＳＯＣ補正部４へ通知する。ＳＯＣ補正部４はＳＯＣ異常検出信号が通知されると、補正モード信号を出力し、ＣＬＡＶ生成部３１、データ出力制御部３２、ＦＩＦＯ読出し制御部３４を外部と切り離す。【選択図】      図１
2006101047.tif 000002
【特許請求の範囲】
【請求項１】
ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）セルをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリに書込み、前記ＦＩＦＯメモリからセル単位で読出して外部へ出力するＡＴＭセル転送装置であって、
セルデータの先頭と前記セルの先頭位置を示すＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号とがずれている異常状態を検出する手段と、前記異常状態を検出した後に補正モードに移行して前記セルを正常に先頭から読出せるように補正する手段とを有することを特徴とするＡＴＭセル転送装置。
【請求項２】
前記ＦＩＦＯメモリを読出す機能部分に、前記セルデータの読出し異常を監視するカウンタを備え、
前記カウンタは、前記ＳＯＣ信号の検出から次のＳＯＣ信号を検出するまでをカウントすることで前記ＦＩＦＯメモリから読出したセルデータにおいて前記セルの先頭以外のＳＯＣ異常を検出することを特徴とする請求項１記載のＡＴＭセル転送装置。
【請求項３】
ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリにセルデータを書込む書込み制御部と、前記ＦＩＦＯメモリから前記セルデータを読出す読出し制御部とを含むＡＴＭセル転送装置であって、
前記読出し制御部が前記セルデータの読出しを行う際に前記ＦＩＦＯメモリから出力されるセルデータの先頭と同タイミングで基準ＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号を出力する基準ＳＯＣ生成手段と、
前記ＦＩＦＯメモリから読出した前記セルの先頭位置を示すＳＯＣ信号のハイパルスから次のハイパルスまでをカウントして前記ＳＯＣ信号のハイパルス異常を検出するＳＯＣ異常検出手段と、
前記ＳＯＣ信号と前記基準ＳＯＣ信号とを比較して前記ＳＯＣ信号の位相のずれを検出する位相ずれ検出手段と、
前記ＳＯＣ異常検出手段から前記ＳＯＣ信号のハイパルス異常の検出が通知された時に前記位相ずれ検出手段からの前記ＳＯＣ信号のずれ幅情報を基に前記読出し制御部による前記ＦＩＦＯメモリからの読出し位置を補正するＳＯＣ補正手段とを有することを特徴とするＡＴＭセル転送装置。
【請求項４】
前記ＳＯＣ異常検出手段は、前記ＦＩＦＯメモリから読出したＳＯＣ信号のハイパルスから次のハイパルスまでをカウントするカウンタを含むことを特徴とする請求項３記載のＡＴＭセル転送装置。
【請求項５】
前記ＳＯＣ補正手段による補正回数に保護段数を設け、前記ＳＯＣ補正手段が前記保護段数の回数だけ連続で前記ＳＯＣ信号のハイパルス異常の検出が通知された時に前記ＳＯＣ信号の補正での復旧が不可能と判断し、少なくとも前記ＦＩＦＯメモリをリセットすることを特徴とする請求項３または請求項４記載のＡＴＭセル転送装置。
【請求項６】
前記ＳＯＣ異常検出手段が前記基準ＳＯＣ信号から予め設定された所定時間内に前記ＳＯＣ信号のハイパルスを検出することができない時に前記ＳＯＣ信号の補正での復旧が不可能と判断し、少なくとも前記ＦＩＦＯメモリをリセットすることを特徴とする請求項３から請求項５のいずれか記載のＡＴＭセル転送装置。
【請求項７】
前記位相ずれ検出手段は、前記位相のずれの検出を前記基準ＳＯＣ信号のハイパルス検出と前記ＳＯＣ信号のハイパルス検出とのいずれかによって開始することを特徴とする請求項３から請求項６のいずれか記載のＡＴＭセル転送装置。
【請求項８】
ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）セルをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリに書込み、前記ＦＩＦＯメモリからセル単位で読出して外部へ出力するＡＴＭセル転送装置に用いる誤り検出補正方法であって、前記ＡＴＭセル転送装置側に、セルデータの先頭と前記セルの先頭位置を示すＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号とがずれている異常状態を検出する処理と、前記異常状態を検出した後に補正モードに移行して前記セルを正常に先頭から読出せるように補正する処理とを有することを特徴とする誤り検出補正方法。
【請求項９】
前記ＦＩＦＯメモリを読出す機能部分に、前記セルデータの読出し異常を監視するカウンタを備え、前記カウンタが前記ＳＯＣ信号の検出から次のＳＯＣ信号を検出するまでをカウントすることで前記ＦＩＦＯメモリから読出したセルデータにおいて前記セルの先頭以外のＳＯＣ異常を検出することを特徴とする請求項８記載の誤り検出補正方法。
【請求項１０】
ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリにセルデータを書込む書込み制御部と、前記ＦＩＦＯメモリから前記セルデータを読出す読出し制御部とを含むＡＴＭセル転送装置に用いる誤り検出補正方法であって、前記ＡＴＭセル転送装置側に、前記セルデータの読出しを行う際に前記ＦＩＦＯメモリから出力されるセルデータの先頭と同タイミングで基準ＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号を出力する処理と、前記ＦＩＦＯメモリから読出した前記セルの先頭位置を示すＳＯＣ信号のハイパルスから次のハイパルスまでをカウントして前記ＳＯＣ信号のハイパルス異常を検出する処理と、前記ＳＯＣ信号と前記基準ＳＯＣ信号とを比較して前記ＳＯＣ信号の位相のずれを検出する処理と、前記ＳＯＣ信号のハイパルス異常の検出された時に前記ＳＯＣ信号の位相のずれ幅を基に前記ＦＩＦＯメモリからの読出し位置を補正する処理とを有することを特徴とする誤り検出補正方法。
【請求項１１】
前記ＳＯＣ信号のハイパルス異常を検出する処理は、前記ＦＩＦＯメモリから読出したＳＯＣ信号のハイパルスから次のハイパルスまでをカウントするカウンタを用いて前記ＳＯＣ信号のハイパルス異常を検出することを特徴とする請求項１０記載の誤り検出補正方法。
【請求項１２】
前記ＦＩＦＯメモリからの読出し位置を補正する処理による補正回数に保護段数を設け、前記保護段数の回数だけ連続で前記ＳＯＣ信号のハイパルス異常の検出が通知された時に前記ＳＯＣ信号の補正での復旧が不可能と判断し、少なくとも前記ＦＩＦＯメモリをリセットすることを特徴とする請求項１０または請求項１１記載の誤り検出補正方法。
【請求項１３】
前記基準ＳＯＣ信号から予め設定された所定時間内に前記ＳＯＣ信号のハイパルスを検出することができない時に前記ＳＯＣ信号の補正での復旧が不可能と判断し、少なくとも前記ＦＩＦＯメモリをリセットすることを特徴とする請求項１０から請求項１２のいずれか記載の誤り検出補正方法。
【請求項１４】
前記位相のずれを検出する処理は、前記位相のずれの検出を前記基準ＳＯＣ信号のハイパルス検出と前記ＳＯＣ信号のハイパルス検出とのいずれかによって開始することを特徴とする請求項１０から請求項１３のいずれか記載の誤り検出補正方法。
【請求項１５】
ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）セルをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリに書込み、前記ＦＩＦＯメモリからセル単位で読出して外部へ出力するＡＴＭセル転送装置に用いる誤り検出補正方法のプログラムであって、コンピュータに、セルデータの先頭と前記セルの先頭位置を示すＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号とがずれている異常状態を検出する処理と、前記異常状態を検出した後に補正モードに移行して前記セルを正常に先頭から読出せるように補正する処理とを実行させるためのプログラム。
【請求項１６】
ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリにセルデータを書込む書込み制御部と、前記ＦＩＦＯメモリから前記セルデータを読出す読出し制御部とを含むＡＴＭセル転送装置に用いる誤り検出補正方法のプログラムであって、コンピュータに、前記セルデータの読出しを行う際に前記ＦＩＦＯメモリから出力されるセルデータの先頭と同タイミングで基準ＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号を出力する処理と、前記ＦＩＦＯメモリから読出した前記セルの先頭位置を示すＳＯＣ信号のハイパルスから次のハイパルスまでをカウントして前記ＳＯＣ信号のハイパルス異常を検出する処理と、前記ＳＯＣ信号と前記基準ＳＯＣ信号とを比較して前記ＳＯＣ信号の位相のずれを検出する処理と、前記ＳＯＣ信号のハイパルス異常の検出された時に前記ＳＯＣ信号の位相のずれ幅を基に前記ＦＩＦＯメモリからの読出し位置を補正する処理とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＡＴＭセル転送装置及びそれに用いる誤り検出補正方法並びにそのプログラムに関し、特にＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ：非同期転送モード）セル転送におけるＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ：先入れ先出し）メモリ読出しデータの誤り検出及び補正方法に関する。
【背景技術】
【０００２】
ＡＴＭセルは固定長であるため、ＦＩＦＯメモリへの書込み及び読出しはセル単位で行われるが、ＦＩＦＯメモリ内へのセルの書込み、あるいはセルの読出し中に、クロック抜けや制御信号にノイズが発生する等の障害が発生した場合、正規のセル長でない異常なセルがＦＩＦＯメモリに書込まれる、あるいは読出しに誤りが生じる等の障害が発生する可能性がある。
【０００３】
この時にはＦＩＦＯメモリにおいてセルが先頭から正しく読出されなくなる状態に陥ることがあるが、この異常状態を検出することができない場合には、セルの先頭がずれたままデータが出力され続けることになる。
【０００４】
これを解決する方法としては、ＦＩＦＯメモリにセルデータを書込む際にセルの先頭を示すＳＯＣ信号をセルデータとともに書込み、ＦＩＦＯメモリからセルデータを読出す際に、セルの先頭情報も読出し、読出し開始時にセルの先頭を示すＳＯＣ信号がない場合を異常として検出する方法がある（例えば、特許文献１参照）。また、上記の方法にて異常を検出した場合、正常状態に復旧させる手段としては、ＦＩＦＯメモリをリセットすることでＦＩＦＯメモリのカウンタ値をリセットし、復旧させる手段がとられている。
【０００５】
上述した異常検出及び復旧を行う方法を組み込んだＡＴＭセル転送装置においては、図９に示すように、書込み制御部７と、ＦＩＦＯ部８と、読出し制御部９とを含んで構成されている。ＦＩＦＯ部８はＣＬＡＶ（Ｃｅｌｌ  Ａｖａｉｌａｂｌｅ  ｓｉｇｎａｌ）生成部８１と、ＦＩＦＯメモリ８２と、ＦＩＦＯ制御カウンタ８３とから構成され、読出し制御部９はＣＬＡＶ制御部９１と、データ出力制御部９２と、ＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）比較部９３と、ＦＩＦＯ読出し制御部９４と、リセット機能部９５とから構成されている。
【０００６】
書込み制御部７からＦＩＦＯ部８内のＦＩＦＯメモリ８２への書込み動作については、以下のようにして行われる。書込み制御部７は外部から入力セルデータ（Ｄ＿ＩＮ）２０１とセル先頭位置（Ｗ＿ＳＯＣ）２０２とを受けて、ＦＩＦＯ部８内のＦＩＦＯメモリ８２へ入力セルデータ２０３とセル先頭位置２０４とを書込む制御を行う。
【０００７】
書込み制御部７がライトイネーブル信号（ＷＥ）２０５をアサートすると、ＦＩＦＯ部８は受取ったセルデータをＦＩＦＯメモリ８２内に書込む。書込み制御部７がライトイネーブル信号（ＷＥ）２０５をアサートしない時、ＦＩＦＯ部８は受取ったセルデータをＦＩＦＯメモリ８２に書込まず、廃棄する。
【０００８】
ＦＩＦＯ部８において、ＣＬＡＶ生成部８１はＦＩＦＯメモリ８２に１セル以上のセルが格納されている時にＣＬＡＶ＿ＦＩＦＯ信号２０６をアサート出力する。ＦＩＦＯメモリ８２はセルデータを格納する部分で、実際にはセルデータがｎビットであればｎ個＋ＳＯＣ分１個の計ｎ＋１個のＦＩＦＯメモリを持つ。
【０００９】
ＦＩＦＯ制御カウンタ８３は読出し制御部９のＦＩＦＯ読出し制御部９４から内部リードイネーブル信号（ＲＥ）２０９を受信すると、ＦＩＦＯメモリ８２のアドレスを１セル分（５３ｂｙｔｅ分）カウントするカウンタ（図示せず）を持ち、常にＦＩＦＯメモリ８２から１セル分を読出す動作をする。
【００１０】
読出し制御部９はＦＩＦＯメモリ８２からセルデータを読出す制御を行い、さらに読出したセルの先頭において、Ｒ＿ＳＯＣ信号２０８と基準ＳＯＣ信号２１１との位相を比較する機能を併せ持つ。
【００１１】
読出し制御部９において、ＣＬＡＶ制御部９１はＦＩＦＯ部８内のＣＬＡＶ生成部８１から出力されるＣＬＡＶ＿ＦＩＦＯ信号２０６を送信要求信号ＣＬＡＶ２１２として外部に出力する制御を行う。データ出力制御部９２はＣＬＡＶ制御部９１と同様に、ＦＩＦＯ部８内のＦＩＦＯメモリ８２から出力されるセルデータ（Ｄ＿ＯＵＴ＿ＦＩＦＯ）２０７を出力データ（Ｄ＿ＯＵＴ）２１３として出力する制御を行う。
【００１２】
ＳＯＣ比較部９３はＦＩＦＯ部８内のＦＩＦＯメモリ８２より出力されたＲ＿ＳＯＣ信号２０８を外部出力ＳＯＣ信号（ＳＯＣ＿ＯＵＴ）２１４として出力する機能を持つほかに、Ｒ＿ＳＯＣ信号２０８とＦＩＦＯ読出制御部９４にて生成される基準ＳＯＣ信号２１１との位相を比較し、読出しを開始した時にセルの先頭を示すＳＯＣのパルスの有無を判定する機能を持つ。その比較結果はＳＯＣ比較結果信号２１７によってリセット機能部９５へ通知される。
【００１３】
ＦＩＦＯ読出し制御部９４は外部リードイネーブル信号（ＥＮＢ）２１５を検出してＦＩＦＯ部８へ内部リードイネーブル信号２０９を１セル分（５３ｂｙｔｅ）アサート出力する機能を持つ。リセット機能部９５はＳＯＣ比較結果信号２１７によってＳＯＣの異常が通知された時にＦＩＦＯリセット信号２１０をアサート出力し、ＦＩＦＯ部８内のＦＩＦＯ制御カウンタ８３をリセットする機能を持つ。
【００１４】
上記のように、従来の異常検出及び復旧を行う方法では、ＦＩＦＯメモリ８２から読出したセルの先頭において、ＳＯＣのハイパルスの有無を判定し、ハイパルスが検出されない場合にＦＩＦＯ部８をリセットすることで、異常状態を正常に復旧させる処置を行っている。
【００１５】
【特許文献１】特開平９−２８４２９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、従来のＦＩＦＯメモリの読出し異常検出及び復旧方法では、異常検出時の復旧方法として、ＦＩＦＯメモリをリセットするという方法が取られているため、異常を検出した際にＦＩＦＯメモリ内に滞留しているセルデータがすべて消去されてしまうという問題がある。ＦＩＦＯメモリ内に滞留しているセルデータは読出し位置が正しければ、セルデータの中身が正常である可能があるため、このセルはをかしておくことが望ましい。
【００１７】
また、従来のＦＩＦＯメモリの読出し異常検出及び復旧方法では、セルの先頭のみを監視しているので、ＦＩＦＯメモリから読出したセルの先頭以外にＳＯＣ異常がある場合に、これを検出することができないという問題がある。さらに、従来のＦＩＦＯメモリの読出し異常検出及び復旧方法では、セルの先頭を示すハイパルスが２クロック幅以上であった場合にも、その検出が不可能である。
【００１８】
そこで、本発明の目的は上記の問題点を解消し、より精度の高い読出し異常検出を行うことができ、ＦＩＦＯメモリ内に滞留しているセルを消失することなく正常状態へと復旧することができるＡＴＭセル転送装置及びそれに用いる誤り検出補正方法並びにそのプログラムを提供することにある。
【課題を解決するための手段】
【００１９】
本発明によるＡＴＭセル転送装置は、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）セルをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリに書込み、前記ＦＩＦＯメモリからセル単位で読出して外部へ出力するＡＴＭセル転送装置であって、
セルデータの先頭と前記セルの先頭位置を示すＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号とがずれている異常状態を検出する手段と、前記異常状態を検出した後に補正モードに移行して前記セルを正常に先頭から読出せるように補正する手段とを備えている。
【００２０】
本発明による他のＡＴＭセル転送装置は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリにセルデータを書込む書込み制御部と、前記ＦＩＦＯメモリから前記セルデータを読出す読出し制御部とを含むＡＴＭセル転送装置であって、
前記読出し制御部が前記セルデータの読出しを行う際に前記ＦＩＦＯメモリから出力されるセルデータの先頭と同タイミングで基準ＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号を出力する基準ＳＯＣ生成手段と、
前記ＦＩＦＯメモリから読出した前記セルの先頭位置を示すＳＯＣ信号のハイパルスから次のハイパルスまでをカウントして前記ＳＯＣ信号のハイパルス異常を検出するＳＯＣ異常検出手段と、
前記ＳＯＣ信号と前記基準ＳＯＣ信号とを比較して前記ＳＯＣ信号の位相のずれを検出する位相ずれ検出手段と、
前記ＳＯＣ異常検出手段から前記ＳＯＣ信号のハイパルス異常の検出が通知された時に前記位相ずれ検出手段からの前記ＳＯＣ信号のずれ幅情報を基に前記読出し制御部による前記ＦＩＦＯメモリからの読出し位置を補正するＳＯＣ補正手段とを備えている。
【００２１】
本発明による誤り検出補正方法は、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）セルをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリに書込み、前記ＦＩＦＯメモリからセル単位で読出して外部へ出力するＡＴＭセル転送装置に用いる誤り検出補正方法であって、前記ＡＴＭセル転送装置側に、セルデータの先頭と前記セルの先頭位置を示すＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号とがずれている異常状態を検出する処理と、前記異常状態を検出した後に補正モードに移行して前記セルを正常に先頭から読出せるように補正する処理とを備えている。
【００２２】
本発明による他の誤り検出補正方法は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリにセルデータを書込む書込み制御部と、前記ＦＩＦＯメモリから前記セルデータを読出す読出し制御部とを含むＡＴＭセル転送装置に用いる誤り検出補正方法であって、前記読出し制御部側に、前記セルデータの読出しを行う際に前記ＦＩＦＯメモリから出力されるセルデータの先頭と同タイミングで基準ＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号を出力する処理と、前記ＦＩＦＯメモリから読出した前記セルの先頭位置を示すＳＯＣ信号のハイパルスから次のハイパルスまでをカウントして前記ＳＯＣ信号のハイパルス異常を検出する処理と、前記ＳＯＣ信号と前記基準ＳＯＣ信号とを比較して前記ＳＯＣ信号の位相のずれを検出する処理と、前記ＳＯＣ信号のハイパルス異常の検出された時に前記ＳＯＣ信号の位相のずれ幅を基に前記ＦＩＦＯメモリからの読出し位置を補正する処理とを備えている。
【００２３】
本発明による誤り検出補正方法は、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）セルをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリに書込み、前記ＦＩＦＯメモリからセル単位で読出して外部へ出力するＡＴＭセル転送装置に用いる誤り検出補正方法のプログラムであって、コンピュータに、セルデータの先頭と前記セルの先頭位置を示すＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号とがずれている異常状態を検出する処理と、前記異常状態を検出した後に補正モードに移行して前記セルを正常に先頭から読出せるように補正する処理とを実行させている。
【００２４】
本発明による他の誤り検出補正方法は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリにセルデータを書込む書込み制御部と、前記ＦＩＦＯメモリから前記セルデータを読出す読出し制御部とを含むＡＴＭセル転送装置に用いる誤り検出補正方法のプログラムであって、コンピュータに、前記セルデータの読出しを行う際に前記ＦＩＦＯメモリから出力されるセルデータの先頭と同タイミングで基準ＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号を出力する処理と、前記ＦＩＦＯメモリから読出した前記セルの先頭位置を示すＳＯＣ信号のハイパルスから次のハイパルスまでをカウントして前記ＳＯＣ信号のハイパルス異常を検出する処理と、前記ＳＯＣ信号と前記基準ＳＯＣ信号とを比較して前記ＳＯＣ信号の位相のずれを検出する処理と、前記ＳＯＣ信号のハイパルス異常の検出された時に前記ＳＯＣ信号の位相のずれ幅を基に前記ＦＩＦＯメモリからの読出し位置を補正する処理とを実行させている。
【００２５】
すなわち、本発明のＡＴＭセル転送装置は、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ：非同期転送モード）セルをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ：先入れ先出し）メモリに書込み、ＦＩＦＯメモリからセル単位で読出して外部へ出力する場合において、セルデータの先頭とセルの先頭位置を示すＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）信号とがずれている場合、この異常状態を検出した後、補正モードに移行してセルを正常に先頭から読出せるように自動的に補正する機能を備えている。
【００２６】
また、本発明のＡＴＭセル転送装置では、ＦＩＦＯメモリを読出す機能部分にセルデータの読出し異常を監視するカウンタを持ち、あるＳＯＣ信号の検出から次のＳＯＣ信号を検出するまでをカウントすることで、ＦＩＦＯメモリから読出したセルデータにおいてセルの先頭以外のＳＯＣ異常を検出することが可能であることを特徴としている。
【００２７】
より具体的に説明すると、本発明のＡＴＭセル転送装置では、ＦＩＦＯ部内のＦＩＦＯメモリに書込み制御部からセルデータが書込まれ、読出し制御部によってＦＩＦＯメモリからセルデータが読出される構成となっている。読出し制御部からセルデータの読出しを行う際、基準ＳＯＣ生成部はＦＩＦＯメモリから出力されるセルデータの先頭と同タイミングで基準ＳＯＣ信号を出力する。
【００２８】
読出し制御部内にはＳＯＣ異常検出部を備えており、このＳＯＣ異常検出部は内部にＦＩＦＯメモリから読出したＲ＿ＳＯＣ信号のハイパルスから次のハイパルスまでをカウントするカウンタを備えており、Ｒ＿ＳＯＣ信号のハイパルス異常を検出する機能を持つ。Ｒ＿ＳＯＣ信号が異常であるということはセルデータもまた異常であるということを示すことになる。
【００２９】
また、Ｒ＿ＳＯＣ信号と基準ＳＯＣ信号とを比較し、本来、セルデータの先頭と同位相でＦＩＦＯメモリに書込まれているはずのＲ＿ＳＯＣ信号の位相のずれを検出する。ここでは単に位相がずれているかどうかを判定するだけでなく、Ｒ＿ＳＯＣ信号が正しいＳＯＣ信号の位置、つまり読出したセルの先頭から何クロック分ずれているのかも検出する。ＳＯＣ補正部はＳＯＣ異常検出部からＲ＿ＳＯＣ信号のずれ幅情報を含むカウンタ補正情報信号を受信すると、ＳＯＣ補正制御信号によってＦＩＦＯ制御カウンタの値を補正し、補正後のセルからは正しくセルの先頭から読出せる状態に復旧させる。
【００３０】
このようにして、本発明のＡＴＭセル転送装置では、ＳＯＣ異常検出部に持つカウンタからＳＯＣ信号が正しい位置から何クロックずれているかを検出することができるので、ＳＯＣ信号とセルデータの先頭とがずれている場合に、ずれた分をＦＩＦＯ制御カウンタで補正することでＦＩＦＯをリセットすることなくセルデータの読出しを正常状態へ復旧させることが可能となる。
【００３１】
また、本発明のＡＴＭセル転送装置では、上述したカウンタがＦＩＦＯメモリから読出したＳＯＣ信号のハイパルスから次のハイパルスまでをカウントするカウンタを備えているため、１クロック幅と規定されているＳＯＣ信号のハイパルスが２クロック幅以上であった場合、ＳＯＣ信号のハイパルスから次のハイパルスまでがＡＴＭセル長である５３ｂｙｔｅ以下であった場合、あるいは５３ｂｙｔｅ以上であった場合等、セルの先頭以外に存在するセルデータ異常をも検出することが可能となる。
【００３２】
このセルの先頭以外のＳＯＣ異常を検出することができる機能を持つことは、従来の方法よりも１セル早く異常を検出することができるという利点を持つことになる。
【００３３】
ＳＯＣ異常検出部に持つカウンタによってＳＯＣ信号が正しい位置から何クロックずれているかを検出し、異常検出時にはこのＳＯＣ信号のずれ幅情報を基にして、ＦＩＦＯ読出しカウンタをセルの先頭位置から読出せるように補正することで、ＦＩＦＯメモリ内のセルデータを消失することなく正常状態へ復旧することが可能となる。
【００３４】
また、本発明のＡＴＭセル転送装置では、ＳＯＣ異常検出部に持つカウンタがＦＩＦＯメモリから読出したＳＯＣ信号のハイパルスから次のハイパルスまでをカウントする機能を持つため、ＦＩＦＯメモリから読出したＳＯＣ信号においてセルの先頭以外に異常があった場合にも異常検出が可能となる。
【００３５】
さらに、本発明のＡＴＭセル転送装置では、セルの先頭以外にも、異常を検出することができることは、従来の方法より１セル分早く異常を検出することができるという利点も生まれる。
【発明の効果】
【００３６】
本発明は、以下に述べるような構成及び動作とすることで、より精度の高い読出し異常検出を行うことができ、ＦＩＦＯメモリ内に滞留しているセルを消失することなく正常状態へと復旧することができるという効果が得られる。
【発明を実施するための最良の形態】
【００３７】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例によるＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ：非同期転送モード）セル転送装置の構成を示すブロック図である。図１は、本発明の一実施例によるＡＴＭセル転送装置において、ＡＴＭセルをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ：先入れ先出し）メモリ２２から読出す場合の異常検出及び補正方法の回路構成を示している。
【００３８】
図１において、本発明の一実施例によるＡＴＭセル転送装置は書込み制御部１と、ＦＩＦＯ部２と、読出し制御部３と、ＳＯＣ（Ｓｔａｒｔ  Ｏｆ  Ｃｅｌｌ）補正部４とを含んで構成されている。ＦＩＦＯ部２はＣＬＡＶ（Ｃｅｌｌ  Ａｖａｉｌａｂｌｅ  ｓｉｇｎａｌ）生成部２１と、ＦＩＦＯメモリ２２と、基準ＳＯＣ生成部２３と、ＦＩＦＯ制御カウンタ２４とから構成され、読出し制御部３はＣＬＡＶ制御部３１と、データ出力制御部３２と、ＳＯＣ異常検出部３３と、ＦＩＦＯ読出し制御部３４とから構成されている。
【００３９】
書込み制御部１は外部から入力セルデータ（Ｄ＿ＩＮ）１０１とセル先頭位置（Ｗ＿ＳＯＣ）１０２とを受けて、ＦＩＦＯ部２内のＦＩＦＯメモリ２２へ入力セルデータ１０３とセル先頭位置１０４とを書込む制御を行う。書込み制御部１がライトイネーブル信号（ＷＥ）１０５をアサートすると、ＦＩＦＯ部２は受取ったセルデータをＦＩＦＯメモリ２２内に書込む。また、書込み制御部１がライトイネーブル信号１０５をアサートしなければ、ＦＩＦＯ部２は受取ったセルデータをＦＩＦＯメモリ２２に書込まず、廃棄する。
【００４０】
ＦＩＦＯ部２において、ＣＬＡＶ生成部２１はＦＩＦＯメモリ２２に１セル以上のセルデータが格納されている時にＣＬＡＶ＿ＦＩＦＯ信号１０６をアサート出力する。ＦＩＦＯメモリ２２はセルデータを格納する部分で、実際にはセルデータがｎビットであればｎ個＋ＳＯＣ分１個の計ｎ＋１個のＦＩＦＯメモリを持つ。
【００４１】
基準ＳＯＣ生成部２３は読出し制御部３のＦＩＦＯ読出し制御部３４から内部リードイネーブル信号（ＲＥ）１１０を受信すると、ＦＩＦＯメモリ２２から出力されるセルデータの先頭と同タイミングで基準ＳＯＣ信号１０９のハイパルスを出力する機能を持つ。ＦＩＦＯ制御カウンタ２４は内部リードイネーブル信号１１０を受信すると、ＦＩＦＯメモリ２２のアドレスを１セル分（５３ｂｙｔｅ分）カウントするカウンタ（図示せず）を持ち、常にＦＩＦＯメモリ２２から１セル分を読出す動作をする。
【００４２】
読出し制御部３はＦＩＦＯメモリ２２からセルデータを読出す制御を行い、さらに読出したＳＯＣ信号の異常を検出する機能を併せ持つ。読出し制御部３において、ＣＬＡＶ制御部３１はＦＩＦＯ部２内のＣＬＡＶ生成部２１から出力されるＣＬＡＶ＿ＦＩＦＯ信号１０６を送信要求信号（ＣＬＡＶ）１１３として外部に出力するか、あるいはマスクするかの制御を行う。データ出力制御部３２はＣＬＡＶ制御部３１と同様に、ＦＩＦＯ部２内のＦＩＦＯメモリ２２から出力されるセルデータ（Ｄ＿ＯＵＴ＿ＦＩＦＯ）１０７を出力データ（Ｄ＿ＯＵＴ）１１４として出力するか、あるいはマスクするかの制御を行う。
【００４３】
ＳＯＣ異常検出部３３はＦＩＦＯ部２内の基準ＳＯＣ生成部２３から出力された基準ＳＯＣ信号１０９を外部出力ＳＯＣ信号（ＳＯＣ＿ＯＵＴ）１１５として出力する機能を持つほかに、ＦＩＦＯ部２内のＦＩＦＯメモリ２２から読出したＲ＿ＳＯＣ信号１０８についてハイパルスから次のハイパルスまでの長さをカウントし、異常が発生していないかを監視する機能を持つ。
【００４４】
また、ＳＯＣ異常検出部３３はＲ＿ＳＯＣ信号１０８と基準ＳＯＣ信号１０９との位相を比較してハイパルスのずれ幅を検出する機能を持つ。ＳＯＣ異常検出部３３において異常を検出した時には、ＳＯＣ異常検出信号１１７にてＳＯＣ補正部４と外部とに異常を検出したことを通知する。検出したずれ幅はカウンタ補正情報１１８としてＳＯＣ補正部４へ通知される。
【００４５】
ＦＩＦＯ読出し制御部３４は外部リードイネーブル信号（ＥＮＢ）１１６を検出してＦＩＦＯ部２へ内部リードイネーブル信号（ＲＥ）１１０を１セル分（５３ｂｙｔｅ分）アサート出力する機能を持つ。
【００４６】
ＳＯＣ補正部４はＳＯＣ異常検出部３３からＳＯＣ異常検出信号１１７が通知されると、補正モード信号１１９を出力し、ＣＬＡＶ生成部３１、データ出力制御部３２、ＦＩＦＯ読出し制御部３４を外部と切り離すために各外部入出力信号をマスクする。さらに、ＳＯＣ補正部４はＳＯＣ異常検出部３３から通知されるカウンタ補正情報１１８を基にＳＯＣ補正制御信号１１１を生成してＦＩＦＯ部２内のＦＩＦＯ制御カウンタ２４へ通知する。
【００４７】
このＳＯＣ補正制御信号１１１によってＦＩＦＯ制御カウンタ２４はＦＩＦＯメモリ２２の読出し位置をＳＯＣ信号がずれた分だけ補正し、ＦＩＦＯメモリ２２から正常にセルデータが読出せるようにする。補正が完了すると、ＦＩＦＯ制御カウンタ２４はＳＯＣ補正部４へＳＯＣ補正完了信号１１２を出力し、ＳＯＣ補正部４はこれを受けて補正モード信号１１９によってＣＬＡＶ生成部３１、データ出力制御部３２、ＦＩＦＯ読出制御部３４のマスクを解除し、通常運用に戻る。
【００４８】
以上詳細に本実施例の構成について述べたが、ＦＩＦＯ部２内のＦＩＦＯ制御カウンタ２４とＦＩＦＯメモリ２２とのインタフェースは、当業者にとってよく知られており、また本発明とは直接関係しないので、その詳細な構成についての説明は省略する。
【００４９】
図２は図１のＳＯＣ異常検出部３３の内部回路構成を示すブロック図である。図２において、ＳＯＣ異常検出部３３はＳＯＣ異常検出カウンタ３３０と、位相比較部３３３と、出力ＳＯＣ制御部３３４と、ＳＯＣ異常検出出力部３３５とから構成され、ＳＯＣ異常検出カウンタ３３０はカウンタ制御部３３１と、ＳＯＣカウンタ（ＳＯＣ＿ＣＮＴ）３３２とから構成されている。
【００５０】
ＳＯＣ異常検出カウンタ３３０はＲ＿ＳＯＣ信号１０８について、ハイパルスから次のハイパルスまでのｂｙｔｅ数をカウントする機能を持つ。ＳＯＣ異常検出カウンタ３３０のカウンタ制御部３３１は基準ＳＯＣ信号１０９のハイパルスの立ち上がりを認識し、ＳＯＣカウンタ３３２のイネーブル信号（ＣＮＴ＿ＥＮＢ）１２１を１セル分（５３ｂｙｔｅ）アサートする機能を持つ。ＳＯＣカウンタ３３２はイネーブル信号１２１がアサートされている間にのみ動作が可能であり、“００”から“５２”までをカウントする機能を持つカウンタで、Ｒ＿ＳＯＣ信号１０８のハイパルスを検出すると、カウント値を“００”リセットする。
【００５１】
これによって、ＳＯＣカウンタ３３２は『カウンタが“５２”をカウントした次のクロック（但し、イネーブル信号１２１がアサートしている時）でＳＯＣのハイパルスを検出してカウント値が“００”となった時』を正常と判定し、それ以外の場合を異常と判定することが可能である。ここで、異常を検出した場合には、ＳＯＣ＿Ｆａｉｌｕｒｅ信号１２２によってＳＯＣ異常検出出力部３３５へ通知される。
【００５２】
また、ＳＯＣ異常検出カウンタ３３０では上記の機能に加えて、基準ＳＯＣ信号１０９のハイパルスを検出してからＲ＿ＳＯＣ信号１０８のハイパルスを検出するまでのずれ幅を測定する機能も備えている。ＳＯＣカウンタ３３２にて、基準ＳＯＣ信号１０９のハイパルスのタイミングであるイネーブル信号１２１のアサートから何クロック目でＲ＿ＳＯＣ信号１０８のハイパルスを検出するかをカウントし、カウンタ補正情報信号１１８として出力する。
【００５３】
位相比較部３３３はＲ＿ＳＯＣ信号１０８と基準ＳＯＣ信号１０９との先頭部分の位相を比較し、位相不一致の場合にその旨をＳＯＣ＿Ｆａｉｌｕｒｅ信号１２３によってＳＯＣ異常検出出力部３３５へ通知する。出力ＳＯＣ制御部３３４は基準ＳＯＣ信号１０９を出力ＳＯＣ信号１１５として外部へ出力する機能を持つ。ＳＯＣ異常検出出力部３３５はＳＯＣ＿Ｆａｉｌｕｒｅ信号１２３とＳＯＣ＿Ｆａｉｌｕｒｅ信号１２２とのどちらか１つでも異常を検出したら、ＳＯＣ異常検出信号１１７を外部へ出力する機能を持つ。
【００５４】
図３〜図５は図１のＳＯＣ異常検出部３３の動作を示すタイミングチャートである。これら図１〜図５を参照してＳＯＣ異常検出部３３の動作について説明する。
【００５５】
ＳＯＣ異常検出部３３の正常動作時の様子を図３（ａ）に示す。図３（ａ）において、ＳＯＣカウンタ３３２は“００”〜“５２”までをカウントした後、Ｒ＿ＳＯＣ信号１０８のハイパルスを検出してカウンタ値が“００”に戻っているため、正常動作と判定される。
【００５６】
ＳＯＣ異常検出部３３でＲ＿ＳＯＣ信号１０８のハイパルスを２クロック分検出した異常動作時の様子を図３（ｂ）に示す。図３（ｂ）において、ポイントＡではＲ＿ＳＯＣ信号１０８のハイパルスが２クロック分検出された状態となっている。この時、ＳＯＣカウンタ３３２は一つ目のハイパルスでカウント値が“００”にリセットされてカウントを開始するが、次のクロックで再びＲ＿ＳＯＣ信号１０８のハイパルスを検出するため、再びカウント値が“００”にリセットされてしまう。
【００５７】
この状態は『カウンタが“５２”をカウントした次にＳＯＣのハイパルスを検出してカウント値が“００”となった時』の条件に反するので、異常として検出される。また、ポイントＡで異常を検出したセルの次に読出されるセルにおいては、ポイントＢに示すように、基準ＳＯＣ信号１０９とＲ＿ＳＯＣ信号１０８とがずれることになり、ここでも異常が検出される。従来の方法ではポイントＢでのみ異常検出が可能であるが、本実施例による異常検出法ではポイントＡの段階で異常を検出することが可能となる。
【００５８】
ＳＯＣ異常検出部３３で読出したセルにセル抜けが発生した時の異常検出動作を図４（ａ）に示す。図４（ａ）において、セル抜けが発生したセルは通常の５３ｂｙｔｅより短いセルで読出されることになる。ポイントＣではＳＯＣカウンタ３３２が“５１”をカウントした後に、“５２”をカウントすることなく、Ｒ＿ＳＯＣ信号１０８のハイパルスを検出し、カウント値が“００”にリセットされている。
【００５９】
これは上述した『カウンタが“５２”をカウントした次にＳＯＣのハイパルスを検出してカウント値が“００”となった時』の条件に反するため、異常として検出される。またポイントＣではセル抜けが発生し、異常を検出したセルの次に読出されるセルにおいては、Ｒ＿ＳＯＣ信号１０８がセルの先頭に検出されないので、ＳＯＣずれの異常も検出される。
【００６０】
ＳＯＣ異常検出部３３でセルの先頭以外にもＲ＿ＳＯＣ信号１０８のハイパルスを検出した時の異常検出動作を図４（ｂ）に示す。図４（ｂ）において、ポイントＤではセルの先頭以外にＲ＿ＳＯＣ信号１０８のハイパルスを検出している。この時、ＳＯＣカウンタ３３２はＲ＿ＳＯＣ信号１０８のハイパルス検出によって“００”にリセットされてしまうため、『カウンタが“５２”をカウントした次にＳＯＣのハイパルスを検出してカウント値が“００”となった時』の条件に反して異常と検出される。
【００６１】
この図４（ｂ）に示すパターンでは、異常を検出したセルの次に読出されるセルが正常であればＳＯＣずれは発生しない。この場合には、従来のＳＯＣ異常検出方法では異常が発生したことを検出することが不可能である。
【００６２】
ＳＯＣ異常検出部３３でセルの長さが１セルの規定である５３ｂｙｔｅ以上であった時の異常検出動作を図５に示す。図５において、ポイントＥでは、セルの長さが５４ｂｙｔｅあるため、セルの先頭位置がずれている。このため、セルの先頭位置がずれた異常状態として検出することが可能であるが、ＳＯＣカウンタ３３２の動作としては、ポイントＥでカウント値“５２”を複数回検出しているので、『カウンタが“５２”をカウントした次にＳＯＣのハイパルスを検出してカウント値が“００”となった時』の条件に反するため、ここでも異常状態が検出される。
【００６３】
以上に示したように、本実施例では、ＳＯＣ異常検出部３３内にＳＯＣカウンタ３３２を持つことによって、セルの先頭以外のＳＯＣ異常も検出することが可能となり、より早く、より精度の高いＳＯＣ異常検出を実現することができる。
【００６４】
図６は図１のＳＯＣ異常検出部３３で異常を検出した時の動作を示すフローチャートである。これら図１〜図３と図６とを参照してＳＯＣ異常検出部３３で異常を検出した時の動作について説明する。尚、書込み制御部１と読出し制御部３とＳＯＣ補正部４とにおける各々の処理がＣＰＵ（中央処理装置）がＲＯＭ（リードオンリメモリ）からプログラムを読出して実行される場合、上記の図６に示す処理もＣＰＵがＲＯＭからプログラムを読出して実行することで実現される。
【００６５】
まず、ＳＯＣ異常検出部３３はＲ＿ＳＯＣ信号１０８に異常が検出されると（図６ステップＳ１）、ＳＯＣ異常検出信号１１７によってＳＯＣ補正部４に異常を検出したことを通知する（図６ステップＳ２）。ＳＯＣ補正部４はＳＯＣ異常検出信号１１７を受信すると、補正モード信号１１９をＡｃｔｉｖｅ出力する（図６ステップＳ３）。
【００６６】
ＣＬＡＶ制御部３１及びデータ出力制御部３２は補正モード信号１１９を受けると、それぞれ出力信号である送信要求信号１１３と出力データ１１４とをマスクして外部へ出力しないようにする。但し、出力データ１１４はデータ出力中の時に１セル分（５３ｂｙｔｅ）すべて出力してからマスクする。
【００６７】
また、ＦＩＦＯ読出し制御部３４は補正モード信号１１９を受けると、外部リードイネーブル信号１１６をマスクし、内部リードイネーブル信号１１０を停止させる。但し、外部リードイネーブル信号１１６がアサート中の時には１セル分（５３ｂｙｔｅ）アサートが完了してから入力をマスクする。
【００６８】
次に、ＳＯＣ補正部４はＳＯＣ異常検出部３３からカウンタ補正情報１１８が通知されると（図６ステップＳ４）、ＦＩＦＯ制御カウンタ２４へＳＯＣ補正制御信号１１１を出力する（図６ステップＳ５）。ＳＯＣ補正制御信号１１１にはＳＯＣ異常検出部３３において、ＦＩＦＯメモリ２２から読出されたＲ＿ＳＯＣ信号１０８が基準ＳＯＣ信号１０９から何クロックずれているかを測定した結果が含まれており、この信号によってＦＩＦＯ制御カウンタ２４に補正量を通知する。
【００６９】
ＦＩＦＯカウンタ２４はＳＯＣ補正制御信号１１１からＳＯＣ補正情報を読込み、カウンタを制御してリード開始位置がセルの先頭、つまりＳＯＣの位置になるように補正を行う（図６ステップＳ６）。補正が完了すると、ＦＩＦＯ制御カウンタ２４はＳＯＣ補正部４へＳＯＣ補正完了信号１１２によって補正が完了したことを通知する（図６ステップＳ７）。
【００７０】
ＳＯＣ補正部４はＳＯＣ補正完了信号１１２を受けると、補正モード信号１１９を非Ａｃｔｉｖｅ出力へと切替え（図６ステップＳ８）、ＣＬＡＶ制御部３１、データ出力生成部３２、ＦＩＦＯ読出制御部３４のマスク状態を解除する。各部のマスク状態が解除されると、読出し制御部３の補正モードが解除され、正常動作が可能となる（図６ステップＳ９）。
【００７１】
図７は図１のＦＩＦＯ制御カウンタ２４内でのＳＯＣ補正動作を示すタイミングチャートである。これら図１〜図３と図７とを参照してＦＩＦＯ制御カウンタ２４内でのＳＯＣ補正動作について説明する。
【００７２】
ＳＯＣ異常検出部３３にてＳＯＣの異常が検出された時の状態を図７（ａ）に示す。図７（ａ）において、矢印５０１はＦＩＦＯメモリ２２の読出し位置、破線矢印５０２は本来読出し開始位置となるべきセルの先頭位置を示す。
【００７３】
ＳＯＣ異常検出部３３は矢印５０１の位置でＳＯＣ異常を検出し、ＳＯＣ異常検出信号１１７にてＳＯＣ補正部４へ異常を通知し、破線矢印５０２の位置でＳＯＣ位置が２ｂｙｔｅ分ずれていることを測定し、カウンタ補正情報１１８にて２ｂｙｔｅ分の補正が必要であることをＳＯＣ補正部４へ通知する。ＳＯＣ補正部４はＳＯＣ補正制御信号１１１にてＦＩＦＯ制御カウンタ２４に補正情報を通知する。
【００７４】
ＦＩＦＯ制御カウンタ２４の補正動作を図７（ｂ）に示す。図７（ｂ）において、破線矢印５０３は補正前のＦＩＦＯメモリ読出し位置、矢印５０４は補正後のＦＩＦＯメモリ読出し位置をそれぞれ示す。
【００７５】
ＦＩＦＯ制御カウンタ２４はＳＯＣ補正制御信号１１１によってＳＯＣ位置が２ｂｙｔｅ分ずれていることが通知されると、読出し開始位置を２ｂｙｔｅ分シフトさせて、セルの先頭位置（セルデータ１０７が“２０１”の位置）から読出せるように補正する。読出し位置をシフトすることによって飛ばされたデータ（セルデータ１０７が“１５２”と“１５３”とのデータ）はリードされない。
【００７６】
補正が完了し、ＦＩＦＯ制御カウンタ２４からＳＯＣ補正部４へＳＯＣ補正完了信号１１２が通知された後の動作を図７（ｃ）に示す。補正後に内部リードイネーブル信号１１０を受信すると、ＦＩＦＯメモリ２２は矢印５０４の位置から読出しが開始されるので、正常にセルの先頭から読出せる状態に復旧することができる。
【００７７】
このように、ＳＯＣ補正は図１〜図７に示す方法で行うことが可能であるが、実際にはＳＯＣ補正モードを用いてもうまく補正されない状況が発生することが考えられるため、本実施例では以下の２つの機能をあわせて用いることで、ＳＯＣ補正モードの不具合発生を回避する構成とする。
【００７８】
この不具合としては、第一に、ＦＩＦＯメモリ２２の故障等の原因で何回補正してもセルの先頭に読出し位置を合わせることができない現象が起こることが考えられる。そこで、ＳＯＣの補正回数に保護段数Ｎを設け、ＳＯＣ補正部４がＮ回連続でＳＯＣ異常検出信号１１７を受信した時には、ＳＯＣ補正での復旧が不可能と判断し、ＦＩＦＯ部２をリセットする、あるいはシステム全体をリセットする等の処置を行う構成とする。
【００７９】
本実施例におけるＳＯＣ補正方法では、Ｒ＿ＳＯＣ信号１０８が本来のセル先頭位置ではないところに存在していても、一度はその誤った位置に読出し位置を合わせる補正を行うため、必ずしも１回の補正で正しい読出し位置（セルの先頭位置）に補正できるとは限らない。このため、保護段数を設ける場合はＮ＝３以上の数字とする。このように、本実施例では、ＳＯＣ補正回数に保護段数を設定することで、いつまでも正しく補正することができない状態で動き続けてしまうことが起こらない。
【００８０】
また、上記の不具合としては、第二に、図７に示すＳＯＣ補正動作において、異常発生時に基準ＳＯＣ信号１０９を検出した後、Ｒ＿ＳＯＣ信号１０８が検出されない場合、つまりＲ＿ＳＯＣ信号１０８が常にローであった場合には、一旦ＳＯＣ補正モードに移行した後、カウンタ補正情報１１８が通知されないため、正常動作に復旧できない現象に陥ることになる。
【００８１】
本実施例では、この状態を回避するために、ＳＯＣ異常検出部３３のＲ＿ＳＯＣ検出時間にタイムアウトを設け、基準ＳＯＣ信号１０９から２セル以内、つまり５３ｂｙｔｅ×２以内にＲ＿ＳＯＣ信号１０８のハイパルスを検出することができない場合、本実施例によるＳＯＣ補正が不可能と判断し、ＦＩＦＯ部２をリセットする、あるいはシステム全体をリセットする等の処置を行う構成とする。
【００８２】
このように、本実施例では、異常発生時のＲ＿ＳＯＣ検出時間にタイムアウト時間を設定することによって、Ｒ＿ＳＯＣ信号１０８の未検出によってＳＯＣ補正モードから正常動作へ復旧できない状態に陥ることを回避することができる。
【００８３】
以上説明したように、本実施例では、ＳＯＣ異常検出部３３に備えたＳＯＣカウンタ３３２からＳＯＣが正しい位置から何クロックずれているかを検出し、異常検出時にこのＳＯＣのずれ幅情報を基に、ＦＩＦＯ制御カウンタ２４をセルの先頭位置から読出せるように補正するので、ＦＩＦＯメモリ２２内のセルデータをリセット等で消失することなく、正常状態に復旧することができる。
【００８４】
また、本実施例では、ＳＯＣ異常検出部３３に備えたＳＯＣカウンタ３３２がＦＩＦＯメモリ２２から読出したＳＯＣのハイパルスから次のハイパルスまでをカウントする機能を持つため、ＦＩＦＯメモリ２２から読出したＳＯＣ信号においてセルの先頭以外に異常があった場合にも異常検出を行うことができる。
【００８５】
さらに、本実施例では、セルの先頭以外にＳＯＣに異常があった場合にも異常検出が可能であるため、従来の方法より１セル分早く異常を検出することができる。
【００８６】
図８は本発明の他の実施例によるＳＯＣ異常検出部のＳＯＣずれ幅検出方法を示すタイミングチャートである。本発明の他の実施例によるＡＴＭセル転送装置は図１に示す本発明の一実施例によるＡＴＭセル転送装置と同様の構成となっており、本発明の他の実施例によるＳＯＣ異常検出部は図２に示す本発明の一実施例によるＳＯＣ異常検出部３３と同様の構成となっている。以下、図１と図２と図８とを参照して本発明の他の実施例によるＳＯＣ異常検出部３３のＳＯＣずれ幅検出方法について説明する。
【００８７】
図８において、図８（ａ）はＳＯＣ異常検出部３３にてＳＯＣの異常を検出した時の状態を示しており、図中の破線矢印６０１，６０３は本来読出し開始位置となるべきセルの先頭位置、矢印６０２，６０４はＦＩＦＯメモリ２２の読出し位置をそれぞれ示す。
【００８８】
上述した方法では、ＳＯＣ異常検出部３３が基準ＳＯＣ信号１０９のハイパルスを検出してからＲ＿ＳＯＣ信号１０８のハイパルスを検出するまでのずれ幅を測定しているため、この方法を使用すると、図８（ａ）のケースではＳＯＣ位置が５２ｂｙｔｅ分ずれていると判断し、ＦＩＦＯ制御カウンタ２４にて５２ｂｙｔｅ分読出し位置をシフトして補正する制御となる。
【００８９】
しかしながら、図８（ａ）に示すようなケースの場合、基準ＳＯＣ信号１０９のハイパルス検出からＲ＿ＳＯＣ信号１０８のハイパルス検出までを測定（矢印６０２から破線矢印６０３までを測定）するよりも、Ｒ＿ＳＯＣ信号１０８のハイパルス検出から基準ＳＯＣ信号１０９のハイパルス検出までを測定（矢印６０２から破線矢印６０１までを測定）する方が、ＦＩＦＯ制御カウンタ２４における補正シフト量が少なくて済む。
【００９０】
そこで、本実施例では、ＳＯＣ異常検出部３３において、ずれ幅のカウント開始を基準ＳＯＣ信号１０９のハイパルス検出、Ｒ＿ＳＯＣ信号１０８のハイパルス検出のどちらからでも開始できるような構成とする。この新しいＳＯＣずれ幅測定方法を用いて図８（ａ）に示すようなケースを補正する時には、基準ＳＯＣ信号１０９のハイパルス検出からＲ＿ＳＯＣ信号１０８のハイパルス検出までのずれ幅が“−１ｂｙｔｅ”と検出される。
【００９１】
この時のＦＩＦＯ制御カウンタ２４でのＳＯＣ補正の様子を図８（ｂ）に示す。図８（ｂ）において、読出し開始位置を破線矢印６０４から矢印６０３へマイナス１ｂｙｔｅシフトさせることによって、セルの先頭位置（セルデータ１０７が“２０１”の位置から読出せるように補正する。読出し位置をマイナス側にシフトさせても、ＦＩＦＯメモリ２２内のデータ自体は１セル前に送信した時に消えてしまうわけではないので、再度送信が可能となる。補正後の動作は図８（ｃ）に示すように、正常にセルの先頭から読出せる状態に復旧することができる。
【００９２】
ＳＯＣ異常検出部３３において、どちらの検出方法を使用するかはＡＴＭセル長の５３ｂｙｔｅの半分を取り、２７ｂｙｔｅ付近をしきい値として切替えるのが効率のよい使用法となる。具体的には、基準ＳＯＣ信号１０９のハイパルスを検出してから２７ｂｙｔｅ間、Ｒ＿ＳＯＣ信号１０８のハイパルスを検出することができない場合、今度はＲ＿ＳＯＣ信号１０８のハイパルス検出から基準ＳＯＣ信号１０９のハイパルス検出までを測定する検出法に切替える動作とする。
【００９３】
このように、本実施例では、ＳＯＣ異常検出部３３のＳＯＣずれ幅検出において、ずれ幅のカウント開始を基準ＳＯＣ信号１０９のハイパルス検出、Ｒ＿ＳＯＣ信号１０８のハイパルス検出のどちらからでも開始できるような構成とし、基準ＳＯＣ信号１０９を中心に＋側、−側どちらにもずれ幅を検出することが可能となるので、ＦＩＦＯカウンタ制御部２４内での補正シフト量の絶対値を減少させ、補正時間を短縮させることができるという効果が得られる。尚、ここではＦＩＦＯメモリ２２のリードポインタの進む方向を“＋”、その逆を“−”と定義している。
【図面の簡単な説明】
【００９４】
【図１】本発明の一実施例によるＡＴＭセル転送装置の構成を示すブロック図である。
【図２】図１のＳＯＣ異常検出部の内部回路構成を示すブロック図である。
【図３】図１のＳＯＣ異常検出部の動作を示すタイミングチャートである。
【図４】図１のＳＯＣ異常検出部の動作を示すタイミングチャートである。
【図５】図１のＳＯＣ異常検出部の動作を示すタイミングチャートである。
【図６】図１のＳＯＣ異常検出部で異常を検出した時の動作を示すフローチャートである。
【図７】図１のＦＩＦＯ制御カウンタ内でのＳＯＣ補正動作を示すタイミングチャートである。
【図８】本発明の他の実施例によるＳＯＣ異常検出部のＳＯＣずれ幅検出方法を示すタイミングチャートである。
【図９】従来例によるＡＴＭセル転送装置の構成を示すブロック図である。
【符号の説明】
【００９５】
１  書込み制御部
２  ＦＩＦＯ部
３  読出し制御部
４  ＳＯＣ補正部
２１  ＣＬＡＶ生成部
２２  ＦＩＦＯメモリ
２３  基準ＳＯＣ生成部
２４  ＦＩＦＯ制御カウンタ
３１  ＣＬＡＶ制御部
３２  データ出力制御部
３３  ＳＯＣ異常検出部
３４  ＦＩＦＯ読出し制御部
３３０  ＳＯＣ異常検出カウンタ
３３１  カウンタ制御部
３３２  ＳＯＣカウンタ
３３３  位相比較部
３３４  出力ＳＯＣ制御部
３３５  ＳＯＣ異常検出出力部
【図１】
2006101047.tif 000003
【図２】
2006101047.tif 000004
【図３】
2006101047.tif 000005
【図４】
2006101047.tif 000006
【図５】
2006101047.tif 000007
【図６】
2006101047.tif 000008
【図７】
2006101047.tif 000009
【図８】
2006101047.tif 000010
【図９】
2006101047.tif 000011