(58)【調査した分野】(Int.Cl.,DB名)
前記列方向または前記行方向で選択される前記N個の記憶部への1ライン分の前記画素データの書き込み開始前に、当該N個の記憶部に書き込まれている画素データの読み出しが完了している、ことを特徴とする請求項1に記載の画像データ処理装置。
前記読み出し制御部は、前記Nの倍数ラインの画素データのうち、1ワード分の書き込みが完了すると、前記並列読み出しを開始させる、ことを特徴とする請求項1または2に記載の画像データ処理装置。
前記撮像素子からの前記画素データの読み出し順で、前記画素データを受け取り、それぞれが、前記読み出し順に対してN画素ずつ飛び飛びのデータ並びとなるN並列の第1の並列データを生成する並列化部を有し、
書き込み時に選択される前記記憶部には、前記並列化部からの前記第1の並列データがN画素ずつ書き込まれ、
読み出し時に選択される前記N個の記憶部から読み出されるN並列の第2の並列データのそれぞれのデータ並びは、前記読み出し順である、
ことを特徴とする請求項1乃至3の何れか一項に記載の画像データ処理装置。
前記Nの倍数ラインの前記画素データの書き込みで最初に選択される記憶部と、前記他の記憶部とを、同じ制御信号またはアドレスで動作させる2種類のインターフェースを有することを特徴とする請求項1乃至4の何れか一項に記載の画像データ処理装置。
書き込み制御部が、撮像素子のN(N≧2)本の読み出しライン分の画素データを保持するN×N個の記憶部に含まれる記憶部を列方向または行方向に選択して、N画素ずつ前記画素データを書き込み、Nライン分の前記画素データの書き込みごとに、前記記憶部の選択方向を切り替え、
読み出し制御部が、Nの倍数ライン目の前記画素データの書き込み時、当該書き込み時における前記記憶部の選択方向とは異なる方向でN個の前記記憶部を選択し、前記書き込まれた前記Nライン分の画素データの並列読み出しを開始し、
前記N×N個の記憶部のうち、前記Nの倍数ライン目の画素データの書き込みで最初に選択される記憶部は、読み出しと書き込みを異なる端子を用いて行い、他の記憶部は、読み出しと書き込みを共通の端子を用いて行う、
ことを特徴とする画像データ処理方法。
【発明を実施するための形態】
【0011】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の画像データ処理装置と画像データ処理方法の一例を示す図である。
【0012】
画像データ処理装置10は、並列化部11、N×N(N≧2、ただし
図1の例ではN=4)個の記憶部12(ただし、後述するように2つの記憶部12a,12bは他のものとは種類が異なるため別の符号を付している)を有している。さらに、画像データ処理装置10は、書き込み制御部13、読み出し制御部14、入力信号制御部15、出力信号制御部16、回路部17を有している。以下の説明では、記憶部12,12a,12b、書き込み制御部13、読み出し制御部14、入力信号制御部15、出力信号制御部16を含む部分をライン分割処理部20と呼ぶ。
【0013】
並列化部11は、撮像部30の撮像素子31から画素データの読み出し順(ラスタ走査順)で、画素データを受け取り、それぞれが、ラスタ走査順に対してN画素ずつ飛び飛びのデータ並びとなるN並列の並列データを生成する。これにより、画像データ処理装置10内の周波数を撮像素子31の周波数の1/Nにすることができる。なお、並列化部11は、たとえば、撮像部30に含まれるようにしてもよい。
【0014】
ライン分割処理部20は、並列化部11から出力される各並列出力のデータを、後段の回路部17で処理できるようにラスタ走査順に並び変え、ラスタ走査順に並び変えられたN並列の画素データを出力する。
【0015】
ライン分割処理部20内の、N×N個の記憶部12,12a,12bは、撮像素子31のN本の読み出しライン(たとえば、水平方向の読み出しライン)分の画素データを保持する容量を有している。N=4の場合は、16個の記憶部12,12a,12bによって、4ライン分の画素データが保持される。
【0016】
書き込み制御部13は、N×N個の記憶部12,12a,12bに含まれる記憶部を、列方向または行方向にN個選択して、N画素ずつ並列化部11から出力される画素データを書き込む。そして、書き込み制御部13は、Nライン分の画素データの書き込みごとに、記憶部の選択方向を切り替える。
【0017】
読み出し制御部14は、Nの倍数ライン目の画素データの書き込み時、その書き込み時における記憶部の選択方向とは異なる方向でN個の記憶部を選択し、Nライン分の画素データの並列読み出しを開始する。
【0018】
入力信号制御部15は、書き込み制御部13と読み出し制御部14の制御のもと、行選択信号や列選択信号を生成し、N×N個の記憶部12,12a,12bのうち、読み書きを行う記憶部を選択する。
【0019】
出力信号制御部16は、書き込み制御部13と読み出し制御部14の制御のもと、N×N個の記憶部12,12a,12bのうち適切なN個を選択し、N並列の画素データを出力し、後段の回路部17に供給する。
【0020】
なお、
図1の例では、並列化部11とN×N個の記憶部12,12a,12bとを接続するデータ線や、入力信号制御部15及び出力信号制御部16とN×N個の記憶部12,12a,12bとを接続する信号線などは、図示を省略している。
【0021】
以下、第1の実施の形態の画像データ処理装置10の動作の一例を説明する。
図2は、画像データ処理装置が4画素ずつデータを受け取り4並列で処理を行う例を示す図である。
【0022】
図2では、クロックCK1に同期して撮像素子31から矢印Aで示されている読み出し順(ラスタ走査順)で読み出される画素データが、0〜26で示されている。画像データ処理装置10では、撮像部30でのクロックCK1の1/4の速さのクロックCK2に同期した動作が行われる。
【0023】
並列化部11は、ラスタ走査順で撮像素子31から読み出される画素データを、
図2のような4つの並列データとして出力する。このとき各並列データは、0,4,8,…、1,5,9,…のように、ラスタ走査順に対して、4画素ずつ飛び飛びの画素データとなっているため、ライン分割処理部20で、各並列データがラスタ走査順になるように並べ替えられて、後段の回路部17に供給される。
【0024】
図1の下側には、画像データ処理装置10が4画素ずつデータを受け取り4並列で処理を行う際の、ライン分割処理部20における画素データのライトとリードの制御例が示されている。4×4個の記憶部12,12a,12bに対してライトまたはリードが行われる8つの状態の例が示されている。
【0025】
書き込み制御部13は、4×4個の記憶部12,12a,12bから、列方向に記憶部を順に選択して、並列化部11から4画素ずつ並列に入力される画素データを書き込ませる。これにより、まずは撮像素子31の水平方向の読み出しラインの画素データが、1ライン目から順に、列方向に選択された記憶部にライトされる。
【0026】
そして、書き込み制御部13は、4ライン分の画素データのライトが終わると、記憶部の選択方向を、列方向から行方向に切り替えている。また、書き込み制御部13は、さらに4ライン分の画素データのライトが終わると、記憶部の選択方向を、行方向から列方向に切り替えている。
【0027】
読み出し制御部14は、列方向で記憶部を選択しての4ライン目の画素データのライト中に、行方向の4個の記憶部を選択し、1〜4ライン目の画素データのリード(並列読み出し)を開始させる。4ライン目の画素データのライト完了時には、1行目の4つの記憶部からのリードが完了する(その理由については後述する)。そのため、すぐにその行の記憶部に5ライン目の画素データをライトすることができる。これによって、読み出されていない1〜4ライン目の画素データが、5ライン目の画素データによって上書きされ破壊されることを防ぐことができる。
【0028】
また、読み出し制御部14は、行方向で記憶部を選択しての8ライン目の画素データのライト中に、列方向の4個の記憶部を選択し、画素データのリード(並列読み出し)を開始させる。8ライン目の画素データのライト完了時には、1列目の4つの記憶部からのリードが完了する。そのため、すぐにその列の記憶部に9ライン目の画素データをライトすることができる。これによって、読み出されていない5〜8ライン目の画素データが、9ライン目の画素データによって上書きされ破壊されることを防ぐことができる。
【0029】
撮像素子31の9ライン目以降の画素データに対しても同様の制御が行われる。
以上のような制御によれば、4×4個の記憶部12,12a,12bのうち、記憶部12a,12b以外の記憶部12は、ライトアクセスとリードアクセスが異なるタイミングで発生する。そのため、記憶部12には、ライトとリードを共通の端子で行う記憶装置(たとえば、1RWなどの1ポートRAM)が用いられる。一方、4の倍数ライン目の画素データの書き込み中に指定される最初のアドレスがある記憶部12a,12bは、ライトとリードを別々の端子を用いて行う記憶装置(たとえば、1R1Wなどの2ポートRAM)が用いられる。
【0030】
これにより、記憶部12,12a,12bを全て、1R1Wなどの2ポートRAMを用いる場合よりも回路面積を削減できる。並列数が多くなるほど、2ポートRAMの割合を減らせるので、回路面積の削減効果は大きい。また、前のラインのリードが完了していないにも関わらず、新たなラインのデータのライトが同じアドレス上で発生することも抑制できるので、前のラインの画素データが上書きされ破壊されてしまうことを防ぐことができる。
【0031】
以下比較例として、4画素ずつデータを受け取り4並列で処理を行う他の画像データ処理方法の例を示す。
(比較例)
図3は、並べ替え処理に用いられるRAMの例を示す図である。
【0032】
4画素ずつデータを受け取り、4並列で処理を行う際に、第1の実施の形態の画像データ処理装置10と異なり、
図3に示すように、4つのRAM40〜43を用いる場合を考える。各RAM40〜43は、撮像素子31の水平方向の1ライン分の画素データを保持する。各RAM40〜43のビット数b1は4画素分である。また、各RAM40〜43のワード数w1(1ワードは4画素分)は最大の水平方向画素サイズの1/4である。
【0033】
このようなRAM40〜43に対するライト及びリードは、たとえば、以下のようになる。
図4、
図5は、4つのRAMを用いた並べ替え処理の一例の様子を示すタイミングチャートである。
【0034】
上から、画像データ処理装置10のクロック、水平同期信号、RAM40〜43へ供給される4並列の画素データ(センサ入力IN1〜IN4)、各RAM40〜43のライト及びリード(出力)の様子が示されている。
【0035】
水平同期信号がL(Low)レベルからH(High)レベルに立ち上がると(タイミングt1)、撮像素子31の1ライン目の画素データが並列化部11で並列データとなり、
図4のようなセンサ入力IN1〜IN4としてRAM40にライトされる。なお、水平同期信号は次のクロックの立ち上がりでLレベルに立ち下がる。すなわち、水平同期信号は、1クロック周期分のパルス幅をもつパルスである。
【0036】
撮像素子31からの1ライン目の画素データのリード後、わずかなブランクを挟み水平同期信号のパルスが生成されると
(タイミングt2)、2ライン目の画素データが、並列化部11で並列データとなり、
図4のようなセンサ入力IN1〜IN4としてRAM41にライトされる。
【0037】
タイミングt3,t4でも同様に、水平同期信号のパルスが生成されると、3ライン目及び4ライン目の画素データのRAM42,43へのライトが行われる。ただし、次の5ライン目の画素データをライト可能な領域を確保するために、4ライン目の1ワード分の画素データが書き込まれた時点(タイミングt5)で、1〜4ライン目の画素データの並列読み出しが開始される。
【0038】
しかしながら、タイミングt6で、5ライン目の画素データのライトが開始されるとき、RAM40では、1ライン目の画素データのリードが完了しておらず、5ライン目の画素データによって、リードが済んでいないのに上書きされる画素データが発生する。
【0039】
タイミングt7に関しても同様に、6ライン目の画素データのライトが開始されるとき、RAM41では、2ライン目の画素データのリードが完了しておらず、6ライン目の画素データによって、リードが済んでいないのに上書きされる画素データが発生する。
【0040】
このように、4つのRAM40〜43を用いた並列データの並べ替え処理では、ライトがリードを追い越してしまうことによるデータの上書きにより、データ破壊が生じる。そのため、RAMの数を、たとえば、2つ増やすことが考えられるが、回路規模が増加する。また、この比較例のような並べ替え処理では、タイミングt4〜t6のように、ライトとリードが同時に発生するため、RAM40〜43は、1R1Wなどの2ポートRAMが用いられる。これによっても回路規模が増加する。このようなデータ破壊は、並列数が3以上になると生じやすくなる。
【0041】
これに対して、第1の実施の形態の画像データ処理装置10では、N×N個の記憶部12,12a,12bを用いて、前述したようなライト及びリードの制御を行うことで、データ破壊の発生を抑制できる。また、記憶部12a,12b以外の大部分の記憶部12に
1ポートRAMを用いることができる。そのため、並列の画素データの並べ替え時のデータ破壊の発生を小規模な回路で抑制できる。
【0042】
以下、第2の実施の形態の画像データ処理装置を説明する。
(第2の実施の形態)
図6は、第2の実施の形態の画像データ処理装置が適用される撮像装置の一例を示す図である。
【0043】
撮像装置50は、撮像部60、画像データ処理装置70を有している。
撮像部60は、レンズや反射鏡などの撮像光学系61、CCD(Charge Coupled Device)などである撮像素子62、アンプやフィルタ、ADC(Analog to Digital Converter)などを含むアナログフロントエンド
63(
図6ではAFEと表記されている)を有する。
【0044】
画像データ処理装置70は、たとえば、ISPであり、CPU(Central Processing Unit)71により各部が制御される。画像データ処理装置70は、並列データ生成/処理部72、色処理部73、他画像処理部74、表示インターフェース(以下表示I/Fと表記する)
75、メモリカードI/F76、静止画コーデック部77、DMA(Direct Memory Access)調停部78、SDRAM(Synchronous Dynamic Random Access Memory)コントローラ79を有している。また、並列データ生成/処理部72、色処理部73、他画像処理部74、表示I/F75、メモリカードI/F76、静止画コーデック部77は、DMAコントローラ72a,73a,74a,75a,76a,77aを有しており、内部バス80に接続されている。
【0045】
並列データ生成/処理部72は、撮像部60に接続されており、並列化部72b、ライン分割処理部72c、回路部72dをさらに有している。これらは、たとえば、前述した
図1の、並列化部11、ライン分割処理部20、回路部17と同様の機能を行う。回路部72dは、DMAコントローラ72aに接続されている。また、回路部72dとしては、たとえば、シェーディング補正部、欠陥画素補正部、ノイズリダクション部、AE(Auto Exposure)/AF(Auto Focus)/AWB(Auto White Balance)検波部などがある。
【0046】
色処理部73は、撮像画像の色に関する処理を行い、他画像処理部74は、その他の種々画像処理を行う。表示I/F75とメモリカードI/F76は、画像データ処理装置70と、表示デバイス83及びメモリカード82との間で情報の送受信を行う。静止画コーデック部77は、たとえば、JPEG(Joint Photographic Experts Group)など種々の符号化方式でのエンコードやデコードを行う。DMA調停部78は、DMAコントローラ72a,73a,74a,75a,76a,77aからのデータ転送の要求に対して内部バス80の使用権の調停を行う。また、DMA調整部78は、SDRAM81を制御するSDRAMコントローラ79に接続されている。なお並列化部72bは、撮像部60に含まれていてもよい。
【0047】
以下、並列データ生成/処理部72のライン分割処理部72cの一例を説明する。
(ライン分割処理部72c)
図7は、ライン分割処理部の一例を示す図である。
【0048】
ライン分割処理部72cは、RAM周辺部90、書き込み制御部91、読み出し制御部92を有している。
RAM周辺部90は、記憶領域90a、入力信号制御部90b、出力信号制御部90cを有している。記憶領域90aは、生成する並列データの並列数(N)に対応して、N×N個のRAMを有している。記憶領域90aには、並列化部72bで並列化されたN並列の画素データや、ライトアドレス(WAD)や、リードアドレス(RAD)が入力される。
【0049】
入力信号制御部90bは、書き込み制御部91と読み出し制御部92の制御のもと、行選択信号や列選択信号を生成し、N×N個のRAMのうち、読み書きを行う記憶部を選択する。
【0050】
出力信号制御部90cは、書き込み制御部91と読み出し制御部92の制御のもと、N×N個のRAMのうち適切なN個を選択し、N並列の画素データを出力し、後段の回路部72dに供給する。
【0051】
書き込み制御部91は、STATEカウント用レジスタ91a、WEN生成部91b、WADカウント用レジスタ91c、比較部91d、WCNTカウント用レジスタ91e、RSTART生成部91fを有する。
【0052】
STATEカウント用レジスタ91aは、水平同期信号HDの立ち上がり回数をカウントし、そのカウント値STATEをライト/リード状態として保持する。たとえば、並列数N=4である場合には、
図1に示したように8つのライト/リード状態があり、STATEカウント用レジスタ91aは、3ビットの値を保持する。なお、水平同期信号HDは、たとえば、撮像部60とのI/F部(図示せず)で生成される。
【0053】
WEN生成部91bは、水平同期信号HDの立ち上がりに同期してライトイネーブル信号WENをアサートする。
WADカウント用レジスタ91cは、ライトイネーブル信号WENがアサートされている間、ライトアドレスWADを、画像データ処理装置70の図示しないクロックに同期して、毎サイクルインクリメントする。
【0054】
比較部91dは、ライトアドレスWADと、選択するRAMを切り替えるアドレスの閾値RAMTHとを比較する。そして比較部91dは、ライトアドレスWADが閾値RAMTHに達すると、WCNTカウント用レジスタ91eに対するイネーブル信号をアサートするとともに、WADカウント用レジスタ91cに、ライトアドレスWADの値をリセットさせる。N=4の場合、撮像素子62の1水平方向ラインの画素データが、4つのRAMにライトされる。このとき、各RAMに対して同じコラム(列)アドレスまたはロウ(行)アドレスで4画素並列にライトされる。そのため、閾値RAMTHは、撮像素子62の最大の水平方向画素サイズの1/16の値となる。
【0055】
WCN
Tカウント用レジスタ91eは、比較部91dがイネーブル信号をアサートするごとにカウント値WCNTをインクリメントする。カウント値WCNTは、ライトが行われるRAMを示す。また、WCNTカウント用レジスタ91eは、N回ライトアドレスWADが閾値RAMTHに達すると1ライン分の書き込みが完了したことになるので、ライトイネーブル信号WENをネゲートさせる。
【0056】
RSTART生成部91fは、カウント値STATEが“0”または“N”のときにリード開始信号RSTARTを生成する。リード開始信号RSTARTは、たとえば、1ショットのパルスである。
【0057】
読み出し制御部92は、REN生成部92a、タイミング調整用カウンタ92b、AND回路92c、RADカウント用レジスタ92d、比較部92e、
RCNTカウント用レジスタ92fを有する。
【0058】
REN生成部92aは、リード開始信号RSTARTを受け取ると、リードイネーブル信号RENをアサートする。
タイミング調整用カウンタ92bは、リードイネーブル信号RENがアサートされてから図示しないクロックのNサイクルに1回アサートされ、リードイネーブル信号RENを有効にする信号“1”を送出する。これによって、読み出しのためのRAMアクセスをNサイクルに1回にするタイミングの調整が行われる。
【0059】
AND回路92cは、タイミング調整用カウンタ92bから“1”が出力されているときには、リードイネーブル信号RENの値を出力し、タイミング調整用カウンタ92bから“0”が出力されているときには、“0”を出力する。
【0060】
RADカウント用レジスタ92dは、タイミング調整用カウンタ92bが飽和するタイミング、つまり、リードイネーブル信号RENが“1”を出力するタイミングで、リードアドレスRADをインクリメントする。
【0061】
比較部92eは、リードアドレスRADと、選択するRAMを切り替えるアドレスの閾値RAMTHとを比較する。そして比較部92eは、リードアドレスRADが閾値RAMTHに達すると、RCNTカウント用レジスタ92fに対するイネーブル信号をアサートするとともに、RADカウント用レジスタ92dに、リードアドレスRADの値をリセットさせる。
【0062】
RCN
Tカウント用レジスタ92fは、比較部92eがイネーブル信号をアサートするごとにカウント値RCNTをインクリメントする。カウント値RCNTは、リードが行われるRAMを示す。また、RCNT用レジスタ92fは、N回、リードアドレスRADが閾値RAMTHに達すると読み出しが完了したことになるので、リードイネーブル信号RENをネゲートさせる。
【0063】
次に、ライン分割処理部72cのRAM周辺部90の一例を説明する。
(RAM周辺部90)
図8は、並列数N=4としたときの、RAM周辺部の一例を示す図である。
【0064】
ライトアドレスWAD、リードアドレスRAD、4並列の画素データ(入力データDI)については、全てのRAM100〜115に入力され、結線の図示は煩雑となるので省略されている。またそれぞれのRAM100〜115からの出力DO0〜15の結線の図示も省略されている。
【0065】
入力信号制御部90bは、STATEカウント用レジスタ91aの3ビットのカウント値STATEを入力する。また、入力信号制御部90bは、WCN
Tカウント用レジスタ91eの2ビットのカウント値WCNT、RCN
Tカウント用レジスタ92fの2ビットのカウント値RCNT、ライトイネーブル信号WEN、リードイネーブル信号RENを入力する。入力信号制御部90bは、これらの信号をもとに、それぞれ4ビットの、ライト用の列選択信号WSEL_C、行選択信号WSEL_L、リード用の列選択信号RSEL_C、行選択信号RSEL_Lを生成して出力する。
【0066】
ライト用の列選択信号WSEL_Cと、リード用の列選択信号RSEL_Cの最上位ビット[3]により、RAM100,104,108,112が選択され、その次のビット[2]により、RAM101,105,109,113が選択される。さらに、その次のビット[1]により、RAM102,106,110,114が選択され、最下位ビット[0]により、RAM103,107,111,115が選択される。
【0067】
また、ライト用の行選択信号WSEL_Lと、リード用の行選択信号RSEL_Lの最上位ビット[3]により、RAM100,101,102,103が選択され、その次のビット[2]により、RAM104,105,106,107が選択される。さらに、その次のビット[1]により、RAM108,109,110,111が選択され、最下位ビット[0]により、RAM112,113,114,115が選択される。
【0068】
図9は、入力信号制御部の入出力信号の関係の例を示す図である。
図9では、入力信号制御部90bへの入力(input)として、STATEカウント用レジスタ91aの3ビットのカウント値STATEが示されている。また、入力信号制御部90bからの出力(output)として、ライト及びリード用の、列選択信号WSEL_C,RSEL_C、行選択信号WSEL_L,RSEL_Lが示されている。
【0069】
たとえば、カウント値STATEが“001”のときは、ライト用の列選択信号WSEL_Cは“1000”、行選択信号WSEL_Lは、カウント値WCNTとなる。また、リード用の列選択信号RSEL_Cは、カウント値RCNT、行選択信号
RSEL_L“1111”となる。
【0070】
これによって、ライト時には、RAM100,104,108,112が、カウント値WCNTがインクリメントされるごとに順に選択される。またリード時には、RAM100〜103,104〜107,108〜111,112〜115の順で、カウント値RCNTがインクリメントされるごとに4つずつ選択される。
【0071】
なお、列選択信号WSEL_Cと、行選択信号WSEL_Lについては、ライトイネーブル信号WENとのAND論理がとられ、列選択信号RSEL_Cと、行選択信号RSEL_Lについては、リードイネーブル信号RENとのAND論理がとられて出力される。
【0072】
一方、
図8の出力信号制御部90cは、STATEカウント用レジスタ91aのカウント値STATEの最上位ビットと、RAM100〜115からの出力DO0〜DO15と、RCNTカウント用レジスタ92fのカウント値RCNTを入力する。そして出力信号制御部90cは、これらの信号をもとに、4つの並列データLINE0,LINE1,LINE2,LINE3を出力する。
【0073】
図10は、出力信号制御部の入出力信号の関係の例を示す図である。
図10では、出力信号制御部90cへの入力として、STATEカウント用レジスタ91aのカウント値STATEの最上位ビットSTATE[2]及びカウント値RCNTが示されている。また、出力信号制御部90cからの出力として、4つの並列データLINE0,LINE1,LINE2,LINE3が示されている。
【0074】
カウント値STATEの最上位ビットSTATE[2]が“0”のときは、
図9に示したように、リード用の列選択信号RSEL_Cは、カウント値RCNTとなり、行選択信号RSEL_Lは、“1111”となる。
【0075】
たとえば、カウント値RCNTが“1000”の場合には、RAM100,104,108,112が選択されることから、
図10に示すように、並列データLINE0〜LINE3は、出力DO0,DO4,DO8,DO12の値となる。
【0076】
一方、カウント値STATEの最上位ビットSTATE[2]が“1”のときは、
図9に示したように、リード用の列選択信号RSEL_Cは、“1111”となり、行選択信号RSEL_Lは、カウント値RCNTとなる。
【0077】
たとえば、カウント値RCNTが“1000”の場合には、RAM100,101,102,103が選択されることから、
図10に示すように、並列データLINE0〜LINE3は、出力DO0,DO1,DO2,DO3の値となる。
【0078】
以下、記憶領域90aの一例を説明する。
(記憶領域90a)
図11は、並列数N=4としたときの、記憶領域の例を示す図である。
【0079】
並列数N=4とした場合、RAM100〜115のうち、同一行方向または同一列方向の4つのRAMにより、撮像素子62の水平方向の1ライン分の画素データを保持する。各RAM100〜115のビット数bは4画素分である。また、各RAM100〜115のワード数w(1ワードは4画素分)は最大の水平方向画素サイズの1/16である。
【0080】
なお、
図8において、RAM103,112は、ライトアクセス中にリードアクセスが発生するRAMであるため、1R1Wの2ポートRAMが用いられるが、他のRAMについては、1RWの1ポートRAMが用いられる。
【0081】
このように、本実施の形態では、2種類のRAMが用いられるが、同様に扱えるように、たとえば、以下のようなI/Fが適用される。
図12は、1RWの1ポートRAMに用いられるRAMI/Fの一例を示す図である。
【0082】
RAMI/F120は、AND回路121,122、OR回路123、インバータ回路124、ビット連結回路125、選択回路126を有している。
AND回路121の2つの入力端子には、ライト用の列選択信号WSEL_Cと行選択信号WSEL_Lが入力される。AND回路122の2つの入力端子には、リード用の列選択信号RSEL_Cと行選択信号RSEL_Lが入力される。OR回路
123の2つの入力端子には、AND回路121,122の出力信号が入力され、OR回路
123の出力信号は、RAM100のチップイネーブル端子CEに入力される。インバータ回路124には、AND回路121の出力信号が入力され、インバータ回路124の出力信号は、RAM100のライトイネーブル端子WEに入力される。
【0083】
ビット連結回路125は、AND回路121,122の出力信号を連結して2ビットの選択信号を選択回路126に供給する。選択回路126は、ライトアドレスWADとリードアドレスRADと値“0”を入力し、入力される選択信号が“10”のときにはライトアドレスWADを出力し、選択信号が“01”のときにはリードアドレ
スRA
Dを出力する。また、選択回路126は、選択信号が“10”,“01”以外の値defのときには、“0”を出力する。選択回路126の出力信号は、RAM100のアドレス端子IAに入力される。その他、RAM100のクロック端子CKには、図示しないクロック供給部からのクロックSROCLKが入力され、ライトデータ入力端子Iには、入力データDIが入力される。また、RAM100のリードデータ出力端子Aから読み出されたリードデータは、出力信号制御部90cに供給される。
【0084】
記憶領域90aのその他の1RWの1ポートRAMについても同様のI/Fが用いられる。
図13は、1R1Wの2ポートRAMに用いられるRAMI/Fの一例を示す図である。
【0085】
RAMI/F130は、AND回路131,132、選択回路133,134を有している。
AND回路131の2つの入力端子には、ライト用の列選択信号WSEL_Cと行選択信号WSEL_Lが入力される。AND回路132の2つの入力端子には、リード用の列選択信号RSEL_Cと行選択信号RSEL_Lが入力される。AND回路131の出力信号は、RAM103のライトイネーブル端子CEIWに入力されるとともに、選択信号として選択回路133に供給される。AND回路132の出力信号は、RAM103のリードイネーブル端子CERAに入力されるとともに、選択信号として選択回路134に供給される。
【0086】
選択回路133は、ライトアドレスWADと値“0”を入力し、入力される選択信号が“1”のときにはライトアドレスWADを出力し、選択信号が“0”のときには“0”を出力する。選択回路133の出力信号は、RAM103のライトアドレス端子IWに入力される。
【0087】
選択回路134は、リードアドレスRADと値“0”を入力し、入力される選択信号が“1”のときにはリードアドレスRADを出力し、選択信号が“0”のときには“0”を出力する。選択回路134の出力信号は、RAM103のリードアドレス端子RAに入力される。
【0088】
その他、RAM103のライト用クロック端子CKIW及びリード用クロック端子CKRAには、図示しないクロック供給部からのクロックSROCLKが入力され、ライトデータ入力端子Iには、入力データDIが入力される。また、RAM103のリードデータ出力端子Aから読み出されたリードデータは、出力信号制御部90cに供給される。
【0089】
1R1Wの2ポートRAMであるRAM112についても同様のI/Fが用いられる。
図12、
図13のようなRAMI/F120,130を用いることで、異なるタイプのRAMを同じように扱うことが可能となる。
【0090】
次に、本実施の形態のライン分割処理部72cの動作を説明する。
(ライン分割処理部72cの動作)
図14は、並列データのライト処理の一例の流れを示すフローチャートである。
【0091】
書き込み制御部91のWEN生成部91bは、水平同期信号HDがHレベルであるか判定し(ステップS10)、水平同期信号HDがHレベルである場合には、ライトイネーブル信号WENをHレベル(アサート)とする(ステップS11)。これにより、以下の初期化及びモード遷移処理が開始される。
【0092】
ライトイネーブル信号WENがHレベルとなると、WADカウント用レジスタ91cは、ライトアドレスWADを“0”にリセットする(ステップS12)。その後、STATEカウント用レジスタ91aは、カウント値STATEをインクリメントし(ステップS13)、WCNTカウント用レジスタ91eは、カウント値WCNTを“0”にリセットする(ステップS14)。なお、カウント値STATEをインクリメントする度に、たとえば、
図1に示したようなライトとリードの状態が遷移する。N=4の場合には、その状態は
図1に示したように8つある。カウント値STATEが“1”のときは、左上の状態(1ライン目をライトする状態)になる。
【0093】
その後、RSTART生成部91fは、カウント値STATEが“0”か、並列数Nであるか判定し(ステップS15)、その何れかである場合には、リード開始信号RSTARTをHレベルとする(ステップS16)。たとえば、並列数N=4の場合、カウント値STATEが“4”または“0”になると、
図1に示したように4ライン目または8ライン目のライトとともに、リードが開始される。
【0094】
カウント値STATEが“0”でもNでもない場合には、ステップS18の処理が行われる。なお、ステップS10の処理において、水平同期信号HDがLレベルの場合には、RSTART生成部91fは、リード開始信号RSTARTをLレベルとし(ステップS17)、その後、ステップS18の処理が行われる。
【0095】
ステップS18の処理では、WADカウント用レジスタ91cは、ライトイネーブル信号WENがHレベルであるか否か判定する。ライトイネーブル信号WENがLレベルである場合には、ステップS10からの処理が繰り返される。ライトイネーブル信号WENがHレベルである場合には、以下のアドレス計算処理が行われる。
【0096】
ライトイネーブル信号WENがHレベルである場合、ライトが行われ、比較部91dは、ライトアドレスWADが、閾値RAMTHに達したか否かを判定する(ステップS19)。ライトアドレスWADが閾値RAMTHに達していない状態(WAD<RAMTH)である場合には、WADカウント用レジスタ91cは、ライトアドレスWADをインクリメントし(ステップS20)、ライトを継続させる。その後、ステップS10からの処理が繰り返される。
【0097】
ライトアドレスWADが閾値RAMTHに達した場合、N×N個のRAMの1つに対するライトが終わる。そのとき、WCNTカウント用レジスタ91eは、カウント値WCNTがN−1であるか否か判定する(ステップS21)。ここでは、各行または各列のN個のRAMに対して、撮像素子62の水平方向1ライン分の画素データのライトを終えたか否かが判定される。
【0098】
そして、カウント値WCNTがN−1である場合には、WCNTカウント用レジスタ91eは、WEN生成部91bにライトイネーブル信号WENをLレベルにさせる(ステップS22)。これによりライトが停止する。カウント値WCNTがN−1ではない場合には、WCNTカウント用レジスタ91eは、カウント値WCNTをインクリメントする(ステップS23)。これにより、次のRAMが選択される。ステップS22,S23の後、WADカウント用レジスタ91cは、ライトアドレスWADを“0”にリセットする(ステップS24)。その後、ステップS10からの処理が繰り返される。
【0099】
なお、上記の処理中において、たとえば、画像データ処理装置70の電源がオフになると、ライト処理が終了する。
図15は、並列データのリード処理の一例の流れを示すフローチャートである。
【0100】
読み出し制御部92のREN生成部92aは、リード開始信号RSTARTがHレベルであるか判定し(ステップS30)、リード開始信号RSTARTがHレベルである場合には、リードイネーブル信号RENをHレベルとする(ステップS31)。これにより、まず、以下の初期化処理が開始される。
【0101】
初期化処理では、RADカウント用レジスタ92dは、リードアドレスRADを“0”にリセットし(ステップS32)、RCNTカウント用レジスタ92fは、カウント値RCNTを“0”にリセットする(ステップS33)。ステップS33の処理後、またはステップS30の処理で、リード開始信号がLレベルであったときには、ステップS34の処理が行われる。
【0102】
ステップS34の処理では、RADカウント用レジスタ92dは、リードイネーブル信号RENがHレベルであるか否か判定する。リードイネーブル信号RENがLレベルである場合には、ステップS30からの処理が繰り返される。リードイネーブル信号RENがHレベルである場合には、以下のアドレス計算処理が行われる。
【0103】
リードイネーブル信号RENがHレベルである場合、比較部92eは、リードアドレスRADが、閾値RAMTHに達したか否かを判定する(ステップS35)。リードアドレスRADが閾値RAMTHに達していない状態(RAD<RAMTH)である場合には、タイミング調整用カウンタ92bは、カウント値がN−1であるか否か判定する(ステップS36)。カウント値がN−1である場合、リードを開始させるために、RADカウント用レジスタ92dは、リードアドレスRADをインクリメントし(ステップS37)、タイミング調整用カウンタ92bはカウント値をリセットする(ステップS38)。カウント値がN−1に達していない場合には、タイミング調整用カウンタ92bは、リードを開始させるタイミングを調整するためのカウント値をインクリメントする(ステップS39)。ステップS38及びステップS39の処理後は、ステップS30からの処理が繰り返される。
【0104】
リードアドレスRADが、閾値RAMTHに達した場合、1列または1行のN個のRAMのリードが完了する。このとき、RCNTカウント用レジスタ92fは、カウント値RCNTがN−1であるか否か判定する(ステップS40)。カウント値RCNTがN−1である場合には、N×N個のRAMに対するNライン分のリードが終わる。そのとき、RCNTカウント用レジスタ92fは、REN生成部92aにリードイネーブル信号RENをLレベルにさせる(ステップS41)。カウント値RCNTがN−1に達していない場合には、RCNTカウント用レジスタ92fは、カウント値RCNTをインクリメントする(ステップS42)。ステップS41及びステップS42の処理後は、RADカウント用レジスタ92dは、リードアドレスRADをリセットする(ステップS43)。その後、ステップS30からの処理が繰り返される。これにより、次の行または列のN個のRAMのリードが行われる。
【0105】
なお、上記の処理中において、たとえば、画像データ処理装置70の電源がオフになると、リード処理が終了する。
次に、並列数N=4のときの、ライン分割処理部72cによるデータの並べ替え処理の一例を示す。
【0106】
図16、
図17、
図18は、並列数N=4のときのライン分割処理部によるデータの並べ替え処理の一例の様子を示すタイミングチャートである。
上から、画像データ処理装置70のクロック、水平同期信号、ライン分割処理部72cに入力される4並列の画素データ(センサ入力IN1〜IN4)、各RAM100〜115のライト及びリードの様子が示されている。
【0107】
1クロック周期の水平同期信号のパルスが生成されると(タイミングt10)、撮像素子62から1ライン目の画素データが並列化部72bで並列データとなる。そして、
図16に示されるようなセンサ入力IN1〜IN4として、まずは列方向のRAM100,104,108,112の順に4画素ずつライトされる。
【0108】
1ライン目の16画素がライトされ、次に水平同期信号のパルスが生成されると(タイミングt11)、2ライン目の画素データが並列化部72bで並列データとなる。そして、センサ入力IN1〜IN4として、2列目のRAM101,105,109,113の順に4画素ずつライトされる。
【0109】
タイミングt12でも同様に、水平同期信号のパルスが生成されると、3ライン目の画素データが、3列目のRAM102,106,110,114の順に4画素ずつライトされる。
【0110】
タイミングt13において、水平同期信号のパルスが生成されると、4ライン目の画素データが、4列目のRAM103,107,111,115の順に4画素ずつライトされるが、1ワード目のライトが完了した時点でリードが開始される(タイミングt14)。
【0111】
タイミングt14から開始されるリードは、行方向の4個のRAM100〜103が同時に選択され、タイミングt14までの間にライトされた画素データが並列にリードされる。
【0112】
タイミングt15からは、ライト時のRAMの選択方向が列方向から行方向に変わる。タイミングt15において、水平同期信号のパルスが生成されると、5ライン目の画素データが、リードが完了した1行目のRAM100〜103に順にライトされる。また、1行目のRAM100〜103からのリードが完了すると、連続して2行目のRAM104〜107からのリード、3行目のRAM108〜111からのリード、4行目のRAM112〜115からのリードが行われる。
【0113】
タイミングt16において、水平同期信号のパルスが生成されると、6ライン目の画素データが、リードが完了した2行目のRAM104〜107に順にライトされる。同様に、タイミングt17において、水平同期信号のパルスが生成されると、7ライン目の画素データが、リードが完了した3行目のRAM108〜111に順にライトされる。
【0114】
タイミングt18において、水平同期信号のパルスが生成されると、8ライン目の画素データが、リードが完了した4行目のRAM112〜115に順にライトされる。また、1ワード目のライトが完了した時点でリードが開始される(タイミングt19)。
【0115】
タイミングt19から開始されるリードは、RAMの選択方向が行方向から列方向に変わり、まず、列方向の4個のRAM100,104,108,112が同時に選択され、タイミングt19までの間にライトされた画素データが並列にリードされる。
【0116】
一方、4行目のRAM112〜115に対するライトが完了し、次に、タイミングt20において、水平同期信号のパルスが生成されると、9ライン目の画素データが、リードが完了した1列目のRAM
100,104,108,112に順にライトされる。つまり、ライトされるRAMの選択方向が、行方向から列方向に変わる。
【0117】
なお、RAM100,104,108,112のリードが完了すると、連続して2列目のRAM101,105,109,113のリードが行われる。
以降も同様のライト及びリードが行われる。
【0118】
このような処理により、ラスタ走査順ではなく飛び飛びの順序であった各並列データ(センサ入力IN1〜IN4)のデータの順序が並び変えられる。そして、それぞれがラスタ走査順のデータ並びとなる4つの並列データLINE0,LINE1,LINE2,LINE3として出力される。
【0119】
以上説明してきた、画像データ処理装置70及び画像データ処理方法によれば、撮像素子62からリードされるデータをN(≧2)並列で処理することができるため、撮像素子62の動作周波数の1/Nで処理が可能となる。
【0120】
また、並列数N=4としても、
図16〜
図18に示したように、4つのRAMのリードが完了してからそのRAMに対するライトが行われるため、リードが完了していないにも関わらず、データを上書きしてしまうということがない。
【0121】
なお、
図16〜
図18などでは、撮像素子62からのリードにおいて、ラインとラインの間の期間(ブランク)を、最小の1サイクル(クロック1周期分)として説明したが、実際の撮像素子62からのリードでは、数10サイクル以上のブランクが含まれる。リードは一度スタートすると各ラインのライトタイミングに関係なく、
図16〜
図18に示したように水平画素サイズ分のサイクルをかけて一気に行われる。ブランクのサイクル数によっては、
図16〜
図18に示したよりも早いタイミングでリードが完了するが、最小のブランクでも
図16〜
図18に示したように、ライトがリードを追い越すことはないのでデータの上書きによる破壊は起こらない。
【0122】
また、たとえば、N=4のときは、
図8、
図11などに示したように4×4のRAM100〜115は、4ライン分の画素データを保持できる容量をもつ。そのため、データ破壊を回避するために、6ライン分の画素データを保持するようなRAMを用いる場合よりもRAM容量の増加を抑えられる。
【0123】
また、
図16〜
図18に示したように、RAM103とRAM112以外のRAMでは、ライトとリードが独立して行われている。RAM103とRAM112は、ライトアクセスの際にリードアクセスが生じるため、1R1Wのような2ポートRAMが用いられるが、その他のRAMには1RWのような1ポートRAMを用いることができる。1ポートRAMは、2ポートRAMに比べて面積がかなり小さいため、面積の増加を抑えることができる。
【0124】
なお、
図16〜
図18では、リードは4,8ライン目のライトに対して、1サイクル遅れて開始されているが、数サイクル遅れて開始されることも考えられる。その場合、たとえば、リードが、
図17に示したタイミングt15で終了せず、RAM103,112以外でもライトとリードの同時アクセスが発生する可能性がある。しかし、前述したブランクがライトとリードの開始タイミングのずれ分のサイクル数よりも大きければ、そのようなRAMのライトとリードの同時アクセスは発生しない。ライトとリードの開始タイミングのずれは1ワード分のライトを待つだけの数サイクル分である(
図16〜
図18では1サイクル分)。もともと他の回路での処理のために、ブランクは数10サイクルである。
【0125】
このため、RAM103,112以外のRAMではライトとリードの同時アクセスは発生しないものとすることができる。
このように、本実施の形態の画像データ処理装置70及び画像データ処理方法によれば、小規模な回路で画素データを適切に並列化できる。
【0126】
RAMに関してはプロセスによりサイズが異なるが、一例として65nmテクノロジー、水平方向最大サイズ=6784画素、1画素=14ビットとしたとき、1ライン分の1R1Wの容量は7Mバイトである。たとえば、2並列処理を行う場合に、2ライン分の1R1WのRAMを用いると、7×2=14Mバイトの容量となる。4並列処理を行う場合に、データ破壊を
回避するために、6ライン分の画素データを保持するように、1R1WのRAMを6つ使用すると、7×6=42Mバイトの容量となる。
【0127】
これに対し、本実施の形態の画像データ処理装置70において4並列処理を行う場合、RAM100〜115は、それぞれ1/4ライン分の画素データを保持し、容量は1R1WのRAMで1.7Mバイト、1RWのRAMで0.9Mバイトとなる。前述したように16個のRAM100〜115のうち、RAM103,112以外は、1RWのRAMを適用できるので、トータルの容量は、1.7×2+0.9×14=16Mバイトとなる。このように、1R1WのRAMを6つ使用する場合よりも大幅に、RAM容量を削減でき、面積を小さくすることができる。また、2並列処理を行うために、2ライン分の1R1WのRAMを使う場合に対しても、4並列処理を行っても、本実施の形態の画像データ処理装置70によれば
14%の容量増加に抑えることができる。
【0128】
以上、実施の形態に基づき、本発明の画像データ処理装置及び画像データ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【0129】
たとえば、上記では、N並列処理の例として、主にN=4の場合について説明したが、N=2,3でもN≧5でも同様に、本発明を適用できる。
以下にN=3の場合、すなわち画像データ処理装置70が3画素ずつデータを受け取り3並列で処理を行う際の、ライン分割処理部72cにおける画素データのライトとリードの制御例を説明する。
【0130】
図19は、3×3個のRAMに対するライトとリードの制御例を示す図である。
図19には、3×3個のRAMに対してライトまたはリードが行われる6つの状態の例が示されている。状態は、前述したカウント値STATEの値で表されている。
【0131】
3×3個のRAM150の各列または各行の3つのRAM150により、撮像素子62の1ライン分の画素データが保持できる。
書き込み制御部91は、3×3個のRAM150から、列方向にRAM150を順に選択して、並列化部72bから3画素ずつ並列に入力される画素データを書き込ませる。これにより、まずは撮像素子62の水平方向の読み出しラインの画素データが、1ライン目から順に、列方向に選択されたRAM150にライトされる。
【0132】
そして、書き込み制御部91は、3ライン分の画素データのライトが終わると、RAM150の選択方向を、列方向から行方向に切り替えている。また、書き込み制御部91は、さらに3ライン分の画素データのライトが終わると、RAM150の選択方向を、行方向から列方向に切り替える。
【0133】
読み出し制御部92は、列方向でRAM150を選択しての3ライン目の画素データのライト中(STATE=3)に、行方向の3個のRAM150を選択し、1〜3ライン目の画素データのリードを開始させる。3ライン目の画素データのライト完了時には、1行目の3つのRAMからのリードを完了させる。そのため、すぐにその行のRAM150に4ライン目の画素データをライトすることができる。
【0134】
また、読み出し制御部92は、行方向でRAM150を選択しての6ライン目の画素データのライト中(STATE=0)に、列方向の3個のRAM150を選択し、画素データのリードを開始させる。6ライン目の画素データのライト完了時には、1列目の3つのRAM150からのリードが完了する。そのため、すぐにその列のRAM150に7ライン目の画素データをライトすることができる。
【0135】
撮像素子62の7ライン目以降の画素データに対しても同様の制御が行われる。
以上のような制御によれば、3×3個のRAM150のうち、カウント値STATE=3,0でライトアクセスとリードアクセスが同じタイミングで行われるRAM150a,150b以外のRAM150は、ライトとリードが異なるタイミングで行われる。そのため、RAM150a,150b以外のRAM150は、1RWなどの1ポートRAMを用いることができるため、回路面積を小さくできる。また、前のラインのリードが完了していないにも関わらず、新たなラインのデータのライトが同じアドレス上で発生することも抑制できるので、前のラインの画素データが上書きされてしまうことを防ぐことができる。