以下、本発明の実施形態について、図面を参照して説明する。本実施形態においては、例えば、静止画用カメラなどの画像処理装置を本発明のデータ処理装置とし、このデータ処理装置に本発明のデータ転送制御装置を適用した場合の一例について説明する。図1は、本実施形態におけるデータ転送制御装置を適用した画像処理装置の概略構成を示したブロック図である。図1において、画像処理装置1は、イメージセンサ10と、画像転送部21および評価値生成部22を備えた前処理部20と、画像処理部30と、表示処理部40と、表示デバイス41と、カードインタフェース部50と、記録媒体51と、CPU60と、バスアービタ70と、DRAMインタフェース部71と、DRAM72とを備えている。
図1に示したように、画像処理装置1内の画像転送部21、評価値生成部22、画像処理部30、表示処理部40、カードインタフェース部50、およびCPU60のそれぞれは、本実施形態のデータ転送制御装置100、データ転送制御装置200、またはデータ転送制御装置300によって共通バスであるデータバス80に接続されている。そして、データバス80に接続されたそれぞれの処理ブロックは、DMA要求などのDRAMへのアクセス要求を、データバス80を介してバスアービタ70に出力し、バスアービタ70に接続されたDRAMインタフェース部71によって制御されるDRAM72からのデータの読み出し、およびDRAM72へのデータの書き込みを行う。なお、データバス80には、各処理ブロックがDRAM72との間でDMAを行うための、DMA要求信号、DMA受け付け信号、読み出し/書き込み制御信号(RW制御信号)、アドレス、およびデータなどの信号が含まれている。
イメージセンサ10は、図示しないレンズによって結像された被写体の光学像を光電変換するCCD(Charge Copled Device:電荷結合素子)イメージセンサや、CMOS(Complementary Metal−Oxide Semiconductor:相補型金属酸化膜半導体)イメージセンサに代表されるイメージセンサである。イメージセンサ10は、被写体光に応じた画像信号(以下、「入力画像データ」という)を前処理部20に出力する。
前処理部20は、イメージセンサ10から入力された入力画像データに、キズ補正やシェーディング補正などの前処理を施す処理ブロックである。前処理部20に備えた画像転送部21は、前処理した結果の画像データ(以下、「前処理画像データ」という)を、DRAM72に転送する(書き込む)。また、前処理部20に備えた評価値生成部22は、前処理した前処理画像データに基づいて、自動露出(Auto Exposure:AE)、自動焦点(Auto Focus:AF)、オートホワイトバランス(Auto White Balance:AWB)などの制御を行うための評価値を生成し、生成した評価値をDRAM72に転送する(書き込む)。
画像転送部21および評価値生成部22は、前処理画像データまたは評価値をDRAM72に転送する際に、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、画像転送部21および評価値生成部22は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、前処理画像データまたは評価値を、バスアービタ70およびDRAMインタフェース部71を介してDRAM72に出力する。
画像処理部30は、DRAM72に記憶している前処理画像データを取得し(読み出し)、ノイズ除去、YC変換処理、リサイズ処理、JPEG圧縮処理などの各種の画像処理を施して、表示用の画像データや記録用の画像データを生成する処理ブロックである。また、画像処理部30は、生成した表示用の画像データおよび記録用の画像データを、再びDRAM72に転送する(書き込む)処理ブロックでもある。
画像処理部30は、前処理画像データをDRAM72から取得する際に、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、画像処理部30は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、DRAMインタフェース部71およびバスアービタ70を介してDRAM72から前処理画像データを読み出す。
また、画像処理部30は、表示用の画像データおよび記録用の画像データを、DRAM72に転送する際に、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、画像処理部30は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、生成した表示用の画像データおよび記録用の画像データを、バスアービタ70およびDRAMインタフェース部71を介してDRAM72に出力する。
表示処理部40は、DRAM72に記憶している表示用の画像データを取得し(読み出し)、取得した表示用の画像データにOSD(On−Screen Display)表示用のデータを重畳する処理などの表示処理を施して表示デバイス41に出力する処理ブロックである。
表示処理部40は、表示用の画像データをDRAM72から取得する際に、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、表示処理部40は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、DRAMインタフェース部71およびバスアービタ70を介してDRAM72から表示用の画像データを読み出す。そして、読み出した表示用の画像データに表示処理を施した後、表示処理後の画像データを、表示デバイス41に出力する。
表示デバイス41は、TFT(薄膜トランジスター:Thin Film Transistor)液晶ディスプレイ(LCD:Liquid Crystal Display)や、有機EL(Electro Luminescence)ディスプレイなどの表示デバイスであり、表示処理部40から出力された表示処理後の画像データに応じた画像を表示する。
カードインタフェース部50は、DRAM72に記憶している記録用の画像データを取得し(読み出し)、記録媒体51に記録させる処理ブロックである。また、カードインタフェース部50は、記録媒体51に記録している画像データを読み出し、読み出した画像データを、DRAM72に転送する(書き込む)処理ブロックでもある。
カードインタフェース部50は、記録用の画像データをDRAM72から取得する際に、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、カードインタフェース部50は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、DRAMインタフェース部71およびバスアービタ70を介してDRAM72から記録用の画像データを読み出す。そして、読み出した記録用の画像データを記録媒体51に出力し、記録させる。
また、カードインタフェース部50は、記録媒体51から読み出した画像データを、DRAM72に転送する際に、DRAM72へのDMA要求信号を、バスアービタ70に出力する。そして、カードインタフェース部50は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、記録媒体51から読み出した画像データを、バスアービタ70およびDRAMインタフェース部71を介してDRAM72に出力する。
記録媒体51は、メモリカードなどの記録媒体であり、カードインタフェース部50から出力された記録用の画像データを記録する。また、カードインタフェース部50によって記録している画像データが読み出される。なお、図1においては、記録媒体51も画像処理装置1の構成要素としているが、記録媒体51は、画像処理装置1に着脱可能な構成である。
CPU60は、画像処理装置1の構成要素、すなわち、画像処理装置1全体を制御する処理ブロックである。CPU60が画像処理装置1のそれぞれの構成要素を制御する際にもDRAM72へのアクセスが行われる。ただし、CPU60がDRAM72から取得する(読み出す)データや、DRAM72に転送する(書き込む)データは、上述した処理ブロックにおける画像データのみではなく、画像処理装置1のそれぞれの構成要素の動作を設定するためのパラメータのデータも含まれる。
CPU60がDMAによってDRAM72からデータを取得する際には、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、CPU60は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、取得するデータをDRAMインタフェース部71およびバスアービタ70を介してDRAM72から読み出す。
また、CPU60がDMAによってDRAM72にデータを転送する際には、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、CPU60は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、転送するデータを、バスアービタ70およびDRAMインタフェース部71を介してDRAM72に出力する。
バスアービタ(共通バス調停部)70は、データバス80に接続されている画像処理装置1内の複数の処理ブロックからのDMA要求に応じて、DRAM72へのデータの転送(書き込み)、およびDRAM72からのデータの取得(読み出し)の調停を行う。
より具体的には、バスアービタ70は、それぞれの処理ブロックから入力されたDMA要求信号に応じて、バンクインターリーブや各処理ブロックの優先度に基づいて、各処理ブロックによるDRAM72へのアクセスの調停を行い、DMA要求を受け付ける処理ブロックを決定する。そして、決定した処理ブロックに、DMA受け付け信号を出力する。
その後、バスアービタ70は、決定した処理ブロックがDRAM72にデータを転送する際には、DRAM72にデータを書き込むことを表すRW制御信号、処理ブロックから入力されたDRAM72のアドレス、および転送するデータを、DRAMインタフェース部71に出力する。また、バスアービタ70は、決定した処理ブロックがDRAM72からデータを取得する際には、DRAM72からデータを読み出すことを表すRW制御信号、および処理ブロックから入力されたDRAM72のアドレスをDRAMインタフェース部71に出力する。その後、DRAMインタフェース部71から入力されたデータ、すなわち、DRAM72から取得したデータを、決定した処理ブロックに出力する。
DRAMインタフェース部71は、バスアービタ70から入力されたDRAM72の書き込みまたは読み出しを表すRW制御信号と、DRAM72のアドレスとに基づいて、DRAM72へのデータの書き込みまたはデータの読み出しの制御を行う。すなわち、バスアービタ70によって決定された処理ブロックからのDRAMアクセスに応じた、DRAM72へのデータの書き込みまたはDRAM72からのデータの読み出しを実行する。
より具体的には、DRAMインタフェース部71は、バスアービタ70から入力されたRW制御信号が、DRAM72への書き込みを表しているときには、バスアービタ70から入力されたデータを、DRAM72に出力する。また、バスアービタ70から入力されたRW制御信号が、DRAM72の読み出しを表しているときには、DRAM72から出力されたデータを、バスアービタ70に出力する。
DRAM72は、DRAMインタフェース部71によってアクセス制御され、画像処理装置1内のそれぞれの処理ブロックの処理過程における様々なデータを記憶するメモリである。
このように、画像処理装置1内の各処理ブロックは、それぞれの処理ブロックがDRAM72にアクセスする際に、バスアービタ70にDMA要求を出す。そして、バスアービタ70にDMA要求が受け付けられた後に、データバス80、バスアービタ70、およびDRAMインタフェース部71を介して、DRAM72へのデータ書き込み、またはDRAM72からのデータ読み出しを行う。
<第1の入れ替え処理>
ここで、画像処理装置1内の各処理ブロックにおけるDRAM72へのアクセス方法について説明するため、図2および図3を参照して画像処理装置1の動作の一例について説明する。画像処理装置1では、画像処理装置1の機能や画像処理装置1を設計、製造する際の制約などによって、現在の画像を反転する処理(以下、「反転処理」という)を行う場合がある。図2は、本実施形態の画像処理装置1における画像の反転処理の一例を示した図である。また、図3は、本実施形態の画像処理装置1における画像の反転処理でのDRAM72へのアクセス方法の一例を模式的に示した図である。
例えば、画像処理装置1においてイメージセンサ10を配置する基板のレイアウトの制約によって、イメージセンサ10を180°回転した状態で配置しなければならない場合がある。この場合には、画像が上下左右反転した状態でイメージセンサ10に結像されるため、前処理部20がイメージセンサ10から入力された入力画像データを前処理してDRAM72に転送する際には、前処理画像データを上下左右方向に反転処理して出力することになる(図2(d)参照)。また、例えば、画像処理装置1においてレンズなどの光学系に屈折光学系などを用いる場合には、反射ミラーの配置によって、イメージセンサ10に結像される被写体の光学像の方向が、左右反転した状態、上下反転した状態、または上下左右反転した状態など、様々な方向になる場合がある。この場合にも、前処理部20がイメージセンサ10から入力された入力画像データを前処理してDRAM72に転送する際に、前処理画像データを左右方向、上下方向、または上下左右方向に反転処理して出力することになる(図2(b)〜(d)参照)。
例えば、画像処理装置1において表示デバイス41を配置する基板のレイアウトの制約によって、表示デバイス41を180°回転した状態で配置しなければならない場合がある。この場合には、画像が上下左右反転した状態で表示デバイス41に表示されるため、表示処理部40が表示用の画像データをDRAM72から取得する(読み出す)際に、表示用の画像データを上下左右方向に反転処理し、反転処理した表示用の画像データを表示デバイス41に出力することになる(図2(d)参照)。また、例えば、画像処理装置1における機能として、可動式の表示デバイス41を搭載している場合には、可動部の状況に応じて、表示デバイス41に表示される画像が左右反転した状態、上下反転した状態、または上下左右反転した状態など、様々な方向になる場合がある。この場合にも、表示処理部40が表示用の画像データをDRAM72から取得する(読み出す)際に、可動部の状況に応じて、表示用の画像データを左右方向、上下方向、または上下左右方向に反転処理し、反転処理した表示用の画像データを表示デバイス41に出力することになる(図2(b)〜(d)参照)。
このように、画像処理装置1では、イメージセンサ10の取り付け方向の制約、レンズなどの光学系によって結像される被写体の光学像の方向の制約、表示デバイス41の取り付け方向の制約、および可動式の表示デバイス41において画像を正しく表示させる機能に応じて、画像に対して反転処理を行う必要が出てくる。このため、画像処理装置1に備えたそれぞれの処理ブロックでは、DRAM72にアクセスする際のアドレスを制御することによって、画像データの反転処理を行う。
例えば、図3に示したように現在の画像を左右方向に反転処理して表示デバイス41に表示させる場合を考える。入力画像データが、図3(a)に示したような方向でイメージセンサ10から入力された場合、前処理部20および画像処理部30のそれぞれは、画像の左側から右側に向かって順番にDRAM72のアドレスを割り当てて、処理した前処理画像データおよび表示用の画像データをDRAM72に転送する(書き込む)。図3(a)には、画像の左側から順番に、例えば、0,1,2,3,・・・,99という昇順のアドレスを割り当てて、DRAM72に表示用の画像データを転送した状態を示している。その後、表示処理部40は、図3(b)に示したように、左右方向に反転処理した画像を表示デバイス41に表示させるため、画像の右側から左側に向かって順番に、DRAM72に記憶されている表示用の画像データを取得する(読み出す)。つまり、図3(b)に示したように、画像の右側から順番に、例えば、99,98,97,96,・・・,0という降順のアドレスで、記憶されている表示用の画像データを読み出す。このように、DRAM72に記憶されている表示用の画像データをアドレスの順番を逆にして読み出すことによって、画像を左右方向に反転処理することができる。
このとき、上述した例における0〜99のアドレスが、DRAM72の同じバンクに対するアドレスではなく、DRAM72の異なるバンクに対するアドレスである場合には、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスが発生し、DRAM72へのアクセス効率が低下してしまうことがある。図4は、本実施形態の画像処理装置1に備えた処理ブロックにおけるDRAM72のバンクアクセスに起因するロス時間の一例を模式的に示した図である。図4には、反転処理を行わない画像処理部30がDRAM72のアドレスを昇順に指定して表示用の画像データをDRAM72に転送し、反転処理を行う表示処理部40がDRAM72のアドレスを降順に指定して表示用の画像データを取得するDRAM72へのアクセスにおいて、それぞれのアドレスが異なるバンクを指定するアドレスである場合のタイミングを示している。
図4に示したように、画像処理部30と表示処理部40とが交互にDRAM72へのアクセスを行うと、DRAM72にアクセスする処理ブロックが切り替わるときに、DRAM72の同一のバンクに対する連続したアクセスが発生してしまう。より具体的には、反転処理を行わない画像処理部30がDRAM72のアドレスを昇順に指定することによって、バンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスした後、反転処理を行う表示処理部40がDRAM72のアドレスを降順に指定することによって、バンクD、バンクC、バンクB、バンクAの順番でDRAM72のそれぞれのバンクにアクセスする。これにより、画像処理部30によるバンクDへのアクセスと、表示処理部40によるバンクDへのアクセスとが連続してしまう。このとき、DRAM72は、バンクDへの連続したアクセスを受け付けることができないため、この期間がロス時間となり、DRAM72へのアクセス効率が低下してしまう。
そこで、各処理ブロックに備えたデータ転送制御装置は、対応する処理ブロックがDRAM72にアクセスする際のバンクの順番を入れ替えることによって、DRAM72の同一のバンクに対する連続したアクセスを回避する。図5は、本実施形態の画像処理装置1に備えた処理ブロックによる第1の入れ替え処理によってDRAM72のバンクアクセスに起因するロス時間を回避する一例を模式的に示した図である。図5には、図4に示したDRAM72のバンクアクセスと同様に、反転処理を行わない画像処理部30がDRAM72のアドレスを昇順に指定して表示用の画像データをDRAM72に転送し、反転処理を行う表示処理部40がDRAM72のアドレスを降順に指定して表示用の画像データを取得するDRAM72へのアクセスにおいて、それぞれのアドレスが異なるバンクを指定するアドレスである場合のタイミングを示している。
図5に示したように、画像処理部30と表示処理部40とが交互にDRAM72へのアクセスを行うと、図4に示したDRAM72のバンクアクセスと同様に、DRAM72にアクセスする処理ブロックが切り替わるときに、DRAM72の同一のバンクに対する連続したアクセスが発生してしまう。しかし、図5に示したDRAM72のバンクアクセスでは、表示処理部40に備えたデータ転送制御装置200が、DRAM72のそれぞれのバンクに対するアクセスの順番を入れ替える。これにより、表示処理部40は、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスを回避することができる。
より具体的には、図4に示したDRAM72のバンクアクセスと同様に、反転処理を行わない画像処理部30がDRAM72のアドレスを昇順に指定することによって、バンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスした後、反転処理を行わない表示処理部40がDRAM72のアドレスを降順に指定することによって、バンクD、バンクC、バンクB、バンクAの順番でDRAM72のそれぞれのバンクにアクセスする。これにより、図4に示したDRAM72のバンクアクセスと同様に、画像処理部30によるバンクDへのアクセスと、表示処理部40によるバンクDへのアクセスとが連続してしまう。このとき、表示処理部40に備えたデータ転送制御装置200は、DRAM72のそれぞれのバンクにアクセスする順番を、画像処理部30と同様のバンクA、バンクB、バンクC、バンクDの順番に入れ替える。これにより、反転処理を行わない画像処理部30と反転処理を行う表示処理部40とが交互にDRAM72へのアクセスを行う場合でも、DRAM72の同一のバンクに対する連続したアクセスを回避することができる。
このように、画像処理装置1内の各処理ブロックに備えたデータ転送制御装置は、対応する処理ブロックがDRAM72にアクセスする際のバンクの順番を、他の処理ブロックがDRAM72にアクセスする際のバンクの順番と同じ順番になるように入れ替える。これにより、それぞれの処理ブロックがDRAM72にアクセスする際のバンクの順番が、画像処理装置1内の全ての処理ブロックで同じになる。これにより、画像処理装置1内に反転処理を行わない処理ブロックと反転処理を行う処理ブロックとが混在し、DRAM72に対して複数の処理ブロックがアクセスした場合でも、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスが発生しなくなり、ロス時間によるDRAM72へのアクセス効率の低下を抑えることができる。
次に、画像処理装置1内の各処理ブロックに備えたデータ転送制御装置について説明する。なお、データ転送制御装置100、データ転送制御装置200、およびデータ転送制御装置300は、データを入出力する方向が異なるが、データを入出力する際の考え方は同様である。従って、以下の説明においては、代表して画像処理装置1内の画像転送部21、評価値生成部22、および画像処理部30に備えたデータ転送制御装置100について説明する。なお、以下の説明においては、画像転送部21が出力する前処理画像データ、評価値生成部22が出力する評価値、画像処理部30が出力する表示用の画像データおよび記録用の画像データをまとめて、「画像データ」という。
図6は、本実施形態の画像処理装置1に備えたデータ転送制御装置100の概略構成を示したブロック図である。図6に示したように、データ転送制御装置100は、動作モードレジスタ101と、パッキング部110と、バッファライト制御部120と、データバッファ130と、アドレスバッファ140と、バッファリード制御部150と、バスインタフェース部160と、を備えている。
データ転送制御装置100は、データバス80を介してDRAM72に画像データを転送する(書き込む)ためのDMA要求信号を、データバス80を介してバスアービタ70に出力する。このとき、データ転送制御装置100は、DRAM72にアクセスするバンクの順番が、予め定めた順番で連続するように、DRAM72に転送する複数の画像データをまとめてから、DMA要求信号をバスアービタ70に出力する。そして、データ転送制御装置100は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、まとめた画像データを、予め定めたバンクの順番で連続するように、データバス80を介してバスアービタ70に出力する。これにより、データ転送制御装置100からのDMAに応じて、バスアービタ70およびDRAMインタフェース部71が動作し、データ転送制御装置100に指定されたDRAM72のアドレスに対応する記憶領域に、データ転送制御装置100から出力された画像データが書き込まれる。
以下の説明においては、データ転送制御装置100が画像データを転送する先のDRAM72のアドレス空間が、4つのバンク(バンクA、バンクB、バンクC、およびバンクD)で構成されている場合について説明する。また、以下の説明においては、データ転送制御装置100による1回のDMAで、DRAM72の4つのバンクにそれぞれ1回ずつ連続してアクセスするバンクインターリーブでのアクセスを行う、つまり、DRAM72の4つのバンクに対する連続したアクセスを、DMAの1回の転送単位とする場合について説明する。
動作モードレジスタ101は、データ転送制御装置100がDMAによってDRAM72にアクセスする際の動作に関する情報、つまり、動作モードの情報が設定される。この動作モードの情報には、例えば、DRAM72のそれぞれのバンクにアクセスする順番を入れ替えるための情報、入力された画像データを予め定めた単位にまとめる(パッキングする)ときの画像データの順番を入れ替えるための情報、DRAM72の水平方向と垂直方向のアドレス発生順番を入れ替えるための情報などが含まれている。そして、動作モードレジスタ101は、設定された動作モードの情報を、パッキング部110に出力する。例えば、反転なし、左右反転、上下反転、上下左右反転などの反転処理における動作モードの情報を、パッキング部110に出力する。
動作モードレジスタ101への動作モードの情報の設定は、例えば、CPU60が、データ転送制御装置100がDMAによる画像データの転送を開始する前に、事前に設定しておく。例えば、動作モードとして「反転なし」の反転処理を設定する場合には、画像データをパッキングする順番を昇順に、DRAM72のアドレス発生順番を水平方向に昇順に垂直方向に昇順に設定する。この動作モードでは、バンクにアクセスする順番は昇順となる。また、例えば、動作モードとして「左右反転」の反転処理を設定する場合には、画像データをパッキングする順番を降順に、DRAM72のアドレス発生順番を水平方向に降順に垂直方向に昇順に設定する。この動作モードでは、バンクにアクセスする順番は降順となる。また、例えば、動作モードとして「上下反転」の反転処理を設定する場合には、画像データをパッキングする順番を昇順に、DRAM72のアドレス発生順番を水平方向に昇順に垂直方向に降順に設定する。この動作モードでは、バンクにアクセスする順番は昇順となる。また、例えば、動作モードとして「上下左右反転」の反転処理を設定する場合には、画像データをパッキングする順番を降順に、DRAM72のアドレス発生順番を水平方向に降順に垂直方向に降順に設定する。この動作モードでは、バンクにアクセスする順番は降順となる。
パッキング部110は、動作モードレジスタ101から入力された動作モードの情報に基づいて、順次入力された画像データをデータバス80のバス幅に併せた単位にまとめて(パッキングして)、バッファライト制御部120に出力する。例えば、画像データが8ビットでデータバス80のバス幅が32ビットである場合には、順次入力された4つの画像データをパッキングして32ビットの画像データにし、パッキングした32ビットの画像データをバッファライト制御部120に出力する。このとき、動作モードレジスタ101から入力された動作モードの情報が「反転なし」である場合には、画像データをパッキングする順番が昇順であるため、順次入力された4つの画像データを、例えば、下位側のビットから詰めて32ビットの画像データにする。また、動作モードレジスタ101から入力された動作モードの情報が「左右反転」である場合には、画像データをパッキングする順番が降順であるため、順次入力された4つの画像データを、例えば、上位側のビットから詰めて32ビットの画像データにする。
また、パッキング部110は、動作モードレジスタ101から入力された動作モードの情報に基づいて、パッキングした画像データを転送するDRAM72のアドレスを生成し、生成したアドレスをバッファライト制御部120に出力する。例えば、動作モードレジスタ101から入力された動作モードの情報が「反転なし」である場合には、バンクにアクセスする順番が昇順であり、DRAM72のアドレス発生順番が水平方向に昇順で垂直方向に昇順であるため、パッキングした32ビットの画像データを転送するバンクを昇順に指定し、DRAM72の記憶領域を水平方向に昇順に垂直方向に昇順に指定するアドレスを生成する。また、例えば、動作モードレジスタ101から入力された動作モードの情報が「左右反転」である場合には、バンクにアクセスする順番が降順であり、DRAM72のアドレス発生順番が水平方向に降順で垂直方向に昇順であるため、パッキングした32ビットの画像データを転送するバンクを降順に指定し、DRAM72の記憶領域を水平方向に降順に垂直方向に昇順に指定するアドレスを生成する。
バッファライト制御部120は、パッキング部110から入力されたパッキングした画像データを順次データバッファ130に、パッキング部110から入力されたアドレスを順次アドレスバッファ140に、それぞれ保存させる。そして、バッファライト制御部120は、1回のDMAによってDRAM72に転送する量の画像データおよびアドレスの、データバッファ130およびアドレスバッファ140のそれぞれへの保存が完了すると、データバッファ130およびアドレスバッファ140への画像データおよびアドレスの保存が完了したことを表す、すなわち、1回分のDMAの準備が整ったことを表すライト完了通知を、バッファリード制御部150に出力する。以下の説明においては、1回のDMAで転送する画像データおよびアドレスをまとめて、「1転送単位のデータ」という。
また、バッファライト制御部120は、バッファリード制御部150からデータバッファ130およびアドレスバッファ140のそれぞれに保存した1転送単位のデータの読み出しが完了したことを表すリード完了通知が入力されると、データバッファ130およびアドレスバッファ140の記憶領域に空きができたと判断し、次の1転送単位のデータの保存を開始する。
データバッファ(バッファ部)130は、バッファライト制御部120からの制御に応じて、バッファライト制御部120から順次入力された複数のパッキングした画像データを一時記憶(保存)する、例えば、SRAM(Static Random Access Memory)などで構成された記憶部である。データバッファ130は、DRAM72の対応するバンクに転送する複数の画像データを保存する記憶領域1301を、DRAM72が持つバンクの数分備えている。例えば、バッファライト制御部120から入力されたパッキングした32ビットの画像データを16個保存する記憶容量の記憶領域1301、すなわち、64バイトの記憶領域1301を、DRAM72が持つ4つのバンク分備えている。そして、データバッファ130は、バッファリード制御部150からの制御に応じて、それぞれの記憶領域1301に保存している画像データを、バッファリード制御部150に順次出力する。
図6に示したデータ転送制御装置100の構成では、4つの記憶領域1301を1組とした記憶領域群1304を、4つ備えた構成を示している。そして、データ転送制御装置100では、記憶領域群1304に記憶された全ての画像データの転送を、DMAの1回の転送単位とする。この構成によってデータ転送制御装置100は、DRAM72のそれぞれのバンクに16個の32ビットの画像データを連続して転送するバースト転送を、4つのバンクに対して連続して行うDMAを、4回行うことができる。ここで、それぞれの記憶領域1301内に記載した符号は、それぞれの記憶領域1301が対応するDRAM72のバンクを表している。
なお、本実施形態では、データバッファ130に画像データを書き込むタイミングと、データバッファ130から画像データを読み出すタイミングとに関しては、何ら限定しない。従って、データバッファ130は、データの書き込みタイミングとデータの読み出しタイミングとを異なるタイミングで制御することができるSRAMであってもよい。つまり、バッファライト制御部120の動作クロックとバッファリード制御部150の動作クロックとが異なることにより、データバッファ130に画像データを書き込むタイミングであるライトクロックと、データバッファ130からの画像データを読み出すタイミングであるリードクロックとが異なるクロックであってもよい。
アドレスバッファ(バッファ部)140は、バッファライト制御部120からの制御に応じて、バッファライト制御部120から入力されたDRAM72のアドレスを一時記憶(保存)する、データバッファ130と同様の構成の記憶部である。すなわち、アドレスバッファ140は、データバッファ130に保存している画像データを転送する(書き込む)先のDRAM72のバンクを指定するためのアドレスを保存する記憶部である。アドレスバッファ140は、データバッファ130における記憶領域1301のそれぞれに対応する記憶領域1401を、データバッファ130と同様の数だけ備えている。ただし、記憶領域1401の記憶容量は、データバッファ130における記憶領域1301と同じ記憶容量とは限らず、記憶領域1301に保存した画像データをDRAM72に転送する際に指定するアドレスを保存するのに必要な記憶容量である。そして、アドレスバッファ140は、バッファリード制御部150からの制御に応じて、それぞれの記憶領域1401に保存しているアドレスを、バッファリード制御部150に出力する。
図6に示したデータ転送制御装置100の構成では、データバッファ130と同様に、4つの記憶領域1401を1組とした記憶領域群1404を、4つ備えた構成を示している。ここでも、それぞれの記憶領域1401内に記載した符号は、それぞれの記憶領域1401が対応するDRAM72のバンクを表している。
なお、本実施形態では、アドレスバッファ140に画像データを書き込むタイミングと、アドレスバッファ140から画像データを読み出すタイミングとに関しても、何ら限定しない。また、データバッファ130とアドレスバッファ140とは、必ずしも個々のバッファで構成するものでなくても良く、同一のSRAM上の異なる記憶領域に、データバッファ領域と、アドレスバッファ領域を設ける構成であってもよい。
バッファリード制御部150は、バッファライト制御部120からライト完了通知が入力されると、データバッファ130およびアドレスバッファ140の記憶領域に1転送単位のデータの保存が完了したと判断し、データバッファ130に保存されているパッキングした画像データと、アドレスバッファ140に保存されているアドレスとを順次読み出す。そして、バッファリード制御部150は、読み出した画像データとアドレスとをバスインタフェース部160に出力する。
また、バッファリード制御部150は、1回のDMAによってDRAM72に転送する量の画像データおよびアドレスを、データバッファ130およびアドレスバッファ140のそれぞれからの読み出しが完了すると、データバッファ130およびアドレスバッファ140からの画像データおよびアドレスの読み出し、すなわち、1転送単位のデータの読み出しが完了したことを表すリード完了通知を、バッファライト制御部120に出力する。これにより、バッファリード制御部150は、データバッファ130およびアドレスバッファ140の記憶領域に空きができたことを、バッファライト制御部120に通知する。
バスインタフェース部160は、画像処理装置1におけるDMAのプロトコルに基づいて、バッファリード制御部150から入力された画像データとアドレスとを、バスアービタ70との間でのやり取り(インタフェース)する。より具体的には、バスインタフェース部160は、DRAM72にアクセスするためのDMA要求信号を、データバス80を介してバスアービタ70に出力する。そして、バスインタフェース部160は、DMA要求がバスアービタ70に受け付けられ、データバス80を介してDMA受け付け信号が入力された後に、バッファリード制御部150から入力された画像データとアドレスとを、データバス80を介してバスアービタ70に出力する。
なお、図6に示したデータ転送制御装置100の構成では、データバッファ130とアドレスバッファ140とが、4回分のDMAを行うことができる記憶領域を備えているため、4回連続でバスアービタ70との間でDMAを行うことができる。
次に、データ転送制御装置100がバスアービタ70との間で行うDMA動作について説明する。図7は、本実施形態の画像処理装置1に備えたデータ転送制御装置100の第1の入れ替え処理におけるDMA動作の一例を説明する図である。図7には、画像データを出力する際の動作モードとして「反転なし」の反転処理が設定される場合において、データ転送制御装置100がDMAによって画像データを出力する動作を順に示し、併せて、それぞれの動作におけるデータの経路を示している。なお、図7には、説明を容易にするため、データ転送制御装置100の構成要素の内、画像データの出力に関係する構成要素のみを示している。以下の説明においては、画像処理装置1内の画像転送部21に備えたデータ転送制御装置100について説明する。従って、以下の説明における「画像データ」は、画像転送部21が出力する前処理画像データである。
まず、図7(a)に示した経路C11の経路で、CPU60が、「反転なし」の反転処理を動作モードとして動作モードレジスタ101に設定する。続いて、画像転送部21がDRAM72のそれぞれのバンクに転送する画像データ(前処理画像データ)が入力されると、図7(a)に示した経路C12の経路で、パッキング部110によってパッキングされた後の画像データが、データバッファ130の対応する記憶領域1301に保存される。図7(a)では、アドレス=0が割り当てられたバンクAの画像データが、データバッファ130の対応する記憶領域1301に保存された状態を示している。なお、このときパッキング部110が生成したアドレスは、アドレスバッファ140の対応する記憶領域1401に保存される。
同様に、画像転送部21がDRAM72のそれぞれのバンクに転送する画像データ(前処理画像データ)が入力されると、図7(b)に示した経路C13の経路で、パッキング部110によってパッキングされた後のそれぞれの画像データが、データバッファ130の対応する記憶領域1301に保存される。図7(b)では、アドレス=1〜アドレス=3が割り当てられたバンクB〜バンクDの画像データが、データバッファ130の対応する記憶領域1301に保存された状態を示している。なお、このときパッキング部110が生成したそれぞれのアドレスは、アドレスバッファ140の対応するそれぞれの記憶領域1401に保存される。
続いて、DRAM72のそれぞれのバンクに転送する画像データ(前処理画像データ)がデータバッファ130内の対応する4つの記憶領域1301、すなわち、1転送単位のデータがデータバッファ130内の対応する記憶領域群1304に保存されると、バッファライト制御部120は、図7(b)に示した経路C14の経路で、1回分のDMAの準備が整ったことを表すライト完了通知を、バッファリード制御部150に出力する。
続いて、バッファリード制御部150は、バッファライト制御部120からライト完了通知が入力されると、バスインタフェース部160と連携して、図7(c)に示した経路C15の経路で、データバッファ130およびアドレスバッファ140に保存された1転送単位のデータを、データバス80を介してバスアービタ70に出力する。
より具体的には、まず、バッファリード制御部150が、バッファライト制御部120から入力されたライト完了通知に応じて、バスインタフェース部160にDMA要求信号の出力を依頼する。これにより、バスインタフェース部160は、DRAM72にアクセスするためのDMA要求信号を、データバス80を介してバスアービタ70に出力する。その後、バスアービタ70によってDMA要求が受け付けられ、データバス80を介してDMA受け付け信号がバスインタフェース部160に入力されると、バスインタフェース部160は、データバッファ130およびアドレスバッファ140のそれぞれの読み出しの開始を表す信号を、バッファリード制御部150に出力する。これにより、バッファリード制御部150は、データバッファ130およびアドレスバッファ140に保存された1転送単位のデータを順次読み出して、バスインタフェース部160に出力する。そして、バスインタフェース部160は、バッファリード制御部150から順次入力された1転送単位のデータを、データバス80を介してバスアービタ70に順次出力する。これにより、DRAM72の指定されたアドレスに対応する記憶領域に、1転送単位のデータが書き込まれる。図7(c)では、アドレス=0〜アドレス=3が割り当てられたバンクA〜バンクDの画像データが、データバス80に順次出力される状態を示している。
その後、バッファリード制御部150は、データバッファ130およびアドレスバッファ140に保存された1転送単位のデータの読み出しが完了すると、図7(c)に示した経路C16の経路で、1転送単位のデータの読み出しが完了したことを表すリード完了通知を、バッファライト制御部120に出力する。
なお、データ転送制御装置100では、上述したように、データバッファ130およびアドレスバッファ140のそれぞれが、4回分のDMAを行うことができる構成である。このため、データ転送制御装置100では、バッファリード制御部150とバスインタフェース部160とが連携してアドレス=0〜アドレス=3が割り当てられたバンクA〜バンクDの画像データをDMAで転送している最中でも、次のDMAで転送する1転送単位のデータを、データバッファ130およびアドレスバッファ140のそれぞれに保存することができる。
より具体的には、DMAで転送している最中に、図7(d)に示した経路C17の経路で、画像転送部21がDRAM72のそれぞれのバンクに転送する次の画像データ(前処理画像データ)が入力された場合でも、パッキング部110によってパッキングされた後のそれぞれの画像データを、データバッファ130の対応する記憶領域1301に保存することができる。図7(d)では、アドレス=4〜アドレス=7が割り当てられたバンクA〜バンクDの画像データ(2回目のDMAで転送される画像データ)と、アドレス=8〜アドレス=11が割り当てられたバンクA〜バンクDの画像データ(3回目のDMAで転送される画像データ)とが、データバッファ130の対応する記憶領域1301に保存された状態を示している。なお、このときパッキング部110が生成したそれぞれのアドレスは、アドレスバッファ140の対応するそれぞれの記憶領域1401に保存される。
そして、バッファライト制御部120は、DRAM72のそれぞれのバンクに転送する1転送単位のデータがデータバッファ130内の対応する記憶領域群1304に保存される毎に、図7(d)に示した経路C18の経路でライト完了通知をバッファリード制御部150に出力する。これにより、データ転送制御装置100は、アドレス=0〜アドレス=3が割り当てられたバンクA〜バンクDの画像データのDMAによる転送が完了した後、引き続き、バッファリード制御部150とバスインタフェース部160とが連携して、2回目のDMAの転送および3回目のDMAの転送を、順次行うことができる。
図8は、本実施形態の画像処理装置1に備えたデータ転送制御装置100による第1の入れ替え処理のDMA動作における画像データの転送タイミングの一例を模式的に示した図である。図8には、図7に示したDMA動作においてデータバッファ130に保存される画像データと、データバス80に出力される画像データとのタイミングを示している。
上述したように、データ転送制御装置100は、1回のDMAの転送において、DRAM72の4つのバンクにそれぞれ1回ずつ連続してアクセスするバンクインターリーブのアクセスを行う。そして、図7に示したDMA動作では、反転処理を行わない。このため、データ転送制御装置100のデータバッファ130には、DRAM72のアドレスを昇順に割り当てたそれぞれのバンクの画像データが、反転処理を行わずに保存される。そして、データ転送制御装置100のバッファリード制御部150およびバスインタフェース部160は、DRAM72のバンクA〜バンクDに転送する画像データが揃う毎に、DRAM72のアドレスを昇順に割り当てたバンクA、バンクB、バンクC、バンクDの順番で、データバッファ130に保存された画像データをデータバス80に出力する。
より具体的には、図8に示したように、データ転送制御装置100は、昇順にアドレス=0〜アドレス=3を割り当てたバンクA〜バンクDの画像データをデータバッファ130に保存した後、このアドレス=0〜アドレス=3を割り当てたバンクA〜バンクDの画像データを、データバス80に順次出力する。その後、図8に示したように、データ転送制御装置100は、昇順にアドレス=4〜アドレス=7を割り当てたバンクA〜バンクDの画像データをデータバッファ130に保存した後、このアドレス=4〜アドレス=7を割り当てたバンクA〜バンクDの画像データを、データバス80に順次出力する。また、その後、図8に示したように、データ転送制御装置100は、昇順にアドレス=8〜アドレス=11を割り当てたバンクA〜バンクDの画像データをデータバッファ130に保存した後、このアドレス=8〜アドレス=11を割り当てたバンクA〜バンクDの画像データを、データバス80に順次出力する。
次に、データ転送制御装置100がバスアービタ70との間で行うDMAの別の動作について説明する。図9は、本実施形態の画像処理装置1に備えたデータ転送制御装置100の第1の入れ替え処理におけるDMA動作の別の一例を説明する図である。図9には、画像データを出力する際の動作モードとして「左右反転」の反転処理が設定される場合において、データ転送制御装置100がDMAによって画像データを出力する動作を順に示し、併せて、それぞれの動作におけるデータの経路を示している。なお、図9には、図7に示したDMA動作と同様に、説明を容易にするため、データ転送制御装置100の構成要素の内、画像データの出力に関係する構成要素のみを示している。以下の説明においては、図7に示したDMA動作と同様に、画像処理装置1内の画像転送部21に備えたデータ転送制御装置100について説明する。
まず、図9(a)に示した経路C21の経路で、CPU60が、「左右反転」の反転処理を動作モードとして動作モードレジスタ101に設定する。続いて、画像転送部21がDRAM72のそれぞれのバンクに転送する画像データ(前処理画像データ)が入力されると、図9(a)に示した経路C22の経路で、パッキング部110によってパッキングされた後の画像データが、データバッファ130の対応する記憶領域1301に保存される。図9(a)では、アドレス=11が割り当てられたバンクDの画像データが、データバッファ130の対応する記憶領域1301に保存された状態を示している。なお、このときパッキング部110が生成したアドレスは、アドレスバッファ140の対応する記憶領域1401に保存される。
同様に、画像転送部21がDRAM72のそれぞれのバンクに転送する画像データ(前処理画像データ)が入力されると、図9(b)に示した経路C23の経路で、パッキング部110によってパッキングされた後のそれぞれの画像データが、データバッファ130の対応する記憶領域1301に保存される。図9(b)では、アドレス=10〜アドレス=8が割り当てられたバンクC〜バンクAの画像データが、データバッファ130の対応する記憶領域1301に保存された状態を示している。なお、このときパッキング部110が生成したそれぞれのアドレスは、アドレスバッファ140の対応するそれぞれの記憶領域1401に保存される。
続いて、DRAM72のそれぞれのバンクに転送する画像データ(前処理画像データ)がデータバッファ130内の対応する4つの記憶領域1301、すなわち、1転送単位のデータがデータバッファ130内の対応する記憶領域群1304に保存されると、バッファライト制御部120は、図7に示したDMA動作と同様に、図9(b)に示した経路C24の経路で、ライト完了通知をバッファリード制御部150に出力する。
続いて、バッファリード制御部150は、バッファライト制御部120からライト完了通知が入力されると、図7に示したDMA動作と同様に、バスインタフェース部160と連携して、図9(c)に示した経路C25の経路で、データバッファ130およびアドレスバッファ140に保存された1転送単位のデータを、データバス80を介してバスアービタ70に出力する。
より具体的には、まず、バッファリード制御部150が、バッファライト制御部120から入力されたライト完了通知に応じて、バスインタフェース部160にDMA要求信号の出力を依頼し、バスインタフェース部160は、DRAM72にアクセスするためのDMA要求信号を、データバス80を介してバスアービタ70に出力する。その後、バスアービタ70によってDMA要求が受け付けられ、DMA受け付け信号が入力されると、バスインタフェース部160は、1転送単位のデータの読み出しの開始を表す信号をバッファリード制御部150に出力し、バッファリード制御部150が、データバッファ130およびアドレスバッファ140に保存された1転送単位のデータを順次読み出して、バスインタフェース部160に出力する。そして、バスインタフェース部160は、バッファリード制御部150から順次入力された1転送単位のデータを、データバス80を介してバスアービタ70に順次出力する。これにより、DRAM72の指定されたアドレスに対応する記憶領域に、1転送単位のデータが書き込まれる。図9(c)では、アドレス=8〜アドレス=11が割り当てられたバンクA〜バンクDの画像データが、データバス80に順次出力される状態を示している。
ここで、図9を見てわかるように、図9(a)に示した経路C22および図9(b)に示した経路C23の経路でデータバッファ130に保存される画像データは、DRAM72のアドレスが降順に割り当てられた、すなわち、アドレス=11、アドレス=10、アドレス=9、アドレス=8の順番で割り当てられたバンクD〜バンクAの画像データである。そして、バッファリード制御部150は、図9(c)に示した経路C25の経路で、データバッファ130に保存される画像データを昇順に、すなわち、アドレス=8、アドレス=9、アドレス=10、アドレス=11の順番で順次読み出して、バスインタフェース部160に出力している。このように、データ転送制御装置100では、データバッファ130に画像データを保存する順番と、データバッファ130から画像データを読み出す順番とを逆にすることによって、画像データの反転処理を行っている。
その後、バッファリード制御部150は、データバッファ130およびアドレスバッファ140に保存された1転送単位のデータの読み出しが完了すると、図7に示したDMA動作と同様に、図9(c)に示した経路C26の経路で、リード完了通知をバッファライト制御部120に出力する。
なお、データ転送制御装置100では、図7に示したDMA動作と同様に、バッファリード制御部150とバスインタフェース部160とが連携してアドレス=8〜アドレス=11が割り当てられたバンクA〜バンクDの画像データをDMAで転送している最中でも、次のDMAで転送する1転送単位のデータを、データバッファ130およびアドレスバッファ140のそれぞれに保存することができる。
より具体的には、DMAで転送している最中に、図9(d)に示した経路C27の経路で、画像転送部21がDRAM72のそれぞれのバンクに転送する次の画像データ(前処理画像データ)が入力された場合でも、パッキング部110によってパッキングされた後のそれぞれの画像データを、データバッファ130の対応する記憶領域1301に保存することができる。図9(d)では、アドレス=7〜アドレス=4が割り当てられたバンクD〜バンクAの画像データ(2回目のDMAで転送される画像データ)と、アドレス=3〜アドレス=0が割り当てられたバンクD〜バンクAの画像データ(3回目のDMAで転送される画像データ)とが、データバッファ130の対応する記憶領域1301に保存された状態を示している。なお、このときパッキング部110が生成したそれぞれのアドレスは、アドレスバッファ140の対応するそれぞれの記憶領域1401に保存される。
そして、バッファライト制御部120は、図7に示したDMA動作と同様に、DRAM72のそれぞれのバンクに転送する1転送単位のデータがデータバッファ130内の対応する記憶領域群1304に保存される毎に、図9(d)に示した経路C28の経路でライト完了通知をバッファリード制御部150に出力する。これにより、データ転送制御装置100は、アドレス=8〜アドレス=11が割り当てられたバンクA〜バンクDの画像データのDMAによる転送が完了した後、引き続き、バッファリード制御部150とバスインタフェース部160とが連携して、2回目のDMAの転送および3回目のDMAの転送を、順次行うことができる。
図10は、本実施形態の画像処理装置1に備えたデータ転送制御装置100による第1の入れ替え処理のDMA動作の別の一例における画像データの転送タイミングの一例を模式的に示した図である。図10には、図9に示したDMAの別の動作においてデータバッファ130に保存される画像データと、データバス80に出力される画像データとのタイミングを示している。
図7に示したDMA動作と同様に、データ転送制御装置100は、1回のDMAの転送において、DRAM72の4つのバンクにそれぞれ1回ずつ連続してアクセスするバンクインターリーブのアクセスを行う。そして、図9に示したDMAの別の動作では、左右反転の反転処理を行う。このため、データ転送制御装置100のデータバッファ130には、DRAM72のアドレスを降順に割り当てたそれぞれのバンクの画像データが、図7に示したDMA動作と逆の順番で保存される。そして、データ転送制御装置100のバッファリード制御部150およびバスインタフェース部160は、DRAM72のバンクA〜バンクDに転送する画像データが揃う毎に、図7に示したDMA動作と同様に、DRAM72のアドレスを昇順に割り当てたバンクA、バンクB、バンクC、バンクDの順番で、データバッファ130に保存された画像データをデータバス80に出力する。
より具体的には、図10に示したように、データ転送制御装置100は、降順にアドレス=11〜アドレス=8を割り当てたバンクD〜バンクAの画像データをデータバッファ130に保存した後、このアドレス=8〜アドレス=11を割り当てたバンクA〜バンクDの画像データを降順に読み出して、データバス80に順次出力する。その後、図10に示したように、データ転送制御装置100は、降順にアドレス=7〜アドレス=4を割り当てたバンクD〜バンクAの画像データをデータバッファ130に保存した後、このアドレス=4〜アドレス=7を割り当てたバンクA〜バンクDの画像データを降順に読み出して、データバス80に順次出力する。また、その後、図10に示したように、データ転送制御装置100は、降順にアドレス=4〜アドレス=0を割り当てたバンクD〜バンクAの画像データをデータバッファ130に保存した後、このアドレス=0〜アドレス=3を割り当てたバンクA〜バンクDの画像データを降順に読み出して、データバス80に順次出力する。
このように、データ転送制御装置100では、画像データをデータバッファ130に保存する際に逆の順番で保存し、反転処理を行うか否かによらず同じ順番でデータバッファ130から画像データを読み出すことによって、画像データの反転処理を行っている。
上記に述べたように、データ転送制御装置100は、データバッファ130に画像データを保存する際の順番を、動作モードレジスタ101に設定された動作モードの情報に応じて変更することによって、DMAによる転送でデータバス80を介してバスアービタ70に出力する画像データの順番を入れ替え、画像に対する反転処理を行う。これにより、画像処理装置1に備えたそれぞれの処理ブロックがDRAM72にアクセスする際のバンクの順番を、画像処理装置1内の全ての処理ブロックで同じにすることができる。このことにより、画像処理装置1内に反転処理を行わない処理ブロックと反転処理を行う処理ブロックとが混在し、DRAM72に対して複数の処理ブロックがアクセスした場合でも、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスを回避し、ロス時間によるDRAM72へのアクセス効率の低下を抑えることができる。
なお、図7〜図10に示したデータ転送制御装置100におけるDMA動作の一例では、図11(a)に示したように、データバッファ130内のそれぞれの記憶領域1301およびアドレスバッファ140内のそれぞれの記憶領域1401が対応するDRAM72のバンクを予め定めておき、つまり、対応するバンクを固定しておき、それぞれのバンクの画像データおよびアドレスを、対応する記憶領域1301および記憶領域1401に保存する場合について説明した。このように、データバッファ130内のそれぞれの記憶領域1301およびアドレスバッファ140内のそれぞれの記憶領域1401が対応するDRAM72のバンクを予め定めておくことによって、それぞれのバンクの画像データがどのような順番でデータ転送制御装置100に入力された場合でも、保存した画像データを同じバンクの順番でDRAM72に出力することができる。
より具体的には、図7および図8に示したデータ転送制御装置100におけるDMA動作の一例では、例えば、図11(b)に示したように、バンクA、バンクB、バンクC、バンクDの順番で入力された画像データを、順番を入れ替えずに、バンクA、バンクB、バンクC、バンクDの順番でDRAM72に出力する場合について説明した。また、図9および図10に示したデータ転送制御装置100におけるDMA動作の一例では、例えば、図11(c)に示したように、バンクD、バンクC、バンクB、バンクAの順番で入力された画像データを、順番が逆になるように入れ替えて、バンクA、バンクB、バンクC、バンクDの順番でDRAM72に出力する場合について説明した。しかし、データバッファ130内のそれぞれの記憶領域1301およびアドレスバッファ140内のそれぞれの記憶領域1401が対応するDRAM72のバンクを予め定めておくことによって、逆の順番以外で画像データが入力された場合でも、同じ順番でDRAM72に出力することができる。例えば、図11(d)に示したように、バンクD、バンクB、バンクC、バンクAの順番で画像データがデータ転送制御装置100に入力された場合でも、それぞれの画像データを対応する記憶領域1301にそれぞれ保存し、保存した画像データを順番が同じになるように読み出すことによって、バンクA、バンクB、バンクC、バンクDの順番でDRAM72に出力することができる。
また、図7〜図10に示したデータ転送制御装置100におけるDMA動作の一例では、1転送単位のデータに、バンクA、バンクB、バンクC、およびバンクDのそれぞれに対応する画像データが必ず1つ含まれている場合について説明した。しかし、データ転送制御装置100に入力される画像データは、必ずしも、バンクA、バンクB、バンクC、およびバンクDのそれぞれに対応する画像データが1つ含まれているとは限らない。この場合には、データバッファ130内の記憶領域1301およびアドレスバッファ140内の記憶領域1401に、異なるバンクに対応する画像データを保存するなど、記憶領域1301および記憶領域1401が対応するバンクを適宜変更することもできる。例えば、バンクA、バンクB、バンクA、バンクBの順番で入力された画像データを、データバッファ130内の同じ記憶領域群1304に保存する場合を考える。この場合には、1つ目のバンクAの画像データをバンクAに対応する記憶領域1301に、1つ目のバンクBの画像データをバンクBに対応する記憶領域1301に、2つ目のバンクAの画像データをバンクCに対応する記憶領域1301に、2つ目のバンクBの画像データをバンクDに対応する記憶領域1301に、それぞれ保存するように変更することができる。
<第2の入れ替え処理>
次に、画像処理装置1内の各処理ブロックにおけるDRAM72への別のアクセス方法について説明するため、図12および図13を参照して画像処理装置1の別の動作の一例について説明する。図12は、本実施形態の画像処理装置1における画像データの転送方向とDRAM72のアクセスとの一例を模式的に示した図である。また、図13は、本実施形態の画像処理装置1において画像データの転送方向が異なる場合に対応したDRAM72のアクセスの一例を模式的に示した図である。
画像処理装置1では、イメージセンサ10が画像を取り込む方向と、画像処理部30が画像処理を行う方向とが異なる場合がある。例えば、図12(a)に示したように、イメージセンサ10が画素をラスタスキャンして画像に対して水平方向(横方向)の入力画像データを順次出力することに応じて、前処理部20が画像に対して水平方向(横方向)に前処理画像データをDRAM72に転送する(書き込む)。そして、画像処理部30は、画像を予め定めた大きさのブロックに分割し、それぞれのブロックにおいて、垂直方向(縦方向)に前処理画像データをDRAM72から取得する(読み出す)場合がある。
このとき、DRAM72には、例えば、図12(b)に示したように、それぞれの前処理画像データが記憶されることが考えられる。図12(b)には、画像のそれぞれのラインにおいて左側から順番に昇順のアドレスが割り当てられ、画像の上側から順番に昇順のアドレスが割り当てられた前処理画像データが、DRAM72の対応するそれぞれのバンクの記憶領域に記憶されている状態を示している。
この場合、図12(c)に示したように、画像処理装置1内の画像転送部21に備えたデータ転送制御装置100は、DRAM72の異なるバンクに対して連続してアクセスして、前処理画像データをDRAM72に転送するが、画像処理部30に備えたデータ転送制御装置200は、DRAM72の同一のバンクに対して連続してアクセスして、前処理画像データをDRAM72から取得することが必要になる。このため、上述したような理由によって、データ転送制御装置200によるDRAM72の同一のバンクに対する連続したアクセスに、多くのロス時間が発生してしまうことになる(図12(c)参照)。
そこで、図13(a)に示したように、有効な画像データ(有効画像)の領域の右側に無効な画像データの領域(無効領域)を追加して考え、画像の水平方向(横方向)の幅を、有効画像における水平方向(横方向)の画像幅よりも大きくしたものとして制御する方法が考えられる。この方法によって、画像のそれぞれのラインにおいて割り当てられるアドレスの幅、すなわち、各ラインにおける最初のアドレスと最後のアドレスとの差を、有効画像のそれぞれのラインにおいて割り当てられるアドレスの幅よりも大きくして考えることができる。
そして、この無効領域の大きさ、すなわち、無効領域のアドレスの幅の設定を調節することによって、画像処理部30に備えたデータ転送制御装置200が垂直方向(縦方向)に前処理画像データを取得する際に連続してアクセスするDRAM72のバンクを、異なるバンクにすることができる。図13(b)には、無効領域の水平方向(横方向)の大きさをDRAM72のバンクと同じ大きさに設定した場合に、有効画像において垂直方向(縦方向)に同じ位置の前処理画像データが、DRAM72の異なるバンクに記憶されている状態を示している。
この場合、図13(c)に示したように、画像処理装置1内の画像転送部21に備えたデータ転送制御装置100は、DRAM72の異なるバンクに対して連続してアクセスして、前処理画像データをDRAM72に転送し、画像処理部30に備えたデータ転送制御装置200も、DRAM72の異なるバンクに対して連続してアクセスして、前処理画像データをDRAM72から取得することができる。このように、有効画像の領域の右側に無効領域を追加して考えることによって、DRAM72の同一のバンクに対する連続したアクセスを回避することができる(図13(c)参照)。
しかし、有効画像の領域の右側に無効領域を追加して考える方法によっても、DRAM72の同一のバンクに対する連続したアクセスを全て回避することができるとは限らない。例えば、画像処理装置1では、上述した、画像処理装置1内の画像転送部21に備えたデータ転送制御装置100による前処理画像データの転送(書き込み)、および画像処理部30に備えたデータ転送制御装置200による前処理画像データの取得(読み出し)と並行して、表示処理部40に備えたデータ転送制御装置200による表示用の画像データの取得(読み出し)も行う場合がある。
図14は、本実施形態の画像処理装置1に備えた処理ブロックにおけるDRAMのバンクアクセスに起因するロス時間の一例を模式的に示した図である。図14には、表示処理部40に備えたデータ転送制御装置200がDRAM72から表示用の画像データを取得しているときに、画像転送部21に備えたデータ転送制御装置100が前処理画像データをDRAM72に転送する場合のタイミングを示している。
図14に示したように、画像転送部21と表示処理部40とが交互にDRAM72へのアクセスを行うと、DRAM72にアクセスする処理ブロックが切り替わるときに、DRAM72の同一のバンクに対する連続したアクセスが発生してしまう。より具体的には、表示処理部40に備えたデータ転送制御装置200が、バンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスして表示用の画像データを取得した後、画像転送部21に備えたデータ転送制御装置100が、バンクD、バンクA、バンクB、バンクCの順番でDRAM72のそれぞれのバンクにアクセスして4ライン目の前処理画像データを転送する。これにより、表示処理部40に備えたデータ転送制御装置200によるバンクDへのアクセスと、画像転送部21に備えたデータ転送制御装置100によるバンクDへのアクセスとが連続してしまう。このとき、DRAM72は、バンクDへの連続したアクセスを受け付けることができないため、この期間がロス時間となり、DRAM72へのアクセス効率が低下してしまう。
そこで、各処理ブロックに備えたデータ転送制御装置は、対応する処理ブロックがDRAM72にアクセスする際のバンクの順番を入れ替えることによって、DRAM72の同一のバンクに対する連続したアクセスを回避する。図15は、本実施形態の画像処理装置1に備えた処理ブロックによる第2の入れ替え処理によってDRAM72のバンクアクセスに起因するロス時間を回避する一例を模式的に示した図である。図15には、図14に示したDRAM72のバンクアクセスと同様に、表示処理部40に備えたデータ転送制御装置200がDRAM72から表示用の画像データを取得しているときに、画像転送部21に備えたデータ転送制御装置100が前処理画像データをDRAM72に転送する場合のタイミングを示している。
図15に示したように、画像転送部21と表示処理部40とが交互にDRAM72へのアクセスを行うと、図14に示したDRAM72のバンクアクセスと同様に、DRAM72にアクセスする処理ブロックが切り替わるときに、DRAM72の同一のバンクに対する連続したアクセスが発生してしまう。しかし、図15に示したDRAM72のバンクアクセスでは、画像転送部21に備えたデータ転送制御装置100が、DRAM72のそれぞれのバンクに対するアクセスの順番を入れ替える。これにより、画像転送部21は、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスを回避することができる。
より具体的には、図14に示したDRAM72のバンクアクセスと同様に、表示処理部40に備えたデータ転送制御装置200が、バンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスして表示用の画像データを取得した後、画像転送部21に備えたデータ転送制御装置100が、バンクD、バンクA、バンクB、バンクCの順番でDRAM72のそれぞれのバンクにアクセスして4ライン目の前処理画像データを転送する。これにより、図14に示したDRAM72のバンクアクセスと同様に、表示処理部40に備えたデータ転送制御装置200によるバンクDへのアクセスと、画像転送部21に備えたデータ転送制御装置100によるバンクDへのアクセスとが連続してしまう。このとき、画像転送部21に備えたデータ転送制御装置100は、DRAM72のそれぞれのバンクにアクセスする順番を、表示処理部40に備えたデータ転送制御装置200と同様のバンクA、バンクB、バンクC、バンクDの順番に入れ替える。これにより、画像転送部21と表示処理部40とが交互にDRAM72へのアクセスを行う場合でも、DRAM72の同一のバンクに対する連続したアクセスを回避することができる。
なお、このときに画像転送部21に備えたデータ転送制御装置100の動作モードレジスタ101に設定する動作モードの情報は、第1の入れ替え処理において説明した、反転処理の設定とは異なる情報である。より具体的には、第1の入れ替え処理では、バンクにアクセスする順番、画像データをパッキングする順番、およびDRAM72の水平方向と垂直方向のアドレス発生順番のそれぞれを、昇順または降順に設定していたが、第2の入れ替え処理では、バンクにアクセスする順番を、バンクD、バンクA、バンクB、バンクCの順番から、バンクA、バンクB、バンクC、バンクDの順番に入れ替えるための設定を行う。
上記に述べたように、画像処理装置1内の各処理ブロックに備えたデータ転送制御装置は、対応する処理ブロックがDRAM72にアクセスする際のバンクの順番を、他の処理ブロックがDRAM72にアクセスする際のバンクの順番と同じ順番になるように入れ替える。これにより、それぞれの処理ブロックがDRAM72にアクセスする際のバンクの順番が、画像処理装置1内の全ての処理ブロックで同じになる。これにより、異なる順番でDRAM72のバンクにアクセスする処理ブロックが画像処理装置1内に複数混在し、それぞれの処理ブロックが並行してDRAM72に対してアクセスした場合でも、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスが発生しなくなり、ロス時間によるDRAM72へのアクセス効率の低下を抑えることができる。
なお、DRAM72にアクセスする際のバンクの順番の入れ替えは、上述したように、データバッファ130内のそれぞれの記憶領域1301およびアドレスバッファ140内のそれぞれの記憶領域1401が対応するDRAM72のバンクを予め定めておく(固定しておく)ことによって、それぞれのバンクの画像データがどのような順番でデータ転送制御装置に入力された場合でも、容易にバンクの順番を入れ替えることができる。しかし、データバッファ130内のそれぞれの記憶領域1301およびアドレスバッファ140内のそれぞれの記憶領域1401が対応するDRAM72のバンクを予め定めておかない(固定しておかない)場合でも、例えば、バッファライト制御部120とバッファリード制御部150とが連携することによって、バンクの順番の入れ替えを行うことができると考えられる。
上記に述べたとおり、本発明を実施するための形態によれば、データ転送制御装置を、画像処理装置1内のそれぞれの処理ブロックに備える。そして、データ転送制御装置は、データ転送制御装置自体に備えたデータバッファおよびアドレスバッファのそれぞれに保存するデータの順番を、動作モードレジスタに設定された動作モードの情報に応じて変更することによって、1回分のDMAの転送でアクセスするDRAMのバンクの順番を、他の処理ブロックがDMAの転送でアクセスするDRAMのバンクの順番と同じ順番にする。これにより、本発明を実施するための形態の画像処理装置において、本実施形態のデータ転送制御装置を適用したそれぞれの処理ブロックがDRAMにアクセスする際のバンクの順番を、画像処理装置内の全ての処理ブロックで同じにすることができる。このことにより、本発明を実施するための形態の画像処理装置内に異なる順番でDRAMのバンクにアクセスする本実施形態のデータ転送制御装置を適用した処理ブロックが複数混在し、それぞれの処理ブロックが並行してDRAMに対してアクセスした場合でも、バンクインターリーブによるDRAMへのアクセスにおいて同一のバンクに対する連続したアクセスが発生しなくなる。これにより、DRAMの同一のバンクに対する連続したアクセスに起因するロス時間によるDRAMへのアクセス効率の低下を抑えることができる。
なお、本実施形態においては、画像処理装置1内の全ての処理ブロックにデータ転送制御装置を備えた構成について説明したが、データ転送制御装置を備える処理ブロックは、本実施形態に示した構成に限定されるものではなく、例えば、画像処理装置1の一部の処理ブロックのみにデータ転送制御装置を備える構成であってもよい。例えば、DMAの転送でアクセスするDRAMのバンクの順番の入れ替えを行う画像転送部21や表示処理部40のみにデータ転送制御装置を備える構成であってもよい。このように、画像処理装置1の一部の処理ブロックのみにデータ転送制御装置を備える構成であっても、処理ブロックとバスアービタとの間のやり取り(インタフェース)を変更する必要はない。これは、バスアービタ内でDRAMのバンクにアクセスする順番を入れ替えることによって処理ブロックとバスアービタとの間のインタフェースが複雑化し、DRAMのバンクにアクセスする順番の入れ替えを行わない処理ブロックも含めた全ての処理ブロックで複雑なインタフェースに対応することが必要である従来の構成に対して、有利であると考えられる。
また、本実施形態においては、データバッファ130およびアドレスバッファ140が、データ転送制御装置100に備えた、DRAM72にアクセスするバンクの順番を入れ替える専用のバッファである構成について説明した。しかし、データバッファ130およびアドレスバッファ140の構成は、本実施形態に示した構成に限定されるものではない。例えば、DMAの転送によってデータの出力を行う一般的な処理ブロックには、データバスの混雑によってデータの転送が待たされたときでも、データバスが空いたときに確実にデータを転送するための構成として、データを一時記憶(保存)するバッファを備えていると考えられる。また、例えば、DMAの転送によってデータの出力を行う一般的な処理ブロックには、データを処理する内部のクロックとデータバスにおけるクロックとが異なる場合に、これらのクロックの乗り換えを行うための構成として、データを一時記憶(保存)するバッファを備えていると考えられる。従って、すでに本実施形態のデータ転送制御装置100におけるデータバッファ130およびアドレスバッファ140と同様の構成を備えている処理ブロックに、本発明の考え方を適用する場合には、すでに備えているバッファを、本実施形態のデータ転送制御装置100におけるデータバッファ130およびアドレスバッファ140として利用することもできる。この場合には、処理ブロックの回路規模を増大させることなく、DRAMへのアクセス効率を向上させることができる。これは、バスアービタ内でDRAMのバンクにアクセスする順番を入れ替えるためのバッファをバスアービタ内に搭載する従来の構成よりも有利であると考えられる。
なお、本実施形態においては、動作モードレジスタ101に設定された動作モードの情報に応じて、DMAの転送で出力するデータおよびアドレスを保存するデータバッファ130の記憶領域1301およびアドレスバッファ140の記憶領域1401を変更する構成について説明した。つまり、データ転送制御装置100に備えたデータバッファ130およびアドレスバッファ140にデータおよびアドレスを保存するときに、DRAM72にアクセスするバンクの順番を入れ替える構成について説明した。しかし、DRAM72にアクセスするバンクの順番を入れ替える構成は、本実施形態に示した構成に限定されるものではない。例えば、動作モードレジスタ101に設定された動作モードの情報に応じて、DMAの転送で出力するデータおよびアドレスを読み出すデータバッファ130の記憶領域1301およびアドレスバッファ140の記憶領域1401を変更する構成にすることもできる。つまり、データ転送制御装置100では、データバッファ130およびアドレスバッファ140に保存されたデータおよびアドレスを読み出してDMAによって出力する際に、DRAM72にアクセスするバンクの順番を入れ替える構成にすることもできる。この場合、動作モードレジスタ101が出力する動作モードの情報は、例えば、バッファリード制御部150に入力され、バッファリード制御部150が、入力された動作モードの情報に応じて、データバッファ130に保存されたデータとアドレスバッファ140に保存されたアドレスとの読み出しを制御する構成が考えられる。
また、本実施形態においては、データ転送制御装置100に備えたパッキング部110が、入力された画像データをパッキングすると共に、パッキングした画像データを転送するDRAM72のアドレスを生成する構成について説明した。しかし、DRAM72のアドレスを生成する構成は、本実施形態に示した構成に限定されるものではない。例えば、バッファリード制御部150またはバスインタフェース部160が、動作モードレジスタ101に設定された動作モードの情報に応じて、DRAM72のアドレスを生成する構成にすることもできる。この場合、データ転送制御装置100内にアドレスバッファ140を備えない構成にすることもできる。
また、本実施形態においては、データ転送制御装置100が画像データを転送する先のDRAM72が、4つのバンク(バンクA、バンクB、バンクC、およびバンクD)で構成されている場合について説明したが、DRAMにおけるバンクの構成は、本実施形態に示した構成に限定されるものではない。例えば、8つのバンクで構成されるDRAMであっても、同様に考えることができる。
また、本実施形態においては、データ転送制御装置100による1回のDMAで、DRAM72の4つのバンクにそれぞれ1回ずつ連続してアクセスするバンクインターリーブでのアクセスを行う、つまり、DRAM72の4つのバンクに対する連続したアクセスを、DMAの1回の転送単位とする場合について説明したが、1回のDMAでアクセスするバンクの数は、本実施形態に示した構成に限定されるものではない。例えば、1回のDMAで1つのバンクへのアクセスを、DMAの1回の転送単位とすることもできる。
なお、本実施形態においては、静止画用カメラなどの画像処理装置を本発明のデータ処理装置とし、この画像処理装置に本発明のデータ転送制御装置を適用した場合について説明した。しかし、本実施形態のデータ転送制御装置を適用することができるデータ処理装置のシステムは、本発明を実施するための形態に限定されるものではなく、データバスに接続された複数の処理ブロックが、バンクインターリーブによって共有する1つのDRAMの異なるバンクに順次アクセスするデータ処理装置のシステムであれば、どのようなシステムにも同様にデータ転送制御装置を適用することができる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。