以下、本発明を実施するための最良の形態について、図面を参照して説明する。
〔第1の実施の形態〕
図1は、本発明の第1の実施の形態に係るレジスタ設定制御装置の構成を示すブロック図である。本レジスタ設定制御装置は、撮像装置および画像表示装置を制御する制御レジスタを含むレジスタ群に対してレジスタ設定を行う制御装置である。
図1において、CPU101は、CPUインタフェース(IF)回路102に対して、信号request(以下「信号req」という)、信号acknowledge(以下「信号ack」)、10ビットの信号address(以下「信号addr」)、32ビットのデータ信号(以下「32ビット信号data」という)を出力する。これらの各信号は、撮像装置および画像表示装置を制御する制御装置に含まれる回路Aのレジスタ群112、回路Bのレジスタ群113、回路Cのレジスタ群114に対してレジスタ設定値を書き込むために使用される。
信号reqは、レジスタ設定値の書き込みを要求する信号、信号ackは、レジスタ設定値の書き込み完了を信号reqの送信元に通知する信号、信号addrは、レジスタ設定値が書き込まれるべきレジスタのアドレスを示す信号、信号dataは、レジスタに書き込まれるべきレジスタ設定値を示す信号である。
図2は、信号addrのビット割り当てを示す図である。以下、図2を参照しながら、図1に示すレジスタ設定制御装置を説明する。
CPU101からCPUIF回路102へ送信される信号addrは10ビットで構成される(図2(A))。CPUIF回路102では、FIFOセレクタ103(第1の選択部)が、信号addrのビット9−8を参照して、ビット9−8が“00”ならば、信号addrの下位8ビットを信号addr’(図2(B))としてデータセレクタ110へ送信し、同様に、“01”ならばFIFO(a)108(第1の送信先、一時記憶部)へ、“10”ならばFIFO(b)109(第1の送信先、一時記憶部)へ送信する。
アドレスデコーダ111は、後述するように、信号addrの下位8ビットからなる信号addr’を受信し、該信号addr’のビット7−4を参照して、ビット7−4が“0000”ならば、信号addr’の下位4ビットを信号addr’’(図2(C))として回路Aのレジスタ群112へ送信し、同様に、“0001”ならば回路Bのレジスタ群113へ、“0010”ならば回路Cのレジスタ群114へ送信する。4ビットからなる信号addr’’は、レジスタアドレスを示す。
図1において、信号req、ack、addr、dataは、CPU101とCPUIF回路102内のFIFOセレクタ103との間でバスを経由して送受信される。
FIFOセレクタ103は、前述したように、信号addrのビット9−8の内容に応じて、信号req、ack、addr’、dataの送信先を選択する。すなわち、CPU101から回路A,B、Cのレジスタ群112〜114に対して直接、レジスタ設定を行う場合は、信号addrのビット9−8が“00”であり、データセレクタ110(第1の送信先、第2の選択部)を選択する。FIFO(a)108またはFIFO(b)109にレジスタ設定値を一時保持して、所定のタイミングで回路A,B、Cのレジスタ群112〜114に対して一斉にレジスタ設定を行う場合は、信号addrのビット9−8が“01”または“10”であり、FIFO(a)108またはFIFO(b)109を選択する。
図3は、FIFOセレクタ103の内部構成を示す回路図である。
FIFOセレクタ103はAND論理素子103a〜103fを備え、CPU101からの信号addrのビット9,8の信号がAND論理素子103a〜103cの各両入力端子に入力され、AND論理素子103a〜103cの各出力端子がAND論理素子103d〜103fの各一方入力端子に接続される。AND論理素子103d〜103fの各他方入力端子には、CPU101からの信号reqが入力される。AND論理素子103d〜103fの各出力端子は、データセレクタ110、FIFO(a)108、FIFO(b)109の各req端子に接続される。CPU101からの信号addrの下位7−0ビットの信号は、信号addr’としてデータセレクタ110、FIFO(a)108、FIFO(b)109に送信される。CPU101からの32ビットの信号dataもデータセレクタ110、FIFO(a)108、FIFO(b)109に送信される。
そうした構成において、信号addrのビット9−8が“00”である時、CPU101からの信号reqがデータセレクタ110のみに送信され、データセレクタ110のみが、信号addrのビット7−0からなる信号addr’と信号dataとを読み込む。
信号addrのビット9−8が“01”である時は、信号reqがFIFO(a)108のみに送信され、FIFO(a)108のみが、信号addr’と信号dataとを読み込み、これらの信号がFIFO(a)108に保持される。
信号addrのビット9−8が“10”である時は、信号reqがFIFO(b)109のみに送信され、FIFO(b)109のみが、信号addr’と信号dataとを読み込み、これらの信号がFIFO(b)109に保持される。
図1において、垂直同期信号発生器SSG(a)117、更新パルス生成回路(a)104、及びFIFO(a)108で構成される経路は、撮像のための経路であり、垂直同期信号発生器SSG(b)118、更新パルス生成回路(b)105、及びFIFO(b)109で構成される経路は、表示駆動のための経路である。垂直同期信号発生器SSG(a)117及び垂直同期信号発生器SSG(b)118は、水晶振動子(a)119及び水晶振動子(b)120によってそれぞれ独立に駆動する。垂直同期信号発生器SSG(a)117から撮像系の垂直同期信号VD(a)115が出力され、垂直同期信号発生器SSG(b)118から表示駆動系の垂直同期信号VD(b)116が出力される。垂直同期信号VD(a)115は更新パルス生成回路(a)104へ送信され、垂直同期信号VD(b)116は更新パルス生成回路(b)105へ送信される。
更新パルス生成回路(a)104は、垂直同期信号発生器SSG(a)117より送信された垂直同期信号VD(a)115に同期した更新パルス(a)106を生成し、FIFO(a)108へ送信する。更新パルス(a)106は、後述のVブランキング期間(非表示期間)において発生される。
更新パルス生成回路(b)105は、垂直同期信号発生器SSG(b)118より送信された垂直同期信号VD(b)116に同期した更新パルス(b)107を生成し、FIFO(b)109へ送信する。更新パルス(b)107は、Vブランキング期間において発生される。
更新パルス(a)106は例えば、回路A〜Cのうち最後に動作終了する回路Cの動作終了が検出されて、FIFO(a)108に送信される。一方、更新パルス(b)107は、垂直同期信号発生器SSG(b)118から送信された垂直同期信号VD(b)116に同期するカウンタを用いてレジスタ設定のタイミングが特定されることによって、FIFO(b)109に送信される。
図1のFIFO(a)108及びFIFO(b)109の、FIFOセレクタ103から信号reqを受信した方は、信号data及び信号addr’を格納し、信号ackをFIFOセレクタ103へ送信する。
FIFO(a)108,FIFO(b)109に更新パルス(a)106,更新パルス(b)107がそれぞれ送信されると、FIFO(a)108,FIFO(b)109は、データセレクタ110へ信号reqをそれぞれ送信するとともに、蓄積されていた信号data及び信号addr’をデータセレクタ110へそれぞれに送信する。これらを受信したデータセレクタ110は、信号ackをFIFO(a)108,FIFO(b)109へ送信する。
図4は、データセレクタ110が信号req、信号data及び信号addr’を受信するタイミングを示すタイミングチャートである。
FIFO(a)108及びFIFO(b)109からレジスタ設定を行う場合は、回路A、回路B、回路Cの動作中にCPU101からFIFOセレクタ103を経由して信号reqがFIFO(a)108及びFIFO(b)109へ送信される。これにより、CPU101からFIFOセレクタ103を経由して送信された信号data及び信号addr’がFIFO(a)108及びFIFO(b)109へ書き込まれる。そして、Vブランキング期間(撮像素子から有効な映像信号が出力されない期間)に更新パルス(a)106または更新パルス(b)107がFIFO(a)108またはFIFO(b)109へ送信されると、FIFO(a)108またはFIFO(b)109は、信号req、格納していた信号data及び信号addr’をデータセレクタ110へ送信する。
また、CPU101から画像表示装置における表示画像や撮像装置における読み出し映像信号に影響を与えるレジスタに対して直接レジスタ設定を行う場合は、画像表示装置のVブランキング期間や撮像装置のブランキング期間にCPU101がFIFOセレクタ103を介して、信号req、信号data及び信号addr’をデータセレクタ110へ送信する。
むろん、画像表示装置における表示画像や撮像装置における読み出し映像信号に影響を与えないレジスタに対してはCPU101は必要に応じて随時FIFOセレクタ103を介して、信号req、信号data及び信号addr’をデータセレクタ110へ送信する。
次に、データセレクタ110のアービトレーション(複数のレジスタ設定要求に対する調停)について、図5及び図6を参照して説明する。
図5は、CPU101、FIFO(a)108、FIFO(b)109からレジスタ設定値情報を受信したときのデータセレクタ110の受信調停処理の様子を示すタイミングチャートである。
レジスタ設定の優先順位は、CPU101>FIFO(a)108>FIFO(b)109とする。
タイミングt0において、更新パルス生成回路(a)104から更新パルス(a)106がFIFO(a)108へ送信される。
タイミングt1において、FIFO(a)108から信号req、信号data及び信号addr’がデータセレクタ110に送信され、タイミングt2において、データセレクタ110は信号data及び信号addr’を読み込み、FIFO(a)108へ信号ackを返し、タイミングt3において信号reqが低レベルになる。
次にタイミングt4において、データセレクタ110がFIFO(a)108からの信号reqを受信している際に、更新パルス生成回路(b)105から更新パルス(b)107がFIFO(b)109に送信された場合、タイミングt5において、FIFO(b)109はデータセレクタ110に信号req、data、addr’を送信する。しかし、FIFO(b)109よりもFIFO(a)108が優先されるため、データセレクタ110は、FIFO(b)109からの信号reqを受け付けない。
その後、データセレクタ110は、タイミングt8においてFIFO(a)108からの信号reqが停止した後、タイミングt9においてFIFO(b)109からの信号reqを受信し、タイミングt10において信号data、addr’を読み込み、FIFO(b)109へ信号ackを返す。
タイミングt14において、データセレクタ110がFIFO(b)109からの信号reqを受信している際に、CPU101からの信号reqを受信した場合、CPU101からのレジスタ設定が最優先であるため、データセレクタ110は、タイミングt15においてFIFO(b)109ではなくCPU101からの信号reqを受信し、タイミングt17においてCPU101からの信号data、addr’を読み込み、FIFOセレクタ103へ信号ackを送信する。なお、タイミングt14においてCPU101からの信号reqを受信してからタイミングt17において信号ackを返信するまでに数クロック要するのは、CPU101からレジスタまでに数段の回路を経由して信号data、addr’が送信されるためである。
タイミングt17においてCPU101からの信号data、addr’の受信を終了すると、データセレクタ110は、タイミングt18でFIFO(b)109からの信号data、addr’の受信を再開する。FIFO(b)109からの信号reqは継続してデータセレクタ110へ送信されており、タイミングt19においてデータセレクタ110はFIFO(b)109からの信号data、addr’を読み込み、その後FIFO(b)109へ信号ackを送信する。
以降、データセレクタ110は、FIFO(b)109に残っている信号data、addr’を読み込み、その後、FIFO(b)109に信号ackを返信する。
図1に戻って、データセレクタ110は、FIFOセレクタ103、FIFO(a)108、またはFIFO(b)109から信号data、addr’を受信すると、信号write command(以下「信号wr_cmd」という)と信号data、addr’とをアドレスデコーダ111へ送信する。
図6は、上記のような受信調停処理を行うデータセレクタ110の内部構成を示す回路図である。
図6におけるレジスタ設定の優先順位は、図5における優先順位と同じであり、FIFOセレクタ103(CPU101)>FIFO(a)108>FIFO(b)109であるとする。
データセレクタ110は、図6に示すような論理回路で構成されるので、FIFOセレクタ103及びFIFO(a)108の信号reqが低レベルの時、FIFO(b)109の信号reqが高レベルであれば、FIFO(b)109の信号reqが、信号wr_cmdとしてアドレスデコーダ111へ送信され、アドレスデコーダ111は、FIFO(b)109からの信号data,addr’を受信する。
また、FIFOセレクタ103の信号reqが低レベルであり、FIFO(a)108の信号reqが高レベルの時、FIFO(b)109からの信号reqの出力の有無に関わらず、FIFO(a)108の信号reqが、信号wr_cmdとしてアドレスデコーダ111へ送信され、アドレスデコーダ111は、FIFO(a)108からの信号data,addr’を受信する。
また、FIFOセレクタ103の信号reqが高レベルの時、FIFO(a)108及びFIFO(b)109からの信号reqの出力の有無に関わらず、FIFOセレクタ103の信号reqが、信号wr_cmdとしてアドレスデコーダ111へ送信され、アドレスデコーダ111は、FIFOセレクタ103からの信号data,addr’を受信する。
図7は、アドレスデコーダ111の内部構成を示す回路図である。
図2を参照して前述したように、アドレスデコーダ111は、信号addr’のビット7−4を参照する。信号addr’のビット7−4が“0000”である時、回路Aのレジスタ群112を送信先として選択し、“0001”である時、回路Bのレジスタ群113を選択し、“0010”である時、回路Cのレジスタ群114を選択する。
図7において、アドレスデコーダ111は、AND論理素子111a〜111fを備え、データセレクタ110から送信された8ビットの信号addr’のうちビット7−4の各ビット信号をAND論理素子111a〜111cの各4入力端子に入力する。信号addr’のうちビット3−0の信号は、信号addr’’として回路A,B,Cのレジスタ群112〜114へ送信される。AND論理素子111a〜111cの各出力端子は、AND論理素子111d〜111fの各一方入力端子に接続し、AND論理素子111d〜111fの各他方入力端子にはデータセレクタ110から信号wr_cmdが入力される。データセレクタ110からの信号dataは、回路A,B,Cのレジスタ群112〜114へ送信される。
こうした構成のアドレスデコーダ111では、信号addr’のビット7−4が“0000”である時、信号wr_cmdがAND論理素子111dから回路Aのレジスタ群112に出力され、これによって、回路Aのレジスタ群112が信号data,addr’’を読み込む。
また、信号addr’のビット7−4が“0001”である時、信号wr_cmdがAND論理素子111eから回路Bのレジスタ群113に出力され、これによって、回路Bのレジスタ群113が信号data,addr’’を読み込む。
また、信号addr’のビット7−4が“0010”である時、信号wr_cmdがAND論理素子111fから回路Cのレジスタ群114に出力され、これによって、回路Cのレジスタ群114が信号data,addr’’を読み込む。
図1に戻って、回路Aのレジスタ群112、回路Bのレジスタ群113、回路Cのレジスタ群114は、信号wr_cmdをそれぞれ受信すると、信号addr’’のビット3−0が示すレジスタアドレスに信号dataを書き込み、これによってレジスタ設定が行われる。
以上のように、第1の実施の形態では、CPUIF回路102を図1に示すように構成して、回路A〜Cのレジスタ群112〜114に対するレジスタ設定値を一時格納する複数のFIFO(a)108,FIFO(b)109をCPUIF回路102内に設置し、表示期間に送られたレジスタ設定値を、信号addrのビットデータを参照することによりFIFO(a)108,FIFO(b)109に一時保持し、その後のVブランキング期間(非表示期間)において、CPU101から直接送られたレジスタ設定値と、FIFO(a)108,FIFO(b)109で一時保持されたレジスタ設定値とを用いて、所定の優先順位に従い、順次レジスタ設定を行う。これにより、回路規模を増大させることなく、Vブランキング期間(非表示期間)内において、指定したタイミングで一斉に高速にレジスタ設定(更新)を行うことができる。
〔第2の実施の形態〕
上記第1の実施の形態では、図8のメモリマップに示すように、回路A〜Cのレジスタ群112〜114の全体からなるメモリ空間において、10ビットのアドレス(addr)のビット9−8が“11”であるメモリは使用されていない。また、ビット9−8が“00”、“01”及び“10”のそれぞれにおいて、ビット7−0が“00110000”から“11111111”までのアドレスのメモリは使用されていない。
そこで第2の実施の形態では、図9のメモリマップに示すように、メモリ空間のアドレス(addr2)を8ビットで構成し、ビット7−4が“0000”、“0001”、“0010”である場合は、CPUから直接レジスタ設定を行い、“0011”である場合は、FIFO(a)からレジスタ設定を行い、また“0100”である場合は、FIFO(b)からレジスタ設定を行うようにする。
図10は、第2の実施の形態に係るレジスタ設定制御装置の構成を示すブロック図である。
第2の実施の形態では、CPUIF回路302内に、第1の実施の形態におけるFIFOセレクタ103に相当する回路が存在せず、CPU301は、CPUIF回路302のデータセレクタ309に、信号req2、信号ack2、32ビットの信号data2または信号data2’、8ビットの信号addr2を送信し、データセレクタ309から信号ack2を送信する。
第2の実施の形態でも、第1の実施の形態と同様に、回路A〜Cのレジスタ群311〜313に対して行われるべきレジスタ設定が、CPU301から直接行われる場合と、FIFO(a)307及びFIFO(b)308から行われる場合とがある。
図11は、FIFO(a)307及びFIFO(b)308からレジスタ設定する場合に、CPU301から出力される各信号の出力タイミングを示すタイミングチャートである。
FIFO(a)307及びFIFO(b)308からレジスタ設定する場合において、回路A、回路B、及び回路Cの動作中に、CPU301から、信号addr2’’及び信号data2’からなる信号data2が送信される。信号addr2’’及び信号data2’は一組のレジスタ設定値情報であり、信号addr2’’はレジスタアドレスを示し、信号data2’はレジスタに書き込まれるべき値である。
まず、信号req2の第1回目の高レベルにおいて信号addr2’’が送信され、その直後の信号req2の第2回目の高レベルにおいて信号data2’が送信される。こうした2回の送信が、FIFO(a)307及びFIFO(b)308に対応して各2回行われる。図9に示すメモリマップによれば、図11に示す信号req2の4回の高レベルのうち、最初の2回はFIFO(a)307に対応して行われ、後の2回はFIFO(b)308に対応して行われる。
CPU301からの信号addr2’’及び信号data2’の直接の送信先はデータセレクタ309であり、データセレクタ309は、信号addr2’’及び信号data2’の各受信を完了する度に、CPU301へ信号ack2を返信する。
また同時に、8ビットの信号addr2がCPU301から送信される。信号addr2のビット0が“0”である場合、信号addr2’’がFIFO(a)307またはFIFO(b)308に格納され、“1”である場合、信号data2’がFIFO(a)307またはFIFO(b)308に格納される。
図12は、CPU301から直接レジスタ設定を行う場合に、CPU301から出力される各信号の出力タイミングを示すタイミングチャートである。
CPU301から直接レジスタ設定を行う場合には、信号req2の高レベルにおいてCPU301から各回路のレジスタ群の1つへ書き込まれるべき信号data2’が送信される。
また同時に、信号data2’を書き込むべき各回路のレジスタのアドレスを示す信号addr2が送信される。
図13は、CPU301から送信される8ビットの信号addr2及び信号addr2’’のビット割り当てを示す図である。以下、図13を参照しながら、図10に示すレジスタ設定制御装置を説明する。
図10に示すアドレスデコーダ310は、CPU301から直接レジスタ設定を行う場合には、信号addr2のビット7−4を参照して、信号addr2のビット3−0を信号addr2’として、回路A〜Cのレジスタ群311〜313へ送信する。すなわち、信号addr2のビット7−4が“0000”であれば回路Aのレジスタ群311へ、“0001”であれば回路Bのレジスタ群312へ、“0010”であれば回路Cのレジスタ群313へ送信する。同時に信号data2’も送信する。
また、アドレスデコーダ310は、FIFO(a)307及びFIFO(b)308からレジスタ設定する場合においては、信号addr2’’および信号data2’を、信号addr2のビット7−4が“0011”であればFIFO(a)307へ、“0100”であればFIFO(b)308へ送信する。
また、アドレスデコーダ310は、FIFO(a)307及びFIFO(b)308からレジスタ設定する場合においては、FIFO(a)307及びFIFO(b)308に一時格納されていた信号addr2’’のビット7−4を参照して、信号addr2’’のビット3−0を信号addr2’’’として、回路A〜Cのレジスタ群311〜313へ送信する。すなわち、信号addr2’’のビット7−4が“0000”であれば回路Aのレジスタ群311へ、“0001”であれば回路Bのレジスタ群312へ、“0010”であれば回路Cのレジスタ群313へ送信する。同時に信号data2’も送信する。
すなわち、信号addr2のビット7−4は、CPU301から直接レジスタ設定を行う場合、回路A〜Cのレジスタ群311〜313のいずれかを選択するアドレスを示し、各FIFOからレジスタ設定を行う場合は、FIFO(a)またはFIFO(b)を選択するアドレスを示す。
信号addr2’は信号addr2のビット3−0であり、CPU301から直接レジスタ設定を行う場合、各回路のレジスタアドレスを示し、また各FIFOからレジスタ設定を行う場合はFIFOアドレスを示す。
信号addr2’’は、各FIFOの各回路のレジスタアドレスであり、ビット7−4は、回路A〜Cのレジスタ群311〜313のいずれかを選択するアドレスを示す。
信号addr2’’’は信号addr2’’のビット3−0であり、各回路のレジスタアドレスを示す。
次に、図10を参照して、CPU301から直接レジスタに信号data2’を書き込む場合におけるレジスタ設定制御装置の動作を説明する。
CPU301から直接レジスタ設定を行う場合においては、CPU301とデータセレクタ309とが、信号req2、信号ack2、信号addr2、信号data2’を送受信する。
図14は、データセレクタ309の内部構成を示す回路図である。
データセレクタ309は、図14に示すような論理回路で構成される。この構成は、図6に示す第1の実施の形態におけるデータセレクタ110の構成と同一である。
CPU301から直接レジスタ設定を行う場合において、レジスタ設定の優先順位がCPU301>FIFO(a)307>FIFO(b)308であるならば、データセレクタ309の動作は、第1の実施の形態におけるデータセレクタ110の動作と同じであり、データセレクタ309からアドレスデコーダ310へ、信号wr_cmd2、信号data2’、及び信号addr2が送信される。
図15は、アドレスデコーダ310の内部構成を示す回路図である。
アドレスデコーダ310は、データセレクタ309から送信された信号addr2のビット7−4を参照して、信号addr2のビット3−0からなる信号addr2’と、信号data2’の送信先を選択する。
CPU301から直接レジスタ設定を行う場合は、信号addr2のビット7−4が“0000”、“0001”、または“0010”となっており、アドレスデコーダ310は、信号addr2のビット7−4が“0000”であるならば回路Aのレジスタ群311を、“0001”であるならば回路Bのレジスタ群312を、“0010”であるならば回路Cのレジスタ群313を選択する。
これにより、信号addr2のビット7−4が“0000”である時、回路Aのレジスタ群311において、信号wr_cmd2が入力されると、信号addr2’の示すアドレスに信号data2’が書き込まれる。
また、信号addr2のビット7−4が“0001”である時、回路Bのレジスタ群312において、信号wr_cmd2が入力されると、信号addr2’の示すアドレスに信号data2’が書き込まれる。
また、信号addr2のビット7−4が“0010”である時、回路Cのレジスタ群313において、信号wr_cmd2が入力されると、信号addr2’の示すアドレスに信号data2’が書き込まれる。
次に、FIFO(a)307またはFIFO(b)308からレジスタ設定を行う場合における図10に示すレジスタ設定制御装置の動作を説明する。
FIFO(a)307またはFIFO(b)308からレジスタ設定を行う場合には、図9に示すように、CPU301より送信されるメモリ空間のアドレス値addr2のビット7−4は、“0011”または“0100”となっており、図15のアドレスデコーダ310は、FIFO(a)307またはFIFO(b)308を選択する。
すなわち、信号addr2のビット7−4が“0011”である時、FIFO(a)307に信号wr_cmd2、信号data2’、及び信号addr2’’が送信される。
信号addr2のビット7−4が“0100”である時、FIFO(b)308に信号wr_cmd2、信号data2’、及び信号addr2’’が送信される。
この時、図11に示すように、CPU301からデータバスを通って信号data2として送信される値は、各回路のレジスタアドレスを示す信号addr2’’及びレジスタに書き込むべき値を示す信号data2’であり、信号addr2’’及び信号data2’は、アドレスデコーダ310から送信される信号wr_cmd2の2回の高レベルで各FIFOへ書き込まれる。
また、図9に示すように、信号addr2’’及び信号data2’をFIFO内において隣同士のアドレスに格納するため、図11に示すように、信号addr2’’を格納する各FIFOのアドレスを示す信号addr2のビット0を“0”、信号data2を格納する各FIFOのアドレスを示す信号addr2のビット0を“1”と定める。
各FIFOでは、1回目の信号wr_cmd2を受信すると、ビット0が“0”である信号addr2を参照し、指定されたFIFOアドレスに、データバスで送信された信号addr2’’を格納する。
また各FIFOでは、2回目の信号wr_cmd2を受信すると、ビット0が“1”である信号addr2を参照し、信号addr2’’の隣のFIFOアドレスに、データバスで送信された信号data2’を格納する。
第1の実施の形態と同様に、更新パルス生成回路(a)303が、SSG(a)316より受信する撮像系の垂直同期信号VD(a)314に同期した更新パルス(a)305を生成し、この更新パルス(a)305のタイミングで、FIFO(a)307に格納された信号addr2’’及び信号data2’が、データセレクタ309へ送信される。
また、やはり第1の実施の形態と同様に、更新パルス生成回路(b)304が、SSG(b)317より受信する表示系の垂直同期信号VD(b)315に同期した更新パルス(b)306を生成し、この更新パルス(b)306のタイミングで、FIFO(b)308に格納された信号addr2’’及び信号data2’が、データセレクタ309へ送信される。
図14に示すように、データセレクタ309は、予め設定されたレジスタ設定の優先順位CPU301>FIFO(a)307>FIFO(b)308に従って、FIFO(a)307及びFIFO(b)308からそれぞれ送信された信号req2のタイミングで、FIFO(a)307及びFIFO(b)308にそれぞれ格納されていた信号addr2’’及び信号data2’をアドレスデコーダ310へそれぞれ送信する。
アドレスデコーダ310は、FIFO(a)307及びFIFO(b)308にそれぞれ格納されていた信号addr2’’及び信号data2’を受信すると、信号addr2’’の値を参照する。
この場合の信号addr2’’のビット7−4は、図9に示すように、“0000”、“0001”、または“0010”であり、アドレスデコーダ310はこれに応じて、回路Aのレジスタ群311、回路Bのレジスタ群312、または回路Cのレジスタ群313を選択する。そして選択されたレジスタ群に、信号wr_cmd2、信号data2’、及び信号addr2’’のビット3−0からなる信号addr2’’’を送信する。
信号addr2’’のビット7−4が“0000”である時、回路Aのレジスタ群311では、信号wr_cmd2を受信すると、信号addr2’’’の示すレジスタアドレスに信号data2’が書き込まれる。
また、信号addr2’’のビット7−4が“0001”である時、回路Bのレジスタ群312では、信号wr_cmd2を受信すると、信号addr2’’’の示すレジスタアドレスに信号data2’が書き込まれる。
また、信号addr2’’のビット7−4が“0010”である時、回路Cのレジスタ群313では、信号wr_cmd2を受信すると、信号addr2’’’の示すレジスタアドレスに信号data2’が書き込まれる。
以上のようにして、第2の実施の形態でも、CPUIF回路302を図10に示すように構成することにより、回路規模を増大させることなく、Vブランキング期間(非表示期間)内において、指定したタイミングで一斉に高速にレジスタ設定(更新)を行うことができる。
また、第2の実施の形態では、メモリ空間における各回路A,B,Cのレジスタ群に対応するアドレスに隣接した領域をFIFOとして用いることにより、レジスタ設定を行う際に使用するメモリ領域を集中させ、FIFOのために使用するメモリ空間を小さくすることができる。
〔第3の実施の形態〕
第3の実施形態において、デジタルカメラなどの撮像装置内の一部のブロックに対して、映像撮影期間中にCPUIF回路102内のFIFO108に書き込んでおいたレジスタ設定値を、映像信号の垂直ブランキング期間において一斉に設定する様子について説明する。
図18は、第3の実施の形態の撮像装置のブロック回路図である。
同図において、401はレンズ、402は絞り、403は光電変換を行う撮像素子、404は撮像素子403から出力された電気信号の増幅およびノイズ除去等を行うためのアンプ、405はアンプ404から出力されたアナログ信号をデジタル信号へ変換するA/D変換回路、406はそのデジタル信号をRGBベイヤ配列から各画素ごとの(R,G,B)信号へ補間する色補間回路、407はRGB信号のホワイトバランスを補正するホワイトバランス補正回路、408は色調の変換を行う3Dルックアップテーブル変換(以降3DLUT変換という)回路、409はRGB信号に対してガンマを掛けるガンマテーブル変換回路、410は入力されたRGB信号を輝度色差信号に色空間変換する色空間変換回路、411は画像データの縮小や拡大を行う変倍回路、101は各回路のレジスタ設定値を発行するCPU、102は第1の実施の形態において述べたFIFO108および109を内蔵し、CPU101から出力されるレジスタ設定値を各回路のレジスタに設定するCPUIF回路、413はビデオ信号を表示する液晶、412は液晶413に画像データを表示させるための変調を行うビデオ変調回路、415は信号処理された画像データを一時記憶するDRAM、414はDRAM113と各回路のバスアービトレーションを行うメモリ制御回路、418は撮影された画像データを圧縮する圧縮回路、417は圧縮回路418において圧縮された画像データを記録するメディアカード、416はメディアカード417とのインターフェースを行うメディアコントローラ回路である。
図18に示した撮像装置の動作について説明する。
レンズ401に入射された被写体像は、絞り402において光の量を調整され、撮像素子403において電気信号に変換される。
撮像素子403から出力された電気信号はアンプ404で増幅およびノイズ除去等が行われ、A/D変換回路405においてアナログ信号からデジタル信号に変換される。
A/D変換回路405から出力されるデジタルの画像データは、色補間回路406においてRGBベイヤ配列から各画素ごとの(R,G,B)信号へ補間し、RGB信号として出力する。
色補間回路406から出力されたRGB信号に対して、ホワイトバランス補正回路407においてホワイトバランスの補正が行われる。ホワイトバランス補正は、例えば電子ビューファインダー(以降EVFという)を見ながら撮影する際において、撮影シーンの光源の変化に追従してホワイトバランスの補正値を変化させる必要があるため、毎フレームごとにレジスタ値を更新する。そのためホワイトバランス補正回路407においては、図22に示すようにレジスタ502の前に1段のバッファ501を設けたダブルバッファの構成を用いてレジスタ設定を行う。例えば図22の乗算回路503の係数のレジスタ値を更新するタイミングについて説明する。図21の映像撮影期間中であるt3においてCPU101から次のフレームのホワイトバランスの補正値がレジスタ設定値として出力され、Dbuffer_Write信号がアサートされることによりバッファ501に書き込みが行われる。図21のブランキング期間であるt4において図1に示した更新パルス生成回路104から出力される更新パルス(a)106のタイミングでバッファ501からレジスタ502へ書き込みが行われてレジスタ値が更新され、ホワイトバランス補正回路407の乗算回路503の係数が変更される。
ホワイトバランス補正回路407においてホワイトバランス補正が行われたRGB信号は、3DLUT変換回路408において、ユーザーが設定した3DLUTに応じて画像の色調を変更する。3DLUTの設定方法は、図19に示すように、ある領域の色を他の領域の色に近づけることで、色調を変化させる。例えば、R画素,G画素,B画素のそれぞれが8bitであり、入力のRGBデータ8bit×3=24bitを3DLUT変換してRGBデータ8bit×3=24bitを出力する場合、入力のRGBデータは(28)3=16Mとおりの色があり、16Mとおりの色に対して出力するデータを用意するためには16M×24bit=48MByteのRAMが必要である。色調の設定を変更すると、48MByteのRAMのデータを全てレジスタに設定する。従って、3DLUT変換回路408のレジスタ設定又は更新は第1の実施の形態および第2の実施の形態で述べたCPUIF102内のFIFO108にレジスタ設定値を映像撮影期間中に貯めておく方法で行う。図21に示すように、t1においてユーザーが数種類用意された色調の中から1つの色調を選択すると、映像撮影期間のt2において3DLUTの設定値をCPU101からCPUIF102内のFIFO108に記憶しておき、ブランキング期間のt4において図1に示した更新パルス生成回路104から出力される更新パルス(a)106のタイミングでFIFO108から3DLUT変換回路408のレジスタを更新する。
3DLUT変換回路408において色調補正が行われたRGB信号は、ガンマテーブル変換回路409においてガンマ補正を行う。このガンマ補正の特徴は、図20に示すようにLCDバックライトが低輝度である場合は標準輝度時から出力輝度を高くし、逆にLCDバックライトが高輝度である場合は標準輝度時から出力輝度を低くする。例えば、ガンマテーブル変換回路409においてもR画素,G画素,B画素のそれぞれが8bitであるとすれば、入力輝度を示す値が(28)3=16Mとおりあり、入力輝度に対応する出力輝度を示す値を用意するためには16M×24bit=48MByteのRAMが必要である。ガンマ設定を変更すると、48MByteのRAMのデータを全てレジスタに設定する。従って、ガンマテーブル変換回路409のレジスタ設定はCPUIF102内のFIFO108から設定する。図21のt1においてユーザーによる設定が行われると、映像撮影期間中であるt2においてレジスタ設定値をCPUIF102内のFIFO108に貯めておき、ブランキング期間中であるt4において図1に示した更新パルス生成回路104から出力される更新パルス(a)106のタイミングでFIFO108からガンマテーブル変換回路409のレジスタへ設定する。
なお、3DLUT変換回路408及びガンマテーブル変換回路409におけるテーブルは、使用者の操作に応じて変更される。また、3DLUT変換回路408とガンマテーブル変換回路409は同時に変更されることはない。ガンマテーブル変換回路409においてガンマ補正されたRGB信号は、色空間変換回路410においてYUV信号へ変換され出力される。
色空間変換回路410から出力されたYUV信号は、変倍回路411において画像サイズを例えばEVF用の720×240などの大きさに変倍される。変倍回路411のレジスタは、例えばEVFを見ながら撮影する場合において、ユーザーが電子ズームをした時にEVFに表示する画像のサイズを徐々に変化させるための変倍率などのレジスタを毎フレームごとに設定しなおす必要がある。従って、変倍回路411のレジスタでは、図22に示すようなダブルバッファを用いてレジスタの更新を行う。図21に示すように映像撮影期間のt3でバッファ501に書き込み、ブランキング期間のt4において図1に示した更新パルス生成回路104から出力される更新パルス(a)106のタイミングでバッファ501からレジスタ502の値を毎フレームごとに更新する。
変倍回路411において変倍されたYUV信号はビデオ変調回路412においてビデオ変調され、液晶413に表示される。
また、変倍回路411から出力されたYUV信号は、メモリ制御回路414を介してDRAM415に一時記憶される。DRAM415に一時記憶された画像信号はメモリ制御回路414を介して読み出され、圧縮回路418において画像信号は圧縮され、再びメモリ制御回路414を介してDRAM415へ一時記憶される。DRAM415に一時記憶された画像信号はメモリ制御回路414を介して読み出され、メディアコントローラ回路416においてメディアカード417へ圧縮された画像信号の書き込みが行われる。
〔他の実施の形態〕
上記の第1および第2の実施の形態では、CPUIF回路を論理回路で構成しているが、これに代わって、CPUIF回路を、CPU,ROM,RAM等からなる制御装置で構成し、CPUIF回路の各機能を、該制御装置で実行されるソフトウェアによって実現するようにしてもよい。
また、本発明の目的は、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
また、上記プログラムは、上述した実施の形態の機能をコンピュータで実現することができればよく、その形態は、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給されるスクリプトデータ等の形態を有するものでもよい。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW等の光ディスク、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。または、上記プログラムを、インターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードしてもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけではなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。