{第1の実施の形態}
以下、図面を参照しつつ本発明の第1の実施の形態について説明する。図1は、画像処理装置の全体概略図である。画像処理装置は、例えば、CCD等のイメージセンサからなる入力部1、入力部1が出力した画像データを格納するSDRAM(Synchronous DRAM)4、SDRAM4に格納された画像データに対してMPEG規格に基づく圧縮処理を行うMPEG処理部2、入力部1が出力した画像データをSDRAM4に格納する際、およびMPEG処理部2がSDRAM4に格納されている画像データにアクセスする際に、SDRAM4に対するアクセス制御を行うメモリ制御部3とを備えている。
ここで、入力部1が出力する画像データは、ラスタ順で出力される。この明細書において、ラスタ順とは、2次元画像が1次元の画像データとして連続的に出力される手順であり、詳しくは、2次元画像の左上左端のピクセルを先頭に最上位行の画像データが順次転送され、右端のピクセルまで転送した後は、次の行の画像データを左端から右端まで順次転送し、次々に、各行の画像データを1次元の画像データとして転送する手順を示す。また、ラスタ順には、プログレッシブ転送のみならず、インタレース転送も含まれる。インタフレース転送の場合には、奇数行の画像データに対する1フィールド分の画像データの転送と、偶数行の画像データに対する1フィールド分の画像データの転送とが交互に行われることになる。
また、第1の実施の形態におけるSDRAM4は、1アドレスのメモリ領域に対して2バイト(16ビット)のデータを格納可能としている。つまり、第1の実施の形態におけるSDRAM4は、16ビットSDRAMである。また、SDRAM4は、連続する4つのアドレスに対して連続的にデータアクセスを行うバースト転送処理を可能としている。つまり、SDRAM4は、64ビット(4アドレス×16ビット)のデータをバースト転送可能としている。
図2は、2次元画像データのピクセル構成を示す図である。ここでは、2次元画像は、横320ピクセル、つまり、1行(水平1ライン)の画像データが320ピクセルである場合を例に説明する。また、この明細書においては、図に示すように、2次元画像の水平方向を行方向と、2次元画像の垂直方向を列方向と対応させて適宜説明する。
図2においては、2次元の画像データをブロックに区分して表示している。ここで、列方向の1区分は画像の1行(水平1ライン)に対応している。また、行方向の1区分は、8ピクセル分の画像データに対応している。つまり、1ブロックは8ピクセル分の画像データの集合である。そして、各ブロック内に表示されている0〜7pix、8〜15pix等の表示は、最上位行の左端のピクセルを0番目の画像として、全ピクセルに対してラスタ順に付与されたピクセル番号である。したがって、画像データが横320ピクセル×縦100ピクセルであれば、ラスタ順に0から31999までの番号が各ピクセルに付与されることになる。
最上位行(0行目)の左端のブロックは、2次元画像の0行目の0番目から7番目までのピクセルに対応し、その右横のブロックは、2次元画像の0行目の8番目から15番目までのピクセルに対応している。そして、最上位行(0行目)の右端のブロックは、0行目の312番目から319番目までのピクセルに対応し、次の行(1行目)の左端のブロックは、320番目から327番目までのピクセル(これは、2次元画像における1行目の0番目から7番目までのピクセルに対応している。)に対応している。
このようにして、2次元画像をラスタ順に8ピクセルごとにブロック化している。さらに、図に示すように、列方向のブロックがグループ化され、これらグループは、SDRAM4のバンク0とバンク1に交互に格納されるのである。具体的には、図において網掛けされていないブロックのグループはSDRAM4のバンク0に格納され、網掛けされているブロックのグループはSDRAM4のバンク1に格納されるのである。図中、A0,0、B0,0等の表示については、後で説明するが、この2次元画像データがSDRAM4に格納される際に、格納されるメモリ領域(バンク0およびバンク1におけるメモリ領域)のブロック名を示している。
図3は、メモリ制御部3によって、入力部1より出力されたラスタ順の画像データが、SDRAM4に書き込まれる際のタイミング図である。また、図4は、SDRAM4のバンク0に対する書き込み順序を示す図であり、図5は、SDRAM4のバンク1に対する書き込み順序を示す図である。また、図6は、バンク0の各メモリ領域に格納される画像データのピクセル番号(この番号は、前述したように、2次元画像の最上位行(0行目)の左端(0列目)のピクセルを0番目の画像として、全ピクセルに対してラスタ順で付与された番号である。)を示す図であり、図7は、バンク1の各メモリ領域に格納される画像データのピクセル番号を示す図である。
ここで、図4および図5において、メモリ領域a0,0、b0,0等の添え字は、1番目の添え字がメモリ領域の行番号を示し、2番目の添え字がメモリ領域の列番号を示している。したがって、メモリ領域a1,4は、バンク0の1行4列目のメモリ領域を示している。また、図4および図5におけるブロック領域A0,0、B0,0等は、4つのメモリ領域からなるブロックを示している。ブロック領域の添え字は、そのブロック領域に含まれている先頭(左端)のメモリ領域の行番号および列番号に対応している。
図3において、まず、バンクアドレスに「0」が設定され、行アドレスおよび列アドレスにいずれも「0」が設定され、0番目から7番目までの8ピクセル分の画像データが、バースト転送される。つまり、1ピクセルの画像データが8ビットであるので、8ピクセル分の画像データ(8ピクセル×8ビット)をバースト転送するのである。この8ピクセル分の画像データは、図4に示すバンク0のブロック領域A0,0に格納される。ブロック領域A0,0は、メモリ領域a0,0、a0,1、a0,2、a0,3からなる領域である。なお、図3において、Bank ADDRESSがバンクアドレス信号を示し、ADDRESSが行および列アドレス信号を示している。また、Bank0およびBank1は、それぞれバンク0およびバンク1に対するデータのアクセスタイミングと、転送されるデータの内容を示している。データの内容(0,1等の数字)は、前述したピクセル番号を示している。
一方、図3に示すように、0番目から7番目までの8ピクセル分の画像データが、ブロック領域A0,0に書き込まれているタイミングで、バンクアドレスが「1」に設定される。そして、ブロック領域A0,0への書き込み終了後、8番目から15番目までの8ピクセル分の画像データがバースト転送される。この8ピクセル分の画像データは、図5に示す、バンク1のブロック領域B0,0に格納される。ブロック領域B0,0は、メモリ領域b0,0、b0,1、b0,2、b0,3からなる領域である。
さらに、8番目から15番目までの8ピクセル分の画像データがブロック領域B0,0に書き込まれているタイミングで、バンクアドレスが「0」に設定される。そして、ブロック領域B0,0への書き込み終了後、16番目から23番目までの8ピクセル分の画像データがバースト転送される。この8ピクセル分の画像データは、列アドレスに「4」が設定されることにより、図4に示すバンク0のブロック領域A0,4に格納される。ブロック領域A0,4は、メモリ領域a0,4、a0,5、a0,6、a0,7からなる領域である。
そして、ブロック領域A0,4に書き込みが行われているタイミングで、バンクアドレスが「1」に設定される。そして、ブロック領域A0,4への書き込み終了後、24番目から31番目までの8ピクセル分の画像データがバースト転送される。この8ピクセル分の画像データは、列アドレスに「4」が設定されることにより、図5に示すバンク1のブロック領域B0,4に格納される。ブロック領域B0,4は、メモリ領域b0,4、b0,5、b0,6、b0,7からなる領域である。
以上の処理により、図6および図7に示すように、バンク0のブロック領域A0,0、A0,4およびバンク1のブロック領域B0,0、B0,4に0番目から31番目までの32ピクセル分の画像データが格納される。この後は、同様に、バンク0とバンク1を切り替えながら、8ピクセル単位で画像データをバースト転送し、順次SDRAM4に画像データを格納するのである。図4および図5における矢印は、それぞれバンク0およびバンク1への格納順序を示している。上述した手順により、2次元画像の0行目の画像データが矢印の方向に格納された後、1行目の画像データが同様に矢印の方向に格納され、順次、各行の画像データが格納される。SDRAM4に対する書き込み手順を、ブロック領域を用いて表現すると、ブロック領域A0,0→B0,0→A0,4→B0,4→A0,8→B0,8→A0,12→・・・の順で、2次元画像データを順次格納することになる。
このように、MPEG処理の対象となる2次元画像データをバンク0とバンク1とを切り替えながら、2次元画像イメージでSDRAM4に格納する。そして、図2にも示したように、2次元画像における列方向については、画像データが全て同じバンクに格納されるようにするのである。このため、2次元画像のマクロブロックに注目した場合、マクロブロック内の画像データは、SDRAM4の複数の行にまたがって格納されることとなるが、アクセスする行を切り替える場合にも、空き時間は発生しない。このアクセス手順については、後で具体的に説明するが、バンク1のデータにアクセスしているタイミングで、バンク0についてアクセスする行を切り替え、バンク0のデータにアクセスしているタイミングで、バンク1についてアクセスする行を切り替えることが可能となるからである。
なお、この実施の形態では、図6および図7で示したように、2次元画像データの水平1ライン分の画像データは、SDRAM4のバンク0の同一行およびバンク1の同一行のメモリ領域に格納し、2次元画像データの水平ラインが次の水平ラインに移動すると、格納先のバンク0とバンク1のメモリ領域も行を変更するようにしている。このような格納方法は、メモリ領域の有効利用という点ではデメリットがあるが、回路構成をシンプルにすることができるという点でメリットがある。したがって、メモリ領域に余裕がある場合には有効な方法である。
ただし、上記格納方法は一例であり、これに限定されることはない。つまり、ラスタ順で入力する2次元画像の1行目の画像データを、SDRAM4の1行目(バンク0あるいはバンク1)に格納した後、2ライン目の画像データを続けて、SDRAM4の1行目に格納するような方法をとってもよい。同様に、SDRAM4の各行において、画像データの水平ラインに対応して格納する行を変更させることはなく、順次、画像データを詰めて格納するのである。そして、この場合にも、一度に転送される8ピクセル分の画像データ(つまり、1バースト転送分の画像データ)はSDRAM4のいずれかのバンクの同一行に格納されるようにしておけばよい。これにより、バンク0およびバンク1の一方のデータにアクセスしているタイミングで、他方のバンクの行アドレスを変更するようにすれば、処理速度を高速にすることが可能である。あるいは逆に、2次元画像の水平1ラインのデータサイズがSDRAM4の1行に格納可能なサイズ(バンク0とバンク1の1行に格納可能なサイズの和)より大きくてもよい。この場合にも、8ピクセル単位で画像データをいずれかのバンクの同一行に格納するようにし、2次元画像の水平1ラインの途中で各バンクの行アドレスを変更するようにしても問題はない。つまり、本発明は、本質的には、マクロブロックを構成する1行の画像データのうち、その半分の8ピクセル分の画像データが全て一方のバンクの同一行に格納され、これに続く残り半分の8ピクセル分の画像データが全て他方のバンクの同一行に格納され、さらに、列方向のデータは全て同じバンクに格納されることである。このような格納方法をとれば、後述するように、マクロブロック単位での画像データに対するアクセスにおいて、いずれかのバンクの行アドレスを変更する必要が生じた場合でも、その直前に必ず他方のバンクに対するアクセス処理が介入するので、その間に行アドレスを変更することで、空き時間の発生を無くすことができるのである。
次に、MPEG処理部2がMPEG圧縮処理を行うために、SDRAM4に格納された画像データにマクロブロック単位でアクセスする処理について説明する。なお、このアクセス処理には、MPEG処理部2がMPEG圧縮処理を行う対象であるマクロブロック単位の画像データを読み出す処理と、マクロブロック単位の画像データを書き込む処理がある。
図8は、メモリ制御部3によって、SDRAM4に格納された画像データにアクセスする処理のタイミング図である。また、図9は、SDRAM4のバンク0に対するアクセス順序を示す図であり、図10は、SDRAM4のバンク1に対するアクセス順序を示す図である。なお、図8ないし図10は、マクロブロック単位での画像データの読み出し処理と書き込み処理に共通の特徴を示す図である。また、図9および図10における各メモリ領域a0,0、b0,0等は、図4および図5における各メモリ領域a0,0、b0,0等に対応しており、上述した書き込み処理により、図6および図7で示したような配列で2次元画像データが格納されているものとする。
まず、マクロブロック単位での画像データの読み出し処理について説明する。図8において、まず、バンクアドレスに「0」が設定され、行アドレスおよび列アドレスにいずれも「0」が設定され、0番目から7番目までの8ピクセル分の画像データが、バースト転送される。具体的には、図9で示すバンク0のブロック領域A0,0に格納されている8ピクセル分の画像データが読み出される。なお、図8におけるBank ADDRESSがバンクアドレス信号を示し、ADDRESSが行および列アドレス信号を示している。また、Bank0およびBank1は、それぞれバンク0およびバンク1に対するデータのアクセスタイミングと、転送されるデータの内容を示している。データの内容(0,1等の数字)は、前述したピクセル番号を示している。
一方、図8に示すように、ブロック領域A0,0の画像データに対する読み出し処理が行われているタイミングで、バンクアドレスが「1」に設定され、ブロック領域A0,0からの読み込み処理終了後、8番目から15番目までの8ピクセル分の画像データがバースト転送される。具体的には、図10で示すバンク1のブロック領域B0,0に格納されている8ピクセル分の画像データが読み出される。
さらに、図8に示すように、ブロック領域B0,0の画像データの読み出し処理が行われているタイミングで、バンクアドレスが「0」に設定されるとともに行アドレスに「1」が設定され、ブロック領域B0,0からの読み込み処理終了後、320番目から327番目までの8ピクセル分の画像データがバースト転送される。具体的には、図9で示すバンク0のブロック領域A1,0に格納されている8ピクセル分の画像データが読み出される。ブロック領域A1,0は、メモリ領域a1,0、a1,1、a1,2、a1,3からなる領域である。ここで、バンク0については、ブロック領域A0,0に対するアクセス処理の後、ブロック領域A1,0に対するアクセス処理が行われるため、アクセスする行アドレスを切り替える必要があるが、バンク1のブロック領域B0,0に対するデータ転送が行われているタイミングで、この行アドレスの切り替えが行われるので、空き時間が発生することなく、効率的にデータの読み出し処理が実行されるのである。
そして、ブロック領域A1,0の画像データの読み出し処理が行われているタイミングで、バンクアドレスが「1」に設定されるとともに行アドレスに「1」が設定され、ブロック領域A1,0からの読み込み処理終了後、328番目から335番目までの8ピクセル分の画像データがバースト転送される。具体的には、図10で示すバンク1のブロック領域B1,0に格納されている8ピクセル分の画像データが読み出される。ブロック領域B1,0は、メモリ領域b1,0、b1,1、b1,2、b1,3からなる領域である。同様に、バンク1については、ブロック領域B0,0に対するアクセス処理の後、ブロック領域B1,0に対するアクセス処理が行われるため、アクセスする行アドレスを切り替える必要があるが、バンク0のブロック領域A1,0に対するデータ転送が行われているタイミングで、この行アドレスの切り替えが行われるので、空き時間が発生することなく、効率的にデータの読み出し処理が実行されるのである。
以上の処理により、図6および図7に示したバンク0のブロック領域A0,0、A1,0およびバンク1のブロック領域B0,0、B1,0に格納されている0番目から15番目までの16ピクセル分の画像データおよび320番目から335番目までの16ピクセル分の画像データが読み出される。この画像データは、図2の画像イメージに対応させると、行方向が16ピクセルであって、列方向については同じ列の2行分の画像データである。つまり、この後、同様に、バンク0とバンク1を切り替えながら、8ピクセル単位で画像データをバースト転送し、順次、行方向が16ピクセルで、同じ列の画像データを読み出すことにより、2次元的なブロックの画像データを連続的に読み出すことが可能となるのである。そして、このような処理を16行分実行することにより、縦16ピクセル×横16ピクセルのマクロブロックに対応する画像データを連続的に読み出すことが可能となるのである。
図11は、マクロブロックの読み出す順序を示す図である。図8〜図10を用いた説明では、ブロック領域A0,0→B0,0→A1,0→B1,0の画像データを読み出すところまでを説明した。この後、バンク0とバンク1を交互に切り替えつつ、同列のブロック領域の画像データを順次読み出し、16行目となるブロック領域A15,0、B15,0を読み出した時点で、縦16ピクセル×横16ピクセルのマクロブロックに対応する画像データを読み出すことが可能となるのである。
また、上述したように、図2に示すようなバンク0とバンク1に対する格納ルールが満たされていれば、2次元画像の異なる水平ラインの画像データが、SDRAM4の同一の行に格納されていてもよい。たとえば、2次元画像データの1ライン目と2ライン目の画像データが、ともにSDRAM4の1行目のメモリ領域に格納されてもよいことを説明した。この場合にも、マクロブロック単位でのデータの読み出し処理は、高速に行うことが可能である。つまり、8ピクセル単位で、バンクを切り替えながら、画像データが格納されていることにより、一方のバンクから画像データを読み出している間に、他方のバンクの行を切り替えることが可能となるからである。これにより、SDRAM4に対するアクセス行を変更する際にも、空き時間を発生させることなく、読み出し処理を行うことが可能である。また、図2に示すようなバンク0とバンク1に対する格納ルールが満たされていれば、2次元画像データの水平1ラインがSDRAM4の複数の行にまたがって格納されていてもよい。あるいは、2次元画像の各水平ラインの列方向の順序と、SDRAM4に格納される列方向の順序が異なっていてもよいし、とびとびの行に格納されるようになっていてもよい。
このように、マクロブロック単位で画像データを高速に読み出すことが可能であるが、MPEG処理部2により、マクロブロック単位で画像データを書き込む処理も同様である。この書き込み処理も、図8で示したタイミング図、図9、図10、図11で示したアクセス順序で行えばよい。つまり、ブロック領域A0,0→B0,0→A1,0→B1,0→A2,0・・・の順で画像データを書き込むようにすればよい。これにより、マクロブロック単位での画像データの読み込みおよび書き込み両方の処理を高速に行うことが可能である。
以上説明したように、本実施の形態によれば、MPEG処理に必要なマクロブロック単位の画像データに連続的にアクセスする場合にも、バンク0とバンク1を切り替えることにより、アクセス空き時間を発生させることなく、効率的にSDRAM4にアクセスすることが可能である。つまり、一方のバンクにおいて画像データにアクセスしている間に、他方のバンクの行アドレスを変更することができるので、行アドレス変更に伴う空き時間を発生させることがない。しかも、入力部1から入力した画像データのSDRAM4に対する書き込み処理においては、ラスタ順で入力する画像データを、そのままの順序で格納するので、書き込み処理時における制御が複雑になることはない。
次に、図12を参照して、データの種別に応じた各メモリ領域への画像データの格納方法について説明する。MPEG処理においては、輝度データ(Yデータ)と色差データ(U,Vデータ)からなるYUV色空間の画像データを扱う。ここで、図13に示すように、Yデータは、2次元画像データの全ての画素が保持している情報である。これに対して、U,Vデータは、Yデータよりも数が少ない。YUV4:2:0フォーマットにおいては、図に示すように、UデータおよびVデータの数は、行方向に1/2間引かれるとともに、列方向にも1/2間引かれている。
上述したSDRAM4に対するアクセス処理では、画像データの種類が輝度データであるか、あるいは色差データであるかということは特に考慮せず説明した。ここでは、輝度データと色差データの場合、それぞれについてメモリ領域への格納方法を説明する。なお、画像データは、YUV4:2:0フォーマットの場合を説明する。
図12で示したタイミング図の中で、前半の2つのバースト転送処理は、輝度データに対する処理である。後半の2つのバースト転送処理は、色差データに対する処理である。まず、輝度データの場合には、2つのYデータを1つのメモリ領域に格納する。つまり、1画素のYデータは8ビットであり、この実施の形態におけるSDRAM4の1アドレスに対応するメモリ領域は16ビットのデータを格納可能としているので、2ピクセル分のYデータを1アドレスのメモリ領域に格納するのである。このとき、SDRAM4にアクセスする16ビットのデータ線のうち、上位8ビットを一方のYデータ転送用に使用し、下位8ビットを他方のYデータ転送用の使用する。このようにして、バンク0には、4つのアドレスに対応した4つのメモリ領域に8ピクセル分のYデータが格納される。続いて、バンク1において、4つのアドレスに対応した4つのメモリ領域に8ピクセル分のYデータが格納されるのである。
次に、色差データの格納方法について説明する。図13において、太線枠で示した2ピクセル×2ピクセルの領域の中には、4つのYデータに対して、UデータとVデータが1つづつ存在する。そこで、この2つのUデータとVデータをパッキングして1つのメモリ領域に格納する。
図12に示すように、2つのUデータとVデータをパッキングして1つのメモリ領域に格納することとすれば、このようなUデータとVデータの組が4つ分、つまり、8ピクセル分バースト転送行うことが可能である。つまり、UデータおよびVデータは、いずれも1画素8ビットのデータであり、この実施の形態におけるSDRAM4の1アドレスに対応するメモリ領域は16ビットのデータを格納可能としているので、UデータとVデータからなる2ピクセル分のデータを1アドレスのメモリ領域に格納するのである。このとき、SDRAM4にアクセスする16ビットのデータ線のうち、上位8ビットを例えばUデータ転送用に使用し、下位8ビットをVデータ転送用の使用する。このようにして、バンク0には、4つのアドレスに対応した4つのメモリ領域に8ピクセル分の色差データが格納される。続いて、バンク1において、4つのアドレスに対応した4つのメモリ領域に8ピクセル分の色差データが格納されるのである。
このように、UデータとVデータをパッキングして、1つのメモリ領域に格納することにより、輝度データについてSDRAM4にアクセスする場合と、色差データについてSDRAM4にアクセスする場合とで、同じ転送手順を実行することが可能となるのである。
具体的には、まず、輝度データについてマクロブロック単位のデータアクセスを行い、次に、同じマクロブロック領域内の色差データについてマクロブロック単位のデータアクセスを行うことになるが(図12は、輝度データについてのデータアクセス処理と色差データに対するデータアクセス処理がちょうど入れ替わるタイミングを示している。)、輝度データに対するデータアクセスと色差データに対するデータアクセスを同じ手順とすることができるのである。
ただし、YUV4:2:0フォーマットの場合には、UデータとVデータの数が行方向(縦方向)にも1/2に間引かれているので、1つのマクロブロックに対する処理は、輝度データに対する処理の半分の処理でよい。図11を用いて説明すれば、輝度データに対する処理は、16行分の処理が必要であったが、色差データの場合には、8行分の処理でよい。
以上、第1の実施の形態においては、SDRAMが1アドレスに16ビットのデータを格納可能である場合を例に説明した。しかし、本発明は、1アドレスに8ビットのデータを格納可能なDRAMにも適用させることが可能である。この場合には、8ビットのデータを格納可能なDRAMを2個利用して、上述した実施の形態と同様の処理を行うようにすればよい。つまり、8ピクセル分の画像データを2個のDRAMのそれぞれ4つのアドレスに格納する処理を1単位の処理とすればよい。そして、それぞれのDRAMに対してバンク0とバンク1とを交互に切り替えながら上記と同様の処理を行うようにすればよい。
{第2の実施の形態}
次に、本発明の第2の実施の形態について説明する。第2の実施の形態における画像処理装置も、図1で説明した画像処理装置と同様である。ただし、第2の実施の形態におけるSDRAM4は、1アドレスのメモリ領域に対して4バイト(32ビット)のデータを格納可能としている。つまり、第2の実施の形態におけるSDRAM4は、32ビットSDRAMである。また、SDRAM4は、連続する4つのアドレスに対して連続的にデータアクセスを行うバースト転送処理を可能としている。つまり、SDRAM4は、128ビット(4アドレス×32ビット)のデータをバースト転送可能としている。
図14は、2次元画像データのピクセル構成を示す図である。ここでも、2次元画像は、横320ピクセル、つまり、1行(水平1ライン)の画像データが320ピクセルである場合を例に説明する。
図14においては、2次元の画像データをブロックに区分して表示している。この図の表記ルールは、図2で説明したものと同様である。ただし、図2と比較すると1ブロックのピクセル数が異なる。最上位行(0行目)の左端のブロックは、2次元画像の0行目の0番目から15番目までのピクセルに対応し、その右横のブロックは、2次元画像の0行目の16番目から31番目までのピクセルに対応している。そして、最上位行(0行目)の右端のブロックは、0行目の304番目から319番目までのピクセルに対応し、次の行(1行目)の左端のブロックは、320番目から335番目までのピクセル(これは、2次元画像における1行目の0番目から15番目までのピクセルに対応している。)に対応している。
このようにして、2次元画像をラスタ順に16ピクセルごとにブロック化している。さらに、この実施の形態においては、図に示すように、これら各ブロックが千鳥状にバンク0とバンク1に割り当てられてSDRAM4に格納される。言い換えると、2次元画像の行方向においても列方向においてもバンク0とバンク1が交互になるように割り当てられる。具体的には、図において網掛けされていないブロックはSDRAM4のバンク0に格納され、網掛けされているブロックはSDRAM4のバンク1に格納されるのである。図中、C0,0、D0,0等の表示については、第1の実施の形態で説明したものと同様である。つまり、この2次元画像データがSDRAM4に格納される際に、格納されるメモリ領域(バンク0およびバンク1におけるメモリ領域)のブロック名を示している。
図15は、メモリ制御部3によって、入力部1より出力されたラスタ順の画像データが、SDRAM4に書き込まれる際のタイミング図である。また、図16は、SDRAM4のバンク0に対する書き込み順序を示す図であり、図17は、SDRAM4のバンク1に対する書き込み順序を示す図である。また、図18は、バンク0の各メモリ領域に格納される画像データのピクセル番号(この番号は、前述したように、2次元画像の最上位行(0行目)の左端(0列目)のピクセルを0番目の画像として、全ピクセルに対してラスタ順で付与された番号である。)を示す図であり、図19は、バンク1の各メモリ領域に格納される画像データのピクセル番号を示す図である。
ここで、図16および図17において、メモリ領域c0,0、d0,0等の添え字は、1番目の添え字がメモリ領域の行番号を示し、2番目の添え字がメモリ領域の列番号を示している。これらの表記ルールも第1の実施の形態と同様である。また、図16および図17におけるブロック領域C0,0、D0,0等は、4つのメモリ領域からなるブロックを示している。ブロック領域の添え字は、そのブロック領域に含まれている先頭(左端)のメモリ領域の行番号および列番号に対応している。
図15において、まず、バンクアドレスに「0」が設定され、行アドレスおよび列アドレスにいずれも「0」が設定され、0番目から15番目までの16ピクセル分の画像データが、バースト転送される。つまり、1ピクセルの画像データが8ビットであるので、16ピクセル分の画像データ(16ピクセル×8ビット)をバースト転送するのである。この16ピクセル分の画像データは、図16に示すバンク0のブロック領域C0,0に格納される。ブロック領域C0,0は、メモリ領域c0,0、c0,1、c0,2、c0,3からなる領域である。なお、図15の表記ルールも図3等と同様である。
一方、図15に示すように、0番目から15番目までの16ピクセル分の画像データが、ブロック領域C0,0に書き込まれているタイミングで、バンクアドレスが「1」に設定される。そして、ブロック領域C0,0への書き込み終了後、16番目から31番目までの16ピクセル分の画像データがバースト転送される。この16ピクセル分の画像データは、図17に示すバンク1のブロック領域D0,0に格納される。ブロック領域D0,0は、メモリ領域d0,0、d0,1、d0,2、d0,3からなる領域である。
さらに、16番目から31番目までの16ピクセル分の画像データがブロック領域D0,0に書き込まれているタイミングで、バンクアドレスが「0」に設定される。そして、ブロック領域D0,0への書き込み終了後、32番目から47番目までの16ピクセル分の画像データがバースト転送される。この16ピクセル分の画像データは、列アドレスに「4」が設定されることにより、図16に示すバンク0のブロック領域C0,4に格納される。ブロック領域C0,4は、メモリ領域c0,4、c0,5、c0,6、c0,7からなる領域である。
そして、ブロック領域C0,4に書き込みが行われているタイミングで、バンクアドレスが「1」に設定される。そして、ブロック領域C0,4への書き込み終了後、48番目から63番目までの16ピクセル分の画像データがバースト転送される。この16ピクセル分の画像データは、列アドレスに「4」が設定されることにより、図17に示すバンク1のブロック領域D0,4に格納される。ブロック領域D0,4は、メモリ領域d0,4、d0,5、d0,6、d0,7からなる領域である。
以上の処理により、図18および図19に示すように、バンク0のブロック領域C0,0、C0,4およびバンク1のブロック領域D0,0、D0,4に0番目から63番目までの64ピクセル分の画像データが格納される。この後は、同様に、バンク0とバンク1を切り替えながら、16ピクセル単位で画像データをバースト転送し、順次SDRAM4に画像データを格納するのである。図16および図17における矢印は、それぞれバンク0およびバンク1への格納順序を示している。上述した手順により、2次元画像の0行目の画像データが矢印の方向に格納された後、1行目の画像データが同様に矢印の方向に格納され、順次、各行の画像データが格納される。また、SDRAM4に対する書き込み手順をブロック領域を用いて表現すると、ブロック領域C0,0→D0,0→C0,4→D0,4→C0,8→D0,8→C0,12→・・・の順で、2次元画像データを順次格納することになる。
このように、2次元画像の行方向については、16ピクセルごとにバンク0とバンク1が交互になるようSDRAM4に対してデータが格納される。そして、図14でも示したように、列方向については、1行ごとにバンク0とバンク1が交互になるようにSDRAM4に格納するのである。
この実施の形態の例では、2次元画像の行方向のピクセル数は320である。したがって、16ピクセルごとにバンク0とバンク1を切り替えて0行目のデータを格納した後、1行目のデータを格納する場合には、1行目の先頭のブロックは再びバンク0に格納される順番となる。このため、1行目の先頭のブロック、つまり320番目から335番目までの画像データは、一旦バッファに格納し、次のブロック、つまり336番目から351番目までの画像データを先にバンク0に格納するようにする。次に、バッファされていた320番目から335番目までの画像データをバンク1に格納するのである。これにより、列方向については1行ごとにバンク0とバンク1が交互に切り替えられて画像データが格納されることになる。バッファされていた320番目から335番目までの画像データをバンク1に格納した後は、352番目から367番目までの画像データをバンク1に格納するようにしても、行アドレスの切り替えが発生しないのでアクセス速度が遅くなることはない。その後は、行方向に再び16ピクセルごとにバンク0とバンク1を切り替えながら画像データを格納すれば、列方向についても1行ごとにバンク0とバンク1が交互に切り替えられて画像データが格納されることになる。
一方、行方向のピクセル数が16ピクセルの奇数倍である場合には、ラスタ順でバンク0とバンク1を切り替えていくことにより、列方向についても1行ごとにバンク0とバンク1に対して交互に格納されるので、上記のようにバッファを利用する必要はない。
このように、MPEG処理の対象となる2次元画像データをバンク0とバンク1とを切り替えながら、2次元画像イメージでSDRAM4に格納する。そして、画像の列方向については1行ごとにバンク0とバンク1が交互になるようにSDRAM4に格納する。このため、マクロブロックに注目した場合、SDRAM4の複数の行に画像データがまたがって格納されることとなるが、アクセスする行を切り替える場合にも、空き時間が発生することはない。このアクセス手順については、後で具体的に説明するが、バンク1のデータにアクセスしているタイミングで、バンク0についてアクセスする行を切り替え、バンク0のデータにアクセスしているタイミングで、バンク1についてアクセスする行を切り替えることが可能となるからである。
なお、図18および図19で示したように、2次元画像データの水平1ライン分の画像データは、SDRAM4のバンク0の同一行およびバンク1の同一行のメモリ領域に格納し、2次元画像データのラインが次のラインに移動すると、格納先のバンク0とバンク1のメモリ領域も行を変更するようにしている。このような格納方法は、メモリ領域の有効利用という点ではデメリットがあるが、回路構成をシンプルにすることができるという点でメリットがある。したがって、メモリ領域に余裕がある場合には有効な方法である。
ただし、上記格納方法は一例であり、これに限定されることはない。つまり、ラスタ順で入力する2次元画像データの1ライン目の画像データを、SDRAM4の1行目(バンク0あるいはバンク1)に格納した後、2ライン目の画像データを続けて、SDRAM4の1行目に格納するような方法をとってもよい。同様に、SDRAM4の各行において、画像データの水平ラインに対応して格納する行を変更させることはなく、順次、画像データを詰めて格納するのである。そして、この場合にも、一度に転送される16ピクセル分の画像データ(つまり、1バースト転送分の画像データ)はSDRAM4の同一行に格納されるようにしておけばよい。これにより、バンク0およびバンク1の一方のデータにアクセスしているタイミングで、他方のバンクの行アドレスを変更するようにすれば、処理速度を高速にすることが可能である。あるいは逆に、2次元画像の水平1ラインのデータサイズがSDRAM4の1行に格納可能なサイズ(バンク0とバンク1の1行に格納可能なサイズの和)より大きくてもよい。この場合にも、16ピクセル単位で画像データをいずれかのバンクの同一行に格納するようにし、2次元画像の水平1ラインの途中で各バンクの行アドレスを変更するようにしても問題はない。つまり、本発明は、本質的には、マクロブロックを構成する1行の16ピクセル分の画像データが全て一方のバンクの同一行に格納され、マクロブロックを構成する次の行の16ピクセル分の画像データが全て他方のバンクの同一行に格納されることである。このような格納方法をとれば、マクロブロック単位での画像データに対するアクセスにおいて、いずれかのバンクの行アドレスを変更する必要が生じた場合でも、その直前に必ず他方のバンクに対するアクセス処理が介入するので、その間に行アドレスを変更することで、空き時間の発生を無くすことができるのである。
次に、MPEG処理部2がMPEG圧縮処理を行うために、SDRAM4に格納された画像データにマクロブロック単位でアクセスする処理について説明する。なお、このアクセス処理には、MPEG処理部2がMPEG圧縮処理を行う対象であるマクロブロック単位の画像データを読み出す処理と、マクロブロック単位の画像データを書き込む処理がある。
図20は、メモリ制御部3によって、SDRAM4に格納された画像データにアクセスする処理のタイミング図である。また、図21は、SDRAM4のバンク0に対するアクセス順序を示す図であり、図22は、SDRAM4のバンク1に対するアクセス順序を示す図である。さらに、図21および図22で示した方法によりマクロブロックにアクセスした後、続けて隣り合うマクロブロックをアクセスする方法を示したのが図23および図24である。図23は、SDRAM4のバンク0に対するアクセス順序を示す図であり、図24は、SDRAM4のバンク1に対するアクセス順序を示す図である。なお、図20ないし図24は、マクロブロック単位での画像データの読み出し処理と書き込み処理に共通の特徴を示す図である。また、図21ないし図24における各ブロック領域C0,0、D0,0等は、図16および図17における各ブロック領域C0,0、D0,0等に対応しており、上述した書き込み処理により、図18および図19で示したような配列で2次元画像データが格納されているものとする。
まず、マクロブロック単位での画像データの読み出し処理について説明する。図20において、まず、バンクアドレスに「0」が設定され、行アドレスおよび列アドレスにいずれも「0」が設定され、0番目から15番目までの16ピクセル分の画像データが、バースト転送される。具体的には、図21で示すバンク0のブロック領域C0,0に格納されている16ピクセル分の画像データが読み出される。なお、図20における表記ルールは、図3等と同様である。
一方、図20に示すように、ブロック領域C0,0の画像データに対する読み出し処理が行われているタイミングで、バンクアドレスが「1」に設定されるとともに行アドレスが「1」に設定され、ブロック領域C0,0からの読み込み処理終了後、320番目から335番目までの16ピクセル分の画像データがバースト転送される。具体的には、図22で示すバンク1のブロック領域D1,0に格納されている16ピクセル分の画像データが読み出される。
さらに、図20に示すように、ブロック領域D1,0の画像データの読み出し処理が行われているタイミングで、バンクアドレスが「0」に設定されるとともに行アドレスが「2」に設定され、ブロック領域D1,0からの読み込み処理終了後、640番目から655番目までの16ピクセル分の画像データがバースト転送される。具体的には、図21で示すバンク0のブロック領域C2,0に格納されている16ピクセル分の画像データが読み出される。ブロック領域C2,0は、メモリ領域c2,0、c2,1、c2,2、c2,3からなる領域である。ここで、バンク0については、ブロック領域C0,0に対するアクセス処理の後、ブロック領域C2,0に対するアクセス処理が行われるため、アクセスする行アドレスを切り替える必要があるが、バンク1のブロック領域D1,0に対するデータ転送が行われているタイミングで、この行アドレスの切り替えが行われるので、空き時間が発生することなく、効率的にデータの読み出し処理が実行されるのである。
そして、ブロック領域C2,0の画像データの読み出し処理が行われているタイミングで、バンクアドレスが「1」に設定されるとともに行アドレスが「3」に設定され、ブロック領域C2,0からの読み込み処理終了後、960番目から975番目までの16ピクセル分の画像データがバースト転送される。具体的には、図22で示すバンク1のブロック領域D3,0に格納されている16ピクセル分の画像データが読み出される。ブロック領域D3,0は、メモリ領域d3,0、d3,1、d3,2、d3,3からなる領域である。同様に、バンク1については、ブロック領域D1,0に対するアクセス処理の後、ブロック領域D3,0に対するアクセス処理が行われるため、アクセスする行アドレスを切り替える必要があるが、バンク0のブロック領域C2,0に対するデータ転送が行われているタイミングで、この行アドレスの切り替えが行われるので、空き時間が発生することなく、効率的にデータの読み出し処理が実行されるのである。
以上の処理により、図18および図19に示したバンク0のブロック領域C0,0、C2,0およびバンク1のブロック領域D1,0、D3,0に格納されている0番目から15番目までの16ピクセル分の画像データおよび320番目から335番目までの16ピクセル分の画像データおよび640番目から655番目までの16ピクセル分の画像データおよび960番目から975番目までの16ピクセル分の画像データが読み出される。この画像データは、図14の画像イメージに対応させると、行方向が16ピクセルであって、列方向が同じ列の4行分の画像データである。つまり、この後、同様に、バンク0とバンク1を切り替えながら、16ピクセル単位で画像データをバースト転送し、順次、行方向が16ピクセルで、同じ列の画像データを読み出すことにより、2次元的なブロックの画像データを連続的に読み出すことが可能となるのである。そして、このような処理を16行分実行することにより、縦16ピクセル×横16ピクセルのマクロブロックに対応する画像データを連続的に読み出すことが可能となるのである。
図20〜図22を用いた説明では、ブロック領域C0,0→D1,0→C2,0→D3,0の画像データを読み出すところまでを説明した。この後、バンク0とバンク1を交互に切り替えつつ、同様に同列のブロック領域の画像データを順次読み出する。つまり、C0,0→D1,0→C2,0→D3,0→C4,0→D5,0→C6,0→D7,0→C8,0→D9,0→C10,0→D11,0→C12,0→D13,0→C14,0→D15,0の順でブロック領域を読み出すことにより、縦16ピクセル×横16ピクセルのマクロブロックに対応する画像データを読み出すことが可能となるのである。
また、上述したように、図14に示すようなバンク0とバンク1に対する格納ルールが満たされていれば、2次元画像の異なる水平ラインの画像データが、SDRAM4の同一の行に格納されていてもよい。たとえば、2次元画像データの1ライン目と2ライン目の画像データが、ともにSDRAM4の1行目のメモリ領域に格納されてもよいことを説明した。この場合にも、マクロブロック単位でのデータの読み出し処理は、高速に行うことが可能である。つまり、16ピクセル単位で、バンクを切り替えながら、画像データが格納されていることにより、一方のバンクから画像データを読み出している間に、他方のバンクの行を切り替えることが可能となるからである。これにより、SDRAM4に対するアクセス行を変更する際にも、空き時間を発生させることなく、読み出し処理を行うことが可能である。また、図14に示すようなバンク0とバンク1に対する格納ルールが満たされていれば、2次元画像データの水平1ラインがSDRAM4の複数の行にまたがって格納されていてもよい。あるいは、2次元画像の各水平ラインの列方向の順序と、SDRAM4に格納される列方向の順序が異なっていてもよいし、とびとびの行に格納されるようになっていてもよい。
このように、マクロブロック単位で画像データを高速に読み出すことが可能であるが、MPEG処理部2により、マクロブロック単位で画像データを書き込む処理も同様である。この書き込み処理も、図20で示したタイミング図、図21、図22で示したアクセス順序で行えばよい。つまり、ブロック領域C0,0→D1,0→C2,0→D3,0→C4,0・・・の順で画像データを書き込むようにすればよい。これにより、マクロブロック単位での画像データの読み込みおよび書き込み両方の処理を高速に行うことが可能である。
以上説明した方法により、縦16ピクセル×横16ピクセルのマクロブロックに対するアクセスを行った後、さらに、隣り合うマクロブロックにアクセスする方法を説明する。図14の画像イメージを用いて説明すると、0番目から15番目までのピクセルデータを含むマクロブロックにアクセスした後に、続けて16番目から31番目までのピクセルデータを含むマクロブロックにアクセスするような処理である。
ここで、上述したように、0番目から15番目までのピクセルデータを含むマクロブロックに対するアクセスにおいて、最後にアクセスするブロック領域はバンク1のブロック領域D15,0であった。このため、続けて16番目から31番目までのピクセルデータを含むマクロブロックにアクセスする場合、最初の16番目から31番目のピクセルデータもバンク1に格納されているため、バンク1に連続してアクセスする必要がある。そして、ブロック領域D15,0とブロック領域D0,0とがSDRAM4の異なる行である場合(この実施の形態では、異なる行に格納されている。)には、行アドレスを切り替える処理が発生し、処理速度が低下する。
そこで、本実施の形態においては、続けて隣り合うマクロブロックにアクセスする場合には、そのアクセス方向を列方向について逆にするようにする。つまり、図23および図24に示すように、このマクロブロックに対しては、図21および図22で示した方法に比べて列方向のアクセス順序を逆転させるのである。
具体的には、まず、ブロック領域C15,0に対するアクセスを行い、次に、ブロック領域D14,0にアクセスする。そして、バンク0とバンク1を切り替えながら同様のアクセスを行う。つまり、C15,0→D14,0→C13,0→D12,0→C11,0→D10,0→C9,0→D8,0→C7,0→D6,0→C5,0→D4,0→C3,0→D2,0→C1,0→D0,0の順でブロック領域を読み出すことにより、縦16ピクセル×横16ピクセルのマクロブロックに対応する画像データを読み出すことが可能となるのである。これにより、隣り合うマクロブロックについて連続してアクセスする場合でも、処理の全般にわたって常にバンク0とバンク1に対するアクセスが交互になるので、一方のバンクに対するアクセスを行っている間に、他方のバンクの行アドレスを切り替える処理を行うことが可能である。
次に、図25を参照して、データの種別に応じた各メモリ領域への画像データの格納方法について説明する。ここでも、図13で示したように、画像データは、YUV4:2:0フォーマットの場合を説明する。
図25で示したタイミング図の中で、前半の2つのバースト転送処理は、輝度データに対する処理である。後半の2つのバースト転送処理は、色差データに対する処理である。まず、輝度データの場合には、4つのYデータを1つのメモリ領域に格納する。つまり、1画素のYデータは8ビットであり、本実施の形態におけるSDRAM4の1アドレスに対応するメモリ領域は32ビットのデータを格納可能としているので、4ピクセル分のYデータを1アドレスのメモリ領域に格納するのである。このとき、SDRAM4にアクセスする32ビットのデータ線を4等分して、それぞれ4ピクセル分のYデータ転送用に使用する。このようにして、バンク0には、4つのアドレスに対応した4つのメモリ領域に16ピクセル分のYデータが格納される。続いて、バンク1において、4つのアドレスに対応した4つのメモリ領域に16ピクセル分のYデータが格納されるのである。
次に、色差データの格納方法について説明する。この実施の形態では、UデータとVデータの組を2組パッキングして1つのメモリ領域に格納する。つまり、UデータおよびVデータは、いずれも1画素8ビットのデータであり、本実施の形態におけるSDRAM4の1アドレスに対応するメモリ領域は32ビットのデータを格納可能としているので、UデータとVデータからなる4ピクセル分のデータを1アドレスのメモリ領域に格納するのである。このとき、SDRAM4にアクセスする32ビットのデータ線を4等分して、それぞれ4ピクセル分のUデータとVデータに割り当てる。このようにして、バンク0には、4つのアドレスに対応した4つのメモリ領域に16ピクセル分の色差データが格納される。続いて、バンク1において、4つのアドレスに対応した4つのメモリ領域に16ピクセル分の色差データが格納されるのである。
このように、UデータとVデータをパッキングして、1つのメモリ領域に格納することにより、輝度データについてSDRAM4にアクセスする場合と、色差データについてSDRAM4にアクセスする場合とで、同じ転送手順を実行することが可能となるのである。
具体的には、まず、輝度データについてマクロブロック単位のデータアクセスを行い、次に、同じマクロブロック領域内の色差データについてマクロブロック単位のデータアクセスを行うことになるが(図25は、輝度データについてのデータアクセス処理と色差データに対するデータアクセス処理がちょうど入れ替わるタイミングを示している。)、輝度データに対するデータアクセスと色差データに対するデータアクセスを同じ手順とすることができるのである。ただし、YUV4:2:0フォーマットの場合には、UデータとVデータの数が行方向(縦方向)にも1/2に間引かれているので、1つのマクロブロックに対する処理は、輝度データに対する処理の半分の処理でよい。
{第3の実施の形態}
次に、本発明の第3の実施の形態について説明する。第3の実施の形態における画像処理装置も、図1で説明した画像処理装置と同様である。第3の実施の形態におけるSDRAM4は、1アドレスのメモリ領域に対して2バイト(16ビット)のデータを格納可能としているが、第1の実施の形態とは異なり、SDRAM4は、連続する8つのアドレスに対して連続的にデータアクセスを行うバースト転送処理を可能としている。つまり、SDRAM4は、128ビット(8アドレス×16ビット)のデータをバースト転送可能とした、16ビットDDR(double data rate)SDRAMである。
この実施の形態においても、2次元画像をラスタ順に16ピクセルごとにブロック化し、図14で示したように、これら各ブロックが千鳥状にバンク0とバンク1に割り当てられて、SDRAM4に格納されることになる。
図26は、メモリ制御部3によって、入力部1より出力されたラスタ順の画像データが、SDRAM4に書き込まれる際のタイミング図である。また、図27は、SDRAM4のバンク0に対する書き込み順序を示す図であり、図28は、SDRAM4のバンク1に対する書き込み順序を示す図である。また、図29は、バンク0の各メモリ領域に格納される画像データのピクセル番号を示す図であり、図30は、バンク1の各メモリ領域に格納される画像データのピクセル番号を示す図である。
ここで、図27および図28において、メモリ領域e0,0、f0,0等の添え字は、1番目の添え字がメモリ領域の行番号を示し、2番目の添え字がメモリ領域の列番号を示している。これらの表記ルールも第1の実施の形態と同様である。また、図27および図28におけるブロック領域E0,0、F0,0等は、8つのメモリ領域からなるブロックを示している。ブロック領域の添え字は、そのブロック領域に含まれている先頭(左端)のメモリ領域の行番号および列番号に対応している。
図26において、まず、バンクアドレスに「0」が設定され、行アドレスおよび列アドレスにいずれも「0」が設定され、0番目から15番目までの16ピクセル分の画像データが、バースト転送される。つまり、1ピクセルの画像データが8ビットであるので、16ピクセル分の画像データ(16ピクセル×8ビット)をバースト転送するのである。この16ピクセル分の画像データは、図27に示すバンク0のブロック領域E0,0に格納される。ブロック領域E0,0は、メモリ領域e0,0、e0,1、e0,2、e0,3、e0,4、e0,5、e0,6、e0,7からなる領域である。なお、図26の表記ルールも図3等と同様である。
一方、図26に示すように、0番目から15番目までの16ピクセル分の画像データが、ブロック領域E0,0に書き込まれているタイミングで、バンクアドレスが「1」に設定される。そして、ブロック領域E0,0への書き込み終了後、16番目から31番目までの16ピクセル分の画像データがバースト転送される。この16ピクセル分の画像データは、図28に示す、バンク1のブロック領域F0,0に格納される。ブロック領域F0,0は、メモリ領域f0,0、f0,1、f0,2、f0,3、f0,4、f0,5、f0,6、f0,7からなる領域である。
さらに、16番目から31番目までの16ピクセル分の画像データがブロック領域F0,0に書き込まれているタイミングで、バンクアドレスが「0」に設定される。そして、ブロック領域F0,0への書き込み終了後、32番目から47番目までの16ピクセル分の画像データがバースト転送される。この16ピクセル分の画像データは、列アドレスに「8」が設定されることにより、図27に示すバンク0のブロック領域E0,8に格納される。ブロック領域E0,8は、メモリ領域e0,8、e0,9、e0,10、e0,11、e0,12、e0,13、e0,14、e0,15からなる領域である。
そして、ブロック領域E0,8に書き込みが行われているタイミングで、バンクアドレスが「1」に設定される。そして、ブロック領域E0,8への書き込み終了後、48番目から63番目までの16ピクセル分の画像データがバースト転送される。この16ピクセル分の画像データは、列アドレスに「8」が設定されることにより、図28に示すバンク1のブロック領域F0,8に格納される。ブロック領域F0,8は、メモリ領域f0,8、f0,9、f0,10、f0,11、f0,12、f0,13、f0,14、f0,15からなる領域である。
以上の処理により、図29および図30に示すように、バンク0のブロック領域E0,0、E0,8およびバンク1のブロック領域F0,0、F0,8に0番目から63番目までの64ピクセル分の画像データが格納される。この後は、同様に、バンク0とバンク1を切り替えながら、16ピクセル単位で画像データをバースト転送し、順次SDRAM4に画像データを格納するのである。図27および図28における矢印は、それぞれバンク0およびバンク1への格納順序を示している。上述した手順により、2次元画像の0行目の画像データが矢印の方向に格納された後、1行目の画像データが同様に矢印の方向に格納され、順次、各行の画像データが格納される。また、SDRAM4に対する書き込み手順を、ブロック領域を用いて表現すると、ブロック領域E0,0→F0,0→E0,8→F0,8→E0,16→F0,16→C0,24→・・・の順で、2次元画像データを順次格納することになる。
このように、2次元画像の行方向については、16ピクセルごとにバンク0とバンク1が交互になるようSDRAM4に対してデータが格納される。そして、図14でも示したように、列方向については、1行ごとにバンク0とバンク1が交互になるようにSDRAM4に格納するのである。
そして、第2の実施の形態で説明したように、行方向のピクセル数が16ピクセルの偶数倍である場合には、バッファを利用することにより、列方向については2次元画像が1行ごとにバンク0とバンク1に対して交互に格納されるようにする。また、行方向のピクセル数が16ピクセルの奇数倍である場合には、バッファを利用する必要はない。
このように、MPEG処理の対象となる2次元画像データをバンク0とバンク1とを切り替えながら、2次元画像イメージでSDRAM4に格納する。そして、画像の列方向についてはバンク0とバンク1が交互になるようにSDRAM4に格納する。このため、マクロブロックに注目した場合、SDRAM4の複数の行に画像データがまたがって格納されることとなるが、アクセスする行を切り替える場合にも、空き時間が発生することはない。このアクセス処理については、後で具体的に説明するが、バンク1のデータにアクセスしているタイミングで、バンク0についてアクセスする行を切り替え、バンク0のデータにアクセスしているタイミングで、バンク1についてアクセスする行を切り替えることが可能となるからである。
また、第1あるいは第2の実施の形態で説明したように、ラスタ順で入力する2次元画像データの1ライン目の画像データを、SDRAM4の1行目(バンク0あるいはバンク1)に格納した後、2ライン目の画像データを続けて、SDRAM4の1行目に格納するような方法をとってもよい。同様に、SDRAM4の各行において、画像データのラインに対応して格納する行を変更させることはなく、順次、画像データを詰めて格納するようにしてもよい。あるいは逆に、2次元画像の水平1ラインのデータサイズがSDRAM4の1行に格納可能なサイズ(バンク0とバンク1の1行に格納可能なサイズの和)より大きくてもよい。この場合にも、16ピクセル単位で画像データをいずれかのバンクの同一行に格納するようにし、2次元画像の水平1ラインの途中で各バンクの行アドレスを変更するようにしても問題はない。つまり、本発明は、本質的には、マクロブロックを構成する1行の16ピクセル分の画像データが全て一方のバンクの同一行に格納され、マクロブロックを構成する次の行の16ピクセル分の画像データが全て他方のバンクの同一行に格納されることである。
次に、MPEG処理部2がMPEG圧縮処理を行うために、SDRAM4に格納された画像データにマクロブロック単位でアクセスする処理について説明する。なお、このアクセス処理には、MPEG処理部2がMPEG圧縮処理を行う対象であるマクロブロック単位の画像データを読み出す処理と、マクロブロック単位の画像データを書き込む処理がある。
図31は、メモリ制御部3によって、SDRAM4に格納された画像データにアクセスする処理のタイミング図である。また、図32は、SDRAM4のバンク0に対するアクセス順序を示す図であり、図33は、SDRAM4のバンク1に対するアクセス順序を示す図である。さらに、図32および図33で示した方法によりマクロブロックにアクセスした後、続けて隣り合うマクロブロックをアクセスする方法を示したのが図34および図35である。図34は、SDRAM4のバンク0に対するアクセス順序を示す図であり、図35は、SDRAM4のバンク1に対するアクセス順序を示す図である。なお、図31ないし図35は、マクロブロック単位での画像データの読み出し処理と書き込み処理に共通の特徴を示す図である。また、図32ないし図35における各ブロック領域E0,0、F0,0等は、図27および図28における各ブロック領域E0,0、F0,0等に対応しており、上述した書き込み処理により、図29および図30で示したような配列で2次元画像データが格納されているものとする。
まず、マクロブロック単位での画像データの読み出し処理について説明する。図31において、まず、バンクアドレスに「0」が設定され、行アドレスおよび列アドレスにいずれも「0」が設定され、0番目から15番目までの16ピクセル分の画像データが、バースト転送される。具体的には、図32で示すバンク0のブロック領域E0,0に格納されている16ピクセル分の画像データが読み出される。なお、図31における表記ルールは、図3等と同様である。
一方、図31に示すように、ブロック領域E0,0の画像データに対する読み出し処理が行われているタイミングで、バンクアドレスが「1」に設定されるとともに行アドレスに「1」が設定され、ブロック領域E0,0からの読み込み処理終了後、320番目から335番目までの16ピクセル分の画像データがバースト転送される。具体的には、図33で示すバンク1のブロック領域F1,0に格納されている16ピクセル分の画像データが読み出される。
さらに、図31に示すように、ブロック領域F1,0の画像データの読み出し処理が行われているタイミングで、バンクアドレスが「0」に設定されるとともに行アドレスに「2」が設定され、ブロック領域F1,0からの読み込み処理終了後、640番目から655番目までの16ピクセル分の画像データがバースト転送される。具体的には、図33で示すバンク0のブロック領域E2,0に格納されている16ピクセル分の画像データが読み出される。ブロック領域E2,0は、メモリ領域e2,0、e2,1、e2,2、e2,3、e2,4、e2,5、e2,6、e2,7からなる領域である。ここで、バンク0については、ブロック領域E0,0に対するアクセス処理の後、ブロック領域E2,0に対するアクセス処理が行われるため、アクセスする行アドレスを切り替える必要があるが、バンク1のブロック領域F1,0に対するデータ転送が行われているタイミングで、この行アドレスの切り替えが行われるので、空き時間が発生することなく、効率的にデータの読み出し処理が実行されるのである。
そして、ブロック領域E2,0の画像データの読み出し処理が行われているタイミングで、バンクアドレスが「1」に設定されるとともに行アドレスに「3」が設定され、ブロック領域E2,0からの読み込み処理終了後、960番目から975番目までの16ピクセル分の画像データがバースト転送される。具体的には、図33で示すバンク1のブロック領域F3,0に格納されている16ピクセル分の画像データが読み出される。ブロック領域F3,0は、メモリ領域f3,0、f3,1、f3,2、f3,3、f3,4、f3,5、f3,6、f3,7からなる領域である。同様に、バンク1については、ブロック領域F1,0に対するアクセス処理の後、ブロック領域F3,0に対するアクセス処理が行われるため、アクセスする行アドレスを切り替える必要があるが、バンク0のブロック領域E2,0に対するデータ転送が行われているタイミングで、この行アドレスの切り替えが行われるので、空き時間が発生することなく、効率的にデータの読み出し処理が実行されるのである。
以上の処理により、図29および図30に示したバンク0のブロック領域E0,0、E2,0およびバンク1のブロック領域F1,0、F3,0に格納されている0番目から15番目までの16ピクセル分の画像データおよび320番目から335番目までの16ピクセル分の画像データおよび640番目から655番目までの16ピクセル分の画像データおよび960番目から975番目までの16ピクセル分の画像データが読み出される。この画像データは、図14の画像イメージに対応させると、行方向が16ピクセルであって、列方向が同じ列の4行分の画像データである。つまり、この後、同様に、バンク0とバンク1を切り替えながら、16ピクセル単位で画像データをバースト転送し、順次、行方向が16ピクセルで、同じ列の画像データを読み出すことにより、2次元的なブロックの画像データを連続的に読み出すことが可能となるのである。そして、このような処理を16行分実行することにより、縦16ピクセル×横16ピクセルのマクロブロックに対応する画像データを連続的に読み出すことが可能となるのである。
図31〜図33を用いた説明では、ブロック領域E0,0→F1,0→E2,0→F3,0の画像データを読み出すところまでを説明した。この後、バンク0とバンク1を交互に切り替えつつ、同様に同列のブロック領域の画像データを順次読み出する。つまり、E0,0→F1,0→E2,0→F3,0→E4,0→F5,0→E6,0→F7,0→E8,0→F9,0→E10,0→F11,0→E12,0→F13,0→E14,0→F15,0の順でブロック領域を読み出すことにより、縦16ピクセル×横16ピクセルのマクロブロックに対応する画像データを読み出すことが可能となるのである。
また、上述したように、図14に示すようなバンク0とバンク1に対する格納ルールが満たされていれば、2次元画像の複数の水平ラインのデータが、SDRAM4の同一の行に格納されていてもよいし、2次元画像データの水平1ラインがSDRAM4の複数の行にまたがって格納されていてもよい。あるいは、2次元画像の各水平ラインの列方向の順序と、SDRAM4に格納される列方向の順序が異なっていてもよいし、とびとびの行に格納されるようになっていてもよい。
このように、マクロブロック単位で画像データを高速に読み出すことが可能であるが、MPEG処理部2により、マクロブロック単位で画像データを書き込む処理も同様である。この書き込み処理も、図31で示したタイミング図、図32、図33で示したアクセス順序で行えばよい。つまり、ブロック領域E0,0→F1,0→E2,0→F3,0→E4,0・・・の順で画像データを書き込むようにすればよい。これにより、マクロブロック単位での画像データの読み込みおよび書き込み両方の処理を高速に行うことが可能である。
以上説明した方法により、縦16ピクセル×横16ピクセルのマクロブロックに対するアクセスを行った後、さらに、隣り合うマクロブロックにアクセスする方法は、第2の実施の形態と同様である。続けて隣り合うマクロブロックにアクセスする場合には、そのアクセス方向を列方向について逆にするようにする。つまり、図34および図35に示すように、このマクロブロックに対しては、図32および図33で示した方法に比べて列方向のアクセスを逆転させるのである。
まず、ブロック領域E15,0に対するアクセスを行い、次に、ブロック領域F14,0にアクセスする。そして、バンク0とバンク1を切り替えながら同様のアクセスを行う。つまり、E15,0→F14,0→E13,0→F12,0→E11,0→F10,0→E9,0→F8,0→E7,0→F6,0→E5,0→F4,0→E3,0→F2,0→E1,0→F0,0の順でブロック領域を読み出すことにより、縦16ピクセル×横16ピクセルのマクロブロックに対応する画像データを読み出すことが可能となるのである。これにより隣り合うマクロブロックに対して連続的にアクセスする場合でも、処理の全般にわたって常にバンク0とバンク1に対するアクセスが交互になるので、一方のバンクに対するアクセスを行っている間に、他方のバンクの行を切り替える処理を行うことが可能である。
次に、図36を参照して、データの種別に応じた各メモリ領域への画像データの格納方法について説明する。ここでも、図13で示したように、画像データは、YUV4:2:0フォーマットの場合を説明する。
図36で示したタイミング図の中で、前半の2つのバースト転送処理は、輝度データに対する処理である。後半の2つのバースト転送処理は、色差データに対する処理である。まず、輝度データの場合には、2つのYデータを1つのメモリ領域に格納する。つまり、1画素のYデータは8ビットであり、本実施の形態におけるSDRAM4の1アドレスに対応するメモリ領域は16ビットのデータを格納可能としているので、2ピクセル分のYデータを1アドレスのメモリ領域に格納するのである。このとき、SDRAM4にアクセスする16ビットのデータ線のうち上位8ビットと下位8ビットを、それぞれ2ピクセル分のYデータ転送用に使用する。このようにして、バンク0には、8つのアドレスに対応した8つのメモリ領域に16ピクセル分のYデータが格納される。続いて、バンク1において、8つのアドレスに対応した8つのメモリ領域に16ピクセル分のYデータが格納されるのである。
次に、色差データの格納方法について説明する。この実施の形態では、1組のUデータとVデータをパッキングして1つのメモリ領域に格納する。つまり、UデータおよびVデータは、いずれも1画素8ビットのデータであり、本実施の形態におけるSDRAM4の1アドレスに対応するメモリ領域は16ビットのデータを格納可能としているので、UデータとVデータからなる2ピクセル分のデータを1アドレスのメモリ領域に格納するのである。このとき、SDRAM4にアクセスする16ビットのデータ線のうち、たとえば上位8ビットをUデータ転送用に割り当て、下位8ビットをVデータ転送用に割り当てる。このようにして、バンク0には、8つのアドレスに対応した8つのメモリ領域に16ピクセル分の色差データが格納される。続いて、バンク1において、8つのアドレスに対応した8つのメモリ領域に16ピクセル分の色差データが格納されるのである。
このように、UデータとVデータをパッキングして、1つのメモリ領域に格納することにより、輝度データについてSDRAM4にアクセスする場合と、色差データについてSDRAM4にアクセスする場合とで、同じ転送手順を実行することが可能となるのである。
具体的には、まず、輝度データについてマクロブロック単位のデータアクセスを行い、次に、同じマクロブロック領域内の色差データについてマクロブロック単位のデータアクセスを行うことになるが(図36は、輝度データについてのデータアクセス処理と色差データに対するデータアクセス処理がちょうど入れ替わるタイミングを示している。)、輝度データに対するデータアクセスと色差データに対するデータアクセスを同じ手順とすることができるのである。ただし、YUV4:2:0フォーマットの場合には、UデータとVデータの数が行方向(縦方向)にも1/2に間引かれているので、1つのマクロブロックに対する処理は、輝度データに対する処理の半分の処理でよい。
以上の本発明の3つの実施の形態について説明した。そして、上記各実施の形態においては、メモリとしてSDRAMを例に説明したが、本発明は、SDRAMのみならず、一般的にDRAMに対して適用可能である。