(57)【要約】【課題】比較的簡単な回路構成と制御により高速データを的確に受信する。【解決手段】連続データＰＤを受信した場合、最初の状態ではセレクタ１１−０を介してFIFO１０−０にデータを蓄積する。FIFO１０−０のデータ数がトリガレベルＴＧに達すると、切替レジスタ１２が書き込み方向と読み出し方向のセレクタ１１−０，１１−１の接続を切り換える。又、通常の動作の場合は、切替制御回路１３が割込要求信号Ｓ１３を割込回路１４に出し、割込回路１４がＣＰＵ１５に割込要求信号Ｓ１４を出す。割込要求信号Ｓ１４を受けたＣＰＵ１５は、FIFO１０−０内の蓄積データを退避させるため、FIFO１０−０が空となり、FIFO１０−１がトリガレベルＴＧに達したときに、継続してデータを受信するための準備が可能である。オーバーランエラー状態の場合は、切替制御回路１３が切替レジスタ１２の動作を停止させる。【選択図】図１
2006221435.tif 000002
【特許請求の範囲】
【請求項１】
フラグ制御信号に基づき切替信号を生成してこの切替信号を反転切替信号により保持する切替フラグと、
連続して送られてくるデータの書き込み経路を、前記切替信号により第１又は第２の経路に切り替える第１のセレクタと、
前記第１の経路から入力される前記データを順に書き込んで順に読み出すための第１のメモリと、
前記第２の経路から入力される前記データを順に書き込んで順に読み出すための第２のメモリと、
前記第１又は第２のメモリからの読み出しデータの読み出し経路を、前記切替信号により切り替える第２のセレクタと、
前記切替フラグに与える前記フラグ制御信号を生成する切替制御回路とを備え、
前記切替制御回路は、
書き込み側の前記第１又は第２のメモリに蓄積されたデータ数の読み出しレベルであるトリガレベルを任意に設定可能なトリガレベル設定手段と、
前記第１、第２のメモリに蓄積されたデータ数をそれぞれ計数して前記第１のメモリの第１の計数値及び前記第２のメモリの第２の計数値を出力する計数手段と、
前記トリガレベルと前記第１の計数値とを比較して第１の比較結果を出力すると共に、前記トリガレベルと前記第２の計数値とを比較して第２の比較結果を出力する比較手段と、
前記第１の比較結果と前記反転切替信号との第１の論理積を求めると共に、前記第２の比較結果と前記切替信号との第２の論理積を求め、前記第１及び第２の論理積の論理和を求める第１の論理回路と、
前記論理和とクロック信号との論理積を求めて前記フラグ制御信号を生成する第２の論理回路とを有することを特徴とするメモリ回路。
【請求項２】
フラグ制御信号に基づき切替信号を生成してこの切替信号を反転切替信号により保持する切替フラグと、
連続して送られてくるデータの書き込み経路を、前記切替信号により第１又は第２の経路に切り替える第１のセレクタと、
前記第１の経路から入力される前記データを順に書き込んで順に読み出すための第１のメモリと、
前記第２の経路から入力される前記データを順に書き込んで順に読み出すための第２のメモリと、
前記第１又は第２のメモリからの読み出しデータの読み出し経路を、前記切替信号により切り替える第２のセレクタと、
前記切替フラグに与える前記フラグ制御信号を生成する切替制御回路とを備え、
前記切替制御回路は、
書き込み側の前記第１又は第２のメモリに蓄積されたデータ数の読み出しレベルであるトリガレベルを任意に設定可能なトリガレベル設定手段と、
前記第１、第２のメモリに蓄積されたデータ数をそれぞれ計数して前記第１のメモリの第１の計数値及び前記第２のメモリの第２の計数値を出力する計数手段と、
前記トリガレベルと前記第１の計数値とを比較して第１の比較結果を出力し、前記トリガレベルと前記第２の計数値とを比較して第２の比較結果を出力し、データ数０と前記第１の計数値とを比較して第３の比較結果を出力し、更に、データ数０と前記第２の計数値とを比較して第４の比較結果を出力する比較手段と、
前記第１の比較結果と前記反転切替信号との第１の論理積を求めると共に、前記第２の比較結果と前記切替信号との第２の論理積を求め、前記第１及び第２の論理積の第１の論理和を求める第１の論理回路と、
前記第２の比較結果、前記第３の比較結果の反転結果、及び前記切替信号の論理積を求めて第１のセット信号を生成し、第１のオーバランエラーフラグ信号、前記第３の比較結果、及び前記切替信号の論理積を求めて第１のリセット信号を生成する第２の論理回路と、
前記第１の比較結果、前記第４の比較結果の反転結果、及び前記反転切替信号の論理積を求めて第２のセット信号を生成し、第２のオーバランエラーフラグ信号、前記第４の比較結果、及び前記反転切替信号の論理積を求めて第２のリセット信号を生成する第３の論理回路と、
クロック信号に基づき前記第１のセット信号をラッチして前記第１のオーバランエラーフラグ信号を出力し、前記クロック信号に基づき前記第１のリセット信号をラッチするとリセットされる第１のオーバランエラーフラグと、
前記クロック信号に基づき前記第２のセット信号をラッチして前記第２のオーバランエラーフラグ信号を出力し、前記クロック信号に基づき前記第２のリセット信号をラッチするとリセットされる第２のオーバランエラーフラグと、
前記第１及び第２のオーバランエラーフラグ信号の第２の論理和を求める第４の論理回路と、
前記第１の論理和、前記第２の論理和の反転信号、及び前記クロック信号の論理積を求めて前記フラグ制御信号を生成する第５の論理回路とを有することを特徴とするメモリ回路。
【請求項３】
フラグ制御信号に基づき切替信号を生成してこの切替信号を反転切替信号により保持する切替フラグと、
連続して送られてくるデータの書き込み経路を、前記切替信号により第１又は第２の経路に切り替える第１のセレクタと、
前記第１の経路から入力される前記データを順に書き込んで順に読み出すための第１のメモリと、
前記第２の経路から入力される前記データを順に書き込んで順に読み出すための第２のメモリと、
前記第１又は第２のメモリからの読み出しデータの読み出し経路を、前記切替信号により切り替える第２のセレクタと、
前記切替フラグに与える前記フラグ制御信号を生成する切替制御回路とを備え、
前記切替制御回路は、
書き込み側の前記第１又は第２のメモリに蓄積されたデータ数の読み出しレベルであるトリガレベルを任意に設定可能なトリガレベル設定手段と、
前記第１、第２のメモリに蓄積されたデータ数をそれぞれ計数して前記第１のメモリの第１の計数値及び前記第２のメモリの第２の計数値を出力する計数手段と、
前記トリガレベルと前記第１の計数値とを比較して第１の比較結果を出力し、前記トリガレベルと前記第２の計数値とを比較して第２の比較結果を出力し、データ数０と前記第１の計数値とを比較して第３の比較結果を出力し、更に、データ数０と前記第２の計数値とを比較して第４の比較結果を出力する比較手段と、
前記第１、第４の比較結果と前記反転切替信号との第１の論理積を求めると共に、前記第２、第３の比較結果と前記切替信号との第２の論理積を求め、前記第１及び第２の論理積の論理和を求める第１の論理回路と、
前記論理和、クロック信号、及びオーバランエラー信号の論理積を求めて前記フラグ制御信号を生成する第２の論理回路とを有することを特徴とするメモリ回路。
【請求項４】
フラグ制御信号に基づき切替信号を生成してこの切替信号を反転切替信号により保持する切替フラグと、
連続して送られてくるデータの書き込み経路を、前記切替信号により第１又は第２の経路に切り替える第１のセレクタと、
前記第１の経路から入力される前記データを順に書き込んで順に読み出すための第１のメモリと、
前記第２の経路から入力される前記データを順に書き込んで順に読み出すための第２のメモリと、
前記第１又は第２のメモリからの読み出しデータの読み出し経路を、前記切替信号により切り替える第２のセレクタと、
前記切替フラグに与える前記フラグ制御信号を生成する切替制御回路とを備え、
前記切替制御回路は、
書き込み側の前記第１又は第２のメモリに蓄積されたデータ数の読み出しレベルであるトリガレベルを任意に設定可能なトリガレベル設定手段と、
前記第１、第２のメモリに蓄積されたデータ数をそれぞれ計数して前記第１のメモリの第１の計数値及び前記第２のメモリの第２の計数値を出力する計数手段と、
前記トリガレベルと前記第１の計数値とを比較して第１の比較結果を出力すると共に、前記トリガレベルと前記第２の計数値とを比較して第２の比較結果を出力する比較手段と、
前記第１の比較結果と前記反転切替信号との第１の論理積を求めると共に、前記第２の比較結果と前記切替信号との第２の論理積を求め、前記第１、第２の論理積と、外部から入力される反転制御用の信号との論理和を求める第１の論理回路と、
前記論理和とクロック信号との論理積を求めて前記フラグ制御信号を生成する第２の論理回路とを有することを特徴とするメモリ回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアルポート等で使用され、データを一時保管するFIFO（First In First Out、先入れ先出し）メモリ等を有し、連続して送られてくるデータをFIFOメモリ等の容量以上に受信し続けることを可能にしたメモリ回路に関するものである。
【背景技術】
【０００２】
従来、例えば、シリアルポートに使用されているメモリ回路には、連続して送信されるデータを保管するため、ある容量（トリガレベル）に達すると、中央処理装置（以下「ＣＰＵ」という。）にデータのロード（読み出し）を要求する機能が設けられている。この構成例を図１２に示す。
【０００３】
図１２は、従来のメモリ回路の一例を示す概略の構成図である。
このメモリ回路は、連続したシリアルデータ（直列データ）ＳＤを受信してパラレルデータ（並列データ）ＰＤに変換する受信シフトレジスタ１、パラレルデータＰＤを一時保管する上書き可能な複数のメモリセル２ａを有するFIFOメモリ（以下単に「FIFO」という。）２、割込回路３、及びパラレルデータＰＤのロード等を制御するＣＰＵ４を備えている。
【０００４】
このメモリ回路では、連続したシリアルデータＳＤが送信されてくると、これが受信シフトレジスタ１によりパラレルデータＰＤに変換された後、受信用のFIFO２においてそのパラレルデータＰＤがメモリセル２ａに書き込まれて一時保管される。FIFO２内に書き込まれたデータ量が、ある一定の水準（トリガレベルＴＧ）に達すると、FIFO２は割込回路３に対して、FIFO割込要求信号Ｓ２を発生させる。割込回路３は、この割り込みをＣＰＵ４に対して、割込要求信号Ｓ３として伝える。割込要求信号Ｓ３を受けたＣＰＵ４は、FIFO２に対して割込処理を実行し、FIFO２に蓄積されていたデータＰＤを該ＣＰＵ４にロードＬＤする。この機能により、FIFO２に蓄積されたデータＰＤを退避させ、FIFO２の容量以上にデータＰＤを書き込み続けることを可能としている。
【０００５】
ところが、図１２のメモリ回路では、FIFO２に蓄積されたデータＰＤをＣＰＵ４が退避している間に、外部からデータＳＤが送信された場合の処理が難しい。一般的には、外部から送信されるデータＳＤの間隔は、ＣＰＵ４がデータＰＤをロードＬＤする時間より十分長いため問題になることは少ないが、逆にいえば、高速データの受信には不向きである。
【０００６】
又、仮に前記の場合のように送信データＳＤの間隔が短い場合であっても、データＰＤが蓄積されていないFIFO２のメモリセル２ａにデータＰＤを書き込むことは可能であるが、この場合、FIFO２としてはデータＰＤの書き込みと読み出しを同時に行うことになるため、FIFO２の制御が複雑になるという欠点がある。
【０００７】
そこで、このような欠点を解決するために、下記の特許文献１の技術を適用することが考えられる。
【０００８】
【特許文献１】特開平８−９８０３６号公報（図１）
【０００９】
この特許文献１の図１には、シリアルポートを持つマルチポートＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）からなるフレームメモリを２面有する画像再生装置の技術が記載されている。この装置において、受信されて伸長復元された画像信号が一方のフレームメモリに書き込まれている時には、他方のフレームメモリが画像表示用に使用され、蓄積された画像信号が読み出されて表示される。
【００１０】
この技術を利用して、図１２のFIFO２を２面設け、この２面のFIFOを書き込み用と読み出し用に交互に切り替える構成にして、前記の欠点を解決することが考えられる。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、図１２のメモリ回路において、FIFO２を２面設けて書き込み用と読み出し用に交互に切り替える構成にする場合、比較的簡単な回路構成と制御により高速データを的確に受信できるメモリ回路を実現することが困難であった。
【課題を解決するための手段】
【００１２】
前記課題を解決するために、本発明のメモリ回路では、フラグ制御信号に基づき切替信号を生成してこの切替信号を反転切替信号により保持する切替フラグと、連続して送られてくるデータの書き込み経路を、前記切替信号により第１又は第２の経路に切り替える第１のセレクタと、前記第１の経路から入力される前記データを順に書き込んで順に読み出すための第１のメモリと、前記第２の経路から入力される前記データを順に書き込んで順に読み出すための第２のメモリと、前記第１又は第２のメモリからの読み出しデータの読み出し経路を、前記切替信号により切り替える第２のセレクタと、前記切替フラグに与える前記フラグ制御信号を生成する切替制御回路とを備えている。
【００１３】
前記切替制御回路は、書き込み側の前記第１又は第２のメモリに蓄積されたデータ数の読み出しレベルであるトリガレベルを任意に設定可能なトリガレベル設定手段と、前記第１、第２のメモリに蓄積されたデータ数をそれぞれ計数して前記第１のメモリの第１の計数値及び前記第２のメモリの第２の計数値を出力する計数手段と、前記トリガレベルと前記第１の計数値とを比較して第１の比較結果を出力すると共に、前記トリガレベルと前記第２の計数値とを比較して第２の比較結果を出力する比較手段と、前記第１の比較結果と前記反転切替信号との第１の論理積を求めると共に、前記第２の比較結果と前記切替信号との第２の論理積を求め、前記第１及び第２の論理積の論理和を求める第１の論理回路と、前記論理和とクロック信号との論理積を求めて前記フラグ制御信号を生成する第２の論理回路とを有している。
【発明の効果】
【００１４】
請求項１に係る発明によれば、受信用の２面の第１、第２のメモリを有し、受信データの蓄積を交互に行うため、高速なデータに対しても連続した受信が可能である。しかも、トリガレベル設定手段により、第１、第２のメモリに対してトリガレベルを自由に設定でき、これにより、受信データに対して柔軟な設定が可能である。
【００１５】
請求項２に係る発明によれば、オーバランエラー信号を発生させるための第２、第３、第４の論理回路、及び第１、第２のオーバランエラーフラグ等を設けたので、２面の第１、第２のメモリフル状態でオーバランエラー発生時は、切替フラグの動作を停止させ、切替信号の反転暴走動作を抑制できる。この際、最新の受信データは読み出すことが可能であり、更に、消費電力の削減も実現できる。
【００１６】
請求項３に係る発明によれば、オーバランエラーが発生してオーバランエラー信号が入力されると、切替フラグが停止して切替信号が発生しないので、第１及び第２のメモリに蓄積されたデータを読み出すことができる。
【００１７】
請求項４に係る発明によれば、外部から入力される反転制御用の信号により切替信号を反転できるので、オーバランエラーが発生した場合、最新のデータが蓄積されている第１又は第２のメモリのデータを退避した後、外部からの反転制御用の信号により第１又は第２のメモリの読み出しメモリを切り替え、古いデータが蓄積されているメモリからデータを退避させることが可能になる。
【発明を実施するための最良の形態】
【００１８】
本発明の最良の実施形態では、受信用のメモリ回路において、内部に任意の容量のFIFOを２面持ち、外部からのデータを書き込むFIFOと蓄積されたデータを外部に読み出すFIFOとを分離し、且つ、書き込み側のFIFOに蓄積されたデータがあるトリガレベル以上に達したら、書き込みに使用していたFIFOを読み出し用に、同様に読み出し用に使用していたFIFOは書き込み用に接続を切替え、連続して送られてくる外部からのデータを途切れることなく受信しつづけることができる。
【００１９】
又、前記の受信用のメモリ回路において、切替フラグを制御するための切替制御回路は、書き込み側のFIFOに蓄積されたデータの数がＣＰＵへ読み出しを要求するレベルを規定する、トリガレベルを自由に設定できるためのトリガレジスタを持ち、２面あるFIFOのどちらか一方がこのトリガレベルに達するとフラグを立たせるように、それぞれFIFOとトリガレジスタとを比較する比較器を持ち、この片方の比較器の出力と切替信号の論理積を取り、他方の比較器の出力と反転切替信号の論理積を取り、これら２つのＡＮＤ回路の出力をＯＲ回路で論理和を生成し、このＯＲ回路の出力とクロック信号の論理積を取り、この出力を、切替信号を生成するための切替フラグに入力し、この切替フラグの出力を切替信号とし、この切替信号の反転切替信号を同じ切替フラグに入力している。
【００２０】
このように、本実施形態のメモリ回路では、FIFOを２面持ち、受信データで片側のFIFO内の蓄積データが容量に達すると、もう片方のFIFOに切り替り、データの受信を続けられるようにしたため、高速データの受信に対応できる。又、それぞれのFIFOは、必ず書き込みか又は読み出しのどちらか一方の用途に使用するため、FIFO自体の制御が簡潔になる。
【実施例１】
【００２１】
（図１〜図３の構成）
図１は、本発明の実施例１を示すメモリ回路の概略の構成図である。
このメモリ回路は、パラレルデータＰＤを一時記憶するための上書き可能な複数のメモリセル１０ａをそれぞれ有する２面の第１、第２のメモリ（例えば、FIFO）１０−０，１０−１と、切替信号ＳＧによりFIFO１０−０，１０−１の入力側を切り替える第１のセレクタ１１−０と、切替信号ＳＧによりFIFO１０−０，１０−１の出力側を切り替える第２のセレクタ１１−１と、切替信号ＳＧを生成する切替フラグ（例えば、フリップフロップ回路（以下「ＦＦ」という。）からなる切替レジスタ）１２と、この切替レジスタ１２を制御すると共にFIFO割込要求信号Ｓ１３等を出力する切替制御回路１３とを備えている。更に、FIFO割込要求信号Ｓ１３を受け付けて割込要求信号Ｓ１４を出力する割込回路１４と、割込要求信号Ｓ１４を入力すると、FIFO１０−０，１０−１に蓄積されたパラレルデータＰＤをロードＬＤするＣＰＵ１５とが設けられている。
【００２２】
このメモリ回路では、連続したシリアルデータＳＤが送られてくると、これが図示しない受信シフトレジスタによりパラレルデータＰＤに変換される。この連続したパラレルデータＰＤを受信すると、最初の状態では、そのパラレルデータＰＤをセレクタ１１−０を介してFIFO１０−０に蓄積する。FIFO１０−０のデータ数がトリガレベルＴＧに達すると、切替レジスタ１２が切替信号ＳＧを出力してセレクタ１１−０，１１−１の書き込み方向と読み出し方向の接続を切り換える。これにより、FIFO１０−１で受信したパラレルデータＰＤを継続して蓄積できるため、高速な連続データに対応が可能である。
【００２３】
又、通常の動作の場合は、切替制御回路１３がFIFO割込要求信号Ｓ１３を割込回路１４に出し、これを受けた割込回路１４がＣＰＵ１５に割込要求信号Ｓ１４を出す。割込要求を受けたＣＰＵ１５は、FIFO１０−０内の蓄積データをロードＬＤして退避させるため、FIFO１０−０が空となり、FIFO１０−１がトリガレベルＴＧに達した時に、継続してパラレルデータＰＤを受信するための準備が可能である。
【００２４】
図２は、図１のFIFO１０−０，１０−１付近を示す構成図である。
送られてくる連続したシリアルデータＳＤをパラレルデータＰＤに変換する受信シフトレジスタ９の出力側には、セレクタ１１−０を介して２面のFIFO１０−０，１０−１が接続されている。このFIFO１０−０，１０−１の出力側は、セレクタ１１−１を介してデータバス１６に接続されている。
【００２５】
このメモリ回路では、一方のFIFO１０−０又は１０−１がセレクタ１１−０を介して外部からの送信データＳＤの書き込み側に接続されている場合、他方のFIFO１０−１又は１０−０は、ＣＰＵ１５によりデータを退避させられるようにセレクタ１１−１を介してデータバス１６側に接続されている。FIFO１０−０，１０−１の接続方向は、切替レジスタ１２の切替信号ＳＧにより制御されていて、例えば、切替信号ＳＧの値が“０”の場合、FIFO１０−０はセレクタ１１−０を介して外部データＰＤを受信する側に接続され、FIFO１０−１はＣＰＵ１５からデータを退避されるためセレクタ１１−１を介してデータバス１６側に接続される。これとは逆に、切替信号ＳＧの値が“１”の場合には、FIFO１０−０がセレクタ１１−１を介してデータバス１６側に接続され、FIFO１０−１がセレクタ１１−０を介して外部データＰＤを受信する側に接続される。
【００２６】
図３は、図１の切替レジスタ１２及び切替制御回路１３を示す構成図である。
切替制御回路１３は、FIFO１０−０，１０−１のトリガレベルＴＧを任意に設定可能なトリガレベル設定手段（例えば、トリガレジスタ）２０と、各FIFO１０−０，１０−１にそれぞれ蓄積されているデータＰＤの数を示す計数手段（例えば、レジスタからなるカウンタ）２１−０，２１−１と、このカウンタ２１−０，２１−１の出力側に接続された比較手段（例えば、比較器）２２−０，２２−１、第１の論理回路（例えば、ＡＮＤ回路２３−０，２３−１及びＯＲ回路２４）と、このＯＲ回路２４の出力側に接続された第２の論理回路（例えば、ＡＮＤ回路）２５と、ＦＦからなる切替レジスタ１２の切替信号ＳＧを反転して反転切替信号ＳＧＢを生成する反転回路２６とにより構成されている。
【００２７】
２個のカウンタ２１−０，２１−１は、以下のような論理記述で示されるように、書き込み時にカウント値を＋１インクリメント（加算）し、読み出し時−１デクリメント（減算）する。
always @(clock)
begin
if ( reset )
count <= 0;
else if ( write & !read )
count <= ( count + 1);
else if( !write & read )
count <= ( count - 1);
end
【００２８】
この論理では、リセットでカウント値が０に設定され、書き込みだったら（カウント値＋１）となり、読み出しだったら、（カウント値−１）となる。
【００２９】
カウンタ２１−０，２１−１は、２個のFIFO１０−０，１０−１がそれぞれ有し、FIFO１０−０側のカウンタをカウンタ２１−０、FIFO１０−１側のカウンタをカウンタ２１−１とする。カウンタ２１−０，２１−１とは別に、FIFO１０−０，１０−１内の蓄積されたデータＰＤをＣＰＵ１５へ退避させるための水準値（トリガレベルＴＧ）を格納するトリガレジスタ２０が設けられている。このトリガレジスタ２０の値（トリガレベルＴＧ）は、プログラムで可変可能である。
【００３０】
比較器２２−０で、カウンタ２１−０の値とトリガレベルＴＧを比較し、比較器２２−１でカウンタ２１−１の値とトリガレベルＴＧを比較している。カウンタ２１−０，２１−１の値がトリガレベルＴＧに達すると、比較器２２−０，２２−１により、“１”が出力される。比較器２２−０の出力はＡＮＤ回路２３−０で、切替信号ＳＧの反転切替信号ＳＧＢとの論理積を取り、比較器２２−１の出力はＡＮＤ回路２３−１で、切替信号ＳＧとの論理積をとる。このそれぞれのＡＮＤ回路２３−０，２３−１からの出力をＯＲ回路２４に入力する。このため、書き込み方向に接続されていた側のFIFO１０−０又は１０−１がトリガレベルＴＧに達すると、このＯＲ回路２４の出力が“１”になる。そして、このＯＲ回路２４の出力とクロックＣＫとの論理積をＡＮＤ回路２５で取り、切替レジスタ１２を構成するＦＦのクロック入力端子に入力する。切替レジスタ１２は、いずれかのFIFO１０−０又は１０−１がトリガレベルＴＧに達すると、次のマシンサイクルで、現在の切替信号ＳＧを反転回路２６で反転した反転切替信号ＳＧＢをラッチする。このため、例えばカウンタ２１−０がトリガレベルＴＧに達していた場合、次のマシンサイクルでは、反転切替信号ＳＧＢは“１”から“０”に切り替わるため、切替レジスタ１２のクロック入力端子には連続してクロックＣＫが入力されることはない。
【００３１】
（図３の動作）
図４は、図３の切替制御回路１３の動作を示すタイミングチャートである。
例えば、トリガレベルＴＧは１６に設定されているとし、最初の状態では切替信号ＳＧは“０”であるとする。
【００３２】
カウンタ２１−０の値がクロック信号（以下単に「クロック」という。）ＣＫの立ち上がりエッジで１６に達すると、トリガレベルＴＧに達するため、比較器２２−０は“０”から“１”へと変化する。この出力と反転切替信号ＳＧＢとの論理積をＡＮＤ回路２３−０で取るが、初期状態では反転切替信号ＳＧＢは“１”のため、同じくＡＮＤ回路２３−１も“０”から“１”に切り替わる。次段のＯＲ回路２４もカウンタ２１−１側の方が“０”のため、同時刻で同様に“０”から“１”に切り替わる。このため、ＡＮＤ回路２５でクロックＣＫとの論理積が取られ、１マシンサイクルのクロックＣＫが切替レジスタ１２のクロック入力端子に入力される。
【００３３】
切替レジスタ１２は、この１クロックＣＫ分のパルスの立ち上がりエッジで、データ入力端子から入力される反転切替信号ＳＧＢをラッチし、次のマシンサイクルで出力端子から出力される切替信号ＳＧを“０”から“１”に切り替える。この切替信号ＳＧに対する反転回路２６の反転により、比較器２２−０の出力は“１”のままでも、ＡＮＤ回路２３−０の出力は“１”から“０”に変化し、これがＯＲ回路２４を介してＡＮＤ回路２５まで伝播するため、切替レジスタ１２のクロック入力端子にはパルスが入力されなくなり、切替信号ＳＧが反転されたままその切替レジスタ１２により保持される。
【００３４】
（図５、図６の構成）
図５は、図１のメモリ回路におけるオーバランエラー状態を示す概略の構成図である。
オーバランエラー状態とは、データＰＤを受信している側のFIFO（例えば、１０−１）の容量がトリガレベルＴＧに達しながら、反対の読み出し側のFIFO１０−０の容量が０レベルでない状態を指す。これは、ＣＰＵ１５へのデータ退避を忘れた場合に生じる。このように、受信側のFIFO１０−１の容量がトリガレベルＴＧに達すると、読み出し側のFIFO１０−０が受信側に切り替わってしまうので、残存データの上書き等といった問題が生じる。これを防止するために、図１の切替制御回路１３に代えて、図５においてオーバランエラー防止機能を有する切替制御回路１３Ａを設けることが望ましい。
【００３５】
この切替制御回路１３Ａでは、オーバランエラー状態が生じると、オーバランエラー信号を生成して切替レジスタ１２の動作を停止させる。これにより、受信側のFIFO１０−１が無駄な動作をしないように固定し、誤動作の防止（FIFO１０−０へのデータの上書き防止）、及び無駄な動作を抑制することによる低消費電力化を実現することができる。又、この状態でもＣＰＵ１５により、読み出し側のFIFO１０−０内のデータを退避させることは可能である。
【００３６】
図６は、図５の切替レジスタ１２及び切替制御回路１３Ａを示す構成図であり、図３中の要素と共通の要素には共通の符号が付されている。
【００３７】
図６の切替制御回路１３Ａでは、図３の切替制御回路１３に対して、比較手段（例えば、カウンタ２１−０の出力と“０”を比較する比較器２２−２、及び、カウンタ２１−１の出力と“０”を比較する比較器２２−３）が追加され、図３のＡＮＤ回路２３−０，２３−１，２５に代えて、第２、第３の論理回路（例えば、ＡＮＤ回路２７−０〜２７−３、ＯＲ回路２８−０，２８−１）、第１、第２のオーバランエラーフラグ（例えば、ＦＦからなるオーバランエラーレジスタ）２９−０，２９−１、第４の論理回路（例えば、ＯＲ回路）３０、及び、第５の論理回路（例えば、ＡＮＤ回路）２５Ａが設けられている点が異なる。
【００３８】
ＡＮＤ回路２７−０は、比較器２２−２の出力（第３の比較結果）、オーバランエラーレジスタ２９−０の出力（第１のオーバランエラーフラグ信号）、及び切替信号ＳＧの論理積を求めて、オーバランエラーレジスタ２９−０に対する第１のリセット信号を出力する回路である。ＡＮＤ回路２７−１は、比較器２２−２の出力（第３の比較結果）の反転信号、比較器２２−１の出力（第２の比較結果）、及び切替信号ＳＧの論理積を求めて、オーバランエラーレジスタ２９−０に対する第１のセット信号を出力する回路である。ＡＮＤ回路２７−２は、比較器２２−３の出力（第４の比較結果）、オーバランエラーレジスタ２９−１の出力（第２のオーバランエラーフラグ信号）、及び反転切替信号ＳＧＢの論理積を求めて、オーバランエラーレジスタ２９−１に対する第２のリセット信号を出力する回路である。ＡＮＤ回路２７−３は、比較器２２−３の出力（第４の比較結果）の反転信号、比較器２２−０の出力（第１の比較結果）、及び反転切替信号ＳＧＢの論理積を求めて、オーバランエラーレジスタ２９−１に対する第２のリセット信号を出力する回路である。これらのＡＮＤ回路２７−０〜２７−３の出力側には、ＯＲ回路２８−０，２８−１が接続されている。
【００３９】
ＯＲ回路２８−０は、ＡＮＤ回路２７−０の出力とＡＮＤ回路２７−１の出力の反転信号との論理を求める回路、ＯＲ回路２８−１は、ＡＮＤ回路２７−２の出力とＡＮＤ回路２７−３の出力の反転信号との論理を求める回路であり、これらの出力側にオーバランエラーレジスタ２９−０，２９−１がそれぞれ接続されている。オーバランエラーレジスタ２９−０は、クロック入力端子から入力されるクロックＣＫに基づき、ＯＲ回路２８−０の出力をデータ入力端子から入力するレジスタ、オーバランエラーレジスタ２９−１は、クロック入力端子から入力されるクロックＣＫに基づき、ＯＲ回路２８−１の出力をデータ入力端子から入力するレジスタであり、これらの出力側に、ＯＲ回路３０が接続されている。
【００４０】
ＯＲ回路３０から出力されるオーバランエラー信号ＥＲは、反転されてＡＮＤ回路２５Ａに入力される。ＡＮＤ回路２５Ａは、オーバランエラー信号ＥＲの反転信号と、図３のＯＲ回路２４の出力と、クロックＣＫとの論理積を求めてフラグ制御信号を生成し、これを、切替レジスタ１２のクロック入力端子に与える回路である。
【００４１】
（図６の動作）
図６の切替制御回路１３Ａの動作を説明する。
トリガレジスタ２０、カウンタ２１−０，２１−１、及び比較器２２−０，２２−１の動作は、図３の回路と同様であり、比較器２２−０はカウンタ２１−０がトリガレベルＴＧに達した時、比較器２２−１はカウンタ２１−１がトリガレベルＴＧに達した時に“１”が出力される。これと同様に、比較器２２−２では、カウンタ２１−０の値が“０”の時、比較器２２−３はカウンタ２１−１の値が“０”の時に“１”が出力される。
【００４２】
ＡＮＤ回路２７−０では、切替信号ＳＧと比較器２２−２の出力とFIFO１０−０側のオーバランエラーレジスタ２９−０の出力との論理積を求める。これは、０側にオーバランエラーが発生している時に、FIFO１０−０の蓄積データがＣＰＵ１５に退避され、カウンタ２１−０の値が“０”になった時、オーバランエラーレジスタ２９−０をリセット（“１”→“０”）することを意味している。ＡＮＤ回路２７−１は、切替信号ＳＧと比較器２２−２の出力の反転信号と比較器２２−１の出力との論理積を求めている。これは、１側の書き込み時であり、且つFIFO１０−１がトリガレベルＴＧに達した時にFIFO１０−０側のカウンタ２１−０が“０”でない時、オーバランエラー０をセット（“０”→“１”）することを意味する。
【００４３】
ＯＲ回路２８−０は、セットの場合はオーバランエラーレジスタ２９−０のデータ“１”が入力され、リセットの場合は“０”が入力されるようになっている。従って、セットされると、オーバランエラーレジスタ２９−０の出力端子からは“１”が出力され、リセットされると、オーバランエラーレジスタ２９−０の出力端子からは“０”が出力されることになる。
【００４４】
ＡＮＤ回路２７−２では、切替信号ＳＧの反転信号ＳＧＢと比較器２２−３の出力とFIFO１０−１側のオーバランエラーレジスタ２９−１の出力との論理積を求めている。これは、１側にオーバランエラーが発生している時に、FIFO１０−１の蓄積データがＣＰＵ１５に退避され、カウンタ２１−１が“０”になった時、オーバランエラーレジスタ２９−１をリセット（“１”→“０”）することを意味している。ＡＮＤ回路２７−３は、切替信号ＳＧの反転信号ＳＧＢと比較器２２−３の出力の反転信号と比較器２２−０の出力との論理積を求めている。これは、０側の書き込み時であり、且つFIFO１０−０がトリガレベルＴＧに達した時にFIFO１０−１側のカウンタ２１−０が“０”でない時、オーバランエラーレジスタ２９−１をセット（“０”→“１”）にすることを意味する。
【００４５】
ＯＲ回路２８−１は、セットの場合はオーバランエラーレジスタ２９−１のデータ“１”が入力され、リセットの場合は“０”が入力されるようになっている。従って、セットされると、オーバランエラーレジスタ２９−１の出力端子からは“１”が出力、リセットされるとオーバランエラーレジスタ２９−１の出力端子からは“０”が出力されることになる。ＯＲ回路３０は、オーバランエラーレジスタ２９−０の出力とオーバランエラーレジスタ２９−１の出力との論理和を求め、この出力信号を全体のオーバランエラー信号ＥＲとしている。
【００４６】
そして、このオーバランエラー信号ＥＲを、切替レジスタ１２のクロック入力前のＡＮＤ回路２５Ａに入力し、論理積を求めている。これは、オーバランエラーが発生した段階では、カウンタ２１−０，２１−１共にトリガレベルＴＧに達していることが想定でき、この状態では、図３の回路のままであると、ＯＲ回路２４の出力が“１”に固定されてしまい、ＡＮＤ回路２５が常にクロック（フラグ制御信号）を生成するため、切替レジスタ１２は常にデータを反転しつづける暴走動作が発生する。これを抑制するため、オーバランエラーが発生しているときは、オーバランエラー信号ＥＲの反転信号をＡＮＤ回路２５Ａに入力することにより、切替レジスタ１２にクロック入力させないようにして、切替信号ＳＧの反転暴走動作を抑制している。
【００４７】
図７は、図６の切替制御回路１３Ａの動作を示すタイミングチャートである。
この図７では、例えば、トリガレベルＴＧを２とする。
【００４８】
図６の切替制御回路１３Ａの動作として、カウンタ２１−０の値がトリガレベルＴＧの２に達すると、図３で説明したように、切替信号ＳＧは“０”から“１”に切り替わる。この状態のままで受信を継続すると、カウンタ２１−１もトリガレベルＴＧに達する。すると、同様に切替信号ＳＧは“１”から“０”に切り替わる。
【００４９】
又、カウンタ２１−１がトリガレベルＴＧに達すると、ＡＮＤ回路２７−１は、切替信号ＳＧが“１”、比較器２２−１の出力が“１”、比較器２２−２の出力が“０”であるため、“０”から“１”へ切り替わる。この信号が伝播し、ＯＲ回路２８−０の出力が“０”から“１”になり、この信号をオーバランエラーレジスタ２９−０がラッチする。すると、ＯＲ回路３０からオーバランエラー信号ＥＲの“１”が出力され（オーバランエラーが確定し）、ＡＮＤ回路２５Ａで、切替レジスタ１２のクロック入力が抑制される。
【００５０】
（実施例１の効果）
本実施例１では、次の（１）〜（３）のような効果がある。
（１）  図１及び図３に示すように、２面の受信FIFO１０−０，１０−１を有し、受信データＰＤの蓄積を交互に行うため、高速なデータＰＤに対しても連続した受信が可能である。
【００５１】
（２）  図３の構成において、トリガレジスタ２０により、FIFO１０−０，１０−１に対してトリガレベルＴＧを自由に設定でき、これにより、受信データＰＤに対して柔軟な設定が可能である。
【００５２】
（３）  図５及び図６に示すように、２面のFIFO１０−０，１０−１フル状態でオーバランエラー発生時は、切替レジスタ１２の動作を停止させ、これにより、最新の受信データは読み出すことが可能であり、更に、消費電力の削減も実現できる。
【実施例２】
【００５３】
（図８の構成）
図８は、本発明の実施例２を示す切替レジスタ１２及び切替制御回路１３Ｂの概略の構成図であり、実施例１を示す図３、図５及び図６中の要素と共通の要素には共通の符号が付されている。
【００５４】
図８の切替制御回路１３Ｂは、図５の切替制御回路１３Ａに代えて設けられる回路である。この切替制御回路１３Ｂを図３の切替制御回路１３と比較すると、トリガレベルＴＧとカウンタ２１−０，２１−１の値をそれぞれ比較する比較手段である比較器２２−０，２２−１の他に、０レベルと比較する比較手段である比較器２２−２，２２−３が追加されている。更に、図３の２入力ＡＮＤ回路２３−０，２３−１に代えて、第１の論理回路（例えば、３入力ＡＮＤ回路）２３−０Ｂ、２３−１Ｂが設けられ、図３の２入力ＡＮＤ回路２５に代えて、オーバランエラー信号ＥＲを入力する第２の論理回路（例えば、３入力ＡＮＤ回路）２５Ｂが設けられている点のみが異なる。
【００５５】
ＡＮＤ回路２３−０Ｂでは、切替信号ＳＧの反転信号ＳＧＢと比較器２２−０，２２−３の出力（第１、第４の比較結果）との論理積を求めている。これにより、FIFO１０−０側が書き込み時、このFIFO１０−０がトリガレベルＴＧに達し、且つ反対側のFIFO１０−１が０レベルでない場合に、“１”となる。又、ＡＮＤ回路２３−１Ｂでは、切替信号ＳＧと比較器２２−１，２２−２の出力（第２、第３の比較結果）との論理積を求めている。これにより、FIFO１０−１側が書き込み時、このFIFO１０−１がトリガレベルＴＧに達し、且つ反対側のFIFO１０−０が０レベルでない場合に、“１”となる。
【００５６】
このＡＮＤ２３−０Ｂの出力とＡＮＤ２３−１Ｂの出力とを、ＯＲ回路２４で論理和を求める。そして、ＡＮＤ回路２５Ｂで、ＯＲ回路２４の出力とオーバランエラー信号ＥＲとクロックＣＫとの論理積を求めてフラグ制御信号を生成し、これを切替レジスタ１２のクロック入力端子に入力する。切替レジスタ１２は、ＡＮＤ回路２５Ｂで生成されるクロックパルス（フラグ制御信号）が印加されると、反転回路２６で生成される反転切替信号ＳＧＢをラッチし、“０”から“１”、又は“１”から“０”に切替信号ＳＧが反転する。
【００５７】
（図８の動作）
実施例１の図６と本実施例２の図８との動作上の相違点は、オーバランエラーが発生していない状態では、同じである。異なる点は、実施例１の図６では、オーバランエラーが発生した時に、切替信号ＳＧが反転してからオーバランエラーが発生し、それ以降の動作を停止するのに対し、本実施例２の図８では、オーバランエラーが発生した時に、切替信号ＳＧを反転させずにオーバランエラーを発生させ、それ以降の動作を停止させる。要するに、オーバランエラー発生時、切替信号ＳＧを反転させる（実施例１）か、反転させない（実施例２）かの違いである。
【００５８】
図９は、図８の切替制御回路１３Ｂの動作を示すタイミングチャートである。
この図９では、例えば、トリガレベルＴＧを２とする。
【００５９】
例えば、カウンタ２１−０がトリガレベルＴＧに達したとき、反対側のカウンタ２１−１は０レベルなので、ＡＮＤ回路２３−０Ｂの出力は“１”になる。このため、ＯＲ回路２４を介してＡＮＤ回路２５Ｂから１クロックパルスが出力されるため、切替レジスタ１２は反転切替信号ＳＧＢをラッチし、次のマシンサイクルで切替信号ＳＧが反転する。次に、カウンタ２１−０は状態を保持したまま、カウンタ２１−１の値がインクリメント（＋１増分）し、トリガレベルＴＧに達すると、オーバランエラーが発生する。本実施例２では、ここでは切替レジスタ１２にクロックパルスが入力されないため、切替信号ＳＧが反転しない。要するに、オーバランエラー時、切替信号ＳＧが反転しない。その後、カウンタ２１−０の値がデクリメント（FIFO１０−０から蓄積データがＣＰＵ１５へ退避されてカウント値が減分）される場合、カウンタ２１−０が０レベルに達すると、オーバランエラーが解消されると同時に、ＡＮＤ回路２３−１Ｂの出力が“１”になり、これによりＯＲ回路２４及びＡＮＤ回路２５Ｂを介して、切替レジスタ１２のクロック入力端子にクロックパルスが印加され、切替信号ＳＧが切り替わる。
【００６０】
（実施例２の効果）
オーバランエラーが発生した場合、実施例１では、片側のFIFO１０−０又は１０−１に蓄積されたデータしかＣＰＵ１５に読み出すことはできなかつたが、本実施例２では、両側のFIFO１０−０，１０−１に蓄積されたデータをＣＰＵ１５に読み出すことができる。
【００６１】
構成概要図としては実施例１の図５と同じなので、この図５を用いて説明する。
オーバランエラーが発生すると、切替レジスタ１２が停止することは同じであるが、実施例１の場合、図５の例では、切り替わってから停止するので、FIFO１０−０が読み出し側に接続され、ＣＰＵ１５からデータが読み出されるのは、FIFO１０−１のみである。ところが、FIFO１０−１からデータを読み出して空になっても、FIFO１０−０の蓄積されているデータがトリガレベルＴＧに達していない場合は、切替信号ＳＧが発生しないため、FIFO１０−０のデータは読み出すことができなかった。
【００６２】
これに対して本実施例２では、オーバランエラー発生時に切替信号ＳＧが発生しないため、FIFO１０−０が読み出し側に接続されたままになっている。ここで、FIFO１０−０からデータを読み出していき、FIFO１０−０が空になると、FIFO１０−１がトリガレベルＴＧにあるため、自動的に接続方向が切り替わり、FIFO１０−１が読み出し側に接続される。この後FIFO１０−１を読み出してゆけば、全てのFIFO１０−０，１０−１内のデータを退避させることが可能である。
【実施例３】
【００６３】
（図１０、図１１の構成）
図１０は、本発明の実施例３を示すメモリ回路の概略の構成図であり、実施例１を示す図５中の要素と共通の要素には共通の符号が付されている。
【００６４】
本実施例３のメモリ回路では、図５の切替制御回路１３Ａに代えて、外部からの反転制御信号ＣＢを入力する切替制御回路１３Ｃが設けられ、更に、図５の割込回路１４に代えて、タイマ１６からの受信完了割込信号Ｓ１６を入力する割込回路１４Ｃが設けられている点が異なる。
【００６５】
図１１は、図１０の切替レジスタ１２及び切替制御回路１３Ｃを示す構成図であり、実施例１を示す図３中の要素と共通の要素には共通の符号が付されている。
【００６６】
本実施例３の切替制御回路１３Ｃでは、図３の２入力ＯＲ回路２４に代えて、反転制御信号ＣＢの論理和を求める第１の論理回路（例えば、３入力ＯＲ回路）２４Ｃを設けている点のみが異なる。このＯＲ回路２４Ｃで反転制御信号ＣＢの論理和を取ることにより、FIFO１０−０，１０−１側のカウンタ２１−０，２１−１の状態に関わらず、切替信号ＳＧを反転させることができる。
【００６７】
（実施例３の動作・効果）
実施例１の図５の場合、オーバランエラーが発生すると、切替信号ＳＧによりFIFO１０−０，１０−１の接続方向が切り替わった後に動作を停止するため、ＣＰＵ１５がデータを退避できるFIFO１０−０，１０−１は、最新の受信データを蓄積している片側のFIFO１０−０又は１０−１に限定されていた。ところが、本実施例３のように、外部の反転制御信号ＣＢにより切替信号ＳＧを反転できるようにすると、オーバランエラーが発生した場合、最新のデータが蓄積されているFIFO１０−０又は１０−１のデータを退避した後、外部からの反転制御信号ＣＢによりFIFO１０−０又は１０−１の読み出しFIFOを切り替え、古いデータが蓄積されているFIFOからデータを退避させることが可能である。
【００６８】
又、前記の使用方法とは別に、この反転制御信号ＣＢには、次のような使用方法もある。
図１０において、例えば、FIFO１０−０に受信データが蓄積されているとする。仮にこの蓄積されたデータが、トリガレベルＴＧに達しない状態で受信データＰＤが完了した場合、タイマ１６から受信完了割込信号Ｓ１６が、割込回路１４Ｃに発行される。すると、割込要求信号Ｓ１４ＣがＣＰＵ１５に伝えられ、このＣＰＵ１５が割込処理に入る。割込処理では、先ず、受信FIFO１０−０又は１０−１に対し、反転制御信号ＣＢを出力し、切替レジスタ１２の値を［０→１］に切替える。このため、FIFO１０−０は受信方向から読み出し方向へと接続が切り替わる。次に、割込処理は、FIFO１０−０に蓄積されていたデータをＣＰＵ１５にロードし、データの退避を終了する。
【００６９】
従って、切替制御回路１３Ｃに反転制御信号ＣＢを加えることにより、受信FIFO１０−０又は１０−１の蓄積データがトルガレベルＴＧに達していない状態でも、そのデータをＣＰＵ１５にロードすることが可能となる。
【実施例４】
【００７０】
本発明は、上記実施例１〜３に限定されず、種々の変形例が可能である。この変形例である実施例４としては、例えば、FIFO１０−１，１０−２に代えて、他のメモリを用いたり、或いは、切替制御回路１３、１３A、１３Ｂ、１３Ｃを、図３、図６、図８、図１１以外の回路構成に変更しても良い。
【図面の簡単な説明】
【００７１】
【図１】本発明の実施例１を示すメモリ回路の概略の構成図である。
【図２】図１のFIFO１０−０，１０−１付近を示す構成図である。
【図３】図１の切替レジスタ１２及び切替制御回路１３を示す構成図である。
【図４】図３の切替制御回路１３の動作を示すタイミングチャートである。
【図５】図１のメモリ回路におけるオーバランエラー状態を示す概略の構成図である。
【図６】図５の切替レジスタ１２及び切替制御回路１３Ａを示す構成図である。
【図７】図６の切替制御回路１３Ａの動作を示すタイミングチャートである。
【図８】本発明の実施例２を示す切替レジスタ１２及び切替制御回路１３Ｂの概略の構成図である。
【図９】図８の切替制御回路１３Ｂの動作を示すタイミングチャートである。
【図１０】本発明の実施例３を示すメモリ回路の概略の構成図である。
【図１１】図１０の切替レジスタ１２及び切替制御回路１３Ｃを示す構成図である。
【図１２】従来のメモリ回路の一例を示す概略の構成図である。
【符号の説明】
【００７２】
９                          受信シフトレジスタ
１０−１，１０−２          FIFO
１１−０，１１−１          セレクタ
１２                        切替レジスタ
１３，１３Ａ〜１３Ｃ        切替制御回路
１４                        割込回路
１５                        ＣＰＵ
２０                        トリガレジスタ
２１−０，２１−１          カウンタ
２２−０〜２２−３          比較器
２３−０，２３−１，２３−０Ｂ、２３−１Ｂ，２５，２５Ａ，  ２５Ｂ，２７−０〜２７−３                      ＡＮＤ回路
２４，２４Ｃ，２８−０，２８−１，３０          ＯＲ回路
２６                        反転回路
２９−０，２９−１          オーバランエラーレジスタ
【図１】
2006221435.tif 000003
【図２】
2006221435.tif 000004
【図３】
2006221435.tif 000005
【図４】
2006221435.tif 000006
【図５】
2006221435.tif 000007
【図６】
2006221435.tif 000008
【図７】
2006221435.tif 000009
【図８】
2006221435.tif 000010
【図９】
2006221435.tif 000011
【図１０】
2006221435.tif 000012
【図１１】
2006221435.tif 000013
【図１２】
2006221435.tif 000014