(57)【特許請求の範囲】
【請求項１】
決められたデータ長のデータを複数回の書き込み回数に分けてライトポインタが指定するバッファメモリの書き込みアドレスに書き込むデータ書き込み方法において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値とし、
前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、その時の前記ライトポインタの書き込みアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時には、前記ライトポインタの書き込みアドレスを前記特定アドレスに書き替えるようにしたデータ書き込み方法。
【請求項２】
決められたデータ長のデータを複数回の書き込み回数に分けてライトポインタが指定するバッファメモリの書き込みアドレスに書き込むデータ書き込み方法において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値としてそのライトポインタをリセット動作させるとともに、前記ライト用イネーブル信号をカウントするライト用カウンタにて前記書き込み回数をカウントさせ、
前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、前記ライト用カウンタが前記書き込み回数を示していない時には、前記ライトポインタの書き込みアドレスを、前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに書き替えるようにしたデータ書き込み方法。
【請求項３】
決められたデータ長のデータを複数回の読み出し回数に分けてリードポインタが指定するバッファメモリの読み出しアドレスから読み出すデータ読み出し方法において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値としてそのリードポインタをリセット動作させ、
前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、その時の前記リードポインタの読み出しアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時には、前記リードポインタの読み出しアドレスを前記特定アドレスに書き替えるようにしたデータ読み出し方法。
【請求項４】
決められたデータ長のデータを複数回の読み出し回数に分けてリードポインタが指定するバッファメモリの読み出しアドレスから読み出すデータ読み出し方法において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値としてそのリードポインタをリセット動作させるとともに、前記リード用イネーブル信号をカウントするリード用カウンタにて前記読み出し回数をカウントさせ、
前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、前記リード用カウンタが前記読み出し回数を示していない時には、前記リードポインタの読み出しアドレスを、前記カウントアップ値とデータ長とに基づいて求めた特定アドレスに書き替えるようにしたデータ読み出し方法。
【請求項５】
決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、
ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、
リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値として指定するポインタループ設定回路と、
前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、その時のライトポインタの書き込みアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時、書き込み異常と判断するライト用検出回路とを備えたメモリ回路。
【請求項６】
決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、
ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、
リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値として指定するポインタループ設定回路と、
前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、その時のリードポインタの読み出しアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時、読み出し異常と判断するリード用検出回路とを備えたメモリ回路。
【請求項７】
決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、
ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、
リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるメモリ回路において、
前記ライト用イネーブル信号に応答して前記書き込み回数をカウントするライト用カウンタと、
前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、前記ライト用カウンタが前記書き込み回数を示していない時、前記データの書き込み異常と判断するライト用検出回路とを備えたメモリ回路。
【請求項８】
決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、
ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、
リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、
前記リード用イネーブル信号に応答して前記読み出し回数をカウントするリード用カウンタと、
前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、前記リード用カウンタが前記読み出し回数を示していない時、前記データの読み出し異常と判断するリード用検出回路とを備えたメモリ回路。
【請求項９】
請求項５又は請求項７に記載のメモリ回路において、
書き込み異常と判断した時、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中からその時の示している書き込みアドレスに最も近い特定アドレスに書き替えるライト用アドレス変更回路を備えたメモリ回路。
【請求項１０】
請求項９に記載のメモリ回路において、
前記特定アドレスを複数個求め、
書き込み異常と判断した時には、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中からその時の示している書き込みアドレスに最も近い特定アドレスに書き替えるようにしたメモリ回路。
【請求項１１】
請求項６又は請求項８に記載のメモリ回路において、
前記リード用検出回路が読み出し異常と判断した時、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスで最も近い特定アドレスに書き替えるリード用アドレス変更回路を備えたメモリ回路。
【請求項１２】
請求項１１に記載のメモリ回路において、
前記特定アドレスを複数個求め、
読み出し異常と判断した時には、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにしたメモリ回路。
【請求項１３】
請求項１又は請求項２に記載のデータ書き込み方法において、
前記特定アドレスを複数個求め、
データの最後の書き込みが完了した時のライトポインタの書き込みアドレスが前記複数個の特定アドレスのいずれにも該当しない時には、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにしたデータ書き込み方法。
【請求項１４】
請求項３又は請求項４に記載のデータ読み出し方法において、
前記特定アドレスを複数個求め、
データの最後の読み出しが完了した時のリードポインタの読み出しアドレスが前記複数個の特定アドレスのいずれにも該当しない時には、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにしたデータ読み出し方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＦＩＦＯ（First In First Out）形式のメモリ回路に関するものである。
【０００２】
近年、マルチメディアに対応して例えばパソコンに対してオーディオ・ビデオ機器、デジタルカメラ等の多数の周辺装置が接続できることが求められている。
パソコンと各周辺装置との間、又は、各周辺装置間とでデータ転送において精度の高い転送データが望まれている。そして、連続したデータ自体の誤り訂正機能は符号（ＣＲＣ）を挿入するなどの対策によって対応が可能になる。そのため、符号を生成する前段階での連続したデータの受信処理は、その処理回路に正しくデータが転送される必要がある。
【０００３】
【従来の技術】
従来、デジタルデータの転送の１つとして、例えばＩＥＥＥ１３９４という規格がある。このＩＥＥＥ１３９４には、一定間隔の時間で予め定められたデータ量（バイト長）の転送データ（パケット）を連続して転送するアイソクロナス転送がある。
【０００４】
このアイソクロナス転送方式において、一定の間隔で予め定められたデータ量の転送データ（パケット）を装置間で送受信を行う。この時、転送データを入力する装置、又は、転送データを出力する装置は、その入出力インタフェースに合わせて転送データを転送するわではなく、装置内に設けたＭＰＵがＩＥＥＥ１３９４のバスプロトコルに従って実行処理する。従って、その実行処理に要する時間、転送データ（パケット）を一時的に保持しておく必要があることから、装置内にはそのためのデータ格納メモリ回路が備えられている。
【０００５】
このデータ格納メモリ回路は、ＦＩＦＯ（First In First Out）形式のデータバッファメモリ回路である。このＦＩＦＯ形式のメモリ回路は、ライトポインタ及びリードポインタを備えている。そして、ライトポインタは、その値がバッファメモリの書き込みアドレスに使用される。リードポインタは、その値がバッファメモリの読み出しアドレスに使用される。又、両ポインタの値は、バッファメモリがデータを保持している状態（ＦＵＬＬ／ＥＭＰＴＹ）を判断する場合に使用されている。
【０００６】
そして、このＦＩＦＯ形式のメモリ回路は、例えば、他装置からアイソクロナス転送された転送データがプロトコルコントローラを介して書き込まれる。メモリ回路に入力される転送データ（パケット）は、ヘッダ部分が除かれたデータ（アイソクロナス・データ）であって、該アイソクロナス・データのデータ長は常に一定である。例えば、アイソクロナス・データのデータ長が２５０バイトであると、該２５０バイト長のデータが１バイトごとライト用イネーブル信号に応答して書き込まれる。従って、２５０個のライト用イネーブル信号が出力されると、２５０バイト長のアイソクロナス・データがメモリ回路に書き込まれることになる。詳述すると、ライト用ネーブル信号が出力される毎にライトポインタが「１」づつインクリメントされるとともに、そのインクリメントされたライトポインタが示す値のアドレスに１バイトのデータが書き込まれる。２５０バイト長のアイソクロナス・データが書き込まれると、ライトポインタは次のパケットのアイソクロナス・データの書き込みを待つ。
【０００７】
メモリ回路からの１つのパケットのアイソクロナス・データを読み出す場合も同様に行われる。２５０バイト長のデータが１バイトごとリード用ネーブル信号に応答して読み出される。従って、２５０個のリード用ネーブル信号が出力されると、２５０バイト長のアイソクロナス・データがメモリ回路が読み出されることになる。詳述すると、リード用ネーブル信号が出力される毎にリードポインタが「１」づつインクリメントされるとともに、そのインクリメントされたリードポインタが示す値のアドレスから１バイトのデータが読み出される。２５０バイト長のアイソクロナス・データが読み出されると、リードポインタは次のパケットのアイソクロナス・データの読み出しを待つ。
【０００８】
【発明が解決しようとする課題】
ところで、２５０バイト長のパケットのアイソクロナス・ データを書き込んでいる最中に、ライト用ネーブル信号にノイズが発生する場合がある。このノイズにより、ライトポインタがインクリメントされて、同じ内容の１バイトのデータがバッファメモリに書き込まれる。その結果、２５０バイト長のアイソクロナス・データが書き込まれるはずが、２５０バイト長を超える余分なデータを含むアイソクロナス・データが書き込まれる。そして、該アイソクロナス・データが１バイトづつ順に読み出されると、２５０バイト長を超えるデータは、後続のパケットのアイソクロナス・データとして処理され以後のパケットのアイソクロナス・データとして読み出されるといった異常データ転送が生じる。
【０００９】
反対に、何らかの原因でノイズが発生してライト用ネーブル信号が消失した場合には、２５０バイト長のアイソクロナス・データが書き込まれるはずが、２５０バイト未満のバイト長、即ちデータが不足したアイソクロナス・データが書き込まれる。そして、該アイソクロナス・データが１バイトづつ順に読み出されるとき、該アイソクロナス・データが２５０バイト未満の不足したデータであることから、後続のパケットのアイソクロナス・データの一部が先のパケットのアイソクロナス・データの一部として読み出されてしまうといった異常データ転送が生じる。
【００１０】
同様に、アイソクロナス・データを読み出している最中に、リード用ネーブル信号にノイズがのり、このノイズによりリードポインタがインクリメントされて新たなアドレスから１バイトのデータがバッファメモリから読み出される。その結果、２５０バイト長のアイソクロナス・データが読み出されるはずが、２５０バイト長を超えるバイト長のアイソクロナス・データが読み出されるといった問題が生じる。即ち、後続のパケットのアイソクロナス・データの一部が先のパケットのアイソクロナス・データの一部として読み出されてしまうといった異常データ転送が生じる。
【００１１】
反対に、何らの原因でノイズが発生してリード用ネーブル信号が消失した場合には、２５０バイト長のアイソクロナス・データが読み出されるはずが、２５０バイト未満のバイト長の不足したアイソクロナス・データが読み出されとともに、該アイソクロナス・データの一部が読み出されないといった問題が生ずる。そして、読み出されなかった該パケットのアイソクロナス・データの一部は後続のパケットのアイソクロナス・データとして処理され後続のパケットのアイソクロナス・データの一部として読み出されるといった異常データ転送が生じる。
【００１２】
本発明の第１の目的は、決められたデータ長の転送データが複数回に分けて順にメモリに書き込んだとき、その転送データが正常に書き込まれなかった場合、その後に書き込まれる転送データを正しい位置に書き込むことができるデータ書き込み方法及びメモリ回路を提供することにある。
【００１３】
本発明の第２の目的は、決められたデータ長の転送データが複数回に分けて順にメモリから読み出したとき、その転送データが正常に読み出されなかった場合、後続の転送データを正しい位置から読み出すことができるデータ読み出し方法及びメモリ回路を提供することにある。
【００１４】
本発明の第３の目的は、決められたデータ長の転送データを複数回に分けて順にメモリに書き込んだとき、その転送データが正常に書き込まれたかどうかを検出することができるメモリ回路を提供することにある。
【００１５】
本発明の第４の目的は、決められたデータ長の転送データが複数回に分けて順にメモリから読み出したとき、その転送データが正常に読み出されたかどうかを検出することができるメモリ回路を提供することにある。
【００１６】
本発明の第５の目的は、決められたデータ長の転送データが複数回に分けて順に書き込み及び読み出しが行われるメモリ回路において、その転送データの書き込み及び読み出しが正常に行われたかどうか検出し、正常に行われなかった時には後に書き込まれる転送データを正しい位置に書き込むことができ又は次に読み出される転送データを正しい位置から読み出すことができるメモリ回路を提供することにある。
【００１７】
【課題を解決するための手段】
請求項１に記載の発明は、決められたデータ長のデータを複数回の書き込み回数に分けてライトポインタが指定するバッファメモリの書き込みアドレスに書き込むデータ書き込み方法において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値とし、前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、その時の前記ライトポインタの書き込みアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時には、前記ライトポインタの書き込みアドレスを前記特定アドレスに書き替えるようにした。
【００１８】
請求項２に記載の発明は、決められたデータ長のデータを複数回の書き込み回数に分けてライトポインタが指定するバッファメモリの書き込みアドレスに書き込むデータ書き込み方法において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値としてそのライトポインタをリセット動作させるとともに、前記ライト用イネーブル信号をカウントするライト用カウンタにて前記書き込み回数をカウントさせ、前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、前記ライト用カウンタが前記書き込み回数を示していない時には、前記ライトポインタの書き込みアドレスを、前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに書き替えるようにした。
【００１９】
請求項３に記載の発明は、決められたデータ長のデータを複数回の読み出し回数に分けてリードポインタが指定するバッファメモリの読み出しアドレスから読み出すデータ読み出し方法において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値としてそのリードポインタをリセット動作させ、前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、その時の前記リードポインタの読み出しアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時には、前記リードポインタの読み出しアドレスを前記特定アドレスに書き替えるようにした。
【００２０】
請求項４に記載の発明は、決められたデータ長のデータを複数回の読み出し回数に分けてリードポインタが指定するバッファメモリの読み出しアドレスから読み出すデータ読み出し方法において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値としてそのリードポインタをリセット動作させるとともに、前記リード用イネーブル信号をカウントするリード用カウンタにて前記読み出し回数をカウントさせ、前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、前記リード用カウンタが前記読み出し回数を示していない時には、前記リードポインタの読み出しアドレスを、前記カウントアップ値とデータ長とに基づいて求めた特定アドレスに書き替えるようにした。
【００２１】
請求項５に記載の発明は、決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値として指定するポインタループ設定回路と、前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、その時のライトポインタの書き込みアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時、書き込み異常と判断するライト用検出回路とを備えた。
【００２２】
請求項６に記載の発明は、決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値として指定するポインタループ設定回路と、前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、その時のリードポインタの読み出しアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時、読み出し異常と判断するリード用検出回路とを備えた。
【００２３】
請求項７に記載の発明は、決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるメモリ回路において、前記ライト用イネーブル信号に応答して前記書き込み回数をカウントするライト用カウンタと、前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、前記ライト用カウンタが前記書き込み回数を示していない時、前記データの書き込み異常と判断するライト用検出回路とを備えた。
【００２４】
請求項８に記載の発明は、決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、前記リード用イネーブル信号に応答して前記読み出し回数をカウントするリード用カウンタと、前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、前記リード用カウンタが前記読み出し回数を示していない時、前記データの読み出し異常と判断するリード用検出回路とを備えた。
【００２５】
請求項９に記載の発明は、請求項５又は請求項７に記載のメモリ回路において、書き込み異常と判断した時、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中からその時の示している書き込みアドレスに最も近い特定アドレスに書き替えるライト用アドレス変更回路を備えた。
【００２６】
請求項１０に記載の発明は、請求項９に記載のメモリ回路において、前記特定アドレスを複数個求め、書き込み異常と判断した時には、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中からその時の示している書き込みアドレスに最も近い特定アドレスに書き替えるようにした。
【００２７】
請求項１１に記載の発明は、請求項６又は請求項８に記載のメモリ回路において、前記リード用検出回路が読み出し異常と判断した時、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスで最も近い特定アドレスに書き替えるリード用アドレス変更回路を備えた。
【００２８】
請求項１２に記載の発明は、請求項１１に記載のメモリ回路において、前記特定アドレスを複数個求め、読み出し異常と判断した時には、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。
【００２９】
請求項１３に記載の発明は、請求項１又は請求項２に記載のデータ書き込み方法において、前記特定アドレスを複数個求め、データの最後の書き込みが完了した時のライトポインタの書き込みアドレスが前記複数個の特定アドレスのいずれにも該当しない時には、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。
【００３０】
請求項１４に記載の発明は、請求項３又は請求項４に記載のデータ読み出し方法において、前記特定アドレスを複数個求め、データの最後の読み出しが完了した時のリードポインタの読み出しアドレスが前記複数個の特定アドレスのいずれにも該当しない時には、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。
【００３１】
（作用）
請求項１の発明によれば、バッファメモリはカウントアップ値によってその記憶容量が決まる。この時、そのライトポインタのカウントアップ値を、データ長の整数倍であってバッファメモリの記憶容量を超さない値としたことから、決められたデータ長のデータが、ライトポインタの書き込みアドレスに従ってバッファメモリに書き込まれる場合、正常に書き込まれた時には、データ長の整数倍でかつ前記カウントアップ値以下の特定のアドレスでその書き込みが完了する。その結果、書き込みが異常の場合には、該特定のアドレスから外れたアドレスで書き込みが完了する。そして、書き込み異常が生じたとき、ライトポインタの書き込みアドレスを特定アドレスに書き替えるようにしたので、次に書き込まれる後続のデータが正常な位置から書き込まれ、該後続のデータは特定の書き込みアドレスでその書き込みが完了する。
【００３２】
請求項２の発明によれば、決められたデータ長のデータが正常に書き込まれる際には複数回の書き込み回数で書き込みが完了する。従って、決められたデータ長のデータの最後の書き込みが完了した時、ライト用カウンタがその書き込み回数を示していない時には、異常書き込みとなる。そして、書き込み異常が生じたとき、ライトポインタの書き込みアドレスを特定アドレスに書き替えるようにしたので、次に書き込まれる後続のデータが正常な位置から書き込まれ、該後続のデータは特定の書き込みアドレスでその書き込みが完了する。
【００３３】
請求項３の発明によれば、リードポインタのカウントアップ値を、データ長の整数倍であってバッファメモリの記憶容量を超さない値としたことから、決められたデータ長のデータが、リードポインタの読み出しアドレスに従ってバッファメモリから読み出される場合、正常に読み出された時には、データ長の整数倍でかつ前記カウントアップ値以下の特定のアドレスでその読み出しが完了する。その結果、読み出しが異常の場合には、該特定のアドレスから外れたアドレスで読み出しが完了することになる。そして、読み出し異常が生じたとき、リードポインタの読み出しアドレスを特定アドレスに書き替えるようにしたので、次に読み出される後続のデータが正常な位置から読み出され、該後続のデータは特定の読み出しアドレスでその読み出しが完了する。
【００３４】
請求項４の発明によれば、決められたデータ長のデータが正常に読み出される際には複数回の読み出し回数で読み出しが完了する。従って、決められたデータ長のデータの最後の読み出しが完了した時、リード用カウンタがその読み出し回数を示していない時には、異常読み出しとなる。そして、読み出し異常が生じたとき、リードポインタの読み出しアドレスを特定アドレスに書き替えるようにしたので、次に読み出される後続のデータが正常な位置から読み出され、該後続のデータは特定の読み出しアドレスでその書き込みが完了する。
【００３５】
請求項５の発明によれば、ポインタループ設定回路により、データ長の整数倍であってバッファメモリの記憶容量を超さない値をライトポインタのカウントアップ値としたことから、決められたデータ長のデータはライトポインタの書き込みアドレスに従ってバッファメモリに書き込まれる場合、正常に書き込まれた時には、データ長の整数倍でかつ前記カウントアップ値以下の特定のアドレスでその書き込みが完了することになる。従って、ライト用検出回路は、データの書き込みが完了した時にライトポインタのその時の書き込みアドレスをみて、特定アドレスを示さなかったときには書き込み異常と判断することができる。
【００３６】
請求項６の発明によれば、ポインタループ設定回路により、データ長の整数倍であってバッファメモリの記憶容量を超さない値をリードポインタのカウントアップ値としたことから、決められたデータ長のデータはリードポインタの読み出しアドレスに従ってバッファメモリから読み出される場合、正常に読み出された時には、データ長の整数倍でかつ前記カウントアップ値以下の特定のアドレスでその読み出しが完了することになる。従って、リード用検出回路は、データの読み出しが完了した時にリードポインタのその時の読み出しアドレスをみて、特定アドレスを示さなかったときには読み出し異常と判断することができる。
【００３７】
請求項７の発明によれば、決められたデータ長のデータの最後の書き込みが完了した時、正常に書き込みが行われた時にはライト用カウンタはその書き込み回数を示す。ライト用検出回路は、決められたデータ長のデータの最後の書き込みが完了した時、前記ライト用カウンタが前記書き込み回数を示していない時、書き込み異常が生じたと判断することができる。
【００３８】
請求項８の発明によれば、決められたデータ長のデータの最後の読み出しが完了した時、正常に読み出しが行われた時にはリード用カウンタはその読み出し回数を示す。リード用検出回路は、決められたデータ長のデータの最後の読み出しが完了した時、前記リード用カウンタが前記読み出し回数を示していない時、読み出し異常が生じたと判断することができる。
【００３９】
請求項９の発明によれば、請求項５又は請求項７に記載した発明の作用に加えて、ライト用検出回路が書き込み異常と判断したとき、ライト用アドレス変更回路はライトポインタの書き込みアドレスを特定アドレスに書き替えるようにした。その結果、次に書き込まれる後続のデータが正常な位置から書き込まれ、該後続のデータは特定の書き込みアドレスでその書き込みが完了することになる。
【００４０】
請求項１０の発明によれば、特定アドレスを複数個求め、ライト用検出回路が書き込み異常と判断した時には、ライトポインタの書き込みアドレスを複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。その結果、次に書き込まれる後続のデータが正常な位置から書き込まれ、該後続のデータは特定の書き込みアドレスでその書き込みが完了することになる。
【００４１】
請求項１１の発明によれば、請求項６又は請求項８に記載した発明の作用に加えて、リード用検出回路が読み出し異常と判断したとき、リード用アドレス変更回路はリードポインタの読み出しアドレスを特定アドレスに書き替えるようにした。その結果、次に読み出される後続のデータが正常な位置から読み出され、該後続のデータは特定の読み出しアドレスでその読み出しが完了することになる。
【００４２】
請求項１２の発明によれば、特定アドレスを複数個求め、リード用検出回路が読み出し異常と判断した時には、リードポインタの読み出しアドレスを複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。その結果、次に読み出される後続のデータが正常な位置から読み出され、該後続のデータは特定の読み出しアドレスでその読み出しが完了することになる。
【００４３】
請求項１３の発明によれば、請求項１又は請求項２に記載の発明の作用に加えて、特定アドレスを複数個求め、データの最後の書き込みが完了した時のライトポインタの書き込みアドレスが複数個の特定アドレスのいずれにも該当しない時には、ライトポインタの書き込みアドレスを複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。その結果、次に書き込まれる後続のデータが正常な位置から書き込まれ、該後続のデータは特定の書き込みアドレスでその書き込みが完了することになる。
【００４４】
請求項１４の発明によれば、請求項３又は請求項４に記載の発明の作用に加えて、特定アドレスを複数個求め、データの最後の読み出しが完了した時のリードポインタの書き込みアドレスが複数個の特定アドレスのいずれにも該当しない時には、リードポインタの読み出しアドレスを複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。その結果、次に読み出される後続のデータが正常な位置から読み出され、該後続のデータは特定の読み出しアドレスでその読み出しが完了することになる。
【００４７】
【発明の実施の形態】
図３は、ＩＥＥＥ１３９４に準拠したシステム構成を示す。パーソナルコンピュータ（以下、パソコンという）１、周辺装置としてのデジタルＶＴＲ２及び同じく周辺装置としてのカラーページプリンタ３は、ＩＥＥＥ１３９４に準拠したバス４を介して互いに接続されている。
【００４８】
図２は、パソコン１に設けたＩＥＥＥ１３９４に準拠したシステム構成を説明するためのブロック回路を示す。パソコン１は、ＩＥＥＥ１３９４用プロトコルコントローラ（以下、ＩＰＣという）１１、マイクロプロセッサユニット（以下、ＭＰＵという）１２及びＤＭＡ（Direct Memory Access）コントローラ（以下、ＤＭＡＣという）１３を備えている。ＩＰＣ１１、ＭＰＵ１２及びＤＭＡＣ１３は、それぞれ１チップの半導体集積回路装置（ＬＳＩ）にて形成されている。
【００４９】
ＩＰＣ１１は、ＭＰＵ１２及びＤＭＡＣ１３との間でデータの授受を行う。ＩＰＣ１１は、バス４を介して前記デジタルＶＴＲ２及びカラーページプリンタ３に備えられたＩＥＥＥ１３９４用プロトコルコントローラ（ＩＰＣ）と接続されている。
【００５０】
ＩＰＣ１１は、プロトコル制御回路部２１、送信用パケットデータ格納メモリ回路２２、受信用パケットデータ格納メモリ回路２３、第１の入出力インタフェース２４、及び、第２の入出力インタフェース２５を備えている。
【００５１】
第１の入出力インタフェース２４は、バス４を介してデジタルＶＴＲ２に接続され、プロトコル制御回路部２１とデジタルＶＴＲ２のＩＰＣとの間でアイソクロナス転送におけるパケット２７のやり取りを行う。第２の入出力インタフェース２５は、バス４を介してカラーページプリンタ３に接続され、プロトコル制御回路部２１とページプリンタ３のＩＰＣとの間でアイソクロナス転送におけるパケット２７のやり取りを行う。パケット２７は、図４に示すようにヘッダ２８とアイソクロナス・データ２９とで構成されている。
【００５２】
送信用パケットデータ格納メモリ回路２２は、前記ＤＭＡＣ１３に接続されている。送信用パケットデータ格納メモリ回路２２はそのＤＭＡＣ１３から出力される送信のための転送データ（パケット２７）を入力し一時保持する。送信用パケットデータ格納メモリ回路２２はプロトコル制御回路部２１に接続されている。そして、送信用パケットデータ格納メモリ回路２２は、一時保持している転送データ（パケット２７）をプロトコル制御回路部２１に出力する。
【００５３】
受信用パケットデータ格納メモリ回路２３は、前記プロトコル制御回路部２１に接続されている。受信用パケットデータ格納メモリ回路２３はその制御回路部２１から出力される受信のための転送データ（パケット２７）を入力し一時保持する。受信用パケット格納メモリ回路２３はＤＭＡＣ１３に接続されている。そして、受信用パケットデータ格納メモリ回路２３は、一時保持している転送データ（パケット２７）をＤＭＡＣ１３に出力する。
【００５４】
プロトコル制御回路部２１は、第１及び第２の入出力インタフェース２４，２５と接続されている。プロトコル制御回路部２１は、第１の入出力インタフェース２４及びバス４を介して前記デジタルＶＴＲ２のプロトコル制御回路部との間でアイソクロナス転送における転送データ（パケット２７）のやり取りを行うとともに、その入力した転送データを第２の入出力インタフェース２５を介してカラーページプリンタ３に出力する。又、プロトコル制御回路部２１は、第２の入出力インタフェース２５及びバス４を介して前記カラーページプリンタ３のプロトコル制御回路部との間でアイソクロナス転送における転送データ（パケット２７）のやり取りを行うとともに、その入力した転送データを第１の入出力インタフェース２４を介してデジタルＶＴＲ２に出力する。
【００５５】
プロトコル制御回路部２１は、ＭＰＵ１２との間で制御データの授受を行い、インタフェース２４，２５から入力した転送データが自装置（パソコン１）のために転送された転送データかどうかを解析する。そして、自装置のための転送データであると解析すると、プロトコル制御回路部２１はＭＰＵ１２からの制御データに基づいて受信用パケットデータ格納メモリ回路２３を介してＤＭＡＣ１３に転送させるようになっている。
【００５６】
又、プロトコル制御回路部２１は、ＭＰＵ１２からの制御データに基づいて送信信用パケットデータ格納メモリ回路２２に記憶されているＤＭＡＣ１３から出力される送信のための転送データ（パケット２７）を入力する。そして、プロトコル制御回路部２１は、ヘッダを付加して第１及び第２入出力インタフェース２４，２５に出力するようになっている。
【００５７】
次に、送信用パケットデータ格納メモリ回路２２について説明する。説明の便宜上、転送データ（パケット２７）の内、ヘッダ２８の付かないアイソクロナス・データ２９を一時保持する部分の回路構成について説明する。そして、本実施形態では、説明の便宜上、該アイソクロナス・データ２９は決まった２５０バイトのバイト長とする。
【００５８】
図１は、そのブロック回路を示す。図１において、送信用パケットデータ格納メモリ回路２２は、バッファメモリ３１、ライトポインタ３２、リードポインタ３３、ポインタループ設定回路３４、ライト用カウンタ３５、リード用カウンタ３６、ライト用及びリード用検出回路としての第１の検出回路３７、第２のライト用及びリード用検出回路としての第２の検出回路３８、切れ目カウンタ３９、割込み信号生成回路４０、ライト用及びリード用アドレス変更回路としてのアドレス変更回路４１、及び、制御用レジスタ４２を備えている。
【００５９】
バッファメモリ３１は、２ポートの読み出し及び書き替え可能なメモリ（ＲＡＭ）よりなり、本実施形態では説明の便宜上１０２４バイトのメモリ容量としている。該バッファメモリ３１は前記ＤＭＡＣ１３から順次出力される予め決められた２５０バイト長のアイソクロナス・データ２９が１バイトの単位で書き込まれ、その書き込まれた２５０バイト長のアイソクロナス・データ２９が１バイトの単位で読み出される。従って、読み出し及び書き込みアドレスは、それぞれ「０」〜「１０２３」までの合計１０２４アドレスを有している。又、２５０バイト長のアイソクロナス・データ２９の全てを書き込むための書き込み回数は２５０回となる。同様に、２５０バイト長のアイソクロナス・データ２９の全てを読み出すための読み出し回数は２５０回となる。
【００６０】
ライトポインタ３２は書き込みのためのアドレスカウンタであって、そのポインタ３２が示す値が書き込みアドレスとなる。ライトポインタ３２は「０」から「１０２３」の値がカウントできるポインタである。ライトポインタ３２は、１バイトのデータを書き込みするたび毎に前記ＭＰＵ１２から出力されるライト用イネーブル信号ＷＥの数を加算する。従って、ライトポインタ３２は、ライト用イネーブル信号ＷＥが入力される毎に値（書き込みアドレス）が「１」づつインクリメントされ、バッファメモリ３１のアドレスが１づつ上位アドレスにシフトされる。そして、このＭＰＵ１２からのライト用イネーブル信号ＷＥが出力される毎にＤＭＡＣ１３から２５０バイト長のアイソクロナス・データ２９の内の１バイト分のアイソクロナス・データ２９がバッファメモリ３１に出力され、この１バイト分のアイソクロナス・データ２９は、インクリメントされたライトポインタ３２の示すアドレスに書き込まれる。
【００６１】
又、ライトポインタ３２の値がカウントアップ値、即ちこの場合は「１０２３」の時、次の新たなライト用イネーブル信号ＷＥが入力されると、ライトポインタ３２は、「０」の値にリセットされる。このライトポインタ３２は、「０」にリセットされる前の値、即ちカウントアップ値を適宜変更することができるようになっている。
【００６２】
リードポインタ３３は読み出しのためのアドレスカウンタであって、そのポインタ３３が示す値が読み出しアドレスとなる。リードポインタ３３は「０」から「１０２３」の値がカウントできるカウンタである。リードポインタ３３は、１バイトのデータを読み出すたび毎にプロトコル制御回路部２１から出力されるリード用イネーブル信号ＲＥの数を加算する。従って、リードポインタ３３は、リード用イネーブル信号ＲＥが入力される毎に値（読み出しアドレス）が「１」づつインクリメントされ、バッファメモリ３１のアドレスが１づつ上位アドレスにシフトされる。そして、リードポインタ３３の値が示すバッファメモリ３１のアドレスから１バイト分のアイソクロナス・データ２９が前記プロトコル制御回路部２１に出力される。
【００６３】
又、リードポインタ３３の値がカウントアップ値、即ちこの場合は「１０２３」の時、次の新たなリード用イネーブル信号ＲＥが入力されると、リードポインタ３３は、「０」の値にリセットされる。このリードポインタ３３は、「０」にリセットされる前の値、即ちカウントアップ値を適宜変更することができるようになっている。
【００６４】
又、ライトポインタ３２及びリードポインタ３３の内容は、前記ＭＰＵ１２に出力されるようになっていて、ＭＰＵ１２はバッファメモリ３１のフル状態／エンプティ状態を把握してバッファメモリ３１へのアイソクロナス・データ２９の書き込み及び読み出しを前記プロトコル制御回路部２１を介して制御するようになっている。
【００６５】
このように、ライトポインタ３２及びリードポインタ３３の値に基づいてその書き込みアドレス及び読み出しアドレスが１アドレスづつシフトされることにより、該バッファメモリ３１はＦＩＦＯ（First In First Out）形式のデータバッファメモリとなる。
【００６６】
ポインタループ設定回路３４は、ライトポインタ３２とリードポインタ３３に接続されている。ポインタループ設定回路３４は、ライトポインタ３２及びリードポインタ３３の前記カウントアップ値を変更するデータを出力する。このカウントアップ値は、アイソクロナス・データ２９のバイト長の整数倍であって、前記バッファメモリ３１のメモリ容量を超えない最大値に設定している。このカウントアップ値の設定は、制御用レジスタ４２に設定されたデータ長変更データに基づいて行われる。
【００６７】
本実施形態では、前記１つのパケット２７におけるアイソクロナス・データ２９を説明の便宜上２５０バイト長とした。又、１バイトの単位で書き込み及び読み出しが行われるバッファメモリ３１のメモリ容量を１０２４バイトとしている。そして、２５０バイト長の整数場合であって、１０２４バイトを超えない値をカウントアップ値とすることから、カウントアップ値は「１０００（＝２５０×４＜１０２４）」となる。
【００６８】
詳述すると、ライトポインタ３２及びリードポインタ３３は、「０」を含むため、「０」から「９９９」までのカウンタとなり、カウントアップ値は「９９９」となる。従って、ライトポインタ３２は、値が「９９９」の時、新たなライト用イネーブル信号ＷＥが出力されると、「０」にリセットされる。同様に、リードポインタ３３は、値が「９９９」の時、新たなリード用イネーブル信号ＲＥが出力されると、「０」にリセットされる。そして、再び「０」からカウント動作を行う。
【００６９】
従って、バッファメモリ３１には、最大４個のパケット２７のアイソクロナス・データ２９が書き込みが可能となる。そして、アドレスが「０」が最初の書き込まれるアドレスとすると、常に１つのパケット２７の２５０バイト長のアイソクロナス・データ２９が書き込みを完了するアドレス（特定アドレス）は、「２４９」、「４９９」、「７４９」又は「９９９」のいずれかのアドレスとなる。従って、これ以外のアドレスで１つのパケット２７における２５０バイト長のアイソクロナス・データ２９の書き込みが完了した時には、何らかの原因で正常に書き込みが行われなかったことになる。
【００７０】
又、常に１つのパケット２７の２５０バイト長のアイソクロナス・データ２９が最後に読み出しを完了する特定アドレスは、「２４９」、「４９９」、「７４９」又は「９９９」のいずれかのアドレスとなる。従って、これ以外のアドレスで１つのパケット２７における２５０バイト長のアイソクロナス・データ２９の読み出しが完了した時には、何らかの原因で正常に読み出しが行われなかったことになる。
【００７１】
第１の検出回路３７は、ライトポインタ３２とリードポインタ３３と接続され、各ポインタ３２，３３のその時々の値（アドレス）を入力する。第１の検出回路３７は、前記ＭＰＵ１２からの入力データ切れ目信号ＥＮ１及び出力データ切れ目信号ＥＮ２を入力する。入力データ切れ目信号ＥＮ１は、１つのパケット２７における２５０バイトのアイソクロナス・データ２９のバッファメモリ３１への出力が完了したことをＭＰＵ１２が判断し出力する信号である。又、出力データ切れ目信号ＥＮ２は、１つのパケット２７における２５０バイトのアイソクロナス・データ２９の読み出しが完了したことＭＰＵ１２が判断し出力する信号である。
【００７２】
第１の検出回路３７は、入力データ切れ目信号ＥＮ１に応答してその時のライトポインタ３２の値（アドレス）が「２４９」、「４９９」、「７４９」又は「９９９」のいずれかの特定アドレスとなるかどうか判断する。そして、一致するアドレスがある場合には、その書き込みが完了したパケット２７における２５０バイト長のアイソクロナス・データ２９は正常に書き込まれたと判定する。
【００７３】
反対に、一致しない場合には、その書き込みが完了したパケット２７における２５０バイト長のアイソクロナス・データ２９は正常に書き込まれなかった、即ち異常書き込みがなされたと判断する。異常書き込みと判断した時には、第１の検出回路３７は第１書き込み異常信号Ｓ１を出力する。
【００７４】
又、第１の検出回路３７は、出力データ切れ目信号ＥＮ２に応答してその時のリードポインタ３３の値（アドレス）が「２４９」、「４９９」、「７４９」又は「９９９」のいずれかの特定アドレスとなるかどうか判断する。そして、一致する特定アドレスがある場合には、その読み出しが完了したパケット２７における２５０バイト長のアイソクロナス・データ２９は正常に読み出されたと判定する。
【００７５】
反対に、一致しない場合には、その読み出しが完了したパケット２７における２５０バイトのアイソクロナス・データ２９は正常に読み出されなかった、即ち異常読み出しがなされたと判断する。異常読み出しと判断した時には、第１の検出回路３７は第１読み出し異常信号Ｓ２を出力する。
【００７６】
前記入力データ切れ目信号ＥＮ１及び出力データ切れ目信号ＥＮ２は、切れ目カウンタ３９に出力される。切れ目カウンタ３９は、制御用レジスタ４２の分割ブロックデータに基づいてカウントアップ値が設定される。そして、例えば分割ブロックデータが「１」の時、カウントアップ値は「１」となり、切れ目カウンタ３９は入力データ切れ目信号ＥＮ１が１つ出力される毎に第１検出信号Ｎ１を出力する。同様に、切れ目カウンタ３９は、出力データ切れ目信号ＥＮ２が１つ出力される毎に第２検出信号Ｎ２を出力する。
【００７７】
ライト用カウンタ３５は、前記ライト用イネーブル信号ＷＥを入力し前記書き込み回数をカウントする。本実施形態では、１つのパケット２７におけるアイソクロナス・データ２９の２５０バイト長に対応して２５０個目のライト用イネーブル信号ＷＥを入力すると、第１ピリオド信号Ｐ１を出力するとともにリセットし再び最初から２５０個のライト用イネーブル信号ＷＥをカウントする。従って、ライト用カウンタ３５は、アイソクロナス・データ２９が正常にバッファメモリ３１に書き込まれている状態では、１パケット２７における２５０バイト長のアイソクロナス・データ２９の全てが書き込まれる毎に第１ピリオド信号Ｐ１が出力されることになる。
【００７８】
リード用カウンタ３６は、前記リード用イネーブル信号ＲＥを入力し前記読み出し回数をカウントする。本実施形態では、１つのパケット２７におけるアイソクロナス・データ２９の２５０バイト長に対応して２５０個目のリード用イネーブル信号ＲＥを入力すると、第２ピリオド信号Ｐ２を出力するとともにリセットし再び最初から２５０個のリード用イネーブル信号ＲＥをカウントする。従って、リード用カウンタ３６は、アイソクロナス・データ２９が正常にバッファメモリ３１から読み出されている状態では、１つのパケット２７における２５０バイト長のアイソクロナス・データ２９の全てが読み出される毎に第２ピリオド信号Ｐ２が出力されることになる。
【００７９】
第２の検出回路３８は前記ライト用及びリード用カウンタ３５，３６に接続され、各カウンタ３５，３６からの第１及び第２ピリオド信号Ｐ１，Ｐ２を入力する。又、第２の検出回路３８は切れ目カウンタ３９に接続され、前記第１及び第２検出信号Ｎ１，Ｎ２を入力する。
【００８０】
第２の検出回路３８は、第１ピリオド信号Ｐ１が出力されると同時に、前記切れ目カウンタ３９の第１検出信号Ｎ１が出力されたかどうか判断する。そして、同時である時、その書き込みが完了したパケット２７における２５０バイト長のアイソクロナス・データ２９は正常に書き込まれたと判定する。反対に、同時でない場合には、その書き込みが完了したパケット２７における２５０バイト長のアイソクロナス・データ２９は正常に書き込まれなかった、即ち異常書き込みがなされたと判断する。異常書き込みと判断した時には、第２の検出回路３８は第２書き込み異常信号Ｓ３を出力する。
【００８１】
第２の検出回路３８は、第２ピリオド信号Ｐ２が出力されると同時に、前記切れ目カウンタ３９の第２検出信号Ｎ２が出力されたかどうか判断する。そして、同時である時、その読み出しが完了したパケット２７における２５０バイトのアイソクロナス・データ２９は正常に読み出されたと判定する。反対に、同時でない場合には、その書き込みが完了したパケット２７における２５０バイトのアイソクロナス・データ２９は正常に読み出されなかった、即ち異常読み出しがなされたと判断する。異常読み出しと判断した時には、第２の検出回路３８は第２読み出し異常信号Ｓ４を出力する。
【００８２】
割込み信号生成回路４０は、第１の検出回路３７と接続し、該第１の検出回路３７からの第１書き込み異常信号Ｓ１及び第１読み出し異常信号Ｓ２を入力する。割込み信号生成回路４０は、第１書き込み異常信号Ｓ１に応答して第１割込み信号Ｔ１を出力するとともに、第１読み出し異常信号Ｓ２に応答して第２割込み信号Ｔ２をアドレス変更回路４１及びＭＰＵ１２に出力するようになっている。
【００８３】
又、割込み信号生成回路４０は、第２の検出回路３８と接続し、該第２の検出回路３８からの第２書き込み異常信号Ｓ３及び第２読み出し異常信号Ｓ４を入力する。割込み信号生成回路４０は、第２書き込み異常信号Ｓ３に応答して第１割込み信号Ｔ１を、又、第２読み出し異常信号Ｓ４に応答して第２割込み信号Ｔ２をアドレス変更回路４１及びＭＰＵ１２に出力するようになっている。
【００８４】
アドレス変更回路４１は、第１割込み信号Ｔ１に応答して、その書き込みが完了したパケット２７における２５０バイトのアイソクロナス・データ２９は正常に書き込まれなかった状態がバッファメモリ３１に発生したとして、その時のライトポインタ３２の値を読み出す。そして、アドレス変更回路４１は、ライトポインタ３２の値を強制的に変更する処理を実行する。変更する値（アドレス）は、「２４９」、「４９９」、「７４９」又は「９９９」のいずれかの特定アドレスにする。詳述すると、この４つの特定アドレスの中からその時のライトポインタ３２の値（アドレス）に最も近い特定アドレスが選択され、その選択された特定アドレスにライトポインタ３２の値を変更する。
【００８５】
例えば、ライトポインタ３２の値（アドレス）が「５１２」のとき、何らかの原因で例えばライト用イネーブル信号ＷＥにノイズが入り、１つのパケット２７におけるアイソクロナス・データ２９が２５０バイト長以上のデータが余分にバッファメモリ３１のアドレス「２５０」〜「５１２」までに書き込まれたと判断する。即ち、「５００」〜「５１２」までのアドレスに余分な１３バイトのデータが書き込まれていると判断する。従って、後続のパケット２７の２５０バイト長のアイソクロナス・データ２９は「５１３」のアドレスから書き込まれることになる。
【００８６】
そこで、これを防止し、「５００」〜「７４９」のアドレスに後続のパケット２７の２５０バイト長のアイソクロナス・データ２９を書き込むことができるように、アドレス変更回路４１はライトポインタ３２の値を「４９９」と変更するようにしている。
【００８７】
又、アドレス変更回路４１は、第２割込み信号Ｔ２に応答して、その読み出しが完了したパケット２７における２５０バイト長のアイソクロナス・データ２９は正常に読み出されなかった状態がバッファメモリ３１に発生したとして、その時のリードポインタ３３を読み出す。そして、アドレス変更回路４１は、リードポインタ３３の値を強制的に変更する処理を実行する。変更する値（アドレス）は、「２４９」、「４９９」、「７４９」又は「９９９」のいずれかの特定アドレスにする。詳述すると、この４つの特定アドレスの中からその時のリードポインタ３３の値（アドレス）に最も近い特定アドレスが選択され、その選択された特定アドレスにリードポインタ３３の値を変更する。
【００８８】
例えば、リードポインタ３３の値（アドレス）が「７３０」のとき、何らかの原因で例えばリード用イネーブル信号ＲＥにノイズが入り、１つのパケット２７におけるアイソクロナス・データ２９が２５０バイト未満のデータであってバッファメモリ３１のアドレス「５００」〜「７３０」までのデータしか読み出されなかったと判断する。即ち、「７３１」〜「７４９」までのアドレスにある１９バイトのデータが読み出されなかったと判断する。従って、後続のパケット２７の２５０バイト長のアイソクロナス・データ２９は「７３１」のアドレスから始まるとしてその「７３１」のアドレスから読み出されることになる。
【００８９】
そこで、これを防止し、「７５０」〜「９９９」のアドレスにある後続のパケット２７の２５０バイト長のアイソクロナス・データ２９が読み出すことができるように、アドレス変更回路４１はリードポインタ３２の値を「７４９」と変更するようにしている。
【００９０】
制御用レジスタ４２は各種のモード設定用のデータがＭＰＵ１２により記録されるレジスタである。モード設定のデータには、第１の有効データ、第２の有効データ、バイト長変更データ、分割データ等がある。
【００９１】
第１の有効データは、第１の検出回路３７を使用するかどうかを設定するデータであって、使用する内容が設定されている時には、該第１の検出回路３７がその内容に基づいて比較動作可能な状態になる。第２の有効データは、第２の検出回路３８を使用するかどうかを設定するデータであって、使用する内容が設定されている時には該第２の検出回路３８がその内容に基づいて比較動作可能な状態になる。
【００９２】
バイト長変更データは、１つのパケット２７のアイソクロナス・データ２９のバイト長を例えば２５０バイト長から１００バイト長にと種々変更するためデータある。そして、ポインタループ設定回路３４はライトポインタ３２及びリードポインタ３３のカウントアップ値を、そのバイト長変更データのバイト長の整数倍であって、前記バッファメモリ３１のメモリ容量を超えない値に設定している。
【００９３】
従って、例えば、バイト長変更データが「１５０バイト長」であるとすると、カウントアップ値は１バイトの単位で書き込み及び読み出しが行われる１０２４バイトのメモリ容量のバッファメモリ３１に対して「９００（＝１５０×６＜１０２４）」となる。即ち、ライトポインタ３２及びリードポインタ３３は、「０」から「８９９」のカウントアップ値までのカウンタとなる。
【００９４】
従って、バッファメモリ３１には、最大４個の１５０バイト長のパケット２７のアイソクロナス・データ２９が書き込みが可能となる。そして、アドレスが「０」が最初の書き込まれるアドレスとするとき、常に１つのパケット２７の１５０バイト長のアイソクロナス・データ２９が書き込みを完了する特定アドレスは、「１４９」、「２９９」、「４４９」、「５９９」、「７４９」又は「８９９」のいずれかのアドレスとなる。従って、これ以外のアドレスで１つのパケット２７における１５０バイト長のアイソクロナス・データ２９の書き込みが完了した時には、何らかの原因で正常に書き込みが行われなかったことになる。
又、常に１つのパケット２７の２５０バイトのアイソクロナス・データ２９が最後に読み出しを完了する特定アドレスは、「１４９」、「２９９」、「４４９」、「５９９」、「７４９」又は「８９９」のいずれかのアドレスとなる。従って、これ以外のアドレスで１つのパケット２７における１５０バイト長のアイソクロナス・データ２９の読み出しが完了した時には、何らかの原因で正常に読み出しが行われなかったことになる。
【００９５】
さらにこの場合には、ライト用及びリード用カウンタ３５，３６は、それぞれ１５０個のライト用及びリード用イネーブル信号ＷＥ，ＲＥをそれぞれ入力すると第１及び第２ピリオド信号Ｐ１，Ｐ２を出力するようになっている。
【００９６】
分割データは、複数のデータ・ブロックをまとめて１つのアイソクロナス転送のためのパケット２７を作る場合に使用される。尚、この場合、バイト長変更データも合わせて変更される。
【００９７】
例えば、５０バイト長のデータ・ブロックが５個まとめて１つのパケット２７の２５０バイト長のアイソクロナス・データ２９する場合、及び、１つのパケット２７の２５０バイト長のアイソクロナス・データ２９を５個の５０バイト長のデータ・ブロックに分割して読み出す場合、分割データは「５」となる。この分割データは前記切れ目カウンタ３９のカウントアップ値「５」としてセットされる。そして、ＭＰＵ１２は、各データ・ブロックの最後の１バイトのデータが書き込みが完了する毎に入力データ切れ目信号ＥＮ１を出力するようになっている。従って、入力データ切れ目信号ＥＮ１を５個数える毎に、切れ目カウンタ３９は、第１検出信号値Ｎ１を出力することになる。
【００９８】
そして、ライト用カウンタ３５は、２５０個目のライト用イネーブル信号ＷＥが入力されると、即ち５個のデータ・ブロックの書き込み（５０×５バイト長のデータの書き込み）が完了すると、第１ピリオド信号Ｐ１を第２の検出回路３８に出力する。又、切れ目カウンタ３９は５個目の入力データ切れ目信号ＥＮ１を入力すると、第１検出信号Ｎ１を第２の検出回路３８に出力する。第２の検出回路３８は、この第１ピリオド信号Ｐ１と第１検出信号Ｎ１が同時に入力された時、１つのパケット２７の２５０バイト長のアイソクロナス・データ２９をつくるための５個のデータ・ブロックが正常に書き込まれたと判定する。反対に、同時でない場合には、第２の検出回路３８は、５個のデータ・ブロックが正常に書き込まれなかった、即ち異常書き込みがなされたと判断する。異常書き込みと判断した時には、第２の検出回路３８は第２書き込み異常信号Ｓ３を出力する。
【００９９】
又、１つのパケット２７の２５０バイト長のアイソクロナス・データ２９を５個の５０バイト長のデータ・ブロックに分割して読み出す場合も同様である。ＭＰＵ１２は各データ・ブロックの最後の１バイトのデータが読み出しが完了する毎に出力データ切れ目信号ＥＮ２を出力する。そして、その切れ目信号ＥＮ２を５個数える毎に、切れ目カウンタ３９は第２検出信号値Ｎ２を出力することになる。
【０１００】
そして、リード用カウンタ３６は、２５０個目のリード用イネーブル信号ＲＥを入力すると、即ち５個のデータ・ブロックの読み出し（５０×５バイト長のデータの書き込み）が完了すると、第２ピリオド信号Ｐ２を第２の検出回路３８に出力する。又、切れ目カウンタ３９は５個目の出力データ切れ目信号ＥＮ２を入力すると、第２検出信号Ｎ２を第２の検出回路３８に出力する。第２の検出回路３８は、この第２ピリオド信号Ｐ２と第２検出信号Ｎ２が同時に入力された時、５個のデータ・ブロックが正常に読み出されたと判定する。反対に、同時でない場合には、第２の検出回路３８は、５個のデータ・ブロックが正常に読み出されなかった、即ち異常読み出しが生じたと判断する。異常読み出しと判断した時には、第２の検出回路３８は第２読み出し異常信号Ｓ４を出力する。
【０１０１】
尚、受信用パケットデータ格納メモリ回路２３も上記した送信用パケットデータ格納メモリ回路２２と同様な回路構成であり容易に理解されるため、その説明は省略する。
【０１０２】
次に、上記のように構成された送信用パケットデータ格納メモリ回路２２の作用について説明する。
（Ａ）２５０バイト長のアイソクロナス・データ２９の書き込み。
【０１０３】
制御用レジスタ４２の第１及び第２の有効データは第１の検出回路３７及び第２の検出回路３８が共に動作する内容に設定されている。又、制御用レジスタ４２のバイト長変更データは２５０バイト長に設定されている。さらに、制御用レジスタ４２の分割データは「１」になっている。尚、説明の便宜上、ライトポインタ３２の値（アドレス）は「２４９」を示している。
【０１０４】
２５０バイト長のアイソクロナス・データ２９における最初の１バイトのデータがＤＭＡＣ１３から出力されるとともに、ＭＰＵ１２から最初のライト用イネーブル信号ＷＥが出力されると、ライトポインタ３２は最初のライト用イネーブル信号ＷＥに応答して「２４９」から「２５０」となる。最初の１バイトのデータはバッファメモリ３１のアドレス「２５０」に書き込まれる。以後、ＭＰＵ１２から新たなライト用イネーブル信号ＷＥが入力される毎にライトポインタ３２の値がインクリメントされ、アドレスが１アドレスに上位にシフトしそのシフトしたの新たなアドレスにアイソクロナス・データ２９が１バイトづつ書き込まれていく。この書き込みとともに、ライト用カウンタ３５は、ライト用イネーブル信号ＷＥをカウントしている。
【０１０５】
やがて、最初のライト用イネーブル信号ＷＥから数えて２５０個目のライト用イネーブル信号ＷＥが出力されると、ライトポインタ３２の値が「４９９」となり、２５０バイト長のアイソクロナス・データ２９における最後の１バイトのデータがバッファメモリ３１のアドレス「４９９」に書き込まれる。
【０１０６】
２５０個目のライト用イネーブル信号ＷＥが出力されると、ＭＰＵ１２から入力データ切れ目信号ＥＮ１が第１の検出回路３７に出力される。第１の検出回路３７は、その切れ目信号ＥＮ１に応答してその時のライトポインタ３２の値が「２４９」、「４９９」、「７４９」又は「９９９」のいずれの特定アドレスに該当するかどうか判断する。そして、正常なライト用イネーブル信号ＷＥに基づいて２５０バイト長のアイソクロナス・データ２９が正常に書き込まれたときは、ライトポインタ３２の値は「４９９」となり４個の特定アドレスのうちの１つと一致するため、第１の検出回路３７は正常に書き込まれたと判定する。
【０１０７】
反対に、一致しない場合には、第１の検出回路３７は異常書き込みがなされたと判断して、第１書き込み異常信号Ｓ１を割込み信号生成回路４０に出力する。割込み信号生成回路４０は第１書き込み異常信号Ｓ１に応答して第１割込み信号Ｔ１をアドレス変更回路４１及びＭＰＵ１２に出力するようになっている。アドレス変更回路４１は、第１割込み信号Ｔ１に応答して２５０バイト長のアイソクロナス・データ２９が正常に書き込まれなかった状態がバッファメモリ３１に発生したとして、その時のライトポインタ３２の値を読み出す。このとき、何らかの原因で例えばライト用イネーブル信号ＷＥにノイズが入り、ライトポインタ３２の値が例えば「５１２」であって、「５００」〜「５１２」までのアドレスに余分な１３バイトのデータが書き込まれているとすると、アドレス変更回路４１はライトポインタ３２の値を「４９９」と変更する。
【０１０８】
従って、後続のパケット２７の２５０バイト長のアイソクロナス・データ２９は、バッファメモリ３１の「５００」アドレスから順に書き込むことができる。その結果、バッファメモリ３１の「５００」アドレスから書き込まれたアイソクロナス・データ２９は、読み出されるときには先頭から順に読み出される。
【０１０９】
又、２５０個目のライト用イネーブル信号ＷＥが出力されると、ライト用カウンタ３５から第２の検出回路３８に第１ピリオド信号Ｐ１が出力される。又、前記ＭＰＵ１２から最初の入力データ切れ目信号ＥＮ１に応答して切れ目カウンタ３９から第１検出信号Ｎ１が第２の検出回路３８に出力される。この時、第２の検出回路３８は第１ピリオド信号Ｐ１と第１検出信号Ｎ１が同時に出力されたとき正常に書き込まれたと判定する。
【０１１０】
反対に、ライト用イネーブル信号ＷＥに書き込みに影響を及ぼすノイズが発生してライト用カウンタ３５のカウント動作が誤動作することにより、同時でない場合には、第２の検出回路３８は、異常書き込みがなされたと判断する。異常書き込みと判断した時には、第２の検出回路３８は第２書き込み異常信号Ｓ３を割込み信号生成回路４０に出力する。割込み信号生成回路４０は第２書き込み異常信号Ｓ３に応答して第１割込み信号Ｔ１をアドレス変更回路４１及びＭＰＵ１２に出力する。
【０１１１】
アドレス変更回路４１は第１割込み信号Ｔ１に応答して上記と同様な動作を実行して後続のパケット２７の２５０バイトのアイソクロナス・データ２９が予め定められた先頭アドレスから順に書き込まれるとともに読み出されるようにライトポインタ３２の値を変更する。尚、この場合、第１の検出回路３７と第２の検出回路３８とを使って異常書き込みを検出するようにしたが、いずれか一方を使用して実施してもよい。
【０１１２】
（Ｂ）２５０バイト長のアイソクロナス・データ２９の読み出し。
制御用レジスタ４２の各内容は上記と同じ内容に設定されている。又、説明の便宜上、リードポインタ３３の値（アドレス）は「７４９」を示している。
【０１１３】
プロトコル制御回路部２１から最初のリード用イネーブル信号ＲＥが出力されると、リードポインタ３３は最初のリード用イネーブル信号ＲＥに応答して「７４９」から「７５０」となる。最初の１バイトのデータはバッファメモリ３１のアドレス「７５０」から読み出される。以後、プロトコル制御回路部２１から新たなリード用イネーブル信号ＲＥが入力される毎にリードポインタ３３の値がインクリメントされ、アドレスが上位の１アドレス毎にシフトしバッファメモリ３１の新たなアドレスにあるアイソクロナス・データ２９が１バイトづつ読み出されていく。この読み出しとともに、リード用カウンタ３６は、リード用イネーブル信号ＲＥをカウントしている。
【０１１４】
やがて、最初のリード用イネーブル信号ＲＥから数えて２５０個目のリード用イネーブル信号ＲＥが出力されると、リードポインタ３３の値が「９９９」となり、２５０バイト長のアイソクロナス・データ２９における最後の１バイトのデータがバッファメモリ３１のアドレス「９９９」から読み出される。
【０１１５】
２５０個目のリード用イネーブル信号ＲＥが出力されると、ＭＰＵ１２から出力データ切れ目信号ＥＮ２が第１の検出回路３７に出力される。第１の検出回路３７はその切れ目信号ＥＮ２に応答してその時のリードポインタ３３の値が「２４９」、「４９９」、「７４９」又は「９９９」のいずれの特定アドレスに該当するかどうか判断する。そして、正常なリード用イネーブル信号ＲＥに基づいて２５０バイト長のアイソクロナス・データ２９が正常に読み出されたときは、リードポインタ３３の値は「９９９」となり４個のうちの１つの比較対象のアドレスと一致するため、第１の検出回路３７は正常に読み出されたと判定する。
【０１１６】
反対に、一致しない場合には、第１の検出回路３７は異常読み出しがなされたと判断して、第１読み出し異常信号Ｓ２を割込み信号生成回路４０に出力する。割込み信号生成回路４０は第１読み出し異常信号Ｓ２に応答して第２割込み信号Ｔ２をアドレス変更回路４１及びＭＰＵ１２に出力するようになっている。アドレス変更回路４１は、第２割込み信号Ｔ２に応答して２５０バイト長のアイソクロナス・データ２９が正常に読み出されなかった状態がバッファメモリ３１に発生したとして、その時のリードポインタ３３の値を読み出す。このとき、何らかの原因で例えばリード用イネーブル信号ＲＥにノイズが入り、リードポインタ３３の値が「１０」であって、「０」から「１０」までのアドレスに書き込まれている後続のパケット２７のアイソクロナス・データ２９が読み出されたとすると、アドレス変更回路４１はリードポインタ３３の値を「９９９」と変更する。
【０１１７】
従って、後続のパケット２７の２５０バイト長のアイソクロナス・データ２９は、バッファメモリ３１の「０」アドレスから順に読み出される。その結果、バッファメモリ３１の「０」アドレスから書き込まれたアイソクロナス・データ２９は、先頭から順に読み出される。
【０１１８】
又、２５０個目のリード用イネーブル信号ＲＥが出力されると、リード用カウンタ３６から第２の検出回路３８に第２ピリオド信号Ｐ２が出力される。又、前記ＭＰＵ１２から最初の出力データ切れ目信号ＥＮ２に応答して切れ目カウンタ３９から第２検出信号Ｎ２が第２の検出回路３８に出力される。第２の検出回路３８は第２ピリオド信号Ｐ２と第２検出信号Ｎ２が同時に出力されたとき正常に読み出されたと判定する。
【０１１９】
反対に、リード用イネーブル信号ＲＥに読み出しに影響を及ぼすノイズが発生してリード用カウンタ３６のカウント動作が誤動作することにより、同時でない場合には、第２の検出回路３８は、異常読み出しがなされたと判断する。異常読み出しと判断した時には、第２の検出回路３８は第２読み出し異常信号Ｓ４を割込み信号生成回路４０に出力する。割込み信号生成回路４０は第２読み出し異常信号Ｓ４に応答して第２割込み信号Ｔ２をアドレス変更回路４１及びＭＰＵ１２に出力する。
【０１２０】
アドレス変更回路４１は第２割込み信号Ｔ２に応答して上記と同様な動作を実行して次の新たなパケット２７の２５０バイト長のアイソクロナス・データ２９は予め定められた先頭アドレスから順に読み出されるようにリードポインタ３３の値を変更する。尚、この場合、第１の検出回路３７と第２の検出回路３８とを使って異常書き込みを検出するようにしたが、いずれか一方を使用して実施してもよい。
【０１２１】
（Ｃ）データ・ブロックの書き込み。
制御用レジスタ４２の第１及び第２の有効データは第１の検出回路３７及び第２の検出回路３８が共に動作する内容に設定されている。又、制御用レジスタ４２のバイト長変更データは５０バイト長に設定されている。さらに、制御用レジスタ４２の分割データは「５」になっている。即ち、５０バイト長のデータ・ブロックが５個まとめて１つのパケット２７の２５０バイト長のアイソクロナス・データ２９として書き込む場合である。
【０１２２】
従って、ポインタループ設定回路３４はライトポインタ３２及びリードポインタ３３のカウントアップ値を、「１０００（＝５０×２０＜１０２４）」とする。即ち、ライトポインタ３２及びリードポインタ３３は、「０」から「９９９」のカウントアップ値までのカウンタとなる。そして、複数個の５０バイト長のデータブロックがそれぞれ書き込みを完了するバッファメモリ３１の特定アドレスは、「４９」、「９９」、「１４９」、「１９９」、「１４９」、「１９９」……「８９９」、「９４９」又は「９９９」の２０種類のいずれかのアドレスとなる。尚、説明の便宜上、ライトポインタ３２の値（アドレス）は「２４９」を示している。
【０１２３】
１個目の５０バイト長のデータブロックにおける最初の１バイトのデータがＤＭＡＣ１３から出力されるとともに、ＭＰＵ１２から最初のライト用イネーブル信号ＷＥが出力されると、上記と同様に最初の１バイトのデータはバッファメモリ３１のアドレス「２５０」に書き込まれる。以後、ＭＰＵ１２から新たなライト用イネーブル信号ＷＥが入力される毎にライトポインタ３２の値がインクリメントされ、アドレスが１アドレス上位にシフトしそのシフトした新たなアドレスにデータブロックが１バイトづつ書き込まれていく。この書き込みとともに、ライト用カウンタ３５は、ライト用イネーブル信号ＷＥをカウントしている。
【０１２４】
最初のライト用イネーブル信号ＷＥから数えて５０個目のライト用イネーブル信号ＷＥが出力されると、上記と同様に、１個目の５０バイト長のデータブロックにおける最後の１バイトのデータがバッファメモリ３１のアドレス「２９９」に書き込まれる。
【０１２５】
５０個目のライト用イネーブル信号ＷＥが出力されると、ＭＰＵ１２から入力データ切れ目信号ＥＮ１が出力され、第１の検出回路３７はその切れ目信号ＥＮ１に応答してその時のライトポインタ３２の値が前記２０種類のアドレスのいずれかにアドレスに該当するかどうか判断する。そして、正常なライト用イネーブル信号ＷＥに基づいて５０バイト長のデータブロックが正常に書き込まれたときは、ライトポインタ３２の値は「２９９」となり２０種類の特定アドレスのうちの１つと一致するため、第１の検出回路３７は正常に書き込まれたと判定する。
【０１２６】
反対に、一致しない場合には、第１の検出回路３７は異常書き込みがなされたと判断して、前記と同様に、第１書き込み異常信号Ｓ１が割込み信号生成回路４０に出力される。割込み信号生成回路４０は第１書き込み異常信号Ｓ１に応答して第１割込み信号Ｔ１をアドレス変更回路４１及びＭＰＵ１２に出力する。アドレス変更回路４１は、第１割込み信号Ｔ１に応答して５０バイト長のデータブロックが正常に書き込まれなかった状態がバッファメモリ３１に発生したとして、その時のライトポインタ３２を読み出す。このとき、何らかの原因で例えばライト用イネーブル信号ＷＥにノイズが入り、ライトポインタ３２の値が「３１２」であって、「３００」から「３１２」までのアドレスに余分な１３バイトのデータが書き込まれているとすると、アドレス変更回路４１はライトポインタ３２の値を「２９９」と変更する。
【０１２７】
従って、次の２個目の５０バイト長のデータブロックは、バッファメモリ３１の「３００」アドレスから順に書き込むことができる。その結果、バッファメモリ３１の「３００」アドレスから書き込まれた２個目のデータブロックは、読み出されるときには先頭から順に読み出される。
【０１２８】
以後、２個目〜５個目のデータブロックについも同様に判定が行われ異常書き込みが行われれば同様にライトポインタ３２の値を変更する。
又、２５０個目のライト用イネーブル信号ＷＥが出力されると、即ち、５個目のデータブロックの最後の１バイトを書き込むためのライト用イネーブル信号ＷＥが出力されると、ライト用カウンタ３５から第２の検出回路３８に第１ピリオド信号Ｐ１が出力される。又、前記ＭＰＵ１２から５個目の入力データ切れ目信号ＥＮ１に応答して切れ目カウンタ３９から第１検出信号Ｎ１が第２の検出回路３８に出力される。第２の検出回路３８は第１ピリオド信号Ｐ１と第１検出信号Ｎ１が同時に出力されたとき正常に書き込まれたと判定する。
【０１２９】
反対に、ライト用イネーブル信号ＷＥに書き込みに影響を及ぼすノイズが発生してライト用カウンタ３５のカウント動作が誤動作することにより、同時でない場合には、第２の検出回路３８は、異常書き込みがなされたと判断する。異常書き込みと判断した時には、第２の検出回路３８は第２書き込み異常信号Ｓ３を割込み信号生成回路４０に出力する。割込み信号生成回路４０は第２書き込み異常信号Ｓ３に応答して第１割込み信号Ｔ１をアドレス変更回路４１及びＭＰＵ１２に出力する。
【０１３０】
アドレス変更回路４１は第１割込み信号Ｔ１に応答して上記と同様な動作を実行して次の新たな組の１個目のデータブロックのデータが読み出されるときに予め定められた先頭アドレスから順に読み出されるようにライトポインタ３２の値を変更する。尚、この場合、第１の検出回路３７と第２の検出回路３８とを使って異常書き込みを検出するようにしたが、いずれか一方を使用して実施してもよい。
【０１３１】
（Ｄ）データ・ブロックの読み出し。
制御用レジスタ４２の各内容は上記データブロックと同じとする。尚、説明の便宜上、リードポインタ３３の値（アドレス）は「４９９」を示している。
【０１３２】
プロトコル制御回路部２１から最初のリード用イネーブル信号ＲＥが出力されると、リードポインタ３３は最初のリード用イネーブル信号ＲＥに応答して「４９９」から「５００」となる。最初の１バイトのデータはバッファメモリ３１のアドレス「５００」から読み出される。以後、プロトコル制御回路部２１から新たなリード用イネーブル信号ＲＥが入力される毎に前記と同様にバッファメモリ３１の新たなアドレスにあるデータブロックとなるデータが１バイトづつ読み出されていく。この読み出しとともに、リード用カウンタ３６は、リード用イネーブル信号ＲＥをカウントしている。
【０１３３】
やがて、最初のリード用イネーブル信号ＲＥから数えて５０個目のリード用イネーブル信号ＲＥが出力されると、リードポインタ３３の値が「５４９」となり、５０バイト長のデータブロックとなる最後の１バイトのデータがバッファメモリ３１のアドレス「５４９」から読み出される。
【０１３４】
５０個目のリード用イネーブル信号ＲＥが出力されると、ＭＰＵ１２から出力データ切れ目信号ＥＮ２を第１の検出回路３７に出力する。第１の検出回路３７はその切れ目信号ＥＮ２に応答してその時のリードポインタ３３の値が前記２０種類の特定アドレスの中で該当するアドレスとなるかどうか判断する。そして、正常なリード用イネーブル信号ＲＥに基づいて５０バイト長のデータブロックとなるデータが正常に読み出されたときは、リードポインタ３３の値は「５４９」となり２０種類の特定アドレスうちの１つと一致するため、第１の検出回路３７は正常に読み出されたと判定する。
【０１３５】
反対に、一致しない場合には、第１の検出回路３７は異常読み出しがなされたと判断して、前記と同様に、第１読み出し異常信号Ｓ２を出力する。割込み信号生成回路４０は第１読み出し異常信号Ｓ２に応答して第２割込み信号Ｔ２をアドレス変更回路４１及びＭＰＵ１２に出力する。アドレス変更回路４１は、第２割込み信号Ｔ２に応答して５０バイト長のデータブロックとなるデータが正常に読み出されなかった状態がバッファメモリ３１に発生したとして、その時のリードポインタ３３を読み出す。このとき、何らかの原因で例えばリード用イネーブル信号ＲＥにノイズが入り、リードポインタ３３の値が「５１０」であって、「５００」から「５１０」までのアドレスに書き込まれている後続のデータブロックのためのデータが読み出されたとすると、アドレス変更回路４１はリードポインタ３３の値を「５１０」から「４９９」と変更する。
【０１３６】
従って、後続の５０バイト長のデータブロックのためのデータは、バッファメモリ３１の「５００」アドレスから順に読み出される。その結果、バッファメモリ３１の「５００」アドレスから書き込まれた２個目のデータブロックのためのデータは、先頭から順に読み出される。
【０１３７】
以後、２個目〜５個目のデータブロックのためのデータの読み出しについも同様に判定が行われ異常読み出しが行われれば同様にリードポインタ３３の値を変更する。
【０１３８】
そして、２５０個目のリード用イネーブル信号ＲＥが出力されると、即ち、５個目のデータブロックにおける最後の１バイトのデータの読み出しのためのリード用イネーブル信号ＲＥが出力されると、リード用カウンタ３６から第２の検出回路３８に第２ピリオド信号Ｐ２が出力される。又、前記ＭＰＵ１２から５個目の出力データ切れ目信号ＥＮ２に応答して切れ目カウンタ３９から第２検出信号Ｎ２が第２の検出回路３８に出力される。第２の検出回路３８は第２ピリオド信号Ｐ２と第２検出信号Ｎ２が同時に出力されたとき正常に書き込まれたと判定する。
【０１３９】
反対に、リード用イネーブル信号ＲＥに読み出しに影響を及ぼすノイズが発生してリード用カウンタ３６のカウント動作が誤動作することにより、同時でない場合には、第２の検出回路３８は、異常書き込みがなされたと判断する。異常書き込みと判断した時には、第２の検出回路３８は第２読み出し異常信号Ｓ４を割込み信号生成回路４０に出力する。割込み信号生成回路４０は第２読み出し異常信号Ｓ４に応答して第２割込み信号Ｔ２をアドレス変更回路４１及びＭＰＵ１２に出力する。
【０１４０】
アドレス変更回路４１は第２割込み信号Ｔ２に応答して上記と同様な動作を実行して次の新たな組の１個目のデータブロックのデータが読み出されるときに予め定められた先頭アドレスから順に読み出されるようにリードポインタ３３の値を変更する。尚、この場合、第１の検出回路３７と第２の検出回路３８とを使って異常書き込みを検出するようにしたが、いずれか一方を使用して実施してもよい。
【０１４１】
次に、上記のように構成した、実施形態の特徴を以下に説明する。
（１）上記実施形態によれば、ポインタループ設定回路３４によりライトポインタ３２のカウントアップ値を、２５０バイトのデータ長の整数倍であってバッファメモリ３１の１０２４バイトの記憶容量を超さない複数個の中の最大の値をカウントアップ値とし、この２５０バイトとデータ長が決められた各アイソクロナス・データ２９をライトポインタ３２の書き込みアドレスに従ってバッファメモリ３１に書き込む場合、正常に書き込まれた時には、複数個存在する特定のアドレスのいずれかでその書き込みが完了するようにした。そして、アイソクロナス・データ２９の書き込みが完了した時にライトポインタ３２のその時の書き込みアドレスが特定アドレスあるかどうかを第１の検出回路３７にて判断させるようにしたので、書き込み異常かどうか判断することができる。
【０１４２】
（２）上記実施形態によれば、ライト用カウンタ３５にて２５０バイトのアイソクロナス・データ２９の書き込み回数をカウントさせるとともに、予め定まった正常の書き込み回数の書き込みが行われた時に第１ピリオド信号Ｐ１を出力させるようにした。そして、第２の検出回路３８にて、２５０バイトのアイソクロナス・データ２９の最後の書き込みの完了を示す切れ目信号ＥＮ１に応答して前記ライト用カウンタ３５から第１ピリオドＰ１の有無を判断させるようにしたので、上記（１）と同様に書き込み異常が生じたかどうか判断することができる。そして、第１の検出回路３７と第２の検出回路３８を同時に使用することにより、より精度の高い書き込み異常の検出ができる。
【０１４３】
（３）上記実施形態によれば、ポインタループ設定回路３４によりリードポインタ３３のカウントアップ値を、２５０バイトのデータ長の整数倍であってバッファメモリ３１の１０２４バイトの記憶容量を超さない複数個の中の最大の値をカウントアップ値とし、この２５０バイトとデータ長が決められた各アイソクロナス・データ２９をリードポインタ３３の読み出しアドレスに従ってバッファメモリ３１から読み出す場合、正常に読み出されたた時には、複数個存在する特定のアドレスのいずれかでその読み出しが完了するようにした。そして、アイソクロナス・データ２９の読み出しが完了した時にリードポインタ３３のその時の読み出しアドレスが特定アドレスあるかどうかを第１の検出回路３７にて判断させるようにしたので、読み出し異常かどうか判断することができる。
【０１４４】
（４）上記実施形態によれば、リード用カウンタ３６にて２５０バイトのアイソクロナス・データ２９の読み出し回数をカウントさせるとともに、予め定まった正常の読み出し回数の読み出しが行われた時に第２ピリオド信号Ｐ２を出力させるようにした。そして、第２の検出回路３８にて、２５０バイトのアイソクロナス・データ２９の最後の読み出しの完了を示す切れ目信号ＥＮ２に応答して前記リード用カウンタ３６から第２ピリオドＰ２の有無を判断させるようにしたので、上記（３）と同様に読み出し異常が生じたか否かを判断することができる。そして、第１の検出回路３７と第２の検出回路３８を同時に使用することにより、より精度の高い読み出し異常の検出ができる。
【０１４５】
（５）上記実施形態では、書き込み異常と判断されたとき、アドレス変更回路４１にてライトポインタ３２の書き込みアドレスを複数個の特定アドレスの中からその時の示している書き込みアドレスに最も近い特定アドレスに書き替えるようにした。従って、次に書き込まれる後続のアイソクロナス・データ２９を正常なアドレスから書き込み、特定の書き込みアドレスでその書き込みを完了させることができる。その結果、該後続のデータ２９は正確に読み出されることになる。
【０１４６】
（６）上記実施形態では、読み出し異常と判断されたとき、アドレス変更回路４１にてリードポインタ３３の読み出しアドレスを複数個の特定アドレスの中からその時の示している読み出しアドレスに最も近い特定アドレスに書き替えるようにした。従って、次に読み出される後続のアイソクロナス・データ２９を正常なアドレスから読み出され、特定の読み出しアドレスでその読み出しを完了させることができる。
【０１４７】
（７）上記実施例では、切れ目カウンタ３９を設けて、切れ目信号ＥＮ１，ＥＮ２をカウントし分割データに基づいて第１及び第２検出信号Ｎ１，Ｎ２を出力させるようにしたので、第２の検出回路３８は、複数のデータ・ブロックをまとめて１つのパケット２７を作る場合の書き込み及び読み出しにも対応することができる。
【０１４８】
（８）上記実施形態では、アドレス変更回路４１は制御用レジスタ４２のバイト長変更データに基づいて適宜変更できるようにしたため、２５０バイト長以外の予めバイト長が決められたアイソクロナス・データ２９等の転送データにも対応することがてきる。又、複数のデータ・ブロックをまとめて１つのパケット２７を作る場合の書き込み及び読み出しにも対応することができる。この場合、上記（７）と相違して第１の検出回路３７は各データ・ブロックの単位で書き込み及び読み出しの異常の有無を判断することができ、しかも、異常のときには特定アドレスに変更することができる。
【０１４９】
尚、発明の実施の形態は上記実施形態に限定されるものではなく以下のように実施してもよい。
○上記実施形態では、第１の検出回路３７はＭＰＵ１２からの切れ目信号ＥＮ１，ＥＮ２を入力したが、切れ目カウンタ３９からの第１及び第２検出信号Ｎ１，Ｎ２を入力するようにして実施してもよい。この場合、第１の検出回路３７は各データ・ブロックの単位で書き込み及び読み出しの異常の有無を判断ができなくなる。
【０１５０】
○上記実施形態では、パケットデータ格納メモリ回路２２は、第１の検出回路３７と第２の検出回路３８の２つの検出回路を備えたものであったが、いずれか一方しか備えていないパケットデータ格納メモリ回路に具体化してもよい。この場合、回路規模をその分小さくすることができる。
【０１５１】
○上記実施形態では、異常書き込みと異常読み出しの２つの異常を検出するようにしたが、いずれか一方だけの異常検出を行うようにして実施してもよい。この場合、回路規模をその分小さくすることができる。
【０１５２】
○上記実施形態では、制御用レジスタ４２を備えパケットデータ格納メモリ回路２２に種々の機能をもたせたが、制御用レジスタ４２を備えていないパケットデータ格納メモリ回路に具体化してもよい。この場合、１つの固定した条件の異常検出しかできないが、回路構成をその分簡単にすることができる。
【０１５３】
○上記実施形態では、ＩＥＥＥ１３９４に準拠したシステムにおけるプロトコルコントローラ１１に内蔵されたパケットデータ格納メモリ回路２２，２３に具体化したが、ＦＩＦＯ形式のバッファメモリ回路であればどんなメモリ回路に応用してもよい。この場合、ＦＩＦＯ形式のバッファメモリ回路のみを１チップの半導体集積回路装置にして実施してもよい。勿論、ＦＩＦＯ形式のバッファメモリ回路を複数個含むものを１チップの半導体集積回路装置にして実施してもよい。
【０１５４】
【発明の効果】
請求項１及び２の発明によれば、書き込み異常が生じたとき、次に書き込まれる後続のデータを正常な位置から書き込み該後続のデータを特定の書き込みアドレスでその書き込みを完了させることができる。
【０１５５】
請求項３及び４の発明によれば、読み出し異常が生じたとき、次に読み出される後続のデータを正常な位置から読み出し該後続のデータを特定の読み出しアドレスでその読み出しを完了させることができる。
【０１５６】
請求項５の発明によれば、データの書き込みが正常に書き込まれたか検出することができる。
請求項６の発明によれば、データの読み出しが正常に読み出されたか検出することができる。
【０１５７】
請求項７の発明によれば、データの書き込みが正常に書き込まれたか検出することができる。
請求項８の発明によれば、データの読み出しが正常に読み出されたか検出することができる。
【０１５８】
請求項９の発明によれば、請求項５又は請求項７に記載した発明の効果に加えて、書き込み異常が生じたとき、次に書き込まれる後続のデータを正常な位置から書き込み該後続のデータを特定の書き込みアドレスでその書き込みを完了させることができる。
請求項１０の発明によれば、請求項９に記載の発明の効果に加えて、書き込み異常が生じたとき、ライトポインタの書き込みアドレスを複数個の特定アドレスの中で最も近い特定アドレスの書き替えることで、次に書き込まれる後続のデータを正常な位置から書き込み該後続のデータを特定の書き込みアドレスでその書き込みを完了させることができる。
【０１５９】
請求項１１の発明によれば、請求項６又は請求項８に記載した発明の効果に加えて、読み出し異常が生じたとき、次に読み出される後続のデータを正常な位置から読み出し該後続のデータを特定の読み出しアドレスでその読み出しを完了させることができる。
【０１６１】
請求項１２の発明によれば、請求項１１に記載の発明の効果に加えて、読み出し異常が生じたとき、リードポインタの書き込みアドレスを複数個の特定アドレスの中で最も近い特定アドレスの書き替えることで、次に読み出される後続のデータを正常な位置から読み出し該後続のデータを特定の読み出しアドレスでその読み出しを完了させることができる。
【０１６２】
請求項１３の発明によれば、請求項１又は請求項２に記載の発明の効果に加えて、ライトポインタの書き込みアドレスが複数個の特定アドレスのいずれにも該当しない時に、次に書き込まれる後続のデータを正常な位置から書き込み該後続のデータを特定の書き込みアドレスでその書き込みを完了させることができる。
【０１６３】
請求項１４の発明によれば、請求項３又は請求項４に記載の発明の効果に加えて、リードポインタの書き込みアドレスが複数個の特定アドレスのいずれにも該当しない時に、次に読み出される後続のデータを正常な位置から読み出し該後続のデータを特定の読み出しアドレスでその読み出しを完了させることができる。
【図面の簡単な説明】
【図１】  送信用パケットデータ格納メモリ回路を示すブロック図。
【図２】  パソコン内の構成を説明するためのブロック図。
【図３】  ＩＥＥＥ１３９４に準拠したバスを用いたシステム構成図。
【図４】  パケットを説明するための説明図。
【符号の説明】
２２  送信用パケットデータ格納メモリ回路
３１  バッファメモリ
３２  ライトポインタ
３３  リードポインタ
３４  ポインタループ設定回路
３５  ライト用カウンタ
３６  リード用カウンタ
３７  第１の検出回路
３８  第２の検出回路
３９  切れ目カウンタ
４０  割込み信号生成回路
４１  アドレス変更回路
【図１】
0003887059.tif 000002
【図２】
0003887059.tif 000003
【図３】
0003887059.tif 000004
【図４】
0003887059.tif 000005