ソニーが昨年(2011年)のISSCC(←半導体業界のオリンピックと呼ばれるカンファレンス。論文採択率約3割の最も権威ある会議)にて
発表したイメージャー(CMOSセンサ / CMOSイメージャー / 撮像素子)。
上記センサはイメージャーマニアな私にとって(同じくソニーの”積層型イメージセンサ”と並び)最も興味あるセンサの内のひとつです。
なにしろデータの読み出しレートが半端無く速い!!
以前このblogで書いた
REDのDragonセンサ も相当なスピードでデータを出力してはいますが、既に1年前の時点でこのソニーがISSCCで発表したセンサは実画素数で勘案すると私の計算では2割くらいRED Dragonセンサよりも高速になるかと思います。
(ざっくりですが、RED:5K×2.7K/120fps。ソニー8K×2K/120fps。)
一体全体どんな技術を使っているのか!?
一番上のリンク先のソニーの資料にも書いてありますが、何故か同じセンサについて
デジカメwatchでも記事が書かれており、私にとってはこちらの方が詳細でわかりやすいです。
(しかし何故デジカメwatchという一般向けサイトでこんな詳細は記事が!?(^^;))
センサ仕様概略としては・・・
有効画素数:1770万画素(8192×2160)
フレームレート:120fps
AD分解能:12bit@120fps時 / 14bit@60fps時
センササイズ:24.3×12.8mm (対角27.5mm)
画素ピッチ:4.2um□
消費電力:約3W
製造プロセスルール:90nmプロセス
データレート:34.8Gbps
Dレンジ(S/N比):77.6dB
上記特にデータレートの仕様を達成するために、以下三つの新たな技術を投入したと言うことです。
1.Dual Row Readout(DRR)
2.Hybrid Column Counters
3.SLVS-EC(Scalable Low Voltage Signaling with Embedded Clock)
1.については、イメージ的にはセンサを上下半分に分けて、上半分の画素は上方向の列回路へ、下半分の画素は下方向の列回路へ読み出すというものです。
上半分下半分で並列に読み出すため、2行同時読み(Dual row Readout)ということになります。
これにより単純に水平(1行)のブランキング時間を倍使っても同じフレームレートを確保できるという効果が得られます。(←水平のブランキング時間の短縮は撮像素子にとってS/Nを低減させる脅威です。恐らく本センサの77.6dB達成には欠かせなかった技術なのではと思います)
また、垂直方向に読み出す時間を律速するのが、垂直信号線の寄生容量なのではないかと思います。
そのため、この様な読み出し方をすることにより、以下二つの効果で垂直信号線の寄生容量を半減することに成功したのだと思われます。
1)垂直信号線につく画素のトランジスタの数が上下で分けることにより半分⇒トランジスタのソース容量半減
2)上下半分に分けることにより垂直信号線の長さが半分⇒垂直信号線自体の寄生容量半減
という二つの効果で垂直信号線の寄生容量が低減され、読み出しスピードを速くできるたのではないかと予想します。
しかしこれ、画面の真ん中で段差画像になったりしないのでしょうか?(^^;)
ソニーの画処理技術ならそんな段差消しくらいおちゃのこさいさいなのでしょうか。
2.については、列ADの高速化及び低消費電力化に役立っているとのこと。
撮像素子に載っている列ADはほとんどが(少なくとも市販ソニーセンサは例外無く)上記垂直信号線のアナログ電圧レベルを”時間カウントすることによって”デジタルデータへと変換しています。
つまり真っ黒な画像は出力信号レベルが小さく、カウント(≒信号量を計測)するのに時間を要しません。逆に飽和レベルの大きな信号をカウントするのには、多くの時間を要します。
上記各画素の信号レベルをカウントするのに要した時間を記録することにより、画素のアナログ信号量をデジタルに変換すること(=AD変換)が出来ています。
ではフレームレートを上げる≒センサから速くデータを読み出すにはAD部では何をする必要があるのか?
一番単純な答えは、上記ADのカウントスピードを上げることです。
今まで4096数えるのに10マイクロ秒かかっていたのを、数えるスピードを4倍にすれば同じ4096を数えるのに2.5マイクロ秒で済んでしまう・・・
単純に書けば今回のISSCC発表のソニーセンサは上記の様なことをしているはずです。
”そんな単純なら最初っからカウント(数える)スピードもっとあげればいいじゃん”
と思われるかもしれませんが、技術的にはことはそこまで単純ではありません・・・ってか相当難しいはずです(^^;)。
上記数をカウントupするタイミングを決めることを許されているのは基本センサの中で一人だけです(正確にはこのソニーのセンサは1.で上下に読み出されていますので、上下に一人ずつ計2人いそうです。更にひとつ目のリンク先のブロック図を見ると最終的に4辺からデータ出力されていて、このセンサはどうも上下だけでなく左右にも分割して読まれています。なので、上下左右の角に一人ずつ計4人いる可能性が大きそうです)。
何故なら勝手に色んな人にタイミングを委ねたら同じ信号量のはずなのに、人(=列)によってデジタルデータ量が異なってしまいます。←これは画素ごとのノイズ以外の何者でもありません。
で、上記数のカウントupタイミングを決める代表者はセンサの端っこにいるのですが、この代表者に近い列のADは、カウントupタイミングを合図する声が良く聞こえます。
ところが反対側の数千列遠い列にいるADは、合図が良く聞こえません。
列AD自体は何を行うのかと言うと、1.の自分の列の垂直信号線のアナログ信号量が、自分がいくつとカウントした時と等しかったのかを比較して記録しています。
この時どんどんカウントスピードを上げていくとどうなるのか?
代表者から遠い列ADは合図の声は聞こえにくいのに、その合図にピッタリ合わせて自分でカウントupしながら自分の列のデータ量との比較を正確に行わなければなりません。
スピードを上げていくと遠い列のADはその内合図についていけなくなって誤カウントしてしまうのです。←これも画素ノイズ及び縦の線傷の原因です。
上記かなり嘘臭い例を挙げて説明させて頂きましたが、何故代表者から遠い列ADにカウントupの合図の声が聞こえにくいかと言うと、結局1と同じなはずです。
上記”カウントupの合図の声”に相当する基準クロックを端から端へと伝達する電気配線に、自身の寄生容量と各列ADの入力負荷(ゲート容量)がつきます。
遠いところほど上記寄生容量は大きくなり、伝達したい基準クロックの波形鈍りを生じさせます。
更にスピードを上げすぎると、波形鈍りが酷くなり、遠い列ADに到達するころにはクロック波形が鈍りすぎて消えてしまっています。
こうなっては列ADはカウントが行えなくなってしまい、誤ったカウント値で記録してしまいまともなデジタルデータへ変換できなくなってしまうのです。
前置きが大変長くなってしまいましたが、ここからが本題です。もう別のblog回に分けた方が良かったですね(^^;)。
”では今回のソニーのセンサではどの様にして上記課題を解決したのか?”
言い換えると、どの様にして上記基準クロックを遠い側の列ADにまで波形鈍り少なく(≒波形duty崩れ少なく)到達出来るようにしたのか?
ですが、以下のことをして基準クロック配線の容量負荷を下げることにより、今までよりも速い基準クロックを端から端まで通すことに成功しているようです。
列カウンタの下位数bit(←今回は5bit)を列毎にカウンタ機能を持たせることをやめ、複数列(←今回は248列)にひとつ共通カウンタを具備させて、それを248列で共用させる。結果(少なくとも下位5bitについては)列カウンタの数が1/248に減り、基準クロック配線につくゲート容量もラフには1/248に減少させることが可能になった。
上記だけ聞くと、”じゃあ今までよりも248倍くらい速いクロックが通せるんじゃないの?”
と思いそうですが、元々のクロックが既にかなり速いことと、更にはクロック配線自体の寄生容量も元々それなりには存在しているため、トータルの容量で見た場合上記施策を行っても1/248までは減少しないからというのが考えられます。
また、順番が逆になってしまいましたが、”そもそも共通カウンタって何?”
という点については、
まず列カウンタは、列毎に代表者のカウントupのタイミング合図を聞いて、各列ごとに自分自身で各々数を数えていました。
共通カウンタは、複数列にひとつ配置された共通カウンタが同様にカウントupのタイミング合図を聞いて数を数えます。そして自分の支配下の各列に対して(今回は248列に対して)のみ、数えている数自体を知らせます。←カウントupのタイミングではありません。数え終わった数自身を知らせます。
各列自身はカウント自体は行いません。自分の列のアナログ信号量と比較信号の値が等しくなった時に共通カウンタから知らせられたカウント値を覚えておく(記録しておく)だけです。
”じゃ何?最初っから複数列にひとつなんてまどろっこしいことしないで、ひとつの共通カウンタにしちゃえば、クロック配線のゲート容量1/列数に低減できてもっと速いクロック通せるようになるんじゃないの!?”
こんな内容の長いblogをもしここまできちんと読んでくださっている方がいらっしゃったら、その方はきっともう上記の様な疑問を抱かないレベルの方だと思うので、この質問の答えは不要でしょうか?(^^;)
上記では、基準クロックは端から端まで早いクロックを通す必要はなくなりますが、今度は共通カウンタが凄い速さで数えているカウント値を支配下の全列に伝えるための配線負荷が大きくなって、端の遠い列まで正確に知らせることが不能になるからだと思われます。
”AD変換の高速化については随分まどろっこしく書いてるけど、低消費電力化については全く触れてないじゃないか!”
ごもっともです。
しかし既に上記で触れた施策が低消費電力化も兼ねてしまっているのです(←ソニーの中の人に言わせれば、もしかしたら低消費電力化の方が優先課題で、高速化の方が副産物だとおっしゃられるかもしれませんが)。
列カウンタ方式のADで最も消費電力が大きいのは最下位bit(←1の位ですね)のカウント時に流れる貫通電流と各ノードの充放電電流によります。
各bitのカウントがいつ行われるのかと言うと、最上位bitはほとんどカウントされることはありません。仮に12bit目を最上位とすれば、12bit目カウンタが0⇒1に繊維するのは10進数で言えば2047⇒2048に変化した時だけです。
ほとんどカウントしていないので電流がほとんど流れません。
しかし最下位bitはそうはいきません。基準クロックがくる度毎回カウントして電流消費をします。
列カウンタでは各列ごとに(今回のソニーセンサでは有効8192列+α列分)上記下位bitの電流が基準クロックの度に消費されます。←これが列カウンタ方式のADの消費電力の多くを占めているのです。
なので、”下位bitに関しては列毎にカウントさせることをやめれば消費電力を大幅に低減可能じゃないか!”
との発想に立っても、今回の”複数列にひとつの共通カウンタを持たせる”施策は有効なのです。
今回のソニーセンサでは、下位5bitに関しては、カウンタの数が1/248に減っています。その分下位bitのカウント数は同じでもカウントして電流消費するユニット数自体が減っているので、トータルのADの消費電力は大幅に抑えられたということだと思います。
このスペックのセンサで消費電量3Wというのは極めて優秀であると思います。
3Wだと、まだ民生の一眼レフデジカメに載せるには厳しい感じだと思いますが、ソニーのSINEALTA F65の様な筐体が大きく放熱対策が十分取れ、また超ハイエンドであるためバッテリーを多く積めるかもしくは電源を別取りしてくれるようなプロ機には搭載可能でしょう。うまくすれば一眼レフの最上位機にも「ちょっとバッテリーの持ちが悪いかな~」くらいでギリギリいけるレベルかもしれません。
なので、今回のソニーの”
2.Hybrid Column Counters”に関しては、高速化と低消費電力化を見事に両立する解決の手だった様です。凄い!!
最後に・・・
3.SLVS-EC(Scalable Low Voltage Signaling with Embedded Clock)
についてはここでの説明を断念します(--;)
冒頭のソニーの資料のリンクのインタビューにもありますが、はっきり言ってimager-maniaがタッチする分野ではまだないです(私は全くの初耳でした)。
PCのPCI_express等に採用されている技術とのことでPC関連の方の方が詳しい分野と思われます。
現状のデジタル出力撮像素子の出力インターフェースとしては、まだLVDSが主流と思います。
また勉強して、興味があったらこのblogで取り上げようかと思います。
[3回]