(57)【特許請求の範囲】
【請求項１】
データを処理してその結果をメモリに書き込む装置において、データの変化を検出してメモリに書き込まれるデータの処理を開始するタイミングを判定する微分回路と、微分回路の出力によりリセットされてメモリに書き込まれるデータの処理に要する時間をカウントするカウンタと、該カウンタの値が所定値以上であることを検知する検知回路と、検知回路によりカウンタの値が所定値以上であることが検知され、且つデータの読み出し要求があればメモリからデータを読み出すメモリリード制御部とを備えることを特徴とするメモリインターフェイス。
【請求項２】
メモリに書き込まれるデータは、データの開始位置のアドレスと、データの長さを示すランレングスのデータであり、データの処理に要する時間はランレングスに応じて変動することを特徴とする請求項１のメモリインターフェイス。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はメモリに対するデータの書き込み処理の空き時間を利用してメモリからデータの読み出し動作を行うためのメモリインターフェイスに関するものである。
【０００２】
【従来の技術】
従来、メモリに対するデータの書き込みと読み出しは、ＣＰＵ等の制御装置により管理され、通常は、データを処理してその結果をメモリに書き込むメインの動作を行いながら、時には割り込み処理によりメインの動作を一時停止させ、データを読み出すことが行われている。すなわち、メモリへのデータの書き込み優先であっても、メモリからデータの読み出しが行われているときは待ち信号を発生し、書き込みを一時的に停止させて、読み出し時間の確保が行われている。
【０００３】
特開平４−１３３１４１号には、メモリのアクセス時間を測定し、それに基づいてメモリの読み出し制御を行う技術が提案されているが、これはメモリの種類に応じてアクセス時間が異なる場合に対処する技術であり、書き込まれるデータに応じて処理時間が異なる場合には対処できない。
【０００４】
【発明が解決しようとする課題】
メモリに書き込まれるデータが、例えばデータの開始位置のアドレスと、データの長さを示すランレングスのデータである場合、データを処理してその結果をメモリに書き込む装置は、ランレングスの長いデータでは書き込みの間に長い空き時間が生じるのに対して、ランレングスの短いデータでは書き込みの間に空き時間は殆ど生じない。このように、データを処理してその結果をメモリに書き込む装置において、そのデータの処理時間が一定でない場合には、データの書き込み動作の間を利用してデータの読み出し動作を行う所謂サイクルスチールが常に可能であるとは限らない。
【０００５】
本発明はこのような点に鑑みてなされたものであり、データの処理時間が一定していない場合であっても、データを処理してその結果をメモリに書き込むメインの動作を停止させることなく、メモリからデータを読み出すことを可能とするメモリインターフェイスを提供することを課題とする。
【０００６】
【課題を解決するための手段】
本発明のメモリインターフェイスによれば、上記の課題を解決するために、図１に示すように、データを処理してその結果をメモリに書き込む装置において、データの変化を検出してメモリ３に書き込まれるデータの処理を開始するタイミングを判定する微分回路２１と、微分回路２１の出力によりリセットされてメモリ３に書き込まれるデータの処理に要する時間をカウントするカウンタ２２と、該カウンタ２２の値が所定値以上であることを検知する検知回路２３と、検知回路２３によりカウンタ２２の値が所定値以上であることが検知され、且つデータの読み出し要求があればメモリ３からデータを読み出すメモリリード制御部２４とを備えることを特徴とするものである。ここで、メモリ３に書き込まれるデータは、例えば、データの開始位置のアドレスと、データの長さを示すランレングスのデータであり、データの処理に要する時間はランレングスに応じて変動する場合に本発明を適用すれば特に好ましい。
【０００７】
【発明の実施の形態】
図１は本発明のメモリインターフェイスの回路構成例を示している。図中、１は制御部、２はメモリインターフェイス、３はメモリである。メモリ３は、チップセレクト信号ＣＳがＬｏｗレベルであるときに、メモリリード信号ＲｅａｄがＨｉｇｈレベルからＬｏｗレベルに変化すると、アドレスバスで指定されたメモリアドレスのデータをデータバスに読み出す動作を行う。また、チップセレクト信号ＣＳがＬｏｗレベルであるときに、メモリライト信号ＷｒｉｔｅがＨｉｇｈレベルからＬｏｗレベルに変化すると、アドレスバスで指定されたメモリアドレスにデータバス上のデータを書き込む動作を行う。メモリインターフェイス２は、制御部１とメモリ３の間に介在し、制御部１からの読み出し要求があると、メモリ３が書き込み動作中であっても、データを書き込んでいないタイミングを自動的に検出して、その検出した読み出し可能な時間幅でメモリ３からデータを読み出すことにより、データを処理してその結果をメモリ３に書き込むメインの動作を停止させることなく、メモリ３からデータを読み出すことを可能とする。
【０００８】
図２は図１に示すメモリインターフェイスの動作波形図である。この例は、データのランレングスデータを抽出し、メモリ３に保存する構成になっていて、連続する２回の書き込みで、そのデータの開始位置を示すアドレスとデータの続く長さの情報を保存している。読み出し側も２回の読み出しを実行するシステムである。書き込み側がデータを２段シフトしているのは、２回連続でデータを書くシステムのためである。
【０００９】
まず、書き込み時の動作（イ）について説明する。図中、Ｂ，Ｉ，Ｏ，Ｓなどはデータの開始位置を示すアドレスのデータであり、それに続くａ，ｄ，ｆ，…などはデータの長さ（ランレングスデータ）を意味する。例えば、メモリ書き込みデータとしてのＢ，ａは、データの開始位置のアドレスがＢで、このアドレスＢから開始されるデータの長さがａであることを意味する。これらのデータＢ，ａはメモリ３のアドレス０，１に連続して書き込まれる。また、メモリ書き込みデータとしてのＩ，ｄは、データの開始位置のアドレスがＩで、このアドレスＩから開始されるデータの長さがｄであることを意味する。これらのデータＩ，ｄはメモリ３のアドレス２，３に連続して書き込まれる。同様に、メモリ書き込みデータとしてのＯ，ｆは、データの開始位置のアドレスがＯで、このアドレスＯから開始されるデータの長さがｆであることを意味する。これらのデータＯ，ｆはメモリ３のアドレス４，５に連続して書き込まれる。
【００１０】
メモリライト信号が立ち下がるタイミングでは、メモリ３のチップセレクト信号ＣＳがＬｏｗレベルとなっており、１回目のメモリライト信号の立ち下がりで、アドレスデータＢがメモリ３のアドレス０に書き込まれ、２回目のメモリライト信号の立ち下がりで、データａがメモリ３のアドレス１に書き込まれ、しばらく間を置いて、３回目のメモリライト信号の立ち下がりで、アドレスデータＩがメモリ３のアドレス２に書き込まれ、４回目のメモリライト信号の立ち下がりで、データｄがメモリ３のアドレス３に書き込まれ、しばらく間を置いて、５回目のメモリライト信号の立ち下がりで、アドレスデータＯがメモリ３のアドレス４に書き込まれ、６回目のメモリライト信号の立ち下がりで、データｆがメモリ３のアドレス５に書き込まれる。
【００１１】
次に、読み出し時の動作（ロ）について説明する。メモリリード信号が立ち下がるタイミングでは、メモリ３のチップセレクト信号ＣＳがＬｏｗレベルとなっている。メモリリード信号がＬｏｗレベルである期間において、メモリアドレスが０であると、メモリ３のアドレス０のデータがメモリ読み出しデータＢとして読み出され、メモリアドレスが１になると、メモリ３のアドレス１のデータがメモリ読み出しデータＢａとして読み出される。ここで、データＢａはアドレスＢから開始されるデータの長さがａであることを意味している。次に、メモリリード信号がＬｏｗレベルである期間において、メモリアドレスが２であると、メモリ３のアドレス２のデータがメモリ読み出しデータＩとして読み出され、メモリアドレスが３になると、メモリ３のアドレス３のデータがメモリ読み出しデータＩｄとして読み出される。ここで、データＩｄはアドレスＩから開始されるデータの長さがｄであることを意味している。
【００１２】
以上の説明から明らかなように、図２の動作波形において、メモリアドレス０，１，２，３，４，５，６，…等はメモリ３のアドレスを指しており、図２の上から２段目に記載されたアドレスＡ，Ｂ，Ｃ，…，Ｕ，Ｖ，Ｗ，…は、メモリ３にデータの開始位置とデータの長さを保存しておかれる第２のメモリのアドレスを指している。メモリ３のメモリアドレス０，１からデータの開始位置のアドレスＢと、そのデータの長さａを読み出すことにより、第２のメモリのアドレスＢから長さａのデータが格納されていることが分かる仕組みとなっている。同様に、メモリ３のメモリアドレス２，３からデータの開始アドレスＩと、そのデータの長さｄを読み出すことにより、第２のメモリのアドレスＩから長さｄのデータが格納されていることが分かる仕組みとなっている。
【００１３】
ここで、メモリインターフェイスの機能は、図２に示す書き込み時の動作（イ）と読み出し時の動作（ロ）を実現することにあり、そのために、メモリインターフェイスはメモリ書き込み時には、図２（イ）に示すように、メモリアドレスを０，１，２，３，４，５，…のように順次変化させ、メモリ書き込みデータをＢ，ａ，Ｉ，ｄ，Ｏ，ｆ，…のように順次変化させている。このようなメモリ書き込み動作を実行している途中でメモリ３に対する読み出し要求が制御部１から発生すると、従来は、一連のメモリ書き込み動作を一時停止させて、図２（ロ）に示す読み出し時の動作を行うことにより、メモリ３からデータを読み出していた。しかしながら、図２（イ）のメモリ書き込み時の動作を見れば分かるように、２回の連続したメモリライト信号によりメモリ３のアドレス０，１にデータＢ，ａを書き込んだ後、しばらく間を置いて、再び２回の連続したメモリライト信号によりメモリ３のアドレス２，３にデータＩ，ｄを書き込んでおり、その間、メモリ３のアドレスは次回の書き込みに備えて、アドレス２の状態に保持されており、メモリ３への書き込みデータは最後に書き込んだデータａが保持されている。
【００１４】
このような状態が生じる理由は、この実施例の場合について言えば、メモリ３に格納されるデータがランレングスデータであるという特有の事情に基づくものであり、データの開始アドレスＢから次のデータの開始アドレスＩまでの間、さらに次のデータの開始アドレスＯまで間に、それぞれ時間が掛かるからである。もちろん、この実施例とは異なる他のシステムであっても、書き込み動作中にメモリのアドレスとデータが変化しない空き時間が生じることはあり得る。
【００１５】
そこで、本発明では、図２の動作波形における書き込み時の動作（イ）と読み出し時の動作（ロ）を組み合わせて、図２の（ハ）に示すように、書き込み動作中であっても、メモリ３のアドレスとデータが空いている時間を検出して、その時間に読み出し動作を行うようにしている。この例では、説明を簡単にするために、直前の書き込み動作により書き込まれたデータを読み出す動作を行っているが、別のデータを読み出す動作を行うものであっても構わない。
【００１６】
以下、図２の（ハ）の動作について説明する。メモリライト信号が立ち下がるタイミングでは、メモリ３のチップセレクト信号ＣＳがＬｏｗレベルとなっており、１回目のメモリライト信号の立ち下がりで、データＢがメモリ３のアドレス０に書き込まれ、２回目のメモリライト信号の立ち下がりで、データａがメモリ３のアドレス１に書き込まれる。メモリ３のチップセレクト信号ＣＳがＬｏｗレベルのままで、メモリアドレスが０となり、メモリリード信号がＬｏｗレベルになると、メモリ３のアドレス０のデータがメモリ読み出しデータＢとして読み出され、メモリアドレスが１になると、メモリ３のアドレス１のデータがメモリ読み出しデータａとして読み出される。メモリ３のチップセレクト信号ＣＳとメモリリード信号がＨｉｇｈレベルとなり、しばらく間を置いて、再びメモリ３のチップセレクト信号ＣＳがＬｏｗレベルとなり、３回目のメモリライト信号の立ち下がりで、データＩがメモリ３のアドレス２に書き込まれ、４回目のメモリライト信号の立ち下がりで、データｄがメモリ３のアドレス３に書き込まれる。メモリ３のチップセレクト信号ＣＳがＬｏｗレベルのままで、メモリアドレスが２となり、メモリリード信号がＬｏｗレベルになると、メモリ３のアドレス２のデータがメモリ読み出しデータＩとして読み出され、メモリアドレスが３になると、メモリ３のアドレス３のデータがメモリ読み出しデータｄとして読み出される。メモリ３のチップセレクト信号ＣＳとメモリリード信号がＨｉｇｈレベルとなり、しばらく間を置いて、再びメモリ３のチップセレクト信号ＣＳがＬｏｗレベルとなり、５回目のメモリライト信号の立ち下がりで、データＯがメモリ３のアドレス４に書き込まれ、６回目のメモリライト信号の立ち下がりで、データｆがメモリ３のアドレス５に書き込まれる。
【００１７】
ところで、このような書き込み動作と読み出し動作を組み合わせることは常に可能であるとは限らない。その理由は、この実施例について言えば、メモリ３に格納されるデータがランレングスデータであるという特有の事情に基づくものであり、データの開始位置とその長さをメモリ３に格納していくときに、データの間隔が十分に長ければ、次のデータの開始位置とその長さを格納するタイミングが来るまでに空き時間が生じるが、データの間隔が短いと、次のデータの開始位置とその長さを格納するタイミングは直ぐに到来してしまうので、十分な空き時間は生じない。例えば、図２の動作波形で説明すると、データの開始位置がアドレスＢであり、そのデータの長さがａである場合と、データの開始位置がアドレスＩであり、そのデータの長さがｄである場合には、十分な空き時間が生じているが、データの開始位置がアドレスＯであり、そのデータの長さがｆである場合については、次のデータの開始位置（アドレスＳ）までの間に十分な時間が無く、その間に読み出し動作を挿入することはできない。
【００１８】
そこで、この実施例では、単純に書き込み動作と読み出し動作を交互に行うのではなく、図１に示すように、微分回路２１、カウンタ２２、検知部２３、メモリリード制御部２４を設けて、メモリ読み出し動作の可否を自動的に判定している。読み出し側の時間幅の検知の方法は、図２の読み出し時の動作（ロ）に示す入力データと、これをシフトレジスタにより１サイクル分遅延させたデータシフト１により微分回路２１を構成し、立ち下がり側に、１クロックサイクル分だけイネーブル信号が出るようにしてある。つまり、データシフト１がＨｉｇｈレベルで、入力データがＬｏｗレベルである期間にのみ微分回路２１はＨｉｇｈレベルの信号を出力する。この信号をタイミングカウント用のカウンタ２２のリセット信号としており、信号の立ち下がりのタイミングでカウンタ２２をリセットしている。タイミングカウントのカウンタ２２の値が４以上（２回の読み出しを行うため５サイクル分の時間幅が必要）になったとき、読み出し動作が行われる。一連の読み出しが終わったときにも、タイミングカウント用のカウンタ２２の値が４以上であれば、続けて読み出しが行われる。したがって、開始アドレスの間隔の短いデータの書き込みにより空き時間が少なく、そのときはデータの読み出しが出来なくても、その後、開始アドレスの間隔の長いデータの書き込みにより空き時間が多く生じたときに、データの読み出しを何回も行うことができる。この繰り返しは、読み出し側のメモリアドレスと書き込み側のメモリアドレスによって制御され、読み出し側のアドレスが書き込み側のアドレスを越えないようになっている。
【００１９】
次に、以上のようなハードウェアが具体的にはどのような用途に適用できるかについて一例を挙げて説明する。図３（ａ）のＡ，Ｂ，Ｃ，Ｄ，…は画像メモリの画素アドレスを意味しており、これが図２のアドレスＡ，Ｂ，Ｃ，Ｄ，…に対応しているものとする。図３（ａ）の画像メモリの各画素を２値化したデータが例えば図３（ｂ）のようになったとする。図３（ｂ）の白い四角□はその画素アドレスの画素値を２値化したデータが０であることを意味し、図３（ｂ）の黒い四角■はその画素アドレスの画素値を２値化したデータが１であることを意味するものとする。これが図２のアドレスＡ，Ｂ，Ｃ，Ｄ，…の下に併記したデータの１，０に対応しているものとする。次に、図３（ｃ）に示されたＢ，２，Ｉ，２，Ｏ，１，Ｓ，１，…というリストデータは、図３（ａ）の画素アドレスＢから２個のデータが存在し、画素アドレスＩから２個のデータが存在し、画素アドレスＯから１個のデータが存在し、画素アドレスＳから１個のデータが存在することを意味しており、これが図１のメモリ３に格納されるデータに対応している。２値化データに白地が多い場合やランレングスが大きなデータが存在する場合には、図３（ｃ）のリスト構造のデータを作成するメリットがある。
【００２０】
さて、このような用途について、データの開始位置やデータの長さを検出する方法について、図２の書き込み時の動作（イ）を参照しながら説明する。図２（イ）において、データシフト２は入力データをシフトレジスタにより２サイクル分遅延させたデータであり、データシフト３は入力データをシフトレジスタにより３サイクル分遅延させたデータである。データシフト３が立ち上がると、位置データ取込タイミング信号が立ち上がり、１サイクルの時間で位置データ取り込みタイミング信号は立ち下がる。このとき、開始アドレスの位置データが取り込まれると同時に、長さカウントが開始される。次に、データシフト３が立ち下がると、長さ検出タイミング信号が立ち上がり、長さカウントのデータが読み込まれる。長さ検出タイミング信号は１サイクルの時間で立ち下がり、このとき、長さカウントのデータはリセットされる。
【００２１】
【発明の効果】
請求項１の発明によれば、データを処理してその結果をメモリに書き込む装置において、データの変化を検出してメモリに書き込まれるデータの処理を開始するタイミングを判定する微分回路と、微分回路の出力によりリセットされてメモリに書き込まれるデータの処理に要する時間をカウントするカウンタと、該カウンタの値が所定値以上であることを検知する検知回路と、検知回路によりカウンタの値が所定値以上であることが検知され、且つデータの読み出し要求があればメモリからデータを読み出すメモリリード制御部とを備えるものであるから、データを処理してその結果をメモリに書き込むメインの動作を停止させることなく、読み出し要求があると時間幅を回路自身で自動的に検知し、データを読み出すことができる。
【００２２】
請求項２の発明によれば、メモリに書き込まれるデータは、データの開始位置のアドレスと、データの長さを示すランレングスのデータであり、データの処理に要する時間はランレングスに応じて変動するものであるから、本発明のメモリインターフェイスを用いれば、データを処理してその結果をメモリに書き込むメインの動作には全く影響することなく、ランレングスの長いデータの処理により生じた空き時間を利用してメモリの読み出し動作を行うことができる。
【図面の簡単な説明】
【図１】本発明のメモリインターフェイスの回路構成図である。
【図２】本発明のメモリインターフェイスの動作波形図である。
【図３】本発明のメモリインターフェイスを画像処理に応用した場合の動作説明図である。
【符号の説明】
１      制御部
２      メモリインターフェイス
３      メモリ
２１    微分回路
２２    カウンタ
２３    検知回路
２４    メモリリード制御部
【図１】
0003700504.tif 000002
【図２】
0003700504.tif 000003
【図３】
0003700504.tif 000004