以下、添付図面を参照して、本発明を実施するための形態を説明する。なお、本発明は以下の実施形態に限定されるものではなく、その要旨を逸脱しない範囲において適宜変更可能である。また、以下で説明する図面において、同じ機能を有するものは同一の符号を付し、その説明を省略又は簡潔にすることもある。
[第1実施形態]
第1実施形態の画像処理装置及び画像処理方法について図面を用いて説明する。図1は、本実施形態の画像処理装置100を示すブロック図である。本実施形態では、画像処理装置100が撮像素子を備える撮像装置である場合、より具体的には、画像処理装置100がデジタルカメラである場合を例に説明するが、これに限定されるものではない。
図1に示すように、画像処理装置100は、撮像素子102と、A/D変換部103と、補正処理部104と、不揮発性メモリ105と、不揮発性メモリ制御部106と、操作部107とを有している。画像処理装置100は、CPU(Central Processing Unit)108と、現像処理部109と、表示制御部110と、表示部111と、メモリ112と、メモリ制御部120とを更に有している。画像処理装置100には、結像光学系101が備えられる。結像光学系101は、画像処理装置100のボディから着脱可能であってもよいし着脱不能であってもよい。
結像光学系(結像光学部)101は、撮像素子102の前段に配されている。結像光学系101は、レンズや絞り等を備えている。撮影の際、結像光学系101は、フォーカス調節や露出調節等を行い、撮像素子102に光学像を結像する。撮像素子(撮像部、撮像手段)102は、結像光学系101によって結像された光学像を電気信号(アナログ画像信号)に変換する光電変換機能を有している。即ち、撮像素子102の受光面(図示せず)には、光電変換部(光電変換素子)がマトリクス状に配されている。撮像素子102としては、例えば、CCDイメージセンサやCMOSイメージセンサ等が用いられる。撮像素子102は、例えば、1フレームが水平1920画素×垂直1080画素、60フレーム毎秒(fps)の動画データを出力する。A/D変換部103は、撮像素子102からのアナログ画像信号をデジタル画像信号に変換する。
CPU108は、画像処理装置100全体の制御を司るものであり、各機能ブロック(各処理部)に対しての動作の指示を行い、各種の制御や処理を実行する。メモリ112には、静止画像、動画像、音声等のデータが格納される。また、CPU(制御部、処理部)108を動作させる際に用いられる定数や、画像処理装置100によって実行されるプログラム等をメモリ112に格納することも可能である。メモリ112は、これらを格納するのに十分な記憶容量を備えている。また、メモリ112は、処理中の画像データ等を一時的に記憶する際にも用いられる。メモリ112としては、例えばDRAM(Dynamic Random Access Memory)が用いられる。
メモリ制御部120は、CPU108からの指示に応じて、メモリ112に対するデータの書き込みと読み出しを行う。不揮発性メモリ制御部106は、CPU108からの指示に応じて、不揮発性メモリ105に対するデータの書き込みや読み出しを行う。不揮発性メモリ105は、電気的に消去や記録が可能であり、例えば、EEPROM(Electrically Erasable Programmable Read Only Memory)等が用いられる。不揮発性メモリ105には、CPU108を動作させる際に用いられる定数や、プログラム等が記憶される。CPU108は、補正処理部104、現像処理部109、メモリ制御部120、不揮発性メモリ制御部106、表示制御部110、操作部107、及び、撮像素子102に対する制御を不図示のバスライン等を介して適宜行う。不揮発性メモリ105等に記録されたプログラムをCPU108が実行することによって、画像処理装置100によって行われる様々な処理が実現される。
補正処理部104は、A/D変換部103から出力される画像データに対して、画素補正、黒レベル補正、シェーディング補正、傷補正、倍率色収差補正等を行う。メモリ制御部120は、補正処理部104によって補正処理が施された画像データをメモリ112に書き込む。また、メモリ制御部120は、メモリ112に書き込んだ画像データをメモリ112から読み出し、読み出した画像データを例えば現像処理部109に転送する。現像処理部109は、画像データに対して、拡大縮小等のリサイズ処理、圧縮伸長処理、フォーマット変換処理、現像処理、歪み補正等を行う。メモリ制御部120は、現像処理部109によって処理された画像データをメモリ112に書き込む。また、メモリ112に書き込まれた画像データはメモリ制御部120によって読み出され、各機能ブロックに適宜転送される。
補正処理部104や現像処理部109は、上記のような処理を行うため、画像データを記憶するためのメモリ(図示せず)を有している。かかるメモリの容量を小さくするため、補正処理部104や現像処理部109は、1フレームの画像データを水平方向にも垂直方向にも分割することにより設定される分割ブロック300a~300i(図3参照)を単位として上記のような処理を行う。このため、本実施形態では、分割ブロックを単位としてメモリへの画像データの書き込みや読み出しが行われる。なお、ブロック300a~300iについては、後に詳述することとする。
更に、本実施形態では、処理における遅延を小さくするため、画像データの書き込みが完了したアドレスから画像データを順次読み出していく追いかけ制御を行う。分割ブロックを単位として追いかけ制御を行う場合には、読み出し対象となるブロックの画像データの書き込みが完全に完了しなければ、当該ブロックからの読み出し処理は行えない。そこで、本実施形態では、処理における遅延をより小さくすべく、分割ブロックにそれぞれ複数含まれているより小さい単位であるライン(ブロック)320(図3参照)を単位として追いかけ制御を行う。従って、本実施形態では、ブロックに含まれるラインのうちの書き込み処理が完了したラインから順に画像データが順次読み出される。このような追いかけ制御は、メモリ制御部120等によって実行される。なお、分割ブロックに含まれる各ラインは、分割ブロックの水平方向のサイズと同じサイズに分割されているため、分割ラインと称することもできる。
表示部111は、表示制御部110によって制御され、各種画像データ等を表示する。表示部111としては、例えば液晶モニタ等が用いられる。操作部107は、ユーザによって操作されるスイッチやボタン等を含み、電源のON/OFFの操作や、シャッタのON/OFFの操作等に用いられる。
図2は、メモリ制御部120を示すブロック図である。メモリ制御部120は、DMAC(Direct Memory Access Controller)210と、追いかけ制御部200とを有している。DMAC210は、書き込み用のDMACであるWRDMAC(Write DMAC)211を有している。また、DMAC210は、読み出し用のDMACであるRDDMAC(Read DMAC)213を有している。メモリインターフェイス(I/F)205は、WRDMAC211やRDDMAC213からの制御信号に従って、メモリ112を制御する。
追いかけ制御部200は、書き込み座標計算部(書き込み座標取得部)201と、読み出し座標計算部(読み出し座標取得部)202と、座標比較部203と、読み出しリクエストマスク部204とを有している。追いかけ制御部200は、WRDMAC211からの書き込みオフセット信号WR_OFFSET1~WR_OFFSET3に基づいて、後述する書き込み座標(HW1,VW1)~(HW3,VW3)の計算を行う。また、追いかけ制御部200は、RDDMAC213から供給されるデータ転送長信号RD_TRANS及び読み出しオフセット信号RD_OFFSET1~RD_OFFSET3に基づいて、読み出し座標(HR,VR)の計算を行う。読み出し座標は、水平方向の座標HRと垂直方向の座標VRとを含む。追いかけ制御部200は、書き込み座標と読み出し座標との比較結果に基づいて、RDDMAC213からの読み出しリクエスト信号RD_REQを適宜マスクする。WRDMAC211によって書き込みが完了したアドレスの画像データをRDDMAC213が順次読み出す追いかけ制御が行われる。このような追いかけ制御が、追いかけ制御部200によって司られる。
WRDMAC211は、メモリ112にデータを書き込む際のアドレス(アクセスアドレス)、即ち、書き込みアドレス(書き込みアドレス値)WADRSを生成する書き込みアドレス生成部212を備えている。書き込みアドレス生成部212は、データ転送長等の管理や制御を行い得る。
RDDMAC213は、メモリ112からデータを読み出す際のアドレス、即ち、読み出しアドレス(読み出しアドレス値)RADRSを生成する読み出しアドレス生成部214を備えている。読み出しアドレス生成部214は、データ転送長等の管理や制御を行い得る。
WRDMAC211は、書き込みアドレスWADRSをインクリメントする機能を備えている。従って、WRDMAC211は、メモリ112上の所定のアドレス空間(アドレス領域)に画像データを順番に格納していくことが可能である。また、RDDMAC213は、読み出しアドレスRADRSをインクリメントする機能を備えている。従って、RDDMAC213は、メモリ112上の所定のアドレス空間に格納された画像データを順番に読み出していくことが可能である。また、WRDMAC211やRDDMAC213は、アクセスアドレスを適宜ジャンプさせることができ(オフセットジャンプ機能)、分割ブロックの画像データのメモリ112への書き込み処理や読み出し処理を順次行うことができる。
このように、WRDMAC211は、画像データをメモリ112に書き込む書き込み手段として機能し得る。また、RDDMAC213は、WRDMAC211によってメモリ112に書き込まれた画像データをメモリ112から読み出す読み出し手段として機能し得る。
図7は、書き込みアドレス生成部212及び読み出しアドレス生成部214の構成を示すブロック図である。書き込みアドレス生成部212の構成と読み出しアドレス生成部214の構成とは同様であるため、ここでは、同一の図面、即ち、図7を用いて書き込みアドレス生成部212と読み出しアドレス生成部214とについて説明することとする。
WRDMAC211とRDDMAC213は、ある量の画像データが転送される毎にアクセスアドレスをジャンプさせるオフセットジャンプ機能を有している。例えば、1つのライン320(図3参照)の画像データの転送が完了する毎に、アクセスアドレスをジャンプさせる。また、1つの分割ブロック300a~300i(図3参照)の画像データの転送が完了する毎に、アクセスアドレスをジャンプさせる。また、1つのブロックライン321a~321c(図3参照)の画像データの転送が完了する毎に、アクセスアドレスをジャンプさせる。このようなオフセットジャンプ機能を実現させるべく、CPU108は、以下のような設定をWRDMAC211やRDDMAC213に対して行う。即ち、CPU108は、WRDMAC211やRDDMAC213に備えられたアドレスカウンタにスタートアドレス値を入力することによって、スタートアドレスを設定する。また、CPU108は、WRDMAC211やRDDMAC213の算出部701に対し、水平方向の画像の分割数と、垂直方向の画像の分割数とを入力する。なお、ここでは、水平、垂直分割数を入力する場合を例に説明したが、入力する情報はこれに限定されるものではない。水平方向の分割の態様と、垂直方向の分割の態様とを示す情報を適宜入力すればよい。これにより、分割が均等に行われていない構成や、各分割ブロックが重複している構成とすることができる。また、CPU108は、算出部701に対し、水平画像サイズ、即ち、水平方向の画像の画素数と、垂直ライン数、即ち、垂直方向の画像の画素数とを入力する。また、CPU108は、算出部701に対して、バースト長、即ち、1回のリクエスト信号におけるアドレス指定によって連続してアクセス可能なデータ長を入力する。また、CPU108は、WRDMAC211やRDDMAC213のアドレス加算値算出部702に対してオフセット値(オフセットジャンプ値)を入力する。オフセット値は、オフセットジャンプの際に適用されるオフセット量を示す。かかるオフセット値は複数種存在しており、オフセットジャンプが行われる箇所に応じて、適切なオフセット値が選択される。かかるオフセット値は、例えばCPU108によって設定される。
算出部701は、水平画像サイズ、水平、垂直分割数、垂直ライン数、バースト長等に基づいてデータ転送長を算出し、算出したデータ転送長をアドレス加算値算出部702に出力する。データ転送長は、メモリ112に対する1回のアクセスにおいて転送されるデータの長さ(データ量)である。算出部701は、メモリ112に対するアクセスにおいて転送されたデータ量に基づいてオフセット信号を生成し、生成したオフセット信号をアドレス加算値算出部702に出力する。具体的には、ライン320の最後尾(末尾)に位置する画素301~309に書き込み処理が達した際には、第1の書き込みオフセット信号WR_OFFSET1がそれぞれ生成される。ライン320の最後尾に位置する画素301~309に読み出し処理が達した際には、第1の読み出しオフセット信号RD_OFFSET1がそれぞれ生成される。分割ブロック300a、300b、300d、300e、300g、300hの最後尾に位置する画素311,312,314,315,317,318に書き込み処理が達した際には、第2の書き込みオフセット信号WR_OFFSET2が生成される。分割ブロック300a、300b、300d、300e、300g、300hの最後尾に位置する画素311,312,314,315,317,318に読み出し処理が達した際には、第2の読み出しオフセット信号RD_OFFSET2が生成される。ブロックライン321a、321bの最後尾に位置する画素313,316に書き込み処理が達した際には、第3の書き込みオフセット信号WR_OFFSET3がそれぞれ生成される。
アドレス加算値算出部702は、算出部701から出力されるデータ転送長に基づいてアドレス加算値を算出し、算出したアドレス加算値をアドレス算出部703に出力する。アドレス加算値算出部702は、オフセット信号を算出部701から受信した際には、適切なオフセット値を、算出部701から受信したデータ転送長に加算する。アドレス加算値算出部702は、いずれの分割ブロックに対して書き込み処理や読み出し処理が行われているかをオフセット信号に基づいて把握することができるため、適切なオフセット値を選択することができる。そして、アドレス加算値算出部702は、加算によって得られた値をアドレス加算値としてアドレス算出部703に出力する。
アドレス算出部703は、メモリ112へのアクセスを開始する際においては、CPU108によって設定されたスタートアドレスに基づいたアドレス値を出力する。アドレス算出部703は、メモリ112へのアクセスが開始された以降においては、アドレス加算値算出部702から出力されるアドレス加算値を現在のアドレス値に加算し、算出したアドレス値を出力する。オフセット信号が算出部701から発せられた際には、当該オフセット信号に対応するオフセット値の分だけアドレス加算値算出部702から出力されるアドレス加算値がオフセットされる。従って、オフセット信号が算出部701から発せられた際には、当該オフセット信号に対応するオフセット値に応じたアドレスジャンプが行われることとなる。
図3は、書き込みアクセスや読み出しアクセスの順序を概念的に示す図である。図3は、メモリ112における仮想的なアドレス空間を画像に対応するように概念的に示したものである。図3に示すように、1フレームの画像データを水平方向及び垂直方向にそれぞれ3分割することによって矩形の分割ブロック300a~300iが設定されている。これらの分割ブロック300a~300iに対して2次元的に連続してアクセスが行われる。なお、以下の説明において、個々の分割ブロックについて説明する際には、符号300a~300iを用い、分割ブロック一般について説明する際には、符号300を用いる。
各分割ブロック300には複数のライン320が含まれている。また、複数の分割ブロック300a~300cによってブロックライン321aが構成され、複数の分割ブロック300d~300fによってブロックライン321bが構成される。また、複数の分割ブロック300g~300iによってブロックライン321cが構成される。ここでは、個々のブロックラインについて説明する際には、符号321a~321cを用い、ブロックライン一般について説明する際には、符号321を用いる。
分割ブロック300a、300d、300gの水平方向の画素数(サイズ)をXA、分割ブロック300b、300e、300hの水平方向の画素数をXB、分割ブロック300c、300f、300iの水平方向の画素数をXCとする。分割ブロック300a~300cの垂直方向のライン数(画素数)をYA、分割ブロック300d~300fの垂直方向のライン数をYB、分割ブロック300g~300iの垂直方向のライン数をYCとする。なお、ここでは、説明を簡略化するため、YA=4、YB=4、YC=6とするが、実際には垂直方向のライン数はこれらの値よりも遙かに大きい。また、1フレームの水平方向の画素数をXH(=XA+XB+XC)とする。画素数XA~XC、ライン数YA~YC、オフセット値等は、上述したように、DMAC210の算出部701やアドレス加算値算出部702に対してCPU108から予め入力される。そして、算出部701やアドレス加算値算出部702に備えられているレジスタ(不図示)にこれらの値が予め格納される。図3における矢印は、座標のジャンプ、即ち、アドレスジャンプを概念的に示している。なお、1フレームの画像の左上端の画素のデータが書き込まれるアドレスが、当該フレームの画像データが書き込まれるアドレス領域の先頭のアドレスとなる。
上述したように、本実施形態では、分割ブロック300を単位として書き込み処理や読み出し処理が行われる。例えば、まず、1フレームのうち図3の左上に位置する分割ブロック300aの画像データがメモリ112に書き込まれる。分割ブロック300aの画像データの書き込みが完了した後には、分割ブロック300aの右側の分割ブロック300bの画像データの書き込みが行われる。分割ブロック300bの画像データの書き込みが完了した後には、分割ブロック300bの右側の分割ブロック300cの画像データの書き込みが行われる。このように、第1番目のブロックライン321aに位置する分割ブロック300a~300cの画像データのメモリ112への書き込みが左側から右側へ順次行われる。第1番目のブロックライン321aの分割ブロック300a~300cの画像データの書き込みが完了した後には、第2番目のブロックライン321bの分割ブロック300d~300fの画像データの書き込みが順次行われる。第2番目のブロックライン321bの分割ブロック300d~300fの画像データの書き込みが完了した後には、第3番目のブロックライン321cの分割ブロック300g~300iの画像データの書き込みが順次行われる。こうして、全ての分割ブロック300a~300iの画像データのメモリ112への書き込みが順次行われる。なお、ここでは、書き込み時のアクセスを例として説明するが、読み込み時のアクセスも同様に行われる。
書き込みアクセスにおける順序をより具体的に以下に説明する。まず、分割ブロック300aの画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みアドレス生成部212によって発行されるアドレス値に従って、分割ブロック300aの第1番目のライン320の画像データのメモリ112への書き込みが行われる。分割ブロック300aの第1番目のライン320の先頭の座標は(1,1)であり、分割ブロック300aの第1番目のライン320の最後尾の座標は(XA,1)である。なお、1回の書き込みアクセスにおけるデータ転送長が1つのライン320に対応するデータ長と同等である場合には、ライン320の書き込みは1回の書き込みアクセスによって完了する。一方、1回の書き込みアクセスにおけるデータ転送長が1つのライン320に対応するデータ長より短い場合には、ライン320の書き込みは複数回の書き込みアクセスによって完了する。
分割ブロック300aの第1番目のライン320の画像データの書き込みが完了した後、分割ブロック300aの第2番目のライン320の画像データの書き込みが行われる。分割ブロック300aの第2番目のライン320の先頭の座標は(1,2)である。座標(1,2)に対応するメモリアドレスは、座標(XA,1)に対応するメモリアドレスの次のメモリアドレスではない。従って、第1番目のライン320の画像データの書き込みから第2番目のライン320の画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック300aの第1番目のライン320の最後尾の座標に書き込み処理が達した際に、書き込みアドレス生成部212のアドレス加算値算出部702によってアドレス値にオフセット値が加算される。即ち、データ転送長に応じた値とオフセット値とを現在のアドレス値に加算することによって、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値は(XH-XA)である。
この後、分割ブロック300aの画像データの書き込みが順次行われる。分割ブロック300aの最後のライン320を除く各ライン320の最後尾の座標の画素301に書き込み処理が達する毎に、アドレス値にオフセット値が加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック300aの画像データの書き込みが順次行われる。
分割ブロック300aの画像データのメモリ112への書き込みが完了した後、分割ブロック300aの右側の分割ブロック300bの画像データの書き込みが行われる。分割ブロック300aの最後のライン320である第YA番目のライン320の最後尾の画素311の座標、即ち、分割ブロック300aの最後尾の画素311の座標は(XA,YA)である。一方、分割ブロック300bの第1番目のライン320の先頭の座標、即ち、分割ブロック300bの先頭の座標は(XA+1,1)である。座標(XA+1,1)に対応するメモリアドレスは、座標(XA,YA)に対応するメモリアドレスの次のメモリアドレスではない。従って、第1番目の分割ブロック300aの画像データの書き込みから第2番目の分割ブロック300bの画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック300aの最後尾の座標に書き込み処理が達した際に、オフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とがアドレス値に加算され、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値は(-XH×(YA-1))であり、(XA,YA)に対応するメモリアドレスから座標(XA+1,1)に対応するメモリアドレスにジャンプする。オフセット値が負の値であるため、垂直方向の座標はYAから1に対応するメモリアドレスに戻る。こうして、アクセスアドレスがジャンプし、分割ブロック300bの第1番目のライン320の画像データの書き込みが行われる。分割ブロック300bの第1番目のライン320の画像データの書き込みが完了した後、分割ブロック300bの第2番目のライン320の画像データの書き込みが行われる。分割ブロック300bの第1番目のライン320の最後尾の座標は(XA+XB,1)であり、分割ブロック300bの第2番目のライン320の先頭の座標は(XA+1,2)である。従って、第1番目のライン320の画像データの書き込みから第2番目のライン320の画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。即ち、分割ブロック300bの第1番目のライン320の最後尾の座標に書き込み処理が達した際に、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(XH-XB)である。この後、分割ブロック300bの画像データの書き込みが順次行われる。分割ブロック300bの最後のライン320を除く各ライン320の最後尾の座標の画素302に書き込み処理が達する毎に、オフセット値がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック300bの画像データの書き込みが順次行われる。
分割ブロック300bの画像データのメモリ112への書き込みが完了した後、分割ブロック300bの右側の分割ブロック300cの画像データの書き込みが行われる。分割ブロック300bの最後尾の座標は(XA+XB,YA)である。一方、分割ブロック300cの第1番目のライン320の先頭の座標は(XA+XB+1,1)である。座標(XA+XB+1,1)に対応するメモリアドレスは、座標(XA+XB,YA)に対応するメモリアドレスの次のメモリアドレスではない。従って、分割ブロック300bの画像データの書き込みから分割ブロック300cの画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック300bの最後尾の座標に書き込み処理が達した際に、オフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とがアドレス値に加算され、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値は(-XH×(YA-1))である。座標(XA+XB,YA)に対応するメモリアドレスから座標(XA+XB+1,1)に対応するメモリアドレスにジャンプする。オフセット値が負の値であるため、垂直方向のアドレスがYAから1に戻る。こうして、アクセスアドレスがジャンプし、分割ブロック300cの第1番目のライン320の画像データの書き込みが行われる。
分割ブロック300cの第1番目のライン320の画像データの書き込みが完了した後、分割ブロック300cの第2番目のライン320の画像データの書き込みが行われる。分割ブロック300cの第1番目のライン320の最後尾の座標は(XA+XB+XC,1)であり、分割ブロック300cの第2番目のライン320の先頭の座標は(XA+XB+1,2)である。従って、第1番目のライン320の画像データの書き込みから第2番目のライン320の画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。即ち、分割ブロック300cの最後尾の座標に書き込み処理が達した際に、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(XH-XC)である。この後、分割ブロック300cの画像データの書き込みが順次行われる。分割ブロック300cの最後のライン320を除く各ライン320の最後尾の画素303に書き込み処理が達する毎に、オフセット値がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック300cの画像データの書き込みが順次行われる。
分割ブロック300cの画像データのメモリ112への書き込みが完了した後、分割ブロック300aの下側の分割ブロック300dの画像データの書き込みが行われる。分割ブロック300cの最後尾の座標は(XA+XB+XC,YA)である。一方、分割ブロック300dの第1番目のライン320の先頭の座標は(1,YA+1)である。座標(1,YA+1)に対応するメモリアドレスは、座標(XA+XB+XC,YA)に対応するメモリアドレスの次のメモリアドレスである。従って、分割ブロック300cの画像データの書き込みから分割ブロック300dの画像データの書き込みに移行する際には、オフセット値はアドレス値に加算されない。換言すれば、オフセット値=0が加算される。この後、分割ブロック300dの画像データの書き込みが順次行われる。分割ブロック300dの最後のライン320を除く各ライン320の最後尾の座標の画素304に書き込み処理が達する毎に、オフセット値、即ち、(XH-XA)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック300dの画像データの書き込みが順次行われる。
分割ブロック300dの画像データのメモリ112への書き込みが完了した後、分割ブロック300dの右側の分割ブロック300eの画像データの書き込みが行われる。分割ブロック300dの画像データの書き込みから分割ブロック300eの画像データの書き込みに移行する際、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YB-1))である。こうして、分割ブロック300dの画像データの書き込みから分割ブロック300eの画像データの書き込みに移行する。そして、分割ブロック300eの画像データの書き込みが順次行われる。分割ブロック300eの最後のライン320を除く各ライン320の最後尾の座標の画素305に書き込み処理が達する毎に、オフセット値、即ち(XH-XB)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック300eの画像データの書き込みが順次行われる。
分割ブロック300eの画像データのメモリ112への書き込みが完了した後、分割ブロック300eの右側の分割ブロック300fの画像データの書き込みが行われる。分割ブロック300eの画像データの書き込みから分割ブロック300fの画像データの書き込みに移行する際、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YB-1))である。こうして、分割ブロック300eの画像データの書き込みから分割ブロック300fの画像データの書き込みに移行する。この後、分割ブロック300fの画像データの書き込みが順次行われる。分割ブロック300fの最後のライン320を除く各ライン320の最後尾の画素306に書き込み処理が達する毎に、オフセット値、即ち(XH-XC)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック300fの画像データの書き込みが順次行われる。
分割ブロック300fの画像データのメモリ112への書き込みが完了した後、分割ブロック300dの下側の分割ブロック300gの画像データの書き込みが行われる。分割ブロック300fの画像データの書き込みから分割ブロック300gの画像データの書き込みに移行する際には、オフセット値はアドレス値に加算されない。即ち、データ転送長に応じたアドレス加算値をアドレス値に加算し、分割ブロック300fの画像データの書き込みから分割ブロック300gの画像データの書き込みに移行する。この後、分割ブロック300gの画像データの書き込みが順次行われる。分割ブロック300gの最後のライン320を除く各ライン320の最後尾の画素307に書き込み処理が達する毎に、オフセット値、即ち(XH-XA)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック300gの画像データの書き込みが順次行われる。
分割ブロック300gの画像データのメモリ112への書き込みが完了した後、分割ブロック300gの右側の分割ブロック300hの画像データの書き込みが行われる。分割ブロック300gの画像データの書き込みから分割ブロック300hの画像データの書き込みに移行する際には、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YC-1))である。こうして、分割ブロック300gの画像データの書き込みから分割ブロック300hの画像データの書き込みに移行する。この後、分割ブロック300hの画像データの書き込みが順次行われる。分割ブロック300hの最後のライン320を除く各ライン320の最後尾の画素308に書き込み処理が達する毎に、オフセット値、即ち(XH-XB)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック300hの画像データの書き込みが順次行われる。
分割ブロック300hの画像データのメモリ112への書き込みが完了した後、分割ブロック300hの右側の分割ブロック300iの画像データの書き込みが行われる。分割ブロック300hの画像データの書き込みから分割ブロック300iの画像データの書き込みに移行する際には、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YC-1))である。こうして、分割ブロック300hの画像データの書き込みから分割ブロック300iの画像データの書き込みに移行する。この後、分割ブロック300iの画像データの書き込みが順次行われる。分割ブロック300iの最後のライン320を除く各ライン320の最後尾の画素309に書き込み処理が達する毎に、オフセット値、即ち(XH-XC)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック300iの画像データの書き込みが順次行われる。
上記のような処理によって、9つの分割ブロック300に分割された画像がメモリ112に順次書き込まれる。
なお、ここでは、書き込み処理を例に説明したが、読み出し処理も同様に行い得る。複数の分割ブロック300の画像データをメモリ112から読み出す際の読み出しアドレス生成部214の動作は、複数の分割ブロック300の画像データをメモリ112に書き込む際の書き込みアドレス生成部212の上述した動作とほぼ同様である。従って、ここでは、読み出し処理についての詳述は省略することとする。
本実施形態による画像処理装置は、上述したように、分割ブロック300に含まれるブロック(ライン)320を単位として追いかけ制御を行う。従って、あるライン320の画像データの読み出しが可能になった際には、ある書き込み対象の分割ブロック300の全ての画像データの書き込みが完了しない段階であっても、当該ライン320の画像データの読み出しが適宜行われる。WRDMAC211は、1フレームの画像に含まれる複数のライン(ブロック)320を、上記のように所定の順序でメモリ122に書き込む。また、RDDMAC213は、1フレームの画像に含まれる複数のライン(ブロック)320を、上記のように所定の順序でメモリ112から読み出す。
次に、DMAC210とメモリI/F205と追いかけ制御部200との間で入出力される信号について説明する。図2に示すように、WRDMAC211からの書き込みリクエスト信号WR_REQがメモリI/F205に入力される。書き込みリクエスト信号WR_REQは、メモリ112への画像データの書き込みをメモリI/F205に対して要求するための信号である。例えば、WRDMAC211が1つのライン320又はその一部の画像データを補正処理部104から受信し、当該1つのライン320又はその一部の画像データをメモリI/F205に送信可能になった際に書き込みリクエスト信号WR_REQが発行される。
メモリI/F205からパルス状に出力されるアクノリッジ信号WR_ACKは、WRDMAC211に入力される。例えば、メモリI/F205がWRDMAC211からの書き込みリクエスト信号WR_REQを受信し、書き込みデータWR_DATAをメモリI/F205が受信可能になった際にアクノリッジ信号WR_ACKを出力する。WRDMAC211は、アクノリッジ信号WR_ACKを受信した後、例えば1つのライン320又はその一部の画像データである書き込みデータWR_DATAを、メモリI/F205を介してメモリ112に書き込む。書き込みアドレス生成部212は、アクノリッジ信号WR_ACKを受信した後、次の書き込みに備えて、アドレス値のインクリメントを行い、必要に応じて各種オフセット値をアドレス値に加算する。
RDDMAC213から出力される読み出しリクエスト信号RD_REQは、読み出し座標計算部202と読み出しリクエストマスク部204とに入力される。読み出しリクエスト信号RD_REQは、メモリ112からの画像データの読み出しをメモリI/F205に要求するための信号である。読み出しリクエスト信号RD_REQは、読み出しリクエストマスク部204を介して、読み出しリクエスト信号RD_REQ_MASK_OUTとしてメモリI/F205に入力される。例えば、RDDMAC213が1つのライン320又はその一部の画像データを受信可能になった際に読み出しリクエスト信号RD_REQが発行される。メモリI/F205からパルス状に出力されるアクノリッジ信号RD_ACKは、RDDMAC213に入力される。例えば、メモリI/F205が読み出しリクエスト信号RD_REQ_MASK_OUTを受信し、読み出しデータRD_DATAをメモリI/F205が送信可能になった際にアクノリッジ信号RD_ACKが出力される。RDDMAC213は、アクノリッジ信号RD_ACKを受信した後、例えば1つのライン320又はその一部の画像データである読み出しデータRD_DATAを、メモリI/F205を介してメモリ112から読み出す。RDDMAC213は、メモリ112から読み出した読み出しデータRD_DATAを、現像処理部109に送信する。読み出しアドレス生成部214は、アクノリッジ信号RD_ACKを受信した後、次の読み出しに備えて、アドレス値のインクリメントを行い、必要に応じて各種オフセット値をアドレス値に加算する。
書き込みアドレス生成部212がオフセット値をアドレス値に加算する際には、書き込みオフセット信号WR_OFFSET1~WR_OFFSET3がWRDMAC211により発行される。WRDMAC211により発行される書き込みオフセット信号WR_OFFSET1~WR_OFFSET3は書き込み座標計算部201に入力される。書き込み座標計算部201は、書き込みオフセット信号WR_OFFSET1~WR_OFFSET3に基づいて、書き込み処理がどこまで到達したかを示す第1~第3の書き込み座標をそれぞれ算出する。第1の書き込み座標は水平方向の座標Hw1と垂直方向の座標Vw1とを含む。第2の書き込み座標は水平方向の座標Hw2と垂直方向の座標Vw2とを含む。第3の書き込み座標は水平方向の座標Hw3と垂直方向の座標Vw3とを含む。第1の書き込み座標は、分割ブロック300の最後のライン320を除くライン320の最後尾の画素301~309に書き込み処理が到達した際に更新される。第1の書き込み座標は、書き込み処理が完了したライン320のうちの最後のライン320を除くライン320の最後尾の画素301~309の座標を示す。第2の書き込み座標は、ブロックライン321の分割ブロック300のうちの最後の分割ブロックを除く分割ブロック300の最後尾の画素311,312,314,315,317,318に書き込み処理が達した際に更新される。第2の書き込み座標は、書き込み処理が完了した分割ブロック300のうちの最後の分割ブロック300の最後尾の画素311,312,314,315,317,318の座標を示す。第3の書き込み座標は、複数のブロックライン321のうちの最後のブロックライン321を除くブロックライン321の最後尾の画素313,316に書き込み処理が達した際に更新される。第3の書き込み座標は、書き込み処理が完了したブロックライン321の最後尾の画素313,316の座標を示す。なお、WRDMAC211から発行される書き込みオフセット信号WR_OFFSET1~WR_OFFSET3は、書き込みリクエスト信号WR_REQに同期してHighレベルに出力される。
書き込み座標計算部201は、複数のブロック(ライン)320のうちの書き込みが完了したブロック320の位置を示す書き込み座標を書き込みオフセット信号に基づいて算出する書き込み座標算出手段として機能し得る。書き込み座標計算部201は、1フレームに含まれる複数のブロック320の書き込みが完了する毎に書き込み座標を更新する。読み出し座標計算部202は、読み出しの対象の部分の最後尾を示す読み出し座標を、読み出しオフセット信号及びデータ転送長信号に基づいて算出する読み出し座標算出手段として機能し得る。
書き込み座標計算部201は、書き込み対象の分割ブロック300において書き込み済みの最新のライン320の位置に対応した第1の書き込み座標を取得する。また、書き込み座標計算部201は、全ての画素が書き込み済みであるブロック300のうちの最新の分割ブロック300の最後尾の位置に対応した第2の書き込み座標を取得する。また、書き込み座標計算部201は、フレームの右端(端部)の書き込み済みの分割ブロック300のうちの最新の分割ブロック300の最後尾の位置に対応した第3の書き込み座標を取得する。
読み出しアドレス生成部214がオフセット値をアドレス値に加算する際には、読み出しオフセット信号RD_OFFSET1~RD_OFFSET3がRDDMAC213により発行される。RDDMAC213からの読み出しオフセット信号RD_OFFSET1~RD_OFFSET3は読み出し座標計算部202に入力される。読み出し座標計算部202は、次に読み出しリクエスト信号RD_REQ_MASK_OUTがHighレベルになった際に読み出し処理の対象となる部分の最後尾の画素の座標を示す読み出し座標(HR,VR)を算出する。読み出し座標計算部202は、読み出しオフセット信号RD_OFFSET1~RD_OFFSET3及びデータ転送長信号RD_TRANSに基づいて、読み出し座標(HR,VR)を算出する。
読み出し座標計算部202は、データ転送長信号RD_TRANSによって示されるデータ転送長の分だけHRの値を増加させる。分割ブロック300に含まれる最後のライン320を除くライン320の読み出し処理の際に発せられる読み出しオフセット信号RD_OFFSET1を受信した場合には、読み出し座標計算部202は以下のように動作する。即ち、読み出し座標計算部202は、分割ブロック300の水平方向のサイズ(画素数)の分だけHRの値を減少させるとともに、VRの値を1だけ増加させる。また、ブロックライン321の最後の分割ブロック300を除く分割ブロック300の最後尾の画素に読み出し処理が達する毎に発せられる読み出しオフセット信号RD_OFFSET2を受信した場合には、読み出し座標計算部202は以下のように動作する。即ち、読み出し座標計算部202は、分割ブロック300に含まれるライン320の数から1を減算した値の分だけVRの値を減少させる。また、ブロックライン321の最後尾の画素に読み出し処理が達する毎に発せられる読み出しオフセット信号RD_OFFSET3を受信した場合には、読み出し座標計算部202は以下のように動作する。即ち、読み出し座標計算部202は、ブロックライン321の水平方向のサイズ(画素数)の分だけHRの値を減少させるとともに、VRの値を1だけ増加させる。読み出し座標計算部202は、RDDMAC213から読み出しリクエストマスク部204に読み出しリクエスト信号RD_REQが発せられた際に、読み出し座標(HR、VR)を更新する。
追いかけ制御部200には座標比較部203が備えられている。書き込み座標計算部201によって算出される第1~第3の書き込み座標が、座標比較部203に入力される。また、読み出し座標計算部202によって算出される読み出し座標が、座標比較部203に入力される。座標比較部203は、書き込み処理が完了したライン320の位置を把握するための第1~第3の書き込み座標と、次に読み出し処理の対象となる部分の最後尾の位置を把握するための読み出し座標とを比較する。第1~第3の書き込み座標と読み出し座標とを比較した結果、以下の条件式(1)~(3)のいずれかを満たす場合には、読み出し処理が行われることが好ましい。そこで、条件式(1)~(3)のいずれかを満たす場合、座標比較部203は、読み出しリクエストマスク部204に対して出力するリクエストマスク信号REQ_MASKをLowレベルにする。後述するように、リクエストマスク信号REQ_MASKをLowレベルにした場合には、RDDMAC213からの読み出しリクエスト信号RD_REQが読み出しリクエストマスク部204においてマスクされず、読み出し処理が行われる。一方、条件式(1)~(3)のいずれをも満たさない場合には、読み出し処理を行わない。
そこで、座標比較部203は、以下の条件式(1)~(3)のいずれをも満たさない場合には、読み出しリクエストマスク部204に出力するリクエストマスク信号REQ_MASKをHighレベルにする。
HW1≧HR かつ VW1≧VR ・・・(1)
HW2≧HR かつ VW2≧VR ・・・(2)
HW3≧HR かつ VW3≧VR ・・・(3)
なお、条件(1)~(3)のいずれかを満たすか否かの判定は、クロック信号CLKの立ち上がりのタイミングにおいて実施される。こうして、座標比較部203により、リクエストマスク信号REQ_MASKが制御される。
座標比較部203は、第1の条件を満たさず、且つ、第2の条件を満たさず、且つ、第3の条件を満たさない場合に、読み出し部かを許可しないように制御する。第1の条件は、Hw1がHR以上、且つ、Vw1がVR以上という条件である。第2の条件は、Hw2がHR以上、且つ、Vw2がVR以上という条件である。第3の条件は、Hw3がHR以上、且つ、Vw3がVR以上という条件である。
リクエストマスク信号REQ_MASKがLowレベルである場合、読み出しリクエストマスク部204は、メモリI/F205に対して出力する読み出しリクエスト信号RD_REQ_MASK_OUTをHighレベルとする。一方、リクエストマスク信号REQ_MASKがHighレベルである場合、読み出しリクエストマスク部204は、メモリI/F205に対して出力する読み出しリクエスト信号RD_REQ_MASK_OUTをLowレベルとする。このように、座標比較部203と読み出しリクエストマスク部204とが、RDDMAC213からの読み出し要求を許可するか否かを、書き込み座標と読み出し座標との位置関係に基づいて制御する制御手段として機能し得る。
WRDMAC211は、1フレームの画像データの最後尾の画素についての書き込み処理が完了した際に、書き込み完了信号WR_ENDを座標比較部203に出力する。座標比較部203は、書き込み完了信号WR_ENDを受信した際には、読み出しリクエスト信号RD_REQのマスクを解除すべく、リクエストマスク信号REQ_MASKをLowレベルとする。1フレームの画像データの書き込みが完了した後、RDDMAC213から出力される読み出しリクエスト信号RD_REQは、読み出しリクエストマスク部204によってマスクされることはない。かかる読み出しリクエスト信号RD_REQは、読み出しリクエスト信号RD_REQ_MASK_OUT信号としてメモリI/F205に出力される。なお、RDDMAC213から座標比較部203に供給される読み出し開始信号RD_STARTに基づいて、追いかけ制御のマスク制御が開始される。
追いかけ制御部200によって行われる動作の詳細について図4及び図5を用いて説明する。図4は、書き込み処理と読み出し処理とにおけるブロック分割の態様の例を示す図である。図4は、書き込み処理用のブロック分割の態様と読み出し処理用のブロック分割の態様とが異なっている例を示している。より具体的には、書き込み用の分割ブロックWR0_0~WR2_2のサイズと読み出し用の分割ブロックRD0_0~RD3_3のサイズとが異なっている。図4は、画像の書き込みを行う処理部におけるブロック分割の態様と、画像の読み出しを行う処理部におけるブロック分割の態様とが異なる場合に相当する。書き込み処理用のブロックは実線で示されており、読み出し処理用のブロックは破線で示されている。書き込み処理用のブロックの分割数は、水平、垂直の何れの方向においても3に設定されている。即ち、9個の書き込み処理用の分割ブロックが設定されている。一方、読み出し処理用のブロックの分割数は、水平、垂直の何れの方向においても4に設定されている。即ち、16個の読み出し用の分割ブロックが設定されている。
書き込み用の分割ブロック(書き込み用分割ブロック)WR0_*、WR1_*、WR2_*(*は0~2の整数)の水平方向の画素数は、それぞれWXA、WXB、WXCとする。また、書き込み用の分割ブロックWR*_0、WR*_1、WR*_2(*は0~2の整数)のライン数、即ち、垂直方向の画素数は、それぞれWYA=4,WYB=4,WYC=6とする。なお、ここでは、説明を簡略化するため、WYA=4、WYB=4、WYC=6とするが、実際には垂直方向のライン数はこれらの値よりも遙かに大きい。読み出し用の分割ブロック(読み出し分割ブロック)RD0_*、RD1_*、RD2_*、RD3_*(*は0~3の整数)の水平方向の画素数は、それぞれRXA、RXB、RXC、RXDとする。読み出し用の分割ブロックRD*_0、RD*_1、RD*_2、RD*_3(*は0~3の整数)のライン数、即ち、垂直方向の画素数は、それぞれRYA=3、RYB=3,RYC=3、RYD=5とする。なお、ここでは、説明を簡略化するため、RYA=3、RYB=3、RYC=3、RYD=5とするが、実際には垂直方向のライン数はこれらの値よりも遙かに大きい。ただし、各ブロックの水平方向における画素数は、以下の条件(4)~(6)を満たすものとする。
RXA<WXA ・・・(4)
(RXA+RXB)<(WXA+WXB) ・・・(5)
(RXA+RXB+RXC)<(WXA+WXB+WXC) ・・・(6)
図5は、メモリ制御部120の動作を示すタイミングチャートである。図5には、書き込み用の分割ブロックWR0_0~WR2_0についての書き込み処理が行われる期間(書き込み期間)と、読み出し用の分割ブロックRD0_0~RD3_0についての読み出し処理が行われる期間(読み出し期間)とが示されている。なお、ここでは、各分割ブロックWR0_0~WR2_0、RD0_0~RD3_0の水平方向のサイズが、1回のアクセスで転送可能なデータ長以下である場合を例に説明する。説明を簡略化すべく、ここでは、1回のリクエストで1ライン分のデータが転送される場合を例に説明する。
まず、1フレームの画像についての書き込み処理や読み出し処理を開始する前に、書き込み座標計算部201や読み出し座標計算部202において初期化が行われる。即ち、書き込み座標計算部201において、第1~第3の書き込み座標が(0,1)に初期化される。また、読み出し座標計算部202において、読み出し座標が(0,1)に初期化される。そして、先頭の書き込み用の分割ブロックWR0_0の書き込みと先頭の読み出し用の分割ブロックRD0_0の読み出しとが開始される。
まず、初期の段階においては、書き込み用の分割ブロックWR0_0~WR2_2のいずれのライン320の画像データもメモリ112に書き込まれていない。従って、この段階では、以下に示すように、読み出し用の分割ブロックRD0_0の第1番目のライン320の画像データの読み出しは行われない。即ち、まず、RDDMAC213から出力される読み出しリクエスト信号RD_REQがHighレベルに設定される。また、RDDMAC213から出力される第1の読み出しオフセット信号RD_OFFSET1が、読み出しリクエスト信号RD_REQに同期してHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に出力される読み出し座標更新信号の立ち下がりの時刻tr0において、読み出し座標が読み出し座標計算部202によって更新される。読み出し用の分割ブロックRD0_0の第1番目のライン320の最後尾の座標は(RXA,1)であるため、読み出し座標は(RXA,1)に更新される。この段階では、第1~第3の書き込み座標はいずれも(0,1)である。条件式(1)~(3)のいずれをも満たさないため、座標比較部203から出力されるリクエストマスク信号REQ_MASKはHighレベルである。リクエストマスク信号REQ_MASKがHighレベルであるため、読み出しリクエストマスク部204からメモリI/F205に出力される読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、書き込み用の分割ブロックWR0_0の第1番目のライン320の画像データのメモリ112からの読み出しは行われない。
次に、書き込み用の分割ブロックWR0_0の第1番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、WRDMAC211からの書き込みリクエスト信号WR_REQがHighレベルに設定される。WRDMAC211からの第1の書き込みオフセット信号WR_OFFSET1が、書き込みリクエスト信号WR_REQに同期してHighレベルとなる。メモリI/F205からWRDMAC211にアクノリッジ信号WR_ACKが返信され、書き込み用の分割ブロックWR0_0の第1番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACKの立ち下がりに同期して書き込みリクエスト信号WR_REQがLowレベルとなる。また、書き込みリクエスト信号WR_REQの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1がLowレベルとなる。アクノリッジ信号WR_ACKに同期する第1の書き込み座標更新信号の立ち下がりの時刻tw0において、第1の書き込み座標が書き込み座標計算部201によって更新される。書き込み用の分割ブロックWR0_0の第1番目のライン320の最後尾の座標は(WXA,1)であるため、第1の書き込み座標は(WXA,1)に更新される。この段階では、条件式(1)を満たすため、座標比較部203からのリクエストマスク信号REQ_MASKはLowレベルとなる。リクエストマスク信号REQ_MASKがLowレベルとなるため、読み出しリクエストマスク部204からメモリI/F205に出力される読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。この後、メモリI/F205からRDDMAC213にアクノリッジ信号RD_ACKがパルス状に返信され、読み出し用の分割ブロックRD0_0の第1番目のライン320の画像データがメモリ112から読み出される。アクノリッジ信号RD_ACKの立ち下がりに同期して、読み出しリクエスト信号RD_REQ、RD_REQ_MASK_OUTがLowレベルとなる。また、読み出しリクエスト信号RD_REQの立ち下がりに同期して第1の読み出しオフセット信号RD_OFFSET1がLowレベルとなる。
次に、読み出しリクエスト信号RD_REQがHighレベルに設定される。読み出しリクエスト信号RD_REQに同期して、第1の読み出しオフセット信号RD_OFFSET1がHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に発せられる読み出し座標更新信号の立ち下がりの時刻tr1において、読み出し座標が読み出し座標計算部202によって更新される。読み出し用の分割ブロックRD0_0の第1番目のライン320の画像データのメモリ112からの読み出しは完了しているため、次の読み出し処理において読み出し対象となるのは、読み出し用の分割ブロックRD0_0の第2番目のライン320である。読み出し用の分割ブロックRD0_0の第2番目のライン320の最後尾の座標は(RXA,2)である。このため、読み出し座標は(RXA,2)に更新される。この段階では、第1の書き込み座標は(WXA,1)であり、第2の書き込み座標と第3の書き込み座標はいずれも(0,1)である。条件式(1)~(3)のいずれをも満たさないため、座標比較部203からのリクエストマスク信号REQ_MASKはHighレベルである。リクエストマスク信号REQ_MASKがHighレベルであるため、読み出しリクエストマスク部204からメモリI/F205に出力される読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、この段階では、書き込み用の分割ブロックWR0_0の第2番目のライン320の画像データはメモリ112から読み出されない。
次に、書き込み用の分割ブロックWR0_0の第2番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQがHighレベルに設定される。書き込みリクエスト信号WR_REQに同期して、第1の書き込みオフセット信号WR_OFFSET1がHighレベルとなる。この後、アクノリッジ信号WR_ACKが返信され、書き込み用の分割ブロックWR0_0の第2番目のライン320の画像データがメモリ112に書き込まれる。アクノリッジ信号WR_ACKの立ち下がりに同期して書き込みリクエスト信号WR_REQがLowレベルとなる。書き込みリクエスト信号WR_REQの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1がLowレベルとなる。アクノリッジ信号WR_ACKに同期する第1の書き込み座標更新信号の立ち下がりの時刻tw1において、第1の書き込み座標が更新される。書き込み用の分割ブロックWR0_0の第2番目のライン320の最後尾の座標は(WXA,2)であるため、第1の書き込み座標は(WXA,2)に更新される。この段階では、条件式(1)を満たすため、座標比較部203からのリクエストマスク信号REQ_MASKがLowレベルとなり、読み出しリクエスト信号RD_REQ_MASK_OUTがHighレベルとなる。この後、アクノリッジ信号RD_ACKがRDDMAC213に返信され、読み出し用の分割ブロックRD0_0の第2番目のライン320の画像データがメモリ112から読み出される。アクノリッジ信号RD_ACKの立ち下がりに同期して、読み出しリクエスト信号RD_REQ、RD_REQ_MASK_OUTがLowレベルとなる。また、読み出しリクエスト信号RD_REQの立ち下がりに同期して第1の読み出しオフセット信号RD_OFFSET1がLowレベルとなる。
次に、読み出しリクエスト信号RD_REQがHighレベルに設定される。読み出しリクエスト信号RD_REQに同期して第2の読み出しオフセット信号RD_OFFSET2がHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に発せられる読み出し座標更新信号の立ち下がりの時刻tr2において、読み出し座標が更新される。読み出し用の分割ブロックRD0_0の第2番目のライン320の画像データの読み出しは完了しているため、次の読み出し処理において読み出し対象とされるライン320は、読み出し用の分割ブロックRD0_0の第3番目のライン320である。読み出し用の分割ブロックRD0_0の第3番目のライン320の最後尾の座標は(RXA,3)である。このため、読み出し座標は(RXA,3)に更新される。この段階では、第1の書き込み座標は(WXA,2)であり、第2の書き込み座標と第3の書き込み座標はいずれも(0,1)である。条件式(1)~(3)のいずれをも満たさないため、リクエストマスク信号REQ_MASKはHighレベルであり、読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、この段階では、書き込み用の分割ブロックWR0_0の第3番目のライン320の画像データはメモリ112から読み出されない。
書き込み用の分割ブロックWR0_0の第3番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQがHighレベルに設定される。書き込みリクエスト信号WR_REQに同期して、第1の書き込みオフセット信号WR_OFFSET1がHighレベルとなる。この後、アクノリッジ信号WR_ACKが返信され、分割ブロックWR0_0の第3番目のライン320の画像データがメモリ112に書き込まれる。アクノリッジ信号WR_ACKの立ち下がりに同期して書き込みリクエスト信号WR_REQがLowレベルとなる。書き込みリクエスト信号WR_REQの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1がLowレベルとなる。アクノリッジ信号WR_ACKに同期する第1の書き込み座標更新信号の立ち下がりの時刻tw2において、第1の書き込み座標が更新される。書き込み用の分割ブロックWR0_0の第3番目のライン320の最後尾の座標は(WXA,3)であるため、第1の書き込み座標は(WXA,3)に更新される。この段階では条件式(1)を満たすため、座標比較部203からのリクエストマスク信号REQ_MASKがLowレベルとなり、読み出しリクエスト信号RD_REQ_MASK_OUTがHighレベルとなる。この後、アクノリッジ信号RD_ACKがRDDMAC213に返信され、読み出し用の分割ブロックRD0_0の第3番目のライン320の画像データがメモリ112から読み出される。アクノリッジ信号RD_ACKの立ち下がりに同期して、読み出しリクエスト信号RD_REQ、RD_REQ_MASK_OUTがLowレベルとなる。読み出しリクエスト信号RD_REQの立ち下がりに同期して第2の読み出しオフセット信号RD_OFFSET2がLowレベルとなる。こうして、先頭の読み出し用の分割ブロックRD0_0の全てのライン320の画像データのメモリ112からの読み出しが完了する。
次に、読み出しリクエスト信号RD_REQがHighレベルに設定される。読み出しリクエスト信号RD_REQに同期して、第1の読み出しオフセット信号RD_OFFSET1がHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に発せられる読み出し座標更新信号の立ち下がりの時刻tr3において、読み出し座標が更新される。読み出し用の分割ブロックRD0_0の全てのライン320の画像データのメモリ112からの読み出しが完了しているため、次の読み出し処理において読み出し対象となるのは、読み出し用の分割ブロックRD1_0の第1番目のライン320である。読み出し用の分割ブロックRD1_0の第1番目のライン320の最後尾の座標は(RXA+RXB,1)である。このため、読み出し座標は(RXA+RXB,1)に更新される。この段階では、第1の書き込み座標が(WXA,3)であり、第2の書き込み座標が(0,1)であり、第3の書き込み座標が(0,1)である。条件式(1)~(3)のいずれをも満たさないため、リクエストマスク信号REQ_MASKはHighレベルであり、読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、この段階では、書き込み用の分割ブロックWR1_0の第1番目のライン320の画像データのメモリ112からの読み出しは行われない。
書き込み用の分割ブロックWR0_0の第4番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQがHighレベルに設定される。書き込みリクエスト信号WR_REQに同期して第2の書き込みオフセット信号WR_OFFSET2がHighレベルとなる。メモリI/F205からWRDMAC211にアクノリッジ信号WR_ACKが返信され、書き込み用の分割ブロックWR0_0の第4番目のライン320の画像データがメモリ112に書き込まれる。アクノリッジ信号WR_ACKの立ち下がりに同期して書き込みリクエスト信号WR_REQがLowレベルとなる。書き込みリクエスト信号WR_REQの立ち下がりに同期して第2の書き込みオフセット信号WR_OFFSET2がLowレベルとなる。アクノリッジ信号WR_ACKに同期する第2の書き込み座標更新信号の立ち下がりの時刻tw3において、第2の書き込み座標が更新される。書き込み用の分割ブロックWR0_0の第4番目のライン320の最後尾の座標は(WXA,4)であるため、第2の書き込み座標は(WXA,4)に更新される。この段階では、読み出し座標は(RXA+RXB,1)であり、条件式(1)~(3)のいずれをも満たさない。このため、座標比較部203からのリクエストマスク信号REQ_MASKはHighレベルであり、読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、この段階では、書き込み用の分割ブロックWR0_0の第4番目のライン320に書き込まれた画像データはメモリ112から読み出されない。
次に、書き込み用の分割ブロックWR1_0の第1番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQがHighレベルに設定される。書き込みリクエスト信号WR_REQに同期して第1の書き込みオフセット信号WR_OFFSET1がHighレベルとなる。メモリI/F205からWRDMAC211にアクノリッジ信号WR_ACKが返信され、書き込み用の分割ブロックWR1_0の第1番目のライン320の画像データがメモリ112に書き込まれる。アクノリッジ信号WR_ACKの立ち下がりに同期して書き込みリクエスト信号WR_REQがLowレベルとなる。書き込みリクエスト信号WR_REQの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1がLowレベルとなる。アクノリッジ信号WR_ACKに同期する第1の書き込み座標更新信号の立ち下がりの時刻tw4において、第1の書き込み座標が更新される。書き込み用の分割ブロックWR1_0の第1番目のライン320の最後尾の座標は(WXA+WXB,1)であるため、第1の書き込み座標は(WXA+WXB,1)に更新される。この段階では、読み出し座標は(RXA+RXB,1)であり、条件式(1)を満たす。このため、座標比較部203からのリクエストマスク信号REQ_MASKはLowレベルとなり、読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。この後、アクノリッジ信号RD_ACKがRDDMAC213に返信され、読み出し用の分割ブロックRD1_0の第1番目のライン320の画像データがメモリ112から読み出しされる。アクノリッジ信号RD_ACKの立ち下がりに同期して、読み出しリクエスト信号RD_REQ、RD_REQ_MASK_OUTがLowレベルとなる。また、読み出しリクエスト信号RD_REQの立ち下がりに同期して第1の読み出しオフセット信号RD_OFFSET1がLowレベルとなる。
次に、読み出しリクエスト信号RD_REQがHighレベルに設定される。読み出しリクエスト信号RD_REQに同期して第1の読み出しオフセット信号RD_OFFSET1がHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に発せられる読み出し座標更新信号の立ち下がりの時刻tr4において、読み出し座標が更新される。読み出し用の分割ブロックRD1_0の第1番目のライン320の画像データの読み出しは完了しているため、次の読み出し処理において読み出し対象とされるライン320は、読み出し用の分割ブロックRD1_0の第2番目のライン320である。読み出し用の分割ブロックRD1_0の第2番目のライン320の最後尾の座標は(RXA+RXB,2)である。このため、読み出し座標は(RXA+RXB,2)に更新される。この段階では、第1の書き込み座標は(WXA+WXB,1)であり、第2の書き込み座標は(WXA,4)であり、第3の書き込み座標は(0,1)である。条件式(1)~(3)のいずれをも満たさないため、リクエストマスク信号REQ_MASKはHighレベルであり、読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、この段階では、書き込み用の分割ブロックWR1_0の第2番目のライン320の画像データはメモリ112から読み出されない。
次に、書き込み用の分割ブロックWR1_0の第2番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQがHighレベルに設定される。書き込みリクエスト信号WR_REQに同期して第1の書き込みオフセット信号WR_OFFSET1がHighレベルとなる。メモリI/F205からWRDMAC211にアクノリッジ信号WR_ACKが返信され、書き込み用の分割ブロックWR1_0の第2番目のライン320の画像データがメモリ112に書き込まれる。アクノリッジ信号WR_ACKの立ち下がりに同期して書き込みリクエスト信号WR_REQがLowレベルとなる。書き込みリクエスト信号WR_REQの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1がLowレベルとなる。アクノリッジ信号WR_ACKに同期する第1の書き込み座標更新信号の立ち下がりの時刻tw5において、第1の書き込み座標が書き込み座標計算部201によって更新される。書き込み用の分割ブロックWR1_0の第2番目のライン320の最後尾の座標は(WXA+WXB,2)であるため、第1の書き込み座標は(WXA+WXB,2)に更新される。この段階では、読み出し座標は(RXA+RXB,2)であり、条件式(1)を満たすため、リクエストマスク信号REQ_MASKはLowレベル、読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。この後、メモリI/F205からRDDMAC213にアクノリッジ信号RD_ACKがパルス状に返信され、読み出し用の分割ブロックRD1_0の第2番目のライン320の画像データがメモリ112から読み出される。アクノリッジ信号RD_ACKの立ち下がりに同期して、読み出しリクエスト信号RD_REQ、RD_REQ_MASK_OUTがLowレベルとなる。読み出しリクエスト信号RD_REQの立ち下がりに同期して第1の読み出しオフセット信号RD_OFFSET1がLowレベルとなる。
書き込み用の分割ブロックWR1_0のこの後の書き込み処理は、書き込み用の分割ブロックWR0_0についての上述した書き込み処理と同様であるため、説明を省略する。なお、時刻tw6においては、第1の書き込み座標が(WXA+WXB,3)に更新され、時刻tw7においては第2の書き込み座標が(WXA+WXB,4)に更新される。
また、読み出し用の分割ブロックRD1_0、RD2_0のこの後の読み出し処理は、読み出し用の分割ブロックRD0_0についての上述した読み出し処理と同様であるため、説明を省略する。なお、時刻tr5、tr6、tr7、tr8においては、読み出し座標が、(RXA+RXB,3)、(RXA+RXB+RXC,1)、(RXA+RXB+RXC,2)、(RXA+RXB+RXC,3)にそれぞれ更新される。
書き込み用の分割ブロックWR2_0の書き込み処理も、書き込み用の分割ブロックWR0_0についての上述した書き込み処理と同様であるため、説明を省略する。なお、時刻tw8、tw9、tw10においては、第1の書き込み座標が、(WXA+WXB+WXC,1)、(WXA+WXB+WXC,2)、(WXA+WXB+WXC,3)にそれぞれ更新される。書き込み用の分割ブロックWR2_0の第4番目のライン320の画像データをメモリ112に書き込む際には、書き込みリクエスト信号WR_REQに同期して第3の書き込みオフセット信号WR_OFFSET3がHighレベルとなる。また、書き込みリクエスト信号WR_REQの立ち下がりに同期して第3の書き込みオフセット信号WR_OFFSET3がLowレベルとなる。アクノリッジ信号WR_ACKに同期する第3の書き込み座標更新信号の立ち下がりの時刻tw11において、第3の書き込み座標が(WXA+WXB+WXC,4)に更新される。
読み出し用の分割ブロックRD3_0の読み出し処理においては、時刻tr9において、読み出し座標が(RXA+RXB+RXC+RXD,1)に更新される。第3の書き込み座標は(WXA+WXB+WXC,4)であり、条件式(3)を満たすため、リクエストマスク信号REQ_MASKはLowレベル、読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。従って、読み出し用の分割ブロックRD3_0の第1番目のライン320からの画像データの読み出しが行われる。時刻tr10においては、読み出し座標が(RXA+RXB+RXC+RXD,2)に更新される。第3の書き込み座標は(WXA+WXB+WXC,4)であり、条件式(3)を満たすため、リクエストマスク信号REQ_MASKはLowレベル、読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。従って、読み出し用の分割ブロックRD3_0の第2番目のライン320からの画像データの読み出しが行われる。時刻tr11においては、読み出し座標が(RXA+RXB+RXC+RXD,3)に更新される。第3の書き込み座標は(WXA+WXB+WXC,4)であり、条件式(3)を満たすため、リクエストマスク信号REQ_MASKはLowレベル、読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。従って、読み出し用の分割ブロックRD3_0の第3番目のライン320からの画像データの読み出しが行われる。
書き込み用の分割ブロックWR0_1~WR2_2や読み出し用の分割ブロックRD0_1~RD3_3についても、上記と同様に書き込み処理や読み出し処理が行われる。
なお、図4に付されたドットは、書き込み用の分割ブロックWR1_2の第3番目のライン320まで書き込み処理が完了した状態を示している。この状態においては、第1の書き込み座標は(WXA+WXB、11)であり、第2の書き込み座標は(WXA,14)であり、第3の書き込み座標は(WXA+WXB+WXC,8)である。また、読み出し座標は(RXA+RXB+RXC、8)である。この状態では、読み出し用の分割ブロックRD2_2の第2番目のライン320の画像データのメモリ112からの読み出しは完了している。この後、書き込み処理が進行し、書き込み用の分割ブロックWR2_2の第1番目のライン320の画像データの書き込みが行われると、第1の書き込み座標が(WXA+WXB+WXC、9)となり、条件式(1)を満たす状態となる。そうすると、読み出し用の分割ブロックRD2_2の第3番目のライン320の画像データのメモリ112からの読み出しが行われ、読み出し座標が(RXA+RXB+RXC、9)に更新される。
WRDMAC211は、書き込み用の分割ブロックWR2_2の書き込み処理が完了した際には、書き込み完了信号WR_ENDをHighレベルとする。座標比較部203は、書き込み完了信号WR_ENDがHighレベルとなった際には、条件式(1)~(3)に基づく座標の比較を停止して、リクエストマスク信号REQ_MASKをLowレベルとする。これにより、書き込み用の分割ブロックWR2_2の書き込み処理が完了した後においては、RDDMAC213から出力される読み出しリクエスト信号RD_REQが、読み出しリクエストマスク部204によってマスクされなくなる。従って、書き込み用の分割ブロックWR2_2の書き込み処理が完了した後、読み出し用の分割ブロックの画像データがメモリ112から連続的に読み出される。
なお、ここでは、各分割ブロックWR0_0~WR2_2、RD0_0~RD3_2の水平方向のサイズが、1回のアクセスで転送可能なデータ長以下である場合を例に説明したが、これに限定されるものではない。例えば、各分割ブロックWR0_0~WR2_0、RD0_0~RD3_0の水平方向のサイズが、1回のアクセスで転送可能なデータ長より大きい場合には、以下のような処理が行われる。即ち、1つのライン320に対するデータの書き込みにおいて、書き込みリクエストの発行及びデータの書き込みがそれぞれ複数回行われる。また、1つのライン320からのデータの読み出しにおいて、読み出しリクエストの発行及びデータの読み出しがそれぞれ複数回行われる。
ライン320の最後尾の画素のデータを書き込まない場合には、WRDMAC211は、書き込みオフセット信号WR_OFFSET1~WR_OFFSET3をいずれもLowレベルに維持する。一方、ライン320の最後尾の画素のデータを書き込む場合には、WRDMAC211は、書き込みオフセット信号WR_OFFSET1~WR_OFFSET3のうちのいずれかをHighレベルにする。そして、ライン320の最後尾の画素のデータが書き込まれた場合にのみ、第1~第3の書き込み座標が書き込み座標計算部201によって更新される。
また、ライン320の最後尾の画素のデータを読み出さない場合、RDDMAC213は、読み出しオフセット信号RD_OFFSET1~RD_OFFSET3をいずれもLowレベルに維持する。一方、当該読み出しにおいてライン320の最後尾の画素のデータを読み出す場合には、RDDMAC213は、読み出しオフセット信号RD_OFFSET1~RD_OFFSET3のうちのいずれかをHighレベルにする。読み出し座標は、ライン320の最後尾の画素のデータを読み出すか否かにかかわらず更新される。読み出し座標計算部202は、ライン320の最後尾の画素のデータが読み出されない場合には、以下のような動作を行う。即ち、読み出し座標計算部202は、RDDMAC213から読み出しリクエスト信号RD_REQが供給される毎に、RDDMAC213のからデータ転送長信号RD_TRANSに基づいて読み出し座標を更新する。一方、読み出し座標計算部202は、ライン320の最後尾の画素のデータが読み出される場合には、以下のような動作を行う。読み出し座標計算部202は、RDDMAC213からの読み出しオフセット信号RD_OFFSET1~RD_OFFSET3と、RDDMAC213からのデータ転送長信号RD_TRANSとに基づいて、読み出し座標を更新する。
図6は、本実施形態による画像処理装置の動作を示すフローチャートである。図6に示す処理は、主としてCPU108及びメモリ制御部120によって実行される。
まず、CPU108からの指示によって、WRDMAC211とRDDMAC213とに処理を開始させる(ステップS600)。
次に、書き込み座標計算部201において、第1~第3の書き込み座標を、例えば(0、1)に初期化する。また、読み出し座標計算部202において、読み出し座標を例えば(0、1)に初期化する。これらの座標値の初期化は、CPU108からの指示によって行われる(ステップS601)。
ステップS602では、座標比較部203が、条件式(1)~(3)のいずれかを満たすか否かを判定する。条件式(1)~(3)のいずれかを満たす場合には(ステップS602においてYES)、ステップS603に遷移する。ステップS603では、RDDMAC213からの読み出しリクエスト信号RD_REQに対するマスク処理が、読み出しリクエストマスク部204において解除される。この後、ステップS605に遷移する。条件式(1)~(3)のいずれをも満たさない場合(ステップS602においてNO)、ステップS604に遷移する。ステップS604では、読み出しリクエストマスク部204により、RDDMAC213からの読み出しリクエスト信号RD_REQがマスクされる。これにより、RDDMAC213によるメモリ112からの画像データの読み出しは停止される。この後、ステップS605に遷移する。
ステップS605では、WRDMAC211からの第1の書き込みオフセット信号WR_OFFSET1がHighレベルであるか否かが判定される。第1の書き込みオフセット信号WR_OFFSET1がHighレベルである場合(ステップS605においてYES)、第1の書き込み座標を、書き込み処理が完了したライン320の最後尾の画素の座標に更新する(ステップS608)。第1の書き込みオフセット信号WR_OFFSET1がHighレベルでない場合(ステップS605においてNO)、ステップS606に遷移する。
ステップS606では、WRDMAC211から出力される第2の書き込みオフセット信号WR_OFFSET2がHighレベルであるか否かが判定される。第2の書き込みオフセット信号WR_OFFSET2がHighレベルである場合(ステップS606においてYES)、第2の書き込み座標を、書き込み処理が完了したライン320の最後尾の画素の座標に更新する(ステップS609)。第2の書き込みオフセット信号WR_OFFSET2がHighレベルでない場合には、ステップS607に遷移する。
ステップS607では、WRDMAC211から出力される第3の書き込みオフセット信号WR_OFFSET3がHighレベルであるか否かが判定される。第3の書き込みオフセット信号WR_OFFSET3がHighレベルである場合、第3の書き込み座標を、書き込み処理が完了したライン320の最後尾の画素の座標に更新する(ステップS610)。第3の書き込みオフセット信号WR_OFFSET3がHighレベルでない場合、ステップS611に遷移する。
ステップS611では、RDDMAC213から出力される読み出しリクエスト信号RD_REQがHighレベルであるか否かが判定される。読み出しリクエスト信号RD_REQがHighレベルである場合、ステップS612に遷移する。一方、読み出しリクエスト信号RD_REQがHighレベルでない場合、ステップS615に遷移する。
ステップS612では、第1~第3の読み出しオフセット信号RD_OFFSET1~RD_OFFSET3のうちのいずれかがHighレベルであるか否かが判定される。第1~第3の読み出しオフセット信号RD_OFFSET1~RD_OFFSET3のうちのいずれかがHighレベルである場合(ステップS612においてYES)、ステップS613に遷移する。ステップS613では、水平方向の読み出し座標HRと垂直方向の読み出し座標VRとが更新される。この後、ステップS615に遷移する。第1~第3の読み出しオフセット信号RD_OFFSET1~RD_OFFSET3のすべてがHighレベルでない場合(ステップS612においてNO)、ステップS614に遷移する。ステップS614では、水平方向の読み出し座標HRが更新される。この後、ステップS615に遷移する。
ステップS615では、書き込み処理が完了したか否かが判定される。書き込み処理が完了した場合(ステップS615においてYES)、ステップS616に遷移する。
ステップS616では、読み出しリクエスト信号RD_REQに対するマスクが解除された後、ステップS617に遷移する。一方、書き込み処理が完了していない場合(ステップS615においてNO)、ステップS602に戻り、上記と同様の処理が行われる。
ステップS617では、読み出しが完了していないライン(ブロック)320の読み出し処理が行われ、読み出し処理が完了したか否かが判定される。読み出し処理が完了していない場合には(ステップS617においてNO)、読み出しが完了していないライン320の読み出し処理が継続して行われる。一方、読み出し処理が完了した場合には(ステップS617においてYES)、追いかけ制御が終了する。
このように、書き込み処理が完了したブロック(ライン)320に応じた書き込み座標と、読み出し処理が行われるブロック320に応じた読み出し座標とが比較される。そして、書き込み座標と読み出し座標との比較の結果に基づいて読み出しが行われる。本実施形態では、座標を比較することによって読み出しの可否を判断するため、書き込み用のブロック320のサイズと読み出し用のブロック320のサイズとが異なる場合であっても、書き込みが完了していないブロック320を読み出してしまうことはない。このため、本実施形態によれば、追いかけ制御を適確に行い得る画像処理装置及び画像処理方法を提供することができる。
(変形例(その1))
本実施形態の変形例(その1)による画像処理装置及び画像処理方法について図8を用いて説明する。図8は、本変形例におけるブロック分割の態様を示す図である。図8における太い実線は、書き込み用の分割ブロックを概念的に示しており、図8における太い破線は、読み出し用の分割ブロックを概念的に示している。
本変形例は、書き込み処理におけるアクセス開始座標と読み出し処理におけるアクセス開始座標とが異なっている。即ち、本変形例では、先頭の書き込み用の分割ブロックWR0_0の第1番目のライン320の先頭の座標と、先頭の読み出し用の分割ブロックRD0_0の第1番目のライン320の先頭の座標とが異なっている。ここでは、1フレームのうち読み出し処理が行われる領域が、書き込み処理が行われる領域よりも小さい場合を例に説明する。
書き込み処理におけるアクセス開始座標と読み出し処理におけるアクセス開始座標との間の水平方向におけるずれ差異はDIFXである。書き込み処理におけるアクセス開始座標と読み出し処理におけるアクセス開始座標との間の垂直方向における差異はDIFYである。
このような場合には、例えば、上述した第1~第3の書き込み座標をアクセス開始座標の差異量DIFX、DIFYの分だけシフトさせればよい。アクセス開始座標の差異量DIFX、DIFYの分だけシフトさせた第1~第3の書き込み座標(HW1、VW1)′、(HW2、VW2)′、(HW3、VW3)′は、以下の式(7)~(9)によって表される。なお、読み出し処理におけるアクセス開始座標は(1,1)とする。アクセス開始座標の差異量DIFX、DIFYの分だけシフトさせた書き込み座標(HW1、VW1)′、(HW2、VW2)′、(HW3、VW3)′は、書き込み座標計算部201によって算出される。
(HW1,VW1)′=(HW1-DIFX,VW1-DIFY) ・・・(7)
(HW2,VW2)′=(HW2-DIFX,VW2-DIFY) ・・・(8)
(HW3,VW3)′=(HW3-DIFX,VW3-DIFY) ・・・(9)
なお、ここでは、第1~第3の書き込み座標をアクセス開始座標の差異量DIFX、DIFYの分だけシフトさせる場合を例に説明したが、これに限定されるものではない。例えば、アクセス開始座標の差異量DIFX、DIFYの分だけ読み出し座標をシフトさせるようにしてもよい。アクセス開始座標の差異量DIFX、DIFYの分だけシフトさせた読み出し座標(HR、VR)′は、書き込み処理におけるアクセス開始座標を(1,1)とする場合、以下の式(10)によって表される。アクセス開始座標の差異量DIFX、DIFYの分だけシフトさせた読み出し座標(HR、VR)′は、読み出し座標計算部202によって算出される。
(HR,VR)′=(HR+DIFX,VR+DIFY) ・・・(10)
このように、書き込み処理におけるアクセス開始座標と読み出し処理におけるアクセス開始座標とが異なっていてもよい。
(変形例(その2))
本実施形態の変形例(その2)による画像処理装置及び画像処理方法について図9及び図10を用いて説明する。図9は、本変形例におけるブロック分割の態様を示す図である。図9における太い実線は、書き込み用の分割ブロックを概念的に示しており、図9における太い破線は、読み出し用の分割ブロックを概念的に示している。
本変形例は、隣接する分割ブロックの一部が重複している場合を示している。なお、ここでは、隣接するブロックが重複している場合であっても、分割ブロックと呼ぶことにする。読み出し用の分割ブロックRD*_*の水平方向における重複量はOLXである。読み出し用の分割ブロックRD*_*の垂直方向における重複量はOLYである。
このような場合には、例えば、読み出し対象の分割ブロックRD*_*が切り替わる際に、上述した読み出し座標を重複量OLX,OLYの分だけシフトさせるようにすればよい。重複量OLX,OLYの分だけシフトさせた読み出し座標(HR、VR)′は、以下の式(11)によって表される。重複量OLX,OLYの分だけシフトさせた読み出し座標(HR、VR)′は、読み出し座標計算部202によって算出される。
(HR、VR)′=(HR-OLX、VR-OLY) ・・・(11)
このように、隣接する分割ブロックが重複していてもよい。なお、ここでは、隣接する読み出し用の分割ブロックRD*_*が重複している場合を例に説明したが、隣接する書き込み用の分割ブロックWR*_*が重複していてもよい。
図10は、分割ブロックの最後尾にアクセスが達した際のアクセス座標のジャンプを概念的に示す図である。図10(a)は、隣接する分割ブロック300a~300cが水平方向に重複している場合を示している。分割ブロック300a、300bの最後尾の座標(H2、V2)の画素311,312にアクセスが達した際には、図3を用いて上述した第1実施形態による画像処理装置と同様に、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YA-1)-OLX)である。
図10(b)は、隣接する分割ブロック300d~300iが水平方向においても垂直方向においても重複している場合を示している。ブロックライン321bの最後尾の座標(H3、V3)の画素316にアクセスが達した際には、図3を用いて上述した第1実施形態による画像処理装置と同様に、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は、(-XH×OLY)である。
このように、隣接する分割ブロックの一部が重複していてもよい。本変形例においても、メモリ112に対する追いかけ制御を適確に行い得る画像処理装置を提供することができる。
[第2実施形態]
第2実施形態による画像処理装置及び画像処理方法を図11乃至図16を用いて説明する。図1乃至図10に示す第1実施形態による画像処理装置及び画像処理方法と同一の構成要素には、同一の符号を付して説明を省略または簡潔にする。
本実施形態による画像処理装置1100は、現像処理部109a、109bが複数備えられており、WRDMAC211a、211bも複数備えられており、書き込み座標計算部201a、201bも複数備えられているものである。
図11は、本実施形態による画像処理装置を示すブロック図である。図11に示すように、画像処理装置1100は、撮像素子102と、A/D変換部103と、補正処理部104と、不揮発性メモリ105と、不揮発性メモリ制御部106と、操作部107とを有している。画像処理装置100は、CPU108と、表示制御部110と、表示部111と、メモリ112と、複数の現像処理部109a、109bと、メモリ制御部120aとを更に有している。画像処理装置100には、結像光学系101が備えられる。結像光学系101は、画像処理装置100のボディから着脱可能であってもよいし着脱不能であってもよい。
現像処理部109a、109bは、画像データに対して、拡大縮小等のリサイズ処理、圧縮伸長処理、フォーマット変換処理、現像処理、歪み補正等をそれぞれ行う。現像処理部109aは、画像データのうちの所定の領域に対しての処理を担当する。現像処理部109bは、画像データのうちの現像処理部109aによって担当される領域とは異なる領域に対しての処理を担当する。メモリ制御部120aは、補正処理部104又は現像処理部109a、109bによって処理された画像データをメモリ112に書き込む。また、メモリ制御部120aは、メモリ112に書き込まれた画像データを読み出し、現像処理部1109a、1109b等に伝送する。
メモリ制御部120aは、DMAC210aと、追いかけ制御部200aとを有している。DMAC210aは、複数のWRDMAC211a、211bを有している。WRDMAC211a、211bの構成は、図2を用いて上述したWRDMAC211の構成と同様である。また、DMAC210aは、RDDMAC213を有している。メモリI/F205は、WRDMAC211a、211bからの制御信号又はRDDMAC213からの制御信号に従って、メモリ112を制御する。
ライン320の最後尾の画素301~309(図3参照)に書き込み処理が達すると、第1の書き込みオフセット信号WR_OFFSET1_a、WR_OFFSET1_bがWRDMAC211a、211bによってそれぞれ生成される。ライン320の最後尾の画素301~309に読み出し処理が達すると、第1の読み出しオフセット信号RD_OFFSET1がRDDMAC213によってそれぞれ生成される。分割ブロック300a、300b、300d、300e、300g、300hの最後尾の画素311,312,314,315,317,318に書き込み処理が達すると、以下のような処理が行われる。即ち、第2の書き込みオフセット信号WR_OFFSET2_a、WR_OFFSET2_bがWRDMAC211a、211bによってそれぞれ生成される。分割ブロック300a、300b、300d、300e、300g、300hの最後尾の画素311,312,314,315,317,318に読み出し処理が達すると、第2の読み出しオフセット信号RD_OFFSET2が生成される。ブロックライン321a、321bの最後尾の画素313,316に書き込み処理が達すると、第3の書き込みオフセット信号WR_OFFSET3_a、WR_OFFSET3_bがWRDMAC211a、211bによってそれぞれ生成される。ブロックライン321a、321bの最後尾の画素313,316に読み出し処理が達すると、第3の読み出しオフセット信号RD_OFFSET3がRDDMAC213によってそれぞれ生成される。
追いかけ制御部200aは、書き込み座標計算部201a、201bと、書き込み座標統合部(書き込み座標特定部)1201と、読み出し座標計算部202と、座標比較部203と、読み出しリクエストマスク部204とを有している。追いかけ制御部200aは、WRDMAC211aからの書き込みオフセット信号WR_OFFSET1_a~WR_OFFSET3_aに基づいて、後述する書き込み座標(HW1_a,VW1_a)~(HW3_a,VW3_a)を計算する。また、追いかけ制御部200aは、WRDMAC211bからの書き込みオフセット信号WR_OFFSET1_b~WR_OFFSET3_bに基づいて、後述する書き込み座標(HW1_b,VW1_b)~(HW3_b,VW3_b)を計算する。また、追いかけ制御部200aは、RDDMAC213から供給されるデータ転送長信号RD_TRANS及び読み出しオフセット信号RD_OFFSET1~RD_OFFSET3に基づいて、読み出し座標を計算する。追いかけ制御部200は、書き込み座標と読み出し座標との比較結果に基づいて、RDDMAC213からの読み出しリクエスト信号RD_REQを適宜マスクする。WRDMAC211a、211bによって画像データの書き込みが完了した部分の画像データをRDDMAC213が順次読み出していく追いかけ制御が行われる。このような追いかけ制御が、追いかけ制御部200aによって司られる。
WRDMAC211a、211bは、メモリ112にデータを書き込む際のメモリアドレス、即ち、書き込みアドレスWADRS_a、WADRS_bを生成する書き込みアドレス生成部212a、212bをそれぞれ備えている。WRDMAC211a、211bの構成は、図7を用いて上述したWRDMAC211の構成と同様である。書き込みアドレス生成部212a、212bは、データ転送長等の管理や制御を行い得る。WRDMAC211a、211bは、書き込みアドレスWADRSをインクリメントする機能をそれぞれ備えている。従って、WRDMAC211a、211bは、メモリ112上の所定のアドレス空間に画像データを順番に格納していくことが可能である。また、WRDMAC211a、211bは、アクセスアドレスを適宜ジャンプさせることができる。また、WRDMAC211a、211bは、分割ブロック1300a_a~1300i_a、1300a_b~1300i_b(図13参照)の画像データのメモリ112への書き込み処理を順次行うことができる。
図13は、本実施形態において行われる書き込みアクセス及び読み出しアクセスを概念的に示す図である。図13は、メモリ112における仮想的なアドレス空間を画像に対応するように概念的に示したものである。図13に示すように、1フレームの画像データを水平方向に6分割、垂直方向に3分割することによって、矩形の18個の分割ブロック1300a_a~1300i_a、1300a_b~1300i_bが設定されている。
分割ブロック1300a_aと、分割ブロック1300a_aの右側の分割ブロック1300a_bとによって、分割ブロック1300aが構成されている。分割ブロック1300a_bの右側の分割ブロック1300b_aと、分割ブロック1300b_aの右側の分割ブロック1300b_bとによって、分割ブロック1300bが構成されている。分割ブロック1300b_bの右側の分割ブロック1300c_aと、分割ブロック1300c_aの右側の分割ブロック1300c_bとによって、分割ブロック1300cが構成されている。分割ブロック1300a_aの下側の分割ブロック1300d_aと、分割ブロック1300d_aの右側の分割ブロック1300d_bとによって、分割ブロック1300dが構成されている。分割ブロック1300d_bの右側の分割ブロック1300e_aと、分割ブロック1300e_aの右側の分割ブロック1300e_bとによって、分割ブロック1300eが構成されている。分割ブロック1300e_bの右側の分割ブロック1300f_aと、分割ブロック1300f_aの右側の分割ブロック1300f_bとによって、分割ブロック1300fが構成されている。分割ブロック1300d_aの下側の分割ブロック1300g_aと、分割ブロック1300g_aの右側の分割ブロック1300g_bとによって、分割ブロック1300gが構成されている。分割ブロック1300g_bの右側の分割ブロック1300h_aと、分割ブロック1300h_aの右側の分割ブロック1300h_bとによって、分割ブロック1300hが構成されている。分割ブロック1300h_bの右側の分割ブロック1300i_aと、分割ブロック1300i_aの右側の分割ブロック1300i_bとによって、分割ブロック1300iが構成されている。
分割ブロック1300a_a、1300d_a、1300g_aの水平方向の画素数(サイズ)をXAとする。分割ブロック1300a_b、1300d_b、1300g_bの水平方向の画素数をXAとする。分割ブロック1300a、1300d、1300gの水平方向の画素数をXA′とする。分割ブロック1300b_a、1300e_a、1300h_aの水平方向の画素数をXBとする。分割ブロック1300b_b、1300e_b、1300h_bの水平方向の画素数をXBとする。分割ブロック1300b、1300e、1300hの水平方向の画素数をXB′とする。分割ブロック1300c_a、1300f_a、1300i_aの水平方向の画素数をXCとする。分割ブロック1300c_b、1300f_b、1300i_bの水平方向の画素数をXCとする。分割ブロック1300c、1300f、1300iの水平方向の画素数をXC′とする。
分割ブロック1300a~1300cの垂直方向のライン数(画素数)をYA、分割ブロック1300d~1300fの垂直方向のライン数をYB、分割ブロック1300g~1300iの垂直方向のライン数をYCとする。
ここでは、説明を簡略化するため、YA=4、YB=4、YC=6とするが、実際には垂直方向のライン数はこれらの値よりも遙かに大きい。また、1フレームの水平方向の画素数をXH(=XA′+XB′+XC′)とする。画素数XA~XC、ライン数YA~YC、オフセット値等は、DMAC210aの算出部701やアドレス加算値算出部702に対してCPU108から予め入力される。そして、算出部701やアドレス加算値算出部702に備えられているレジスタ(不図示)にこれらの値が予め格納される。
分割ブロック1300a_a、1300b_a、1300c_a、1300d_a、1300e_a、1300f_a、1300g_a、1300h_a、1300i_aの画像データのメモリ112への書き込みは、WRDMAC211aによって行われる。ここでは、これらの分割ブロックの個々について説明する際には、符号1300a_a~1300i_aを用い、これらの分割ブロック一般について説明する際には、符号1300*_aを用いることとする。分割ブロック1300a_b、1300b_b、1300c_b、1300d_b、1300e_b、1300f_b、1300g_b、1300h_b、1300i_bの画像データのメモリ112への書き込みは、WRDMAC211bによって行われる。ここでは、これらの分割ブロックの個々について説明する際には、符号1300a_b~1300i_bを用い、これらの分割ブロック一般について説明する際には、符号1300*_bを用いることとする。また、分割ブロック1300a~1300iの個々について説明する際には、符号1300a~1300iを用い、これらの分割ブロック一般について説明する際には、符号1300を用いることとする。図13における実線の矢印は、WRDMAC211aによって行われる処理における座標のジャンプ、即ち、アドレスジャンプを概念的に示している。図13における破線の矢印は、WRDMAC211bによって行われる処理における座標のジャンプ、即ち、アドレスジャンプを概念的に示している。オフセット値を適宜設定することにより、複数のWRDMAC211a、211bによって処理を分担することができる。
各々の分割ブロック1300*_a、1300*_bには、複数のライン320がそれぞれ含まれている。また、複数の分割ブロック1300a~1300cによってブロックライン1321aが構成されており、複数の分割ブロック1300d~1300fによってブロックライン1321bが構成されている。また、複数の分割ブロック1300g~1300iによってブロックライン1321cが構成されている。個々のブロックラインについて説明する際には、符号1321a~1321cを用い、ブロックライン一般について説明する際には、符号1321を用いることとする。
分割ブロック1300a_aの画像データがWRDMAC211aによってメモリ112に書き込まれる。また、分割ブロック1300a_bの画像データがWRDMAC211bによってメモリ112に書き込まれる。分割ブロック1300a_aの画像データの書き込みが完了した後には、分割ブロック1300b_aの画像データがWRDMAC211aによってメモリ112に書き込まれる。分割ブロック1300a_bの画像データの書き込みが完了した後には、分割ブロック1300b_bの画像データがWRDMAC211bによってメモリ112に書き込まれる。分割ブロック1300b_aの画像データの書き込みが完了した後には、分割ブロック1300c_aの画像データがWRDMAC211aによってメモリ112に書き込まれる。分割ブロック1300b_bの画像データの書き込みが完了した後には、分割ブロック1300c_bの画像データがWRDMAC211bによってメモリ112に書き込まれる。このように、第1番目のブロックライン1321aに位置する分割ブロック1300a_a、1300b_a、1300c_aの画像データのメモリ112への書き込みがWRDMAC211aによって順次行われる。また、第1番目のブロックライン1321aに位置する分割ブロック1300a_b、1300b_b、1300c_bの画像データのメモリ112への書き込みがWRDMAC211bによって順次行われる。
第1番目のブロックライン1321aの分割ブロック1300a_a、1300b_a、1300c_aの画像データの書き込みが完了した後には、以下のような処理が行われる。即ち、第2番目のブロックライン1321bの分割ブロック1300d_a、1300e_a、1300f_aの画像データの書き込みがWRDMAC211aによって順次行われる。また、第1番目のブロックライン1321aの分割ブロック1300a_b、1300b_b、1300c_bの画像データの書き込みが完了した後には、以下のような処理が行われる。即ち、第2番目のブロックライン1321bの分割ブロック1300d_b、1300e_b、1300f_bの画像データの書き込みがWRDMAC211bによって順次行われる。
第2番目のブロックライン1321bの分割ブロック1300d_a、1300e_a、1300f_aの画像データの書き込みが完了した後には、以下のような処理が行われる。即ち、第3番目のブロックライン1321cの分割ブロック1300g_a、1300h_a、1300i_aの画像データの書き込みがWRDMAC211aによって順次行われる。また、第2番目のブロックライン1321bの分割ブロック1300d_b、1300e_b、1300f_bの画像データの書き込みが完了した後には、以下のような処理が行われる。即ち、第3番目のブロックライン1321cの分割ブロック1300g_b、1300h_b、1300i_bの画像データの書き込みがWRDMAC211bによって順次行われる。
こうして、全ての分割ブロック1300a~1300iの画像データのメモリ112への書き込みが順次行われる。なお、ここでは、書き込みアクセスを例として説明するが、読み込みアクセスも同様にして行われる。
書き込みアクセスの順序をより具体的に以下に説明する。9つの分割ブロック1300a_a~1300i_aの画像がWRDMAC211aによって以下のようにメモリ112に順次書き込まれる。まず、分割ブロック1300a_aの画像データのメモリ112への書き込みがWRDMAC211aによって以下のように行われる。即ち、書き込みアドレス生成部212aによって発行されるアドレス値に従って、分割ブロック1300a_aの第1番目のライン320の画像データのメモリ112への書き込みが行われる。なお、1回の書き込みアクセスにおけるデータ転送長が1つのライン320に対応するデータ長と同等である場合には、ライン320への書き込みは1回の書き込みアクセスによって完了する。一方、1回の書き込みアクセスにおけるデータ転送長が1つのライン320に対応するデータ長より短い場合には、ライン320への書き込みは複数回の書き込みアクセスによって完了する。
分割ブロック1300a_aの第1番目のライン320の画像データの書き込みが完了した後、分割ブロック1300a_aの第2番目のライン320の画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300a_aの第1番目のライン320の最後尾の座標は(XA,1)であり、分割ブロック1300a_aの第2番目のライン320の先頭の座標は(1,2)である。座標(1,2)に対応するメモリアドレスは、座標(XA,1)に対応するメモリアドレスの次のメモリアドレスではない。従って、第1番目のライン320の画像データの書き込みから第2番目のライン320の画像データの書き込みに移行する際には、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック1300a_aの第1番目のライン320の最後尾の座標(XA,1)に書き込み処理が達すると、アドレス加算値算出部702によってオフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とを現在のアドレス値に加算することによって、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値は(XH-XA)である。
この後、分割ブロック1300a_aの画像データの書き込みがWRDMAC211aによって順次行われる。分割ブロック1300a_aの最後のライン320を除く各ライン320の最後尾の座標の画素に書き込み処理が達する毎に、オフセット値がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300a_aの画像データの書き込みが順次行われる。
分割ブロック1300a_aの画像データのメモリ112への書き込みが完了した後、分割ブロック1300b_aの画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300a_aの最後のライン320である第YA番目のライン320の最後尾の画素の座標、即ち、分割ブロック1300a_aの最後尾の画素の座標は(XA,YA)である。一方、分割ブロック1300b_aの第1番目のライン320の先頭の座標、即ち、分割ブロック1300b_aの先頭の座標は(XA′+1,1)である。座標(XA′+1,1)に対応するメモリアドレスは、座標(XA,YA)に対応するメモリアドレスの次のメモリアドレスではない。従って、分割ブロック1300a_aの画像データの書き込みから分割ブロック1300b_aの画像データの書き込みに移行する際には、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック1300a_aの最後尾の座標に書き込み処理が達すると、オフセット値がアドレス値に加算される。即ち、データ転送長に応じた値をアドレス値とオフセット値とをアドレス値に加算することによって、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値は(-XH×(YA-1)+XA)である。座標(XA,YA)に対応するメモリアドレスから座標(XA′+1,1)に対応するメモリアドレスにジャンプする。オフセット値が負の値であるため、垂直方向のアドレスがYAから1に戻る。分割ブロック1300b_aの第1番目のライン320の画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300b_aの第1番目のライン320の画像データの書き込みが完了した後、分割ブロック1300b_aの第2番目のライン320の画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300b_aの第1番目のライン320の最後尾の座標は(XA′+XB,1)であり、分割ブロック1300b_aの第2番目のライン320の先頭の座標は(XA′+1,2)である。従って、第1番目のライン320の画像データの書き込みから第2番目のライン320の画像データの書き込みに移行する際には、アクセスアドレスのジャンプが行われる。即ち、分割ブロック1300b_aの第1番目のライン320の最後尾の座標に書き込み処理が達すると、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(XH-XB)である。この後、分割ブロック1300b_aの画像データの書き込みがWRDMAC211aによって順次行われる。分割ブロック1300b_aの最後のライン320を除く各ライン320の最後尾の座標の画素に書き込み処理が達する毎に、オフセット値がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300b_aの画像データの書き込みがWRDMAC211aによって順次行われる。
分割ブロック1300b_aの画像データのメモリ112への書き込みが完了した後、分割ブロック1300c_aの画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300b_aの最後尾の座標は(XA′+XB,YA)であり、分割ブロック1300c_aの第1番目のライン320の先頭の座標は、(XA′+XB′+1,1)である。座標(XA′+XB′+1,1)に対応するメモリアドレスは、座標(XA′+XB,YA)に対応するメモリアドレスの次のメモリアドレスではない。従って、分割ブロック1300b_aの画像データの書き込みから分割ブロック1300c_aの画像データの書き込みに移行する際には、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック1300b_aの最後尾の座標に書き込み処理が達すると、オフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とをアドレス値に加算することによって、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値は(-XH×(YA-1)+XB)である。座標(XA′+XB,YA)に対応するメモリアドレスから座標(XA′+XB′+1,1)に対応するメモリアドレスにジャンプする。オフセット値が負の値であるため、垂直方向のアドレスがYAから1に戻る。分割ブロック1300c_aの第1番目のライン320の画像データの書き込みがWRDMAC211aによって行われる。
分割ブロック1300c_aの第1番目のライン1320の画像データの書き込みが完了した後、分割ブロック1300c_aの第2番目のライン320の画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300c_aの第1番目のライン320の最後尾の座標は(XA′+XB′+XC,1)であり、分割ブロック1300c_aの第2番目のライン320の先頭の座標は(XA′+XB′+1,2)である。従って、第1番目のライン320の画像データの書き込みから第2番目のライン320の画像データの書き込みに移行する際には、アクセスアドレスのジャンプが行われる。即ち、分割ブロック1300c_aの最後尾の座標に書き込み処理が達すると、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(XH-XC)である。この後、分割ブロック1300c_aの画像データの書き込みがWRDMAC211aによって順次行われる。分割ブロック1300c_aの最後のライン320を除く各ライン320の最後尾の画素に書き込み処理が達する毎に、オフセット値がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300c_aの画像データの書き込みがWRDMAC211aによって順次行われる。
分割ブロック1300c_aの画像データのメモリ112への書き込みが完了した後、分割ブロック1300d_aの画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300c_aの最後尾の座標は(XA′+XB′+XC,YA)であり、分割ブロック1300d_aの第1番目のライン320の先頭の座標は(1,YA+1)である。座標(1,YA+1)に対応するメモリアドレスは、座標(XA′+XB′+XC,YA)に対応するメモリアドレスの次のメモリアドレスではない。従って、分割ブロック1300c_aの画像データの書き込みから分割ブロック1300d_aの画像データの書き込みに移行する際には、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック1300c_aの最後尾の座標に書き込み処理が達すると、オフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とをアドレス値に加算することによって、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値はXCである。この後、分割ブロック1300d_aの画像データの書き込みがWRDMAC211aによって順次行われる。分割ブロック1300d_aの最後のライン320を除く各ライン320の最後尾の座標の画素に書き込み処理が達する毎に、オフセット値、即ち(XH-XA)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300d_aの画像データの書き込みがWRDMAC211aによって順次行われる。
分割ブロック1300d_aの画像データのメモリ112への書き込みが完了した後、分割ブロック1300e_aの画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300d_aの画像データの書き込みから分割ブロック1300e_aの画像データの書き込みに移行する際には、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YB-1)+XA)である。こうして、分割ブロック1300d_aの画像データの書き込みから分割ブロック1300e_aの画像データの書き込みに移行する。そして、分割ブロック1300e_aの画像データの書き込みがWRDMAC211aによって順次行われる。分割ブロック1300e_aの最後のライン320を除く各ライン320の最後尾の座標の画素に書き込み処理が達する毎に、オフセット値、即ち(XH-XB)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300e_aの画像データの書き込みがWRDMAC211aによって順次行われる。
分割ブロック1300e_aの画像データのメモリ112への書き込みが完了した後、分割ブロック1300f_aの画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300e_aの画像データの書き込みから分割ブロック1300f_aの画像データの書き込みに移行する際には、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YB-1)+XB)である。こうして、分割ブロック1300e_aの画像データの書き込みから分割ブロック1300f_aの画像データの書き込みに移行する。この後、分割ブロック1300f_aの画像データの書き込みがWRDMAC211aによって順次行われる。分割ブロック1300f_aの最後のライン320を除く各ライン320の最後尾の画素に書き込み処理が達する毎に、オフセット値、即ち(XH-XC)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300f_aの画像データの書き込みがWRDMAC211aによって順次行われる。
分割ブロック1300f_aの画像データのメモリ112への書き込みが完了した後、分割ブロック1300g_aの画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300f_aの最後尾の座標は(XA′+XB′+XC,YA+YB)であり、分割ブロック1300g_aの第1番目のライン320の先頭の座標は(1,YA+YB+1)である。座標(1,YA+YB+1)に対応するメモリアドレスは、座標(XA′+XB′+XC,YA+YB)に対応するメモリアドレスの次のメモリアドレスではない。従って、分割ブロック1300f_aの画像データの書き込みから分割ブロック1300g_aの画像データの書き込みに移行する際には、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック1300f_aの最後尾の座標に書き込み処理が達すると、オフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とをアドレス値に加算することによって、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値はXCである。この後、分割ブロック1300g_aの画像データの書き込みがWRDMAC211aによって順次行われる。分割ブロック1300g_aの最後のライン320を除く各ライン320の最後尾の座標の画素に書き込み処理が達する毎に、オフセット値、即ち(XH-XA)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300g_aの画像データの書き込みがWRDMAC211aによって順次行われる。
分割ブロック1300g_aの画像データのメモリ112への書き込みが完了した後、分割ブロック1300h_aの画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300g_aの画像データの書き込みから分割ブロック1300h_aの画像データの書き込みに移行する際には、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YC-1)+XA)である。こうして、分割ブロック1300g_aの画像データの書き込みから分割ブロック1300h_aの画像データの書き込みに移行する。この後、分割ブロック1300h_aの画像データの書き込みがWRDMAC211aによって順次行われる。分割ブロック1300h_aの最後のライン320を除く各ライン320の最後尾の画素に書き込み処理が達する毎に、オフセット値、即ち(XH-XB)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300h_aの複数のライン320の画像データの書き込みがWRDMAC211aによって順次行われる。
分割ブロック1300h_aの画像データのメモリ112への書き込みが完了した後、分割ブロック1300i_aの画像データの書き込みがWRDMAC211aによって行われる。分割ブロック1300h_aの画像データの書き込みから分割ブロック1300i_aの画像データの書き込みに移行する際には、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YC-1)+XB)である。こうして、分割ブロック1300h_aの画像データの書き込みから分割ブロック1300i_aの画像データの書き込みに移行する。この後、分割ブロック1300i_aの画像データの書き込みがWRDMAC211aによって順次行われる。分割ブロック1300i_aの最後のライン320を除く各ライン320の最後尾の画素に書き込み処理が達する毎に、オフセット値、即ち(XH-XC)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300i_aの画像データの書き込みがWRDMAC211aによって順次行われる。
上記のような処理によって、9つの分割ブロック1300a_a~1300i_aの画像がWRDMAC211aによってメモリ112に順次書き込まれる。
一方、9つの分割ブロック1300a_b~1300i_bの画像がWRDMAC211bによって以下のようにメモリ112に順次書き込まれる。まず、分割ブロック1300a_bの画像データのメモリ112への書き込みがWRDMAC211bによって以下のように行われる。即ち、書き込みアドレス生成部212bによって発行されるアドレス値に従って、分割ブロック1300a_bの第1番目のライン320の画像データがメモリ112に書き込まれる。分割ブロック1300a_bの第1番目のライン320の先頭の座標は(XA+1,1)であり、分割ブロック1300a_bの第1番目のライン320の最後尾の座標は(XA′,1)である。なお、1回の書き込みアクセスにおけるデータ転送長が1つのライン320に対応するデータ長と同等である場合には、ライン320への書き込みは1回の書き込みアクセスによって完了する。一方、1回の書き込みアクセスにおけるデータ転送長が1つのライン320に対応するデータ長より短い場合には、ライン320への書き込みは複数回の書き込みアクセスによって完了する。
分割ブロック1300a_bの第1番目のライン320の画像データの書き込みが完了した後、分割ブロック1300a_bの第2番目のライン320の画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300a_bの第1番目のライン320の最後尾の座標は(XA′,1)であり、分割ブロック1300a_bの第2番目のライン320の先頭の座標は(XA+1,2)である。座標(XA+1,2)に対応するメモリアドレスは、座標(XA′,1)に対応するメモリアドレスの次のメモリアドレスではない。従って、第1番目のライン320の画像データの書き込みから第2番目のライン320の画像データの書き込みに移行する際には、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック1300a_bの第1番目のライン320の最後尾の座標に書き込み処理が達すると、アドレス加算値算出部702によりオフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とを現在のアドレス値に加算することによって、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値は(XH-XA)である。
この後、分割ブロック1300a_bの画像データの書き込みがWRDMAC211bによって順次行われる。分割ブロック1300a_bの最後のライン320を除く各ライン320の最後尾の座標の画素に書き込み処理が達する毎に、オフセット値がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300a_bの画像データの書き込みが順次行われる。
分割ブロック1300a_bの画像データのメモリ112への書き込みが完了した後、分割ブロック1300b_bの画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300a_bの最後のライン320である第YA番目のライン320の最後尾の画素の座標、即ち、分割ブロック1300a_bの最後尾の画素の座標は(XA′,YA)である。一方、分割ブロック1300b_bの第1番目のライン320の先頭の座標、即ち、分割ブロック1300b_bの先頭の座標は(XA′+XB+1,1)である。座標(XA′+XB+1,1)に対応するメモリアドレスは、座標(XA′,YA)に対応するメモリアドレスの次のメモリアドレスではない。従って、分割ブロック1300a_bの画像データの書き込みから分割ブロック1300b_bの画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック1300a_bの最後尾の座標に書き込み処理が達すると、オフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とをアドレス値に加算することによって、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値は(-XH×(YA-1)+XB)である。座標(XA′,YA)に対応するメモリアドレスから座標(XA′+XB+1,1)に対応するメモリアドレスにジャンプする。オフセット値が負の値であるため、垂直方向のアドレスがYAから1に戻る。こうして、アクセスアドレスがジャンプし、分割ブロック1300b_bの第1番目のライン320の画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300b_bの第1番目のライン320の画像データの書き込みが完了した後、分割ブロック1300b_bの第2番目のライン320の画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300b_bの第1番目のライン320の最後尾の座標は(XA′+XB′,1)であり、分割ブロック1300b_bの第2番目のライン320の先頭の座標は(XA′+XB+1,2)である。従って、第1番目のライン320の画像データの書き込みから第2番目のライン320の画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。即ち、分割ブロック1300b_bの第1番目のライン320の最後尾の座標に書き込み処理が達すると、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(XH-XB)である。この後、分割ブロック1300b_bの画像データの書き込みがWRDMAC211bによって順次行われる。分割ブロック1300b_bの最後のライン320を除く各ライン320の最後尾の座標の画素に書き込み処理が達する毎に、オフセット値がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300b_bの画像データの書き込みがWRDMAC211bによって順次行われる。
分割ブロック1300b_bの画像データのメモリ112への書き込みが完了した後、分割ブロック1300c_bの画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300b_bの最後尾の座標は(XA′+XB′,YA)であり、分割ブロック1300c_bの第1番目のライン320の先頭の座標は(XA′+XB′+XC+1,1)である。座標(XA′+XB′+XC+1,1)に対応するメモリアドレスは、座標(XA′+XB′,YA)に対応するメモリアドレスの次のメモリアドレスではない。従って、分割ブロック1300b_bの画像データの書き込みから分割ブロック1300c_bの画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック1300b_bの最後尾の座標に書き込み処理が達した際に、オフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とをアドレス値に加算することによって、座標(XA′+XB′,YA)に対応するメモリアドレスから座標(XA′+XB′+XC+1,1)に対応するメモリアドレスにアクセスアドレスがジャンプする。ここで加算されるオフセット値は(-XH×(YA-1)+XC)である。オフセット値が負の値であるため、垂直方向のアドレスが戻る。こうして、アクセスアドレスがジャンプし、分割ブロック1300c_bの第1番目のライン320の画像データの書き込みがWRDMAC211bによって行われる。
分割ブロック1300c_bの第1番目のライン320の画像データの書き込みが完了した後、分割ブロック1300c_bの第2番目のライン320の画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300c_bの第1番目のライン320の最後尾の座標は(XA′+XB′+XC′,1)であり、分割ブロック1300c_bの第2番目のライン320の先頭の座標は(XA′+XB′+XC+1,2)である。従って、第1番目のライン320の画像データの書き込みから第2番目のライン320の画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。即ち、分割ブロック1300c_bの最後尾の座標に書き込み処理が達した際に、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(XH-XC)である。この後、分割ブロック1300c_bの画像データがWRDMAC211bによって順次書き込まれる。分割ブロック1300c_bの最後のライン320を除く各ライン320の最後尾の画素に書き込み処理が達する毎に、オフセット値がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300c_bの画像データの書き込みがWRDMAC211bによって順次行われる。
分割ブロック1300c_bの画像データのメモリ112への書き込みが完了した後、分割ブロック1300d_bの画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300c_bの最後尾の座標は、(XA′+XB′+XC′,YA)である。一方、分割ブロック1300d_bの第1番目のライン320の先頭の座標は、(XA+1,YA+1)である。座標(XA+1,YA+1)に対応するメモリアドレスは、座標(XA′+XB′+XC′,YA)に対応するメモリアドレスの次のメモリアドレスではない。従って、分割ブロック1300c_bの画像データの書き込みから分割ブロック1300d_bの画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック1300c_bの最後尾の座標に書き込み処理が達した際には、オフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とをアドレス値に加算することによって、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値は、XAである。この後、分割ブロック1300d_bの画像データの書き込みがWRDMAC211bによって順次行われる。分割ブロック1300d_bの最後のライン320を除く各ライン320の最後尾の座標の画素に書き込み処理が達する毎に、オフセット値、即ち、(XH-XA)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300d_bの画像データの書き込みがWRDMAC211bによって順次行われる。
分割ブロック1300d_bの画像データのメモリ112への書き込みが完了した後、分割ブロック1300e_bの画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300d_bの画像データの書き込みから分割ブロック1300e_bの画像データの書き込みに移行する際には、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YB-1)+XB)である。こうして、分割ブロック1300d_bの画像データの書き込みから分割ブロック1300e_bの画像データの書き込みに移行する。そして、分割ブロック1300e_bの画像データの書き込みがWRDMAC211bによって順次行われる。分割ブロック1300e_bの最後のライン320を除く各ライン320の最後尾の座標の画素に書き込み処理が達する毎に、オフセット値、即ち、(XH-XB)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300e_bの画像データの書き込みがWRDMAC211bによって順次行われる。
分割ブロック1300e_bの画像データのメモリ112への書き込みが完了した後、分割ブロック1300f_bの画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300e_bの画像データの書き込みから分割ブロック1300f_bの画像データの書き込みに移行する際には、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YB-1)+XC)である。こうして、分割ブロック1300e_bの画像データの書き込みから分割ブロック1300f_bの画像データの書き込みに移行する。この後、分割ブロック1300f_bの画像データの書き込みがWRDMAC211bによって順次行われる。分割ブロック1300f_bの最後のライン320を除く各ライン320の最後尾の画素に書き込み処理が達する毎に、オフセット値、即ち、(XH-XC)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300f_bの画像データの書き込みがWRDMAC211bによって順次行われる。
分割ブロック1300f_bの画像データのメモリ112への書き込みが完了した後、分割ブロック1300g_bの画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300f_bの最後尾の座標は(XA′+XB′+XC′,YA+YB)であり、分割ブロック1300g_bの第1番目のライン320の先頭の座標は、(XA+1,YA+YB+1)である。座標(XA+1,YA+YB+1)に対応するメモリアドレスは、座標(XA′+XB′+XC′,YA+YB)に対応するメモリアドレスの次のメモリアドレスではない。従って、分割ブロック1300f_bの画像データの書き込みから分割ブロック1300g_bの画像データの書き込みに移行する際に、アクセスアドレスのジャンプが行われる。具体的には、分割ブロック1300f_bの最後尾の座標に書き込み処理が達した際には、オフセット値がアドレス値に加算される。即ち、データ転送長に応じた値とオフセット値とをアドレス値に加算することによって、アクセスアドレスのジャンプが行われる。ここで加算されるオフセット値はXAである。この後、分割ブロック1300g_bの画像データの書き込みがWRDMAC211bによって順次行われる。分割ブロック1300g_bの最後のライン320を除く各ライン320の最後尾の座標の画素に書き込み処理が達する毎に、オフセット値、即ち、(XH-XA)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300g_bの画像データの書き込みがWRDMAC211bによって順次行われる。
分割ブロック1300g_bの画像データのメモリ112への書き込みが完了した後、分割ブロック1300h_bの画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300g_bの画像データの書き込みから分割ブロック1300h_bの画像データの書き込みに移行する際に、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YC-1)+XB)である。こうして、分割ブロック1300g_bの画像データの書き込みから分割ブロック1300h_bの画像データの書き込みに移行する。この後、分割ブロック1300h_bの画像データの書き込みがWRDMAC211bによって順次行われる。分割ブロック1300h_bの最後のライン320を除く各々のライン320の最後尾の画素に書き込み処理が達する毎に、オフセット値、即ち(XH-XB)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300h_bの画像データの書き込みがWRDMAC211bによって順次行われる。
分割ブロック1300h_bの画像データのメモリ112への書き込みが完了した後、分割ブロック1300i_bの画像データの書き込みがWRDMAC211bによって行われる。分割ブロック1300h_bの画像データの書き込みから分割ブロック1300i_bの画像データの書き込みに移行する際に、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YC-1)+XC)である。こうして、分割ブロック1300h_bの画像データの書き込みから分割ブロック1300i_bの画像データの書き込みに移行する。この後、分割ブロック1300i_bの画像データの書き込みがWRDMAC211bによって順次行われる。分割ブロック1300i_bの最後のライン320を除く各ライン320の最後尾の画素に書き込み処理が達する毎に、オフセット値、即ち、(XH-XC)がアドレス値に加算される。これにより、アクセスアドレスを順次ジャンプさせつつ、分割ブロック1300i_bの画像データの書き込みがWRDMAC211bによって順次行われる。
上記のような処理によって、9つの分割ブロック1300a_b~1300i_bの画像がWRDMAC211bによってメモリ112に順次書き込まれる。
なお、本実施形態において行われる読み出し処理は、1つのRDDMAC213によって行われる。本実施形態において行われる読み出し処理は、第1実施形態において上述した読み出し処理と同様であるため、説明を省略する。
次に、DMAC210aとメモリI/F205と追いかけ制御部200aとの間で入出力される信号について図12を用いて説明する。
図12に示すように、DMAC210aに備えられたWRDMAC211a、211bからそれぞれ出力される書き込みリクエスト信号WR_REQ_a、WR_REQ_bが、メモリI/F205に入力される。書き込みリクエスト信号WR_REQ_a、WR_REQ_bは、メモリ112への画像データの書き込みをメモリI/F205に対して要求するための信号である。書き込みリクエスト信号WR_REQ_a、WR_REQ_bは、例えば、以下のようになった際に発行される。即ち、1つのライン320又はその一部の画像データをWRDMAC211a、211bが補正処理部104から受信し、当該1つのライン320又はその一部の画像データをメモリI/F205に送信可能になった際に発行される。
メモリI/F205からパルス状に出力されるアクノリッジ信号WR_ACK_a、WR_ACK_bは、WRDMAC211a、211bにそれぞれ入力される。アクノリッジ信号WR_ACK_a、WR_ACK_bは、例えば、以下のようになった際に出力される。即ち、WRDMAC211a、211bからの書き込みリクエスト信号WR_REQ_a、WR_REQ_bをメモリI/F205が受信し、書き込みデータWR_DATA_a、WR_DATA_bをメモリI/F205が受信可能になった際に出力される。WRDMAC211a、211bは、アクノリッジ信号WR_ACK_a、WR_ACK_bをそれぞれ受信した後、以下のような処理を行う。即ち、WRDMAC211a、211bは、例えば1つのライン320又はその一部の画像データである書き込みデータWR_DATA_a、WR_DATA_bを、メモリI/F205を介してメモリ112に書き込む。書き込みアドレス生成部212a、212bは、アクノリッジ信号WR_ACK_a、WR_ACK_bを受信した後、次の書き込みに備えて、アドレス値のインクリメントを行い、必要に応じて各種オフセット値をアドレス値に加算する。
DMAC210aに備えられたRDDMAC213からの読み出しリクエスト信号RD_REQは、追いかけ制御部200aの読み出し座標計算部202と読み出しリクエストマスク部204とに入力される。読み出しリクエスト信号RD_REQは、メモリ112からの画像データの読み出しをメモリI/F205に要求するための信号である。読み出しリクエスト信号RD_REQは、読み出しリクエストマスク部204を介して、読み出しリクエスト信号RD_REQ_MASK_OUTとしてメモリI/F205に入力される。読み出しリクエスト信号RD_REQは、例えば1つのライン320又はその一部の画像データをRDDMAC213が受信可能になった際に発行される。
メモリI/F205からパルス状に出力されるアクノリッジ信号RD_ACKは、RDDMAC213に入力される。アクノリッジ信号RD_ACKは、例えば、読み出しリクエスト信号RD_REQ_MASK_OUTをメモリI/F205が受信し、読み出しデータRD_DATAをメモリI/F205が送信可能になった際に出力される。RDDMAC213は、アクノリッジ信号RD_ACKを受信した後、例えば1つのライン320又はその一部の画像データである読み出しデータRD_DATAを、メモリI/F205を介してメモリ112から読み出す。RDDMAC213は、メモリ112から読み出した読み出しデータRD_DATAを、現像処理部109a、109bに送信する。読み出しアドレス生成部214は、アクノリッジ信号RD_ACKを受信した後、次の読み出しに備えて、アドレス値のインクリメントを行い、必要に応じて各種オフセット値をアドレス値に加算する。
上述したように、書き込みアドレス生成部212a、212bは、アクノリッジ信号WR_ACKを受信した後、次の書き込みに備えて、アドレス値のインクリメントを行い、必要に応じて各種オフセット値をアドレス値に加算する。オフセット値をアドレス値に加算する際には、書き込みオフセット信号WR_OFFSET1_a~WR_OFFSET3_aがWRDMAC211aにより発行される。また、オフセット値をアドレス値に加算する際には、書き込みオフセット信号WR_OFFSET1_b~WR_OFFSET3_bがWRDMAC211bにより発行される。
WRDMAC211aにより発行される書き込みオフセット信号WR_OFFSET1_a~WR_OFFSET3_aは、追いかけ制御部200の書き込み座標計算部201a及び書き込み座標統合部1201に入力される。WRDMAC211bにより発行される書き込みオフセット信号WR_OFFSET1_b~WR_OFFSET3_bは、追いかけ制御部200aの書き込み座標計算部201b及び書き込み座標統合部1201に入力される。
書き込み座標計算部201aは、書き込みオフセット信号WR_OFFSET1_a~WR_OFFSET3_aに基づいて、以下の処理を行う。即ち、書き込み座標計算部201aは、書き込み処理がどこまで到達したかを示す第1~第3の書き込み座標(HW1_a,VW1_a)~(HW3_a,VW3_a)をそれぞれ算出する。書き込み座標計算部201bは、書き込みオフセット信号WR_OFFSET1_b~WR_OFFSET3_bに基づいて、以下の処理を行う。即ち、書き込み座標計算部201bは、書き込み処理がどこまで到達したかを示す第1~第3の書き込み座標(HW1_b,VW1_b)~(HW3_b,VW3_b)をそれぞれ算出する。第1の書き込み座標(HW1_a,VW1_a)、(HW1_b,VW1_b)は、分割ブロック1300のうちの最後のライン320を除くライン320の最後尾の画素に書き込み処理が到達した際にそれぞれ更新される。第1の書き込み座標(HW1_a,VW1_a)、(HW1_b,VW1_b)は、書き込み処理が完了したライン320のうちの最後のライン320を除くライン320の最後尾の画素の座標を示す。第2の書き込み座標(HW2_a,VW2_a)は、ブロックライン1321の複数の分割ブロック1300*_aのうちの最後を除く分割ブロック1300*_aの最後尾の画素に書き込み処理が達した際に更新される。第2の書き込み座標(HW2_b,VW2_b)は、ブロックライン1321の複数の分割ブロック1300*_bのうちの最後を除く分割ブロック1300*_bの最後尾の画素に書き込み処理が達した際に更新される。第2の書き込み座標(HW2_a,VW2_a)は、書き込み処理が完了した分割ブロック1300*_aのうちの最後の分割ブロックの最後尾の画素の座標を示す。第2の書き込み座標(HW2_b,VW2_b)は、書き込み処理が完了した分割ブロック1300*_bのうちの最後の分割ブロックの最後尾の画素の座標を示す。第3の書き込み座標(HW3_a、VW3_a)、(HW3_b、VW3_b)は、複数のブロックライン1321のうちの最後のブロックライン1321を除くブロックライン1321の最後尾の画素に書き込み処理が達した際に更新される。第3の書き込み座標(HW3_a、VW3_a)、(HW3_b、VW3_b)は、書き込み処理が完了したブロックライン1321の最後尾の画素の座標を示す。なお、WRDMAC211aから発せられる各種の書き込みオフセット信号WR_OFFSET1_a~WR_OFFSET3_aは、書き込みリクエスト信号WR_REQ_aにそれぞれ同期してHighレベルに出力される。また、WRDMAC211bから発せられる各種の書き込みオフセット信号WR_OFFSET1_b~WR_OFFSET3_bは、書き込みリクエスト信号WR_REQ_bにそれぞれ同期してHighレベルに出力される。
このように、書き込み座標計算部201a、201bは、画像に含まれる複数のブロック320のうちの書き込みが完了したライン320の位置を示す書き込み座標を書き込みオフセット信号に基づいて算出する書き込み座標算出手段として機能し得る。書き込み座標計算部201a、201bは、1フレームの画像に含まれる複数のブロック320の書き込みが完了する毎に、書き込み座標を更新する。読み出し座標計算部202は、読み出しの対象となる部分の最後尾を示す読み出し座標を、読み出しオフセット信号及びデータ転送長信号に基づいて算出する読み出し座標算出手段として機能し得る。
上述したように、読み出しアドレス生成部214は、アクノリッジ信号RD_ACKを受信した後、次の読み出しに備えて、アドレス値のインクリメントを行い、必要に応じてオフセット値をアドレス値に加算する。オフセット値をアドレス値に加算する際には、読み出しオフセット信号RD_OFFSET1~RD_OFFSET3がRDDMAC213により発行される。RDDMAC213により発行される読み出しオフセット信号RD_OFFSET1~RD_OFFSET3は、追いかけ制御部200の読み出し座標計算部202に入力される。読み出し座標計算部202は、次に読み出しリクエスト信号RD_REQ_MASK_OUTがHighレベルになった際に読み出し処理の対象となる部分の最後尾の画素の座標を示す読み出し座標(HR,VR)を算出する。読み出し座標計算部202は、読み出しオフセット信号RD_OFFSET1~RD_OFFSET3及びデータ転送長信号RD_TRANSに基づいて、読み出し座標を算出する。
読み出し座標計算部202は、データ転送長信号RD_TRANSによって示されるデータ転送長の分だけHRの値を増加させる。読み出しオフセット信号RD_OFFSET1を受信した場合には、読み出し座標計算部202は、分割ブロック1300の水平方向のサイズ(画素数)の分だけHRの値を減少させるとともに、VRの値を1だけ増加させる。また、読み出しオフセット信号RD_OFFSET2を受信した場合、読み出し座標計算部202は、当該分割ブロック1300に含まれるライン320の数から1を減算した値の分だけVRの値を減少させる。また、読み出しオフセット信号RD_OFFSET3を受信した場合、読み出し座標計算部202は、ブロックライン1321の水平方向のサイズ(画素数)の分だけHRの値を減少させるとともに、VRの値を1だけ増加させる。読み出し座標計算部202は、RDDMAC213から読み出しリクエストマスク部204に読み出しリクエスト信号RD_REQが発せられた際に、読み出し座標(HR、VR)を更新する。
書き込み座標計算部201aによって算出された第1~第3の書き込み座標(HW1_a,VW1_a)~(HW3_a,VW3_a)は、書き込み座標統合部1201に入力される。書き込み座標計算部201bによって算出された第1~第3の書き込み座標(HW1_b,VW1_b)~(HW3_b,VW3_b)は、書き込み座標統合部1201に入力される。書き込み座標統合部1201は、第1の書き込み座標(HW1_a,VW1_a)と第1の書き込み座標(HW1_b,VW1_b)とに基づいて、画像データの書き込みがどこまで完了しているのかを示す第1の書き込み座標(HW1、VW1)を特定する。書き込み座標統合部1201は、第2の書き込み座標(HW2_a,VW2_a)と第2の書き込み座標(HW2_b,VW2_b)とに基づいて、画像データの書き込みがどこまで完了しているのかを示す第2の書き込み座標(HW2、VW2)を特定する。書き込み座標統合部1201は、第3の書き込み座標(HW3_a,VW3_a)と第3の書き込み座標(HW3_b,VW3_b)とに基づいて、画像データの書き込みがどこまで完了しているのかを示す第3の書き込み座標(HW3、VW3)を特定する。
書き込み座標計算部201aによって算出された書き込み座標(HW2_a、VW2_a)と書き込み座標計算部201bによって算出された書き込み座標(HW2_b、VW2_b)とに基づいて、書き込み座標(HW2、VW2)が決定される。書き込み座標(HW2_a、VW2_a)と書き込み座標(HW2_b、VW2_b)とのうちの垂直方向の座標値が小さい方の書き込み座標が、書き込み座標(HW2、VW2)とされる。ただし、書き込み座標(HW2_a、VW2_a)の垂直方向の座標値と、書き込み座標(HW2_b、VW2_b)の垂直方向の座標値とが等しい場合には、以下のように決定される。即ち、書き込み座標(HW2_a、VW2_a)と書き込み座標(HW2_b、VW2_b)とのうちの水平方向の座標値が大きい方の書き込み座標が、書き込み座標(HW2、VW2)とされる。
書き込み座標計算部201aによって算出された書き込み座標(HW3_a、VW3_a)と書き込み座標計算部201bによって算出された書き込み座標(HW3_b、VW3_b)とに基づいて、書き込み座標(HW3、VW3)が決定される。書き込み座標(HW3_a、VW3_a)と書き込み座標(HW3_b、VW3_b)とのうちの垂直方向の座標値が小さい方の書き込み座標が、書き込み座標(HW3、VW3)とされる。ただし、書き込み座標(HW3_a、VW3_a)の垂直方向の座標値と、書き込み座標(HW3_b、VW3_b)の垂直方向の座標値とが等しい場合には、以下のように決定される。即ち、書き込み座標(HW3_a、VW3_a)と書き込み座標(HW3_b、VW3_b)とのうちの水平方向の座標値が大きい方の書き込み座標が、書き込み座標(HW3、VW3)とされる。
書き込み座標計算部201a、201bによってそれぞれ算出された書き込み座標(HW1_a、VW1_a)、(HW1_b、VW1_b)に基づいて、書き込み座標統合部1201によって書き込み座標(HW1、VW1)が決定される。書き込み座標統合部1201は、WRDMAC211a、211bからそれぞれ出力される書き込みオフセット信号WR_OFFSET2_a、WR_OFFSET2_bをそれぞれカウントする。書き込みオフセット信号WR_OFFSET2_aのカウント値と、書き込みオフセット信号WR_OFFSET2_bのカウント値が等しいことは、以下のようなことを意味する。即ち、WRDMAC211aによって書き込みが行われる分割ブロック1300*_aと、WRDMAC211bによって書き込みが行われる分割ブロック1300*_bとが、同一の分割ブロック1300に含まれていることを意味する。従って、書き込みオフセット信号WR_OFFSET2_aのカウント値と、書き込みオフセット信号WR_OFFSET2_bのカウント値が等しい場合には、書き込み座標(HW1、VW1)を以下のように決定する。書き込み座標(HW1_a、VW1_a)と書き込み座標(HW1_b、VW1_b)とのうちの垂直方向の座標値が小さい方の書き込み座標が、書き込み座標(HW1、VW1)とされる。書き込み座標(HW1_a、VW1_a)の垂直方向の座標値と、書き込み座標(HW1_b、VW1_b)の垂直方向の座標値とが等しい場合には、以下のように決定される。即ち、書き込み座標(HW1_a、VW1_a)と書き込み座標(HW1_b、VW1_b)とのうちの水平方向の座標値が大きい方の書き込み座標が、書き込み座標(HW1、VW1)とされる。書き込みオフセット信号WR_OFFSET2_aのカウント値と、書き込みオフセット信号WR_OFFSET2_bのカウント値とが異なることは、以下のようなことを意味する。即ち、WRDMAC211aによって書き込みが行われる分割ブロック1300*_aと、WRDMAC211bによって書き込みが行われる分割ブロック1300*_bとが、異なる分割ブロック1300にそれぞれ含まれていることを意味する。書き込みオフセット信号WR_OFFSET2_aのカウント値が、書き込みオフセット信号WR_OFFSET2_bのカウント値より小さい場合には、書き込み座標(HW1_a、VW1_a)が書き込み座標(HW1、VW1)とされる。一方、書き込みオフセット信号WR_OFFSET2_bのカウント値が、書き込みオフセット信号WR_OFFSET2_aのカウント値より小さい場合には、書き込み座標(HW1_b、VW1_b)が書き込み座標(HW1、VW1)とされる。
WRDMAC211aは、1つのフレームに含まれる複数の分割ブロック1300*_aの全ての画像データのメモリ112への書き込みが完了した際には、書き込み完了信号WR_END_aを書き込み座標統合部1201に出力する。WRDMAC211bは、1つのフレームに含まれる複数の分割ブロック1300*_bの全ての画像データのメモリ112への書き込みが完了した際には、書き込み完了信号WR_END_bを書き込み座標統合部1201に出力する。書き込み座標統合部1201は、書き込み完了信号WR_END_aと書き込み完了信号WR_END_bの両方が入力された場合に、1フレーム分の画像の書き込みが完了したことを示す書き込み完了信号WR_ENDを出力する。
座標比較部203には、書き込み座標統合部1201によって特定される第1~第3の書き込み座標(HW1、VW1)~(HW3、VW3)が入力される。また、座標比較部203には、読み出し座標計算部202によって算出される読み出し座標(HR、VR)が入力される。座標比較部203は、書き込み処理が完了したライン320の位置を把握するための書き込み座標(HW1、VW1)~(HW3、VW3)と、次に読み出し処理の対象となる部分の最後尾の位置を把握するための読み出し座標(HR、VR)とを比較する。書き込み座標(HW1、VW1)~(HW3、VW3)と読み出し座標(HR、VR)とを比較した結果、上記の条件式(1)~(3)のうちのいずれかを満たす場合には、読み出し処理が行われることが好ましい。そこで、条件式(1)~(3)のいずれかを満たす場合には、座標比較部203は、読み出しリクエストマスク部204に対して出力するリクエストマスク信号REQ_MASKをLowレベルにする。リクエストマスク信号REQ_MASKをLowレベルにした場合には、RDDMAC213から発せられる読み出しリクエスト信号RD_REQが読み出しリクエストマスク部204においてマスクされず、読み出し処理が行われる。一方、条件式(1)~(3)のいずれをも満たさない場合には、読み出し処理を行わない。そこで、座標比較部203は、条件式(1)~(3)のいずれをも満たさない場合には、読み出しリクエストマスク部204に対して出力するリクエストマスク信号REQ_MASKをHighレベルにする。
なお、条件式(1)~(3)のいずれかを満たすか否かの判定は、クロック信号CLKの立ち上がりのタイミングにおいて実施される。こうして、リクエストマスク信号REQ_MASKの制御が、座標比較部203によって行われる。
リクエストマスク信号REQ_MASKがLowレベルである場合、読み出しリクエストマスク部204は、メモリI/F205に対して出力する読み出しリクエスト信号RD_REQ_MASK_OUTをHighレベルとする。一方、リクエストマスク信号REQ_MASKがHighレベルである場合、読み出しリクエストマスク部204は、メモリI/F205に対して出力する読み出しリクエスト信号RD_REQ_MASK_OUTをLowレベルとする。
1フレーム分の画像データの書き込み処理が完了した際には、書き込み完了信号WR_ENDが書き込み座標統合部1201から座標比較部203に供給される。座標比較部203は、書き込み完了信号WR_ENDを受信した際には、読み出しリクエスト信号RD_REQのマスクを解除すべく、リクエストマスク信号REQ_MASKをLowレベルとする。1フレーム分の画像データの書き込みが完了した後、RDDMAC213から出力される読み出しリクエスト信号RD_REQは、読み出しリクエストマスク部204によってマスクされることはない。かかる読み出しリクエスト信号RD_REQは、読み出しリクエスト信号RD_REQ_MASK_OUT信号としてメモリI/Fに出力される。なお、RDDMAC213から座標比較部203に供給される読み出し開始信号RD_STARTに基づいて、追いかけ制御のマスク制御が開始される。
追いかけ制御部200によって行われる動作の詳細について図14及び図15を用いて説明する。図14は、書き込み処理と読み出し処理とにおけるブロック分割の態様の例を示す図である。図14は、書き込み処理用のブロック分割の態様と読み出し処理用のブロック分割の態様とが互いに異なっている例を示している。より具体的には、書き込み用のブロック320のサイズと読み出し用のブロック320のサイズとが互いに異なっている。図14は、画像の書き込みを行う処理部(機能ブロック)におけるブロック分割の態様と、画像の読み出しを行う処理部(機能ブロック)におけるブロック分割の態様とが異なる場合に相当する。書き込み処理用のブロックは実線で示されており、読み出し処理用のブロックは破線で示されている。書き込み処理用のブロックの水平方向の分割数が例えば6に設定され、垂直方向の分割数が例えば3に設定されている。即ち、18個の書き込み処理用の分割ブロックWR0_0_A~WR2_2_A、WR0_0_B~WR2_2_Bが設定されている。一方、読み出し処理用のブロックの水平方向の分割数が例えば4、垂直方向の分割数が例えば3に設定されている。即ち、12個の読み出し用の分割ブロックRD0_0~RD3_2が設定されている。
書き込み用の分割ブロックWR0_*_A、WR0_*_B(*は0~2の整数)の水平方向の画素数は、それぞれWXAとする。書き込み用の分割ブロックWR1_*_A、WR1_*_B(*は0~2の整数)の水平方向の画素数は、それぞれWXBとする。書き込み用の分割ブロックWR2_*_A、WR2_*_B(*は0~2の整数)の水平方向の画素数は、それぞれWXCとする。書き込み用の分割ブロックWR0_*_Aの水平方向の画素数WXAと、書き込み用の分割ブロックWR0_*_Bの水平方向の画素数WXAとの和は、WXA′とする。書き込み用の分割ブロックWR1_*_Aの水平方向の画素数WXBと、書き込み用の分割ブロックWR1_*_Bの水平方向の画素数WXBとの和は、WXB′とする。書き込み用の分割ブロックWR2_*_Aの水平方向の画素数WXCと、書き込み用の分割ブロックWR1_*_Bの水平方向の画素数WXCとの和は、WXC′とする。
書き込み用の分割ブロックWR*_0_A、WR*_0_B(*は0~2の整数)のライン数、即ち、垂直方向の画素数は、それぞれWYA=4とする。書き込み用の分割ブロックWR*_1_A、WR*_1_B(*は0~2の整数)のライン数は、それぞれWYB=4とする。書き込み用の分割ブロックWR*_2_A、WR*_2_B(*は0~2の整数)のライン数は、それぞれWYC=6とする。なお、ここでは、説明を簡略化するため、WYA=4、WYB=4、WYC=6とするが、実際には垂直方向のライン数はこれらの値よりも遙かに大きい。
読み出し用の分割ブロックRD0_*、RD1_*、RD2_*、RD3_*(*は0~3の整数)の水平方向の画素数は、それぞれRXA、RXB、RXC、RXDとする。読み出し用の分割ブロックRD*_0、RD*_1、RD*_2(*は0~3)のライン数、即ち、垂直方向の画素数は、それぞれRYA=4、RYB=4,RYC=6とする。なお、ここでは、説明を簡略化するため、RYA=4、RYB=4、RYC=6とするが、実際には垂直方向のライン数はこれらの値よりも遙かに大きい。ただし、各分割ブロックの水平方向における画素数は、以下の条件(12)~(14)を満たすものとする。
RXA<WXA′ ・・・(12)
(RXA+RXB)<(WXA′+WXB′) ・・・(13)
(RXA+RXB+RXC)<(WXA′+WXB′+WXC′) ・・・(14)
図15は、メモリ制御部120aの動作を示すタイミングチャートである。図15には、書き込み用の分割ブロックWR0_0_A~WR2_0_A、WR0_0_B~WR2_0_Bの書き込み処理が行われる期間(書き込み期間)が示されている。また、図15には、読み出し用の分割ブロックRD0_0~RD3_0の読み出し処理が行われる期間(読み出し期間)が示されている。ここでは、各分割ブロックWR0_0_A~WR2_0_A、WR0_0_B~WR2_0_B、RD0_0~RD3_0の水平方向のサイズが、1回のアクセスで転送可能なデータ長以下である場合を例に説明する。説明を簡略化すべく、1回のリクエストで1ライン分のデータが転送される場合を例に説明する。
まず、1フレームの画像の書き込み処理や読み出し処理を開始する前に、書き込み座標計算部201a、201b及び読み出し座標計算部202において初期化が行われる。即ち、書き込み座標計算部201aにおいて、第1の書き込み座標(HW1_a,VW1_a)、第2の書き込み座標(HW2_a,VW2_a)及び第3の書き込み座標(HW3_a,VW3_a)が(0,1)に初期化される。書き込み座標計算部201bにおいて、第1の書き込み座標(HW1_b,VW1_b)、第2の書き込み座標(HW2_b,VW2_b)及び第3の書き込み座標(HW3_b,VW3_b)が(0,1)に初期化される。読み出し座標計算部202において、読み出し座標(HR、VR)が(0,1)に初期化される。そして、書き込み用の分割ブロックWR0_0_Aの書き込みと、書き込み用の分割ブロックWR0_0_Bの書き込みと、読み出し用の分割ブロックRD0_0の読み出しとが開始される。
まず、初期の段階においては、書き込み用の分割ブロックWR0_0_A~WR2_2_A、WR0_0_B~WR2_2_Bのいずれのライン320の画像データもメモリ112に書き込まれていない。従って、この段階では、以下に示すように、書き込み用の分割ブロックWR0_0の第1番目のライン320の画像データの読み出しは行われない。即ち、まず、RDDMAC213から出力される読み出しリクエスト信号RD_REQがHighレベルに設定される。また、RDDMAC213から出力される第1の読み出しオフセット信号RD_OFFSET1が、読み出しリクエスト信号RD_REQに同期してHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に出力される読み出し座標更新信号の立ち下がりの時刻tr0において、読み出し座標(HR,VR)が読み出し座標計算部202によって更新される。読み出し用の分割ブロックRD0_0の第1番目のライン320の最後尾の座標は(RXA,1)であるため、読み出し座標(HR,VR)は(RXA,1)に更新される。この段階では、書き込み座標(HW1,VW1)~(HW3,VW3)はいずれも(0,1)である。条件式(1)~(3)のいずれをも満たさないため、座標比較部203から出力されるリクエストマスク信号REQ_MASKはHighレベルである。リクエストマスク信号REQ_MASKがHighレベルであるため、読み出しリクエストマスク部204からメモリI/F205に出力される読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、書き込み用の分割ブロックWR0_0の第1番目のライン320の画像データのメモリ112からの読み出しは行われない。
一方、書き込み用の分割ブロックWR0_0_Aの第1番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、WRDMAC211aから出力される書き込みリクエスト信号WR_REQ_aがHighレベルに設定される。WRDMAC211aから出力される第1の書き込みオフセット信号WR_OFFSET1_aが、書き込みリクエスト信号WR_REQ_aに同期してHighレベルとなる。メモリI/F205からWRDMAC211aにアクノリッジ信号WR_ACK_aが返信され、書き込み用の分割ブロックWR0_0_Aの第1番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_aの立ち下がりに同期して書き込みリクエスト信号WR_REQ_aがLowレベルとなる。また、書き込みリクエスト信号WR_REQ_aの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1_aがLowレベルとなる。アクノリッジ信号WR_ACK_aに同期する第1の書き込み座標更新信号の立ち下がりの時刻において、第1の書き込み座標(HW1_a,VW1_a)が書き込み座標計算部201aによって更新される。書き込み用の分割ブロックWR0_0_Aの第1番目のライン320の最後尾の座標は(WXA,1)であるため、第1の書き込み座標(HW1_a,VW1_a)は(WXA,1)に更新される。
また、書き込み用の分割ブロックWR0_0_Bの第1番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、WRDMAC211bから出力される書き込みリクエスト信号WR_REQ_bがHighレベルに設定される。WRDMAC211bから出力される第1の書き込みオフセット信号WR_OFFSET1_bが、書き込みリクエスト信号WR_REQ_bに同期してHighレベルとなる。メモリI/F205からWRDMAC211bにアクノリッジ信号WR_ACK_bが返信され、書き込み用の分割ブロックWR0_0_Bの第1番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_bの立ち下がりに同期して書き込みリクエスト信号WR_REQ_bがLowレベルとなる。また、書き込みリクエスト信号WR_REQ_bの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1_bがLowレベルとなる。アクノリッジ信号WR_ACK_bに同期する第1の書き込み座標更新信号の立ち下がりの時刻tw0において、第1の書き込み座標(HW1_b,VW1_b)が書き込み座標計算部201bによって更新される。書き込み用の分割ブロックWR0_0_Bの第1番目のライン320の最後尾の座標は(WXA′,1)であるため、第1の書き込み座標(HW1_b,VW1_b)は(WXA′,1)に更新される。
書き込み座標計算部201a、201bによって算出された書き込み座標(HW1_a、VW1_a)、(HW1_b、VW1_b)に基づいて、書き込み座標(HW1、VW1)が書き込み座標統合部1201によって決定される。書き込みオフセット信号WR_OFFSET2_aのカウント値は0であり、書き込みオフセット信号WR_OFFSET2_bのカウント値も0であり、これらのカウント値は互いに等しい。また、書き込み座標(HW1_a、VW1_a)の垂直方向の座標値は1であり、書き込み座標(HW1_b、VW1_b)の垂直方向の座標値も1であり、これらの垂直方向の座標値は互いに等しい。従って、書き込み座標統合部1201は、書き込み座標(HW1、VW1)を(WXA′,1)とする。
この段階では、条件式(1)を満たすため、座標比較部203から発せられるリクエストマスク信号REQ_MASKはLowレベルとなる。リクエストマスク信号REQ_MASKがLowレベルとなるため、読み出しリクエストマスク部204からメモリI/F205に出力される読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。この後、メモリI/F205からRDDMAC213にアクノリッジ信号RD_ACKがパルス状に返信され、読み出し用の分割ブロックRD0_0の第1番目のライン320の画像データのメモリ112からの読み出しが行われる。アクノリッジ信号RD_ACKの立ち下がりに同期して、読み出しリクエスト信号RD_REQ、RD_REQ_MASK_OUTがLowレベルとなる。また、読み出しリクエスト信号RD_REQの立ち下がりに同期して第1の読み出しオフセット信号RD_OFFSET1がLowレベルとなる。
次に、読み出しリクエスト信号RD_REQがHighレベルに設定される。読み出しリクエスト信号RD_REQに同期して、第1の読み出しオフセット信号RD_OFFSET1がHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に発せられる読み出し座標更新信号の立ち下がりの時刻tr1において、読み出し座標(HR,VR)が読み出し座標計算部202によって更新される。読み出し用の分割ブロックRD0_0の第1番目のライン320の画像データのメモリ112からの読み出しは完了しているため、次の読み出し処理において読み出し対象となるのは、読み出し用の分割ブロックRD0_0の第2番目のライン320である。読み出し用の分割ブロックRD0_0の第2番目のライン320の最後尾の座標は(RXA,2)である。このため、読み出し座標(HR,VR)は(RXA,2)に更新される。この段階では、第1の書き込み座標(HW1,VW1)は(WXA′,1)であり、第2の書き込み座標(HW2,VW2)と第3の書き込み座標(HW3,VW3)はいずれも(0,1)である。条件式(1)~(3)のいずれをも満たさないため、座標比較部203から発せられるリクエストマスク信号REQ_MASKはHighレベルである。リクエストマスク信号REQ_MASKがHighレベルであるため、読み出しリクエストマスク部204からメモリI/F205に出力される読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、この段階では、書き込み用の分割ブロックWR0_0の第2番目のライン320の画像データはメモリ112から読み出されない。
一方、書き込み用の分割ブロックWR0_0_Aの第2番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQ_aがHighレベルに設定される。書き込みリクエスト信号WR_REQ_aに同期して、第1の書き込みオフセット信号WR_OFFSET1_aがHighレベルとなる。この後、アクノリッジ信号WR_ACK_aが返信され、書き込み用の分割ブロックWR0_0_Aの第2番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_aの立ち下がりに同期して書き込みリクエスト信号WR_REQ_aがLowレベルとなる。書き込みリクエスト信号WR_REQ_aの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1_aがLowレベルとなる。アクノリッジ信号WR_ACK_aに同期する第1の書き込み座標更新信号の立ち下がりの時刻において、第1の書き込み座標(HW1_a,VW1_a)が更新される。書き込み用の分割ブロックWR0_0_Aの第2番目のライン320の最後尾の座標は(WXA,2)であるため、第1の書き込み座標(HW1_a,VW1_a)は(WXA,2)に更新される。
また、書き込み用の分割ブロックWR0_0_Bの第2番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQ_bがHighレベルに設定される。書き込みリクエスト信号WR_REQ_bに同期して、第1の書き込みオフセット信号WR_OFFSET1_bがHighレベルとなる。この後、アクノリッジ信号WR_ACK_bが返信され、書き込み用の分割ブロックWR0_0_Bの第2番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_bの立ち下がりに同期して書き込みリクエスト信号WR_REQ_bがLowレベルとなる。書き込みリクエスト信号WR_REQ_bの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1_bがLowレベルとなる。アクノリッジ信号WR_ACK_bに同期する第1の書き込み座標更新信号の立ち下がりの時刻tw1において、第1の書き込み座標(HW1_b,VW1_b)が更新される。書き込み用の分割ブロックWR0_0_Bの第2番目のライン320の最後尾の座標は(WXA′,2)であるため、第1の書き込み座標(HW1_b,VW1_b)は(WXA′,2)に更新される。
書き込み座標計算部201a、201bによって算出された書き込み座標(HW1_a、VW1_a)、(HW1_b、VW1_b)に基づいて、書き込み座標統合部1201によって書き込み座標(HW1、VW1)が決定される。書き込みオフセット信号WR_OFFSET2_aのカウント値は0であり、書き込みオフセット信号WR_OFFSET2_bのカウント値も0であり、これらのカウント値は互いに等しい。また、書き込み座標(HW1_a、VW1_a)の垂直方向の座標値は2であり、書き込み座標(HW1_b、VW1_b)の垂直方向の座標値も2であり、これらの垂直方向の座標値は互いに等しい。従って、書き込み座標統合部1201は、書き込み座標(HW1、VW1)を(WXA′,2)とする。
この段階では、条件式(1)を満たすため、座標比較部203から発せられるリクエストマスク信号REQ_MASKがLowレベルとなり、読み出しリクエスト信号RD_REQ_MASK_OUTがHighレベルとなる。この後、アクノリッジ信号RD_ACKがRDDMAC213に返信され、読み出し用の分割ブロックRD0_0の第2番目のライン320の画像データのメモリ112からの読み出しが行われる。アクノリッジ信号RD_ACKの立ち下がりに同期して、読み出しリクエスト信号RD_REQ、RD_REQ_MASK_OUTがLowレベルとなる。また、読み出しリクエスト信号RD_REQの立ち下がりに同期して第1の読み出しオフセット信号RD_OFFSET1がLowレベルとなる。
次に、読み出しリクエスト信号RD_REQがHighレベルに設定される。読み出しリクエスト信号RD_REQに同期して、第1の読み出しオフセット信号RD_OFFSET1がHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に発せられる読み出し座標更新信号の立ち下がりの時刻tr2において、読み出し座標(HR,VR)が読み出し座標計算部202によって更新される。読み出し用の分割ブロックRD0_0の第2番目のライン320の画像データのメモリ112からの読み出しは完了しているため、次の読み出し処理において読み出し対象となるのは、読み出し用の分割ブロックRD0_0の第3番目のライン320である。読み出し用の分割ブロックRD0_0の第3番目のライン320の最後尾の座標は(RXA,3)である。このため、読み出し座標(HR,VR)は(RXA,3)に更新される。この段階では、第1の書き込み座標(HW1,VW1)は(WXA′,2)であり、第2の書き込み座標(HW2,VW2)と第3の書き込み座標(HW3,VW3)はいずれも(0,1)である。条件式(1)~(3)のいずれをも満たさないため、座標比較部203から発せられるリクエストマスク信号REQ_MASKはHighレベルである。リクエストマスク信号REQ_MASKがHighレベルであるため、読み出しリクエストマスク部204からメモリI/F205に出力される読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、この段階では、書き込み用の分割ブロックWR0_0の第3番目のライン320の画像データはメモリ112から読み出されない。
一方、書き込み用の分割ブロックWR0_0_Aの第3番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQ_aがHighレベルに設定される。書き込みリクエスト信号WR_REQ_aに同期して、第1の書き込みオフセット信号WR_OFFSET1_aがHighレベルとなる。この後、アクノリッジ信号WR_ACK_aが返信され、書き込み用の分割ブロックWR0_0_Aの第3番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_aの立ち下がりに同期して書き込みリクエスト信号WR_REQ_aがLowレベルとなる。書き込みリクエスト信号WR_REQ_aの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1_aがLowレベルとなる。アクノリッジ信号WR_ACK_aに同期する第1の書き込み座標更新信号の立ち下がりの時刻において、第1の書き込み座標(HW1_a,VW1_a)が更新される。書き込み用の分割ブロックWR0_0_Aの第3番目のライン320の最後尾の座標は(WXA,3)であるため、第1の書き込み座標(HW1_a,VW1_a)は(WXA,3)に更新される。
また、書き込み用の分割ブロックWR0_0_Bの第3番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQ_bがHighレベルに設定される。書き込みリクエスト信号WR_REQ_bに同期して、第1の書き込みオフセット信号WR_OFFSET1_bがHighレベルとなる。この後、アクノリッジ信号WR_ACK_bが返信され、書き込み用の分割ブロックWR0_0_Bの第3番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_bの立ち下がりに同期して書き込みリクエスト信号WR_REQ_bがLowレベルとなる。書き込みリクエスト信号WR_REQ_bの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1_bがLowレベルとなる。アクノリッジ信号WR_ACK_bに同期する第1の書き込み座標更新信号の立ち下がりの時刻tw2において、第1の書き込み座標(HW1_b,VW1_b)が更新される。書き込み用の分割ブロックWR0_0_Bの第3番目のライン320の最後尾の座標は(WXA′,3)であるため、第1の書き込み座標(HW1_b,VW1_b)は(WXA′,3)に更新される。
書き込み座標計算部201a、201bによって算出された書き込み座標(HW1_a、VW1_a)、(HW1_b、VW1_b)とに基づいて、書き込み座標統合部1201によって書き込み座標(HW1、VW1)が決定される。書き込みオフセット信号WR_OFFSET2_aのカウント値は0であり、書き込みオフセット信号WR_OFFSET2_bのカウント値も0であり、これらのカウント値は互いに等しい。また、書き込み座標(HW1_a、VW1_a)の垂直方向の座標値は3であり、書き込み座標(HW1_b、VW1_b)の垂直方向の座標値も3であり、これらの垂直方向の座標値は互いに等しい。従って、書き込み座標統合部1201は、書き込み座標(HW1、VW1)を(WXA′,3)とする。
この段階では、条件式(1)を満たすため、座標比較部203から発せられるリクエストマスク信号REQ_MASKがLowレベルとなり、読み出しリクエスト信号RD_REQ_MASK_OUTがHighレベルとなる。この後、アクノリッジ信号RD_ACKがRDDMAC213に返信され、読み出し用の分割ブロックRD0_0の第3番目のライン320の画像データのメモリ112からの読み出しが行われる。アクノリッジ信号RD_ACKの立ち下がりに同期して、読み出しリクエスト信号RD_REQ、RD_REQ_MASK_OUTがLowレベルとなる。また、読み出しリクエスト信号RD_REQの立ち下がりに同期して第1の読み出しオフセット信号RD_OFFSET1がLowレベルとなる。
次に、読み出しリクエスト信号RD_REQがHighレベルに設定される。読み出しリクエスト信号RD_REQに同期して第2の読み出しオフセット信号RD_OFFSET2がHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に発せられる読み出し座標更新信号の立ち下がりの時刻tr3において、読み出し座標(HR,VR)が更新される。読み出し用の分割ブロックRD0_0の第3番目のライン320の画像データの読み出しは完了しているため、次の読み出し処理において読み出し対象とされるライン320は、読み出し用の分割ブロックRD0_0の第4番目のライン320である。読み出し用の分割ブロックRD0_0の第4番目のライン320の最後尾の座標は(RXA,4)である。このため、読み出し座標(HR,VR)は(RXA,4)に更新される。この段階では、第1の書き込み座標(HW1,VW1)は(WXA′,3)であり、第2の書き込み座標(HW2,VW2)と第3の書き込み座標(HW3,VW3)はいずれも(0,1)である。上記の条件式(1)~(3)のいずれをも満たさないため、リクエストマスク信号REQ_MASKはHighレベルであり、読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、この段階では、書き込み用の分割ブロックWR0_0の第4番目のライン320の画像データはメモリ112から読み出されない。
一方、書き込み用の分割ブロックWR0_0_Aの第4番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQ_aがHighレベルに設定される。書き込みリクエスト信号WR_REQ_aに同期して第2の書き込みオフセット信号WR_OFFSET2_aがHighレベルとなる。メモリI/F205からWRDMAC211aにアクノリッジ信号WR_ACK_aが返信され、書き込み用の分割ブロックWR0_0_Aの第4番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_aの立ち下がりに同期して書き込みリクエスト信号WR_REQ_aがLowレベルとなる。書き込みリクエスト信号WR_REQ_aの立ち下がりに同期して第2の書き込みオフセット信号WR_OFFSET2_aがLowレベルとなる。アクノリッジ信号WR_ACK_aに同期する第2の書き込み座標更新信号の立ち下がりの時刻において、第2の書き込み座標(HW2_a,VW2_a)が更新される。書き込み用の分割ブロックWR0_0_Aの第4番目のライン320の最後尾の座標は(WXA,4)であるため、第2の書き込み座標(HW2_a,VW2_a)は(WXA,4)に更新される。
また、書き込み用の分割ブロックWR0_0_Bの第4番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQ_bがHighレベルに設定される。書き込みリクエスト信号WR_REQ_bに同期して、第2の書き込みオフセット信号WR_OFFSET2_bがHighレベルとなる。この後、アクノリッジ信号WR_ACK_bが返信され、書き込み用の分割ブロックWR0_0_Bの第4番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_bの立ち下がりに同期して書き込みリクエスト信号WR_REQ_bがLowレベルとなる。書き込みリクエスト信号WR_REQ_bの立ち下がりに同期して第2の書き込みオフセット信号WR_OFFSET2_bがLowレベルとなる。アクノリッジ信号WR_ACK_bに同期する第2の書き込み座標更新信号の立ち下がりの時刻tw3において、第2の書き込み座標(HW2_b,VW2_b)が更新される。書き込み用の分割ブロックWR0_0_Bの第4番目のライン320の最後尾の座標は(WXA′,4)であるため、第2の書き込み座標(HW2_b,VW2_b)は(WXA′,4)に更新される。
書き込み座標計算部201a、201bによって算出された書き込み座標(HW2_a、VW2_a)、(HW2_b、VW2_b)に基づいて、書き込み座標統合部1201によって書き込み座標(HW2、VW2)が決定される。書き込み座標(HW2_a、VW2_a)の垂直方向の座標値は4であり、書き込み座標(HW2_b、VW2_b)の垂直方向の座標値も4であり、これらの垂直方向の座標値は互いに等しい。従って、書き込み座標統合部1201は、書き込み座標(HW2、VW2)を(WXA′,4)とする。
この段階では、条件式(2)を満たすため、座標比較部203からのリクエストマスク信号REQ_MASKがLowレベルとなり、読み出しリクエスト信号RD_REQ_MASK_OUTがHighレベルとなる。この後、アクノリッジ信号RD_ACKがRDDMAC213に返信され、読み出し用の分割ブロックRD0_0の第4番目のライン320の画像データのメモリ112からの読み出しが行われる。アクノリッジ信号RD_ACKの立ち下がりに同期して、読み出しリクエスト信号RD_REQ、RD_REQ_MASK_OUTがLowレベルとなる。また、読み出しリクエスト信号RD_REQの立ち下がりに同期して第2の読み出しオフセット信号RD_OFFSET2がLowレベルとなる。
次に、読み出しリクエスト信号RD_REQがHighレベルに設定される。読み出しリクエスト信号RD_REQに同期して、第1の読み出しオフセット信号RD_OFFSET1がHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に発せられる読み出し座標更新信号の立ち下がりの時刻tr4において、読み出し座標(HR,VR)が更新される。読み出し用の分割ブロックRD0_0の全てのライン320の画像データのメモリ112からの読み出しが完了しているため、次の読み出し処理において読み出し対象となるのは、読み出し用の分割ブロックRD1_0の第1番目のライン320である。読み出し用の分割ブロックRD1_0の第1番目のライン320の最後尾の座標は(RXA+RXB,1)である。このため、読み出し座標(HR,VR)は(RXA+RXB,1)に更新される。この段階では、第1の書き込み座標(HW1,VW1)が(WXA′,3)であり、(HW2,VW2)が(WXA′,4)であり、(HW3,VW3)が(0,1)である。条件式(1)~(3)のいずれをも満たさないため、リクエストマスク信号REQ_MASKはHighレベルであり、読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、この段階では、書き込み用の分割ブロックWR1_0の第1番目のライン320の画像データのメモリ112からの読み出しは行われない。
一方、書き込み用の分割ブロックWR1_0_Aの第1番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQ_aがHighレベルに設定される。書き込みリクエスト信号WR_REQ_aに同期して第1の書き込みオフセット信号WR_OFFSET1_aがHighレベルとなる。メモリI/F205からWRDMAC211aにアクノリッジ信号WR_ACK_aが返信され、書き込み用の分割ブロックWR1_0_Aの第1番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_aの立ち下がりに同期して書き込みリクエスト信号WR_REQ_aがLowレベルとなる。書き込みリクエスト信号WR_REQ_aの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1_aがLowレベルとなる。アクノリッジ信号WR_ACK_aに同期する第1の書き込み座標更新信号の立ち下がりの時刻において、第1の書き込み座標(HW1_a,VW1_a)が更新される。書き込み用の分割ブロックWR1_0_Aの第1番目のライン320の最後尾の座標は(WXA′+WXB,1)であるため、第1の書き込み座標(HW1_a,VW1_a)は(WXA′+WXB,1)に更新される。
また、書き込み用の分割ブロックWR1_0_Bの第1番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQ_bがHighレベルに設定される。書き込みリクエスト信号WR_REQ_bに同期して第1の書き込みオフセット信号WR_OFFSET1_bがHighレベルとなる。メモリI/F205からWRDMAC211aにアクノリッジ信号WR_ACK_bが返信され、書き込み用の分割ブロックWR1_0_bの第1番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_bの立ち下がりに同期して書き込みリクエスト信号WR_REQ_bがLowレベルとなる。書き込みリクエスト信号WR_REQ_bの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1_bがLowレベルとなる。アクノリッジ信号WR_ACK_bに同期する第1の書き込み座標更新信号の立ち下がりの時刻tw4において、第1の書き込み座標(HW1_b,VW1_b)が更新される。書き込み用の分割ブロックWR1_0_Bの第1番目のライン320の最後尾の座標は(WXA′+WXB′,1)であるため、第1の書き込み座標(HW1_b,VW1_b)は(WXA′+WXB′,1)に更新される。
書き込み座標計算部201a、201bによって算出された書き込み座標(HW1_a、VW1_a)、(HW1_b、VW1_b)に基づいて、書き込み座標統合部1201によって書き込み座標(HW1、VW1)が決定される。書き込みオフセット信号WR_OFFSET2_aのカウント値は1であり、書き込みオフセット信号WR_OFFSET2_bのカウント値も1であり、これらのカウント値は互いに等しい。また、書き込み座標(HW1_a、VW1_a)の垂直方向の座標値は1であり、書き込み座標(HW1_b、VW1_b)の垂直方向の座標値も1であり、これらの垂直方向の座標値は互いに等しい。従って、書き込み座標統合部1201は、書き込み座標(HW1、VW1)を(WXA′+WXB′,1)とする。
この段階では、読み出し座標(HR,VR)は(RXA+RXB,1)であり、上記の条件式(1)を満たす。このため、座標比較部203から発せられるリクエストマスク信号REQ_MASKはLowレベルとなり、読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。この後、アクノリッジ信号RD_ACKがRDDMAC213に返信され、読み出し用の分割ブロックRD1_0の第1番目のライン320の画像データのメモリ112からの読み出しが行われる。アクノリッジ信号RD_ACKの立ち下がりに同期して、読み出しリクエスト信号RD_REQ、RD_REQ_MASK_OUTがLowレベルとなる。また、読み出しリクエスト信号RD_REQの立ち下がりに同期して第1の読み出しオフセット信号RD_OFFSET1がLowレベルとなる。
次に、読み出しリクエスト信号RD_REQがHighレベルに設定される。読み出しリクエスト信号RD_REQに同期して第1の読み出しオフセット信号RD_OFFSET1がHighレベルとなる。読み出しリクエスト信号RD_REQの立ち上がりに同期してパルス状に発せられる読み出し座標更新信号の立ち下がりの時刻tr5において、読み出し座標(HR,VR)が更新される。読み出し用の分割ブロックRD1_0の第1番目のライン320の画像データの読み出しは完了しているため、次の読み出し処理において読み出し対象とされるライン320は、読み出し用の分割ブロックRD1_0の第2番目のライン320である。読み出し用の分割ブロックRD1_0の第2番目のライン320の最後尾の座標は(RXA+RXB,2)である。このため、読み出し座標(HR,VR)は(RXA+RXB,2)に更新される。この段階では、第1の書き込み座標(HW1,VW1)は(WXA′+WXB′,1)であり、第2の書き込み座標(HW2,VW2)は(WXA,4)であり、第3の書き込み座標(HW3,VW3)は(0,1)である。条件式(1)~(3)のいずれをも満たさないため、リクエストマスク信号REQ_MASKはHighレベルであり、読み出しリクエスト信号RD_REQ_MASK_OUTはLowレベルである。従って、この段階では、書き込み用の分割ブロックWR1_0の第2番目のライン320の画像データはメモリ112から読み出されない。
一方、書き込み用の分割ブロックWR1_0_Aの第2番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQ_aがHighレベルに設定される。書き込みリクエスト信号WR_REQ_aに同期して第1の書き込みオフセット信号WR_OFFSET1_aがHighレベルとなる。メモリI/F205からWRDMAC211にアクノリッジ信号WR_ACK_aが返信され、書き込み用の分割ブロックWR1_0_Aの第2番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_aの立ち下がりに同期して書き込みリクエスト信号WR_REQ_aがLowレベルとなる。書き込みリクエスト信号WR_REQ_aの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1_aがLowレベルとなる。アクノリッジ信号WR_ACK_aに同期する第1の書き込み座標更新信号の立ち下がりの時刻tw5において、第1の書き込み座標(HW1_a,VW1_a)が書き込み座標計算部201aによって更新される。書き込み用の分割ブロックWR1_0_Aの第2番目のライン320の最後尾の座標は(WXA′+WXB,2)であるため、第1の書き込み座標(HW1_a,VW1_a)は(WXA′+WXB,2)に更新される。
また、書き込み用の分割ブロックWR1_0_Bの第2番目のライン320の画像データのメモリ112への書き込みが以下のように行われる。即ち、書き込みリクエスト信号WR_REQ_bがHighレベルに設定される。書き込みリクエスト信号WR_REQ_bに同期して第1の書き込みオフセット信号WR_OFFSET1_bがHighレベルとなる。メモリI/F205からWRDMAC211にアクノリッジ信号WR_ACK_bが返信され、書き込み用の分割ブロックWR1_0_Bの第2番目のライン320の画像データのメモリ112への書き込みが行われる。アクノリッジ信号WR_ACK_bの立ち下がりに同期して書き込みリクエスト信号WR_REQ_bがLowレベルとなる。書き込みリクエスト信号WR_REQ_bの立ち下がりに同期して第1の書き込みオフセット信号WR_OFFSET1_bがLowレベルとなる。アクノリッジ信号WR_ACK_bに同期する第1の書き込み座標更新信号の立ち下がりの時刻において、第1の書き込み座標(HW1_b,VW1_b)が書き込み座標計算部201bによって更新される。書き込み用の分割ブロックWR1_0_Bの第2番目のライン320の最後尾の座標は(WXA′+WXB′,2)であるため、第1の書き込み座標(HW1_b,VW1_b)は(WXA′+WXB′,2)に更新される。
書き込み座標計算部201a、201bによって算出された書き込み座標(HW1_a、VW1_a)、(HW1_b、VW1_b)に基づいて、書き込み座標統合部1201によって書き込み座標(HW1、VW1)が決定される。書き込みオフセット信号WR_OFFSET2_aのカウント値は1であり、書き込みオフセット信号WR_OFFSET2_bのカウント値も1であり、これらのカウント値は互いに等しい。また、書き込み座標(HW1_a、VW1_a)の垂直方向の座標値は2であり、書き込み座標(HW1_b、VW1_b)の垂直方向の座標値も2であり、これらの垂直方向の座標値は互いに等しい。従って、書き込み座標統合部1201は、書き込み座標(HW1、VW1)を(WXA′+WXB′,2)とする。
書き込み用の分割ブロックWR1_0_A、WR1_0_Bについてのこの後の書き込み処理は、書き込み用の分割ブロックWR0_0_A、WR0_0_Bについての上述した書き込み処理と同様であるため、説明を省略する。なお、時刻tw6においては、第1の書き込み座標(HW1、VW1)が(WXA′+WXB′,3)に更新され、時刻tw7においては第2の書き込み座標(HW2、VW2)が(WXA′+WXB′,4)に更新される。
また、読み出し用の分割ブロックRD1_0、RD2_0についてのこの後の読み出し処理は、読み出し用の分割ブロックRD0_0についての上述した読み出し処理と同様であるため、説明を省略する。なお、時刻tr6、tr7、tr8においては、読み出し座標(HR、VR)が、(RXA+RXB,3)、(RXA+RXB,4)、(RXA+RXB+RXC,1)にそれぞれ更新される。時刻tr9、tr10、tr11においては、読み出し座標(HR、VR)が、(RXA+RXB+RXC,2)、(RXA+RXB+RXC,3)、(RXA+RXB+RXC,4)に更新される。
書き込み用の分割ブロックWR2_0_A、WR2_0_Bについての書き込み処理も、書き込み用の分割ブロックWR0_0_A、WR0_0_Bについての上述した書き込み処理と同様であるため、説明を省略する。なお、時刻tw8、tw9、tw10においては、第1の書き込み座標(HW1、VW1)が、(WXA′+WXB′+WXC′,1)、(WXA′+WXB′+WXC′,2)、(WXA′+WXB′+WXC′,3)にそれぞれ更新される。また、時刻tw11において、第3の書き込み座標(HW3,VW3)が(WXA′+WXB′+WXC′,4)に更新される。
読み出し用の分割ブロックRD3_0についての読み出し処理においては、時刻tr12において、読み出し座標(HR、VR)が(RXA+RXB+RXC+RXD,1)に更新される。第1の書き込み座標(HW1、VW1)は(WXA′+WXB′+WXC′,4)であり、条件式(1)を満たす。また、第3の書き込み座標(HW3、VW3)は(WXA′+WXB′+WXC′,4)であり、条件式(3)を満たす。このため、リクエストマスク信号REQ_MASKはLowレベル、読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。従って、読み出し用の分割ブロックRD3_0の第1番目のライン320からの画像データの読み出しが行われる。時刻tr13においては、読み出し座標(HR、VR)が(RXA+RXB+RXC+RXD,2)に更新される。第1の書き込み座標(HW1、VW1)は(WXA′+WXB′+WXC′,4)であり、条件式(1)を満たす。また、第3の書き込み座標(HW3、VW3)は(WXA+WXB+WXC,4)であり、条件式(3)を満たす。このため、リクエストマスク信号REQ_MASKはLowレベル、読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。従って、読み出し用の分割ブロックRD3_0の第2番目のライン320からの画像データの読み出しが行われる。時刻tr14においては、読み出し座標(HR、VR)が(RXA+RXB+RXC+RXD,3)に更新される。第1の書き込み座標(HW1、VW1)は(WXA′+WXB′+WXC′,4)であり、上記の条件式(1)を満たす。また、第3の書き込み座標(HW3、VW3)が(WXA+WXB+WXC,4)であり、条件式(3)を満たす。このため、リクエストマスク信号REQ_MASKはLowレベル、読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。従って、読み出し用の分割ブロックRD3_0の第3番目のライン320からの画像データの読み出しが行われる。時刻tr15においては、読み出し座標(HR、VR)が(RXA+RXB+RXC+RXD,4)に更新される。第1の書き込み座標(HW1、VW1)は(WXA′+WXB′+WXC′,4)であり、上記の条件式(1)を満たす。また、第3の書き込み座標(HW3、VW3)は(WXA+WXB+WXC,4)であり、条件式(3)を満たす。このため、リクエストマスク信号REQ_MASKはLowレベル、読み出しリクエスト信号RD_REQ_MASK_OUTはHighレベルとなる。従って、読み出し用の分割ブロックRD3_0の第4番目のライン320からの画像データの読み出しが行われる。
書き込み用の分割ブロックWR0_1~WR2_2や読み出し用の分割ブロックRD0_1~RD3_2についても、上記と同様に書き込み処理や読み出し処理が行われる。
なお、図14に付されたドットは、分割ブロックWR2_1_Aの第3番目のライン320まで書き込み処理が完了するとともに、分割ブロックWR1_1_Bの第2番目のライン320まで書き込みが完了した状態を示している。この状態においては、第1の書き込み座標(HW1、VW1)は(WXA′+WXB′、6)であり、第2の書き込み座標(HW2、VW2)は(WXA′,8)であり、第3の書き込み座標(HW3、VW3)は(WXA′+WXB′+WXC′,4)である。また、読み出し座標(HR、VR)は(RXA+RXB、6)である。この状態では、読み出し用の分割ブロックRD1_1の第2番目のライン320までの画像データの読み出しを行うことが可能である。
WRDMAC211a、211bは、書き込み用の分割ブロックWR2_2_A、WR2_2_Bについての書き込み処理がそれぞれ完了した際には、上述したように、書き込み完了信号WR_END_a、WR_END_bをそれぞれHighレベルとする。書き込み座標統合部1201は、書き込み完了信号WR_END_aと書き込み完了信号WR_END_bの両方が入力された場合に、1フレーム分の画像の書き込みが完了したことを示す書き込み完了信号WR_ENDを出力する。座標比較部203は、書き込み完了信号WR_ENDがHighレベルとなった際には、条件式(1)~(3)に基づく座標の比較を停止して、リクエストマスク信号REQ_MASKをLowレベルとする。これにより、書き込み用の分割ブロックWR2_2についての書き込み処理が完了した後においては、RDDMAC213から出力される読み出しリクエスト信号RD_REQが、読み出しリクエストマスク部204によってマスクされなくなる。従って、書き込み用の分割ブロックWR2_2についての書き込み処理が完了した後においては、読み出し用の分割ブロックの画像データのメモリ112からの読み出しが連続的に行われる。
なお、ここでは、各分割ブロックWR0_0~WR2_2、RD0_0~RD3_2の水平方向のサイズが、1回のアクセスで転送可能なデータ長以下である場合を例に説明したが、これに限定されるものではない。例えば、各分割ブロックWR0_0~WR2_2、RD0_0~RD3_2の水平方向のサイズが、1回のアクセスで転送可能なデータ長より大きい場合には、以下のような処理が行われる。即ち、1つのライン320に対するデータの書き込みにおいて、書き込みリクエストの発行及びデータの書き込みがそれぞれ複数回行われる。また、1つのライン320からのデータの読み出しにおいて、読み出しリクエストの発行及びデータの読み出しがそれぞれ複数回行われる。
当該書き込みにおいてライン320の最後尾に位置する画素にデータを書き込まない場合、WRDMAC211aは、書き込みオフセット信号WR_OFFSET1_a~WR_OFFSET3_aをいずれもLowレベルに維持する。当該書き込みにおいてライン320の最後尾に位置する画素にデータを書き込まない場合、WRDMAC211bは、書き込みオフセット信号WR_OFFSET1_b~WR_OFFSET3_bをいずれもLowレベルに維持する。一方、当該書き込みにおいてライン320の最後尾に位置する画素にデータを書き込む場合、WRDMAC211aは、書き込みオフセット信号WR_OFFSET1_a~WR_OFFSET3_aのうちのいずれかをHighレベルにする。また、当該書き込みにおいてライン320の最後尾に位置する画素にデータを書き込む場合、WRDMAC211は、書き込みオフセット信号WR_OFFSET1_b~WR_OFFSET3_bのうちのいずれかをHighレベルにする。そして、当該書き込みにおいてライン320の最後尾に位置する画素にデータが書き込まれた場合にのみ、書き込み座標(HW1_a、VW1_a)~(HW3_a、VW3_a)が書き込み座標計算部201aによって更新される。また、当該書き込みにおいてライン320の最後尾に位置する画素にデータが書き込まれた場合にのみ、書き込み座標(HW1_b、VW1_b)~(HW3_b、VW3_b)が書き込み座標計算部201bによって更新される。
当該読み出しにおいてライン320の最後尾に位置する画素からデータを読み出さない場合、RDDMAC213は、読み出しオフセット信号RD_OFFSET1~RD_OFFSET3をいずれもLowレベルに維持する。一方、当該読み出しにおいてライン320の最後尾に位置する画素からデータを読み出す場合、RDDMAC213は、読み出しオフセット信号RD_OFFSET1~RD_OFFSET3のうちのいずれかをHighレベルにする。読み出し座標(HR、VR)は、当該読み出しにおいてライン320の最後尾に位置する画素からデータが読み出されるか否かにかかわらず更新される。読み出し座標計算部202は、当該読み出しにおいてライン320の最後尾に位置する画素からデータが読み出されない場合には、以下のような動作を行う。即ち、読み出し座標計算部202は、RDDMAC213から読み出しリクエスト信号RD_REQが供給される毎に、RDDMAC213から供給されるデータ転送長信号RD_TRANSに基づいて読み出し座標(HR、VR)を更新する。一方、読み出し座標計算部202は、当該読み出しにおいてライン320の最後尾に位置する画素からデータが読み出される場合には、以下のような動作を行う。即ち、読み出し座標計算部202は、読み出しオフセット信号RD_OFFSET1~RD_OFFSET3のうちのいずれかと、データ転送長信号RD_TRANSとに基づいて、読み出し座標(HR、VR)を更新する。
図16は、本実施形態による画像処理装置の動作を示すフローチャートである。図16に示す処理は、主としてCPU108及びメモリ制御部120aによって実行される。
まず、CPU108からの指示によって、WRDMAC211a、211bとRDDMAC213とに処理を開始させる(ステップS1600)。
次に、書き込み座標計算部201aにおいて、第1の書き込み座標(HW1_a、VW1_a)、第2の書き込み座標(HW2_a、VW2_a)、及び、第3の書き込み座標(HW3_a、VW3_a)を、例えば(0、1)に初期化する。また、書き込み座標計算部201bにおいて、第1の書き込み座標(HW1_b、VW1_b)、第2の書き込み座標(HW2_b、VW2_b)、及び、第3の書き込み座標(HW3_b、VW3_b)を、例えば(0、1)に初期化する。また、読み出し座標計算部202において、読み出し座標(HR、VR)を例えば(0、1)に初期化する。これらの座標値の初期化は、CPU108からの指示によって行われる(ステップS1601)。
ステップS1602では、座標比較部203が、条件式(1)~(3)のいずれかを満たすか否かを判定する。条件式(1)~(3)のいずれかを満たす場合(ステップS1602においてYES)、ステップS1603に遷移する。ステップS1603では、RDDMAC213からの読み出しリクエスト信号RD_REQに対するマスク処理が、読み出しリクエストマスク部204において解除される。この後、ステップS1605に遷移する。条件式(1)~(3)のいずれをも満たさない場合(ステップS1602においてNO)、ステップS1604に遷移する。ステップS1604では、RDDMAC213からの読み出しリクエスト信号RD_REQに対するマスク処理が、読み出しリクエストマスク部204において行われる。これにより、RDDMAC213によるメモリ112からの画像データの読み出しは停止される。この後、ステップS1605に遷移する。
ステップS1605では、WRDMAC211a、211bから出力される第1の書き込みオフセット信号WR_OFFSET1_a、WR_OFFSET1_bがHighレベルであるか否かがそれぞれ判定される。第1の書き込みオフセット信号WR_OFFSET1_a、WR_OFFSET1_bがHighレベルである場合(ステップS1605においてYES)、ステップS1608に遷移する。ステップS1608では、第1の書き込み座標(HW1_a、VW1_a)、(HW1_b、VW1_b)が、書き込み処理が完了したライン320の最後尾の画素の座標にそれぞれ更新される。第1の書き込みオフセット信号WR_OFFSET1_a、WR_OFFSET1_bがHighレベルでない場合(ステップS1605においてNO)、ステップS1606に遷移する。
ステップS1606では、WRDMAC211a、211bから出力される第2の書き込みオフセット信号WR_OFFSET2_a、WR_OFFSET2_bがHighレベルであるか否かがそれぞれ判定される。第2の書き込みオフセット信号WR_OFFSET2_a、WR_OFFSET2_bがHighレベルである場合(ステップS1606においてYES)、ステップS1609に遷移する。ステップS1609では、第2の書き込み座標(HW2_a、VW2_a)、(HW2_b、VW2_b)が、書き込み処理が完了したライン320の最後尾の画素の座標にそれぞれ更新される。第2の書き込みオフセット信号WR_OFFSET2_a、WR_OFFSET2_bがHighレベルでない場合には、ステップS1607に遷移する。
ステップS1607では、WRDMAC211a、211bから出力される第3の書き込みオフセット信号WR_OFFSET3_a、WR_OFFSET3_bがHighレベルであるか否かがそれぞれ判定される。第3の書き込みオフセット信号WR_OFFSET3_a、WR_OFFSET3_bがHighレベルである場合(ステップS1607においてYES)、ステップS1610に遷移する。ステップS1610では、第3の書き込み座標(HW3_a、VW3_a)、(HW3_b、VW3_b)が、書き込み処理が完了したライン320の最後尾の画素の座標に更新される。第3の書き込みオフセット信号WR_OFFSET3_a、WR_OFFSET3_bがHighレベルでない場合(ステップS1607においてNO)、ステップS1611に遷移する。
ステップS1611では、書き込み座標統合部1201が、以下のような処理を行う。即ち、書き込み座標統合部1201は、書き込み座標(HW1_a、VW1_a)と書き込み座標(HW1_b、VW1_b)とに基づいて、書き込み座標(HW1、VW1)を決定する。また、書き込み座標統合部1201は、書き込み座標(HW2_a、VW2_a)と書き込み座標(HW2_b、VW2_b)とに基づいて、書き込み座標(HW2、VW2)を決定する。また、書き込み座標統合部1201は、書き込み座標(HW3_a、VW3_a)と書き込み座標(HW3_b、VW3_b)とに基づいて、書き込み座標(HW3、VW3)を決定する。この後、ステップS1612に移行する。
ステップS1612では、RDDMAC213からの読み出しリクエスト信号RD_REQがHighレベルであるか否かが判定される。読み出しリクエスト信号RD_REQがHighレベルである場合、ステップS1613に遷移する。一方、読み出しリクエスト信号RD_REQがHighレベルでない場合、ステップS1616に遷移する。
ステップS1613では、第1~第3の読み出しオフセット信号RD_OFFSET1~RD_OFFSET3のうちのいずれかがHighレベルであるか否かが判定される。第1~第3の読み出しオフセット信号RD_OFFSET1~RD_OFFSET3のうちのいずれかがHighレベルである場合(ステップS1613においてYES)、ステップS1614に遷移する。ステップS1614では、水平方向の読み出し座標HRと垂直方向の読み出し座標VRとが更新される。この後、ステップS1616に遷移する。第1~第3の読み出しオフセット信号RD_OFFSET1~RD_OFFSET3のすべてがHighレベルでない場合(ステップS1613においてNO)、ステップS1615に遷移する。ステップS1615では、水平方向の読み出し座標HRが更新される。この後、ステップS1616に遷移する。
ステップS1616では、WRDMAC211a、211bが、書き込み処理が完了したか否かをそれぞれ判定し、判定の結果をCPU108に通知する。書き込み処理が完了した場合(ステップS1616においてYES)、ステップS1617に遷移する。
ステップS1617では、読み出しリクエスト信号RD_REQに対するマスクが解除される。この後、ステップS1618に遷移する。一方、書き込み処理が完了していない場合(ステップS1616においてNO)、ステップS1602に戻り、上記と同様の処理が行われる。
ステップS1618では、RDDMAC213が、読み出しが完了していないライン320についての読み出し処理を行い、読み出し処理が完了したか否かを判定する。読み出し処理が完了していない場合(ステップS1618においてNO)、読み出しが完了していないライン320についての読み出し処理が継続して行われる。一方、読み出し処理が完了した場合(ステップS1618においてYES)、追いかけ制御が終了する。
このように、本実施形態では、書き込み座標(HW1_a、VW1_a)と書き込み座標(HW1_b、VW1_b)とに基づいて、書き込み座標(HW1、VW1)が判定される。また、書き込み座標(HW2_a、VW2_a)と書き込み座標(HW2_b、VW2_b)とに基づいて、書き込み座標(HW2、VW2)が決定される。書き込み座標(HW3_a、VW3_a)と書き込み座標(HW3_b、VW3_b)とに基づいて、書き込み座標(HW3、VW3)が決定される。そして、書き込み座標(HW1、VW1)、(HW2、VW2)、(HW3、VW3)と、読み出し座標(HR、VR)との比較の結果に基づいて読み出しが行われる。従って、本実施形態によれば、複数のWRDMAC211a、211bを用いる場合であっても追いかけ制御を適確に行い得る画像処理装置及び画像処理方法を提供することができる。
(変形例(その1))
本実施形態の変形例(その1)による画像処理装置及び画像処理方法について図17を用いて説明する。図17は、本変形例におけるブロック分割の態様を示す図である。図17における太い実線は、書き込み用の分割ブロックを概念的に示しており、図17における太い破線は、読み出し用の分割ブロックを概念的に示している。
本変形例は、第1実施形態の変形例(その1)と同様に、書き込み処理におけるアクセス開始座標と読み出し処理におけるアクセス開始座標とが異なるものである。
書き込み処理におけるアクセス開始座標と読み出し処理におけるアクセス開始座標との間の水平方向の差異はDIFXである。書き込み処理におけるアクセス開始座標と読み出し処理におけるアクセス開始座標との間の垂直方向の差異はDIFYである。
このような場合、例えば、第1~第3の書き込み座標(HW1、VW1)、(HW2、VW2)、(HW3、VW3)をアクセス開始座標の差異量DIFX、DIFYの分だけシフトさせるようにすればよい。アクセス開始座標の差異量DIFX、DIFYの分だけシフトさせた第1~第3の書き込み座標(HW1、VW1)′、(HW2、VW2)′、(HW3、VW3)′は、式(7)~(9)によって表される。なお、読み出し処理におけるアクセス開始座標は(1,1)とする。アクセス開始座標の差異量DIFX、DIFYの分だけシフトさせた書き込み座標(HW1、VW1)′、(HW2、VW2)′、(HW3、VW3)′は、書き込み座標計算部201によって算出される。
なお、ここでは、書き込み座標(HW1、VW1)、(HW2、VW2)、(HW3、VW3)をアクセス開始座標の差異量DIFX、DIFYの分だけシフトさせる場合を例に説明したが、これに限定されるものではない。例えば、アクセス開始座標の差異量DIFX、DIFYの分だけ書き込み座標(HR、VR)をシフトさせるようにしてもよい。アクセス開始座標の差異量DIFX、DIFYの分だけシフトさせた書き込み座標(HR、VR)′は、書き込み処理におけるアクセス開始座標を(1,1)とする場合、上記の式(10)によって表される。アクセス開始座標の差異量DIFX、DIFYの分だけシフトさせた書き込み座標(HR、VR)′は、読み出し座標計算部202によって算出される。
このように、書き込み処理におけるアクセス開始座標と読み出し処理におけるアクセス開始座標とが異なっていてもよい。
(変形例(その2))
本実施形態の変形例(その2)による画像処理装置及び画像処理方法について図18を用いて説明する。図18は、本変形例におけるブロック分割の態様を示す図である。図18における太い実線は、書き込み用の分割ブロックを概念的に示しており、図18における太い破線は、読み出し用の分割ブロックを概念的に示している。
本変形例は、隣接する分割ブロックが重複している場合を示している。隣接する読み出し用の分割ブロックRD*_*の水平方向における重複量はOLXである。隣接する読み出し用の分割ブロックRD*_*の垂直方向における重複量はOLYである。
このような場合には、例えば、読み出し対象の分割ブロックRD*_*が切り替わる際に、読み出し座標(HR、VR)を重複量OLX,OLYの分だけシフトさせればよい。重複量OLX,OLYの分だけシフトさせた読み出し座標(HR、VR)′は、式(11)によって表される。重複量OLX,OLYの分だけシフトさせた読み出し座標(HR、VR)′は、読み出し座標計算部202によって算出される。
このように、隣接する分割ブロックが重複していてもよい。なお、ここでは、隣接する読み出し用の分割ブロックRD*_*が重複している場合を例に説明したが、隣接する書き込み用の分割ブロックWR*_*が重複していてもよい。
分割ブロックの最後尾にアクセスが達した際のアクセス座標のジャンプは、図10(a)を用いて説明した第1実施形態の変形例(その2)と同様である。分割ブロックの最後尾の座標(H2、V2)の画素311,312にアクセスが達した際には、図10を用いて説明した第1実施形態の変形例(その2)と同様に、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×(YA-1)-OLX)である。
隣接する分割ブロックが水平方向においても垂直方向においても重複していてもよい。ブロックラインの最後尾の座標(H3、V3)の画素にアクセスが達した際には、図10(b)を用いて説明した第1実施形態の変形例(その2)と同様に、オフセット値がアドレス値に加算される。ここで加算されるオフセット値は(-XH×OLY)である。
このように、隣接する分割ブロックが重複していてもよい。本変形例においても、メモリ112に対する追いかけ制御を適確に行い得る画像処理装置を提供することができる。
[変形実施形態]
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
例えば、上記実施形態では、条件式(1)~(3)のいずれかを満たす場合に読み出し処理を行う場合を例に説明したが、用いられる条件式は(1)~(3)に限定されるものではない。例えば、条件式(1)~(3)の代わりに、以下のような条件式(15)~(17)を用いてもよい。この場合には、LGAPの分だけ、読み出し処理が遅れて実行されることとなる。
HW1≧HR かつ VW1>(VR+LGAP) ・・・(15)
HW2≧HR かつ VW2>(VR+LGAP) ・・・(16)
HW3≧HR かつ VW3>(VR+LGAP) ・・・(17)
また、第2実施形態では、WRDMACの数が2つである場合を例に説明したが、これに限定されるものではなく、WRDMACの数が3つ以上であってもよい。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記録媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。