説明

浮動小数点数のビット長変換回路およびそれを用いた振動補正制御回路

【課題】既存資産との互換性を保ちつつ、アプリケーションに見合う回路規模を実現する。
【解決手段】ビット長削減部11は、浮動小数点数で表現された演算対象値のビット長を削減して演算部15に出力する。ビット長増加部12は、演算部15から入力される浮動小数点数で表現された演算結果値のビット長を増加させて、元のビット長に戻す。ビット長削減部11は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ演算部15により実行されるアプリケーションに応じて、上位側ビットが破棄される指数部に正または負のオフセット値を加算する。ビット長増加部12は、浮動小数点数の指数部からビット長削減部11により破棄されたビットを復元しつつオフセット値を減算する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算量および回路規模を削減するのに適した浮動小数点数のビット長変換回路およびそれを用いた振動補正制御回路に関する。
【背景技術】
【0002】
デジタルスチルカメラやデジタルムービーカメラ(以下、総称して単にデジタルカメラと表記する)が一般のユーザにも広く普及している。カメラの取り扱いに不慣れなユーザは、撮影時に手振れをしやすい。また、デジタルカメラは、携帯電話機、スマートフォン、PDA(Personal Digital Assistant)などの携帯機器に広く組み込まれている。このような携帯機器に組み込まれたカメラは片手で撮影されるタイプのものが多い。片手で撮影される場合、両手で撮影される場合より手振れが生じやすい。
【0003】
手振れを補正するための手法に光学式手振れ補正がある。光学式手振れ補正はカメラの振動を検出する振動検出素子と、その振動によるブレを打ち消す方向にレンズの位置を動かす駆動素子によって、光軸を補正する手法である。一般的に、補正枠内にバネでレンズを取り付け、そのレンズの位置をX軸アクチュエータおよびY軸アクチュエータでブレを打ち消す方向に動かす機構が用いられる(たとえば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−192847号公報
【特許文献2】特開2010−102431号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述した機構を用いた光学式手振れ補正において、振動検出素子(たとえば、ジャイロセンサ)の出力値を浮動小数点数で表現することが考えられる。浮動小数点数は小数の表現方法として広く普及している。浮動小数点数の表現の方法の代表的なものに、IEEE754形式がある。IEEE754方式には単精度表現と倍精度表現があり、単精度表現では、符号部が1ビット、指数部が8ビットおよび仮数部が23ビットの合計32ビットで表現される。
【0006】
しかしながら、32ビットの浮動小数点数は上述した手振れ補正にはスペックオーバーであり、回路規模が増大し、非効率である。そこで、スペックに見合うような浮動小数点数のビット長で演算することが考えられる。しかしながら、一般的なCPUや外部のデジタル回路などからは、32ビットや64ビット以外のインターフェイスは規格外のため扱いづらく、既存資産を使用しづらい。
【0007】
本発明はこうした状況に鑑みなされたものであり、その目的は、既存資産との互換性を保ちつつ、アプリケーションに見合う回路規模を実現する技術を提供することにある。
【課題を解決するための手段】
【0008】
本発明のある態様の浮動小数点数のビット長変換回路は、浮動小数点数で表現された演算対象値のビット長を削減して演算部に出力するビット長削減部と、演算部から入力される浮動小数点数で表現された演算結果値のビット長を増加させて、元のビット長に戻すビット長増加部と、を備える。ビット長削減部は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ演算部により実行されるアプリケーションに応じて、上位側ビットが破棄される指数部に正または負のオフセット値を加算し、ビット長増加部は、浮動小数点数の指数部からビット長削減部により破棄されたビットを復元しつつオフセット値を減算する。
【0009】
本発明の別の態様は、振動補正制御回路である。この振動補正制御回路は、振動に応じて撮像装置の光軸を補正する振動補正制御回路であって、撮像装置の振動を検出する振動検出素子の出力信号に応じて撮像装置の移動量を示す振動成分信号を生成する振動成分信号生成部と、駆動されるレンズの位置を検出する位置検出素子の出力信号および振動成分信号に基づいて、レンズの位置を補正すべく駆動素子を制御するための駆動信号を生成する駆動信号生成部と、浮動小数点数で表現された振動検出素子の出力信号のビット長を変換する上述した浮動小数点数のビット長変換回路と、を備える。振動成分信号生成部は、ビット長変換回路によりビット長が変換された振動検出素子の出力信号を、設定されたカットオフ周波数でフィルタリングするハイパスフィルタと、ハイパスフィルタの出力信号を積分して振動成分信号を生成する積分回路と、を含む。ハイパスフィルタおよび積分回路は、デジタルフィルタで構成される。
【0010】
本発明のさらに別の態様もまた、振動補正制御回路である。この振動補正制御回路は、振動に応じて撮像装置の光軸を補正する振動補正制御回路であって、撮像装置の振動を検出する振動検出素子の出力信号に応じて撮像装置の移動量を示す振動成分信号を生成する振動成分信号生成部と、駆動される撮像素子の位置を検出する位置検出素子の出力信号および振動成分信号に基づいて、撮像素子の位置を補正すべく駆動素子を制御するための駆動信号を生成する駆動信号生成部と、振動成分信号生成部は、浮動小数点数で表現された振動検出素子の出力信号のビット長を変換する上述した浮動小数点数のビット長変換回路と、を備える。ビット長変換回路によりビット長が変換された振動検出素子の出力信号を、設定されたカットオフ周波数でフィルタリングするハイパスフィルタと、ハイパスフィルタの出力信号を積分して振動成分信号を生成する積分回路と、を含む。ハイパスフィルタおよび積分回路は、デジタルフィルタで構成される。
【発明の効果】
【0011】
本発明によれば、既存資産との互換性を保ちつつ、アプリケーションに見合う回路規模を実現できる。
【図面の簡単な説明】
【0012】
【図1】本発明の実施の形態に係る浮動小数点数のビット長変換回路を説明するための図である。
【図2】演算部の構成例を示す図である。
【図3】本発明の実施の形態に係る浮動小数点数のビット長変換回路の構成を示す図である。
【図4】指数部のビット長変換処理の一例を説明するための図である。
【図5】仮数部の丸め処理の一例を示す図である。
【図6】仮数部のビット追加処理の一例を示す図である。
【図7】本発明の実施の形態に係る振動補正制御回路を搭載した撮像装置の構成を示すブロック図である。
【図8】乗算器および加算器の、ビット長と回路規模の対応関係のシミュレーション結果を示す図である。
【図9】仮数部のビット長と演算誤差との対応関係を記述したテーブルを示す図である。
【発明を実施するための形態】
【0013】
図1は、本発明の実施の形態に係る浮動小数点数のビット長変換回路10を説明するための図である。ビット長変換回路10は、外部デジタル回路19から単精度の浮動小数点数で表現された演算対象値(本実施の形態では32ビットデータ)を受ける。外部デジタル回路19としてCPUや各種の論理回路などが挙げられる。これらは外部機器に搭載されたものであってもよい。
【0014】
ビット長変換回路10は、浮動小数点数で表現された演算対象値のビット長を変換する。本実施の形態では32ビットデータを24ビットデータに変換する。ビット長変換回路10は、ビット長変換後の演算対象値を演算部15に出力する。上述したように当該32ビットデータは、符号部が1ビット、指数部が8ビットおよび仮数部が23ビットで構成される。本実施の形態に係る24ビットデータは、符号部が1ビット、指数部が5ビットおよび仮数部が18ビットで構成される。
【0015】
演算部15は、数値演算を行うためのデジタル回路であり、乗算係数16、レジスタ17および演算回路18を含む。乗算係数16およびレジスタ17は、RAM(Random Access Memory)で構成される。乗算係数16は第1乗算係数16a、第2乗算係数16bおよび第3乗算係数16cを含む。レジスタ17は第1レジスタ17aおよび第2レジスタ17bを含む。演算回路18は複数の演算器で構成される。
【0016】
図2は、演算部15の構成例を示す図である。図2は演算部15をデジタルフィルタで構成する例を示す。当該デジタルフィルタは、第1乗算器18a、第1レジスタ17a、第2乗算器18b、加算器18c、第2レジスタ17bおよび第3乗算器18dを有する。第1乗算器18aは、入力値X(n)を第1乗算係数16aで乗算する。第1レジスタ17aは入力値X(n)を一時保持する。第2乗算器18bは、第1レジスタ17aに保持される1サンプリング周期前の入力値X(n−1)を第2乗算係数16bで乗算する。加算器18cは、第1乗算器18aの出力値、第2乗算器18bの出力値、および第3乗算器18dの出力値を加算する。第2レジスタ17bは、加算器18cの出力値を一時保持する。第3乗算器18dは、第2レジスタ17bに保持される1サンプリング周期前の出力値Y(n−1)を第3乗算係数16cで乗算する。
【0017】
すなわち、このデジタルフィルタは、下記式1に示す演算を行う。
Y(n)=X(n)・a+X(n−1)・b+Y(n−1)・c ・・・(式1)
X(n)(n=1、2、3・・・)は入力値、Y(n)は出力値、aは第1乗算係数16a、bは第2乗算係数16b、およびcは第3乗算係数16cを示す。
【0018】
当該デジタルフィルタでローパスフィルタを構成する場合、第1乗算器18aの係数a、第2乗算器18bの係数b、および第3乗算器18dの係数cを下記式2の関係を満たすように設定する。
(0<)a≒b≪c ・・・(式2)
【0019】
この場合、第2レジスタ17bおよび第3乗算器18dの系の作用が大きくなり、累積加算の機能が主となる。よって、当該デジタルフィルタは積分機能を備え、第2レジスタ17bには積分値が格納される。ここで、係数aと係数bとを略同じ値に設定しているのは、1サンプリング周期前の入力値の遅延成分を加算することによって、ランダムノイズを低減させるためである。なお、係数aおよび係数bを係数cより小さく設定するほど、積分値の上昇を抑制できる。
【0020】
当該デジタルフィルタでハイパスフィルタを構成する場合、第1乗算器18aの係数a、第2乗算器18bの係数b、および第3乗算器18dの係数cを下記式3、4の関係を満たすように設定する。
a≒−b ・・・(式3)
c>0 ・・・(式4)
【0021】
この場合、第1乗算器18aの出力と第2乗算器18bの出力を加算器18cで加算した値は、1サンプリング期間における入力値の変動分を示す。その変動分を第2レジスタ17bおよび第3乗算器18dの系を用いて、累積加算することによって、高周波成分のみを出力するフィルタとなる。
【0022】
すなわち、入力値の周波数が低い場合、当該変動分が小さくなり、当該変動分を1サンプリング周期前の出力値に加算しても、出力値の変動は小さくなる。結果として、低周波成分は通過していないようにみえる。一方、入力値の周波数が高い場合、当該変動分が大きくなり、当該変動分を1サンプリング周期前の出力値に加算すると、出力値の変動は大きくなる。結果として、高周波成分は通過しているようにみえる。
【0023】
図3は、本発明の実施の形態に係る浮動小数点数のビット長変換回路10の構成を示す図である。ビット長変換回路10は、ビット長削減部11およびビット長増加部12を備える。ビット長削減部11は、浮動小数点数で表現された演算対象値のビット長を削減して演算部15に出力する。より具体的には、ビット長削減部11は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ演算部15により実行されるアプリケーションに応じて、上位側ビットが破棄される指数部に正または負のオフセット値を加算する。なお、指数部の最上位ビットが指数の符号を示す符号ビットの場合、符号ビットは除いて破棄する。また、ビット長削減部11は、浮動小数点数の仮数部の下位側ビットに丸め処理を施して、下位側の設定されたビット数、破棄する。
【0024】
ビット長削減部11は、比較部11a、加算部11bおよび丸め処理部11cを含む。比較部11aは浮動小数点数で表現された演算対象値の指数部と設定上限値とを比較する。前者が後者以上のとき、比較部11aは当該指数部の値をビット長削減後の最大値に置き換える。前者が後者未満のとき、比較部11aは当該演算対象値の指数部と設定下限値とを比較する。前者が後者以下のとき、比較部11aは当該指数部の値をビット長削減後の最小値に置き換える。前者が後者未満のとき、加算部11bは当該指数部の値に正または負の固定値を加算する。なお、指数部のビット長削減処理の具体例は後述する。
【0025】
丸め処理部11cは浮動小数点数で表現された演算対象値の仮数部の下位側ビットを丸めて、当該仮数部のビット長を削減する。なお、丸め処理の具体例は後述する。
【0026】
ビット長増加部12は演算部15から入力される浮動小数点数で表現された演算結果値のビット長を増加させて元のビット長に戻す。より具体的には、ビット長増加部12は浮動小数点数の指数部にビット長削減部11により破棄されたビットを復元しつつオフセット値を減算する。また、ビット長増加部12は浮動小数点数の仮数部にビット長削減部11により破棄されたビット位置にゼロを配置し、仮数部を元のビット長に戻す。
【0027】
ビット長増加部12は、比較部12a、減算部12bおよびビット追加部12cを含む。比較部12aは浮動小数点数で表現された演算結果値の指数部と設定最大値とを比較する。前者と後者が等しいとき、比較部12aは当該指数部の値を、上述の設定上限値に置き換える。前者と後者が異なるとき、比較部12aは当該演算結果値の指数部と設定最小値とを比較する。前者と後者が等しいとき、比較部12aは当該指数部の値を、上述の設定下限値に置き換える。前者と後者が異なるとき、減算部12bは当該指数部の値から、上述の固定値を減算する。なお、指数部のビット長増加処理の具体例は後述する。
【0028】
ビット追加部12cは、浮動小数点数で表現された演算結果値の仮数部の下位側に、丸め処理部11cにより削減されたビット数、(0)を追加する。なお、ビット追加処理の具体例は後述する。
【0029】
図4は、指数部のビット長変換処理の一例を説明するための図である。本実施の形態では指数部を8ビット/5ビット変換する。指数部を8ビットで表現し、中心を2=1に設定する場合、指数部の範囲は+128〜−127となる。ここで、最上位ビットは符号ビットである。図4に示す例では、最上位ビットが(1)で正の数、(0)で負の数を示している。なお、2の0乗は、(01111111)で示される。
【0030】
この表現方法の8ビットの指数部を5ビットの指数部に単純に変換する場合、指数部の範囲は−15〜+16となる(C1参照)。すなわち、最上位ビットを除く上位3ビットを破棄する。図4では、この5ビットの指数の範囲を−27〜+4にシフトさせる例を示している(C2参照)。以下、このシフトを実行するための具体的な処理を説明する。前提として、演算対象値の指数部の値を(xxxxxxxx)とし、演算結果値の指数部の値を(yyyyy)とする。
【0031】
比較部11aは(xxxxxxxx)と(10000011)とを比較する。(10000011)が上述の設定上限値に対応する。(xxxxxxxx)が(10000011)以上のとき、比較部11aは(xxxxxxxx)を(11111)に置き換える。(xxxxxxxx)が(10000011)未満のとき、比較部11aは(xxxxxxxx)と(01100100)とを比較する。(01100100)が上述の設定下限値に対応する。(xxxxxxxx)が(01100100)以下のとき、比較部11aは(xxxxxxxx)を(00000)に置き換える。(xxxxxxxx)が(10000011)未満のとき、加算部11bは(xxxxxxxx)から(01100100)を減算する。
【0032】
比較部12aは(yyyyy)と(11111)とを比較する。両者が等しいとき、比較部12aは(yyyyy)を、(10000011)に置き換える。両者が異なるとき、比較部12aは(yyyyy)と(00000)を比較する。両者が等しいとき、比較部12aは(yyyyy)を、(01100100)に置き換える。両者が異なるとき、減算部12bは(yyyyy)に(01100100)を加算する。
【0033】
図4に示した変換方法は後述する手振れ補正に適している。手振れ補正においては、低周波帯域を扱うため、小数点以下の値を細かく表現できることが重視される。そのため、指数の表現範囲を2を中心にせず、より小さな値にシフトさせることにより、少ないビット長で有効な演算を実現する。指数部を8ビットから5ビットに単純に変換する場合、(01111)が2となり、指数部の表現範囲は2−15〜216となる。この表現範囲では手振れ補正の演算に必要なダイナミックレンジを十分に確保することができない。そこで、2を(11011)にシフトすることにより、指数部の表現範囲を2−27〜2とする。この表現範囲によれば、手振れ補正の演算に必要なダイナミックレンジを確保できる。
【0034】
図5は、仮数部の丸め処理の一例を示す図である。本実施の形態では下位6ビットを丸め処理して、23ビットデータを18ビットデータに変換する。図5に示す例は、最近接偶数への丸め処理を採用した例である。最近接偶数への丸め処理とは、端数が0.5より小さいとき切り捨て、0.5より大きいとき切り上げ、0.5のとき切り捨てと切り上げのうち丸め結果が偶数となるほうへ丸める処理である。この丸め処理は、丸め誤差が累積しにくいという長所がある。
【0035】
図5において、丸め処理部11cは23ビットデータの下位4ビットの論理和を演算する。すなわち、下位4ビットの少なくともひとつが(1)のとき下位から4ビット目を(1)に設定し、すべてが(0)のとき(0)に設定する。つぎに、丸め処理部11cは下位から4〜6ビット目の3ビットを丸め処理する。なお、桁の重みは下位から6ビット目(L)が1、5ビット目(G)が0.5、4ビット目(R)が0.25である。
【0036】
上述の3ビットが(000)、(001)、(100)および(101)の場合、下位から5ビット目と4ビット目の合計は0.5より小さく、その2ビットは切り捨て処理となる。(011)および(111)の場合、下位から5ビット目と4ビット目の合計は0.5より大きく、その2ビットは切り上げ処理となる。すなわち、下位から6ビット目に+(1)される。(010)の場合、通常の四捨五入法による丸め処理では切り上げ処理となるが、切り上げ結果が奇数となるため、上述の最近接偶数への丸め処理では切り捨て処理となる。(110)の場合、切り上げ結果が偶数となるため、切り上げ処理となる。
【0037】
図6は、仮数部のビット追加処理の一例を示す図である。図6に示すようにビット追加部12cは、18ビットデータの下位6ビットに(00000)を追加して23ビットデータに変換する。
【0038】
図7は、本発明の実施の形態に係る振動補正制御回路100を搭載した撮像装置500の構成を示すブロック図である。撮像装置500は、レンズ70、駆動素子90、位置検出素子80、振動検出素子60、振動補正制御回路100、撮像素子200および画像処理部300を備える。
【0039】
振動補正制御回路100は、ADC (Analog to Digital Converter)20、浮動小数点数変換回路25、ビット長変換回路10、振動成分信号生成部30、駆動信号生成部40およびDAC(Digital to Analog Converter)50を有する。振動成分信号生成部30は、HPF(High Pass Filter)32、積分回路34、センタリング処理回路36およびリミット回路38を含む。駆動信号生成部40は、加算回路42およびサーボ回路44を含む。
【0040】
撮像素子200は、光学部品であるレンズ70を透過した光信号を電気信号に変換する。撮像素子200にはCCD(Charge Coupled Device)センサまたはCMOS(Complementary Metal Oxide Semiconductor)イメージセンサを採用することができる。画像処理部300は、撮像素子200により撮像された画像信号に対し、各種加工を施したり、圧縮符号化したりする。
【0041】
駆動素子90はレンズ70を駆動する。位置検出素子80はレンズ70の位置を検出する。振動検出素子60は撮像装置500に加わる振動を検出する。ビット長変換回路10は、浮動小数点数で表現された振動検出素子60の出力信号のビット長を変換する。より具体的には、ビット長削減部11は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつHPF32および積分回路34により実行される数値演算処理に応じて、上位側ビットが破棄される指数部に負のオフセット値を加算する。これに対応して、ビット長増加部12は、浮動小数点数の指数部からビット長削減部11により破棄されたビットを復元しつつ当該負のオフセット値を減算する。なお、浮動小数点数の仮数部の処理は上述の通りである。
【0042】
振動成分信号生成部30は、振動検出素子60の出力信号に応じて撮像装置500の移動量を求め、その移動量を補正するための振動成分信号を生成する。撮像装置500の移動量は、振動検出素子60の出力信号を積分して求めることができる。
【0043】
駆動信号生成部40は、位置検出素子80の出力信号および振動成分信号生成部30により生成された信号に基づいて、レンズ70の位置を補正すべく駆動素子90を制御するための駆動信号を生成する。駆動素子90は、この駆動信号に基づき、レンズ70の光軸と撮像素子200の中心とが一致するようレンズ70の位置を制御する。
【0044】
以下、振動補正制御回路100の構成および動作をより具体的に説明する。以下、振動検出素子60にジャイロセンサ60a、位置検出素子80にホール素子80a、駆動素子90にボイスコイルモータ90aを採用する例で説明する。ジャイロセンサ60aは撮像装置500を持つユーザの手振れによる振動を角速度として検出するセンサである。
【0045】
ジャイロセンサ60aは、撮像装置500のXYの2軸方向の角速度を検出する。ジャイロセンサによって得られたアナログ形式の角速度信号は、図示しない増幅回路により増幅された後、ADC20に出力される。ADC20は、当該増幅回路により増幅されたアナログ形式の角速度信号をデジタル形式の角速度信号に変換する。ADC20から出力された角速度信号は、浮動小数点数変換回路25に出力される。
【0046】
浮動小数点数変換回路25は、ADC20から出力される固定小数点形式の角速度信号を32ビットの浮動小数点数形式の角速度信号に変換し、ビット長変換回路10に出力する。ビット長変換回路10は、32ビットの浮動小数点数形式の角速度信号を24ビットの浮動小数点数形式の角速度信号に変換する。ビット長変換回路10は図1〜図6を参照しながら説明した上述のビット長変換を実行する。ビット長変換回路10は、24ビットの浮動小数点数形式の角速度信号を振動成分信号生成部30に出力する。
【0047】
振動成分信号生成部30は、上述した演算部15に相当する。すなわち、演算部15は振動検出素子60の出力信号に応じて撮像装置500の移動量を求め、その移動量を補正するための振動成分信号を生成するというアプリケーションを実行する。
【0048】
ビット長変換回路10から出力された当該角速度信号はHPF32に入力される。HPF32は、ジャイロセンサ60aから出力された角速度信号のうち、手振れによる周波数成分より低い周波数成分をフィルタリングして除去する。一般的に、手振れによる周波数成分は1〜20Hzであるが、本実施の形態では一眼レフカメラなど比較的重量のあるカメラも考慮し、カットオフ周波数を低く設定する例を考える。たとえば、カットオフ周波数を0.01Hzに設定し、当該角速度信号から0.01Hz以下の周波数成分を除去する。
【0049】
積分回路34は、HPF32によりフィルタリングされた角速度信号を積分して、撮像装置500の移動量を示す振動成分信号を生成する。センタリング処理回路36は、積分回路34により生成された振動成分信号を原点方向にセンタリングする。なお、センタリング処理回路36は静止画の撮影時にはオフされる。リミット回路38は、センタリング処理回路36によりセンタリングされた振動成分信号に、レンズ70の可動範囲に対応するリミットを設定する。
【0050】
本実施の形態では、HPF32、積分回路34およびセンタリング処理回路36を図2に示したデジタルフィルタで構成する。積分回路34はローパスフィルタ、センタリング処理回路36はハイパスフィルタで構成することができる。当該デジタルフィルタで積分回路34を構成する際、図2に示したデジタルフィルタの係数aおよび係数bと、係数cとの比率を調整することにより、振動補正処理の感度を調整できる。
【0051】
ビット長変換回路10は、振動成分信号生成部30から出力される24ビットの浮動小数点数形式の振動成分信号を32ビットの浮動小数点数形式の振動成分信号に変換し、浮動小数点数変換回路25に出力する。浮動小数点数変換回路25は、ビット長変換回路10から出力される浮動小数点形式の振動成分信号を固定小数点形式の振動成分信号に変換し、駆動信号生成部40(より厳密には加算回路42)に出力する。
【0052】
ホール素子80aは、ホール効果を利用した磁気センサであり、レンズ70のX軸およびY軸方向の位置検出素子として機能する。ホール素子80aによって得られたレンズ70の位置情報を含むアナログ形式の位置信号は、図示しない増幅回路により増幅された後、ADC20に出力される。ADC20は、当該増幅回路により増幅されたアナログ形式の位置信号をデジタル形式の位置信号に変換する。ADC20は上記アナログ形式の角速度信号および上記アナログ形式の位置信号を時分割でデジタルの信号に変換する。なお、ADC20は振動補正制御回路100内に搭載されるのではなく、モジュール化されたジャイロセンサ60aおよびホール素子80aにそれぞれ搭載されていてもよい。
【0053】
ADC20から出力された位置信号は駆動信号生成部40に出力される。なお、当該位置信号は浮動小数点数に変換されず、固定小数点形式のままである。駆動信号生成部40の加算回路42には、当該位置信号および浮動小数点数変換回路25から出力された振動成分信号が入力される。加算回路42は、入力された位置信号と振動成分信号とを加算し、サーボ回路44に出力する。サーボ回路44は、加算回路42からの出力信号に応じて、ボイスコイルモータ90aの駆動を制御するための駆動信号を生成する。なお、サーボ回路44において、サーボ制御用のデジタルフィルタを用いたフィルタ処理が行われてもよい。
【0054】
DAC50は、サーボ回路44から出力されたデジタル形式の駆動信号をアナログ形式の駆動信号に変換する。当該駆動信号は、図示しない増幅回路により増幅された後、ボイスコイルモータ90aに出力される。ボイスコイルモータ90aは、当該駆動信号に基づいてレンズ70のX軸およびY軸方向の位置を移動させる。
【0055】
以下、本実施の形態に係る撮像装置500の動作を手振れがない場合と手振れがある場合に分けて説明する。
【0056】
(手振れがない場合の動作)
手振れがない場合、撮像装置500に角速度が生じないため、振動成分信号生成部30が出力する信号は“0”となる。ボイスコイルモータ90aによって駆動されるレンズ70の位置は、その光軸と撮像装置500に備えられる撮像素子200の中心とが一致する。この状態では、ホール素子80aから出力される位置信号は“0”であり、サーボ回路44は、現在のレンズ70の位置を維持するための駆動信号をボイスコイルモータ90aに出力する。
【0057】
また、レンズ70の光軸と撮像素子200の中心とが一致しない場合、ホール素子80aから出力される位置信号は“0”と異なる値となり、サーボ回路44は、その値に応じて、位置信号の値を“0”にするための駆動信号をボイスコイルモータ90aに出力する。この動作を繰り返すことによって、レンズ70の光軸と撮像素子200の中心とが一致するように、レンズ70の位置が制御される。
【0058】
(手振れがある場合の動作)
上述したように、ボイスコイルモータ90aによって駆動されるレンズ70の位置は、その光軸と撮像素子200の中心とが一致するよう制御される。両者が一致している状態では、ホール素子80aから出力される位置信号は“0”である。
【0059】
一方、手振れによって撮像装置500が移動するため、振動成分信号生成部30は、ジャイロセンサ60aにより検出された角速度信号に基づいて、撮像装置500の移動量を示す振動成分信号を駆動信号生成部40に出力する。
【0060】
加算回路42は、ホール素子80aが出力する“0”の位置信号と、振動成分信号生成部30が出力する“0”以外の振動成分信号とを加算する。サーボ回路44は、この信号に応じて、ボイスコイルモータ90aの駆動信号を生成する。この駆動信号はレンズ70を移動させる補正信号となる。ボイスコイルモータ90aは、サーボ回路44が出力する補正信号に基づいてレンズ70を移動させる。これにより、撮像素子200は手振れによる被写体のぶれを抑制した信号を得ることができる。この制御を繰り返すことによって、手振れ補正制御が実現される。
【0061】
つぎに、ビット長変換回路10により浮動小数点数の符号部の8ビットを5ビットに変換し、その表現範囲を2−27〜2にシフトさせる根拠について説明する。手振れ補正の帯域は、1Hz〜20Hz程度必要であるため、手振れ帯域に影響しないように、HPF32のカットオフ周波数は0.01Hz以下が望ましい。
【0062】
図2に示したデジタルフィルタにおいて、サンプリング周波数が40kHz、カットオフ周波数が0.01Hzの場合、フィルタ係数a、b、cは下記の通りである。
a=(3552D41C)16
b=(B552D41C)16
c=(3F7FFFE6)16
となる。
【0063】
ここで、a,bの指数部=(01101010)=2−21、cの指数部=(01111111)=2となる(図4参照)。2を中心とした単純なビット削除では2−21〜2を表現するには6ビット必要であるが、2を中心とした表現範囲をシフトさせると5ビットで足りる。すなわち、2−21〜2が中央になるようにシフトさせると、5ビットで2−26〜2を表現可能である。
【0064】
積分回路34で2以上の値になる場合と、HPF32で2−26以下の値になる場合を考えたとき、積分回路34でのオーバーフローは、通常の手振れ補正動作中では発生しない。HPF32で2−26以下の演算を実行することによる誤差の影響をより小さくするため、さらに1ビット負側にシフトさせることが有効である。すなわち、上述したように5ビットで表現される指数部の範囲を2−27〜2に設定する。この表現範囲は積分回路34でのオーバーフローを抑制しつつ、もっとも手振れ補正の精度を上げることができる範囲である。
【0065】
なお、積分回路34はパンニングまたはチルティングが発生するとオーバーフローするが、図示しないパンニング/チルティング検出回路によりパンニングまたはチルティングが検出されると、積分回路34の前段に設けられた図示しないゲイン調整回路により積分回路34に入力される信号を減衰させる。
【0066】
つぎに、ビット長変換回路10により浮動小数点数の仮数部の24ビットを18ビットに変換する根拠について説明する。図8は、乗算器および加算器の、ビット長と回路規模との対応関係のシミュレーション結果を示す図である。なお、回路規模は正規化された値である。フィルタ演算では、仮数部の乗算および加算が実行される。図8に示すように乗算器および加算器はビット長が増大するほど、2次関数的に回路規模が増加する傾向にある。
【0067】
図9は、仮数部のビット長と演算誤差との対応関係を記述したテーブルを示す図である。なお、指数部は2であることを前提とする。フィルタ演算において、その演算誤差の影響を無視として取り扱うにはフィルタ全体の最大誤差が1%以下が望ましい。図9を参照すると、仮数部のビット長が18ビットから当該フィルタ全体の最大誤差が1%以下となる。そこで、本実施の形態では回路規模の増大を抑制しながら、演算精度を維持できる18ビットを採用した。
【0068】
以上説明したように本発明の実施の形態によれば、既存資産との互換性を保ちつつ、アプリケーションに見合う回路規模を実現できる。したがって、既存資産を有効活用しつつ、追加するアプリケーションを実行するための演算部の規模を最適化できる。とくに、手振れ補正に適用した場合、振動成分信号生成部30以外の既存回路との互換性を保ちつつ、振動成分信号生成部30の回路規模を演算内容に見合った規模に最適化できる。その際、指数部の表現範囲をシフトさせることにより、演算精度も維持される。
【0069】
以上、本発明をいくつかの実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0070】
上述した実施の形態ではビット長変換回路10を振動補正制御回路100に適用する例を示したが、振動補正制御回路100以外にも適用可能である。たとえば、巨大な整数を扱うアプリケーションにも適用可能である。この場合、指数部の表現範囲を正にシフトするとよい。
【0071】
また、上述した実施の形態では丸め処理部11cが最近接偶数への丸め処理を採用する例を説明した。この点、四捨五入、五捨六入、乱数丸めなどその他の丸め処理を採用してもよい。また、下位ビットの単純破棄を採用してもよい。
【0072】
また、上述した実施の形態では、振動検出素子60、位置検出素子80および駆動素子90をそれぞれジャイロセンサ60a、ホール素子80aおよびボイスコイルモータ90aとする例を説明した。本発明はそれに限られるものではない。たとえば、振動検出素子60は直線方向の加速度を検出するセンサを用いて、加速度信号に基づいて撮像装置500の振動を検出する構成にすることができる。また、駆動素子90はピエゾ素子やステッピングモータなどを用いることができる。位置検出素子80はMR素子またはフォトスクリーンダイオードなどを用いることができる。
【0073】
また、以上の実施の形態では、レンズを駆動させて手振れ補正処理を行うレンズシフト式としたが、本発明はこれに限られるものではない。たとえば、本発明は撮像装置500のブレに応じて撮像素子200をシフトさせる撮像素子シフト方式にも適用できる。このとき、位置検出素子80は撮像素子200の位置を検出し、駆動素子90は撮像素子200を駆動する。
【符号の説明】
【0074】
10 ビット長変換回路、 11 ビット長削減部、 11a 比較部、 11b 加算部、 11c 丸め処理部、 12 ビット長増加部、 12a 比較部、 12b 減算部、 12c ビット追加部、 15 演算部、 16 乗算係数、 16a 第1乗算係数、 16b 第2乗算係数、 16c 第3乗算係数、 17 レジスタ、 17a 第1レジスタ、 17b 第2レジスタ、 18 演算回路、 18a 第1乗算器、 18b 第2乗算器、 18c 加算器、 18d 第3乗算器、 19 外部デジタル回路、 100 振動補正制御回路、 20 ADC、 25 浮動小数点数変換回路、 30 振動成分信号生成部、 32 HPF、 34 積分回路、 36 センタリング処理回路、 38 リミット回路、 40 駆動信号生成部、 42 加算回路、 44 サーボ回路、 50 DAC、 60 振動検出素子、 60a ジャイロセンサ、 70 レンズ、 80 位置検出素子、 80a ホール素子、 90 駆動素子、 90a ボイスコイルモータ、 200 撮像素子、 300 画像処理部、 500 撮像装置。

【特許請求の範囲】
【請求項1】
浮動小数点数で表現された演算対象値のビット長を削減して演算部に出力するビット長削減部と、
前記演算部から入力される浮動小数点数で表現された演算結果値のビット長を増加させて、元のビット長に戻すビット長増加部と、を備え、
前記ビット長削減部は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ前記演算部により実行されるアプリケーションに応じて、前記上位側ビットが破棄される指数部に正または負のオフセット値を加算し、
前記ビット長増加部は、浮動小数点数の指数部から前記ビット長削減部により破棄されたビットを復元しつつ前記オフセット値を減算する、
ことを特徴とする浮動小数点数のビット長変換回路。
【請求項2】
前記ビット長削減部は、浮動小数点数の仮数部の下位側ビットに丸め処理を施して、下位側の設定されたビット数、破棄し、
前記ビット長増加部は、浮動小数点数の仮数部に前記ビット長削減部により破棄されたビット位置にゼロを配置し、前記仮数部を元のビット長に戻す、
ことを特徴とする請求項1に記載の浮動小数点数のビット長変換回路。
【請求項3】
振動に応じて撮像装置の光軸を補正する振動補正制御回路であって、
前記撮像装置の振動を検出する振動検出素子の出力信号に応じて前記撮像装置の移動量を示す振動成分信号を生成する振動成分信号生成部と、
駆動されるレンズの位置を検出する位置検出素子の出力信号および前記振動成分信号に基づいて、前記レンズの位置を補正すべく駆動素子を制御するための駆動信号を生成する駆動信号生成部と、
浮動小数点数で表現された前記振動検出素子の出力信号のビット長を変換する請求項1または2に記載の浮動小数点数のビット長変換回路と、を備え、
前記振動成分信号生成部は、
前記ビット長変換回路によりビット長が変換された前記振動検出素子の出力信号を、設定されたカットオフ周波数でフィルタリングするハイパスフィルタと、
前記ハイパスフィルタの出力信号を積分して前記振動成分信号を生成する積分回路と、を含み、
前記ハイパスフィルタおよび前記積分回路は、デジタルフィルタで構成されることを特徴とする振動補正制御回路。
【請求項4】
振動に応じて撮像装置の光軸を補正する振動補正制御回路であって、
前記撮像装置の振動を検出する振動検出素子の出力信号に応じて前記撮像装置の移動量を示す振動成分信号を生成する振動成分信号生成部と、
駆動される撮像素子の位置を検出する位置検出素子の出力信号および前記振動成分信号に基づいて、前記撮像素子の位置を補正すべく駆動素子を制御するための駆動信号を生成する駆動信号生成部と、
浮動小数点数で表現された前記振動検出素子の出力信号のビット長を変換する請求項1または2に記載の浮動小数点数のビット長変換回路と、を備え、
前記振動成分信号生成部は、
前記ビット長変換回路によりビット長が変換された前記振動検出素子の出力信号を、設定されたカットオフ周波数でフィルタリングするハイパスフィルタと、
前記ハイパスフィルタの出力信号を積分して前記振動成分信号を生成する積分回路と、を含み、
前記ハイパスフィルタおよび前記積分回路は、デジタルフィルタで構成されることを特徴とする振動補正制御回路。
【請求項5】
前記ビット長削減部は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ前記ハイパスフィルタおよび前記積分回路により実行される数値演算処理に応じて、前記上位側ビットが破棄される指数部に負のオフセット値を加算することを特徴とする請求項3または4に記載の振動補正制御回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−205005(P2012−205005A)
【公開日】平成24年10月22日(2012.10.22)
【国際特許分類】
【出願番号】特願2011−66489(P2011−66489)
【出願日】平成23年3月24日(2011.3.24)
【出願人】(300057230)セミコンダクター・コンポーネンツ・インダストリーズ・リミテッド・ライアビリティ・カンパニー (119)
【Fターム(参考)】