(57)【要約】【課題】本発明は、ブロック毎の画像データを画像メモリから画像データバッファを介して画像処理装置に転送する構成において画像メモリからの効率的なデータ読み出しを実現する画像データバッファ装置を提供することを目的とする。【解決手段】画像データバッファ装置は、メモリと、メモリへの書き込み位置を示す書き込みポインタとメモリからの読み出し位置を示す読み出しポインタを有し、メモリをＦＩＦＯとして動作させるＦＩＦＯ制御部を含み、ＦＩＦＯ制御部は、画像中の連続したブロックとして供給される画像データをメモリに複数のブロックとして格納するとともに、メモリから複数のブロックのうちの１つのブロックを読み出す際に１つのブロックに隣接する少なくとも１つのブロックの一部である部分データを同時に読み出して、第１のブロックと部分データとを纏めて１つのブロックとして送出するよう構成される。【選択図】図４
2008054222.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
該メモリへの書き込み位置を示す書き込みポインタと該メモリからの読み出し位置を示す読み出しポインタを有し、該メモリをＦＩＦＯとして動作させるＦＩＦＯ制御部
を含み、該ＦＩＦＯ制御部は、画像中の連続したブロックとして供給される画像データを該メモリの該書き込みポインタが順次示す位置に複数のブロックとして格納するとともに、該メモリの該読み出しポインタが示す位置から該複数のブロックのうちの１つのブロックを読み出す際に該１つのブロックに隣接する少なくとも１つのブロックの一部である部分データを同時に読み出して、該第１のブロックと該部分データとを纏めて１つのブロックとして送出するよう構成されることを特徴とする画像データバッファ装置。
【請求項２】
該画像中でのブロック位置を示す位置情報を該複数のブロックの各ブロック毎に格納する位置バッファを更に含み、該ＦＩＦＯ制御部は、該メモリに格納されている未読み出しのブロックの数と該読み出しポインタが示す位置のブロックの該位置情報とに応じて、データ読み出し可能であるか否かを示す第１のフラグの値を設定することを特徴とする請求項１記載の画像データバッファ装置。
【請求項３】
該ＦＩＦＯ制御部は、該メモリに格納されている未読み出しのブロックの数と該読み出しポインタが示す位置のブロックの該位置情報とに応じて、データ書き込み可能であるか否かを示す第２のフラグの値を設定することを特徴とする請求項２記載の画像データバッファ装置。
【請求項４】
該第１のフラグの値に応じて該ＦＩＦＯ制御部にデータ読み出しを要求するとともに、該第２のフラグの値に応じて該ＦＩＦＯ制御部にデータ書き込みを要求するよう構成されるコントローラを更に含むことを特徴とする請求項３記載の画像データバッファ装置。
【請求項５】
該供給される画像データの量をカウントし、該カウントしたデータ量とブロックサイズとの比較に応じて該位置情報を生成するブロックカウンタを更に含むことを特徴とする請求項２記載の画像データバッファ装置。
【請求項６】
該位置バッファは、該ＦＩＦＯ制御部から供給される該書き込みポインタが示す位置に該ブロックカウンタから供給される該位置情報を格納することを特徴とする請求項５記載の画像データバッファ装置。
【請求項７】
該位置バッファは、該ＦＩＦＯ制御部から供給される該読み出しポインタが示す位置に格納されている該位置情報を該ＦＩＦＯ制御部に供給することを特徴とする請求項６記載の画像データバッファ装置。
【請求項８】
メモリと、
該メモリへの書き込み位置を示す書き込みポインタと該メモリからの読み出し位置を示す読み出しポインタを有し、該メモリをＦＩＦＯとして動作させるＦＩＦＯ制御部と、
画像処理部
を含み、該ＦＩＦＯ制御部は、画像中の連続したブロックとして供給される画像データを該メモリの該書き込みポインタが順次示す位置に複数のブロックとして格納するとともに、該メモリの該読み出しポインタが示す位置から該複数のブロックのうちの１つのブロックを読み出す際に該１つのブロックに隣接する少なくとも１つのブロックの一部である部分データを同時に読み出して、該第１のブロックと該部分データとを纏めて１つのブロックとして該画像処理部に送出するよう構成されることを特徴とする画像転送処理システム。
【請求項９】
該画像中でのブロック位置を示す位置情報を該複数のブロックの各ブロック毎に格納する位置バッファを更に含み、該ＦＩＦＯ制御部は、該メモリに格納されている未読み出しのブロックの数と該読み出しポインタが示す位置のブロックの該位置情報とに応じて、データ読み出し可能であるか否かを示す第１のフラグの値を設定することを特徴とする請求項８記載の画像転送処理システム。
【請求項１０】
該ＦＩＦＯ制御部は、該メモリに格納されている未読み出しのブロックの数と該読み出しポインタが示す位置のブロックの該位置情報とに応じて、データ書き込み可能であるか否かを示す第２のフラグの値を設定することを特徴とする請求項９記載の画像転送処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に画像データバッファ装置及び画像転送処理システムに関し、詳しくはブロック単位で画像データを転送する画像データバッファ装置及び画像転送処理システムに関する。
【背景技術】
【０００２】
画像処理において、画像データを複数のブロックに分割し、ブロック単位にフィルタリングや圧縮符号化等の処理を行うことが多い。あるブロックにフィルタ処理を施す場合、ブロック境界に近い位置の画素についてフィルタ処理後の値を求めるためには、ブロック境界の外側の画素のデータも必要になる。例えば、１つのブロックの大きさがn×m画素であるとすると、n×m画素の外側にフィルタ処理のフィルタサイズに応じた大きさの計算用画像データを付加して、s×t（s>n及びt>m）画素の画像データを用意する。このようにして得られた本来のブロックサイズよりも大きなサイズであるs×t画素の画像ブロックを、画像データバッファから順次画像処理部に供給することになる。
【０００３】
図１は、従来の画像転送・処理システムの構成の一例を示す図である。図１の画像転送・処理システムは、画像メモリ部１０と、画像データバッファ１１と、画像処理部１２を含む。画像メモリ部１０は、画像メモリ１５及び画像メモリ１５のデータ入出力等を制御するメモリインターフェース１６を含む。画像データバッファ１１は、ＲＡＭ１７及びＲＡＭ１７のデータ入出力等を制御するＦＩＦＯ制御部１８を含む。ＦＩＦＯ制御部１８は、ＲＡＭ１７についての書き込み位置を示す書き込みポインタ及び読み出し位置を示す読み出しポインタを制御して、ＦＩＦＯ（First-In First-Out）動作を実現する。
【０００４】
画像メモリ部１０のメモリインターフェース１６には、例えば、画像データ２０として示すような３×３ブロックの画像データが格納されている。この例では、画像データ２０はブロックＢ１乃至Ｂ９の９つのブロックからなり、各ブロックはn×m画素（例えば１６×３２画素）で構成される。
【０００５】
メモリインターフェース１６は、画像メモリ１５からＢ１乃至Ｂ９の順（即ちラスタ走査の順）で各ブロックデータを読み出して、各ブロックデータを順に画像データバッファ１１に供給する。この際メモリインターフェース１６は、例えばブロックＢ５を読み出す場合、その上下左右の周囲の画素データも同時に読み出すことにより、n×mよりも大きなs×t画素（例えば２８×３７画素）の画像データを読み出して、ブロックＢ５に対応する画像データとして画像データバッファ１１に供給する。なおs×t画素の画像データの各画素のデータは、ラスタ走査順で順次供給される。
【０００６】
このようにして供給されたs×t画素の画像データは、画像データバッファ１１においてＦＩＦＯ制御部１８がＲＡＭ１７に書き込む。この例では、ＲＡＭ１７は２ブロック分のデータを格納できるＦＩＦＯとしてＦＩＦＯ制御部１８により動作制御される。図１に示されるように、例えばブロックＢ５に対応するs×t画素の画像データと次のブロックに対応するs×t画素の画像データとが、画像データ２１としてＲＡＭ１７に格納されている。
【０００７】
画像データバッファ１１のＦＩＦＯ制御部１８は、先に書き込まれたブロックの画像データを先に読み出してＲＡＭ１７から画像処理部１２に供給する。図１に示されるように、例えばブロックＢ５に対応するs×t画素の画像データ２２が、画像データバッファ１１から画像処理部１２に供給される。画像処理部１２は、供給されたs×t画素の画像データ２２に対してフィルタ処理を含む画像処理を実行する。
【０００８】
図２は、画像データバッファ１１の詳細な構成の一例を示す図である。図２に示す画像データバッファ１１は、ＲＡＭ１７、ＦＩＦＯ制御部１８、ブロックカウンタ２５、及びブロックカウンタ２６を含む。ＲＡＭ１７には画像メモリ部１０からの画像データが入力データとして供給される。入力データは、ＦＩＦＯ制御部１８が管理する書き込みポインタＷＰの示すＲＡＭ１７内のアドレスに書き込まれる。なお画像メモリ部１０からの入力データは、同時にブロックカウンタ２５にも供給される。
【０００９】
ブロックカウンタ２５には、１ブロック辺りの画像データの画像サイズの情報が供給されている。ブロックカウンタ２５は、入力データのビット数をカウントし、カウント値と画像サイズとを比較することにより、１ブロック分の画像データが供給されたか否かを判断する。１ブロック分の画像データが供給される毎に、ブロックカウンタ２５は書き込みポインタＷＰの更新を指示する信号をＦＩＦＯ制御部１８に供給する。この信号に応答して、ＦＩＦＯ制御部１８は書き込みポインタＷＰを更新する（次のブロックの書き込み位置を示すポインタ値に更新する）。
【００１０】
ＦＩＦＯ制御部１８が管理する読み出しポインタＲＰの示すＲＡＭ１７のアドレスから読み出された出力データは、画像処理部１２に供給される。この出力データは、同時にブロックカウンタ２６にも供給される。
【００１１】
ブロックカウンタ２６には、１ブロック辺りの画像データの画像サイズの情報が供給されている（図示省略）。ブロックカウンタ２６は、出力データのビット数をカウントし、カウント値と画像サイズとを比較することにより、１ブロック分の画像データが出力されたか否かを判断する。１ブロック分の画像データが出力される毎に、ブロックカウンタ２６は読み出しポインタＲＰの更新を指示する信号をＦＩＦＯ制御部１８に供給する。この信号に応答して、ＦＩＦＯ制御部１８は読み出しポインタＲＰを更新する（次のブロックの読み出し位置を示すポインタ値に更新する）。
【００１２】
図１及び図２に示すような構成によって、１つのブロックの大きさがn×m画素である場合に、ブロックの大きさよりも大きなs×t（s>n及びt>m）画素の画像データを用意して、画像データバッファ１１から順次画像処理部１２に供給することができる。しかしこのような構成では、画像メモリ１５から各ブロック毎にn×m画素ではなくs×t画素のデータを読み出すことになり、画像メモリ１５からのデータ転送量が多くなる。しかもs×t画素の画像データの周辺部分にある計算用画像データは、少なくとも２回、多い場合には４回重複して読み出されることになり、非常に効率の悪いデータ転送を行っていることになる。画像メモリ１５に対して他の装置からのアクセスも行われるような構成では、このようなデータ転送量の増大は性能低下につながるものであり好ましくない。
【特許文献１】特開平８−９３８５号公報
【特許文献２】特開２００２−１４２１４９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
以上を鑑みて本発明は、ブロック毎の画像データを画像メモリから画像データバッファを介して画像処理装置に転送する構成において画像メモリからの効率的なデータ読み出しを実現する画像データバッファ装置及び画像転送処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
画像データバッファ装置は、メモリと、該メモリへの書き込み位置を示す書き込みポインタと該メモリからの読み出し位置を示す読み出しポインタを有し、該メモリをＦＩＦＯとして動作させるＦＩＦＯ制御部を含み、該ＦＩＦＯ制御部は、画像中の連続したブロックとして供給される画像データを該メモリの該書き込みポインタが順次示す位置に複数のブロックとして格納するとともに、該メモリの該読み出しポインタが示す位置から該複数のブロックのうちの１つのブロックを読み出す際に該１つのブロックに隣接する少なくとも１つのブロックの一部である部分データを同時に読み出して、該第１のブロックと該部分データとを纏めて１つのブロックとして送出するよう構成されることを特徴とする。
【００１５】
画像転送処理システムは、メモリと、該メモリへの書き込み位置を示す書き込みポインタと該メモリからの読み出し位置を示す読み出しポインタを有し、該メモリをＦＩＦＯとして動作させるＦＩＦＯ制御部と、画像処理部を含み、該ＦＩＦＯ制御部は、画像中の連続したブロックとして供給される画像データを該メモリの該書き込みポインタが順次示す位置に複数のブロックとして格納するとともに、該メモリの該読み出しポインタが示す位置から該複数のブロックのうちの１つのブロックを読み出す際に該１つのブロックに隣接する少なくとも１つのブロックの一部である部分データを同時に読み出して、該第１のブロックと該部分データとを纏めて１つのブロックとして該画像処理部に送出するよう構成されることを特徴とする。
【発明の効果】
【００１６】
本発明の少なくとも１つの実施例によれば、画像メモリからＦＩＦＯへのデータ転送において同一データの重複転送をなるべく避けることにより、データ転送量を削減することができるという効果が得られる。またＦＩＦＯの段数が同一段数の構成であるとして従来技術と比較すると、本発明の少なくとも１つの実施例では１ブロック辺りの画像データ量が少ないので、ＦＩＦＯのサイズを小さくすることができる。
【発明を実施するための最良の形態】
【００１７】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１８】
図３は、本発明による画像転送・処理システムの構成の一例を示す図である。図３の画像転送・処理システムは、画像メモリ部３０と、画像データバッファ３１と、画像処理部３２と、コントローラ３３を含む。画像メモリ部３０は、画像メモリ３５及び画像メモリ３５のデータ入出力等を制御するメモリインターフェース３６を含む。画像データバッファ３１は、ＲＡＭ３７及びＲＡＭ３７のデータ入出力等を制御するＦＩＦＯ制御部３８を含む。ＦＩＦＯ制御部３８は、ＲＡＭ３７についての書き込み位置を示す書き込みポインタ及び読み出し位置を示す読み出しポインタを制御して、ＦＩＦＯ（First-In First-Out）動作を実現する。コントローラ３３は、画像処理部３２からの処理データ要求に応答してアクナレッジを返すと共に、画像メモリ部３０及び画像データバッファ３１を制御して、画像メモリ部３０から画像データバッファ３１へのデータ転送、画像データバッファ３１から画像処理部３２へのデータ転送を実現する。なおコントローラ３３を実装する位置は特定の箇所に限定されるものではなく、例えば画像データバッファ３１の内部にコントローラ３３の機能をインターフェースユニットとして設けるように構成してもよい。
【００１９】
図４は、図３の画像転送・処理システムの動作原理を説明するための図である。図３及び図４を参照して、図３の画像転送・処理システムの動作について説明する。
【００２０】
画像メモリ部３０のメモリインターフェース３６には、例えば、図４に画像データ２０として示すような３×３ブロックの画像データが格納されている。この例では、画像データ２０はブロックＢ１乃至Ｂ９の９つのブロックからなり、各ブロックはn×m画素（例えば横１６画素×縦３２画素）で構成される。
【００２１】
メモリインターフェース３６は、画像メモリ３５からＢ１乃至Ｂ９の順（即ちラスタ走査の順）で各ブロックデータを読み出して、各ブロックデータを順に画像データバッファ３１に供給する。この際メモリインターフェース３６は、例えばブロックＢ５を読み出す場合、その上下の画素データのみを同時に読み出すことにより、垂直方向（副走査方向）にのみn×m画素よりも大きなサイズを有するn×t画素（例えば横１６画素×縦３７画素）の画像データを読み出して、ブロックＢ５に対応する画像データとして画像データバッファ１１に供給する。なおn×t画素の画像データの各画素のデータは、ラスタ走査順で順次供給される。
【００２２】
このようにして供給されたn×t画素の画像データは、画像データバッファ３１においてＦＩＦＯ制御部３８がＲＡＭ３７に書き込む。この例では、ＲＡＭ３７は４ブロック分のデータを格納できるＦＩＦＯとしてＦＩＦＯ制御部３８により動作制御される。図４に示されるように、例えばブロックＢ５に対応するn×t画素の画像データとその前後のブロックに対応するそれぞれn×t画素の画像データとが、画像データ４１としてＲＡＭ３７に格納されている。
【００２３】
画像データバッファ３１のＦＩＦＯ制御部３８は、先に書き込まれたブロックの画像データを先に読み出してＲＡＭ３７から画像処理部３２に供給する。この際、ＦＩＦＯ制御部３８は、出力対象のn×t画素の画像データの左右必要な部分に計算用画像データを付加することによりs×t画素の画像データを生成し、画像処理部３２に供給する。このs×t画素の画像データが画像データ２２として図４に示される。なお以下に説明するように、全体画像の左端又は右端のブロックについては、画像処理部３２に供給するデータのサイズは(n+(s-n)/2)×t画素となる。
【００２４】
例えば、ブロックＢ５の場合であれば、横一列に並ぶ３つのブロックＢ４乃至Ｂ６のうちの真ん中のブロックであるので、ブロックＢ５に対応するn×t画素の画像データ４２と、左隣のブロックＢ４の右端部分の部分データ４３と、右隣のブロックＢ６の左端部分の画部分データ４４とを合わせて、s×t画素の画像データがＲＡＭ３７から読み出される。これにより、ブロックＢ５の右側と左側とに計算用画像データを付加することができる。
【００２５】
また例えば、ブロックＢ４の場合であれば、横一列に並ぶ３つのブロックＢ４乃至Ｂ６のうちの左端のブロックであるので、ブロックＢ４に対応するn×t画素の画像データと、その右隣のブロックＢ５の左端部分の部分データとを合わせることにより、ブロックＢ４の右側の部分に計算用データを付加することができる。ブロックＢ４の左側に関しては、計算用データは付加しない。これにより、(n+(s-n)/2)×t画素の画像データがＲＡＭ３７から画像処理部３２に供給される。
【００２６】
また同様に、ブロックＢ６の場合であれば、横一列に並ぶ３つのブロックＢ４乃至Ｂ６のうちの右端のブロックであるので、ブロックＢ６に対応するn×t画素の画像データと、その左隣のブロックＢ５の右端部分の部分データとを合わせることにより、ブロックＢ６の左側の部分に計算用データを付加することができる。またブロックＢ６の右側に関しては、計算用データは付加しない。これにより、(n+(s-n)/2)×t画素の画像データがＲＡＭ３７から画像処理部３２に供給される。
【００２７】
なお画像メモリ３５からメモリインターフェース３６が画像データを読み出す場合、画像の上端のブロックＢ１乃至Ｂ３については、各ブロックの下側にのみ計算用データを付加するようにしてよい。同様に、画像の下端のブロックＢ７乃至Ｂ９については、各ブロックの上側にのみ計算用データを付加するようにしてよい。
【００２８】
図５は、画像データバッファ３１の詳細な構成の一例を示す図である。図５に示す画像データバッファ３１は、ＲＡＭ３７、ＦＩＦＯ制御部３８、ブロックカウンタ４５、ブロックカウンタ４６、及び位置バッファ４７を含む。ＲＡＭ３７には画像メモリ部３０からの画像データが入力データとして供給される。入力データは、ＦＩＦＯ制御部３８が管理する書き込みポインタＷＰの示すＲＡＭ３７内のアドレスに書き込まれる。なお画像メモリ部３０からの入力データは、同時にブロックカウンタ４５にも供給される。
【００２９】
ブロックカウンタ４５には、１ブロック辺りの画像データの画像サイズの情報が供給されている。ブロックカウンタ４５は、入力データのビット数をカウントし、カウント値と画像サイズとを比較することにより、１ブロック分の画像データが供給されたか否かを判断する。１ブロック分の画像データが供給される毎に、ブロックカウンタ２５は書き込みポインタＷＰの更新を指示する信号をＦＩＦＯ制御部３８に供給する。この信号に応答して、ＦＩＦＯ制御部３８は書き込みポインタＷＰを更新する（次のブロックの書き込み位置を示すポインタ値に更新する）。
【００３０】
またブロックカウンタ４５は、現在入力データが供給されているブロックの位置に関する情報（位置情報）を位置バッファ４７に供給する。ブロックの位置に関する情報とは、例えば「左」、「中」、「右」を示すデータである。「左」とは、対応するブロックが、横一列に並ぶ複数のブロックのうちの左端のものであることを示す。「中」とは、対応するブロックが、横一列に並ぶ複数のブロックのうちで端に位置していない途中のものであることを示す。「右」とは、対応するブロックが、横一列に並ぶ複数のブロックのうちの右端のものであることを示す。具体的には、図４に示す画像データ２０の例の場合、ブロックＢ１、Ｂ４、及びＢ７が「左」であり、ブロックＢ２、Ｂ５、及びＢ８が「中」であり、ブロックＢ３、Ｂ６、及びＢ９が「右」である。
【００３１】
ブロックカウンタ４５は、「左」、「中」、及び「右」のそれぞれのブロックの画像サイズの情報を入力情報として供給されているので、入力データのビット数をカウントし、カウント値と画像サイズとを比較することにより、現在入力データが供給されているブロックの位置を特定することができる。特定されたブロックの位置に関する情報（位置情報）は、ブロックカウンタ４５から位置バッファ４７に供給される。位置バッファ４７は、ＦＩＦＯ制御部３８から供給される書き込みポインタＷＰの示す位置に、ブロックカウンタ４５から供給される位置情報を格納する。これにより、位置バッファ４７は、ＦＩＦＯに格納される各ブロック毎にそのブロックの位置に関する情報（位置情報）を記録することができる。
【００３２】
また位置バッファ４７は、ＦＩＦＯ制御部３８から供給される読み出しポインタＲＰが示す位置の位置情報を、ＦＩＦＯ制御部３８に供給する。これによりＦＩＦＯ制御部３８は、読み出しポインタＲＰが示すブロックの位置情報を知ることができる。この位置情報に基づいて、ＦＩＦＯ制御部３８は、データ読み出し時に左右両方に部分データを付加するのか、右側にのみ部分データを付加するのか、或いは左側にのみ部分データを付加するのかを決定することができる。
【００３３】
ＦＩＦＯ制御部３８が管理する読み出しポインタＲＰの示すＲＡＭ３７のアドレスから読み出された出力データは、画像処理部３２に供給される。この出力データは、同時にブロックカウンタ４６にも供給される。
【００３４】
ブロックカウンタ４６には、読み出しブロックの位置情報及び１ブロック辺りの画像データの画像サイズの情報が供給されている（図示省略）。ブロックカウンタ４６は、出力データのビット数をカウントし、カウント値と画像サイズとを比較することにより、１ブロック分の画像データが出力されたか否かを判断する。１ブロック分の画像データが出力される毎に、ブロックカウンタ４６は読み出しポインタＲＰの更新を指示する信号をＦＩＦＯ制御部３８に供給する。この信号に応答して、ＦＩＦＯ制御部３８は読み出しポインタＲＰを更新する（次のブロックの読み出し位置を示すポインタ値に更新する）。
【００３５】
図６は、４段のＦＩＦＯにブロックデータが格納される場合のＦＩＦＯ及び位置バッファ４７の内容の一例を示す図である。
【００３６】
ＦＩＦＯ制御部３８の制御下でＲＡＭ３７への読み書きを行うことで、４段のＦＩＦＯを実現する。ここで初期状態においては、ＦＩＦＯの内容及び位置バッファ４７の内容はバッファデータ５１で示すものとなっている。バッファデータ５１の４つの矩形枠が４段のＦＩＦＯの４つのブロック格納位置を示す。各矩形枠内で、上側には格納ブロックを示し、下側には位置バッファ４７に格納される各ブロック毎の位置情報を示してある。初期状態においては、格納ブロックはなく、位置情報は「左」に初期化されている。図中の「ＲＰ」の矢印は読み出しポインタＲＰの指し示す位置を示し、「ＷＰ」の矢印は書き込みポインタＷＰの指し示す位置を示す。
【００３７】
書き込み動作を４回繰り返すと（ＷＲ×４）、ＦＩＦＯの内容及び位置バッファ４７の内容はバッファデータ５２で示すものとなる。即ち、ＦＩＦＯにはブロックＢ１乃至Ｂ４が格納され、位置バッファ４７には「左」、「中」、「右」、「左」が格納される。読み出しポインタＲＰ及び書き込みポインタＷＰ共に、１番（一番左）の格納位置を指し示している。
【００３８】
この状態で、一番先に書き込んだブロックＢ１を読み出すと（ＲＤ×１）、読み出しポインタＲＰの指し示す位置は２番（左から２番目）の格納位置となる。このときＦＩＦＯの内容及び位置バッファ４７の内容はバッファデータ５３で示すものである。
【００３９】
通常のＦＩＦＯであれば、ブロックＢ１を読み出した後は、直ちに次に書き込むブロック（この場合はＢ５）でブロックＢ１を上書きしてしまってよい。しかし本願発明の場合には、ブロックＢ１を読み出した直後の状態では、ブロックＢ１を消去することはできない。何故なら、次に読み出すブロックＢ２は、ブロックＢ１のデータを計算用画像データとして左側に付加する必要があるからである。
【００４０】
このように本発明による画像データバッファ３１においては、ＦＩＦＯ制御部３８によるＦＩＦＯ制御が通常のＦＩＦＯ制御とは異なることになる。図７は、ＦＩＦＯ制御部３８におけるＦＩＦＯ制御に使用するパラメータが変化していく様子を示す図である。
【００４１】
図７に示すように、ＦＩＦＯ制御部３８には、書き込みポインタＷＰ及び読み出しポインタＲＰに加え、有効データ数ＡＶＬ、書き込み可能条件フラグＦＵＬＬ、読み出し可能条件フラグＲＤＹ、及びデータが空の状態を示すフラグＥＭＰが設けられている。図７のリセットから始まる各行は、図６に示すバッファデータ５１乃至５７の７つの状態に対応する。
【００４２】
有効データ数ＡＶＬは、格納されているデータの内でこれから読み出すべきデータの数（まだ読み出されていないデータの数）であり、ＷＰ−ＲＰで計算される値である。この例ではＦＩＦＯは４段であり、ＦＩＦＯ内はループになっているので、図６のバッファデータ５３に示すようにＷＰが１番の位置にありＲＰが２番の位置にあれば、ＡＶＬは１−２＋４（４段のループの一周分）で３となる。これに対応して、図７において、上から３行目のＲＤ×１の行のＡＶＬが３になっている。
【００４３】
図７において「位置」として示すのは、読み出しポインタＲＰが示す格納位置の位置情報である。図５に示すように位置バッファ４７は、ＦＩＦＯ制御部３８から供給される読み出しポインタＲＰが示す位置の位置情報を、ＦＩＦＯ制御部３８に供給する。ＦＩＦＯ制御部３８は、この位置バッファ４７から供給される位置情報を「位置」として内部レジスタに格納しておく。以降、このレジスタの内容である「位置」を位置フラグと呼ぶ。
【００４４】
書き込み可能条件フラグＦＵＬＬは、この位置フラグが左端（前記位置情報の「左」に対応）を示すか、真中（前記位置情報の「中」に対応）を示すか、右端（前記位置情報の「右」に対応）を示すかにより異なる値を有する。書き込み可能条件フラグＦＵＬＬが"１"の場合には、次のデータをＦＩＦＯに書き込むことは許可されない。書き込み可能条件フラグＦＵＬＬが"０"の場合には、次のデータをＦＩＦＯに書き込むことが許可される。
【００４５】
位置フラグが左端を示す場合、ＡＶＬ?４が満たされる場合にはＦＵＬＬは"１"となり、それ以外の場合に"０"となる。何故なら、位置フラグが左端を示す場合、ＦＩＦＯから次に読み出すべきデータは左端のブロックである。計算用付加データとして必要なのはその右隣のブロックのデータであり、先に書いたデータが先に消されるというＦＩＦＯの動作上、読み出し対象のブロックより先にその右隣のブロックが消去されることはあり得ない。また読み出し対象のブロック以前にＦＩＦＯに書き込んだブロックのデータは不要である。従って、ＡＶＬが４である状態（ＦＩＦＯが読み出し必要なデータで満杯になっている状態）では、当然にＦＩＦＯへの次のデータの書き込みは許されないのでＦＵＬＬは"１"となるが、それ以外の場合には、ＦＵＬＬは"０"となり書き込み許可状態となる。
【００４６】
位置フラグが真中を示す場合、ＡＶＬ?３が満たされる場合にはＦＵＬＬは"１"となり、それ以外の場合に"０"となる。何故なら、位置フラグが真中を示す場合、ＦＩＦＯから次に読み出すべきデータは真中のブロックである。計算用付加データとして必要なのはその左右に隣接するブロックのデータであり、先に書いたデータが先に消されるというＦＩＦＯの動作上、読み出し対象のブロックより先にその右隣のブロックが消去されることはあり得ない。また読み出し対象のブロックの直前にＦＩＦＯに書き込んだブロックのデータは必要であるが、それ以前に書き込んだブロックのデータは不要である。ＡＶＬが３の状態では、次に消去されるのは読み出し対象のブロックの直前にＦＩＦＯに書き込んだブロックのデータである。従って、ＡＶＬが３の状態（及び４の満杯状態）では、ＦＩＦＯへの次のデータの書き込みは許されずにＦＵＬＬは"１"となるが、ＡＶＬがそれより小さい場合には、ＦＵＬＬは"０"となり書き込み許可状態となる。
【００４７】
位置フラグが右端を示す場合、ＡＶＬ?３が満たされる場合にはＦＵＬＬは"１"となり、それ以外の場合に"０"となる。何故なら、位置フラグが右端を示す場合、ＦＩＦＯから次に読み出すべきデータは右端のブロックである。計算用付加データとして必要なのはその左隣のブロックのデータであり、これは、読み出し対象のブロックの直前にＦＩＦＯに書き込んだブロックのデータである。しかしながらそれ以前に書き込んだブロックのデータは不要である。ＡＶＬが３の状態では、次に消去されるのは読み出し対象のブロックの直前にＦＩＦＯに書き込んだブロックのデータである。従って、ＡＶＬが３の状態（及び４の満杯状態）では、ＦＩＦＯへの次のデータの書き込みは許されずにＦＵＬＬは"１"となるが、ＡＶＬがそれより小さい場合には、ＦＵＬＬは"０"となり書き込み許可状態となる。
【００４８】
読み出し可能条件フラグＲＤＹもまた、位置フラグが左端を示すか、真中を示すか、右端を示すかにより異なる値を有する。読み出し可能条件フラグＲＤＹが"１"の場合には、次のデータをＦＩＦＯから読み出すことが許可される。読み出し可能条件フラグＲＤＹが"０"の場合には、次のデータをＦＩＦＯから読み出すことが許可されない。
【００４９】
位置フラグが左端を示す場合、ＡＶＬ?２が満たされる場合にはＲＤＹは"１"となり、それ以外の場合に"０"となる。何故なら、位置フラグが左端を示す場合、ＦＩＦＯから次に読み出すべきデータは左端のブロックである。この場合、計算用付加データとして必要なのはその右隣のブロックのデータである。従って、この右隣のブロックのデータを書き込むことにより、書き込みポインタＷＰが読み出しポインタＲＰよりも少なくとも２つ先に進んだ状態であれば、読み出しポインタＲＰが示すブロックのデータを読み出す準備ができていることになる。
【００５０】
位置フラグが真中を示す場合、ＡＶＬ?２が満たされる場合にはＲＤＹは"１"となり、それ以外の場合に"０"となる。何故なら、位置フラグが真中を示す場合、ＦＩＦＯから次に読み出すべきデータは真中のブロックである。この場合、計算用付加データとして必要なのはその左右に隣接するブロックのデータである。ＦＩＦＯへの書き込み順は左のブロックから先に書き込むので、左隣のブロックは当然ＦＩＦＯ内に格納されている。従って、右隣のブロックのデータを書き込むことにより、書き込みポインタＷＰが読み出しポインタＲＰよりも少なくとも２つ先に進んだ状態であれば、読み出しポインタＲＰが示すブロックのデータを読み出す準備ができていることになる。
【００５１】
位置フラグが右端を示す場合、ＡＶＬ?１が満たされる場合にはＲＤＹは"１"となり、それ以外の場合に"０"となる。何故なら、位置フラグが右端を示す場合、ＦＩＦＯから次に読み出すべきデータは右端のブロックである。この場合、計算用付加データとして必要なのはその左隣のブロックのデータである。ＦＩＦＯへの書き込み順は左のブロックから先に書き込むので、左隣のブロックは当然ＦＩＦＯ内に格納されている。従って、読み出し対象のブロックのデータを書き込むことにより、書き込みポインタＷＰが読み出しポインタＲＰよりも少なくとも１つ先に進んだ状態であれば、読み出しポインタＲＰが示すブロックのデータを読み出す準備ができていることになる。
【００５２】
上述のようにして決定された書き込み可能条件フラグＦＵＬＬ及び読み出し可能条件フラグＲＤＹを参照して、コントローラ３３が、画像データバッファ３１に対するデータ書き込み及びデータ読み出しを制御する。即ち、書き込み可能条件フラグＦＵＬＬが許可する場合にデータ書き込みを行い、書き込み可能条件フラグＦＵＬＬが許可しない場合にはデータ書き込みを行なわない。また読み出し可能条件フラグＲＤＹが許可する場合にデータ読み出しを行い、読み出し可能条件フラグＲＤＹが許可しない場合にはデータ読み出しを行なわない。これにより、例えば図６にバッファデータ５１からバッファデータ５７として示すように各ブロックのデータの書き込み・読み出しを行い、各ブロックに付加する計算用データを喪失することなく、確実に計算用データが付加されたブロックデータを供給することが可能となる。
【００５３】
図８は、ＦＩＦＯ制御部３８の構成の一例を示す図である。図８のＦＩＦＯ制御部３８は、フリップチップ６１乃至６５、加算器６６及び６７、減算器６８、デコーダ６９及び７０、及び比較器７１乃至７３を含む。
【００５４】
フリップチップ６１は、書き込みポインタＷＰを格納するフリップチップである。フリップチップ６１は、ブロックカウンタ４５からの書き込みポインタＷＰ更新信号に応答して、現在の書き込みポインタＷＰの値に加算器６６で"１"を加えた値をラッチする。
【００５５】
フリップチップ６２は、読み出しポインタＲＰを格納するフリップチップである。フリップチップ６２は、ブロックカウンタ４６からの読み出しポインタＲＰ更新信号に応答して、現在の読み出しポインタＲＰの値に加算器６７で"１"を加えた値をラッチする。なおフリップチップ６１及び６２は、その出力の示す値がＦＩＦＯの段数に達するとリセットするよう構成されてよい。
【００５６】
減算器６８は、書き込みポインタＷＰの値から読み出しポインタＲＰの値を減算することで、有効データ数ＡＶＬを算出する。算出した有効データ数ＡＶＬは、比較器７１乃至７３の一方の入力に供給される。
【００５７】
比較器７１乃至７３のもう一方の入力には、デコーダ６９の出力、デコーダ７０の出力、及び０がそれぞれ供給される。デコーダ６９及び７０には、読み出しポインタＲＰが示す読み出し対象ブロックの位置情報（前記位置フラグ）が供給される。
【００５８】
デコーダ６９は位置情報をデコードして、位置情報が「左」又は「中」のときに２を出力し、位置情報が「右」のときに１を出力する。比較器７１は、ＡＶＬがデコーダ６９の出力以上であるときに、出力信号をアサートする。この出力信号のアサートに応答して、フリップフロップ６３が"１"に設定される。
【００５９】
デコーダ７０は位置情報をデコードして、位置情報が「左」のときに４を出力し、位置情報が「中」又は「右」のときに３を出力する。比較器７２は、ＡＶＬがデコーダ７０の出力以上であるときに、出力信号をアサートする。この出力信号のアサートに応答して、フリップフロップ６４が"１"に設定される。
【００６０】
また比較器７３は、ＡＶＬが"０"出力以上であるときに、出力信号をアサートする。この出力信号のアサートに応答して、フリップフロップ６５が"１"に設定される。
【００６１】
図９は、コントローラ３３及び画像データバッファ３１の動作の一例を示すフローチャートである。
【００６２】
初期状態においては、書き込みポインタＷＰ、読み出しポインタＲＰ、有効データ数ＡＶＬ、読み出し可能条件フラグＲＤＹ、及び書き込み可能条件フラグＦＵＬＬは全て"０"であり、空フラグＥＭＰは"１"、位置フラグは「左」である。
【００６３】
ステップＳ１で、ＦＵＬＬが"０"であるか否かが判断される。ＦＵＬＬが"１"である場合には、ステップＳ２で、ＲＤＹが"１"であるか否かが判断される。ＦＵＬＬが"０"である場合には、ステップＳ３で、ＥＭＰが"１"であるか否かが判断される。ＥＭＰの条件判断後の動作は、本発明に直接関係がないので示していない。図９では、ＥＭＰの値に関わらず処理はステップＳ１に戻る。これらのステップＳ１乃至Ｓ３の判断は、コントローラ３３により行われる。
【００６４】
ステップＳ１でＦＵＬＬが"０"と判断された場合には、ステップＳ４で、ＦＩＦＯへのデータ入力を行うと共に、位置バッファ４７への位置データ入力を行う。即ち、コントローラ３３からの書き込み指示に基づき、ＦＩＦＯ制御部３８の制御の下で、書き込みポインタＷＰの示すＲＡＭ３７中の位置に次のブロックのデータを書き込むと共に、書き込みポインタＷＰの示す位置バッファ４７中の位置にこのブロックの位置情報を格納する。
【００６５】
その後、ブロックカウンタ４５からの書き込みポインタＷＰ更新信号がアサートされると、それに応答して、ステップＳ５で書き込みポインタＷＰを更新する。次に、ステップＳ６で有効データ数ＡＶＬを計算する。ステップＳ６の後、処理はステップＳ１に戻る。
【００６６】
ステップＳ２でＲＤＹが"１"と判断された場合には、ステップＳ７でデータを出力する。即ち、コントローラ３３からの読み出し指示に基づき、ＦＩＦＯ制御部３８の制御の下で、読み出しポインタＲＰが示す位置に格納されるブロックのデータ及びその左右の必要な部分のデータをＲＡＭ３７から読み出して、出力データとして画像処理部３２に供給する。またステップＳ７と並行してステップＳ８において、位置データが更新される。即ちＦＩＦＯ制御部３８が保持する位置フラグの内容が、更新後の読み出しポインタＲＰが示す位置バッファ４７中の位置情報に更新される。またステップＳ９において、ＦＵＬＬとＲＤＹとの値を更新する。
【００６７】
その後、ブロックカウンタ４６からの読み出しポインタＲＰ更新信号がアサートされると、それに応答して、ステップＳ１０で読み出しポインタＲＰを更新する。即ち、ＦＩＦＯ制御部３８において読み出しポインタＲＰをインクリメントする。次に、ステップＳ６で有効データ数ＡＶＬを計算する。ステップＳ６の後、処理はステップＳ１に戻る。
【００６８】
上記説明から分かるように、本発明の少なくとも１つの実施例によれば、画像メモリからＦＩＦＯへのデータ転送において同一データの重複転送をなるべく避けることにより、データ転送量を削減することができるという効果が得られる。なお本発明ではＦＩＦＯに最低３段が必要となる。それに対して従来の構成ではＦＩＦＯに必要な最低段数は１段である。しかしながら、画像メモリにＤＲＡＭを使用した場合、ＤＲＡＭのリフレッシュに要する数千サイクルの期間中にＤＲＡＭへのアクセスが不可であっても画像処理部が動作可能なように、従来の構成でもＦＩＦＯを３段又は４段程度の構成にするのが一般的である。従って、例えば従来技術も本発明も両方共に３段構成であるとして比較すると、１ブロック辺りの画像データ量が少ない本願発明の方が、ＦＩＦＯのサイズを小さくすることができる。
【００６９】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図面の簡単な説明】
【００７０】
【図１】従来の画像転送・処理システムの構成の一例を示す図である。
【図２】画像データバッファの詳細な構成の一例を示す図である。
【図３】本発明による画像転送・処理システムの構成の一例を示す図である。
【図４】図３の画像転送・処理システムの動作原理を説明するための図である。
【図５】画像データバッファの詳細な構成の一例を示す図である。
【図６】４段のＦＩＦＯにブロックデータが格納される場合のＦＩＦＯ及び位置バッファの内容の一例を示す図である。
【図７】ＦＩＦＯ制御部におけるＦＩＦＯ制御に使用するパラメータが変化していく様子を示す図である。
【図８】ＦＩＦＯ制御部の構成の一例を示す図である。
【図９】コントローラ及び画像データバッファの動作の一例を示すフローチャートである。
【符号の説明】
【００７１】
３０  画像メモリ部
３１  画像データバッファ
３２  画像処理部
３３  コントローラ
３５  画像メモリ
３６  メモリインターフェース
３７  ＲＡＭ
３８  ＦＩＦＯ制御部
４５  ブロックカウンタ
４６  ブロックカウンタ
４７  位置バッファ
【図１】
2008054222.tif 000003
【図２】
2008054222.tif 000004
【図３】
2008054222.tif 000005
【図４】
2008054222.tif 000006
【図５】
2008054222.tif 000007
【図６】
2008054222.tif 000008
【図７】
2008054222.tif 000009
【図８】
2008054222.tif 000010
【図９】
2008054222.tif 000011