以下、本発明の好適な実施の形態について詳細に説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
1.イメージセンサ
図1(A)にイメージセンサ10の構成例を示す。このイメージセンサ10(例えばCCDラインセンサ)は、受光部202、転送ゲート204、転送部206(シフトレジスタ)を含む。また、受光部202は、光電変換を行う複数の受光素子(フォトダイオード、画素)を含む。
受光部202の各受光素子(画素)は受光量に応じた電荷を生成して蓄積する。そして電荷蓄積に必要な所定の時間が経過した後にシフト信号SHがアクティブになり、転送ゲート204がオンになる。これにより、蓄積電荷が、転送ゲート204を介して転送部206のシフトレジスタ(各受光素子に対応して設けられたシフトレジスタ)に転送される。そして、各シフトレジスタに転送された蓄積電荷(画像信号)は2相の駆動クロックであるφ1、φ2に基づいて、隣接するシフトレジスタ間を転送されて行く。これによりイメージセンサ10のCCQ端子から、各受光素子の蓄積電荷に対応する画像信号がシリアルに出力される。
なお、イメージセンサ10の構成は図1(A)に限定されず、種々の変形実施が可能である。例えば図1(B)のように、奇数番目の画素用の転送ゲート204−1、転送部206−1と偶数番目の画素用の転送ゲート204−2、転送部206−2を設けることが望ましい。また、図1(A)、図1(B)の構成において、R(赤)、G(緑)、B(青)画像の読み取り用の受光部、転送ゲート、転送部を設けることが望ましい。なお図1(C)には転送部206のシフトレジスタの構成例を示す。
2.アナログフロントエンド回路の構成
図2に本実施形態のアナログフロントエンド回路(画像処理プロセッサ、画像処理コントローラ)の構成例を示す。このアナログフロントエンド回路(AFE)は、アナログ処理回路20、A/D変換器40を含む。なお本実施形態のアナログフロントエンド回路は図2の構成に限定されず、その構成要素の一部(例えばオフセット調整回路、ゲイン調整回路の一方)を省略したり、他の構成要素(例えばタイミングジェネレータ、外部インターフェース、画像データの送信回路、PLL回路等)を追加するなどの種々の変形実施が可能である。
アナログ処理回路20(アナログ信号処理回路)は、CCD等のイメージセンサ10(ラインセンサ)からアナログの入力画像信号IM1を受ける。そして入力画像信号IM1に対して所与の処理(A/D変換前の前処理)を行ってアナログの画像信号IM2を出力する。具体的にはアナログ処理回路20は、所与の処理として、例えば画像信号IM1のオフセット調整やゲイン調整を行う。或いは、画像信号IM1を所与のクランプレベルに設定するクランプ処理や、相関二重サンプリング(CDS)や、画像信号のサンプリング処理などを行う。
アナログ処理回路20はオフセット調整回路23、ゲイン調整回路25を含む。なおこれらの一方を省略する構成としてもよい。
オフセット調整回路23は、オフセット調整レジスタ24を有し、オフセット調整レジスタ24に設定されたオフセット調整値に基づいて画像信号のオフセット調整を行う。ゲイン調整回路25は、ゲイン調整レジスタ26を有し、ゲイン調整レジスタ26に設定されたゲイン調整値に基づいて画像信号のゲイン調整を行う。具体的には例えばオフセット調整後の画像信号に対してゲイン調整を行う。なお、イメージセンサ10がカラーの画像信号を出力する場合には、オフセット調整回路23に例えばR用、G用、B用のオフセット調整値を設定し、ゲイン調整回路25に例えばR用、G用、B用のゲイン調整値を設定すればよい。
A/D変換器40は、アナログ処理回路20からの画像信号IM2のA/D変換を行う。そしてデジタルの画像データであるA/D変換値ADVを出力する。このA/D変換器40としては、例えば縦続接続された複数のパイプラインステージを有するパイプライン型A/D変換器を用いることができる。このパイプライン型A/D変換器では、その各パイプラインステージは、入力画像信号をサブA/D変換器で量子化してデジタルデータに変換し、このデジタルデータをサブD/A変換器によりD/A変換する。そして入力画像信号とサブD/A変換器で得られたアナログ信号の減算処理を行い、得られた信号を増幅して、次のパイプラインステージに出力する。なおA/D変換器40はパイプライン型に限定されず、公知の他の方式のA/D変換器であってもよい。
ターゲットレジスタ100には、アナログ処理回路20からA/D変換器40に入力される画像信号IM2の入力範囲(ダイナミックレンジ)の下限ターゲット値(最小値)や上限ターゲット値(最大値)が設定される。これらの下限ターゲット値や上限ターゲット値の設定は、例えば外部のCPU(CPU上で動作するファームウェア)等により行うことができる。なお、下限ターゲット値及び上限ターゲット値のいずれか一方のみを設定するようにしてもよい。
演算回路50(補正処理回路)は、A/D変換器40から出力されるA/D変換値ADVをモニタして、演算処理(補正処理)を行う。具体的にはA/D変換器40から入力範囲の下限値(最小値)に対応するA/D変換値が出力される下限値出力期間(狭義には黒基準画素出力期間)において、A/D変換値ADVをモニタ(監視)して取り出す。そしてA/D変換値ADV(ADVの平均値)をターゲットレジスタ100の下限ターゲット値に近づけるオフセット調整値(下限ターゲット値に一致させるオフセット調整値)を、オフセット調整レジスタ24に設定するオフセット設定処理(下限値設定処理)を行う。或いはA/D変換器40から入力範囲の上限値(最大値)に対応するA/D変換値が出力される上限値出力期間(狭義には白画素出力期間)において、A/D変換値ADVをモニタ(監視)して取り出す。そしてA/D変換値ADV(ADVの平均値)をターゲットレジスタ100の上限ターゲット値に近づけるゲイン調整値(上限ターゲット値に一致させるゲイン調整値)を、ゲイン調整レジスタ26に設定するゲイン設定処理(上限値設定処理)を行う。
図3(A)にオフセット調整回路23におけるオフセット調整値とオフセット電圧の関係の一例を示す。例えば10ビット幅(広義にはnビット幅)のオフセット調整レジスタ24に0x200のオフセット調整値を設定すると、オフセット調整回路23において画像信号に対して加算されるオフセット電圧は0Vになる。一方、0x000、0x3FFのオフセット調整値を設定すると、画像信号に加算されるオフセット電圧は、各々、−300mV、+300mvになる。このように図3(A)では、オフセット調整値に対してオフセット電圧は単調増加の関数になっている。
また図3(B)にゲイン調整回路25におけるゲイン調整値とゲインの関係の一例を示す。例えば8ビット幅のゲイン調整レジスタ26に0x080のゲイン調整値を設定すると、ゲイン調整回路25(プログラマブルゲインアンプPGA)でのゲインは4程度になり、0x0FFのゲイン調整値を設定するとゲインは16程度になる。このように図3(B)では、ゲイン調整値に対してゲインは単調増加の関数になっている。
本実施形態では図3(A)、図3(B)のようなオフセット調整、ゲイン調整を行うことで、A/D変換器40の変換範囲をフルに発揮するための調整を実現している。
例えば図4において10ビットのA/D変換器40のA/D変換範囲は、0〜1023(0〜1023LSB)になっており、アナログの電圧範囲としては例えば0〜2Vになっている。なおA/D変換器40のLSBを1と表している。一方、イメージセンサ10からの入力画像信号IM1の入力範囲は、100〜512(100〜512LSB)になっており、A/D変換範囲0〜1023に比べて狭く、A/D変換器40の変換特性をフルに発揮していない。
そこで図4では、A/D変換器40に入力される画像信号IM2の入力範囲の下限ターゲット値を例えば0に設定して、−100(−100LSB)のオフセット調整を行っている。これにより画像信号IM2の入力範囲の最小値(下限値)はオフセット調整により100から0にシフトする。この時、入力範囲の最大値(上限値)も512から412にシフトする。
次に図4では、A/D変換器40に入力される画像信号IM2の入力範囲の上限ターゲット値を例えば824に設定して、2倍のゲイン調整を行っている。これにより画像信号IM2の入力範囲の最大値(上限値)はゲイン調整により412から824にシフトする。
このようにすれば、画像信号IM2の入力範囲が100〜512から0〜824に拡大し、A/D変換範囲0〜1024とほぼ同程度になるため、A/D変換器40の変換特性をフルに発揮できるようになる。
即ち本実施形態では、図2のターゲットレジスタ100の下限ターゲット値を例えば0に設定する。すると演算回路50は、A/D変換値ADVを下限ターゲット値=0に近づけるためのオフセット調整値を、オフセット調整レジスタ24に設定する演算処理を行う。これにより、オフセット調整回路23により−100のオフセット調整が行われ、画像信号IM2の入力範囲の最小値が100から0にシフトする。なお入力範囲が0以下に潜り込まないように、下限ターゲット値は0より大きくすること(例えば10以上)が望ましい。
また本実施形態では、図2のターゲットレジスタ100の上限ターゲット値を例えば824に設定する。すると演算回路50は、A/D変換値ADVを上限ターゲット値=824に近づけるためのゲイン調整値を、ゲイン調整レジスタ26に設定する演算処理を行う。これにより、ゲイン調整回路25により2倍のゲイン調整が行われ、画像信号IM2の入力範囲の最小値が412から824にシフトする。従って、画像信号IM2の入力範囲を0〜824に設定でき、A/D変換器40のダイナミックレンジを向上できる。
3.詳細な構成
図5にアナログフロントエンド回路の詳細な構成例を示す。なおアナログフロントエンド回路は図5の構成に限定されず、その構成要素の一部(例えば平均化回路、モニタ回路、外部インターフェース等)を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
図5では演算回路50は、平均化回路51、モニタレジスタ52、オフセット設定回路53、ゲイン設定回路54、制御回路55を含む。
平均化回路51は、A/D変換器40のA/D変換値ADVの平均化処理を行う。具体的には平均化回路51は、黒基準画素出力期間(下限値出力期間)や白画素出力期間(上限値出力期間)においてA/D変換値をモニタする。そして例えばイメージセンサ10の各処理ラインにおける複数の画素の画像信号のA/D変換値を取り出して平均化する。そして演算回路50は、複数の画素についての平均化されたA/D変換値と、ターゲットレジスタ100に設定された下限ターゲット値や上限ターゲット値との比較処理を行う。
モニタレジスタ52は、A/D変換器40のA/D変換値ADVのモニタ値が設定されるレジスタである。具体的には例えば平均化回路51により平均化されたA/D変換値がモニタ値としてモニタレジスタ52に設定される。
即ち図5のアナログフロントエンド回路には、ターゲットレジスタ100やモニタレジスタ52に対して外部からアクセスするための外部インターフェース110(CPUインターフェース、ホストインターフェース)が設けられている。CPU(ホストプロセッサ、ファームウェア)は、この外部インターフェース110を介してターゲットレジスタ100やモニタレジスタ52にアクセスする。そしてCPUは、ターゲットレジスタ100に対して下限ターゲット値や上限ターゲット値を設定したり、モニタレジスタ52に設定されたA/D変換値のモニタ値を監視する。
このように外部インターフェース110を設ければ、CPUは所望の任意の下限ターゲット値や上限ターゲット値を、ターゲットレジスタ100に設定できるようになる。従って、図4で説明したA/D変換器40への画像信号の入力範囲を、ユーザが任意に設定できるようになる。またゲイン調整やオフセット調整が完了した後の最終的なA/D変換値を、モニタレジスタ52を用いてモニタできるようになる。従って、適正な下限値や上限値の設定が行われたかを、ユーザは随時確認することが可能になり、利便性を向上できる。
オフセット設定回路53は、A/D変換値(平均値)とターゲットレジスタ100の下限ターゲット値との比較処理を行う。そして図4で説明したように、A/D変換値を下限ターゲット値に近づけるオフセット調整値をオフセット調整レジスタ24に設定するための処理を行う。具体的にはA/D変換値を下限ターゲット値に一致させる(ほぼ一致させる)オフセット調整値を例えば2分岐探索により求めて、オフセット調整レジスタ24に書き込む。
ゲイン設定回路54は、A/D変換値(平均値)とターゲットレジスタ100の上限ターゲット値との比較処理を行う。そして図4で説明したように、A/D変換値を上限ターゲット値に近づけるゲイン調整値をゲイン調整レジスタ26に設定するための処理を行う。具体的にはA/D変換値を上限ターゲット値に一致させる(ほぼ一致させる)ゲイン調整値を例えば2分岐探索により求めて、ゲイン調整レジスタ26に書き込む。
制御回路55は演算回路50の全体的な制御を行う。即ち演算回路50が含む各回路のシーケンスを制御したり、各種の判断処理を行う。
4.動作
次に図6、図7のフローチャートを用いて本実施形態の詳細な動作例について説明する。図6はオフセット設定処理に関するフローチャートである。
まず演算回路50は、カウンタのカウント値をm=n(n≧m≧0)に設定する(ステップS1)。そしてnビット幅のオフセット調整レジスタ24のオフセット調整値のビットm−1に1を設定する(ステップS2)。例えばm=n=10である場合には、10ビット幅のオフセット調整レジスタ24のオフセット調整値の最上位のビット9(=m−1)に1を設定する。
次に演算回路50は、処理対象ラインの画素のうち、後述する黒基準画素指定信号で指定される画素のA/D変換値をモニタして取り出す(ステップS3)。そして取り出された複数の画素についてのA/D変換値の平均化処理を行う(ステップS4)。
次に平均化されたA/D変換値と、ターゲットレジスタ100に設定された下限ターゲット値を比較する(ステップS5)。そしてA/D変換値の方が下限ターゲット値よりも小さい場合には、オフセット調整値のビットm−1の論理レベルを1に決定し、大きければビットm−1の論理レベルを0に決定する(ステップS6、S7、S8)。なおA/D変換値と下限ターゲット値が等しい場合に1に決定するようにしてもよいし、0に決定するようにしてもよい。
次にカウンタのカウント値mを1だけデクリメントする(ステップS9)。例えばm=10である場合にはm=9にデクリメントする。そしてm=0か否かを判断し(ステップS10)、m=0でない場合にはステップS2に戻り、次の処理ラインの画素に対してステップS2〜S9のオフセット設定処理を行う。
一方、m=0になり、オフセット調整値の例えば全てのビットの論理レベルが決定すると、例えば次の処理ラインの黒基準画素のA/D変換値を再度モニタする(ステップS11)。そして取り出したA/D変換値の平均化処理を行い(ステップS12)、平均化されたA/D変換値が下限ターゲット値未満である場合には、オフセット調整レジスタ24のオフセット調整値に1を加算する(ステップS13、S14)。
以上のように本実施形態では、nビット幅のオフセット調整レジスタ24のオフセット調整値のビットm−1に1を設定してA/D変換値と下限ターゲット値とを比較する比較処理(ステップS2〜S5)と、A/D変換値が下限ターゲット値よりも小さい場合にはオフセット調整値のビットm−1の論理レベルを1に決定し、A/D変換値が下限ターゲット値よりも大きい場合にはオフセット調整値のビットm−1の論理レベルを0に決定するビット決定処理(ステップS6〜S8)と、mを1ずつデクリメントするデクリメント処理(ステップS1、S9)とを、mがnから0になるまで繰り返している(ステップS10)。
このようにすれば、A/D変換値を2分岐探索により下限ターゲット値に少しずつ近づけながら、最終的に両者を一致させる(ほぼ一致させる)ことができる。従ってA/D変換器40のA/D変換範囲をフルに活用するためのオフセット調整を、短時間で自動的に終了させることができる。従って、イメージセンサ、アナログフロントエンド回路、CPUをループとした閉ループフィードバックによりオフセット調整を行う場合に比べて、原稿を読み取る前の準備時間の長さ短縮化できる。またCPUによるオフセット調整処理が不要になるため、ファームウェアのオフセット調整プログラムの開発も不要になり、ユーザの開発工数を削減できる。
また本実施形態では、mが0になりオフセット調整値の全てのビットの論理レベルが決定した後に、A/D変換器のA/D変換値を再度モニタする(ステップS10、S11)。そしてA/D変換値が下限ターゲット値未満である場合にはオフセット調整値に1を加算する処理を行う(ステップS13、S14)。
このような加算処理を行えば、A/D変換器40への入力画像信号の下限値が図4で説明した下限ターゲット値を下回ってA/D変換範囲の下限値側に潜り込んでしまい、A/D変換範囲外になってしまう事態を防止できる。
なお本実施形態では、このようにして最終的に決定されたオフセット調整値での最終的なA/D変換値が、モニタレジスタ52に設定される。そしてCPU等の外部デバイスは、外部インターフェース110を介してモニタレジスタ52にアクセスし、この最終的なA/D変換値をモニタできる。従ってユーザは、最終的に決定されたオフセット調整値でのA/D変換値(A/D変換範囲の下限値)が、ターゲットレジスタ100に設定された下限ターゲット値に確かに一致しているか否かを、外部から確認できる。これによりユーザの利便性を向上できる。
図7はゲイン設定処理に関するフローチャートである。まず演算回路50は、カウンタのカウント値をi=j(j≧i≧0)に設定する(ステップS21)。そしてjビット幅のゲイン調整レジスタ26のゲイン調整値のビットi−1に1を設定する(ステップS22)。例えばi=j=8である場合には、8ビット幅のゲイン調整レジスタ26のゲイン調整値の最上位のビット7(=i−1)に1を設定する。
次に演算回路50は、処理対象ラインの画素のうち、後述する白画素指定信号で指定される画素のA/D変換値をモニタして取り出す(ステップS23)。そして取り出された複数の画素についてのA/D変換値の平均化処理を行う(ステップS24)。
次に平均化されたA/D変換値と、ターゲットレジスタ100に設定された上限ターゲット値を比較する(ステップS25)。そしてA/D変換値の方が上限ターゲット値よりも小さい場合には、ゲイン調整値のビットi−1の論理レベルを1に決定し、大きければビットi−1の論理レベルを0に決定する(ステップS26、S27、S28)。なおA/D変換値と上限ターゲット値が等しい場合に1に決定するようにしてもよいし、0に決定するようにしてもよい。
次にカウンタのカウント値iを1だけデクリメントする(ステップS29)。例えばi=8である場合にはi=7にデクリメントする。そしてi=0か否かを判断し(ステップS30)、i=0でない場合にはステップS22に戻り、次の処理ラインの画素に対してステップS22〜S29のゲイン設定処理を行う。
一方、i=0になり、ゲイン調整値の例えば全てのビットの論理レベルが決定すると、例えば次の処理ラインの白画素のA/D変換値を再度モニタする(ステップS31)。そして取り出したA/D変換値の平均化処理を行い(ステップS32)、平均化されたA/D変換値が上限ターゲット値を上回る場合には、ゲイン調整レジスタ26のゲイン調整値から1を減算する(ステップS33、S34)。
以上のように本実施形態では、jビット幅のゲイン調整レジスタ26のゲイン調整値のビットi−1に1を設定してA/D変換値と上限ターゲット値とを比較する比較処理(ステップS22〜S25)と、A/D変換値が上限ターゲット値よりも小さい場合にはゲイン調整値のビットi−1の論理レベルを1に決定し、A/D変換値が上限ターゲット値よりも大きい場合にはゲイン調整値のビットi−1の論理レベルを0に決定するビット決定処理(ステップS26〜S28)と、iを1ずつデクリメントするデクリメント処理(ステップS21、S29)とを、iがjから0になるまで繰り返している(ステップS30)。
このようにすれば、A/D変換値を2分岐探索により上限ターゲット値に少しずつ近づけながら、最終的に両者を一致させる(ほぼ一致させる)ことができる。従ってA/D変換器40のA/D変換範囲をフルに活用するためのゲイン調整を、短時間で自動的に終了させることができる。従って、イメージセンサ、アナログフロントエンド回路、CPUをループとした閉ループフィードバックによりゲイン調整を行う場合に比べて、原稿を読み取る前の準備時間の長さ短縮化できる。またCPUによるゲイン調整処理が不要になるため、ファームウェアのゲイン調整プログラムの開発も不要になり、ユーザの開発工数を削減できる。
また本実施形態では、iが0になりゲイン調整値の全てのビットの論理レベルが決定した後に、A/D変換器のA/D変換値を再度モニタする(ステップS30、S31)。そしてA/D変換値が上限ターゲット値を上回る場合には、ゲイン調整値から1を減算する処理を行う(ステップS33、S34)。
このような減算処理を行えば、A/D変換器40の入力画像信号の上限値が図4で説明した上限ターゲット値を上回ってA/D変換範囲の上限値側を超えてしまい、入力画像信号がA/D変換範囲外になってしまう事態を防止できる。
なお本実施形態では、このようにして最終的に決定されたゲイン調整値での最終的なA/D変換値が、モニタレジスタ52に設定される。そしてCPU等の外部デバイスは、外部インターフェース110を介してモニタレジスタ52にアクセスし、この最終的なA/D変換値をモニタできる。従ってユーザは、最終的に決定されたゲイン調整値でのA/D変換値(A/D変換範囲の上限値)が、ターゲットレジスタ100に設定された上限ターゲット値に確かに一致しているか否かを、外部から確認できる。これによりユーザの利便性を向上できる。
図8(A)に、A/D変換器40の分解能が10ビットであり、オフセット調整レジスタ24のビット幅がn=10ビットであり、下限ターゲット値が0x040である場合のオフセット設定処理例を示す。
1本目の処理ラインでは、カウンタのカウント値がm=n=10に設定される(図6のステップS1)。また解析終了前の解析中においては、10ビット幅のオフセット調整値は、その最上位ビットであるビット9(=m−1)が1に設定されるため(ステップS2)、10_0000_0000になる。そしてこの状態で1本目の処理ラインの黒基準画素の画像信号のA/D変換値がモニタされる。この時、モニタされて平均化されたA/D変換値が0x020であったとする。すると、A/D変換値=0x020の方が下限ターゲット値0x040よりも小さいため、オフセット調整値のビット9は1に決定する(ステップS6、S7)。従って解析終了後は、10_0000_0000のオフセット調整値がオフセット調整レジスタ24に設定される。
2本目の処理ラインでは、カウント値が1だけデクリメントされてm=9になる(ステップS9)。またオフセット調整値は、ビット8(=m−1)が1に設定されるため(ステップS2)、11_0000_0000になる。この状態でモニタされた2本目の処理ラインの黒基準画素の画像信号のA/D変換値が0x045であったとする。すると、A/D変換値=0x045の方が下限ターゲット値0x040よりも大きいため、オフセット調整値のビット8は0に決定する(ステップS6、S8)。従って解析終了後はオフセット調整値は10_0000_0000になる。
3本目の処理ラインでは、カウント値が1だけデクリメントされてm=8になる(ステップS9)。またオフセット調整値は、ビット7(=m−1)が1に設定されるため(ステップS2)、11_1000_0000になる。この状態でモニタされた3本目の処理ラインの黒基準画素の画像信号のA/D変換値が0x035であったとする。すると、A/D変換値=0x035の方が下限ターゲット値0x040よりも小さいため、オフセット調整値のビット7は1に決定する(ステップS6、S7)。従って解析終了後はオフセット調整値は10_1000_0000になる。
以上のようにして10本目の処理ラインまで処理が行われ、その時のA/D変換値は0x041になっており、下限ターゲット値0x040よりも大きい。従ってビット0は0に決定し、オフセット調整値は10_1xxx_xxx0になる。
そして本実施形態ではこのようにしてオフセット調整値の全てのビットの論理レベルが決定した後に、このオフセット調整値を用いて、次の11本目の処理ラインのA/D変換値が再度モニタされる(ステップS11)。そしてモニタされたA/D変換値が下限ターゲット値0x040未満である場合には、オフセット調整値10_1xxx_xxx0に1が加算されて、10_1xxx_xxx1になる(ステップS13、S14)。これにより、A/D変換器40の入力画像信号の下限値が下限ターゲット値を下回ってしまい、A/D変換範囲外になってしまう事態を防止できる。
図8(B)に、A/D変換器40の分解能が10ビットであり、ゲイン調整レジスタ26のビット幅がj=8ビットであり、上限ターゲット値が0x3C0である場合のゲイン設定処理例を示す。
1本目の処理ラインでは、カウンタのカウント値がi=j=8に設定される(図7のステップS21)。また8ビット幅のゲイン調整値は、その最上位ビットであるビット7(=i−1)が1に設定されるため(ステップS22)、1000_0000になる。この状態でモニタされた1本目の処理ラインの白画素の画像信号のA/D変換値が0x3FFであったとする。すると、A/D変換値=0x3FFの方が下限ターゲット値0x3C0より大きいため、ゲイン調整値のビット7は0に決定する(ステップS26、S28)。従って解析終了後は、0000_0000のゲイン調整値がゲイン調整レジスタ26に設定される。
同様にして図8(B)では、2本目の処理ラインにおいては、A/D変換値=0x310の方が上限ターゲット値0x3C0よりも小さいため、ゲイン調整値のビット6は1に決定する。また3本目の処理ラインでは、A/D変換値=0x3E0の方が上限ターゲット値0x3C0よりも大きいため、ゲイン調整値のビット5は0に決定する。
そして8本目の処理ラインまで処理が行われ、その時のA/D変換値は0x3C1になっており、上限ターゲット値0x3C0よりも大きい。従ってビット0は0に決定し、ゲイン調整値は010x_xxx0になる。
そして本実施形態ではこのようにしてゲイン調整値の全てのビットの論理レベルが決定した後に、このゲイン調整値を用いて、次の11本目の処理ラインのA/D変換値が再度モニタされる(ステップS31)。そしてモニタされたA/D変換値が上限ターゲット値0x3C0を上回った場合には、ゲイン調整値010x_xxx0から1が減算される(ステップS33、S34)。これにより、A/D変換器40の入力画像信号の上限値が上限ターゲット値を上回ってしまい、A/D変換範囲外になってしまう事態を防止できる。
5.複数回のゲイン及びオフセットの設定処理
本実施形態ではゲイン設定処理やオフセット処理を交互に複数回繰り返す手法を採用している。
具体的には例えば図9に示すように、イメージセンサ10のライン1〜11(広義には第G〜第Hのライン)の画素の画像信号を用いたオフセット設定処理(図6)を行った後に、イメージセンサ10のライン13〜21(広義には第I〜第Jのライン)の画素の画像信号を用いたゲイン設定処理(図7)を行う。更にイメージセンサ10のライン23〜33の画素の画像信号を用いたオフセット設定処理を行った後に、イメージセンサ10のライン35〜43の画素の画像信号を用いたゲイン設定処理を行う。即ちオフセット設定処理及び前記ゲイン設定処理を1セットとする設定処理を2回(広義には複数回)繰り返す。
また本実施形態では図9に示すように、ライン1〜11(第G〜第Hのライン)の画素の画像信号を用いたオフセット設定処理を行った後に、ライン11(第Hのライン)とライン13(前記第Iのライン)の間のライン12(ダミーライン)については、オフセット設定処理及びゲイン設定処理を行わない。そしてその後にライン13〜21(第I〜第Jのライン)の画素の画像信号を用いたゲイン設定処理を行う。同様にライン22、ライン34でも、オフセット設定処理及びゲイン設定処理を行わず、ダミーのラインとなっている。
例えば図9に示すようにライン1〜11では、ゲイン調整値を初期値に設定して、オフセット調整値の設定処理を行う。具体的にはライン1〜10の画素のA/D変換値を用いて、10ビット幅のオフセット調整値のビット9〜0の設定処理(図6のステップS1〜S10)を行い、ライン11の画素のA/D変換値を用いて、オフセット調整値に対する1の加算処理(ステップS11〜S14)を行う。そしてライン12では、アナログ処理回路20やA/D変換器40を安定化させるために、オフセット設定処理及びゲイン設定処理を行わないようにする。
次のライン13〜21では、ライン1〜11の処理で最終的に得られたオフセット調整値がオフセット調整レジスタ24に設定された状態で、ゲイン調整値の設定処理を行う。具体的にはライン13〜20の画素のA/D変換値を用いて、8ビット幅のゲイン調整値のビット7〜0の設定処理(図7のステップS21〜S30)を行い、ライン21の画素のA/D変換値を用いて、ゲイン調整値からの1の減算処理(ステップS31〜S34)を行う。そしてライン22では、アナログ処理回路20やA/D変換器40を安定化させるために、オフセット設定処理及びゲイン設定処理を行わないようにする。
次のライン23〜33では、ライン13〜21の処理で最終的な得られたゲイン調整値がゲイン調整レジスタ26に設定された状態で、オフセット調整値の設定処理を行う。具体的にはライン23〜32の画素のA/D変換値を用いて、オフセット調整値のビット9〜0の設定処理を行い、ライン33の画素のA/D変換値を用いて、オフセット調整値への1の加算処理を行う。そしてライン34では、オフセット設定処理及びゲイン設定処理を行わないようにする。
同様にして次のライン35〜43では、ライン23〜33でのオフセット調整値を用いて、ゲイン調整値の設定処理を行う。即ちライン35〜42でゲイン調整値のビット7〜0の設定処理を行い、ライン43で1の減算処理を行う。
例えばライン1〜11でオフセット調整を行った後に、ライン13〜21でゲイン調整を行うと、オフセットが微妙にずれてしまう場合がある。即ちライン1〜11のオフセット調整により、下限値に対応するA/D変換値を下限ターゲット値に一致させた後に、ライン13〜21のゲイン調整を行うと、A/D変換値と下限ターゲット値が一致しなくなる場合がある。
そこで図9では、ライン13〜21でのゲイン調整の後に、得られたゲイン調整値を用いて、ライン23〜33で再度オフセット調整を行う。このようにすれば、ゲイン調整の結果が加味されたオフセット調整が行われるようになり、下限値に対応するA/D変換値(黒基準画素のA/D変換値)と下限ターゲット値の一致の精度を高めることができる。
そして更に図9では、ライン23〜33でのオフセット調整の後に、得られたオフセット調整値を用いて、ライン35〜43で再度ゲイン調整を行う。このようにすれば、オフセット調整の結果が加味されたゲイン調整が行われるようになり、上限値に対応するA/D変換値(白画素のA/D変換値)と上限ターゲット値の一致の精度を高めることができる。
更にライン12、22、34のようなダミーのラインを設ければ、オフセット調整やゲイン調整の前に、アナログ処理回路20やA/D変換器40の動作を安定化させることができ、オフセット調整やゲイン調整の精度を向上できる。なおライン1の前やライン43の後ろに、オフセット調整やゲイン調整を行わないダミーラインを設定してもよい。
6.タイミングジェネレータ
図10に本実施形態のアナログフロントエンド回路の変形例を示す。図10では、図2や図5の構成に対してタイミングジェネレータ60の構成要素が追加されている。
ここでタイミングジェネレータ60は、イメージセンサ10用の複数の制御信号を生成する。このタイミングジェネレータ60により生成される制御信号としては、例えばイメージセンサ10の駆動信号や、アナログフロントエンド回路の駆動信号(制御信号)がある。
イメージセンサ10の駆動信号としては、シフト信号SH、駆動クロックφ1、φ2(SNCK)、クランプ信号CP、或いはリセット信号RSなどが考えられる。タイミングジェネレータ60はこれらの駆動信号SH、φ1、φ2、CP、RS等を生成して、イメージセンサ10に供給し、イメージセンサ10を駆動(制御)する。
またアナログフロントエンド回路自体の駆動信号としては、A/D変換用のクロック(基準クロック)ADCK、サンプリングクロックCK1、CK2、或いはクランプ信号CLMPなどが考えられる。タイミングジェネレータ60は、例えばクロックADCKを生成して、A/D変換器40に供給し、サンプリングクロックCK1、CK2、クランプ信号CLMPを生成して、アナログ処理回路20に供給する。
タイミングジェネレータ60は、制御信号出力回路70とイベント情報メモリ90を含む。
ここで制御信号出力回路70は、イベント情報メモリ90(RAM)から読み出された情報などに基づいて制御信号を生成して出力する。またイベント情報メモリ90は、その各アドレスに、画素番号(画素番号の特定情報)と、その画素番号に対応づけられた制御信号の変化イベント発生情報(トグル指示情報)を記憶する。そして制御信号出力回路70は、イベント情報メモリ90から読み出された画素番号と変化イベント発生情報に基づいて、シフト信号SH(SH1〜SH6、SHX)やクロック制御信号などの制御信号を生成する。
ここでイベント情報メモリ90に記憶される画素番号(画素カウント、画素位置)は、イメージセンサ10の各画素の位置を特定するための情報であり、その番号の付け方は任意である。またイベント情報メモリ90に記憶される変化イベント発生情報(イベント情報)は、その変化イベント発生情報に対応づけられた画素番号(同じアドレスに記憶された画素番号)において、その信号レベルの変化イベントが発生する制御信号を指定(特定)するための情報である。
例えば複数の制御信号のうちの第iの制御信号が、第jの画素番号(画素位置)において、その信号レベルが変化したとする。例えばLレベル(「0」)からHレベル(「1」)に変化したり、HレベルからLレベルに変化したとする。この場合には、イベント情報メモリ90の第kのアドレスには、第jの画素番号が記憶されると共に、第iの制御信号を指定(特定)するための情報(ビット)である変化イベント発生情報(変化イベント発生ビット)が、第jの画素番号に対応づけて記憶される。
このようなイベント情報メモリ90を設ければ、制御信号の信号レベルの変化イベントの発生回数が多い場合にも、比較的小規模な回路構成でこれに対応できる。
例えば比較例の手法として、信号の変化点を決めるタイミング情報をタイミング設定レジスタに設定して、設定されたタイミング情報を用いてシフト信号SH等の制御信号を生成する手法が考えられる。
しかしながら、この比較例の手法では、信号レベルの変化イベントの発生回数の個数分だけ、タイミング設定レジスタが必要になる。これに対して図10では、少なくともイベント情報メモリ90のアドレスの容量分(深さ分)の個数だけ、信号レベルの変化イベントを設定できる。従って、制御信号の信号変化点の個数を多くすることができ、より多くの様々なイメージセンサに対して対応することができる。また信号変化点の変更は、ユーザがイベント情報メモリ90の情報を書き換えるだけで実現できるため、信号変化点の変更に伴う回路修正を最小限に抑えることができる。
そして本実施形態では図10のタイミングジェネレータ60が、制御信号として、黒基準画素出力期間(下限値出力期間)を指定するための黒基準画素指定信号OBPIXを出力する。具体的には図11のD1に示すように、A/D変換器40から黒基準画素のA/D変換値が出力される期間において黒基準画素指定信号OBPIXをアクティブにする。すると演算回路50は、信号OBPIXがアクティブになった場合に、A/D変換器40のA/D変換値をモニタし、A/D変換値と下限ターゲット値の比較処理を行う。即ち図11のD2に示すように、図6で説明したオフセットの設定処理を行う。なお黒基準画素は、イメージセンサ10の光シールド領域の画素であってもよいし、原稿のランプを消したときの画素であってもよい。
またタイミングジェネレータ60は、制御信号として、白画素出力期間(上限値出力期間)を指定するための白画素指定信号WHPIXを出力する。具体的には図11のD3に示すように、A/D変換器40から白画素(白の領域を読んだときの有効画素)のA/D変換値が出力される期間において白画素指定信号WHPIXをアクティブにする。すると演算回路50は、信号WHPIXがアクティブになった場合に、A/D変換器40のA/D変換値をモニタし、A/D変換値と上限ターゲット値の比較処理を行う。即ち図11のD4に示すように、図7で説明したゲインの設定処理を行う。
このようにすれば、アナログフロントエンド回路の内部で、信号OBPIX、WHPIXをタイミングジェネレータ60により自動的に生成して、オフセット調整やゲイン調整を自動的に行えるようになる。従って、CPU等の外部デバイスが、信号OBPIX、WHPIXを供給しなくても済むようになるため、その処理負荷を軽減できる。なお、信号OBPIX、WHPIXを外部デバイスが外部から供給する変形実施も可能である。
7.イベント情報メモリ
次にイベント情報メモリ90を用いた制御信号のタイミング設定手法について説明する。図12にイベント情報メモリ90のメモリ空間例を示し、図13に各ビットへの信号の割り当て例を示し、図14に図12、図13の設定手法により生成される信号波形例を示す。
図12では、信号レベルの変化イベントである各イベントのデータは2ワード(16ビット)単位で設定される。そしてイベント情報メモリ90のアドレスは2ワード(0x02)単位で変化し、各アドレス0x00、0x02、0x04・・・・・・0x7C、0x7Eに対して、各イベントのデータが対応づけられている。
また図12に示すように、イベント情報メモリ90の各アドレスに記憶されるデータの1ワード目のビット0〜ビット15と2ワード目のビット0〜3(広義にはビット0〜ビットL。Lは自然数)には、画素番号PIXNUM[19:0]が割り当てられる。また各アドレスに記憶されるデータの2ワード目のビット4〜15(広義にはビットL+1〜ビットM。Mは自然数)には、制御信号SH1〜SH6、SHX、SNCKCTL、OBPIX、WHPIXの変化イベント発生情報(トグル指示ビット)が割り当てられる。なお画素番号や変化イベント発生情報のビット割り当ては図12に限定されず、任意であり、そのビット割り当ての順番を変更するなどの種々の変形実施が可能である。
図12では、各アドレスのデータのビット4〜15(ビットL+1〜ビットM)の各ビットに対して、複数の制御信号SH1〜SH6、SHX、SNCKCTL、OBPIX、WHPIXの各制御信号が割り当てられる。例えばビット4にはLINEMD、ビット5〜11にはSH6、SH1〜SH5、SHX、ビット12、13にはSNCKCTL、ビット14にはOBPIX、ビット15にはWHPIXが割り当てられる。
そして制御信号出力回路70は、これらのビット4〜15の各ビット(ビットL+1〜ビットMのビットN。L+1≦N≦M)が「1」(広義には第1の論理レベル)であった場合に、そのビット(ビットN)に割り当てられる制御信号の信号レベルをトグルする。
例えば図12のアドレス0x02では、ビット10が「1」(第1の論理レベル)になっている。この場合にはビット10に割り当てられる信号SH5の信号レベルが図14のB1に示すようにトグルする。即ちLレベルからHレベルに信号レベルが変化する。また図12のアドレス0x04では、ビット6が「1」になっている。この場合にはビット6に割り当てられる信号SH1の信号レベルが図14のB2に示すようにトグルする。即ちLレベルからHレベルに変化する。そしてアドレス0x06では、再度、ビット6が「1」になっている。従ってビット6に割り当てられる信号SH1の信号レベルが図14のB3に示すようにトグルし、今度はHレベルからLレベルに変化する。
このようにイベント情報メモリ90の変化イベント発生情報として、トグル指示情報(トグル指示ビット)を用いれば、イベント情報メモリ90を用いた制御信号のタイミング設定が簡素化され、ユーザの利便性を向上できる。
なおこのようなトグル指示情報を使用しない手法を採用してもよい。例えば図14に示すような信号SH5の波形を設定するために、図12ではSH5に対応するビット10を「0100001・・・」というように設定しているが、「0111110・・・」というように設定することも可能である。
8.シフト信号の生成
本実施形態ではイベント情報メモリ90により生成される制御信号として、シフト信号SH1〜SH6、SHX(以下、適宜、シフト信号SHと総称する)を生成している。即ちイベント情報メモリ90は、図1(A)のイメージセンサの転送ゲート204をオンにするための信号であるシフト信号SHの変化イベント発生情報を記憶する。そして制御信号出力回路70は、イベント情報メモリ90から読み出されたシフト信号SHの変化イベント発生情報に基づいて、シフト信号SHを生成して出力する。
例えば図12では、イベント情報メモリ90の先頭アドレス0x00から最終アドレス0x7Eに向かって画素番号、変化イベント発生情報が順次読み出される。即ち、まず先頭アドレス0x00に記憶される画素番号PIXNUM=0x00000を読み出し、読み出された画素番号を、図14に示す画素カウント値(後述する画素カウンタのカウント値)と比較する。そして一致した場合には、そのアドレス0x00に記憶される変化イベント発生情報であるビット4〜15に基づいて、制御信号の信号レベルを設定する。この場合にはビット4〜15の全てのビットが「0」(第2の論理レベル)に設定されており、トグルを指示していないため、制御信号の信号レベルを変化させず、そのままの状態にする。
次に、アドレス0x02に記憶される画素番号PIXNUM=0x00001を読み出し、図14に示す画素カウント値と比較する。そして一致した場合には、そのアドレス0x02のビット4〜15(変化イベント発生情報)に基づいて、制御信号の信号レベルを設定する。この場合には例えばビット10が「1」に設定されているため、図14のB1に示すようにシフト信号SH5をLレベルからHレベルに変化させる。
次に、アドレス0x04に記憶される画素番号PIXNUM=0x00002を読み出し、画素カウント値と比較する。そして一致した場合には、そのアドレス0x04のビット4〜15に基づいて、制御信号の信号レベルを設定する。この場合には例えばビット6が「1」に設定されているため、図14のB2に示すようにシフト信号SH1をLレベルからHレベルに変化させる。
同様にしてアドレス0x06から画素番号PIXNUM=0x00003とビット4〜15を読み出して、図14のB3に示すようにシフト信号SH1をHレベルからLレベルに変化させ、B4に示すようにシフト信号SH4をLレベルからHレベルに変化させる。
なお図12では、説明の便宜のために、アドレス0x00、0x02、0x04・・・に記憶される画素番号PIXNUMを、0x00000、0x00001、0x00002、0x00003・・・というように1つずつインクリメントさせている。しかしながら、画素番号PIXNUMのインクリメントのさせ方は任意であり、これに限定されない。例えば0x00000、0x00002・・・というように2つ以上ずつインクリメントさせてもよいし、0x00000、0x00002、0x00006というようにランダムに変化させてもよい。
以上の手法によりシフト信号を生成すれば、様々な製品のイメージセンサに容易に対応できるようになる。例えばシフト信号SH1〜SH3(R、G、B用のシフト信号)の第1回目の立ち上がりタイミングが、イメージセンサの第1の製品では同時であり、第2の製品では同時ではなかったとする。このような場合にも本実施形態によれば、イベント情報メモリ90のデータを書き換えるだけで、第1、第2の製品の両方に容易に対応できるようになる。従って、回路修正等を最小限に抑えることができ、開発期間の短縮化や開発コストの低減を図れる。
なお図12のアドレス0x16以降では、画素番号(PIXNUM)が、変化イベントの発生が終了したことを示す終了指示情報(終了指示番号)である0xFFFFFに設定される。またビット4〜15の変化イベント発生情報も終了指示情報である0xFFFに設定される。
例えば、イベント情報メモリ90の先頭アドレス0x00から最終アドレス0x7Eに向かって画素番号、変化イベント発生情報を順次読み出したとする。そしてアドレス0x16のように、読み出された画素番号、変化イベント発生情報が、終了指示情報(0xFFFFF、0xFFF)に設定されていた場合には、制御信号出力回路70(読み出し回路)は、最終アドレス0x7Eに到達する前に、図12のA1に示すようにイベント情報メモリ90の読み出しポインタを先頭アドレス0x00に戻す。
このようにすれば、変化イベントが発生しないのに、画素番号、変化イベント発生情報の無駄な読み出しが行われてしまう事態を防止でき、処理を効率化できる。例えばイメージセンサの製品に応じて、信号レベルの変化イベントの回数が異なる場合がある。このような場合にも、図12のA1のように、終了指示情報を検知して読み出しポインタを戻す手法を採用すれば、イベント情報メモリ90に変化イベントの情報を効率良く格納することができると共に、情報の読み出し処理の効率化を図れる。
なお、このような終了指示情報(0xFFFFF、0xFFF)が設定されていなかった場合等には、図12のA2に示すように、最終アドレス0x7Eに到達した場合に、イベント情報メモリ90の読み出しポインタを先頭アドレス0x00に戻してもよい。
また図12のA1、A2に示すように読み出しポインタが先頭アドレス0x00に戻り、次のラインの画素の処理を行う場合には、制御信号の信号レベルをLレベル(広義には第1の信号レベル)にクリアすることが望ましい。
例えば図15では、トリガ信号TGCKがアクティブになり、例えばライン型のイメージセンサの第1のラインの画素の処理が行われ、本実施形態の手法によりシフト信号SH1〜SH6の信号レベルが変化している。そして図12のA1、A2のように読み出しポインタが先頭アドレス0x00に戻り、トリガ信号TGCKが再度アクティブになり、次のラインの画素の処理が開始されると、シフト信号SH1〜SH6がLレベルにクリアされる。
例えばイベント情報メモリ90に記憶される変化イベント発生情報が、図12で説明したようなトグル指示情報(トグル指示ビット)である場合には、図15に示す信号レベルのクリア処理を行わないと、誤ったシフト信号SH1〜SH6が生成されるおそれがある。即ち、ノイズ等が原因で、信号SH1〜SH6の信号レベルが誤ってトグルしたとする。すると図15のように1ライン毎にLレベルからHレベルに変化するはずの信号SH1〜SH6が、トグルエラーの発生後は1ライン毎にHレベルからLレベルに変化するようになってしまう。
この点、図15のような信号レベルのクリア処理を行えば、トグルエラーが発生した場合にも、信号SH1〜SH6の信号変化が、直ぐに正常状態に復帰するようになり、信号の生成処理の信頼性を向上できる。
なお信号SHXは、SH1〜SH6のようなクリア処理が行われない信号になっている。この信号SHXを用いれば、図15のように2つのラインにまたがった信号レベルの変化を実現でき、生成される制御信号のバラエティ度を増すことができる。
9.クロック制御信号の生成
本実施形態では図12に示すようにイベント情報メモリ90は、イメージセンサの駆動クロックの出力状態(出力パターン)を制御するクロック制御信号SNCKCTLの変化イベント発生情報を記憶する。そして制御信号出力回路70は、イベント情報メモリ90から読み出された変化イベント発生情報に基づいて、クロック制御信号SNCKCTLを生成する。そして駆動クロックの出力状態を、生成されたクロック制御信号SNCKCTLに基づいて制御する。
例えば制御信号出力回路70は、イメージセンサの駆動クロックSNCK1A〜SNCK4(以下、適宜、駆動クロックSNCKと総称する)を、図16に示すようなパターンメモリを用いて生成する。
例えば図16では、内部ステートの値は0から15までインクリメントされ、次の周期でも、再度、内部ステートの値は0から15までインクリメントされる。この0から15までインクリメントする期間が、1画素の期間になる。即ち図14の画素カウント値が1だけインクリメントする期間において、内部ステートは0から15までインクリメントする。
そして図16では、この内部ステートの値がインクリメントされる毎に、駆動クロックのパターンメモリの各アドレスから、駆動クロックのクロックパターン情報が読み出され、読み出されたクロックパターン情報に基づいて、駆動クロックSNCKが生成される。例えば図16のパターンメモリにより生成される駆動クロックSNCK(図1(A)のφ1、φ2等)の信号波形例を図17に示す。
クロック制御信号SNCKCTLは、このように生成される駆動クロックSNCKの出力状態を制御する。
例えば図12に示すように、画素番号(PIXNUM)が0x00002に設定されるアドレス0x04では、信号SNCKCTLが「01」(広義には第1の状態)に設定される。そして図13に示すように「01」は出力パターン1(有効画素出力時)を意味する。従って、信号SNCKCTLが「01」(第1の状態)である場合には、図14のB5に示すように、出力パターン1のクロックパターンの駆動クロックSNCKが、制御信号出力回路70から出力される。即ち図16、図17に示すような有効画素用(黒基準画素を含む)の出力パターン1の駆動クロックSNCKが生成されて出力される。同様に、画素番号が0x00005に設定されるアドレス0x0Aでも、信号SNCKCTLが「01」に設定されるため、図14のB6に示すように、出力パターン1のクロックパターンの駆動クロックSNCKが出力される。
また画素番号が0x00003に設定されるアドレス0x06では、信号SNCKCTLが「10」(広義には第2の状態)に設定される。そして図13に示すように「10」は出力パターン2を意味する。従って、信号SNCKCTLが「10」(第2の状態)である場合には、図14のB7に示すように、出力パターン2のクロックパターンの駆動クロックSNCKが出力される。このように本実施形態では、クロックパターンを2通り(複数通り)出力することが可能になる。
また画素番号が0x00008に設定されるアドレス0x10では、信号SNCKCTLは「11」(広義には第3の状態)に設定される。そして図13に示すように「11」は固定値出力(固定値出力切り替え)を意味する。従って、信号SNCKCTLが「11」(第3の状態)である場合には、図14のB8に示すように、固定値レベルLV1に設定された駆動クロックSNCKが出力される。
また画素番号が0x00009に設定されるアドレス0x12でも、信号SNCKCTLは「11」に設定される。従って、図14のB9に示すように固定値レベルLV2に設定された駆動クロックSNCKが出力される。即ち駆動クロックSNCKの固定値レベルがLV1からLV2に切り替わる。なお固定値レベルLV1、LV2の電圧レベルは、レジスタ等で任意のレベルに設定可能になっている。
このように駆動クロックSNCKを固定値レベルに設定できれば、イメージセンサの駆動の際の任意の期間において、駆動クロックSNCKを任意のDCレベルに設定できるようになり、イメージセンサの適正な駆動を実現できる。
以上のようなクロック制御信号SNCKCTLを生成して、駆動クロックSNCKの出力状態を制御すれば、イメージセンサ毎に異なる様々な出力パターンの駆動クロックを、簡素で小規模な回路構成で、効率的に生成して出力できるようになる。
10.黒基準画素・白画素指定信号の生成
本実施形態では図12に示すようにイベント情報メモリ90は、黒基準画素指定信号OBPIX、白画素指定信号WHPIXの変化イベント発生情報を記憶する。そして制御信号出力回路70は、イベント情報メモリ90から読み出された変化イベント発生情報に基づいて、黒基準画素指定信号OBPIX、白画素指定信号WHPIXを生成して出力する。
例えば図12に示すように、画素番号が0x00002に設定されるアドレス0x04では、黒基準画素指定信号OBPIXが「1」に設定される。このように信号OBPIXが「1」である場合には、図14のB5に示すように、その画素位置は黒基準画素の位置に指定される。
また画素番号が0x00005に設定されるアドレス0x0Aでは、白画素指定信号WHPIXが「1」に設定される。このように信号WHPIXが「1」である場合には、図14のB6に示すように、その画素位置は白画素(有効画素)の位置に指定される。
例えば図18(A)、(B)に、イメージセンサに供給される駆動クロック(φ1、φ2等)や出力画像信号の信号波形を模式的に示す。
まず、図18(B)のC1に示すように空送りが行われ、次にC2に示すように黒基準画素(オプティカルブラック、光シールド出力)の画像信号が出力される。そしてC3に示すように無効画素の画像信号が出力され、その後にC4に示すように白画素(有効画素)の画像信号が出力され、C5に示すように無効画素の画像信号が出力される。
従って図12のような黒基準画素指定信号OBPIX、白画素指定信号WHPIXにより、図18(B)のC2の黒基準画素位置、C4の白画素位置を指定できれば、イメージセンサの効率的な駆動が可能になる。
なお、図18(B)のC2、C4の黒基準画素、白画素では、図14のB5、B6で説明した出力パターン1のクロックパターンの駆動クロックSNCK(φ1、φ2)が供給され、図18(B)のC3、C5の無効画素では、図14のB7で説明した出力パターン2のクロックパターンの駆動クロックSNCKが供給され、効率的な駆動が可能になる。
11.制御信号出力回路
図19に制御信号出力回路70の具体的な構成例を示す。この制御信号生成回路70は、読み出し回路72、画素カウンタ74、ラインカウンタ75、検出回路76、比較回路77、78、信号生成回路80を含む。また信号生成回路80は、読み出しデータ保持回路82、トグル回路84、ラッチ回路86を含む。なお制御信号生成回路70は図19の構成に限定されず、その構成要素の一部(例えばラインカウンタ、比較回路78等)を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
図19において読み出し回路72は、イベント情報メモリ90から画素番号や変化イベント発生情報を読み出す。画素カウンタ74は、画素カウント値(図14参照)のカウント処理を行う。ラインカウンタ75は、ラインカウント値のカウント処理を行う。
比較回路77は、イベント情報メモリ90から読み出し回路72を介して読み出された画素番号PIXNUMと、画像カウンタ74からの画素カウント値PCNTとを比較する。そして一致した場合には、一致検出信号DETPを出力する。
比較回路78は、イベント情報メモリ90から読み出されたライン番号LINEMDと、ラインカウンタ75からのラインカウント値LCNTとを比較する。そして一致した場合には、一致検出信号DETLを出力する。
信号生成回路80は、画素番号PIXNUMが画素カウント値PCNTと一致し、一致検出信号DETPがアクティブになった場合に、一致した画素番号のアドレスに記憶される変化イベント発生情報に基づいて、制御信号を生成して出力する。
具体的には、読み出し回路72によりイベント情報メモリ90から読み出されたデータRD1(変化イベント発生情報)は、比較回路77からの一致検出信号DETP(或いはDETL)がアクティブになったタイミングで、読み出しデータ保持回路82に保持される。そしてトグル回路84は、読み出しデータ保持回路82の出力データRD2に基づいて、ラッチ回路86にその信号レベルが保持された制御信号のトグル処理を行う。このようにすることで、図14に示すような制御信号SH1〜SH6、SHX等の生成が可能になる。
なお検出回路76は、トリガ信号TGCKの検出や、図12で説明した終了指示情報(0xFFFFF)などの検出を行って、図15で説明したクリア信号CLRを生成する。そしてクリア信号CLRがアクティブになると、制御信号が例えばLレベルにクリアされる。
12.アナログ処理回路
図20にアナログ処理回路20の構成例を示す。なおアナログ処理回路20は図20の構成に限定されず、その構成要素の一部を省略するなどの種々の変形実施が可能である。
アナログ処理回路20は、R用、G用、B用のクランプ回路CLPR、CLPG、CLPBを含む。これらのクランプ回路CLPR、CLPG、CLPBは、R、G、Bの画像信号のレベルを、クランプレベル設定回路22により設定されたクランプレベルにクランプする回路である。
またアナログ処理回路20は、R用、G用、B用のオフセット調整回路OFSR、OFSG、OFSBを含む。これらの各オフセット調整回路OFSR、OFSG、OFSBは、R用、G用、B用のD/A変換器DACR、DACG、DACBや、アナログの加算回路ADDR、ADDG、ADDBを含む。そしてオフセット調整レジスタ24に設定されたオフセット調整データに基づいて、オフセット調整を行う。
またアナログ処理回路20は、R用、G用、B用の相関二重サンプリング回路CDSR、CDSG、CDSBを含む。またR用、G用、B用のゲイン調整アンプPGAR、PGAG、PGABを含む。これらのゲイン調整アンプPGAR、PGAG、PGABは、ゲイン調整レジスタ26に設定されたゲイン調整データに基づいて、ゲイン調整を行う。
アナログ処理回路20はマルチプレクサMUXを含む。このようなマルチプレクサMUXを設ければ、高速なA/D変換器40を用いて、R、G、Bの画像信号を時分割でA/D変換することが可能になる。
13.電子機器
図21は、本実施形態のアナログフロントエンド回路(AFE)324を含む電子機器310の構成例を示す。なお電子機器310は、図21の全ての構成要素を含む必要はなく、その一部を省略する等の種々の変形実施が可能である。
電子機器310(例えばフラットベッド型イメージスキャナ)は読み取り対象物312(例えば原稿)を載せるための載置台314と、載置台314を支持するフレーム315(例えば支持部材、ハウジング)を含む。矩形状の載置台314は光透過性部材であるガラス等により形成され、この光透過性の載置台314の例えば上部に読み取り対象物312が載せられる。
電子機器310は、イメージセンサ322及びアナログフロントエンド回路324が搭載されるヘッド側基板(キャリッジ)320を含む。イメージセンサ322としてはCCD(Charge Coupled Device)、CIS(Contact Image Sensor)、又はBBD(Bucket Brigade Device)などを使用できる。ヘッド側基板320には、読み取り対象物312(原稿)を照明するための光源326や、読み取り対象物312で反射された光源326からの光をイメージセンサ322に集光するレンズ328(集光部)などの光学系(光学ヘッド)も搭載される。
電子機器310は、ヘッド側基板320を駆動して移動させる駆動装置330(駆動機構)を含み、駆動装置330は、モータ332(動力源)や、モータ332を駆動するモータドライバ334を含む。イメージセンサ322は、その長手方向が主走査方向と一致するように配置される。そして他方側がプーリ338に掛けられた駆動ベルトをモータ332により駆動することで、駆動ベルトに固定されたヘッド側基板320が副走査方向(主走査方向に直交する方向)に移動する。なお、ヘッド側基板320の移動方式としは種々の変形実施が考えられる。
電子機器310はメイン基板350を含む。メイン基板350は電子機器310の各ブロックを制御するものである。具体的には、画像データの取得処理の制御や、ヘッド側基板320のサーボ制御や、アナログフロントエンド回路324の制御などを行う。
メイン基板350は画像処理部360を含む。画像処理部360は、アナログフロントエンド回路324で取得された画像データの画像処理を行う。またメイン基板50はサーボコントローラ380を含む。サーボコントローラ380は、ヘッド側基板320を駆動(移動)する駆動装置330(モータ32)のサーボ制御(フィードバック制御)を行う。メイン基板350はCPU396(プロセッサ)やメモリ398(ROM、RAM)を含む。CPU396はメイン基板350の全体的な制御を行ったり、外部との情報のやり取りをする。またメモリ398は、プログラムや各種データを記憶したり、画像処理部360やサーボコントローラ380やCPU396の作業領域として機能する。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またアナログフロントエンド回路、電子機器の構成、動作も本実施形態で説明したものに限定に限定されず、種々の変形実施が可能である。