JP3887059B2 - データ書き込み方法、データ読み出し方法、及びメモリ回路 - Google Patents
データ書き込み方法、データ読み出し方法、及びメモリ回路 Download PDFInfo
- Publication number
- JP3887059B2 JP3887059B2 JP10016197A JP10016197A JP3887059B2 JP 3887059 B2 JP3887059 B2 JP 3887059B2 JP 10016197 A JP10016197 A JP 10016197A JP 10016197 A JP10016197 A JP 10016197A JP 3887059 B2 JP3887059 B2 JP 3887059B2
- Authority
- JP
- Japan
- Prior art keywords
- read
- data
- write
- address
- pointer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Description
【発明の属する技術分野】
本発明は、FIFO(First In First Out)形式のメモリ回路に関するものである。
【0002】
近年、マルチメディアに対応して例えばパソコンに対してオーディオ・ビデオ機器、デジタルカメラ等の多数の周辺装置が接続できることが求められている。
パソコンと各周辺装置との間、又は、各周辺装置間とでデータ転送において精度の高い転送データが望まれている。そして、連続したデータ自体の誤り訂正機能は符号(CRC)を挿入するなどの対策によって対応が可能になる。そのため、符号を生成する前段階での連続したデータの受信処理は、その処理回路に正しくデータが転送される必要がある。
【0003】
【従来の技術】
従来、デジタルデータの転送の1つとして、例えばIEEE1394という規格がある。このIEEE1394には、一定間隔の時間で予め定められたデータ量(バイト長)の転送データ(パケット)を連続して転送するアイソクロナス転送がある。
【0004】
このアイソクロナス転送方式において、一定の間隔で予め定められたデータ量の転送データ(パケット)を装置間で送受信を行う。この時、転送データを入力する装置、又は、転送データを出力する装置は、その入出力インタフェースに合わせて転送データを転送するわではなく、装置内に設けたMPUがIEEE1394のバスプロトコルに従って実行処理する。従って、その実行処理に要する時間、転送データ(パケット)を一時的に保持しておく必要があることから、装置内にはそのためのデータ格納メモリ回路が備えられている。
【0005】
このデータ格納メモリ回路は、FIFO(First In First Out)形式のデータバッファメモリ回路である。このFIFO形式のメモリ回路は、ライトポインタ及びリードポインタを備えている。そして、ライトポインタは、その値がバッファメモリの書き込みアドレスに使用される。リードポインタは、その値がバッファメモリの読み出しアドレスに使用される。又、両ポインタの値は、バッファメモリがデータを保持している状態(FULL/EMPTY)を判断する場合に使用されている。
【0006】
そして、このFIFO形式のメモリ回路は、例えば、他装置からアイソクロナス転送された転送データがプロトコルコントローラを介して書き込まれる。メモリ回路に入力される転送データ(パケット)は、ヘッダ部分が除かれたデータ(アイソクロナス・データ)であって、該アイソクロナス・データのデータ長は常に一定である。例えば、アイソクロナス・データのデータ長が250バイトであると、該250バイト長のデータが1バイトごとライト用イネーブル信号に応答して書き込まれる。従って、250個のライト用イネーブル信号が出力されると、250バイト長のアイソクロナス・データがメモリ回路に書き込まれることになる。詳述すると、ライト用ネーブル信号が出力される毎にライトポインタが「1」づつインクリメントされるとともに、そのインクリメントされたライトポインタが示す値のアドレスに1バイトのデータが書き込まれる。250バイト長のアイソクロナス・データが書き込まれると、ライトポインタは次のパケットのアイソクロナス・データの書き込みを待つ。
【0007】
メモリ回路からの1つのパケットのアイソクロナス・データを読み出す場合も同様に行われる。250バイト長のデータが1バイトごとリード用ネーブル信号に応答して読み出される。従って、250個のリード用ネーブル信号が出力されると、250バイト長のアイソクロナス・データがメモリ回路が読み出されることになる。詳述すると、リード用ネーブル信号が出力される毎にリードポインタが「1」づつインクリメントされるとともに、そのインクリメントされたリードポインタが示す値のアドレスから1バイトのデータが読み出される。250バイト長のアイソクロナス・データが読み出されると、リードポインタは次のパケットのアイソクロナス・データの読み出しを待つ。
【0008】
【発明が解決しようとする課題】
ところで、250バイト長のパケットのアイソクロナス・ データを書き込んでいる最中に、ライト用ネーブル信号にノイズが発生する場合がある。このノイズにより、ライトポインタがインクリメントされて、同じ内容の1バイトのデータがバッファメモリに書き込まれる。その結果、250バイト長のアイソクロナス・データが書き込まれるはずが、250バイト長を超える余分なデータを含むアイソクロナス・データが書き込まれる。そして、該アイソクロナス・データが1バイトづつ順に読み出されると、250バイト長を超えるデータは、後続のパケットのアイソクロナス・データとして処理され以後のパケットのアイソクロナス・データとして読み出されるといった異常データ転送が生じる。
【0009】
反対に、何らかの原因でノイズが発生してライト用ネーブル信号が消失した場合には、250バイト長のアイソクロナス・データが書き込まれるはずが、250バイト未満のバイト長、即ちデータが不足したアイソクロナス・データが書き込まれる。そして、該アイソクロナス・データが1バイトづつ順に読み出されるとき、該アイソクロナス・データが250バイト未満の不足したデータであることから、後続のパケットのアイソクロナス・データの一部が先のパケットのアイソクロナス・データの一部として読み出されてしまうといった異常データ転送が生じる。
【0010】
同様に、アイソクロナス・データを読み出している最中に、リード用ネーブル信号にノイズがのり、このノイズによりリードポインタがインクリメントされて新たなアドレスから1バイトのデータがバッファメモリから読み出される。その結果、250バイト長のアイソクロナス・データが読み出されるはずが、250バイト長を超えるバイト長のアイソクロナス・データが読み出されるといった問題が生じる。即ち、後続のパケットのアイソクロナス・データの一部が先のパケットのアイソクロナス・データの一部として読み出されてしまうといった異常データ転送が生じる。
【0011】
反対に、何らの原因でノイズが発生してリード用ネーブル信号が消失した場合には、250バイト長のアイソクロナス・データが読み出されるはずが、250バイト未満のバイト長の不足したアイソクロナス・データが読み出されとともに、該アイソクロナス・データの一部が読み出されないといった問題が生ずる。そして、読み出されなかった該パケットのアイソクロナス・データの一部は後続のパケットのアイソクロナス・データとして処理され後続のパケットのアイソクロナス・データの一部として読み出されるといった異常データ転送が生じる。
【0012】
本発明の第1の目的は、決められたデータ長の転送データが複数回に分けて順にメモリに書き込んだとき、その転送データが正常に書き込まれなかった場合、その後に書き込まれる転送データを正しい位置に書き込むことができるデータ書き込み方法及びメモリ回路を提供することにある。
【0013】
本発明の第2の目的は、決められたデータ長の転送データが複数回に分けて順にメモリから読み出したとき、その転送データが正常に読み出されなかった場合、後続の転送データを正しい位置から読み出すことができるデータ読み出し方法及びメモリ回路を提供することにある。
【0014】
本発明の第3の目的は、決められたデータ長の転送データを複数回に分けて順にメモリに書き込んだとき、その転送データが正常に書き込まれたかどうかを検出することができるメモリ回路を提供することにある。
【0015】
本発明の第4の目的は、決められたデータ長の転送データが複数回に分けて順にメモリから読み出したとき、その転送データが正常に読み出されたかどうかを検出することができるメモリ回路を提供することにある。
【0016】
本発明の第5の目的は、決められたデータ長の転送データが複数回に分けて順に書き込み及び読み出しが行われるメモリ回路において、その転送データの書き込み及び読み出しが正常に行われたかどうか検出し、正常に行われなかった時には後に書き込まれる転送データを正しい位置に書き込むことができ又は次に読み出される転送データを正しい位置から読み出すことができるメモリ回路を提供することにある。
【0017】
【課題を解決するための手段】
請求項1に記載の発明は、決められたデータ長のデータを複数回の書き込み回数に分けてライトポインタが指定するバッファメモリの書き込みアドレスに書き込むデータ書き込み方法において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値とし、前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、その時の前記ライトポインタの書き込みアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時には、前記ライトポインタの書き込みアドレスを前記特定アドレスに書き替えるようにした。
【0018】
請求項2に記載の発明は、決められたデータ長のデータを複数回の書き込み回数に分けてライトポインタが指定するバッファメモリの書き込みアドレスに書き込むデータ書き込み方法において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値としてそのライトポインタをリセット動作させるとともに、前記ライト用イネーブル信号をカウントするライト用カウンタにて前記書き込み回数をカウントさせ、前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、前記ライト用カウンタが前記書き込み回数を示していない時には、前記ライトポインタの書き込みアドレスを、前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに書き替えるようにした。
【0019】
請求項3に記載の発明は、決められたデータ長のデータを複数回の読み出し回数に分けてリードポインタが指定するバッファメモリの読み出しアドレスから読み出すデータ読み出し方法において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値としてそのリードポインタをリセット動作させ、前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、その時の前記リードポインタの読み出しアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時には、前記リードポインタの読み出しアドレスを前記特定アドレスに書き替えるようにした。
【0020】
請求項4に記載の発明は、決められたデータ長のデータを複数回の読み出し回数に分けてリードポインタが指定するバッファメモリの読み出しアドレスから読み出すデータ読み出し方法において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値としてそのリードポインタをリセット動作させるとともに、前記リード用イネーブル信号をカウントするリード用カウンタにて前記読み出し回数をカウントさせ、前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、前記リード用カウンタが前記読み出し回数を示していない時には、前記リードポインタの読み出しアドレスを、前記カウントアップ値とデータ長とに基づいて求めた特定アドレスに書き替えるようにした。
【0021】
請求項5に記載の発明は、決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値として指定するポインタループ設定回路と、前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、その時のライトポインタの書き込みアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時、書き込み異常と判断するライト用検出回路とを備えた。
【0022】
請求項6に記載の発明は、決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値として指定するポインタループ設定回路と、前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、その時のリードポインタの読み出しアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時、読み出し異常と判断するリード用検出回路とを備えた。
【0023】
請求項7に記載の発明は、決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるメモリ回路において、前記ライト用イネーブル信号に応答して前記書き込み回数をカウントするライト用カウンタと、前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、前記ライト用カウンタが前記書き込み回数を示していない時、前記データの書き込み異常と判断するライト用検出回路とを備えた。
【0024】
請求項8に記載の発明は、決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、前記リード用イネーブル信号に応答して前記読み出し回数をカウントするリード用カウンタと、前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、前記リード用カウンタが前記読み出し回数を示していない時、前記データの読み出し異常と判断するリード用検出回路とを備えた。
【0025】
請求項9に記載の発明は、請求項5又は請求項7に記載のメモリ回路において、書き込み異常と判断した時、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中からその時の示している書き込みアドレスに最も近い特定アドレスに書き替えるライト用アドレス変更回路を備えた。
【0026】
請求項10に記載の発明は、請求項9に記載のメモリ回路において、前記特定アドレスを複数個求め、書き込み異常と判断した時には、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中からその時の示している書き込みアドレスに最も近い特定アドレスに書き替えるようにした。
【0027】
請求項11に記載の発明は、請求項6又は請求項8に記載のメモリ回路において、前記リード用検出回路が読み出し異常と判断した時、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスで最も近い特定アドレスに書き替えるリード用アドレス変更回路を備えた。
【0028】
請求項12に記載の発明は、請求項11に記載のメモリ回路において、前記特定アドレスを複数個求め、読み出し異常と判断した時には、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。
【0029】
請求項13に記載の発明は、請求項1又は請求項2に記載のデータ書き込み方法において、前記特定アドレスを複数個求め、データの最後の書き込みが完了した時のライトポインタの書き込みアドレスが前記複数個の特定アドレスのいずれにも該当しない時には、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。
【0030】
請求項14に記載の発明は、請求項3又は請求項4に記載のデータ読み出し方法において、前記特定アドレスを複数個求め、データの最後の読み出しが完了した時のリードポインタの読み出しアドレスが前記複数個の特定アドレスのいずれにも該当しない時には、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。
【0031】
(作用)
請求項1の発明によれば、バッファメモリはカウントアップ値によってその記憶容量が決まる。この時、そのライトポインタのカウントアップ値を、データ長の整数倍であってバッファメモリの記憶容量を超さない値としたことから、決められたデータ長のデータが、ライトポインタの書き込みアドレスに従ってバッファメモリに書き込まれる場合、正常に書き込まれた時には、データ長の整数倍でかつ前記カウントアップ値以下の特定のアドレスでその書き込みが完了する。その結果、書き込みが異常の場合には、該特定のアドレスから外れたアドレスで書き込みが完了する。そして、書き込み異常が生じたとき、ライトポインタの書き込みアドレスを特定アドレスに書き替えるようにしたので、次に書き込まれる後続のデータが正常な位置から書き込まれ、該後続のデータは特定の書き込みアドレスでその書き込みが完了する。
【0032】
請求項2の発明によれば、決められたデータ長のデータが正常に書き込まれる際には複数回の書き込み回数で書き込みが完了する。従って、決められたデータ長のデータの最後の書き込みが完了した時、ライト用カウンタがその書き込み回数を示していない時には、異常書き込みとなる。そして、書き込み異常が生じたとき、ライトポインタの書き込みアドレスを特定アドレスに書き替えるようにしたので、次に書き込まれる後続のデータが正常な位置から書き込まれ、該後続のデータは特定の書き込みアドレスでその書き込みが完了する。
【0033】
請求項3の発明によれば、リードポインタのカウントアップ値を、データ長の整数倍であってバッファメモリの記憶容量を超さない値としたことから、決められたデータ長のデータが、リードポインタの読み出しアドレスに従ってバッファメモリから読み出される場合、正常に読み出された時には、データ長の整数倍でかつ前記カウントアップ値以下の特定のアドレスでその読み出しが完了する。その結果、読み出しが異常の場合には、該特定のアドレスから外れたアドレスで読み出しが完了することになる。そして、読み出し異常が生じたとき、リードポインタの読み出しアドレスを特定アドレスに書き替えるようにしたので、次に読み出される後続のデータが正常な位置から読み出され、該後続のデータは特定の読み出しアドレスでその読み出しが完了する。
【0034】
請求項4の発明によれば、決められたデータ長のデータが正常に読み出される際には複数回の読み出し回数で読み出しが完了する。従って、決められたデータ長のデータの最後の読み出しが完了した時、リード用カウンタがその読み出し回数を示していない時には、異常読み出しとなる。そして、読み出し異常が生じたとき、リードポインタの読み出しアドレスを特定アドレスに書き替えるようにしたので、次に読み出される後続のデータが正常な位置から読み出され、該後続のデータは特定の読み出しアドレスでその書き込みが完了する。
【0035】
請求項5の発明によれば、ポインタループ設定回路により、データ長の整数倍であってバッファメモリの記憶容量を超さない値をライトポインタのカウントアップ値としたことから、決められたデータ長のデータはライトポインタの書き込みアドレスに従ってバッファメモリに書き込まれる場合、正常に書き込まれた時には、データ長の整数倍でかつ前記カウントアップ値以下の特定のアドレスでその書き込みが完了することになる。従って、ライト用検出回路は、データの書き込みが完了した時にライトポインタのその時の書き込みアドレスをみて、特定アドレスを示さなかったときには書き込み異常と判断することができる。
【0036】
請求項6の発明によれば、ポインタループ設定回路により、データ長の整数倍であってバッファメモリの記憶容量を超さない値をリードポインタのカウントアップ値としたことから、決められたデータ長のデータはリードポインタの読み出しアドレスに従ってバッファメモリから読み出される場合、正常に読み出された時には、データ長の整数倍でかつ前記カウントアップ値以下の特定のアドレスでその読み出しが完了することになる。従って、リード用検出回路は、データの読み出しが完了した時にリードポインタのその時の読み出しアドレスをみて、特定アドレスを示さなかったときには読み出し異常と判断することができる。
【0037】
請求項7の発明によれば、決められたデータ長のデータの最後の書き込みが完了した時、正常に書き込みが行われた時にはライト用カウンタはその書き込み回数を示す。ライト用検出回路は、決められたデータ長のデータの最後の書き込みが完了した時、前記ライト用カウンタが前記書き込み回数を示していない時、書き込み異常が生じたと判断することができる。
【0038】
請求項8の発明によれば、決められたデータ長のデータの最後の読み出しが完了した時、正常に読み出しが行われた時にはリード用カウンタはその読み出し回数を示す。リード用検出回路は、決められたデータ長のデータの最後の読み出しが完了した時、前記リード用カウンタが前記読み出し回数を示していない時、読み出し異常が生じたと判断することができる。
【0039】
請求項9の発明によれば、請求項5又は請求項7に記載した発明の作用に加えて、ライト用検出回路が書き込み異常と判断したとき、ライト用アドレス変更回路はライトポインタの書き込みアドレスを特定アドレスに書き替えるようにした。その結果、次に書き込まれる後続のデータが正常な位置から書き込まれ、該後続のデータは特定の書き込みアドレスでその書き込みが完了することになる。
【0040】
請求項10の発明によれば、特定アドレスを複数個求め、ライト用検出回路が書き込み異常と判断した時には、ライトポインタの書き込みアドレスを複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。その結果、次に書き込まれる後続のデータが正常な位置から書き込まれ、該後続のデータは特定の書き込みアドレスでその書き込みが完了することになる。
【0041】
請求項11の発明によれば、請求項6又は請求項8に記載した発明の作用に加えて、リード用検出回路が読み出し異常と判断したとき、リード用アドレス変更回路はリードポインタの読み出しアドレスを特定アドレスに書き替えるようにした。その結果、次に読み出される後続のデータが正常な位置から読み出され、該後続のデータは特定の読み出しアドレスでその読み出しが完了することになる。
【0042】
請求項12の発明によれば、特定アドレスを複数個求め、リード用検出回路が読み出し異常と判断した時には、リードポインタの読み出しアドレスを複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。その結果、次に読み出される後続のデータが正常な位置から読み出され、該後続のデータは特定の読み出しアドレスでその読み出しが完了することになる。
【0043】
請求項13の発明によれば、請求項1又は請求項2に記載の発明の作用に加えて、特定アドレスを複数個求め、データの最後の書き込みが完了した時のライトポインタの書き込みアドレスが複数個の特定アドレスのいずれにも該当しない時には、ライトポインタの書き込みアドレスを複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。その結果、次に書き込まれる後続のデータが正常な位置から書き込まれ、該後続のデータは特定の書き込みアドレスでその書き込みが完了することになる。
【0044】
請求項14の発明によれば、請求項3又は請求項4に記載の発明の作用に加えて、特定アドレスを複数個求め、データの最後の読み出しが完了した時のリードポインタの書き込みアドレスが複数個の特定アドレスのいずれにも該当しない時には、リードポインタの読み出しアドレスを複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにした。その結果、次に読み出される後続のデータが正常な位置から読み出され、該後続のデータは特定の読み出しアドレスでその読み出しが完了することになる。
【0047】
【発明の実施の形態】
図3は、IEEE1394に準拠したシステム構成を示す。パーソナルコンピュータ(以下、パソコンという)1、周辺装置としてのデジタルVTR2及び同じく周辺装置としてのカラーページプリンタ3は、IEEE1394に準拠したバス4を介して互いに接続されている。
【0048】
図2は、パソコン1に設けたIEEE1394に準拠したシステム構成を説明するためのブロック回路を示す。パソコン1は、IEEE1394用プロトコルコントローラ(以下、IPCという)11、マイクロプロセッサユニット(以下、MPUという)12及びDMA(Direct Memory Access)コントローラ(以下、DMACという)13を備えている。IPC11、MPU12及びDMAC13は、それぞれ1チップの半導体集積回路装置(LSI)にて形成されている。
【0049】
IPC11は、MPU12及びDMAC13との間でデータの授受を行う。IPC11は、バス4を介して前記デジタルVTR2及びカラーページプリンタ3に備えられたIEEE1394用プロトコルコントローラ(IPC)と接続されている。
【0050】
IPC11は、プロトコル制御回路部21、送信用パケットデータ格納メモリ回路22、受信用パケットデータ格納メモリ回路23、第1の入出力インタフェース24、及び、第2の入出力インタフェース25を備えている。
【0051】
第1の入出力インタフェース24は、バス4を介してデジタルVTR2に接続され、プロトコル制御回路部21とデジタルVTR2のIPCとの間でアイソクロナス転送におけるパケット27のやり取りを行う。第2の入出力インタフェース25は、バス4を介してカラーページプリンタ3に接続され、プロトコル制御回路部21とページプリンタ3のIPCとの間でアイソクロナス転送におけるパケット27のやり取りを行う。パケット27は、図4に示すようにヘッダ28とアイソクロナス・データ29とで構成されている。
【0052】
送信用パケットデータ格納メモリ回路22は、前記DMAC13に接続されている。送信用パケットデータ格納メモリ回路22はそのDMAC13から出力される送信のための転送データ(パケット27)を入力し一時保持する。送信用パケットデータ格納メモリ回路22はプロトコル制御回路部21に接続されている。そして、送信用パケットデータ格納メモリ回路22は、一時保持している転送データ(パケット27)をプロトコル制御回路部21に出力する。
【0053】
受信用パケットデータ格納メモリ回路23は、前記プロトコル制御回路部21に接続されている。受信用パケットデータ格納メモリ回路23はその制御回路部21から出力される受信のための転送データ(パケット27)を入力し一時保持する。受信用パケット格納メモリ回路23はDMAC13に接続されている。そして、受信用パケットデータ格納メモリ回路23は、一時保持している転送データ(パケット27)をDMAC13に出力する。
【0054】
プロトコル制御回路部21は、第1及び第2の入出力インタフェース24,25と接続されている。プロトコル制御回路部21は、第1の入出力インタフェース24及びバス4を介して前記デジタルVTR2のプロトコル制御回路部との間でアイソクロナス転送における転送データ(パケット27)のやり取りを行うとともに、その入力した転送データを第2の入出力インタフェース25を介してカラーページプリンタ3に出力する。又、プロトコル制御回路部21は、第2の入出力インタフェース25及びバス4を介して前記カラーページプリンタ3のプロトコル制御回路部との間でアイソクロナス転送における転送データ(パケット27)のやり取りを行うとともに、その入力した転送データを第1の入出力インタフェース24を介してデジタルVTR2に出力する。
【0055】
プロトコル制御回路部21は、MPU12との間で制御データの授受を行い、インタフェース24,25から入力した転送データが自装置(パソコン1)のために転送された転送データかどうかを解析する。そして、自装置のための転送データであると解析すると、プロトコル制御回路部21はMPU12からの制御データに基づいて受信用パケットデータ格納メモリ回路23を介してDMAC13に転送させるようになっている。
【0056】
又、プロトコル制御回路部21は、MPU12からの制御データに基づいて送信信用パケットデータ格納メモリ回路22に記憶されているDMAC13から出力される送信のための転送データ(パケット27)を入力する。そして、プロトコル制御回路部21は、ヘッダを付加して第1及び第2入出力インタフェース24,25に出力するようになっている。
【0057】
次に、送信用パケットデータ格納メモリ回路22について説明する。説明の便宜上、転送データ(パケット27)の内、ヘッダ28の付かないアイソクロナス・データ29を一時保持する部分の回路構成について説明する。そして、本実施形態では、説明の便宜上、該アイソクロナス・データ29は決まった250バイトのバイト長とする。
【0058】
図1は、そのブロック回路を示す。図1において、送信用パケットデータ格納メモリ回路22は、バッファメモリ31、ライトポインタ32、リードポインタ33、ポインタループ設定回路34、ライト用カウンタ35、リード用カウンタ36、ライト用及びリード用検出回路としての第1の検出回路37、第2のライト用及びリード用検出回路としての第2の検出回路38、切れ目カウンタ39、割込み信号生成回路40、ライト用及びリード用アドレス変更回路としてのアドレス変更回路41、及び、制御用レジスタ42を備えている。
【0059】
バッファメモリ31は、2ポートの読み出し及び書き替え可能なメモリ(RAM)よりなり、本実施形態では説明の便宜上1024バイトのメモリ容量としている。該バッファメモリ31は前記DMAC13から順次出力される予め決められた250バイト長のアイソクロナス・データ29が1バイトの単位で書き込まれ、その書き込まれた250バイト長のアイソクロナス・データ29が1バイトの単位で読み出される。従って、読み出し及び書き込みアドレスは、それぞれ「0」〜「1023」までの合計1024アドレスを有している。又、250バイト長のアイソクロナス・データ29の全てを書き込むための書き込み回数は250回となる。同様に、250バイト長のアイソクロナス・データ29の全てを読み出すための読み出し回数は250回となる。
【0060】
ライトポインタ32は書き込みのためのアドレスカウンタであって、そのポインタ32が示す値が書き込みアドレスとなる。ライトポインタ32は「0」から「1023」の値がカウントできるポインタである。ライトポインタ32は、1バイトのデータを書き込みするたび毎に前記MPU12から出力されるライト用イネーブル信号WEの数を加算する。従って、ライトポインタ32は、ライト用イネーブル信号WEが入力される毎に値(書き込みアドレス)が「1」づつインクリメントされ、バッファメモリ31のアドレスが1づつ上位アドレスにシフトされる。そして、このMPU12からのライト用イネーブル信号WEが出力される毎にDMAC13から250バイト長のアイソクロナス・データ29の内の1バイト分のアイソクロナス・データ29がバッファメモリ31に出力され、この1バイト分のアイソクロナス・データ29は、インクリメントされたライトポインタ32の示すアドレスに書き込まれる。
【0061】
又、ライトポインタ32の値がカウントアップ値、即ちこの場合は「1023」の時、次の新たなライト用イネーブル信号WEが入力されると、ライトポインタ32は、「0」の値にリセットされる。このライトポインタ32は、「0」にリセットされる前の値、即ちカウントアップ値を適宜変更することができるようになっている。
【0062】
リードポインタ33は読み出しのためのアドレスカウンタであって、そのポインタ33が示す値が読み出しアドレスとなる。リードポインタ33は「0」から「1023」の値がカウントできるカウンタである。リードポインタ33は、1バイトのデータを読み出すたび毎にプロトコル制御回路部21から出力されるリード用イネーブル信号REの数を加算する。従って、リードポインタ33は、リード用イネーブル信号REが入力される毎に値(読み出しアドレス)が「1」づつインクリメントされ、バッファメモリ31のアドレスが1づつ上位アドレスにシフトされる。そして、リードポインタ33の値が示すバッファメモリ31のアドレスから1バイト分のアイソクロナス・データ29が前記プロトコル制御回路部21に出力される。
【0063】
又、リードポインタ33の値がカウントアップ値、即ちこの場合は「1023」の時、次の新たなリード用イネーブル信号REが入力されると、リードポインタ33は、「0」の値にリセットされる。このリードポインタ33は、「0」にリセットされる前の値、即ちカウントアップ値を適宜変更することができるようになっている。
【0064】
又、ライトポインタ32及びリードポインタ33の内容は、前記MPU12に出力されるようになっていて、MPU12はバッファメモリ31のフル状態/エンプティ状態を把握してバッファメモリ31へのアイソクロナス・データ29の書き込み及び読み出しを前記プロトコル制御回路部21を介して制御するようになっている。
【0065】
このように、ライトポインタ32及びリードポインタ33の値に基づいてその書き込みアドレス及び読み出しアドレスが1アドレスづつシフトされることにより、該バッファメモリ31はFIFO(First In First Out)形式のデータバッファメモリとなる。
【0066】
ポインタループ設定回路34は、ライトポインタ32とリードポインタ33に接続されている。ポインタループ設定回路34は、ライトポインタ32及びリードポインタ33の前記カウントアップ値を変更するデータを出力する。このカウントアップ値は、アイソクロナス・データ29のバイト長の整数倍であって、前記バッファメモリ31のメモリ容量を超えない最大値に設定している。このカウントアップ値の設定は、制御用レジスタ42に設定されたデータ長変更データに基づいて行われる。
【0067】
本実施形態では、前記1つのパケット27におけるアイソクロナス・データ29を説明の便宜上250バイト長とした。又、1バイトの単位で書き込み及び読み出しが行われるバッファメモリ31のメモリ容量を1024バイトとしている。そして、250バイト長の整数場合であって、1024バイトを超えない値をカウントアップ値とすることから、カウントアップ値は「1000(=250×4<1024)」となる。
【0068】
詳述すると、ライトポインタ32及びリードポインタ33は、「0」を含むため、「0」から「999」までのカウンタとなり、カウントアップ値は「999」となる。従って、ライトポインタ32は、値が「999」の時、新たなライト用イネーブル信号WEが出力されると、「0」にリセットされる。同様に、リードポインタ33は、値が「999」の時、新たなリード用イネーブル信号REが出力されると、「0」にリセットされる。そして、再び「0」からカウント動作を行う。
【0069】
従って、バッファメモリ31には、最大4個のパケット27のアイソクロナス・データ29が書き込みが可能となる。そして、アドレスが「0」が最初の書き込まれるアドレスとすると、常に1つのパケット27の250バイト長のアイソクロナス・データ29が書き込みを完了するアドレス(特定アドレス)は、「249」、「499」、「749」又は「999」のいずれかのアドレスとなる。従って、これ以外のアドレスで1つのパケット27における250バイト長のアイソクロナス・データ29の書き込みが完了した時には、何らかの原因で正常に書き込みが行われなかったことになる。
【0070】
又、常に1つのパケット27の250バイト長のアイソクロナス・データ29が最後に読み出しを完了する特定アドレスは、「249」、「499」、「749」又は「999」のいずれかのアドレスとなる。従って、これ以外のアドレスで1つのパケット27における250バイト長のアイソクロナス・データ29の読み出しが完了した時には、何らかの原因で正常に読み出しが行われなかったことになる。
【0071】
第1の検出回路37は、ライトポインタ32とリードポインタ33と接続され、各ポインタ32,33のその時々の値(アドレス)を入力する。第1の検出回路37は、前記MPU12からの入力データ切れ目信号EN1及び出力データ切れ目信号EN2を入力する。入力データ切れ目信号EN1は、1つのパケット27における250バイトのアイソクロナス・データ29のバッファメモリ31への出力が完了したことをMPU12が判断し出力する信号である。又、出力データ切れ目信号EN2は、1つのパケット27における250バイトのアイソクロナス・データ29の読み出しが完了したことMPU12が判断し出力する信号である。
【0072】
第1の検出回路37は、入力データ切れ目信号EN1に応答してその時のライトポインタ32の値(アドレス)が「249」、「499」、「749」又は「999」のいずれかの特定アドレスとなるかどうか判断する。そして、一致するアドレスがある場合には、その書き込みが完了したパケット27における250バイト長のアイソクロナス・データ29は正常に書き込まれたと判定する。
【0073】
反対に、一致しない場合には、その書き込みが完了したパケット27における250バイト長のアイソクロナス・データ29は正常に書き込まれなかった、即ち異常書き込みがなされたと判断する。異常書き込みと判断した時には、第1の検出回路37は第1書き込み異常信号S1を出力する。
【0074】
又、第1の検出回路37は、出力データ切れ目信号EN2に応答してその時のリードポインタ33の値(アドレス)が「249」、「499」、「749」又は「999」のいずれかの特定アドレスとなるかどうか判断する。そして、一致する特定アドレスがある場合には、その読み出しが完了したパケット27における250バイト長のアイソクロナス・データ29は正常に読み出されたと判定する。
【0075】
反対に、一致しない場合には、その読み出しが完了したパケット27における250バイトのアイソクロナス・データ29は正常に読み出されなかった、即ち異常読み出しがなされたと判断する。異常読み出しと判断した時には、第1の検出回路37は第1読み出し異常信号S2を出力する。
【0076】
前記入力データ切れ目信号EN1及び出力データ切れ目信号EN2は、切れ目カウンタ39に出力される。切れ目カウンタ39は、制御用レジスタ42の分割ブロックデータに基づいてカウントアップ値が設定される。そして、例えば分割ブロックデータが「1」の時、カウントアップ値は「1」となり、切れ目カウンタ39は入力データ切れ目信号EN1が1つ出力される毎に第1検出信号N1を出力する。同様に、切れ目カウンタ39は、出力データ切れ目信号EN2が1つ出力される毎に第2検出信号N2を出力する。
【0077】
ライト用カウンタ35は、前記ライト用イネーブル信号WEを入力し前記書き込み回数をカウントする。本実施形態では、1つのパケット27におけるアイソクロナス・データ29の250バイト長に対応して250個目のライト用イネーブル信号WEを入力すると、第1ピリオド信号P1を出力するとともにリセットし再び最初から250個のライト用イネーブル信号WEをカウントする。従って、ライト用カウンタ35は、アイソクロナス・データ29が正常にバッファメモリ31に書き込まれている状態では、1パケット27における250バイト長のアイソクロナス・データ29の全てが書き込まれる毎に第1ピリオド信号P1が出力されることになる。
【0078】
リード用カウンタ36は、前記リード用イネーブル信号REを入力し前記読み出し回数をカウントする。本実施形態では、1つのパケット27におけるアイソクロナス・データ29の250バイト長に対応して250個目のリード用イネーブル信号REを入力すると、第2ピリオド信号P2を出力するとともにリセットし再び最初から250個のリード用イネーブル信号REをカウントする。従って、リード用カウンタ36は、アイソクロナス・データ29が正常にバッファメモリ31から読み出されている状態では、1つのパケット27における250バイト長のアイソクロナス・データ29の全てが読み出される毎に第2ピリオド信号P2が出力されることになる。
【0079】
第2の検出回路38は前記ライト用及びリード用カウンタ35,36に接続され、各カウンタ35,36からの第1及び第2ピリオド信号P1,P2を入力する。又、第2の検出回路38は切れ目カウンタ39に接続され、前記第1及び第2検出信号N1,N2を入力する。
【0080】
第2の検出回路38は、第1ピリオド信号P1が出力されると同時に、前記切れ目カウンタ39の第1検出信号N1が出力されたかどうか判断する。そして、同時である時、その書き込みが完了したパケット27における250バイト長のアイソクロナス・データ29は正常に書き込まれたと判定する。反対に、同時でない場合には、その書き込みが完了したパケット27における250バイト長のアイソクロナス・データ29は正常に書き込まれなかった、即ち異常書き込みがなされたと判断する。異常書き込みと判断した時には、第2の検出回路38は第2書き込み異常信号S3を出力する。
【0081】
第2の検出回路38は、第2ピリオド信号P2が出力されると同時に、前記切れ目カウンタ39の第2検出信号N2が出力されたかどうか判断する。そして、同時である時、その読み出しが完了したパケット27における250バイトのアイソクロナス・データ29は正常に読み出されたと判定する。反対に、同時でない場合には、その書き込みが完了したパケット27における250バイトのアイソクロナス・データ29は正常に読み出されなかった、即ち異常読み出しがなされたと判断する。異常読み出しと判断した時には、第2の検出回路38は第2読み出し異常信号S4を出力する。
【0082】
割込み信号生成回路40は、第1の検出回路37と接続し、該第1の検出回路37からの第1書き込み異常信号S1及び第1読み出し異常信号S2を入力する。割込み信号生成回路40は、第1書き込み異常信号S1に応答して第1割込み信号T1を出力するとともに、第1読み出し異常信号S2に応答して第2割込み信号T2をアドレス変更回路41及びMPU12に出力するようになっている。
【0083】
又、割込み信号生成回路40は、第2の検出回路38と接続し、該第2の検出回路38からの第2書き込み異常信号S3及び第2読み出し異常信号S4を入力する。割込み信号生成回路40は、第2書き込み異常信号S3に応答して第1割込み信号T1を、又、第2読み出し異常信号S4に応答して第2割込み信号T2をアドレス変更回路41及びMPU12に出力するようになっている。
【0084】
アドレス変更回路41は、第1割込み信号T1に応答して、その書き込みが完了したパケット27における250バイトのアイソクロナス・データ29は正常に書き込まれなかった状態がバッファメモリ31に発生したとして、その時のライトポインタ32の値を読み出す。そして、アドレス変更回路41は、ライトポインタ32の値を強制的に変更する処理を実行する。変更する値(アドレス)は、「249」、「499」、「749」又は「999」のいずれかの特定アドレスにする。詳述すると、この4つの特定アドレスの中からその時のライトポインタ32の値(アドレス)に最も近い特定アドレスが選択され、その選択された特定アドレスにライトポインタ32の値を変更する。
【0085】
例えば、ライトポインタ32の値(アドレス)が「512」のとき、何らかの原因で例えばライト用イネーブル信号WEにノイズが入り、1つのパケット27におけるアイソクロナス・データ29が250バイト長以上のデータが余分にバッファメモリ31のアドレス「250」〜「512」までに書き込まれたと判断する。即ち、「500」〜「512」までのアドレスに余分な13バイトのデータが書き込まれていると判断する。従って、後続のパケット27の250バイト長のアイソクロナス・データ29は「513」のアドレスから書き込まれることになる。
【0086】
そこで、これを防止し、「500」〜「749」のアドレスに後続のパケット27の250バイト長のアイソクロナス・データ29を書き込むことができるように、アドレス変更回路41はライトポインタ32の値を「499」と変更するようにしている。
【0087】
又、アドレス変更回路41は、第2割込み信号T2に応答して、その読み出しが完了したパケット27における250バイト長のアイソクロナス・データ29は正常に読み出されなかった状態がバッファメモリ31に発生したとして、その時のリードポインタ33を読み出す。そして、アドレス変更回路41は、リードポインタ33の値を強制的に変更する処理を実行する。変更する値(アドレス)は、「249」、「499」、「749」又は「999」のいずれかの特定アドレスにする。詳述すると、この4つの特定アドレスの中からその時のリードポインタ33の値(アドレス)に最も近い特定アドレスが選択され、その選択された特定アドレスにリードポインタ33の値を変更する。
【0088】
例えば、リードポインタ33の値(アドレス)が「730」のとき、何らかの原因で例えばリード用イネーブル信号REにノイズが入り、1つのパケット27におけるアイソクロナス・データ29が250バイト未満のデータであってバッファメモリ31のアドレス「500」〜「730」までのデータしか読み出されなかったと判断する。即ち、「731」〜「749」までのアドレスにある19バイトのデータが読み出されなかったと判断する。従って、後続のパケット27の250バイト長のアイソクロナス・データ29は「731」のアドレスから始まるとしてその「731」のアドレスから読み出されることになる。
【0089】
そこで、これを防止し、「750」〜「999」のアドレスにある後続のパケット27の250バイト長のアイソクロナス・データ29が読み出すことができるように、アドレス変更回路41はリードポインタ32の値を「749」と変更するようにしている。
【0090】
制御用レジスタ42は各種のモード設定用のデータがMPU12により記録されるレジスタである。モード設定のデータには、第1の有効データ、第2の有効データ、バイト長変更データ、分割データ等がある。
【0091】
第1の有効データは、第1の検出回路37を使用するかどうかを設定するデータであって、使用する内容が設定されている時には、該第1の検出回路37がその内容に基づいて比較動作可能な状態になる。第2の有効データは、第2の検出回路38を使用するかどうかを設定するデータであって、使用する内容が設定されている時には該第2の検出回路38がその内容に基づいて比較動作可能な状態になる。
【0092】
バイト長変更データは、1つのパケット27のアイソクロナス・データ29のバイト長を例えば250バイト長から100バイト長にと種々変更するためデータある。そして、ポインタループ設定回路34はライトポインタ32及びリードポインタ33のカウントアップ値を、そのバイト長変更データのバイト長の整数倍であって、前記バッファメモリ31のメモリ容量を超えない値に設定している。
【0093】
従って、例えば、バイト長変更データが「150バイト長」であるとすると、カウントアップ値は1バイトの単位で書き込み及び読み出しが行われる1024バイトのメモリ容量のバッファメモリ31に対して「900(=150×6<1024)」となる。即ち、ライトポインタ32及びリードポインタ33は、「0」から「899」のカウントアップ値までのカウンタとなる。
【0094】
従って、バッファメモリ31には、最大4個の150バイト長のパケット27のアイソクロナス・データ29が書き込みが可能となる。そして、アドレスが「0」が最初の書き込まれるアドレスとするとき、常に1つのパケット27の150バイト長のアイソクロナス・データ29が書き込みを完了する特定アドレスは、「149」、「299」、「449」、「599」、「749」又は「899」のいずれかのアドレスとなる。従って、これ以外のアドレスで1つのパケット27における150バイト長のアイソクロナス・データ29の書き込みが完了した時には、何らかの原因で正常に書き込みが行われなかったことになる。
又、常に1つのパケット27の250バイトのアイソクロナス・データ29が最後に読み出しを完了する特定アドレスは、「149」、「299」、「449」、「599」、「749」又は「899」のいずれかのアドレスとなる。従って、これ以外のアドレスで1つのパケット27における150バイト長のアイソクロナス・データ29の読み出しが完了した時には、何らかの原因で正常に読み出しが行われなかったことになる。
【0095】
さらにこの場合には、ライト用及びリード用カウンタ35,36は、それぞれ150個のライト用及びリード用イネーブル信号WE,REをそれぞれ入力すると第1及び第2ピリオド信号P1,P2を出力するようになっている。
【0096】
分割データは、複数のデータ・ブロックをまとめて1つのアイソクロナス転送のためのパケット27を作る場合に使用される。尚、この場合、バイト長変更データも合わせて変更される。
【0097】
例えば、50バイト長のデータ・ブロックが5個まとめて1つのパケット27の250バイト長のアイソクロナス・データ29する場合、及び、1つのパケット27の250バイト長のアイソクロナス・データ29を5個の50バイト長のデータ・ブロックに分割して読み出す場合、分割データは「5」となる。この分割データは前記切れ目カウンタ39のカウントアップ値「5」としてセットされる。そして、MPU12は、各データ・ブロックの最後の1バイトのデータが書き込みが完了する毎に入力データ切れ目信号EN1を出力するようになっている。従って、入力データ切れ目信号EN1を5個数える毎に、切れ目カウンタ39は、第1検出信号値N1を出力することになる。
【0098】
そして、ライト用カウンタ35は、250個目のライト用イネーブル信号WEが入力されると、即ち5個のデータ・ブロックの書き込み(50×5バイト長のデータの書き込み)が完了すると、第1ピリオド信号P1を第2の検出回路38に出力する。又、切れ目カウンタ39は5個目の入力データ切れ目信号EN1を入力すると、第1検出信号N1を第2の検出回路38に出力する。第2の検出回路38は、この第1ピリオド信号P1と第1検出信号N1が同時に入力された時、1つのパケット27の250バイト長のアイソクロナス・データ29をつくるための5個のデータ・ブロックが正常に書き込まれたと判定する。反対に、同時でない場合には、第2の検出回路38は、5個のデータ・ブロックが正常に書き込まれなかった、即ち異常書き込みがなされたと判断する。異常書き込みと判断した時には、第2の検出回路38は第2書き込み異常信号S3を出力する。
【0099】
又、1つのパケット27の250バイト長のアイソクロナス・データ29を5個の50バイト長のデータ・ブロックに分割して読み出す場合も同様である。MPU12は各データ・ブロックの最後の1バイトのデータが読み出しが完了する毎に出力データ切れ目信号EN2を出力する。そして、その切れ目信号EN2を5個数える毎に、切れ目カウンタ39は第2検出信号値N2を出力することになる。
【0100】
そして、リード用カウンタ36は、250個目のリード用イネーブル信号REを入力すると、即ち5個のデータ・ブロックの読み出し(50×5バイト長のデータの書き込み)が完了すると、第2ピリオド信号P2を第2の検出回路38に出力する。又、切れ目カウンタ39は5個目の出力データ切れ目信号EN2を入力すると、第2検出信号N2を第2の検出回路38に出力する。第2の検出回路38は、この第2ピリオド信号P2と第2検出信号N2が同時に入力された時、5個のデータ・ブロックが正常に読み出されたと判定する。反対に、同時でない場合には、第2の検出回路38は、5個のデータ・ブロックが正常に読み出されなかった、即ち異常読み出しが生じたと判断する。異常読み出しと判断した時には、第2の検出回路38は第2読み出し異常信号S4を出力する。
【0101】
尚、受信用パケットデータ格納メモリ回路23も上記した送信用パケットデータ格納メモリ回路22と同様な回路構成であり容易に理解されるため、その説明は省略する。
【0102】
次に、上記のように構成された送信用パケットデータ格納メモリ回路22の作用について説明する。
(A)250バイト長のアイソクロナス・データ29の書き込み。
【0103】
制御用レジスタ42の第1及び第2の有効データは第1の検出回路37及び第2の検出回路38が共に動作する内容に設定されている。又、制御用レジスタ42のバイト長変更データは250バイト長に設定されている。さらに、制御用レジスタ42の分割データは「1」になっている。尚、説明の便宜上、ライトポインタ32の値(アドレス)は「249」を示している。
【0104】
250バイト長のアイソクロナス・データ29における最初の1バイトのデータがDMAC13から出力されるとともに、MPU12から最初のライト用イネーブル信号WEが出力されると、ライトポインタ32は最初のライト用イネーブル信号WEに応答して「249」から「250」となる。最初の1バイトのデータはバッファメモリ31のアドレス「250」に書き込まれる。以後、MPU12から新たなライト用イネーブル信号WEが入力される毎にライトポインタ32の値がインクリメントされ、アドレスが1アドレスに上位にシフトしそのシフトしたの新たなアドレスにアイソクロナス・データ29が1バイトづつ書き込まれていく。この書き込みとともに、ライト用カウンタ35は、ライト用イネーブル信号WEをカウントしている。
【0105】
やがて、最初のライト用イネーブル信号WEから数えて250個目のライト用イネーブル信号WEが出力されると、ライトポインタ32の値が「499」となり、250バイト長のアイソクロナス・データ29における最後の1バイトのデータがバッファメモリ31のアドレス「499」に書き込まれる。
【0106】
250個目のライト用イネーブル信号WEが出力されると、MPU12から入力データ切れ目信号EN1が第1の検出回路37に出力される。第1の検出回路37は、その切れ目信号EN1に応答してその時のライトポインタ32の値が「249」、「499」、「749」又は「999」のいずれの特定アドレスに該当するかどうか判断する。そして、正常なライト用イネーブル信号WEに基づいて250バイト長のアイソクロナス・データ29が正常に書き込まれたときは、ライトポインタ32の値は「499」となり4個の特定アドレスのうちの1つと一致するため、第1の検出回路37は正常に書き込まれたと判定する。
【0107】
反対に、一致しない場合には、第1の検出回路37は異常書き込みがなされたと判断して、第1書き込み異常信号S1を割込み信号生成回路40に出力する。割込み信号生成回路40は第1書き込み異常信号S1に応答して第1割込み信号T1をアドレス変更回路41及びMPU12に出力するようになっている。アドレス変更回路41は、第1割込み信号T1に応答して250バイト長のアイソクロナス・データ29が正常に書き込まれなかった状態がバッファメモリ31に発生したとして、その時のライトポインタ32の値を読み出す。このとき、何らかの原因で例えばライト用イネーブル信号WEにノイズが入り、ライトポインタ32の値が例えば「512」であって、「500」〜「512」までのアドレスに余分な13バイトのデータが書き込まれているとすると、アドレス変更回路41はライトポインタ32の値を「499」と変更する。
【0108】
従って、後続のパケット27の250バイト長のアイソクロナス・データ29は、バッファメモリ31の「500」アドレスから順に書き込むことができる。その結果、バッファメモリ31の「500」アドレスから書き込まれたアイソクロナス・データ29は、読み出されるときには先頭から順に読み出される。
【0109】
又、250個目のライト用イネーブル信号WEが出力されると、ライト用カウンタ35から第2の検出回路38に第1ピリオド信号P1が出力される。又、前記MPU12から最初の入力データ切れ目信号EN1に応答して切れ目カウンタ39から第1検出信号N1が第2の検出回路38に出力される。この時、第2の検出回路38は第1ピリオド信号P1と第1検出信号N1が同時に出力されたとき正常に書き込まれたと判定する。
【0110】
反対に、ライト用イネーブル信号WEに書き込みに影響を及ぼすノイズが発生してライト用カウンタ35のカウント動作が誤動作することにより、同時でない場合には、第2の検出回路38は、異常書き込みがなされたと判断する。異常書き込みと判断した時には、第2の検出回路38は第2書き込み異常信号S3を割込み信号生成回路40に出力する。割込み信号生成回路40は第2書き込み異常信号S3に応答して第1割込み信号T1をアドレス変更回路41及びMPU12に出力する。
【0111】
アドレス変更回路41は第1割込み信号T1に応答して上記と同様な動作を実行して後続のパケット27の250バイトのアイソクロナス・データ29が予め定められた先頭アドレスから順に書き込まれるとともに読み出されるようにライトポインタ32の値を変更する。尚、この場合、第1の検出回路37と第2の検出回路38とを使って異常書き込みを検出するようにしたが、いずれか一方を使用して実施してもよい。
【0112】
(B)250バイト長のアイソクロナス・データ29の読み出し。
制御用レジスタ42の各内容は上記と同じ内容に設定されている。又、説明の便宜上、リードポインタ33の値(アドレス)は「749」を示している。
【0113】
プロトコル制御回路部21から最初のリード用イネーブル信号REが出力されると、リードポインタ33は最初のリード用イネーブル信号REに応答して「749」から「750」となる。最初の1バイトのデータはバッファメモリ31のアドレス「750」から読み出される。以後、プロトコル制御回路部21から新たなリード用イネーブル信号REが入力される毎にリードポインタ33の値がインクリメントされ、アドレスが上位の1アドレス毎にシフトしバッファメモリ31の新たなアドレスにあるアイソクロナス・データ29が1バイトづつ読み出されていく。この読み出しとともに、リード用カウンタ36は、リード用イネーブル信号REをカウントしている。
【0114】
やがて、最初のリード用イネーブル信号REから数えて250個目のリード用イネーブル信号REが出力されると、リードポインタ33の値が「999」となり、250バイト長のアイソクロナス・データ29における最後の1バイトのデータがバッファメモリ31のアドレス「999」から読み出される。
【0115】
250個目のリード用イネーブル信号REが出力されると、MPU12から出力データ切れ目信号EN2が第1の検出回路37に出力される。第1の検出回路37はその切れ目信号EN2に応答してその時のリードポインタ33の値が「249」、「499」、「749」又は「999」のいずれの特定アドレスに該当するかどうか判断する。そして、正常なリード用イネーブル信号REに基づいて250バイト長のアイソクロナス・データ29が正常に読み出されたときは、リードポインタ33の値は「999」となり4個のうちの1つの比較対象のアドレスと一致するため、第1の検出回路37は正常に読み出されたと判定する。
【0116】
反対に、一致しない場合には、第1の検出回路37は異常読み出しがなされたと判断して、第1読み出し異常信号S2を割込み信号生成回路40に出力する。割込み信号生成回路40は第1読み出し異常信号S2に応答して第2割込み信号T2をアドレス変更回路41及びMPU12に出力するようになっている。アドレス変更回路41は、第2割込み信号T2に応答して250バイト長のアイソクロナス・データ29が正常に読み出されなかった状態がバッファメモリ31に発生したとして、その時のリードポインタ33の値を読み出す。このとき、何らかの原因で例えばリード用イネーブル信号REにノイズが入り、リードポインタ33の値が「10」であって、「0」から「10」までのアドレスに書き込まれている後続のパケット27のアイソクロナス・データ29が読み出されたとすると、アドレス変更回路41はリードポインタ33の値を「999」と変更する。
【0117】
従って、後続のパケット27の250バイト長のアイソクロナス・データ29は、バッファメモリ31の「0」アドレスから順に読み出される。その結果、バッファメモリ31の「0」アドレスから書き込まれたアイソクロナス・データ29は、先頭から順に読み出される。
【0118】
又、250個目のリード用イネーブル信号REが出力されると、リード用カウンタ36から第2の検出回路38に第2ピリオド信号P2が出力される。又、前記MPU12から最初の出力データ切れ目信号EN2に応答して切れ目カウンタ39から第2検出信号N2が第2の検出回路38に出力される。第2の検出回路38は第2ピリオド信号P2と第2検出信号N2が同時に出力されたとき正常に読み出されたと判定する。
【0119】
反対に、リード用イネーブル信号REに読み出しに影響を及ぼすノイズが発生してリード用カウンタ36のカウント動作が誤動作することにより、同時でない場合には、第2の検出回路38は、異常読み出しがなされたと判断する。異常読み出しと判断した時には、第2の検出回路38は第2読み出し異常信号S4を割込み信号生成回路40に出力する。割込み信号生成回路40は第2読み出し異常信号S4に応答して第2割込み信号T2をアドレス変更回路41及びMPU12に出力する。
【0120】
アドレス変更回路41は第2割込み信号T2に応答して上記と同様な動作を実行して次の新たなパケット27の250バイト長のアイソクロナス・データ29は予め定められた先頭アドレスから順に読み出されるようにリードポインタ33の値を変更する。尚、この場合、第1の検出回路37と第2の検出回路38とを使って異常書き込みを検出するようにしたが、いずれか一方を使用して実施してもよい。
【0121】
(C)データ・ブロックの書き込み。
制御用レジスタ42の第1及び第2の有効データは第1の検出回路37及び第2の検出回路38が共に動作する内容に設定されている。又、制御用レジスタ42のバイト長変更データは50バイト長に設定されている。さらに、制御用レジスタ42の分割データは「5」になっている。即ち、50バイト長のデータ・ブロックが5個まとめて1つのパケット27の250バイト長のアイソクロナス・データ29として書き込む場合である。
【0122】
従って、ポインタループ設定回路34はライトポインタ32及びリードポインタ33のカウントアップ値を、「1000(=50×20<1024)」とする。即ち、ライトポインタ32及びリードポインタ33は、「0」から「999」のカウントアップ値までのカウンタとなる。そして、複数個の50バイト長のデータブロックがそれぞれ書き込みを完了するバッファメモリ31の特定アドレスは、「49」、「99」、「149」、「199」、「149」、「199」……「899」、「949」又は「999」の20種類のいずれかのアドレスとなる。尚、説明の便宜上、ライトポインタ32の値(アドレス)は「249」を示している。
【0123】
1個目の50バイト長のデータブロックにおける最初の1バイトのデータがDMAC13から出力されるとともに、MPU12から最初のライト用イネーブル信号WEが出力されると、上記と同様に最初の1バイトのデータはバッファメモリ31のアドレス「250」に書き込まれる。以後、MPU12から新たなライト用イネーブル信号WEが入力される毎にライトポインタ32の値がインクリメントされ、アドレスが1アドレス上位にシフトしそのシフトした新たなアドレスにデータブロックが1バイトづつ書き込まれていく。この書き込みとともに、ライト用カウンタ35は、ライト用イネーブル信号WEをカウントしている。
【0124】
最初のライト用イネーブル信号WEから数えて50個目のライト用イネーブル信号WEが出力されると、上記と同様に、1個目の50バイト長のデータブロックにおける最後の1バイトのデータがバッファメモリ31のアドレス「299」に書き込まれる。
【0125】
50個目のライト用イネーブル信号WEが出力されると、MPU12から入力データ切れ目信号EN1が出力され、第1の検出回路37はその切れ目信号EN1に応答してその時のライトポインタ32の値が前記20種類のアドレスのいずれかにアドレスに該当するかどうか判断する。そして、正常なライト用イネーブル信号WEに基づいて50バイト長のデータブロックが正常に書き込まれたときは、ライトポインタ32の値は「299」となり20種類の特定アドレスのうちの1つと一致するため、第1の検出回路37は正常に書き込まれたと判定する。
【0126】
反対に、一致しない場合には、第1の検出回路37は異常書き込みがなされたと判断して、前記と同様に、第1書き込み異常信号S1が割込み信号生成回路40に出力される。割込み信号生成回路40は第1書き込み異常信号S1に応答して第1割込み信号T1をアドレス変更回路41及びMPU12に出力する。アドレス変更回路41は、第1割込み信号T1に応答して50バイト長のデータブロックが正常に書き込まれなかった状態がバッファメモリ31に発生したとして、その時のライトポインタ32を読み出す。このとき、何らかの原因で例えばライト用イネーブル信号WEにノイズが入り、ライトポインタ32の値が「312」であって、「300」から「312」までのアドレスに余分な13バイトのデータが書き込まれているとすると、アドレス変更回路41はライトポインタ32の値を「299」と変更する。
【0127】
従って、次の2個目の50バイト長のデータブロックは、バッファメモリ31の「300」アドレスから順に書き込むことができる。その結果、バッファメモリ31の「300」アドレスから書き込まれた2個目のデータブロックは、読み出されるときには先頭から順に読み出される。
【0128】
以後、2個目〜5個目のデータブロックについも同様に判定が行われ異常書き込みが行われれば同様にライトポインタ32の値を変更する。
又、250個目のライト用イネーブル信号WEが出力されると、即ち、5個目のデータブロックの最後の1バイトを書き込むためのライト用イネーブル信号WEが出力されると、ライト用カウンタ35から第2の検出回路38に第1ピリオド信号P1が出力される。又、前記MPU12から5個目の入力データ切れ目信号EN1に応答して切れ目カウンタ39から第1検出信号N1が第2の検出回路38に出力される。第2の検出回路38は第1ピリオド信号P1と第1検出信号N1が同時に出力されたとき正常に書き込まれたと判定する。
【0129】
反対に、ライト用イネーブル信号WEに書き込みに影響を及ぼすノイズが発生してライト用カウンタ35のカウント動作が誤動作することにより、同時でない場合には、第2の検出回路38は、異常書き込みがなされたと判断する。異常書き込みと判断した時には、第2の検出回路38は第2書き込み異常信号S3を割込み信号生成回路40に出力する。割込み信号生成回路40は第2書き込み異常信号S3に応答して第1割込み信号T1をアドレス変更回路41及びMPU12に出力する。
【0130】
アドレス変更回路41は第1割込み信号T1に応答して上記と同様な動作を実行して次の新たな組の1個目のデータブロックのデータが読み出されるときに予め定められた先頭アドレスから順に読み出されるようにライトポインタ32の値を変更する。尚、この場合、第1の検出回路37と第2の検出回路38とを使って異常書き込みを検出するようにしたが、いずれか一方を使用して実施してもよい。
【0131】
(D)データ・ブロックの読み出し。
制御用レジスタ42の各内容は上記データブロックと同じとする。尚、説明の便宜上、リードポインタ33の値(アドレス)は「499」を示している。
【0132】
プロトコル制御回路部21から最初のリード用イネーブル信号REが出力されると、リードポインタ33は最初のリード用イネーブル信号REに応答して「499」から「500」となる。最初の1バイトのデータはバッファメモリ31のアドレス「500」から読み出される。以後、プロトコル制御回路部21から新たなリード用イネーブル信号REが入力される毎に前記と同様にバッファメモリ31の新たなアドレスにあるデータブロックとなるデータが1バイトづつ読み出されていく。この読み出しとともに、リード用カウンタ36は、リード用イネーブル信号REをカウントしている。
【0133】
やがて、最初のリード用イネーブル信号REから数えて50個目のリード用イネーブル信号REが出力されると、リードポインタ33の値が「549」となり、50バイト長のデータブロックとなる最後の1バイトのデータがバッファメモリ31のアドレス「549」から読み出される。
【0134】
50個目のリード用イネーブル信号REが出力されると、MPU12から出力データ切れ目信号EN2を第1の検出回路37に出力する。第1の検出回路37はその切れ目信号EN2に応答してその時のリードポインタ33の値が前記20種類の特定アドレスの中で該当するアドレスとなるかどうか判断する。そして、正常なリード用イネーブル信号REに基づいて50バイト長のデータブロックとなるデータが正常に読み出されたときは、リードポインタ33の値は「549」となり20種類の特定アドレスうちの1つと一致するため、第1の検出回路37は正常に読み出されたと判定する。
【0135】
反対に、一致しない場合には、第1の検出回路37は異常読み出しがなされたと判断して、前記と同様に、第1読み出し異常信号S2を出力する。割込み信号生成回路40は第1読み出し異常信号S2に応答して第2割込み信号T2をアドレス変更回路41及びMPU12に出力する。アドレス変更回路41は、第2割込み信号T2に応答して50バイト長のデータブロックとなるデータが正常に読み出されなかった状態がバッファメモリ31に発生したとして、その時のリードポインタ33を読み出す。このとき、何らかの原因で例えばリード用イネーブル信号REにノイズが入り、リードポインタ33の値が「510」であって、「500」から「510」までのアドレスに書き込まれている後続のデータブロックのためのデータが読み出されたとすると、アドレス変更回路41はリードポインタ33の値を「510」から「499」と変更する。
【0136】
従って、後続の50バイト長のデータブロックのためのデータは、バッファメモリ31の「500」アドレスから順に読み出される。その結果、バッファメモリ31の「500」アドレスから書き込まれた2個目のデータブロックのためのデータは、先頭から順に読み出される。
【0137】
以後、2個目〜5個目のデータブロックのためのデータの読み出しについも同様に判定が行われ異常読み出しが行われれば同様にリードポインタ33の値を変更する。
【0138】
そして、250個目のリード用イネーブル信号REが出力されると、即ち、5個目のデータブロックにおける最後の1バイトのデータの読み出しのためのリード用イネーブル信号REが出力されると、リード用カウンタ36から第2の検出回路38に第2ピリオド信号P2が出力される。又、前記MPU12から5個目の出力データ切れ目信号EN2に応答して切れ目カウンタ39から第2検出信号N2が第2の検出回路38に出力される。第2の検出回路38は第2ピリオド信号P2と第2検出信号N2が同時に出力されたとき正常に書き込まれたと判定する。
【0139】
反対に、リード用イネーブル信号REに読み出しに影響を及ぼすノイズが発生してリード用カウンタ36のカウント動作が誤動作することにより、同時でない場合には、第2の検出回路38は、異常書き込みがなされたと判断する。異常書き込みと判断した時には、第2の検出回路38は第2読み出し異常信号S4を割込み信号生成回路40に出力する。割込み信号生成回路40は第2読み出し異常信号S4に応答して第2割込み信号T2をアドレス変更回路41及びMPU12に出力する。
【0140】
アドレス変更回路41は第2割込み信号T2に応答して上記と同様な動作を実行して次の新たな組の1個目のデータブロックのデータが読み出されるときに予め定められた先頭アドレスから順に読み出されるようにリードポインタ33の値を変更する。尚、この場合、第1の検出回路37と第2の検出回路38とを使って異常書き込みを検出するようにしたが、いずれか一方を使用して実施してもよい。
【0141】
次に、上記のように構成した、実施形態の特徴を以下に説明する。
(1)上記実施形態によれば、ポインタループ設定回路34によりライトポインタ32のカウントアップ値を、250バイトのデータ長の整数倍であってバッファメモリ31の1024バイトの記憶容量を超さない複数個の中の最大の値をカウントアップ値とし、この250バイトとデータ長が決められた各アイソクロナス・データ29をライトポインタ32の書き込みアドレスに従ってバッファメモリ31に書き込む場合、正常に書き込まれた時には、複数個存在する特定のアドレスのいずれかでその書き込みが完了するようにした。そして、アイソクロナス・データ29の書き込みが完了した時にライトポインタ32のその時の書き込みアドレスが特定アドレスあるかどうかを第1の検出回路37にて判断させるようにしたので、書き込み異常かどうか判断することができる。
【0142】
(2)上記実施形態によれば、ライト用カウンタ35にて250バイトのアイソクロナス・データ29の書き込み回数をカウントさせるとともに、予め定まった正常の書き込み回数の書き込みが行われた時に第1ピリオド信号P1を出力させるようにした。そして、第2の検出回路38にて、250バイトのアイソクロナス・データ29の最後の書き込みの完了を示す切れ目信号EN1に応答して前記ライト用カウンタ35から第1ピリオドP1の有無を判断させるようにしたので、上記(1)と同様に書き込み異常が生じたかどうか判断することができる。そして、第1の検出回路37と第2の検出回路38を同時に使用することにより、より精度の高い書き込み異常の検出ができる。
【0143】
(3)上記実施形態によれば、ポインタループ設定回路34によりリードポインタ33のカウントアップ値を、250バイトのデータ長の整数倍であってバッファメモリ31の1024バイトの記憶容量を超さない複数個の中の最大の値をカウントアップ値とし、この250バイトとデータ長が決められた各アイソクロナス・データ29をリードポインタ33の読み出しアドレスに従ってバッファメモリ31から読み出す場合、正常に読み出されたた時には、複数個存在する特定のアドレスのいずれかでその読み出しが完了するようにした。そして、アイソクロナス・データ29の読み出しが完了した時にリードポインタ33のその時の読み出しアドレスが特定アドレスあるかどうかを第1の検出回路37にて判断させるようにしたので、読み出し異常かどうか判断することができる。
【0144】
(4)上記実施形態によれば、リード用カウンタ36にて250バイトのアイソクロナス・データ29の読み出し回数をカウントさせるとともに、予め定まった正常の読み出し回数の読み出しが行われた時に第2ピリオド信号P2を出力させるようにした。そして、第2の検出回路38にて、250バイトのアイソクロナス・データ29の最後の読み出しの完了を示す切れ目信号EN2に応答して前記リード用カウンタ36から第2ピリオドP2の有無を判断させるようにしたので、上記(3)と同様に読み出し異常が生じたか否かを判断することができる。そして、第1の検出回路37と第2の検出回路38を同時に使用することにより、より精度の高い読み出し異常の検出ができる。
【0145】
(5)上記実施形態では、書き込み異常と判断されたとき、アドレス変更回路41にてライトポインタ32の書き込みアドレスを複数個の特定アドレスの中からその時の示している書き込みアドレスに最も近い特定アドレスに書き替えるようにした。従って、次に書き込まれる後続のアイソクロナス・データ29を正常なアドレスから書き込み、特定の書き込みアドレスでその書き込みを完了させることができる。その結果、該後続のデータ29は正確に読み出されることになる。
【0146】
(6)上記実施形態では、読み出し異常と判断されたとき、アドレス変更回路41にてリードポインタ33の読み出しアドレスを複数個の特定アドレスの中からその時の示している読み出しアドレスに最も近い特定アドレスに書き替えるようにした。従って、次に読み出される後続のアイソクロナス・データ29を正常なアドレスから読み出され、特定の読み出しアドレスでその読み出しを完了させることができる。
【0147】
(7)上記実施例では、切れ目カウンタ39を設けて、切れ目信号EN1,EN2をカウントし分割データに基づいて第1及び第2検出信号N1,N2を出力させるようにしたので、第2の検出回路38は、複数のデータ・ブロックをまとめて1つのパケット27を作る場合の書き込み及び読み出しにも対応することができる。
【0148】
(8)上記実施形態では、アドレス変更回路41は制御用レジスタ42のバイト長変更データに基づいて適宜変更できるようにしたため、250バイト長以外の予めバイト長が決められたアイソクロナス・データ29等の転送データにも対応することがてきる。又、複数のデータ・ブロックをまとめて1つのパケット27を作る場合の書き込み及び読み出しにも対応することができる。この場合、上記(7)と相違して第1の検出回路37は各データ・ブロックの単位で書き込み及び読み出しの異常の有無を判断することができ、しかも、異常のときには特定アドレスに変更することができる。
【0149】
尚、発明の実施の形態は上記実施形態に限定されるものではなく以下のように実施してもよい。
○上記実施形態では、第1の検出回路37はMPU12からの切れ目信号EN1,EN2を入力したが、切れ目カウンタ39からの第1及び第2検出信号N1,N2を入力するようにして実施してもよい。この場合、第1の検出回路37は各データ・ブロックの単位で書き込み及び読み出しの異常の有無を判断ができなくなる。
【0150】
○上記実施形態では、パケットデータ格納メモリ回路22は、第1の検出回路37と第2の検出回路38の2つの検出回路を備えたものであったが、いずれか一方しか備えていないパケットデータ格納メモリ回路に具体化してもよい。この場合、回路規模をその分小さくすることができる。
【0151】
○上記実施形態では、異常書き込みと異常読み出しの2つの異常を検出するようにしたが、いずれか一方だけの異常検出を行うようにして実施してもよい。この場合、回路規模をその分小さくすることができる。
【0152】
○上記実施形態では、制御用レジスタ42を備えパケットデータ格納メモリ回路22に種々の機能をもたせたが、制御用レジスタ42を備えていないパケットデータ格納メモリ回路に具体化してもよい。この場合、1つの固定した条件の異常検出しかできないが、回路構成をその分簡単にすることができる。
【0153】
○上記実施形態では、IEEE1394に準拠したシステムにおけるプロトコルコントローラ11に内蔵されたパケットデータ格納メモリ回路22,23に具体化したが、FIFO形式のバッファメモリ回路であればどんなメモリ回路に応用してもよい。この場合、FIFO形式のバッファメモリ回路のみを1チップの半導体集積回路装置にして実施してもよい。勿論、FIFO形式のバッファメモリ回路を複数個含むものを1チップの半導体集積回路装置にして実施してもよい。
【0154】
【発明の効果】
請求項1及び2の発明によれば、書き込み異常が生じたとき、次に書き込まれる後続のデータを正常な位置から書き込み該後続のデータを特定の書き込みアドレスでその書き込みを完了させることができる。
【0155】
請求項3及び4の発明によれば、読み出し異常が生じたとき、次に読み出される後続のデータを正常な位置から読み出し該後続のデータを特定の読み出しアドレスでその読み出しを完了させることができる。
【0156】
請求項5の発明によれば、データの書き込みが正常に書き込まれたか検出することができる。
請求項6の発明によれば、データの読み出しが正常に読み出されたか検出することができる。
【0157】
請求項7の発明によれば、データの書き込みが正常に書き込まれたか検出することができる。
請求項8の発明によれば、データの読み出しが正常に読み出されたか検出することができる。
【0158】
請求項9の発明によれば、請求項5又は請求項7に記載した発明の効果に加えて、書き込み異常が生じたとき、次に書き込まれる後続のデータを正常な位置から書き込み該後続のデータを特定の書き込みアドレスでその書き込みを完了させることができる。
請求項10の発明によれば、請求項9に記載の発明の効果に加えて、書き込み異常が生じたとき、ライトポインタの書き込みアドレスを複数個の特定アドレスの中で最も近い特定アドレスの書き替えることで、次に書き込まれる後続のデータを正常な位置から書き込み該後続のデータを特定の書き込みアドレスでその書き込みを完了させることができる。
【0159】
請求項11の発明によれば、請求項6又は請求項8に記載した発明の効果に加えて、読み出し異常が生じたとき、次に読み出される後続のデータを正常な位置から読み出し該後続のデータを特定の読み出しアドレスでその読み出しを完了させることができる。
【0161】
請求項12の発明によれば、請求項11に記載の発明の効果に加えて、読み出し異常が生じたとき、リードポインタの書き込みアドレスを複数個の特定アドレスの中で最も近い特定アドレスの書き替えることで、次に読み出される後続のデータを正常な位置から読み出し該後続のデータを特定の読み出しアドレスでその読み出しを完了させることができる。
【0162】
請求項13の発明によれば、請求項1又は請求項2に記載の発明の効果に加えて、ライトポインタの書き込みアドレスが複数個の特定アドレスのいずれにも該当しない時に、次に書き込まれる後続のデータを正常な位置から書き込み該後続のデータを特定の書き込みアドレスでその書き込みを完了させることができる。
【0163】
請求項14の発明によれば、請求項3又は請求項4に記載の発明の効果に加えて、リードポインタの書き込みアドレスが複数個の特定アドレスのいずれにも該当しない時に、次に読み出される後続のデータを正常な位置から読み出し該後続のデータを特定の読み出しアドレスでその読み出しを完了させることができる。
【図面の簡単な説明】
【図1】 送信用パケットデータ格納メモリ回路を示すブロック図。
【図2】 パソコン内の構成を説明するためのブロック図。
【図3】 IEEE1394に準拠したバスを用いたシステム構成図。
【図4】 パケットを説明するための説明図。
【符号の説明】
22 送信用パケットデータ格納メモリ回路
31 バッファメモリ
32 ライトポインタ
33 リードポインタ
34 ポインタループ設定回路
35 ライト用カウンタ
36 リード用カウンタ
37 第1の検出回路
38 第2の検出回路
39 切れ目カウンタ
40 割込み信号生成回路
41 アドレス変更回路
Claims (14)
- 決められたデータ長のデータを複数回の書き込み回数に分けてライトポインタが指定するバッファメモリの書き込みアドレスに書き込むデータ書き込み方法において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値とし、
前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、その時の前記ライトポインタの書き込みアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時には、前記ライトポインタの書き込みアドレスを前記特定アドレスに書き替えるようにしたデータ書き込み方法。 - 決められたデータ長のデータを複数回の書き込み回数に分けてライトポインタが指定するバッファメモリの書き込みアドレスに書き込むデータ書き込み方法において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値としてそのライトポインタをリセット動作させるとともに、前記ライト用イネーブル信号をカウントするライト用カウンタにて前記書き込み回数をカウントさせ、
前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、前記ライト用カウンタが前記書き込み回数を示していない時には、前記ライトポインタの書き込みアドレスを、前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに書き替えるようにしたデータ書き込み方法。 - 決められたデータ長のデータを複数回の読み出し回数に分けてリードポインタが指定するバッファメモリの読み出しアドレスから読み出すデータ読み出し方法において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値としてそのリードポインタをリセット動作させ、
前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、その時の前記リードポインタの読み出しアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時には、前記リードポインタの読み出しアドレスを前記特定アドレスに書き替えるようにしたデータ読み出し方法。 - 決められたデータ長のデータを複数回の読み出し回数に分けてリードポインタが指定するバッファメモリの読み出しアドレスから読み出すデータ読み出し方法において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値としてそのリードポインタをリセット動作させるとともに、前記リード用イネーブル信号をカウントするリード用カウンタにて前記読み出し回数をカウントさせ、
前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、前記リード用カウンタが前記読み出し回数を示していない時には、前記リードポインタの読み出しアドレスを、前記カウントアップ値とデータ長とに基づいて求めた特定アドレスに書き替えるようにしたデータ読み出し方法。 - 決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、
ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、
リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記ライトポインタのカウントアップ値として指定するポインタループ設定回路と、
前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、その時のライトポインタの書き込みアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時、書き込み異常と判断するライト用検出回路とを備えたメモリ回路。 - 決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、
ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、
リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、
前記データ長の整数倍であって前記バッファメモリの記憶容量を超さない値を前記リードポインタのカウントアップ値として指定するポインタループ設定回路と、
前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、その時のリードポインタの読み出しアドレスが前記カウントアップ値とデータ長とに基づいて求められた特定アドレスに該当しない時、読み出し異常と判断するリード用検出回路とを備えたメモリ回路。 - 決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、
ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、
リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるメモリ回路において、
前記ライト用イネーブル信号に応答して前記書き込み回数をカウントするライト用カウンタと、
前記書き込み回数に分けて順に書き込まれる前記データの最後の書き込みが完了した時、前記ライト用カウンタが前記書き込み回数を示していない時、前記データの書き込み異常と判断するライト用検出回路とを備えたメモリ回路。 - 決められたデータ長のデータが複数回の書き込み回数に分けて順に書き込まれるとともに複数回の読み出し回数に分けて順に読み出されるバッファメモリと、
ライト用イネーブル信号に応答してバッファメモリの書き込みアドレスをシフトしながら指定するライトポインタと、
リード用イネーブル信号に応答してバッファメモリの読み出しアドレスをシフトしながら指定するリードポインタとからなるデータ格納メモリ回路において、
前記リード用イネーブル信号に応答して前記読み出し回数をカウントするリード用カウンタと、
前記読み出し回数に分けて順に読み出される前記データの最後の読み出しが完了した時、前記リード用カウンタが前記読み出し回数を示していない時、前記データの読み出し異常と判断するリード用検出回路とを備えたメモリ回路。 - 請求項5又は請求項7に記載のメモリ回路において、
書き込み異常と判断した時、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中からその時の示している書き込みアドレスに最も近い特定アドレスに書き替えるライト用アドレス変更回路を備えたメモリ回路。 - 請求項9に記載のメモリ回路において、
前記特定アドレスを複数個求め、
書き込み異常と判断した時には、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中からその時の示している書き込みアドレスに最も近い特定アドレスに書き替えるようにしたメモリ回路。 - 請求項6又は請求項8に記載のメモリ回路において、
前記リード用検出回路が読み出し異常と判断した時、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスで最も近い特定アドレスに書き替えるリード用アドレス変更回路を備えたメモリ回路。 - 請求項11に記載のメモリ回路において、
前記特定アドレスを複数個求め、
読み出し異常と判断した時には、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにしたメモリ回路。 - 請求項1又は請求項2に記載のデータ書き込み方法において、
前記特定アドレスを複数個求め、
データの最後の書き込みが完了した時のライトポインタの書き込みアドレスが前記複数個の特定アドレスのいずれにも該当しない時には、前記ライトポインタの書き込みアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにしたデータ書き込み方法。 - 請求項3又は請求項4に記載のデータ読み出し方法において、
前記特定アドレスを複数個求め、
データの最後の読み出しが完了した時のリードポインタの読み出しアドレスが前記複数個の特定アドレスのいずれにも該当しない時には、前記リードポインタの読み出しアドレスを前記複数個の特定アドレスの中で最も近い特定アドレスに書き替えるようにしたデータ読み出し方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10016197A JP3887059B2 (ja) | 1997-04-17 | 1997-04-17 | データ書き込み方法、データ読み出し方法、及びメモリ回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10016197A JP3887059B2 (ja) | 1997-04-17 | 1997-04-17 | データ書き込み方法、データ読み出し方法、及びメモリ回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10293730A JPH10293730A (ja) | 1998-11-04 |
JP3887059B2 true JP3887059B2 (ja) | 2007-02-28 |
Family
ID=14266601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10016197A Expired - Fee Related JP3887059B2 (ja) | 1997-04-17 | 1997-04-17 | データ書き込み方法、データ読み出し方法、及びメモリ回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3887059B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5430369B2 (ja) * | 2009-11-27 | 2014-02-26 | 富士通株式会社 | バッファメモリ装置、及び、バッファリング方法 |
CN114047712B (zh) * | 2021-10-12 | 2023-04-18 | 中国电子科技集团公司第二十九研究所 | 一种基于反射内存网的半实物仿真系统的数据通信方法 |
-
1997
- 1997-04-17 JP JP10016197A patent/JP3887059B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10293730A (ja) | 1998-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0631239B1 (en) | Serial data transfer method and system | |
JP2002135257A (ja) | シリアル通信用データ処理装置 | |
JPS6375955A (ja) | プログラムモ−ド・アクセス制御方式 | |
EP0564118B1 (en) | Serial data transfer apparatus | |
JP3887059B2 (ja) | データ書き込み方法、データ読み出し方法、及びメモリ回路 | |
US6584512B1 (en) | Communication DMA device for freeing the data bus from the CPU and outputting divided data | |
JPS6359042A (ja) | 通信インタ−フエイス装置 | |
JPH0221619B2 (ja) | ||
EP0410382A2 (en) | Data transfer controller using direct memory access method | |
JPH10285223A (ja) | 信号処理回路 | |
US5497481A (en) | Microcomputer computer system having plural programmable timers and preventing memory access operations from interfering with timer start requests | |
JP4148290B2 (ja) | 信号処理回路 | |
JPS63228856A (ja) | 通信制御装置 | |
JPH11161467A (ja) | データ転送制御装置 | |
JP3939078B2 (ja) | データ書き込み制御回路 | |
JP3217042B2 (ja) | 疑似パリティエラー信号発生機能を備えた半導体装置 | |
JPH02181248A (ja) | Dmaシステム | |
JPS63187943A (ja) | 通信制御装置 | |
JPS6188355A (ja) | デ−タ処理装置 | |
JP4410978B2 (ja) | データ転送装置及びその動作制御方法 | |
JPS63228855A (ja) | 通信制御装置 | |
JP4148291B2 (ja) | 信号処理回路 | |
JP4148292B2 (ja) | 信号処理回路 | |
JP4192988B2 (ja) | 信号処理回路 | |
JPS6318776B2 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040415 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040415 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20050830 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060912 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060919 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060921 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061030 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061121 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061124 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091201 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091201 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101201 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111201 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111201 Year of fee payment: 5 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111201 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111201 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121201 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121201 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131201 Year of fee payment: 7 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |