以下、本発明の実施形態について、図面を参照して説明する。図1は、本実施形態における撮像装置の概略構成を示したブロック図である。図1に示した撮像装置1は、CPU10と、メモリ20と、CCD30と、撮像処理部40と、画像処理部50と、表示処理部60と、表示デバイス70と、データ変換部41および51と、データ逆変換部52および62と、出力DMA部45および55と、入力DMA部56および66と、を備えている。なお、撮像装置1は、撮影した画像データを記録する機能も有しているが、説明を容易にするため、以下の説明においては、撮影した画像データを表示する場合について説明する。また、図1においては、撮像装置1内の各構成要素(処理ブロック)間での画素データの受け渡しに係るデータバスであるメモリバスの接続のみを示している。
CPU10は、撮像装置1の全体の制御を行う制御装置である。
メモリ20は、撮像装置1内の各処理ブロックが処理する画素データを一時的に記憶する、例えば、DRAM(Dynamic Random Access Memory)などのメモリである。メモリ20には、撮像装置1内の各処理ブロックによる各処理段階の画素データが一時記憶される。
CCD30は、入射した被写体光を画像信号に変換する、例えば、ベイヤー配列の固体撮像素子である。CCD30は、被写体の画素信号を撮像処理部40に出力する。
撮像処理部40は、CCD30から入力された画素信号に対して、予め定められた信号処理を行った画像データを生成する。
画像処理部50は、撮像処理部40が生成した画像データに対して、撮像装置1における種々の画像処理を行った画像データを生成する。
表示処理部60は、画像処理部50によって画像処理された画像データを、表示デバイス70に応じた表示データに変換する。表示処理部60は、変換した表示データを表示デバイス70に出力する。
表示デバイス70は、表示データを表示する、例えば、液晶などの表示装置である。
本実施形態の撮像装置1では、CCD30によって撮像された被写体の画素信号を、撮像処理部40、画像処理部50、表示処理部60が順次処理し、表示デバイス70に表示させる。このとき、各処理段階の画像データは、メモリ20を介して各処理ブロック間で受け渡される。撮像装置1内のデータ変換部41および51と、データ逆変換部52および62と、出力DMA部45および55と、入力DMA部56および66とは、各処理段階の画像データの受け渡しに係る処理ブロックである。
データ変換部41および51は、前段の処理ブロック(図1に示した本実施形態においては、撮像処理部40または画像処理部50)から入力された画像データ内の各画素データを、予め定められた配置(パッキング)方法で、メモリバスの各ビットに配置する。データ変換部41および51の構成と、データ変換部41および51による画素データのパッキング方法に関する詳細な説明は、後述する。
出力DMA部45および55は、データ変換部41または51によってメモリバスの各ビットにパッキングされた画素データからなる画像データを、DMAアクセスによってメモリ20に書き込む(記憶させる)。
入力DMA部56および66は、メモリ20に記憶されている画像データをDMAアクセスによって読み出し、読み出した画像データを、データ逆変換部52または62に出力する。
データ逆変換部52および62は、入力DMA部56または66から入力された画像データに含まれる画素データを、予め定められた配置(パッキング)方法と逆の方法で元の画像データに戻し、後段の処理ブロック(図1に示した本実施形態においては、画像処理部50または表示処理部60)に出力する。データ逆変換部52および62の構成に関する詳細な説明は、後述する。
ここで、図1に示した撮像装置1における画像データの処理について説明する。撮像装置1における撮影動作では、以下のような手順で画像データの処理が行われる。
(手順1):まず、撮像処理部40は、CCD30によって撮像された被写体の画素信号に対して、予め定められた信号処理を行った画像データ(例えば、CCD30の画素の配列に応じた画像データ)を生成する。そして、生成した画像データを、データ変換部41および出力DMA部45を介して、メモリ20に転送して一時記憶する。
(手順2):続いて、画像処理部50は、メモリ20に一時記憶している画像データを、入力DMA部56およびデータ逆変換部52を介して読み出す。そして、画像処理部50は、読み出した画像データに対して記録用の画像処理や、表示用の画像処理を行った画像データ(例えば、RGBデータや、YC422点順次フォーマットのYCbCrデータ)を生成する。その後、生成した画像データを、再びデータ変換部51および出力DMA部55を介してメモリ20に転送して一時記憶する。
(手順3):続いて、表示処理部60は、画像処理部50によって表示用の画像処理がされた画像データや、別途、メモリ20に記憶しているOSD(On−Screen Display)表示用の画像データを、入力DMA部66およびデータ逆変換部62を介して読み出し、表示デバイス70に表示させる。
なお、撮像装置1が撮影した画像データを記録する場合には、画像データの記録処理を行う図示しない記録処理部が、画像処理部50によって記録用の画像処理がされた画像データを、図示しない入力DMA部およびデータ逆変換部を介して読み出し、読み出した記録用の画像データをメモリカードなどの図示しない画像データ記録部に記録する。また、撮像装置1に、例えば、音を入出力する機能を備えている場合には、音声処理を行う図示しない音声処理部が、撮影時の音声データを、図示しないデータ変換部および出力DMA部を介してメモリ20に記憶する。また、音声処理部が、メモリ20に記憶している音声データを、図示しない入力DMA部およびデータ逆変換部を介して読み出し、読み出した音声データに応じた音声を、スピーカーなどの図示しない音出力部に出力させる。
<第1の構成>
次に、撮像装置1内のデータ変換部について説明する。なお、上記に述べたように、データ変換部41とデータ変換部51とは、接続される前段の処理ブロックと後段の処理ブロックが異なるのみである。より具体的には、図1に示したように、データ変換部41は、前段の撮像処理部40と後段の出力DMA部45との間に配置され、データ変換部51は、前段の撮画像処理部50と後段の出力DMA部55との間に配置されている。従って、データ変換部41とデータ変換部51とは、入力される画像データと出力する画像データとのデータ形式(フォーマット)が異なるのみである。以下の説明においては、代表してデータ変換部41について説明する。
図2は、本実施形態の撮像装置1に備えた本第1の構成のデータ変換部41の概略構成を示したブロック図である。図2に示したように、データ変換部41は、4つのパックデータ生成部411a〜411d(以下、パックデータ生成部411a〜411dのいずれか1つを表すときには「パックデータ生成部411」という)と、4つのD−FF412a〜412d(以下、D−FF412a〜412dのいずれか1つを表すときには「D−FF412」という)と、4つのバースト単位バッファ413a〜413d(以下、バースト単位バッファ413a〜413dのいずれか1つを表すときには「バースト単位バッファ413」という)と、4つのEXOR(排他的論理和)回路414a〜414d(以下、EXOR回路414a〜414dのいずれか1つを表すときには「EXOR回路414」という)と、4つのビット加算部415a〜415d(以下、ビット加算部415a〜415dのいずれか1つを表すときには「ビット加算部415」という)と、4つのバースト単位累積部416a〜416d(以下、バースト単位累積部416a〜416dのいずれか1つを表すときには「バースト単位累積部416」という)と、比較部417と、選択部418と、ビット結合部419と、を備えている。
なお、以下の説明においては、データ変換部41に、図20に示したような、16行×16列のベイヤー配列の画像データ(以下、「ベイヤーデータ」という)が入力され、入力されたベイヤーデータ内の画素データを、予め定められたパッキング方法で、メモリバスに配置(パッキング)した転送データを出力する場合について説明する。なお、ベイヤーデータ内の各画素データのビット数は9bitであり、メモリバスのバス幅(メモリバス幅)は32bitであるものとする。そして、データ変換部41は、ベイヤーデータ内の各画素データをパッキングする単位を4転送とし、4転送を1回のバースト転送の単位とする、すなわち、1バーストを画素データのパッキング単位としてパッキングした32bitの転送データを出力するものとする。なお、図20に示したベイヤーデータでは、各画素データの数字がCCD30内の画素の位置を表しており、数字の前の「R」,「G」,「B」がCCD30内の画素の色を表している。より具体的には、「R」がCCD30の赤色の画素の画素データ、「G」がCCD30の緑色の画素の画素データ、「B」がCCD30の青色の画素の画素データを表している。
データ変換部41は、撮像処理部40から順次入力された9bitの画素データの各ビットのデータを、予め定められた後述するパッキング方法のいずれか1つの方法で、メモリバス上の各ビットに配置した32bitの転送データを出力する。そして、データ変換部41は、例えば、出力DMA部45から入力されるデータイネーブル信号に基づいて、生成した転送データを順次出力する。なお、データイネーブル信号は、出力DMA部45がバースト転送する際に何転送目の転送データを転送するかを表す情報を含んでいる信号である。
データ変換部41が転送データを生成する際には、まず、入力された画素データを、予め定めた複数のパッキング方法でそれぞれパッキングした複数のパックデータを生成する。そして、データ変換部41は、生成したそれぞれのパックデータの内、1回のバースト転送においてメモリバス上のビット変化が最も少ないパックデータ(以下、「転送パックデータ」という)を選択する。その後、データ変換部41は、パックデータを選択したときの情報(パックデータ選択ビット)を、転送パックデータ内、すなわち、パッキング単位(4転送)内に存在する未使用ビットに付加して、最終的に出力する転送データとして出力する。
パックデータ生成部411a〜411dは、それぞれ、入力された画素データの各ビットのデータを、予め定めたパッキング方法で、メモリバスに対応したデータバス(このデータバスはメモリバスの各ビットに対応しているため、以下の説明においては、「メモリバス」として説明する)の各ビットに配置した、1バースト分、すなわち、パッキング単位(4転送)分のパックデータを生成する。そして、パックデータ生成部411a〜411dのそれぞれは、生成したパックデータを、1転送毎、すなわち、メモリバス幅のビット数(本第1の構成のデータ変換部41においては、32bit)毎に順次、対応するD−FF412a〜412dと対応するEXOR回路414a〜414dとに出力する。
なお、以下の説明においては、パックデータ生成部411a〜411dのそれぞれが生成した1バースト分のパックデータを、それぞれ、パックデータA〜Dという。また、以下の説明においては、パックデータ生成部411a〜411dのそれぞれが出力するパックデータA〜Dの1転送毎のパックデータを、それぞれ、パックデータa〜dという。なお、パックデータ生成部411のそれぞれにおけるパッキング方法、およびパックデータの例に関する詳細な説明は、後述する。
D−FF412a〜412dは、それぞれ、対応するパックデータ生成部411a〜411dから出力された32bitのパックデータa〜dを保持する。このD−FF412によって保持されたパックデータa〜dは、パックデータ生成部411が前回の1転送で出力したパックデータa〜d(以下、前回の1転送のパックデータa〜dを、「パックデータa(−1)〜d(−1)」という)として、対応するバースト単位バッファ413a〜413dと対応するEXOR回路414a〜414dとに出力される。
バースト単位バッファ413a〜413dは、それぞれ、対応するD−FF412から入力された32bitのパックデータa(−1)〜d(−1)を、1バースト分、すなわち、パッキング単位(4転送)分保持する。バースト単位バッファ413のそれぞれが、対応するD−FF412を介して入力されたパックデータa〜dを、パッキング単位(4転送)分保持することによって、バースト単位バッファ413に、パックデータ生成部411のそれぞれが生成したパックデータA〜Dが保持されることになる。そして、バースト単位バッファ413a〜413dは、例えば、選択部418から入力される図示しない出力要求信号に基づいて、保持しているパックデータA〜Dを、1転送毎、すなわち、パックデータa〜d毎に順次、選択部418に出力する。なお、出力要求信号は、選択部418によって選択されたバースト単位バッファ413に保持されている32bitのパックデータa〜dを順次読み出す信号である。従って、出力要求信号は、選択部418によって選択されたバースト単位バッファ413a〜413dのいずれか1つのバースト単位バッファ413にのみ出力される。
EXOR回路414a〜414dは、それぞれ、対応するパックデータ生成部411a〜411dから出力された32bitのパックデータa〜dと、対応するD−FF412a〜412dから出力された32bitのパックデータa(−1)〜d(−1)との2つのパックデータの各ビットの値を比較して、値が変化しているビットの有無を検出する。そして、EXOR回路414a〜414dのそれぞれは、値が変化しているビットであることを表す値=“1”、または値が変化しているビットではないことを示す値=“0”を、比較したそれぞれのビット毎に出力する。
なお、EXOR回路414a〜414dのそれぞれは、D−FF412から入力されたパックデータa(−1)〜d(−1)を、同じパッキング単位(4転送)において、パックデータ生成部411a〜411dのそれぞれが出力した前回のパックデータa〜dとして、各ビットの値を比較する。すなわち、EXOR回路414a〜414dのそれぞれは、パックデータ生成部411a〜411dのそれぞれが出力した前回のパックデータa〜dと、今回のパックデータa〜dとの比較をビット毎に行う。
より具体的には、EXOR回路414のそれぞれによる2つのパックデータの比較においては、パックデータ生成部411から出力されたパックデータa〜dの各ビットと、D−FF412から出力されたパックデータa(−1)〜d(−1)の各ビットとの排他的論理和がとられる。これにより、パックデータ生成部411から出力された今回のパックデータa〜dのビットの値と、パックデータ生成部411から出力された前回のパックデータa〜d(パックデータa(−1)〜d(−1))のビットの値とが同じ値のときに“0”が出力される。また、パックデータ生成部411から出力された今回のパックデータa〜dのビットの値と、パックデータ生成部411から出力された前回のパックデータa〜d(パックデータa(−1)〜d(−1))のビットの値とが異なる値のときに“1”が出力される。
なお、パックデータ生成部411から出力された今回のパックデータa〜dが1転送目のパックデータa〜dである場合には、ビットの値が変化していないことを示す値=“0”を、全てのビットに出力する。
ビット加算部415a〜415dは、それぞれ、対応するEXOR回路414a〜414dから入力された値が変化しているビットの数を計数し、値が変化しているビットの数の合計(以下、「ビット変化数」という)を算出する。そして、算出したビット変化数を、対応するバースト単位累積部416a〜416dのそれぞれに出力する。例えば、説明を容易にするため、EXOR回路414aが比較するそれぞれのパックデータが8bitであると仮定した場合について考える。EXOR回路414aから入力された、値が変化しているビットの値が、“1111_0000”である場合は、ビット加算部415aは、ビット変化数の値として“4”を出力する。このようにして、ビット加算部415a〜415dのそれぞれは、パックデータ生成部411a〜411dが出力した前回のパックデータa〜d(D−FF412から出力されたパックデータa(−1)〜d(−1))の値が、次にパックデータ生成部411a〜411dが出力した今回のパックデータa〜dの値に変化する際に、メモリバス上の各ビットの値が異なる値に変化するビットの数(ビット変化数)を出力する。
バースト単位累積部416a〜416dは、それぞれ、対応するビット加算部415a〜415dから入力されたビット変化数を、1バースト分、すなわち、パッキング単位(4転送)分累積する。これにより、1回のバースト転送において、パックデータ生成部411a〜411dのそれぞれが出力するパックデータによるメモリバス上の各ビットの合計の変化数が算出される。そして、バースト単位累積部416a〜416dのそれぞれは、累積したビット変化数を、比較部417に出力する。
比較部417は、バースト単位累積部416a〜416dのそれぞれから入力された累積されたビット変化数の内、ビット変化数が最も少ないものを判定し、最も少ないビット変化数を出力したバースト単位累積部416を特定(選択)する。そして、比較部417は、最も少ないビット変化数を出力したバースト単位累積部416を表す情報、すなわち、最もメモリバス上のビット変化が少ないパッキング方法を表す情報を、パックデータ選択ビットとして、選択部418とビット結合部419とに出力する。これにより、1回のバースト転送においてメモリバス上のビット変化が最も少ないパックデータが選択されることになる。
なお、パックデータ選択ビットは、データ変換部41内に備えたパックデータ生成部411のそれぞれに対応した値が、予め定められており、データ変換部41に対応するデータ逆変換部52にも、共通の値が予め定められている。これにより、データ逆変換部52は、データ変換部41で選択されたパッキング方法を判別することができる。
選択部418は、比較部417から入力されたパックデータ選択ビットに応じて、バースト単位バッファ413a〜413dの内、いずれか1つのバースト単位バッファ413を選択する。そして、例えば、選択したバースト単位バッファ413に対して図示しない出力要求信号を出力し、選択したバースト単位バッファ413から入力されたパックデータ(パックデータA〜Dの内、いずれか1つのパックデータ)を、転送パックデータとしてビット結合部419に出力する。なお、上述したように、出力要求信号は、選択したバースト単位バッファ413に保持されている32bitのパックデータを順次読み出す信号である。従って、選択部418は、選択したバースト単位バッファ413a〜413dのいずれか1つのバースト単位バッファ413にのみ、出力要求信号を出力する。
ビット結合部419は、選択部418から入力された転送パックデータ内、すなわち、パッキング単位(4転送)内に存在する未使用ビットに、比較部417から入力されたパックデータ選択ビットを付加する。そして、ビット結合部419は、パックデータ選択ビットを付加した転送パックデータを、データ変換部41が最終的に出力する転送データとして、出力DMA部45に出力する。
なお、ビット結合部419がパックデータ選択ビットを付加する転送パックデータ内の未使用ビットの位置は、パックデータ生成部411a〜411dが生成するパッキング単位(4転送)のパックデータA〜Dの全てで共通の未使用ビットの固定位置が予め定められている。また、データ変換部41に対応するデータ逆変換部52にも、パックデータA〜Dで共通の未使用ビットの固定位置と同じ位置が、パックデータ選択ビットが付加された未使用ビットの位置として、予め定められている。これにより、データ逆変換部52は、固定された位置に付加されているパックデータ選択ビットに基づいて、データ変換部41が出力した転送データを逆変換して、元の画素データに復元することができる。
次に、撮像装置1内のデータ逆変換部について説明する。なお、上記に述べたように、データ逆変換部52とデータ逆変換部62とは、接続される前段の処理ブロックと後段の処理ブロックが異なるのみである。より具体的には、図1に示したように、データ逆変換部52は、前段の入力DMA部56と後段の画像処理部50との間に配置され、データ逆変換部62は、前段の入力DMA部66と後段の表示処理部60との間に配置されている。従って、データ逆変換部52とデータ逆変換部62とは、入力される画像データと出力する画像データとのデータ形式(フォーマット)が異なるのみである。以下の説明においては、代表してデータ逆変換部52について説明する。
図3は、本実施形態の撮像装置1に備えた本第1の構成のデータ逆変換部52の概略構成を示したブロック図である。図3に示したように、データ逆変換部52は、ビット分離部521と、4つのデータ復元部522a〜522d(以下、データ復元部522a〜522dのいずれか1つを表すときには「データ復元部522」という)と、4つのデータバッファ523a〜523d(以下、データバッファ523a〜523dのいずれか1つを表すときには「データバッファ523」という)と、選択部524と、を備えている。
なお、以下の説明においては、データ逆変換部52に、データ変換部41によってパッキングされた、4転送をパッキング単位とした1バーストの転送データが、入力DMA部56を介して入力され、入力された転送データを、図20に示したベイヤーデータに戻す場合について説明する。従って、ベイヤーデータ内の各画素データのビット数は9bitであり、メモリバス幅は32bitであるものとして説明する。
データ逆変換部52は、入力DMA部56から入力された32bitの転送データの各ビットに配置されたデータを、予め定められた後述するパッキング方法のいずれか1つの方法と逆の方法で、画像処理部50が画像処理する元の画像データ(ベイヤーデータ)に戻した9bitの画素データに復元する。そして、データ逆変換部52は、例えば、画像処理部50から入力される図示しないデータイネーブル信号に基づいて、復元した元の画素データを順次出力する。なお、データイネーブル信号は、画像処理部50に出力するタイミングを表す信号である。
また、データ逆変換部52には、上述したように、データ変換部41によってパックデータ選択ビットが付加された未使用ビットの位置と同じ固定位置が、予め定められている。そして、データ逆変換部52が画素データを復元する際には、まず、入力された32bitの転送データ(この転送データは、データ変換部41が生成した転送データと同等である)を、パックデータ選択ビットと、データ変換部41内のパックデータ生成部411が画素データをパッキングしたパックデータ(このパックデータは、データ変換部41内の選択部418によって選択された転送パックデータと同等であるため、以下の説明のいては、「転送パックデータ」として説明する)とに分離する。そして、データ逆変換部52は、転送パックデータを、データ変換部41によるパッキング方法と逆の方法で、順次分割(アンパッキング)し、画素データに相当するデータ(以下、「アンパックデータ」という)を生成する。その後、データ逆変換部52は、パックデータ選択ビットに基づいて、アンパックデータの中から、データ変換部41に入力された画素データと同等のアンパックデータを選択して、元の画素データとして出力する。
ビット分離部521は、入力DMA部56から入力された転送データを、転送データ内の予め定められた固定位置に付加されているパックデータ選択ビットと、転送パックデータとに分離する。そして、ビット分離部521は、分離した転送パックデータを、データ復元部522に出力する。また、ビット分離部521は、分離したパックデータ選択ビットを、選択部524に出力する。なお、ビット分離部521は、パックデータ選択ビットが付加されていない転送データは、そのまま転送パックデータとして、データ復元部522に出力する。
データ復元部522a〜522dは、それぞれ、パックデータ生成部411a〜411dに対応し、ビット分離部521から入力された転送パックデータを、予め定めたパッキング方法と逆の方法で、転送パックデータの各ビットに配置されたそれぞれのデータ(本第1の構成のデータ逆変換部52においては、9bitのデータ)に、順次分割(アンパッキング)した、1バースト分、すなわち、パッキング単位(4転送)分のアンパックデータを生成する。そして、データ復元部522a〜522dのそれぞれは、生成したアンパックデータを、1画素毎、すなわち、画素データのビット数(本第1の構成のデータ逆変換部52においては、9bit)毎に順次、対応するデータバッファ523a〜dに出力する。
なお、以下の説明においては、データ復元部522a〜522dのそれぞれが出力する1画素毎のアンパックデータを、それぞれ、アンパックデータa〜dという。また、以下の説明においては、データ復元部522a〜522dのそれぞれが生成した1バースト分のアンパックデータを、それぞれ、アンパックデータA〜Dという。
データバッファ523a〜523dは、それぞれ、対応するデータ復元部522から入力された9bitのアンパックデータa〜dを、1バースト分、すなわち、パッキング単位(4転送)分保持する。データバッファ523のそれぞれが、対応するデータ復元部522から入力されたアンパックデータa〜dを、パッキング単位(4転送)分保持することによって、データバッファ523に、データ復元部522のそれぞれが生成したアンパックデータA〜Dが保持されることになる。そして、データバッファ523a〜523dは、例えば、選択部524から入力される図示しない出力要求信号に基づいて、保持しているアンパックデータA〜Dを、1画素毎、すなわち、アンパックデータa〜d毎に順次、選択部524に出力する。なお、出力要求信号は、選択部524によって選択されたデータバッファ523に保持されている9bitのアンパックデータa〜dを順次読み出す信号である。従って、出力要求信号は、選択部524によって選択されたデータバッファ523a〜523dのいずれか1つのデータバッファ523にのみ出力される。
選択部524は、ビット分離部521から入力されたパックデータ選択ビットに応じて、データバッファ523a〜523dの内、いずれか1つのデータバッファ523を選択する。そして、例えば、選択したデータバッファ523に対して図示しない出力要求信号を出力し、選択したデータバッファ523から入力されたアンパックデータ(アンパックデータA〜Dの内、いずれか1つのアンパックデータ)を、元の画素データとして、画像処理部50に出力する。なお、上述したように、出力要求信号は、選択したデータバッファ523に保持されている9bitのアンパックデータを順次読み出す信号である。従って、選択部524は、選択したデータバッファ523a〜523dのいずれか1つのデータバッファ523にのみ、出力要求信号を出力する。
このようにして、データ逆変換部52は、転送データ内の予め定められた固定位置に付加されているパックデータ選択ビットに基づいて、データ変換部41が、予め定めた複数のパッキング方法の内、いずれのパッキング方法でパッキングしたパックデータを出力したのかを判別する。そして、データ逆変換部52は、データ変換部41が選択したパッキング方法と逆の方法で生成されたアンパックデータを、データ変換部41が出力した転送データを逆変換した元の画素データとして出力、すなわち、元の画素データに復元する。
なお、上述したように、データ復元部522a〜522dは、それぞれ、パックデータ生成部411a〜411dに対応している。しかし、データ復元部522がそれぞれ生成するアンパックデータa〜dは、元の画素データと同等のデータではないこともある。これは、データ復元部522a〜522dのそれぞれが、アンパックデータa〜dを生成する時点では、入力された転送パックデータが、データ変換部41内のいずれのパックデータ生成部411によって生成されたパックデータ、すなわち、図2に示したパックデータA〜Dのいずれのパックデータであるかが不明であるためである。従って、データ復元部522a〜522dのそれぞれが生成したアンパックデータa〜dを、対応するデータバッファ523に一旦保持し、パックデータ選択ビットに基づいて選択したアンパックデータA〜Dのいずれか1つのアンパックデータを、データ逆変換部52が最終的に出力する画素データとして、画像処理部50に出力している。
なお、データ逆変換部52は、上記に述べたように、入力DMA部56から転送データが入力される毎に、データ復元部522a〜522dのそれぞれが、入力された転送パックデータを順次分割(アンパッキング)することもできるが、データ逆変換部52内に、例えば、1バースト分、すなわち、パッキング単位(4転送)分の32bitの転送データを一時的に保持するメモリ部を備えた構成とすることもできる。この場合には、入力DMA部56から入力された転送データをメモリ部に一旦保持し、保持した転送データを最初に、パックデータ選択ビットと転送パックデータとに分離し、その後、パックデータ選択ビットに基づいて、対応するデータ復元部522が、予め定めたパッキング方法と逆の方法で、転送パックデータの分割(アンパッキング)を行う。なお、この構成では、データバッファ523a〜523dと同様の機能を、ビット分離部521の前段に配置されたメモリ部が担うことになる。これにより、図3に示したデータ逆変換部52内のデータバッファ523a〜523dを削減することができる。
ここで、パックデータ生成部411a〜dにおけるパックデータa〜dの生成方法、すなわち、予め定められた複数のパッキング方法(画素データの配置方法)の一例について説明する。本実施形態の撮像装置1では、データ変換部41内のパックデータ生成部411a〜dが入力された画素データをメモリバスに配置したパックデータを生成し、データ逆変換部52内のデータ復元部522a〜522dが入力された転送パックデータを元の画素データに戻す。なお、以下の説明においては、パックデータ生成部411に、図20に示したベイヤーデータ内の各画素データが順次入力され、4転送を1つのパッキング単位とした1バーストのパックデータにパッキングする場合について説明する。また、ベイヤーデータ内の各画素データのビット数は9bitであり、メモリバス幅は32bitであるものとする。
なお、データ復元部522a〜dによる転送パックデータを元の画素データに戻す方法(アンパッキング方法)は、パックデータ生成部411a〜dによる画素データのパッキング方法と逆の方法であるため、詳細な説明は省略する。
<第1のデータ配置方法>
図4は、本第1の構成のデータ変換部41に備えたパックデータ生成部411によるデータ配置方法の一例(第1のパッキング方法)を説明する図である。図4には、本第1のパッキング方法によって生成されたパックデータ内の画素データの配置を示している。
本第1のパッキング方法では、パックデータ生成部411が、入力された画素データの各ビットのデータを、メモリバスの各ビットに順次配置した、メモリバス幅のビット数のパックデータを生成する。なお、本第1のパッキング方法は、従来のバースト単位でのパッキング方法と同様であるため、詳細な説明は省略する。
図4では、パックデータ生成部411が、ベイヤーデータ内の各画素データ(「R0」,「G1」,「R2」,「G3」,「R4」,「G5」,「R6」,「G7」,「R8」,「G9」,「R10」,「G11」)をパッキングしたパックデータを示している。より具体的には、パックデータ生成部411が、1転送目に「R0」、「G1」、「R2」、および「G3」のビット[0]〜ビット[4]、2転送目に「G3」のビット[5]〜ビット[8]、「R4」、「G5」、「R6」、および「G7」のビット[0]、3転送目に「G7」のビット[1]〜ビット[8]、「R8」、「G9」、および「R10」のビット[0]〜ビット[5]、4転送目に「R10」のビット[6]〜ビット[8]、および「G11」を、それぞれメモリバスの最下位ビットから順次配置(パッキング)した場合を示している。
<第2のデータ配置方法>
図5は、本第1の構成のデータ変換部41に備えたパックデータ生成部411によるデータ配置方法の別の一例(第2のパッキング方法)を説明する図である。図5(a)には、第1のパッキング方法、すなわち、従来のバースト単位でのパッキング方法によって生成されたパックデータ内の画素データの配置を示している。また、図5(b)には、本第2のパッキング方法によって画素データの配置が変更されたパックデータ内の画素データの配置を示している。
本第2のパッキング方法では、1バースト(4転送)分のパッキング単位を、画素データの連続する各ビットをそのままメモリバス上の連続する各ビットに配置するパック領域1(図5(b)においては、18bitの領域)と、画素データが配置されずに残っているメモリバス上のビットに画素データの各ビットを分割して配置するパック領域2(図5(b)においては、14bitの領域)とに分けて、メモリバス上の各ビットに画素データの各ビットを配置する。
そして、本第2のパッキング方法では、パックデータ生成部411が、パックデータ内のパック領域1の連続する2転送間のデータにおいて、隣接する同一色の画素データが、メモリバス上の同一ビットに配置されるように、それぞれの画素データを配置する。また、パックデータ生成部411が、画素データが配置されずに残っているパックデータ内のパック領域2の連続する4転送間で、画素データがラスター順となるように、それぞれの画素データの各ビットを詰めて配置する。
なお、パックデータ生成部411とデータ復元部522とには、同じパック領域1およびパック領域2が、予め定められており、それぞれの領域に配置する画素データの位置も予め定められている。これにより、データ復元部522は、パックデータ生成部411によってパッキングされたそれぞれの画素データを、元の画素データに復元することができる。
図5(b)では、パックデータ生成部411が、ベイヤーデータ内の各画素データ(「R0」,「G1」,「R2」,「G3」,「R4」,「G5」,「R6」,「G7」,「R8」,「G9」,「R10」,「G11」)をパッキングしたパックデータを示している。より具体的には、パックデータ生成部411が、パック領域1の1転送目に「R0」および「G1」、2転送目に「R2」および「G3」、3転送目に「R4」および「G5」、4転送目に「R6」および「G7」を、それぞれメモリバスの最下位ビットから順次配置(パッキング)した場合を示している。また、パックデータ生成部411が、パック領域2の1転送目に「R8」および「G9」のビット[0]〜ビット[4]、2転送目に「G9」のビット[5]〜ビット[8]、「R10」、および「G11」のビット[0]、3転送目に「G11」のビット[1]〜ビット[8]を、それぞれパック領域2のメモリバスの下位ビットから順次パッキングした場合を示している。
<第3のデータ配置方法>
図6は、本第1の構成のデータ変換部41に備えたパックデータ生成部411によるデータ配置方法の、さらに別の一例(第3のパッキング方法)を説明する図である。図6(a)には、第1のパッキング方法、すなわち、従来のバースト単位でのパッキング方法によって生成されたパックデータ内の画素データの配置を示している。また、図6(b)には、本第3のパッキング方法によって画素データの配置が変更されたパックデータ内の画素データの配置を示している。
本第3のパッキング方法では、パックデータ生成部411が、まず、入力された画素データの各ビットのデータを、第1のパッキング方法と同様に、メモリバスの各ビットに順次配置した、メモリバス幅のビット数のパックデータを生成する。そして、パックデータ生成部411は、予め設定されたシフト基準位置に画素データの境界のビットが配置されるように、1転送毎に各ビットの画素データをビットシフトしたパックデータを最終的なパックデータにする。
なお、シフト基準位置は、バースト転送する際の連続する2転送間のデータにおいて、メモリバス上に配置される隣接する同一色の画素データのビットの位置がなるべく同じ位置になるような基準の位置に、予め設定されている。そして、それぞれのパックデータ内の画素データのビットの位置をシフト基準位置にシフトするための方向とシフト量とが、予め設定されている。これにより、メモリバス上の各ビットの変化が最も小さくするようにしている。
なお、パックデータ生成部411とデータ復元部522とには、同じシフト基準位置が、予め定められており、それぞれのパックデータ内で画素データの各ビットをシフトする方向とシフト量とが予め定められている。これにより、データ復元部522は、パックデータ生成部411によってシフトされた方向と逆の方向に同じシフト量だけシフトすることによって、パッキングされたそれぞれの画素データを、元の画素データに復元することができる。
図6(a)に示したように、パックデータ生成部411は、まず、ベイヤーデータ内の各画素データ(「R0」,「G1」,「R2」,「G3」,「R4」,「G5」,「R6」,「G7」,「R8」,「G9」,「R10」,「G11」)をパッキングしたパックデータを生成する。より具体的には、パックデータ生成部411が、1転送目に「R0」、「G1」、「R2」、および「G3」のビット[0]〜ビット[4]、2転送目に「G3」のビット[5]〜ビット[8]、「R4」、「G5」、「R6」、および「G7」のビット[0]、3転送目に「G7」のビット[1]〜ビット[8]、「R8」、「G9」、および「R10」のビット[0]〜ビット[5]、4転送目に「R10」のビット[6]〜ビット[8]、および「G11」を、それぞれメモリバスの最下位ビットから順次配置(パッキング)する。
続いて、パックデータ生成部411は、生成したバックデータの1転送毎に各ビットに配置された画素データをシフトする。図6(a)に示したパックデータの一例では、4転送目の「G11」のビット[8]と4転送目の未使用ビット最下位ビット(メモリバスのビット[12]との境界の位置にシフト基準位置が設定されている。パックデータ生成部411は、図6(a)内に示した矢印のように、それぞれのパックデータ内の各ビットをシフトして、図6(b)に示したようなパックデータを生成する。より具体的には、パックデータ生成部411は、1転送目のパックデータを右に6ビットシフトする。また、パックデータ生成部411は、2転送目のパックデータを右に10ビット、3転送目のパックデータを右に14ビット、それぞれシフトする。これにより、図6(b)に示したように、1転送目〜3転送目までのパックデータに含まれる緑色の画素データのビット[8]と赤色の画素データのビット[0]との境界の位置が、設定されたシフト基準位置になる。
<第4のデータ配置方法>
図7は、本第1の構成のデータ変換部41に備えたパックデータ生成部411によるデータ配置方法の、さらに別の一例(第4のパッキング方法)を説明する図である。図7(a)には、本第4のパッキング方法において予め設定されている配置の組み合わせ(並べ替えケース)を示している。また、図7(b)には、本第4のパッキング方法によって画素データの配置が変更されたパックデータ内の画素データの配置を示している。なお、図7(a)に示した表中の「単位」に続く数字は、説明を容易にするために付与した、並べ替え単位(図7においては、1byteの単位)を識別する情報である。この数字は、パックデータの並べ替えを行わない場合(並べ替えケース1)において、下位の並べ替え単位(1byte)から順に付与された数字であり、配置変更の処理によって画素データの配置がどの並べ替え単位の位置に変更されたかを、識別するための情報である。
本第4のパッキング方法では、パックデータ生成部411が、まず、入力された画素データの各ビットのデータを、第1のパッキング方法と同様に、メモリバスの各ビットに順次配置した、メモリバス幅のビット数のパックデータを生成する。そして、パックデータ生成部411は、予め定められた並べ替え単位(1byteの単位)毎に、連続する2転送間のパックデータ内の画素データをビット毎に比較し、予め定められた並べ替えケースの組み合わせの範囲内でパックデータ内の画素データの配置を並べ替えたバックデータを生成する。さらに、パックデータ内の画素データの配置を並べ替えたときの情報(図7(a)に示した並べ替え情報)を、画素データが配置されていない未使用ビットに付加して、最終的なパックデータにする。
なお、パックデータ生成部411とデータ復元部522とには、同じ並べ替えケースが、予め定められている。これにより、データ復元部522は、パックデータ内に付加された並べ替え情報を確認することによって、パックデータ生成部411がパックデータ内の画素データの配置を並べ替えるときに採用された並べ替えケースを把握することができる。そして、データ復元部522が、パックデータ生成部411に採用された並べ替えケースと逆の配置、すなわち、元の画素データの配置に、パックデータ内の画素データの配置を並べ替えることによって、パッキングされたそれぞれの画素データを、元の画素データに復元することができる。
本第4のパッキング方法によって、図7(b)に示したような最終的なパックデータを生成する際には、まず、パックデータ生成部411が、ベイヤーデータ内の各画素データ(「R0」,「G1」,「R2」,「G3」,「R4」,「G5」,「R6」,「G7」,「R8」,「G9」,「R10」,「G11」)をパッキングしたパックデータを生成する(図4参照)。
続いて、パックデータ生成部411は、パックデータのメモリバス幅を、予め定められたビット数(図7においては、8bit:1byte)の並べ替え単位に区切る。そして、例えば、1転送目のパックデータの各ビットの値と、2転送目のパックデータの各ビットの値とを比較して、値が変化しているビットの数を並べ替え単位毎に算出する。そして、パックデータ生成部411は、算出した値が変化しているビットの数が最も少なくなる並べ替えの組み合わせ(並べ替えケース)を選択する。そして、選択した並べ替えケースの配置となるように、2転送目のパックデータ内の画素データの配置を並べ替え単位毎に並べ替えたパックデータを生成する。
図7(b)に示したパックデータ内の各画素データの配置では、1転送目のパックデータから2転送目のパックデータに替わるときに並べ替えケース2が選択され、2転送目のパックデータから3転送目のパックデータに替わるときに並べ替えケース4が選択された場合を示している。なお、3転送目のパックデータから4転送目のパックデータに替わるときには、4転送目のパックデータの未使用ビットに、各転送におけるパックデータ内の画素データの配置を並べ替えたときの並べ替え情報が付加(ビット結合)されるため、並べ替えを行わない並べ替えケース1が選択される。
そして、パックデータ生成部411は、4転送目のパックデータの未使用ビット(図7においては、4転送目のパックデータのビット「12」〜ビット「17」)に選択した並べ替えケースに対応した並べ替え情報の値をビット結合する。より具体的には、4転送目のパックデータのビット「12」およびビット「13」に並べ替えケース2に対応した並べ替え情報(“01”)を、4転送目のパックデータのビット「14」およびビット「15」に並べ替えケース4に対応した並べ替え情報(“11”)を、4転送目のパックデータのビット「16」およびビット「17」に並べ替えケース1に対応した並べ替え情報(“00”)を、それぞれビット結合する。
<第5のデータ配置方法>
図8は、本第1の構成のデータ変換部41に備えたパックデータ生成部411によるデータ配置方法の、さらに別の一例(第5のパッキング方法)を説明する図である。図8(a)は、入力された画素データの一例を示し、図8(b)は、本第5のパッキング方法において行われる反転処理を行った後の画素データの一例を示している。また、図8(c)には、本第5のパッキング方法によって反転処理された画素データが配置されたパックデータ内の画素データの配置を示している。
本第5のパッキング方法では、パックデータ生成部411が、まず、入力された画素データの各ビットのデータを、第1のパッキング方法と同様に、メモリバスの各ビットに順次配置した、メモリバス幅のビット数のパックデータを生成する。そして、パックデータ生成部411は、1転送のパックデータ内に配置されたそれぞれの画素データを予め定めた上位のビットと下位のビットとに分ける。そして、画素データの下位のビットをまとめて反転処理し、それぞれの画素データの上位のビットと、反転処理した後のそれぞれの画素データの下位のビットとを結合して、それぞれ1転送のメモリバスに配置する。さらに、画素データの下位のビットを反転処理したときの情報(図8(b)に示した反転ビット)を、当該1転送のメモリバス内に存在する未使用ビットに付加して、最終的な1転送のパックデータにする。
ここで、図8(a)および図8(b)を用いて、本第5のパッキング方法における反転処理について説明する。なお、以下の説明においては、説明を容易にするため、8bitの画素データが、上段から下段に向かって時系列的に順次入力される場合について説明する。パックデータ生成部411は、画素データが入力される毎に、下位の入力画素データの各ビットの値を順次比較する。より具体的には、図8(a)に示した入力画素データのそれぞれの段において、下位の入力画素データの各ビットの値を上段の下位の入力画素データの値と比較し、ビット変化数を算出する。これにより、図8(a)に示したような下位の入力画素データのビット変化数を得る。
そして、パックデータ生成部411は、算出したビット変化数が下位の入力画素データの半数を超える場合に、当該下位の入力画素データをそれぞれのビット毎に反転(“1”を“0”、または“0”を“1”)したデータを、反転処理した下位の出力画素データとして生成する。そして、パックデータ生成部411は、上位の入力画素データと下位の出力画素データとを結合したデータを、最終的な出力画素データとする。また、パックデータ生成部411は、反転処理した出力画素データであることを表す反転ビット(図8(b)参照)を、最終的な出力画素データに付加する。図8(b)においては、出力画素データが、反転処理されたデータである場合に、反転ビットの値を“1”とし、反転処理されていないデータである場合に、反転ビットの値を“0”としている。このように反転処理することによって、本第5のパッキング方法では、メモリバス上の各ビットの変化を小さくしている。
なお、パックデータ生成部411とデータ復元部522とは、反転ビットの値が意味する内容、すなわち、反転処理を行ったか否かの情報を共有している。これにより、データ復元部522は、反転ビットを確認することによって、パックデータ生成部411が反転処理を行ったか否かを判定することができる。そして、データ復元部522は、パックデータ生成部411によって反転処理が行われたデータ(より詳細には、下位の画素データ)を、反転処理することによって、パッキングされたそれぞれの画素データを、元の画素データに復元することができる。
本第5のパッキング方法によって、図8(c)に示したような最終的なパックデータを生成する際には、まず、パックデータ生成部411が、ベイヤーデータ内の各画素データ(「R0」,「G1」,「R2」,「G3」,「R4」,「G5」,「R6」,「G7」,「R8」,「G9」,「R10」,「G11」)をパッキングしたパックデータを生成する。より具体的には、パックデータ生成部411が、1転送目に「R0」、「G1」、および「R8」、2転送目に「R2」、「G3」、および「R10」、3転送目に「R4」、「G5」、および「G9」、4転送目に「R6」、「G7」、および「G11」を、それぞれメモリバスの最下位ビットから順次配置(パッキング)する。
続いて、パックデータ生成部411は、それぞれの1転送毎のパックデータに配置された画素データの下位のビット(例えば、1転送目のパックデータにおいては、「R0」、「G1」、および「R8」のビット[0]〜ビット[3])をまとめて反転処理する。そして、画素データの下位のビットを反転処理したときの反転ビットを、各転送におけるパックデータ内の未使用ビット(図8(c)においては、メモリバスのビット[27])にビット結合する。
次に、データ変換部41が出力する転送データについて説明する。図9は、本第1の構成のデータ変換部41から出力する転送データを説明する図である。上述したように、データ変換部41は、撮像処理部40から順次入力された9bitの画素データの各ビットのデータを、メモリバス上の各ビットに配置した32bitの転送データを、例えば、出力DMA部45から入力される図示しないデータイネーブル信号に基づいて順次出力する。
データ変換部41は、入力された画素データを、上述した第1のパッキング方法〜第5のパッキング方法の内、いずれか1つのパッキング方法で、1バースト分、すなわち、パッキング単位(4転送)分の画素データを配置(パッキング)したパックデータA〜Dを生成するパックデータ生成部411a〜411dを備えている。そして、比較部417は、メモリバス上のデータの変化が最も少ないパックデータを、転送パックデータとして選択し、転送パックデータとして選択されたパックデータを表す、パックデータ選択ビットを出力する。比較部417には、例えば、図9(a)に示したように、転送パックデータとして選択されたパックデータに対応したパックデータ選択ビットの値が、予め定められている。なお、図9(a)に示した転送パックデータとパックデータ選択ビットとの対応では、4つのパックデータ生成部411にそれぞれ対応したパックデータ選択ビットが予め設定しているため、パックデータ選択ビットのビット数は、2bitである。
そして、ビット結合部419は、例えば、図9(b)に示したように、1バーストの転送データ内の予め定められた固定位置にパックデータ選択ビットを付加した転送パックデータを、データ変換部41が最終的に出力する転送データとして、それぞれのバースト毎に、出力DMA部45に出力する。図9(b)では、パックデータ選択ビットを付加する固定位置が、4転送目のパックデータの最上位ビットから2ビット(より具体的には、メモリバスのビット[31]とビット[30])とに、予め定められている場合を示している。また、図9(b)では、2バースト分の転送データを示している。
データ変換部41とデータ逆変換部52とは、パックデータ選択ビットが付加される固定位置の情報を共有している。また、データ変換部41とデータ逆変換部52とは、図9(a)に示したような、選択されたパックデータとパックデータ選択ビットの値との対応、すなわち、パックデータ選択ビットの値が表す転送データのパッキング方法の情報を共有している。これにより、データ逆変換部52は、パックデータ選択ビットを確認することによって、データ変換部41から出力された転送データに適用されているパッキング方法を判定することができる。そして、データ逆変換部52は、転送データに適用されたパッキング方法と逆の方法で、転送パックデータの各ビットに配置されたそれぞれのデータが、順次分割(アンパッキング)された、1バースト分、すなわち、パッキング単位(4転送)分のアンパックデータを、元の画素データとして選択することができる。
上記に述べたように、本第1の構成のデータ変換部41および51では、複数のパッキング方法によって生成されたそれぞれのパックデータの中から、バースト転送時におけるメモリバスの各ビットの変化量が最も少ないパックデータを選択して出力することができる。そして、選択されたパックデータ(パッキング方法)を表すパックデータ選択ビットを、転送データと共に出力する。これにより、本第1の構成のデータ変換部41および51では、転送する画素データに最適なパッキング方法を選択することによって、画像データの転送に係る消費電力の低減効果がより高いデータ転送を実現することができる。このことにより、撮像装置1内の各構成要素(処理ブロック)とメモリ20との間での画素データの転送、すなわち、撮像装置1内の各構成要素間での画素データの受け渡しに係る消費電力を低減させることができる。
<第2の構成>
次に、本第2の構成のデータ変換部について説明する。図10は、本実施形態の撮像装置1に備えた第2の構成のデータ変換部43の概略構成を示したブロック図である。図10に示したデータ変換部43は、第1の構成のデータ変換部41の代わりに、撮像装置1に備えられる。従って、データ変換部43は、データ変換部51の代わりに撮像装置1に備えることもできる。図10に示したように、データ変換部43は、4つのパックデータ生成部431a〜431d(以下、パックデータ生成部431a〜431dのいずれか1つを表すときには「パックデータ生成部431」という)と、D−FF432と、4つのEXOR(排他的論理和)回路414a〜414d(以下、EXOR回路414a〜414dのいずれか1つを表すときには「EXOR回路414」という)と、4つのビット加算部415a〜415d(以下、ビット加算部415a〜415dのいずれか1つを表すときには「ビット加算部415」という)と、比較部437と、選択部438と、ビット結合部439と、を備えている。
本第2の構成のデータ変換部43は、図2に示した第1の構成のデータ変換部41内のパックデータ生成部411に代わって、パックデータ生成部431を備え、D−FF412に代わってD−FF432を備え、比較部417に代わって比較部437を備え、選択部418に代わって選択部438を備え、ビット結合部419に代わってビット結合部439を備えている。また、データ変換部41内のバースト単位バッファ413と、バースト単位累積部416とが削除されている。以下の説明においては、第1の構成のデータ変換部41内の構成要素と同様の構成要素に対して同一の符号を付与し、それぞれの詳細な説明は省略する。
なお、以下の説明においては、第1の構成と同様に、データ変換部43に、図20に示したような、16行×16列のベイヤーデータが入力され、4転送をベイヤーデータ内の各画素データのパッキング単位とし、ベイヤーデータ内の各画素データのビット数は9bitであり、メモリバス幅は32bitである場合について説明する。
データ変換部43は、第1の構成のデータ変換部41と同様に、撮像処理部40から順次入力された9bitの画素データの各ビットのデータを、予め定められた後述するパッキング方法のいずれか1つの方法で、メモリバス上の各ビットに配置した32bitの転送データを出力する。ただし、データ変換部43が転送データを生成する方法は、第1の構成のデータ変換部41と異なる。より具体的には、データ変換部41では、1バースト(4転送)分の転送パックデータの単位で、メモリバス上のビット変化が最も少ないパックデータを選択していたが、データ変換部43では、それぞれの1転送のパックデータ毎に、メモリバス上のビット変化が最も少ないパックデータを選択する。
データ変換部43が転送データを生成する際には、まず、入力された画素データを、予め定めた複数のパッキング方法でそれぞれパッキングした複数のパックデータを生成する。そして、データ変換部43は、生成したそれぞれの1転送のパックデータの内、メモリバス上のビット変化が最も少ない1転送のパックデータ(以下、「転送単位パックデータ」という)を選択する。その後、データ変換部43は、パックデータを選択したときの情報(パックデータ選択ビット)を、転送単位パックデータ内、すなわち、1転送のパックデータ内に存在する未使用ビットに付加して、最終的に出力する転送データとして出力する。
パックデータ生成部431a〜431dは、それぞれ、入力された画素データの各ビットのデータを、予め定めたパッキング方法で、メモリバスに対応したデータバス(このデータバスはメモリバスの各ビットに対応しているため、以下の説明においては、「メモリバス」として説明する)の各ビットに配置した、メモリバス幅のビット数(本第2の構成のデータ変換部43においては、32bit)の1転送のパックデータを順次生成する。そして、パックデータ生成部431a〜431dのそれぞれは、生成した1転送のパックデータを、順次、選択部438と対応するEXOR回路414a〜414dとに出力する。
なお、パックデータ生成部431a〜431dのそれぞれが生成した1転送のパックデータは、データ変換部41内のパックデータ生成部411がそれぞれ生成した、1バースト分のパックデータA〜Dの1転送毎のパックデータa〜dに相当する。従って、以下の説明においても、パックデータ生成部431a〜431dのそれぞれが生成した1転送のパックデータを、それぞれ、パックデータa〜dという。なお、パックデータ生成部431のそれぞれにおけるパッキング方法、およびパックデータの例に関する詳細な説明は、後述する。
選択部438は、比較部437から入力されたパックデータ選択ビットに応じて、パックデータ生成部431a〜431dの内、いずれか1つのパックデータ生成部431を選択する。そして、選択したパックデータ生成部431から出力されたパックデータ(パックデータa〜dの内、いずれか1つのパックデータ)を、転送単位パックデータとしてビット結合部439に出力する。なお、選択部438内には、パックデータ生成部431a〜431dのそれぞれから入力されたパックデータa〜dをそれぞれ一時的に保持するメモリ部を備え、比較部437から入力されるパックデータ選択ビットとのタイミングの整合をとって、転送単位パックデータを選択する。
D−FF432は、選択部438から出力された転送単位パックデータを保持する。このD−FF432によって保持された転送単位パックデータは、EXOR回路414a〜414dのそれぞれに出力される。なお、転送単位パックデータは、パックデータ生成部431が前回の1転送で出力したパックデータa〜dのいずれか1つのパックデータに相当する。
EXOR回路414a〜414dは、それぞれ、対応するパックデータ生成部431a〜431dから出力された32bitのパックデータa〜dと、D−FF432から出力された32bitの転送単位パックデータとの2つのパックデータの各ビットの値をビット毎に比較する。そして、EXOR回路414a〜414dは、2つのパックデータのビットの値が同じ値のときに“0”を、2つのパックデータのビットの値が異なる値のときに“1”を、比較したそれぞれのビット毎に出力する。
なお、EXOR回路414a〜414dのそれぞれは、D−FF432から入力された転送単位パックデータを、同じパッキング単位(4転送)において、パックデータ生成部431a〜431dのそれぞれが出力した前回のパックデータa〜dとして、各ビットの値を比較する。これにより、データ変換部43が出力した前回の転送単位パックデータが、パックデータ生成部431a〜431dのいずれのパックデータ生成部431によって生成されたパックデータであるかに関係なく、前回のパックデータと、今回のパックデータa〜dとの比較が行われる。
なお、パックデータ生成部431から出力された今回のパックデータa〜dが1転送目のパックデータa〜dである場合には、ビットの値が変化していないことを示す値=“0”を、全てのビットに出力する。
ビット加算部415a〜415dは、それぞれ、対応するEXOR回路414a〜414dから入力された値が変化しているビットの数を計数したビット変化数を算出する。これにより、パックデータ生成部431a〜431dのいずれか1つのパックデータ生成部431が出力した前回のパックデータ(D−FF432から出力された転送単位パックデータ)の値が、次にパックデータ生成部431a〜431dが出力した今回のパックデータa〜dの値に変化する際に、メモリバス上の各ビットの値が異なる値に変化するビットの数(ビット変化数)が、それぞれのパックデータ生成部431によって算出される。そして、ビット加算部415a〜415dのそれぞれは、算出したビット変化数を、比較部437に出力する。
比較部437は、ビット加算部415a〜415dのそれぞれから入力されたビット変化数の内、ビット変化数が最も少ないものを判定し、最も少ないビット変化数を出力したビット加算部415を特定(選択)する。そして、比較部437は、最も少ないビット変化数を出力したビット加算部415を表す情報、すなわち、最もメモリバス上のビット変化が少ないパッキング方法を表す情報を、パックデータ選択ビットとして、選択部438とビット結合部439とに出力する。これにより、1転送のパックデータ(転送単位パックデータ)においてメモリバス上のビット変化が最も少ないパックデータが選択されることになる。
なお、パックデータ選択ビットは、データ変換部43内に備えたパックデータ生成部431のそれぞれに対応した値が、予め定められており、データ変換部43に対応するデータ逆変換部にも、共通の値が予め定められている。これにより、データ変換部43に対応するデータ逆変換部は、データ変換部43で選択されたパッキング方法を判別することができる。
ビット結合部439は、選択部438から入力された転送単位パックデータ内、すなわち、1転送のパックデータ内に存在する未使用ビットに、比較部437から入力されたパックデータ選択ビットを付加する。そして、ビット結合部439は、パックデータ選択ビットを付加した転送単位パックデータを、データ変換部43が最終的に出力する転送データとして、出力DMA部45に出力する。
なお、ビット結合部439がパックデータ選択ビットを付加する転送単位パックデータ内の未使用ビットの位置は、パックデータ生成部431a〜431dが生成する1転送のパックデータa〜dの全てで共通の未使用ビットの固定位置が予め定められている。また、データ変換部43に対応するデータ逆変換部にも、パックデータa〜dで共通の未使用ビットの固定位置と同じ位置が、パックデータ選択ビットが付加された未使用ビットの位置として、予め定められている。これにより、データ変換部43に対応するデータ逆変換部は、固定された位置に付加されているパックデータ選択ビットに基づいて、データ変換部43が出力した転送データを逆変換して、元の画素データに復元することができる。
次に、本第2の構成のデータ逆変換部について説明する。図11は、本実施形態の撮像装置1に備えた第2の構成のデータ逆変換部54の概略構成を示したブロック図である。図11に示したデータ逆変換部54は、第1の構成のデータ逆変換部52の代わりに、撮像装置1に備えられる。従って、データ逆変換部54は、データ逆変換部62の代わりに撮像装置1に備えることもできる。図11に示したように、データ逆変換部54は、ビット分離部521と、4つのデータ復元部542a〜542d(以下、データ復元部542a〜542dのいずれか1つを表すときには「データ復元部542」という)と、選択部524と、を備えている。
本第2の構成のデータ逆変換部54は、図3に示した第1の構成のデータ逆変換部52内のデータ復元部522に代わって、データ復元部542を備え、データバッファ523が削除されている。以下の説明においては、第1の構成のデータ逆変換部52内の構成要素と同様の構成要素に対して同一の符号を付与し、それぞれの詳細な説明は省略する。
なお、以下の説明においては、第1の構成と同様に、データ逆変換部54に、データ変換部43によってパッキングされた、4転送をパッキング単位とした1バーストのパックデータが、入力DMA部56を介して入力され、入力されたパックデータを、図20に示したベイヤーデータに戻す場合について説明する。従って、ベイヤーデータ内の各画素データのビット数は9bitであり、メモリバス幅は32bitであるものとして説明する。
データ逆変換部54は、第1の構成のデータ逆変換部52と同様に、入力DMA部56から入力された32bitの転送データの各ビットに配置されたデータを、予め定められた後述するパッキング方法のいずれか1つの方法と逆の方法で、画像処理部50が画像処理する元の画像データ(ベイヤーデータ)に戻した9bitの画素データに復元する。ただし、データ逆変換部54が元の画素データに復元する方法は、第1の構成のデータ逆変換部52と異なる。より具体的には、データ逆変換部52では、1バースト(4転送)分の転送パックデータのいずれかの固定位置に付加されていたパックデータ選択ビットに基づいて元の画素データに復元していたが、データ逆変換部54では、1転送のパックデータ毎に付加されているパックデータ選択ビットに基づいて、元の画素データに復元する。
また、データ逆変換部54には、上述したように、データ変換部43によってパックデータ選択ビットが付加された未使用ビットの位置と同じ固定位置が、予め定められている。そして、データ逆変換部54が画素データを復元する際には、1転送毎に入力された32bitの転送データ(この転送データは、データ変換部43が生成した転送データと同等である)を、パックデータ選択ビットと、データ変換部43内のパックデータ生成部431が画素データをパッキングしたパックデータ(このパックデータは、データ変換部43内の選択部438によって選択された転送単位パックデータと同等であるため、以下の説明のいては、「転送単位パックデータ」として説明する)とに、順次分離する。そして、データ逆変換部54は、1転送毎の転送単位パックデータを、データ変換部43によるパッキング方法と逆の方法で、順次分割(アンパッキング)し、画素データに相当するアンパックデータを順次生成する。その後、データ逆変換部54は、パックデータ選択ビットに基づいて、アンパックデータの中から、データ変換部43に入力された画素データと同等のアンパックデータを1転送毎に選択して、元の画素データとして順次出力する。
ビット分離部521は、入力DMA部56から入力された転送データを、1転送毎に順次、転送データ内の予め定められた固定位置に付加されているパックデータ選択ビットと、転送単位パックデータとに分離する。そして、ビット分離部521は、分離した転送単位パックデータを、データ復元部542に1転送毎に順次出力する。また、ビット分離部521は、分離したパックデータ選択ビットを、選択部524に1転送毎に順次出力する。
データ復元部542a〜542dは、それぞれ、パックデータ生成部431a〜431dに対応し、ビット分離部521から入力された転送単位パックデータを、予め定めたパッキング方法と逆の方法で、転送単位パックデータの各ビットに配置されたそれぞれのデータ(本第2の構成のデータ逆変換部54においては、9bitのデータ)に、順次分割(アンパッキング)した、1転送分のアンパックデータを生成する。そして、データ復元部542a〜542dのそれぞれは、生成したアンパックデータを、1画素毎、すなわち、画素データのビット数(本第2の構成のデータ逆変換部54においては、9bit)毎に順次、選択部524に出力する。
なお、データ復元部542a〜542dのそれぞれが生成した1画素毎のアンパックデータは、データ逆変換部52内のデータ復元部522がそれぞれ生成した、1画素毎のアンパックデータa〜dに相当する。従って、以下の説明においても、データ復元部542a〜542dのそれぞれが出力する1画素毎のアンパックデータを、それぞれ、アンパックデータa〜dという。
選択部524は、ビット分離部521から入力されたパックデータ選択ビットに応じて、データ復元部542a〜542dの内、いずれか1つのデータ復元部542を選択する。そして、選択したデータ復元部542から入力されたアンパックデータ(アンパックデータa〜dの内、いずれか1つのアンパックデータ)を、元の画素データとして、順次、画像処理部50に出力する。なお、選択部524内には、データ復元部542a〜542dのそれぞれから入力されたアンパックデータa〜dをそれぞれ一時的に保持するメモリ部を備え、ビット分離部521から入力されるパックデータ選択ビットとのタイミングの整合をとって、元の画素データを選択する。
このようにして、データ逆変換部54は、それぞれの転送データの予め定められた固定位置に付加されているパックデータ選択ビットに基づいて、データ変換部43が、予め定めた複数のパッキング方法の内、いずれのパッキング方法でパッキングしたパックデータを出力したのかを判別する。そして、データ逆変換部54は、データ変換部43が選択したパッキング方法と逆の方法で生成されたアンパックデータを、データ変換部43が出力した転送データを逆変換した元の画素データとして出力、すなわち、元の画素データに復元する。
なお、上述したように、データ復元部542a〜542dは、それぞれ、パックデータ生成部431a〜431dに対応している。しかし、データ復元部542がそれぞれ生成するアンパックデータa〜dは、元の画素データと同等のデータではないこともある。これは、第1の構成のデータ逆変換部52と同様に、データ復元部542a〜542dのそれぞれが、アンパックデータa〜dを生成する時点では、入力された転送単位パックデータが、データ変換部43内のいずれのパックデータ生成部431によって生成されたパックデータ、すなわち、図10に示したパックデータa〜dのいずれのパックデータであるかが不明であるためである。従って、データ復元部542a〜542dのそれぞれが生成したアンパックデータa〜dを、パックデータ選択ビットに基づいて選択したアンパックデータa〜dのいずれか1つのアンパックデータを、データ逆変換部54が最終的に出力する画素データとして、画像処理部50に出力している。
ここで、パックデータ生成部431a〜dにおけるパックデータa〜dの生成方法、すなわち、予め定められた複数のパッキング方法(画素データの配置方法)の一例について説明する。本実施形態の撮像装置1では、データ変換部43内のパックデータ生成部431a〜dが入力された画素データをメモリバスに配置したパックデータを生成し、データ逆変換部54内のデータ復元部542a〜542dが入力された転送単位パックデータを元の画素データに戻す。なお、以下の説明においては、パックデータ生成部431に、図20に示したベイヤーデータ内の各画素データが順次入力され、4転送を1つのパッキング単位とした1バーストのパックデータにパッキングする場合について説明する。また、ベイヤーデータ内の各画素データのビット数は9bitであり、メモリバス幅は32bitであるものとする。
なお、データ復元部542a〜dによる転送単位パックデータを元の画素データに戻す方法(アンパッキング方法)は、パックデータ生成部431a〜dによる画素データのパッキング方法と逆の方法であるため、詳細な説明は省略する。
<第6のデータ配置方法>
図12は、本第2の構成のデータ変換部43に備えたパックデータ生成部431によるデータ配置方法の一例(第6のパッキング方法)を説明する図である。図12には、本第6のパッキング方法によって生成されたパックデータ内の画素データの配置を示している。
本第6のパッキング方法では、パックデータ生成部431が、入力された画素データの各ビットのデータを、メモリバスの各ビットに順次配置した、メモリバス幅のビット数のパックデータを生成する。なお、本第6のパッキング方法は、従来のパッキング方法と同様であるため、詳細な説明は省略する。
図12では、パックデータ生成部431が、1転送内に3画素分の画素データをパッキングし、ベイヤーデータ内の各画素データを、1バースト(4転送)で12画素分の画素データ(「R0」,「G1」,「R2」,「G3」,「R4」,「G5」,「R6」,「G7」,「R8」,「G9」,「R10」,「G11」)を転送する場合のパックデータを示している。より具体的には、パックデータ生成部431が、1転送目に「R0」、「G1」、および「R2」、2転送目に「G3」、「R4」、および「G5」、3転送目に「R6」、「G7」、および「R8」、4転送目に「G9」、「R10」、および「G11」を、それぞれメモリバスの最下位ビットから順次配置(パッキング)した場合を示している。
なお、本第6のパッキング方法においては、1転送分のパックデータ内に画素データの全てのビットを配置することができない場合には、次の画素データのパッキングをしない。これは、本第6のパッキング方法では、1転送をパッキング単位として各画素データをパッキングするため、次の画素データをパッキングすると、画素データがパッキング単位を跨いでしまうことになるためである。従って、画素データが配置されなかったメモリバスのビット(図12においては、各転送のメモリバスのビット[31]〜ビット[27])は、未使用ビットとする。
<第7のデータ配置方法>
図13は、本第2の構成のデータ変換部43に備えたパックデータ生成部431によるデータ配置方法の別の一例(第7のパッキング方法)を説明する図である。図13(a)には、第6のパッキング方法、すなわち、従来のパッキング方法によって生成されたパックデータ内の画素データの配置を示している。また、図13(b)には、本第7のパッキング方法によって画素データの配置が変更されたパックデータ内の画素データの配置を示している。
本第7のパッキング方法では、1バースト(4転送)分のパッキング単位を、パック領域1(図13(b)においては、18bitの領域)と、パック領域2(図5(b)においては、14bitの領域)とに分けて、メモリバス上の各ビットに画素データの各ビットを配置する。そして、本第7のパッキング方法では、パックデータ生成部431が、パックデータ内のパック領域1の連続する2転送間のデータにおいて、隣接する同一色の画素データが、メモリバス上の同一ビットに配置されるように、それぞれの1転送内に配置される画素データの位置を変更する。また、パックデータ生成部431は、画素データが配置されずに残っているパックデータ内のパック領域2に、それぞれの1転送内でパック領域1に配置されなかった画素データを配置する。
なお、パックデータ生成部431とデータ復元部542とには、同じパック領域1およびパック領域2が、予め定められており、それぞれの領域に配置する画素データの位置も予め定められている。これにより、データ復元部542は、パックデータ生成部431によってパッキングされたそれぞれの画素データを、元の画素データに復元することができる。
図13(b)では、パックデータ生成部431が、ベイヤーデータ内の各画素データ(「R0」,「G1」,「R2」,「G3」,「R4」,「G5」,「R6」,「G7」,「R8」,「G9」,「R10」,「G11」)をパッキングしたパックデータを示している。より具体的には、パックデータ生成部431が、1転送目に「R0」、「G1」、および「R2」、2転送目に「R4」、「G3」、および「G5」、3転送目に「R6」、「G7」、および「R8」、4転送目に「R10」、「G9」、および「G11」を、それぞれメモリバスの最下位ビットから順次配置(パッキング)した場合を示している。
<第8のデータ配置方法>
図14は、本第2の構成のデータ変換部43に備えたパックデータ生成部431によるデータ配置方法の、さらに別の一例(第8のパッキング方法)を説明する図である。図14(a)には、第6のパッキング方法、すなわち、従来のパッキング方法によって生成されたパックデータ内の画素データの配置を示している。また、図14(b)には、本第8のパッキング方法によって画素データの配置が変更されたパックデータ内の画素データの配置を示している。
本第8のパッキング方法では、パックデータ生成部431が、まず、入力された画素データの各ビットのデータを、第6のパッキング方法と同様に、メモリバスの各ビットに順次配置した、メモリバス幅のビット数のパックデータを生成する。そして、パックデータ生成部431は、予め設定された並べ替え基準位置に画素データの境界のビットが配置されるように、同じ1転送のパックデータ内に配置された画素データの配置を並べ替える。そして、画素データの配置を並べ替えたパックデータを最終的な1転送のパックデータにする。
なお、並べ替え基準位置は、バースト転送する際の連続する2転送間のデータにおいて、メモリバス上に配置される隣接する同一色の画素データのビットの位置がなるべく同じ位置になるような基準のビットの位置に、予め設定されている。そして、それぞれのパックデータ内の画素データの位置を並べ替え基準位置にするための並べ替え方法が、1転送毎に予め設定されている。これにより、メモリバス上の各ビットの変化が最も小さくするようにしている。
なお、パックデータ生成部431とデータ復元部542とには、同じ並べ替え基準位置が、予め定められており、それぞれのパックデータ内で画素データの並べ替え方法が予め定められている。これにより、データ復元部542は、パックデータ生成部431が並べ替えられた方法と逆の方法で並べ替えることによって、パッキングされたそれぞれの画素データを、元の画素データに復元することができる。
図14(a)に示したように、パックデータ生成部431は、まず、ベイヤーデータ内の各画素データ(「R0」,「G1」,「R2」,「G3」,「R4」,「G5」,「R6」,「G7」,「R8」,「G9」,「R10」,「G11」)をパッキングしたパックデータを生成する。より具体的には、パックデータ生成部431が、1転送目に「R0」、「G1」、および「R2」、2転送目に「G3」、「R4」、および「G5」、3転送目に「R6」、「G7」、および「R8」、4転送目に「G9」、「R10」、および「G11」を、それぞれメモリバスの最下位ビットから順次配置(パッキング)する。
続いて、パックデータ生成部431は、生成したバックデータの1転送毎のパックデータ内に配置された画素データを並べ替える。図14(a)に示したパックデータの一例では、メモリバスのビット[17]とビット[18]との境界の位置に並べ替え基準位置が設定されている。パックデータ生成部431は、図14(a)内に示した矢印のように、それぞれの1転送のパックデータ内の画素データの配置を並べ替えて、図14(b)に示したような、それぞれの1転送のパックデータを生成する。より具体的には、パックデータ生成部431は、1転送目のパックデータ内の「G1」と「R2」とを並べ替える。また、パックデータ生成部431は、2転送目のパックデータ内の「R4」と「G5」、3転送目のパックデータ内の「G7」と「R8」、4転送目のパックデータ内の「R10」と「G11」とを、それぞれ並べ替える。これにより、図14(b)に示したように、1転送目〜4転送目までのパックデータに含まれる各画素データの配置が、並べ替えられる。
<第9のデータ配置方法>
図15は、本第2の構成のデータ変換部43に備えたパックデータ生成部431によるデータ配置方法の、さらに別の一例(第9のパッキング方法)を説明する図である。図15(a)には、本第9のパッキング方法において予め設定されている配置の組み合わせ(並べ替えケース)を示している。また、図15(b)には、本第9のパッキング方法によって画素データの配置が変更されたパックデータ内の画素データの配置を示している。なお、図15(a)に示した表中の「単位」に続く数字は、説明を容易にするために付与した、並べ替え単位(図15においては、1byteの単位)を識別する情報である。この数字は、パックデータの並べ替えを行わない場合(並べ替えケース1)において、下位の並べ替え単位(1byte)から順に付与された数字であり、配置変更の処理によって画素データの配置がどの並べ替え単位の位置に変更されたかを、識別するための情報である。
本第9のパッキング方法では、パックデータ生成部431が、まず、入力された画素データの各ビットのデータを、第6のパッキング方法と同様に、メモリバスの各ビットに順次配置した、メモリバス幅のビット数のパックデータを生成する。そして、パックデータ生成部431は、予め定められた並べ替え単位(1byteの単位)毎に、連続する2転送間のパックデータ内の画素データをビット毎に比較し、予め定められた並べ替えケースの組み合わせの範囲内でパックデータ内の画素データの配置を並べ替えたバックデータを生成する。さらに、パックデータ内の画素データの配置を並べ替えたときの情報(図15(a)に示した並べ替え情報)を、それぞれの1転送のパックデータ内で画素データが配置されていない未使用ビットに付加して、最終的な1転送のパックデータにする。
なお、パックデータ生成部431とデータ復元部542とには、同じ並べ替えケースが、予め定められている。これにより、データ復元部542は、1転送毎のパックデータ内に付加された並べ替え情報を確認することによって、パックデータ生成部431がパックデータ内の画素データの配置を並べ替えるときに採用された並べ替えケースを把握することができる。そして、データ復元部542が、パックデータ生成部431に採用された並べ替えケースと逆の配置、すなわち、元の画素データの配置に、パックデータ内の画素データの配置を並べ替えることによって、パッキングされたそれぞれの画素データを、元の画素データに復元することができる。
本第9のパッキング方法によって、図15(b)に示したような最終的なパックデータを生成する際には、まず、パックデータ生成部431が、ベイヤーデータ内の各画素データ(「R0」,「G1」,「R2」,「G3」,「R4」,「G5」,「R6」,「G7」,「R8」,「G9」,「R10」,「G11」)をパッキングしたパックデータを生成する(図12参照)。
続いて、パックデータ生成部431は、パックデータのメモリバス幅を、予め定められたビット数(図15においては、8bit:1byte)の並べ替え単位に区切る。そして、例えば、1転送目のパックデータの各ビットの値と、2転送目のパックデータの各ビットの値とを比較して、値が変化しているビットの数を並べ替え単位毎に算出する。そして、パックデータ生成部431は、算出した値が変化しているビットの数が最も少なくなる並べ替えの組み合わせ(並べ替えケース)を選択する。そして、選択した並べ替えケースの配置となるように、2転送目のパックデータ内の画素データの配置を並べ替え単位毎に並べ替えたパックデータを生成する。
図15(b)に示したパックデータ内の各画素データの配置では、1転送目のパックデータを基準のパックデータにする。従って、1転送目のパックデータは、並べ替えを行わないため、並べ替えケース1が選択される。そして、パックデータ生成部431は、1転送目のパックデータの未使用ビット(図15(b)においては、ビット「27」〜ビット「31」)に、選択した並べ替えケース1に対応した並べ替え情報の値を付加(ビット結合)する。図15(b)においては、1転送目のパックデータのビット「27」とビット「28」とに、並べ替えケース1に対応した並べ替え情報の値(“00”)がビット結合された場合を示している。そして、パックデータ生成部431は、並べ替え情報を付加した1転送目のパックデータを、最終的な1転送目のパックデータとして出力する。
また、図15(b)に示したパックデータ内の各画素データの配置では、1転送目のパックデータから2転送目のパックデータに替わるときに並べ替えケース2が選択され、2転送目のパックデータから3転送目のパックデータに替わるときに並べ替えケース3が選択され、3転送目のパックデータから4転送目のパックデータに替わるときに並べ替えケース4が選択された場合を示している。そして、図15(b)においては、2転送目のパックデータの未使用ビットに並べ替えケース2に対応した並べ替え情報の値(“01”)が、3転送目のパックデータの未使用ビットに並べ替えケース3に対応した並べ替え情報の値(“10”)が、4転送目のパックデータの未使用ビットに並べ替えケース4に対応した並べ替え情報の値(“11”)が、それぞれビット結合された場合を示している。そして、パックデータ生成部431は、並べ替え情報を付加した2転送目〜4転送目のパックデータを、最終的な2転送目〜4転送目のパックデータとして、順次出力する。
<第10のデータ配置方法>
図16は、本第2の構成のデータ変換部43に備えたパックデータ生成部431によるデータ配置方法の、さらに別の一例(第10のパッキング方法)を説明する図である。図16には、本第10のパッキング方法によって反転処理された画素データが配置されたパックデータ内の画素データの配置を示している。なお、本第10のパッキング方法における反転処理は、図8(a)および図8(b)を用いて説明した第5のパッキング方法における反転処理と同様の考え方であるため、詳細な説明は省略する。
本第10のパッキング方法では、パックデータ生成部431が、まず、入力された画素データの各ビットのデータを、第6のパッキング方法と同様に、メモリバスの各ビットに順次配置した、メモリバス幅のビット数のパックデータを生成する。そして、パックデータ生成部431は、第5のパッキング方法と同様に、1転送のパックデータ内に配置されたそれぞれの画素データを予め定めた上位のビットと下位のビットとに分け、1転送のパックデータ内に配置されたそれぞれの画素データの下位のビットをまとめて反転処理する。そして、パックデータ生成部431は、それぞれの画素データの上位のビットと、反転処理した後のそれぞれの画素データの下位のビットとを分けて、それぞれ1転送のメモリバスに配置する。さらに、画素データの下位のビットを反転処理したときの情報である反転ビットを、それぞれの1転送のパックデータ内で画素データが配置されていない未使用ビットに付加して、最終的な1転送のパックデータにする。
なお、パックデータ生成部431とデータ復元部542とは、反転ビットの値が意味する内容、すなわち、反転処理を行ったか否かの情報を共有している。また、1転送のパックデータ内に分けて配置された画素データの上位ビットと下位のビットとの配置位置も予め定められている。これにより、データ復元部542は、反転ビットを確認することによって、パックデータ生成部431が反転処理を行ったか否かを判定することができる。そして、データ復元部542は、パックデータ生成部431によって反転処理が行われたデータ(より詳細には、下位の画素データ)を、反転処理することによって、画素データの下位のビットを元に戻すことができる。その後、画素データの上位のビットと元に戻した画素データの下位のビットを結合することによって、1転送のパックデータ内に配置されたそれぞれの画素データを、元の画素データに復元することができる。
本第10のパッキング方法によって、図16に示したような最終的なパックデータを生成する際には、まず、パックデータ生成部431が、ベイヤーデータ内の各画素データ(「R0」,「G1」,「R2」,「G3」,「R4」,「G5」,「R6」,「G7」,「R8」,「G9」,「R10」,「G11」)をパッキングしたパックデータを生成する。より具体的には、パックデータ生成部431が、1転送目に「R0」、「G1」、および「R8」、2転送目に「R2」、「G3」、および「R10」、3転送目に「R4」、「G5」、および「G9」、4転送目に「R6」、「G7」、および「G11」を、それぞれメモリバスの最下位ビットから順次配置(パッキング)する。
続いて、パックデータ生成部431は、それぞれの1転送毎のパックデータに配置された画素データの下位のビット(例えば、1転送目のパックデータにおいては、「R0」、「G1」、および「R8」のビット[0]〜ビット[3])をまとめて反転処理する。そして、パックデータ生成部431は、それぞれの1転送毎のパックデータに配置された画素データの上位のビット(例えば、1転送目のパックデータにおいては、「R0」、「G1」、および「R8」のビット[4]〜ビット[8])を、各転送におけるパックデータの最下位ビットから順次パッキングする。さらに、反転処理した後の画素データの下位のビットを、各転送のパックデータ内に配置した画素データの上位のビットに続いて順次パッキングする。そして、画素データの下位のビットを反転処理したときの反転ビットを、各転送におけるパックデータ内の未使用ビット(図16(b)においては、メモリバスのビット[27])にビット結合する。
次に、データ変換部43が出力する転送データについて説明する。図17は、本第2の構成のデータ変換部43から出力する転送データを説明する図である。上述したように、データ変換部43は、撮像処理部40から順次入力された9bitの画素データの各ビットのデータを、メモリバス上の各ビットに配置した32bitの転送データを、例えば、出力DMA部45から入力される図示しないデータイネーブル信号に基づいて順次出力する。
データ変換部43は、入力された画素データを、上述した第6のパッキング方法〜第10のパッキング方法の内、いずれか1つのパッキング方法で、画素データを配置(パッキング)したパックデータa〜dを生成するパックデータ生成部431a〜431dを備えている。そして、比較部437は、メモリバス上のデータの変化が最も少ないパックデータを、転送単位パックデータとして選択し、転送単位パックデータとして選択されたパックデータを表す、パックデータ選択ビットを出力する。比較部437には、例えば、図17(a)に示したように、転送単位パックデータとして選択されたパックデータに対応したパックデータ選択ビットの値が、予め定められている。なお、図17(a)に示した転送単位パックデータとパックデータ選択ビットとの対応では、4つのパックデータ生成部431にそれぞれ対応したパックデータ選択ビットが予め設定しているため、パックデータ選択ビットのビット数は、2bitである。
そして、ビット結合部439は、例えば、図17(b)に示したように、1転送の転送単位パックデータ内の予め定められた固定位置にパックデータ選択ビットを付加した転送単位パックデータを、データ変換部43が最終的に出力する1転送の転送データとして、それぞれの転送毎に、出力DMA部45に出力する。図17(b)では、パックデータ選択ビットを付加する固定位置が、各転送のパックデータの最上位ビットから2ビット(より具体的には、メモリバスのビット[31]とビット[30])とに、予め定められている場合を示している。また、図17(b)では、3転送分の転送データを示している。
データ変換部43とデータ逆変換部54とは、パックデータ選択ビットが付加される固定位置の情報を共有している。また、データ変換部43とデータ逆変換部54とは、図17(a)に示したような、選択されたパックデータとパックデータ選択ビットの値との対応、すなわち、パックデータ選択ビットの値が表す1転送毎の転送データのパッキング方法の情報を共有している。これにより、データ逆変換部54は、パックデータ選択ビットを確認することによって、データ変換部43から出力された各転送の転送データに適用されているパッキング方法を判定することができる。そして、データ逆変換部54は、1転送の転送データに適用されたパッキング方法と逆の方法で、転送単位パックデータの各ビットに配置されたそれぞれのデータが、順次分割(アンパッキング)された、1転送分のアンパックデータを、元の画素データとして選択することができる。このような1転送毎の元の画素データの復元を繰り返して、1バースト分、すなわち、パッキング単位(4転送)分の元の画素データを復元する。
なお、本第2の構成のデータ変換部43では、1バースト(4転送)分の転送データにおいて、最初(1転送目)の転送データ(例えば、図17(b)に示した1転送目の転送データ)を基準の転送データにする。従って、1転送目の転送データは、配置されている画素データの並べ替えの処理や、反転処理などのパッキング処理を行わない。そのため、1転送目の転送データに付加されるパックデータ選択ビットは、画素データの並べ替えの処理や、反転処理などのパッキング処理を行っていないことを表すパックデータ選択ビットの値となる。その後、2転送目の転送データからは、選択されたパッキング方法によるパックデータであることを表すパックデータ選択ビットの値が付加される。
なお、データ変換部43とデータ逆変換部54とで基準の処理(パッキング処理)を予め設定することもできる。この場合には、1転送目の転送データに付加されるパックデータ選択ビットには、予め設定された基準のパッキング処理を表すパックデータ選択ビットの値が付加されることになる。
上記に述べたように、本第2の構成のデータ変換部43では、複数のパッキング方法によって生成された1転送毎のパックデータの中から、バースト転送時におけるメモリバスの各ビットの変化量が最も少ないパックデータを選択して出力することができる。そして、選択されたパックデータ(パッキング方法)を表すパックデータ選択ビットを、1転送毎に、転送データと共に出力する。これにより、本第2の構成のデータ変換部43では、転送する画素データに最適なパッキング方法を1転送毎に選択することによって、第1の構成のデータ変換部41よりも画像データの転送に係る消費電力の低減効果がより高いデータ転送を実現することができる。このことにより、撮像装置1内の各構成要素(処理ブロック)とメモリ20との間での画素データの転送、すなわち、撮像装置1内の各構成要素間での画素データの受け渡しに係る消費電力を、さらに低減させることができる。
上記に述べたとおり、本発明を実施するための形態によれば、転送する画素データに最適なパッキング方法を選択し、最適なパッキング方法によってパッキングされた転送データを出力する。また、選択した最適なパッキング方法を表す情報を、転送データの未使用ビットに付加して出力する。これにより、バースト転送時の連続する2転送間において、メモリバスの各ビットの変化量を少なくすることができると共に、転送データから元の画素データを容易に復元することができる。しかも、データの転送効率は、従来と同等のデータ転送効率を維持することができる。これにより、像装置内の各構成要素(処理ブロック)とメモリとの間でのデータの受け渡しに係る消費電力の低減効果を十分に得ることができる。
なお、上記に述べた実施形態においては、1バースト(4転送)、または1転送を、最適なパッキング方法を選択する単位として、選択したパッキング方法を表すパックデータ選択ビットを付加する場合について説明したが、最適なパッキング方法を選択する単位は、本発明を実施するための形態に限定されるものではない。例えば、それぞれの画素データを最適なパッキング方法を選択する単位とすることもできる。
この場合の一例について説明する。図18は、本実施形態のデータ変換部によるパッキング処理をデータ(画素データ)毎に適用した場合の一例を説明する図である。なお、以下の説明においては、説明を容易にするため、図20に示したまた、ベイヤーデータ内の各画素データのビット数は8bitであり、メモリバス幅は32bitであるものとする。また、1転送内に3画素分の画素データをパッキングするものとする。
図18では、それぞれのパックデータ内に配置された画素データ毎に異なるパッキング処理が適用されている場合を示している。より具体的には、各パックデータ内の「R」画素には、画素データの上位のビットと下位のビットとを並べ替えて配置する並べ替えの処理が適用され、当該「R」画素データの上位側のビットに、並べ替えを行ったか否かを表す並べ替え情報が付加されている場合を示している。また、各パックデータ内の「G」画素には、画素データの下位のビットに対して反転処理が適用され、当該「G」画素の上位側のビットに、反転処理を行ったか否かを表す反転ビットが付加されている場合を示している。そして、それぞれの画素データに対して、並べ替えの処理または反転処理のいずれの処理(パッキング処理)を行ったかを表す、パックデータ選択ビットが、それぞれの画素データのさらに上位側のビットに付加されている場合を示している。
データ変換部とデータ逆変換部とは、パックデータ選択ビットが付加される固定位置(図18においては、メモリバスのビット[9]と、ビット[19]と、ビット[29])の情報を共有している。また、データ変換部とデータ逆変換部とは、並べ替えの処理または反転処理のいずれの処理を行ったかを表す、パックデータ選択ビットの値を共有している。これにより、データ逆変換部は、パックデータ選択ビットを確認することによって、データ変換部から出力されたパックデータ内の各画素データに適用されているパッキング処理を判定することができる。そして、データ逆変換部は、各画素データに適用されたパッキング処理と逆の方法で、それぞれのパックデータ内に配置された各画素データを、元の画素データに復元することができる。このような画素データ毎の元の画素データへの復元を繰り返して、1バースト分、すなわち、パッキング単位(4転送)分の元の画素データを復元する。
なお、図18においては、並べ替えの処理または反転処理のいずれの処理を行ったかを、1bitのパックデータ選択ビットで表しているが、この状態においても、並べ替えの処理および反転処理のいずれの処理も行わないことを表すことができる。例えば、パックデータ選択ビットの値を、並べ替えの処理を表す値とするように予め決めておき、並べ替え情報を、並べ替えを行わないことを表す値とすることによって、並べ替えの処理が行われていない、すなわち、何も処理されていない画素データをパッキングすることができる。また、例えば、逆に、パックデータ選択ビットの値を、反転処理を表す値とするように予め決めておき、反転ビットを、反転処理を行わないことを表す値とすることによって、反転処理が行われていない、すなわち、何も処理されていない画素データをパッキングすることができる。
また、上記に述べた実施形態においては、ベイヤーデータに本実施形態のパッキング方法を適用した場合について説明したが、本実施形態のパッキング方法は、ベイヤーデータへの適用に限定されるものではなく、RGBデータ、YC422点順次やYC444点順次フォーマットのYCbCrデータ、またはOSDデータなど、様々な画像データに適用することができる。また、本実施形態のパッキング方法は、画像データへの適用に限定されるものではなく、音声データなど、他の形式のデータに適用することもできる。
また、本実施形態においては、4転送を1回のバースト転送の単位とし、1バーストをデータのパッキング単位とした場合について説明したが、1回のバースト転送における転送の回数や、データのパッキングの単位は、本発明を実施するための形態に限定されるものではない。例えば、64転送を1回のバースト転送の単位とし、1バースト内の16転送をデータのパッキングの単位とする、すなわち、1バースト内に4つのパッキング単位が含まれる構成にすることもできる。また、例えば、16転送をデータのパッキングの単位とし、8転送を1回のバースト転送の単位とする、すなわち、パッキング単位が2回のバースト転送に跨っている構成にすることもできる。
また、本実施形態においては、撮像装置内の構成要素間でデータの受け渡しを行う場合のパッキング方法について、いくつかの例を説明したが、データをパッキングするためのパッキング方法は、本発明を実施するための形態に限定されるものではない。また、本実施形態のデータ変換部とデータ逆変換部との構成によるデータの受け渡しを適用することができる範囲は、本発明を実施するための形態に限定されるものではなく、各構成要素間でデータの受け渡しを行うシステムであれば、どのようなシステムにも適用することができる。
また、本実施形態においては、例えば、データ変換部を出力DMA部の前段の処理ブロックとして配置し、データ逆変換部を入力DMA部の後段の処理ブロックとして配置した場合の一例について説明したが、データ変換部およびデータ逆変換部の配置は、本発明を実施するための形態に限定されるものではない。例えば、データ変換部を出力DMA部内の構成要素とすることや、データ逆変換部を入力DMA部内の構成要素とすることもできる。また、例えば、データ変換部を前段の撮像処理部内の構成要素とすることや、データ逆変換部を後段の画像処理部内の構成要素とすることもできる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。