以下に、本発明の好ましい実施形態を、添付の図面に基づいて詳細に説明する。なお、以下に説明する実施形態は単なる例示であり、本発明は実施形態に記載された構成に限定するものではない。
(第1の実施形態)
図1は、本発明の第1の実施形態による画素100の構成例を示す図である。画素100は、アバランシェフォトダイオード(以下、APDという)101と、クエンチ抵抗102と、波形整形回路103と、カウンタ104とを有する。
APD101は、クエンチ抵抗102を介して、逆バイアス電圧VAPDのノードに接続される。APD101は、光子が入射するとアバランシェ増倍による電荷を発生させ、発生した電荷をクエンチ抵抗102を介して逆バイアス電圧VAPDのノードに排出する。APD101は、光電変換手段であり、光電変換により信号を生成し、その生成した信号を波形整形回路103に出力する。
波形整形回路103は、APD101とクエンチ抵抗102との相互接続点に接続される。APD101とクエンチ抵抗102との相互接続点は、APD101の光子の入射に応じた電荷の生成および排出により電位が変化する。波形整形回路103は、APD101とクエンチ抵抗102との相互接続点の電位の変化に対して、増幅およびエッジ検出を行うことにより、電圧パルスPLSを生成する。このようにAPD101とクエンチ抵抗102と波形整形回路103は、光子の入射の有無を電圧パルスに変換することにより、1ビット型アナログデジタル変換器(受光部)として機能する。
カウンタ104は、波形整形回路103が生成する電圧パルスPLSの数を計数するカウンタであり、計数結果を出力することにより、露光期間中の画素値を多ビットで出力する。カウンタ104は、画素100に入力される駆動信号INV_RST,ZERO_RSTによって、カウンタ104のリセット、計数期間、およびカウンタの符号反転リセット動作を行う。
図2は、カウンタ104の構成例を示す図である。カウンタ104は、データを保持するフリップフロップ200と、計数を行う加算部201と、リセット信号の種別に基づいて初期値の種別を決定する選択部202と、符号反転を行う符号反転部203とを有する。
符号反転部203は、フリップフロップ200の出力値CNTの論理反転値に「1」を加算することにより、フリップフロップ200の出力値CNTに対して正負符号が反転した値を出力する。すなわち、符号反転部203は、フリップフロップ200の出力値CNTに対する2の補数を出力する。
選択部202は、信号ZERO_RSTがハイレベルの場合には、「0」を加算部201に出力する。また、選択部202は、信号INV_RSTがハイレベルの場合には、符号反転部203の出力値を加算部201に出力する。また、選択部202は、信号ZERO_RSTおよびINV_RSTがローレベルの場合には、フリップフロップ200の出力値CNTを加算部201に出力する。
加算部201は、選択部202の出力値に電圧パルスPLSを加算し、加算結果をフリップフロップ200に出力する。フリップフロップ200は、加算部201の加算結果を保持し、保持している値を計数値CNTとして出力する。フリップフロップ200は、非同期リセット信号により、クロック信号に非同期で、初期値0に初期化される。
信号ZERO_RSTをハイレベルにすることにより、所定の計数期間の電圧パルスPLDを計数することができる。また、信号INV_RSTをハイレベルにすることにより、今回の計数期間の計数値と前回の計数期間の計数値との差分を出力することができる。
カウンタ104は、クロック信号に同期する同期カウンタである。クロック信号および非同期リセット信号は、固体撮像素子の全体で共通の信号である。カウンタ104は、フレームメモリを用いることなく、フレーム間の画素値の差分を算出することができる。なお、カウンタ104は、非同期カウンタでもよい。非同期カウンタは、半加算器や全加算器のような加算用演算器を用いることなく、計数を行うことが可能なため、さらなるコストの削減が可能となる。
図3は、非同期のカウンタ104の構成例を示す図である。カウンタ104は、データを保持するフリップフロップ300と、各ビットの符号反転用制御信号を出力する符号反転制御部301と、論理積(AND)素子302とを有する。なお、説明の簡単のため、4ビットの非同期カウンタ104の構成を説明する。
フリップフロップ300は、端子PRSTへの入力信号がローレベルの場合には、出力端子Qをハイレベルにし、出力端子/Qをローレベルにする。また、フリップフロップ300は、端子PRSTへの入力信号がハイベルの場合には、出力端子Qおよび/Qのレベルを変化させない。また、フリップフロップ300は、端子RSTへの入力信号がローレベルの場合には、出力端子Qをローレベルにし、出力端子/Qをハイレベルにする。また、フリップフロップ300は、端子RSTへの入力信号がハイレベルの場合には、出力端子Qおよび/Qのレベルを変化させない。また、フリップフロップ300は、クロック端子に入力される信号の立ち上がりエッジに同期して、入力端子Dに入力された信号の正論理値を出力端子Qから出力し、入力端子Dに入力された信号の負論理値を出力端子/Qから出力する。
符号反転制御部301は、信号INV_RSTがローレベルの場合には、フリップフロップ300の端子PRSTおよびRSTにハイレベルを出力する。また、符号反転制御部301は、信号INV_RSTがハイレベルの場合には、フリップフロップ300の出力端子Qの信号を端子PRSTに出力し、フリップフロップ300の出力端子Qの論理反転信号をAND素子302に出力する。
AND素子302は、信号ZERO_RSTがハイレベルの場合に、フリップフロップ300の端子RSTにローレベルを出力し、信号ZERO_RSTがローレベルの場合に、フリップフロップ300の端子RSTに符号反転制御部301の出力信号を出力する。
次に、非同期カウンタ104の動作について説明を行う。フリップフロップ300は、出力端子Qの初期値が0であり、出力端子/Qの初期値が1である。カウンタ104の0ビット目を構成するフリップフロップ300は、電圧パルスPLSの立ち上がりを検知すると、入力端子Dの値を出力端子Qから出力し、入力端子Dの値の論理反転値を出力端子/Qから出力する。カウンタ104の1ビット目以降を構成するフリップフロップは、それぞれ、前段のフリップフロップの出力端子/Qの信号の立ち上がりを検知し、自己の入力端子Dの値を出力端子Qから出力し、自己の入力端子Dの値の論理反転値を出力端子/Qから出力する。各フリップフロップ300の出力端子Qは、例えば4ビットの計数値CNTを出力する。
所定の期間が過ぎると、AND素子302は、制御部505の出力に基づいてリセット動作を行う。信号ZERO_RSTがハイレベルになると、各フリップフロップ300の出力端子Qの値が0にリセットされる。この時、単純な反転信号の場合は、1の補数表現となり、2の補数表現とならないため、信号処理に用いた際に加算器を単純な構成で表現できなくなる場合が存在する。そのため、2の補数表現にするため、信号INV_RSTが入力された後に、電圧パルスPLSに1回だけ立ち上がり信号が発生するように、制御部505から信号を入力する。このように制御することで、各ビットの反転信号に1を加算した値が初期値となるため、信号INV_RSTによって初期化した値を2の補数表現とすることが可能となる。
また、信号INV_RSTがハイレベルになると、符号反転制御部301は、各フリップフロップ300の出力端子Qの値の論理反転値をリセット値として各フリップフロップ300の端子PRSTおよびRSTに出力する。
図4は、1つの画素100の駆動方法を示すタイミングチャートである。複数の画素100を並列して駆動することにより、光学像をデジタル信号に変換する。APDは、APD101およびクエンチ抵抗102により生成される電位波形であり、波形整形回路103の入力電位波形を示す。電圧パルスPLSは、波形整形回路103の出力電圧である。信号CNT_RSTおよびINV_ENは、図5の制御部505により生成される。制御部505は、信号CNT_RSTおよびINV_ENを基に、信号ZERO_RSTおよびINV_RSTを生成する。
具体的には、信号INV_ENがローレベルの時に信号CNT_RSTがハイレベルの場合には、信号ZERO_RSTがハイレベルになる。また、信号INV_ENがハイレベルの時に信号CNT_RSTがハイレベルの場合には、信号INV_RSTがハイレベルになる。
計数値CNTは、カウンタ104の出力値を表す。カウンタ104は、信号CNT_RSTがローレベルである期間を撮像期間として前述の計数および初期化動作を行う。なお、カウンタ104は、信号CNT_RSTがローレベルである状態でカウントを行うが、別途イネーブル信号に応じてカウントを行ってもよい。
READ_ENは、カウンタ104の出力値を垂直伝送路508(図5)に出力するタイミングを表しており、信号CNT_RSTと同一のタイミングで発行される。なお、信号CNT_RSTと同一のタイミングで信号READ_ENは発行されるが、それに限定されない。具体的には、読み出し信号とリセット信号を個別に持ち、発行のタイミングをずらすことで垂直伝送路508への転送タイミングを任意に設定してもよい。
次に、画素100の駆動方法を説明する。タイミングt400では、信号INV_ENがローレベルの状態で、信号CNT_RSTがハイレベルになるため、信号ZERO_RSTがハイレベルになる。信号ZERO_RSTがハイレベルになると、カウンタ104は、クロック信号に同期して、計数値CNTを0にクリアする。なお、実際は、クロック信号に同期して計数値CNTに反映されるため、計数値CNTに遅延が発生するが、略同一のタイミングとして説明を行う。
タイミングt401では、信号ZERO_RSTがローレベルになり、露光が開始され、撮像期間が開始する。また、信号ZERO_RSTがローレベルになると、信号INV_ENがハイレベルになり、次に信号CNT_RSTがハイレベルになった際には、信号ZERO_RSTではなく、信号INV_RSTがハイレベルになる。
タイミングt402では、APD101に光子が入射したことにより、APD101には、アバランシェ増倍された電荷が発生し、APD101の電位が変化する。APD101は、クエンチ抵抗102を介して電荷を排出するので、APD101が再び一定の電位になるまで時間がかかる。波形整形回路103は、APD101の電位の立ち下がりエッジを検出し、短時間の電圧パルスPLSを生成する。この電圧パルスPLSは、カウンタ104に入力される。カウンタ104は、電圧パルスPLSを計数し、計数値CNTが1となる。
タイミングt401〜t403では、電圧パルスPLSが発生するたびに、カウンタ104は、計数値CNTをインクリメントし続ける。タイミングt401〜t403では、5回の電圧パルスPLSが発生し、計数値CNTは5となる。撮像期間は、タイミングt401〜t403である。
タイミングt403では、計数値CNTが5の状態で、信号CNT_RSTおよびREAD_ENがハイレベルになる。信号READ_ENがハイレベルになると、計数値CNTが垂直伝送路508に伝送され、撮像期間が完了する。計数値CNTの5は、タイミングt401〜t403の撮像期間のフレームの画素値に対応する。タイミングt401〜t403の撮像期間のフレームは、フレーム内圧縮のためのフレームである。
また、タイミングt403では、信号INV_ENがハイレベルのため、信号INV_RSTがハイレベルとなり、計数値CNTの値が5の正負符号反転値である−5となる。
タイミングt404では、信号INV_RSTとINV_ENとREAD_ENがローレベルとなり、露光が開始し、次のフレームの撮像期間が開始する。タイミングt404〜t405では、タイミングt401〜t403と同様に、電圧パルスPLSが発生するたびに、カウンタ104は、計数値CNTをインクリメントし続ける。タイミングt404〜t405では、4回の電圧パルスPLSが発生しているため、カウンタ104は、−5の計数値CNTに対して4回インクリメントし、−1の計数値CNTを出力する。
タイミングt405では、計数値CNTが−1の状態で、タイミングt403と同様に、信号CNT_RSTおよびREAD_ENがハイレベルになる。信号READ_ENがハイレベルになると、−1の計数値CNTが垂直伝送路508に伝送され、撮像期間が完了する。−1の計数値CNTは、今回の撮像期間のフレームの電圧パルスPLSの発生数から、前回の撮像期間のフレームの電圧パルスPLSの発生数を減算した値である。すなわち、−1の計数値CNTは、今回のフレームと前回のフレームの電圧パルスPLSの発生数の差分である。タイミングt404〜t405の撮像期間のフレームは、フレーム間圧縮のためのフレームである。
また、タイミングt405では、信号INV_ENがローレベルのため、信号ZERO_RSTがハイレベルとなり、計数値CNTが0となる。
タイミングt406では、信号CNT_RSTとZERO_RSTとREAD_ENがローレベルとなり、信号INV_ENがハイレベルとなる。タイミングt406〜t407では、タイミングt401〜t403と同様に、電圧パルスPLSが発生するたびに、カウンタ104は、計数値CNTをインクリメントし続ける。タイミングt406〜t407では、4回の電圧パルスPLSが発生しているため、カウンタ104は、0の計数値CNTに対して4回インクリメントし、4の計数値CNTを出力する。タイミングt406〜t407の撮像期間のフレームは、フレーム内圧縮のためのフレームである。
タイミングt407〜t408では、タイミングt403〜t404と同様に、信号CNT_RST、INV_EN、ZERO_RSTおよびREAD_ENが制御され、計数値CNTが垂直伝送路508に伝送される。
以降、画素100は、タイミングt404〜t406と同様の動作と、タイミングt406〜t408と同様の動作を交互に繰り返す。このように動作することで、カウンタ104は、電圧パルスPLSの発生数を計数し、計数値CNTを出力する。カウンタ104は、計数値CNTとして、現フレームの撮像期間の電圧パルスPLSの発生数と、現フレームと前フレームの電圧パルスPLSの発生数の差分とを交互に出力する。これは、フレームメモリを用いて、フレーム間の同一の画素100の差分値を出力することと等しい。
図5は、固体撮像素子500の構成例を示す図である。固体撮像素子500は、撮像装置であり、上記の複数の画素100と、垂直選択回路507と、出力スイッチ501と、水平選択回路502と、出力スイッチ503と、タイミングジェネレータ(TG)504と、制御部505と、圧縮部506とを有する。複数の画素100は、2次元行列状に配列される。
TG504は、内部のカウンタに基づいて、撮像期間や転送期間などのタイミング信号を生成し、垂直選択回路507と制御部505と水平選択回路502にタイミング信号を出力する。
制御部505は、撮像期間に基づいて、信号INV_RSTおよびZERO_RST等を画素100に出力する。なお、信号INV_RSTおよびZERO_RSTを読み出し制御信号READ_ENと同じタイミングにする場合には、制御部505は、各画素100に対する信号INV_RSTおよびZERO_RSTを順に出力するように制御する。
垂直選択回路507は、撮像期間の終了するタイミングになると、出力スイッチ501に対してハイレベルのREAD_ENを出力する。出力スイッチ501は、ハイレベルのREAD_ENが入力されると、画素100が出力する計数値CNTを垂直伝送路508に伝送する。複数の垂直伝送路508は、画素100の列毎に設けられる。各列の画素100は、順に、出力スイッチ501を介して、垂直伝送路508に計数値CNTを出力する。
なお、信号INV_RSTおよびZERO_RSTは、各々異なる信号として説明をしたが、それに限定されない。例えば、信号INV_ENおよびCNT_RSTを画素100の入力信号とし、画素100の中で信号INV_RSTおよびZERO_RSTを生成してもよい。また、画素100は、少なくとも信号INV_RSTおよびZERO_RSTをバイナリエンコードした状態で入力し、リセットの選択信号として用いてもよい。
水平選択回路502は、出力スイッチ503を制御する。複数の出力スイッチ503は、画素100の列毎に設けられる。各列の出力スイッチ503は、順に、各列の垂直伝送路508を水平伝送路509に接続する。
圧縮部506は、水平伝送路509の計数値CNTを順に圧縮し、固体撮像素子500の外部に圧縮データを出力する。固体撮像素子500は、図4の各撮像期間のフレーム毎に、すべての画素100の計数値CNTを圧縮し、圧縮データを出力する。
図6は、圧縮部506の構成例を示すブロック図である。圧縮部506は、量子化部600と、エントロピー符号化部601と、符号量制御部602と、符号量計測部603とを有する。
量子化部600は、符号化ブロック単位で画素100の計数値CNTを入力し、符号化ブロック内で水平方向に隣接する画素100の計数値CNTの差分値を算出し、その差分値を量子化し、量子化データを生成する。
エントロピー符号化部601は、入力される量子化データ(シンボル)の出現頻度に基づいて、それぞれの量子化データに符号を割り当て、符号化データ604を生成する。エントロピー符号化の方式は、例えば、ゴロム符号化またはハフマン符号化であるが、それらに限定されない。
符号量計測部603は、エントロピー符号化部601が生成する符号化ブロック単位の符号化データ量を計測する。符号量制御部602は、符号量計測部603により計測された符号化データ量に基づき、量子化部600の量子化ステップを制御する。
図7は、圧縮部506の処理を示すフローチャートである。圧縮処理が開始されると、量子化部600は、符号化ブロック単位の画素100の計数値CNTを入力する。
最初に、ステップS701では、量子化部600は、符号化ブロック内で水平方向に隣接する画素100の計数値CNTの差分値を算出する。
次に、ステップS702では、量子化部600は、ステップS701で算出された差分値を所定の値を用いて量子化する。所定の値は、量子化ステップを決定するパラメータであり、後述の符号量制御部602によって動的に決定される。以降、所定の値をQP(Quantization Parameter:量子化パラメータ)という。量子化部600は、差分値をQPで除算し、除算結果の小数部を四捨五入することによって、量子化を行う。
次に、ステップS703では、エントロピー符号化部601は、量子化された差分値に対して符号の割り当てを行い、符号化データ604を生成する。符号量計測部603は、エントロピー符号化部601が生成する符号化ブロック単位の符号化データ量を計測する。
次に、ステップS704では、符号量制御部602は、符号化ブロック単位の符号化データ量が目標符号化データ量に収まっているか否かを判定する。目標符号化データ量は、固体撮像素子500の出力帯域に収まる符号化データ量が設定される。符号量制御部602は、符号化ブロック単位の符号化データ量が目標符号化データ量に収まっていない場合には、ステップS705に進み、符号化ブロック単位の符号化データ量が目標符号化データ量に収まっている場合には、ステップS706に進む。
ステップS705では、符号量制御部602は、符号化ブロック単位の符号化データ量と、目標符号化データ量との差分に応じて、QPを増加または減少し、符号化ブロック単位の符号化データ量が目標符号化データ量に収まるように符号量制御を行う。その後、符号量制御部602は、ステップS702に戻り、上記の処理を繰り返す。
ステップS706では、符号量制御部602は、各符号化ブロックの量子化に用いたQPと、エントロピー符号化部601の符号割り当て情報(符号化パラメータ)と、圧縮フラグとを、符号化データ604に対応付けて出力する。圧縮フラグは、フレーム内圧縮またはフレーム間圧縮を示す情報である。図4のタイミングt401〜t403の撮像期間のフレームでは、圧縮フラグは、フレーム内圧縮を示す情報である。図4のタイミングt404〜t405の撮像期間のフレームでは、圧縮フラグは、フレーム間圧縮を示す情報である。図4のタイミングt406〜t407の撮像期間のフレームでは、圧縮フラグは、フレーム内圧縮を示す情報である。
以上のように、圧縮部506は、タイミングt401〜t403の撮像期間のフレームおよびタイミングt406〜t407の撮像期間のフレームでは、フレーム内圧縮を行うことができる。また、圧縮部506は、タイミングt404〜t405の撮像期間のフレームでは、フレームメモリとして用いられるDRAMやSRAMを用いることなく、フレーム間圧縮を行うことができる。
一般的に、フレーム間圧縮は、フレーム間の動きベクトルが存在しない場合に、高い圧縮率を実現することが可能となり、伝送路の帯域を逼迫しやすいフレームレートの高い読み出しに相性がよい。また、読み出される1フレーム内の画素数がかなり多く、フレームレートが低い読み出しの時には、フレーム内圧縮は相性が良い。そのため、固体撮像素子500は、読み出しのレートに基づいて、本実施形態の機能を用いるか否かを制御してもよい。
図8は、撮像システム800の構成例を示す図である。撮像システム800は、上記の固体撮像素子500の他に、光学系ユニット801と、伸張部802と、キャプチャー部803と、デジタル信号処理部804と、外部記録装置805とを有する。
光学系ユニット801は、フォーカスを調整するためのフォーカシングレンズを含む光学レンズ群、シャッター、絞り、レンズ制御部等を有し、固体撮像素子500上に光学像を結像する。
固体撮像素子500は、図5の固体撮像素子500であり、光学系ユニット801によって結像された像を光電変換し、画素100の計数値CNTの圧縮を行い、符号化データを伸張部802に出力する。符号化データには、QPと、符号化パラメータと、圧縮フラグとが対応付けられている。
伸張部802は、符号化データに対応付けられたDPと符号化パラメータと圧縮フラグに基づいて、符号化データに対して伸張処理を行い、伸張結果のデータをキャプチャー部803に出力する。伸張部802は、圧縮フラグがフレーム内圧縮を示す情報である場合には、内部のDRAM等の記憶装置に現フレームの伸張結果を出力する。また、伸張部802は、圧縮フラグがフレーム間圧縮を示す情報である場合には、内部の記憶装置に記憶されている前フレームの伸張結果を読み出し、フレーム間参照を行って現フレームの伸張を行う。
キャプチャー部803は、伸張部802が出力する各フレームの画素信号の有効期間および種別を判定し、デジタル信号処理部804に出力する。デジタル信号処理部804は、各フレームの画素信号に対して、ホワイトバランス補正、同時化処理、動画像の符号化処理等のデジタル信号処理を行って、画像を外部記録装置805に出力する。外部記録装置805は、デジタル信号処理部804から出力された画像をメモリカードに記録する。
以上のように、固体撮像素子500は、タイミングt401〜t403の撮像期間のフレームでは、各画素100の電圧パルスPLSの発生数を計数値CNTとして計数し、フレーム内圧縮により符号化データを生成する。また、固体撮像素子500は、タイミングt404〜t405の撮像期間のフレームでは、現フレームと前フレームの各画素100の電圧パルスPLSの発生数の差分値を計数値CNTとして計数し、フレーム間圧縮により符号化データを生成する。
固体撮像素子500は、フレーム内圧縮のフレームと、フレーム間圧縮のフレームとを交互に繰り返す。フレーム間圧縮は、フレームメモリを用いずに、実現できる。フレーム間圧縮を行うことにより、圧縮率が高くなり、符号データ量を削減することができる。また、被写体に依存する圧縮率の変動が少なくなる。また、フレーム間圧縮では、計数値CNTが0付近の値になるため、CMOSトランジスタのスイッチング電流が少なくなる。
固体撮像素子500は、1ビット型アナログデジタル変換器とカウンタ104を有する。1ビット型アナログデジタル変換器は、APD101と、クエンチ抵抗102と、波形整形回路103とを有する。固体撮像素子500は、フレームメモリを用いずに、小さな回路規模で、フレーム間圧縮が可能である。
図4のように、カウンタ104は、偶数フレームでは、APD101により生成された信号を基に計数された計数値CNTを生成する。また、カウンタ104は、奇数フレームでは、APD101により生成された信号を基に、前フレームの計数値CNTの正負符号が反転された計数値に対して計数された計数値CNTを生成する。偶数フレームと奇数フレームは、時系列的に異なるフレームである。
具体的には、カウンタ104は、偶数フレームでは、前フレームの計数値CNTを初期値にリセットし、APD101により生成された信号を基に、リセットされた計数値に対して計数する。また、カウンタ104は、奇数フレームでは、前フレームの計数値CNTの論理反転値に1を加算することにより、前フレームの計数値CNTの正負符号を反転させる符号反転部203を有する。なお、偶数フレームと奇数フレームを入れ替えてもよい。
(第2の実施形態)
第1の実施形態では、符号反転部203は、フリップフロップ200の出力値CNTに対して正負符号が反転した値を出力する。これにより、固体撮像素子500は、フレームメモリを用いずに、フレーム間の画素値の差分値を算出および圧縮し、コストを抑えて高い圧縮率を実現できる。また、符号反転部203は、フリップフロップ200の出力値CNTに対する2の補数を、フリップフロップ200の出力値CNTに対して正負符号が反転した値として出力する。これにより、伸張部802以降の処理を簡便にすることができる。しかし、符号反転部203は、フリップフロップ200の出力値CNTの論値反転だけではなく、1を加算する処理が必要となるため、カウンタ104の規模が大きくなり、カウンタ104の制御が複雑になるという課題がある。この課題は、画素100の数が多くなるほど、顕著になる。
本発明の第2の実施形態では、図9の符号反転部900は、フリップフロップ200の出力値CNTに対する1の補数を出力する。これにより、撮像システム800は、伸張部802以降の処理を簡便にしつつ、回路規模の削減を行うことができる。
図9は、第2の実施形態による同期カウンタ104の構成例を示す図である。以下、本実施形態が第1の実施形態と異なる点を説明する。図9のカウンタ104は、図2のカウンタ104に対して、符号反転部203の代わりに符号反転部900を設けたものである。符号反転部900は、フリップフロップ200の出力値CNTの論理反転値を、フリップフロップ200の出力値CNTに対する1の補数として、選択部202に出力する。符号反転部900は、符号反転部203と比べて、1を加算する加算部が存在しないため、同期カウンタ104の回路規模を削減することができる。選択部202と加算部201とフリップフロップ200の動作は、図2のものと同様である。選択部202は、信号INV_RSTがハイレベルの場合には、符号反転部900の出力値を加算部201に出力する。加算部201は、選択部202の出力値に電圧パルスPLSを加算し、加算結果をフリップフロップ200に出力する。フリップフロップ200は、加算部201の加算結果を保持し、保持している値を計数値CNTとして出力する。
また、図9の同期カウンタ104を図3と同様な非同期カウンタで構成する場合には、図3で説明したようにハイレベルの信号INV_RSTが発行された後に1を加算する目的で、電圧パルスPLSをハイレベルに制御する必要がなくなり、制御が簡便となる。また、電圧パルスPLSの線に対して制御部505の出力ノードを接続する必要がなくなるため、配線の混雑性やトランジスタの駆動能力を向上させるための追加の電力が緩和される。
図10は、本実施形態による圧縮部506の構成例を示す図である。図10の圧縮部506は、図6の圧縮部506に対して、2の補数化部1000を追加したものである。2の補数化部1000は、タイミングt401〜t403とt406〜t407のフレーム内圧縮のフレームでは、補数選択信号がローレベルであるため、カウンタ104の計数値CNTをそのまま量子化部600に出力する。また、2の補数化部1000は、タイミングt404〜t405のフレーム間圧縮のフレームでは、補数選択信号がハイレベルであるため、カウンタ104の計数値CNTに1を加算し、2の補数表現に変換し、加算結果を量子化部600に出力する。これにより、図10の量子化部600の入力値は、図6の量子化部600の入力値と同じになる。量子化部600とエントロピー符号化部601と符号量制御部602と符号量計測部603の動作は、図6のものと同じである。本実施形態によれば、信号INV_RSTが入力された際の正負符号反転のための回路規模削減および制御性向上を図ることができる。
なお、圧縮部506内の2の補数化部1000が1を加算する構成について説明したが、これに限定されない。例えば、固体撮像素子500は、図6の圧縮部506を有し、図8の伸張部802が1の補数の入力値に対して伸張処理を行った上で、現フレームと前フレームとの差分を1の補数として現フレームの画素データを復元してもよい。つまり、複数の画素100の構成を簡便化し、パス上で1カ所に束ねられる部分で補数表現処理を吸収すればよい。
以上のように、カウンタ104および2の補数化部1000は、偶数フレームでは、APD101により生成された信号を基に計数された計数値CNTを生成する。また、カウンタ104および2の補数化部1000は、奇数フレームでは、APD101により生成された信号を基に、前フレームの計数値CNTの正負符号が反転された計数値に対して計数された計数値CNTを生成する。
カウンタ104は、奇数フレームでは、前フレームの計数値CNTの論理反転値に対して計数する。2の補数化部1000は、奇数フレームでは、カウンタ104により計数された計数値CNTに1を加算する。
(第3の実施形態)
図11は、本発明の第3の実施形態による固体撮像素子500の構成例を示す図である。以下、本実施形態が第1の実施形態と異なる点を説明する。図11の固体撮像素子500は、図5の固体撮像素子500に対して、2本の制御線1101および1102を有する点が異なる。
制御部505は、制御線1101を介して、偶数行の画素100に対して、信号EVEN_INV_RSTおよびEVEN_ZERO_RSTを出力する。信号EVEN_INV_RSTおよびEVEN_ZERO_RSTは、それぞれ、図1の信号INV_RSTおよびZERO_RSTに対応する。
また、制御部505は、制御線1102を介して、奇数行の画素100に対して、信号ODD_INV_RSTおよびODD_ZERO_RSTを出力する。信号ODD_INV_RSTおよびODD_ZERO_RSTは、それぞれ、図1の信号INV_RSTおよびZERO_RSTに対応する。
図12は、本実施形態による固体撮像素子500の制御方法を示すタイミングチャートである。固体撮像素子500は、複数の画素100を並列に駆動することにより、光学像をデジタル信号に変換する。
EVEN_APDは、偶数行の画素100において、APD101およびクエンチ抵抗102により生成される電位波形であり、波形整形回路103の入力電位波形を示す。ODD_APDは、奇数行の画素100において、APD101およびクエンチ抵抗102により生成される電位波形であり、波形整形回路103の入力電位波形を示す。
電圧パルスEVEN_PLSは、偶数行の画素100内の波形整形回路103の出力電圧である。電圧パルスODD_PLSは、奇数行の画素100内の波形整形回路103の出力電圧である。
信号CNT_RST、EVEN_INV_ENおよびODD_INV_ENは、図11の制御部505により生成される。制御部505は、信号CNT_RST、EVEN_INV_ENおよびODD_INV_ENを基に、信号EVEN_ZERO_RST、EVEN_INV_RST、ODD_ZERO_RSTおよびODD_INV_RSTを生成する。
具体的には、信号EVEN_INV_ENがローレベルの時に信号CNT_RSTがハイレベルの場合には、信号EVEN_ZERO_RSTがハイレベルになる。また、信号EVEN_INV_ENがハイレベルの時に信号CNT_RSTがハイレベルの場合には、信号EVEN_INV_RSTがハイレベルになる。
また、信号ODD_INV_ENがローレベルの時に信号CNT_RSTがハイレベルの場合には、信号ODD_ZERO_RSTがハイレベルになる。また、信号ODD_INV_ENがハイレベルの時に信号CNT_RSTがハイレベルの場合には、信号ODD_INV_RSTがハイレベルになる。
信号EVEN_ZERO_RSTは、偶数行の画素100に入力される信号ZERO_RSTである。信号EVEN_INV_RSTは、偶数行の画素100に入力される信号INV_RSTである。
信号ODD_ZERO_RSTは、奇数行の画素100に入力される信号ZERO_RSTである。信号ODD_INV_RSTは、奇数行の画素100に入力される信号INV_RSTである。
計数値EVEN_CNTは、偶数行の画素100内のカウンタ104の出力値を表す。計数値ODD_CNTは、奇数行の画素100内のカウンタ104の出力値を表す。カウンタ104は、信号CNT_RSTがローレベルである期間を撮像期間として前述の計数および初期化動作を行う。なお、カウンタ104は、信号CNT_RSTがローレベルである状態でカウントを行うが、別途イネーブル信号に応じてカウントを行ってもよい。
READ_ENは、カウンタ104の出力値を垂直伝送路508(図11)に出力するタイミングを表しており、信号CNT_RSTと同一のタイミングで発行される。なお、信号CNT_RSTと同一のタイミングで信号READ_ENは発行されるが、それに限定されない。具体的には、読み出し信号とリセット信号を個別に持ち、発行のタイミングをずらすことで垂直伝送路508への転送タイミングを任意に設定してもよい。
次に、画素100の駆動方法を説明する。タイミングt400では、信号EVEN_INV_ENがローレベルであり、信号ODD_INV_ENがハイレベルである状態で、信号CNT_RSTがハイレベルになるため、信号EVEN_ZERO_RSTとODD_INV_RSTがハイレベルになる。信号EVEN_ZERO_RSTがハイレベルになると、偶数行のカウンタ104は、クロック信号に同期して、計数値EVEN_CNTを0にクリアする。また、信号ODD_INV_RSTがハイレベルになると、計数値ODD_CNTは、直前の計数値ODD_CNTに対して正負符号が反転した値になる。ここでは、撮像開始状態であり、カウンタ104のレジスタ値が不定値のため、計数値ODD_CNTは、不定値となる。なお、実際は、クロック信号に同期して計数値EVEN_CNTとODD_CNTに反映されるため、計数値EVEN_CNTとODD_CNTに遅延が発生するが、略同一のタイミングとして説明を行う。
タイミングt401では、信号EVEN_ZERO_RSTおよびODD_INV_RSTがローレベルになり、露光が開始され、撮像期間が開始する。また、信号EVEN_ZERO_RSTおよびODD_INV_RSTがローレベルになると、信号EVEN_INV_ENがハイレベルになり、信号ODD_INV_ENがローレベルになる。次に信号CNT_RSTがハイレベルになった際には、信号EVEN_ZERO_RSTではなく信号EVEN_INV_RSTがハイレベルになり、信号ODD_INV_RSTではなく信号ODD_ZERO_RSTがハイレベルになる。
タイミングt402では、APD101に光子が入射したことにより、APD101には、アバランシェ増倍された電荷が発生し、APD101の電位が変化する。APD101は、クエンチ抵抗102を介して電荷を排出するので、APD101が再び一定の電位になるまで時間がかかる。偶数行および奇数行の波形整形回路103は、それぞれ、APD101の電位の立ち下がりエッジを検出し、短時間の電圧パルスEVEN_PLSおよびODD_PLSを生成する。この電圧パルスEVEN_PLSおよびODD_PLSは、それぞれ、偶数行および奇数行のカウンタ104に入力される。偶数行のカウンタ104は、電圧パルスEVEN_PLSを計数し、計数値EVEN_CNTが1となる。奇数行のカウンタ104は、電圧パルスODD_PLSを計数し、計数値ODD_CNTが不定値となる。
タイミングt401〜t403では、電圧パルスEVEN_PLSおよびODD_PLSが発生するたびに、偶数行および奇数行のカウンタ104は、計数値EVEN_CNTおよびODD_CNTをインクリメントし続ける。タイミングt401〜t403では、5回の電圧パルスEVEN_PLSおよび5回の電圧パルスODD_PLSが発生し、計数値EVEN_CNTは5となり、計数値ODD_CNTは不定値となる。
タイミングt403では、計数値EVEN_CNTが5の状態で、信号CNT_RSTおよびREAD_ENがハイレベルになる。信号READ_ENがハイレベルになると、計数値EVEN_CNTおよびODD_CNTが垂直伝送路508に順に伝送され、撮像期間が完了する。計数値EVEN_CNTの5は、タイミングt401〜t403の撮像期間のフレームの画素値に対応する。偶数行の画素100にとって、タイミングt401〜t403の撮像期間のフレームは、フレーム内圧縮のためのフレームである。
また、タイミングt403では、信号EVEN_INV_ENがハイレベルのため、信号EVEN_INV_RSTがハイレベルとなり、計数値EVEN_CNTの値が5の正負符号反転値である−5となる。また、信号ODD_INV_ENがローレベルのため、信号ODD_ZERO_RSTがハイレベルとなり、計数値EVEN_CNTの値が0となる。
タイミングt404では、信号EVEN_INV_RST、ODD_ZERO_RST、EVEN_INV_ENおよびREAD_ENがローレベルになり、信号ODD_INV_ENがハイレベルになり、露光が開始し、次のフレームの撮像期間が開始する。タイミングt404〜t405では、タイミングt401〜t403と同様に、電圧パルスEVEN_PLSおよびODD_PLSが発生するたびに、偶数行および奇数行のカウンタ104は、計数値EVEN_CNTおよびODD_CNTをインクリメントし続ける。
タイミングt404〜t405では、4回の電圧パルスEVEN_PLSおよび4回の電圧パルスODD_PLSが発生している。偶数行のカウンタ104は、−5の計数値EVEN_CNTに対して4回インクリメントし、−1の計数値EVEN_CNTを出力する。奇数行のカウンタ104は、0の計数値ODD_CNTに対して4回インクリメントし、4の計数値ODD_CNTを出力する。
タイミングt405では、計数値EVEN_CNTが−1であり、計数値ODD_CNTが4の状態で、タイミングt403と同様に、信号CNT_RSTおよびREAD_ENがハイレベルになる。信号READ_ENがハイレベルになると、垂直伝送路508に計数値EVEN_CNTおよびODD_CNTが順に伝送され、撮像期間が完了する。
−1の計数値EVEN_CNTは、今回の撮像期間のフレームの電圧パルスEVEN_PLSの発生数から、前回の撮像期間のフレームの電圧パルスEVEN_PLSの発生数を減算した値である。すなわち、−1の計数値CNTは、今回のフレームと前回のフレームの電圧パルスEVEN_PLSの発生数の差分である。偶数行の画素100にとって、タイミングt404〜t405の撮像期間のフレームは、フレーム間圧縮のためのフレームである。
4の計数値ODD_CNTは、今回の撮像期間のフレームの電圧パルスODD_PLSの発生数であり、奇数行の画素100の画素値に対応する。奇数行の画素100にとって、タイミングt404〜t405の撮像期間のフレームは、フレーム内圧縮のためのフレームである。
また、タイミングt405では、信号EVEN_INV_ENがローレベルのため、信号EVEN_ZERO_RSTがハイレベルとなり、計数値EVEN_CNTが0となる。また、信号ODD_INV_ENがハイレベルのため、信号ODD_INV_RSTがハイレベルとなり、計数値ODD_CNTは、正負符号が反転し、4から−4になる。
タイミングt406では、信号CNT_RST、EVEN_ZERO_RST、ODD_INV_EN、ODD_INV_RSTおよびREAD_ENがローレベルとなり、信号EVEN_INV_ENがハイレベルとなる。
タイミングt406〜t407では、タイミングt401〜t403と同様に、電圧パルスEVEN_PLSおよびODD_PLSが発生する度に、偶数行および奇数行のカウンタ104は、計数値EVEN_CNTおよびODD_CNTをインクリメントし続ける。
タイミングt406〜t407では、4回の電圧パルスEVEN_PLSが発生しているため、偶数行のカウンタ104は、0の計数値EVEN_CNTに対して4回インクリメントし、4の計数値EVEN_CNTを出力する。偶数行の画素100にとって、タイミングt406〜t407の撮像期間のフレームは、フレーム内圧縮のためのフレームである。
タイミングt406〜t407では、4回の電圧パルスODD_PLSが発生しているため、奇数行のカウンタ104は、−4の計数値EVEN_CNTに対して4回インクリメントし、0の計数値EVEN_CNTを出力する。奇数行の画素100にとって、タイミングt406〜t407の撮像期間のフレームは、フレーム間圧縮のためのフレームである。
タイミングt407〜t408では、タイミングt403〜t404と同様に、信号CNT_RST、EVEN_INV_EN、ODD_INV_EN、EVEN_ZERO_RST、ODD_INV_RSTおよびREAD_ENが制御される。計数値EVEN_CNTおよびODD_CNTは、垂直伝送路508に伝送される。
以降、偶数行および奇数行の画素100は、タイミングt404〜t406と同様の動作と、タイミングt406〜t408と同様の動作を交互に繰り返す。偶数行のカウンタ104は、計数値EVEN_CNTとして、現フレームの撮像期間の電圧パルスEVEN_PLSの発生数と、現フレームと前フレームの電圧パルスEVEN_PLSの発生数の差分とを交互に出力する。奇数行のカウンタ104は、計数値ODD_CNTとして、現フレームの撮像期間の電圧パルスODD_PLSの発生数と、現フレームと前フレームの電圧パルスODD_PLSの発生数の差分とを交互に出力する。
なお、信号ODD_INV_RSTおよびODD_ZERO_RSTと信号EVEN_INV_RSTおよびEVEN_ZERO_RSTは、各々異なる信号として説明したが、これに限定されない。例えば、偶数行の画素100は、信号EVEN_INV_ENおよびCNT_RSTを入力し、内部で、信号EVEN_INV_RSTおよびEVEN_ZERO_RSTを生成してもよい。また、奇数行の画素100は、信号ODD_INV_ENおよびCNT_RSTを入力し、内部で、信号ODD_INV_RSTおよびODD_ZERO_RSTを生成してもよい。また、偶数行の画素100は、少なくとも信号EVEN_INV_RSTおよびEVEN_ZERO_RSTをバイナリエンコードした状態で入力し、リセットの選択信号として用いてもよい。また、奇数行の画素100は、少なくとも信号ODD_INV_RSTおよびODD_ZERO_RSTをバイナリエンコードした状態で入力し、リセットの選択信号として用いてもよい。
次に、図7を参照しながら、圧縮部506の処理を説明する。ステップS701〜S705の処理は、第1の実施形態と同じである。
ステップS706では、符号量制御部602は、各符号化ブロックの量子化に用いたQPと、エントロピー符号化部601の符号割り当て情報(符号化パラメータ)と、圧縮フラグとを、符号化データ604に対応付けて出力する。圧縮フラグは、フレーム内圧縮またはフレーム間圧縮を示す情報である。
図12のタイミングt401〜t403の撮像期間のフレームでは、偶数行の画素100の圧縮フラグは、フレーム内圧縮を示す情報であり、奇数行の画素100の圧縮フラグは、フレーム間圧縮を示す情報である。
図12のタイミングt404〜t405の撮像期間のフレームでは、偶数行の画素100の圧縮フラグは、フレーム間圧縮を示す情報であり、奇数行の画素100の圧縮フラグは、フレーム内圧縮を示す情報である。
図12のタイミングt406〜t407の撮像期間のフレームでは、偶数行の画素100の圧縮フラグは、フレーム内圧縮を示す情報であり、奇数行の画素100の圧縮フラグは、フレーム間圧縮を示す情報である。
以上のように、圧縮部506は、タイミングt401〜t403の撮像期間のフレームでは、偶数行の画素100に対してフレーム内圧縮を行い、奇数行の画素100に対してフレーム間圧縮を行う。また、圧縮部506は、タイミングt404〜t405の撮像期間のフレームでは、偶数行の画素100に対してフレーム間圧縮を行い、奇数行の画素100に対してフレーム内圧縮を行う。また、圧縮部506は、タイミングt406〜t407の撮像期間のフレームでは、偶数行の画素100に対してフレーム内圧縮を行い、奇数行の画素100に対してフレーム間圧縮を行う。フレーム間圧縮は、フレームメモリを用いることなく、圧縮処理を行うことができる。
固体撮像素子500は、偶数行の画素100に対して、フレーム単位で、フレーム内圧縮とフレーム間圧縮を交互に行い、奇数行の画素100に対して、フレーム単位で、フレーム間圧縮とフレーム内圧縮を交互に行う。これにより、圧縮後のデータ量を平滑化することができる。
次に、図8の撮像システム800が第1の実施形態と異なる点を説明する。伸張部802は、符号化データに対応付けられたDPと符号化パラメータと圧縮フラグに基づいて、符号化データに対して伸張処理を行い、伸張結果のデータをキャプチャー部803に出力する。伸張部802は、偶数行または偶数行の画素100の圧縮フラグがフレーム内圧縮を示す情報である場合には、内部のDRAM等の記憶装置に現フレームの伸張結果を出力する。また、伸張部802は、偶数行または奇数行の画素100の圧縮フラグがフレーム間圧縮を示す情報である場合には、内部の記憶装置に記憶されている前フレームの伸張結果を読み出し、フレーム間参照を行って現フレームの伸張を行う。伸張部802は、偶数行の伸張結果と奇数行の伸張結果を1枚の画像に合成し、合成した画像をキャプチャー部803に出力する。
以上のように、本実施形態によれば、偶数行および奇数行でフレーム内圧縮およびフレーム間圧縮を交互に行うことにより、伝送路の帯域をフレーム間で平均的な帯域に設定することができる。
図12のように、偶数行のカウンタ104は、偶数フレームでは偶数行のAPD101により生成された信号を基に計数された現フレームの計数値EVEN_CNTを生成する。偶数行のカウンタ104は、奇数フレームでは偶数行のAPD101により生成された信号を基に計数された前フレームの計数値と偶数行のAPD101により生成された信号を基に計数された現フレームの計数値の差分を示す計数値EVEN_CNTを生成する。
奇数行のカウンタ104は、偶数フレームでは奇数行のAPD101で生成された信号を基に計数された前フレームの計数値と奇数行のAPD101で生成された信号を基に計数された現フレームの計数値との差分を示す第2の計数値ODD_CNTを生成する。また、奇数行のカウンタ104は、奇数フレームでは奇数行のAPD101により生成された信号を基に計数された現フレームの計数値ODD_CNTを生成する。なお、奇数行と偶数行を入れ替えてもよい。ここで、すべての画素100は、偶数行の画素100および奇数行の画素100から成る空間的に異なる複数のフレームに分割される。その場合、偶数行の画素100は、第1のフレームに対応し、奇数行の画素100は、第2のフレームに対応する。
(第4の実施形態)
図13は、本発明の第4の実施形態による固体撮像素子500の構成例を示す図である。固体撮像素子500は、フレームメモリ1301を用いて、フレーム間の伝送帯域を平滑化する。以下、本実施形態が第3の実施形態と異なる点を説明する。図13の固体撮像素子500は、図11の固体撮像素子500に対して、圧縮部506の代わりに、フレームメモリ1301および圧縮部1302を設けたものである。フレームメモリ1301は、水平伝送路509の計数値CNTを格納し、その格納した計数値CNTを圧縮部1302に出力する。圧縮部1302は、フレームメモリ1301から前フレームの計数値CNTを入力し、水平伝送路509から現フレームの計数値CNTを入力し、圧縮する。
制御部505は、制御線1101を介して、偶数行の画素100に対して、信号EVEN_INV_RSTを出力せず、各フレーム間でハイレベルパルスの信号EVEN_ZERO_RSTを出力する。偶数行の画素100では、図2の選択部202は、信号EVEN_ZERO_RSTがハイレベルの場合に「0」を加算部201に出力し、信号EVEN_ZERO_RSTがローレベルの場合にフリップフロップ200の出力値CNTを加算部201に出力する。偶数行のカウンタ104は、全フレームにおいて、タイミングt401〜t403のように、電圧パルスEVEN_PLSの発生数を計数値EVEN_CNTとして出力する。
また、制御部505は、制御線1201を介して、奇数行の画素100に対して、信号ODD_INV_RSTを出力せず、各フレーム間でハイレベルパルスの信号ODD_ZERO_RSTを出力する。奇数行の画素100では、図2の選択部202は、信号ODD_ZERO_RSTがハイレベルの場合には「0」を加算部201に出力し、信号ODD_ZERO_RSTがローレベルの場合にはフリップフロップ200の出力値CNTを加算部201に出力する。奇数行のカウンタ104は、全フレームにおいて、タイミングt404〜t405のように、電圧パルスODD_PLSの発生数を計数値ODD_CNTとして出力する。
図14は、図13の圧縮部1302の構成例を示す図である。図14の圧縮部1302は、図6の圧縮部506に対して、減算器1400および選択部1401を追加したものである。減算器1400は、水平伝送路509から入力した現フレームの計数値EVEN_CNTまたはODD_CNTから、フレームメモリ1301から入力した前フレームの計数値EVEN_CNTまたはODD_CNTを減算し、減算結果を選択部1401に出力する。すなわち、減算器1400は、現フレームの計数値と前フレームの計数値との差分を、フレーム間差分信号として出力する。
減算器1400の出力値は、図12のタイミングt404〜t405のフレームの−1の計数値EVEN_CNTと、タイミングt406〜t407のフレームの0の計数値ODD_CNTに対応する。水平伝送路509の値は、タイミングt401〜t403のフレームの5の計数値EVEN_CNTと、タイミングt404〜t405のフレームの4の計数値ODD_CNTと、タイミングt406〜t407のフレームの4の計数値EVEN_CNTに対応する。
選択部1401は、制御部505の選択信号に応じて、減算器1400の出力値または水平伝送路509の出力値を、量子化部600に出力する。選択部1401は、図12に示すように、偶数フレームでは、奇数行の場合には、減算器1400の出力値を量子化部600に出力し、偶数行の場合には、水平伝送路509の出力値を量子化部600に出力する。また、選択部1401は、図12に示すように、奇数フレームでは、偶数行の場合には、減算器1400の出力値を量子化部600に出力し、奇数行の場合には、水平伝送路509の出力値を量子化部600に出力する。
図15は、固体撮像素子500の制御方法を示すタイミングチャートである。図15では、説明の簡便化のため、遅延時間を無視して表している。水平伝送路509は、水平伝送路509から伝送された計数値が偶数行の計数値または奇数行の計数値であるかの種別を示している。FrameCntは、現在の撮像期間のフレーム番号であり、撮像期間および読み出し期間が完了するとインクリメントされる。LineCntは、水平伝送路509から伝送された計数値の行番号である。RAM_AREAは、フレーム番号FrameCntおよび行番号LineCntに対応したフレームメモリ1301の格納領域を示している。
図16は、フレームメモリ1301の格納領域RAM_AREAを示す図である。格納領域RAM_AREAは、フレーム番号FrameCntおよび行番号LineCntに基づいてアクセスされるフレームメモリ1301の領域である。
フレーム番号FrameCntが0の場合、行番号LineCntが0および2の場合には、それぞれ、水平伝送路509の計数値は格納領域RAM_AREAの0および1に書き込まれる。また、フレーム番号FrameCntが0の場合、行番号LineCntが1および3の場合には、それぞれ、格納領域RAM_AREAの1および2から計数値を読み出す。
フレーム番号FrameCntが1〜5に関しても同様に、フレーム番号FrameCntおよび行番号LineCntに対応した格納領域RAM_AREAに水平伝送路509の計数値を書き込む、もしくは格納領域RAM_AREAから計数値を読み出す。
フレーム番号FrameCntの0〜5の格納領域RAM_AREAの制御が完了すると、次フレームでは、フレーム番号FrameCntの0に戻り、再度、フレーム番号FrameCntの0〜5の格納領域RAM_AREAの制御が行われる。
このように処理を行うことで、フレームメモリ1301の容量を固体撮像素子500の行数分だけ持たなくてもよいため、コスト削減が可能となる。なお、このフレームメモリ1301の制御による必要な容量は、水平画素数×(垂直行数÷2+2)となる。
図15において、RAM_CZは、フレームメモリ1301に対する制御信号であって、ローレベルの時に後述のRAM_WZに基づいた命令を有効にする。RAM_WZは、フレームメモリ1301に対する書き込み制御信号であって、ローレベルの時にRAM_Dの計数値を格納領域RAM_AREAに書き込み、ハイレベルの時に格納領域RAM_AREAからRAM_Qに計数値を読み出す。このタイミングチャート中のXは、Don‘tCareを示し、どのような入力であってもよいことを示す。
タイミングt1500では、0フレーム目の撮像期間が完了し、垂直伝送路508および水平伝送路509を介して0行目の計数値が順次転送開始される。この時、フレーム番号FrameCntは0フレーム目であり、行番号LineCntは0行目である。現フレームの0行目の水平伝送路509の計数値は、所定の格納領域RAM_AREAの0に書き込みされると同時に、圧縮部1302に出力される。
タイミングt1501では、0行目の水平伝送路509からの転送が完了し、1行目の水平伝送路509からの転送が開始される。行番号LineCntは+1加算され、所定の格納領域RAM_AREAの1に格納されている前フレームの1行目の計数値の読み出し処理を行う。読み出された前フレームの1行目の計数値は、現フレームの1行目の計数値とともに圧縮部1302に出力される。圧縮部1302では、減算器1400は、現フレームの1行目の計数値から前フレームの1行目の計数値を減算し、減算結果を選択部1401を介して量子化部600に出力する。
タイミングt1502では、タイミングt1500と同様に、水平伝送路509を介して偶数行である2行目の計数値が転送される。現フレームの2行目の計数値は、格納領域RAM_AREAの1に書き込みされると同時に、圧縮部1302に出力される。圧縮部1302では、選択部1401は、現フレームの2行目の計数値を量子化部600に出力する。
タイミングt1503では、タイミングt1501と同様に、水平伝送路509を介して奇数である3行目の計数値が転送される。所定の格納領域RAM_AREAの2に格納されている前フレームの3行目の計数値の読み出し処理を行う。読み出された前フレームの3行目の計数値は、現フレームの3行目の計数値とともに圧縮部1302に出力される。圧縮部1302では、減算器1400は、現フレームの3行目の計数値から前フレームの3行目の計数値を減算し、減算結果を選択部1401を介して量子化部600に出力する。
タイミングt1504では、3行目の計数値の出力が完了し、1フレーム目の撮像期間が開始する。
タイミングt1505では、1フレーム目の撮像期間が終了し、垂直伝送路508および水平伝送路509を介して1フレーム目の0行目の計数値が順次転送開始される。この時、フレーム番号FrameCntは1であり、行番号LineCntは0である。所定の格納領域RAM_AREAの0から前フレームの0行目の計数値が読み出される。読み出された前フレームの0行目の計数値と、現フレームの0行目の計数値は、圧縮部1302に出力される。圧縮部1302では、減算器1400は、現フレームの0行目の計数値から前フレームの0行目の計数値を減算し、減算結果を選択部1401を介して量子化部600に出力する。
タイミングt1506では、0行目の水平伝送路509からの転送が完了し、水平伝送路509から1行目の計数値の転送が開始される。行番号LineCntは+1加算される。水平伝送路509の現フレームの1行目の計数値は、所定の格納領域RAM_AREAの1に書き込まれると同時に、圧縮部1302に出力される。圧縮部1302では、選択部1401は、現フレームの1行目の計数値を量子化部600に出力する。
タイミングt1507では、タイミングt1505と同様に、水平伝送路509を介して1フレーム目の2行目の計数値が転送される。所定の格納領域RAM_AREAの1から前フレームの2行目の計数値が読み出される。読み出された前フレームの2行目の計数値と、現フレームの2行目の計数値は、圧縮部1302に出力される。圧縮部1302では、減算器1400は、現フレームの2行目の計数値から前フレームの2行目の計数値を減算し、減算結果を選択部1401を介して量子化部600に出力する。
タイミングt1508では、タイミングt1506と同様に、水平伝送路509から3行目の計数値が転送される。水平伝送路509の現フレームの3行目の計数値は、所定の格納領域RAM_AREAの1に書き込まれると同時に、圧縮部1302に出力される。圧縮部1302では、選択部1401は、現フレームの3行目の計数値を量子化部600に出力する。タイミングt1509では、1フレーム目の処理が終了する。
以上のように、固体撮像素子500は、偶数フレームおよび奇数フレームに応じた偶数行および奇数行のフレームメモリ1301に対する書き込みおよび読み出し動作を繰り返し制御する。これにより、偶数フレームでは、奇数行のみ前フレームの奇数行を参照し、現フレームと前フレームの計数値の差分を得ることができる。奇数フレームでは、偶数行のみ前フレームの偶数行を参照し、現フレームと前フレームの計数値の差分を得ることができる。圧縮部1302は、圧縮処理により、フレーム間の伝送路帯域の平滑化が可能となる。
フレームメモリ1301は、APD101により生成された信号を基に計数された前フレームの計数値を記憶する。減算器1400は、偶数フレームの奇数行と奇数フレームの偶数行では、APD101により生成された信号を基に計数された前フレームの計数値と、APD101により生成された信号を基に計数された現フレームの計数値との差分を示す計数値を生成する。
なお、本実施形態では、偶数フレームおよび奇数フレームに基づいた偶数行の画素および奇数行の画素のフレーム間参照動作について説明を行ったが、この制御に限定されるものではない。例えば、偶数フレームおよび奇数フレームに基づいて水平方向の偶数列の画素および奇数列の画素のフレーム間参照動作に使用することも可能である。
また、1つのマイクロレンズの下に射出瞳を2分割して配置された2つの画素を配置するような技術においても、分割された左側の画素および右側の画素を上記の偶数列の画素および奇数列の画素として制御したとしても同様の効果を得ることが可能となる。
つまり、画素の種別を2種類に分類し、偶数フレームおよび奇数フレームに基づいて各種類の画素をそれぞれフレームメモリ1301に対して書き込みおよび読み出すように制御し、圧縮処理を行うことで、フレーム間の伝送路帯域の平滑化が可能となる。
第1〜第4の実施形態の固体撮像素子500は、デジタルカメラ、ビデオカメラの他、スマートフォン、タブレット、工業用カメラ、医療用カメラ、車載カメラ等に適用可能である。また、カウンタ104は、APD101に入射する光子の数をカウントする例を説明したが、これに限定されない。カウンタ104は、フォトダイオードが生成する光電変換信号と、時間と共に変化するランプ信号との大小関係が逆転するまでの時間をカウントすることにより、アナログデジタル変換を行うものでもよい。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。