以下、一実施形態を説明する。
図1に示すように、この撮像装置10は例えばデジタルスチルカメラであり、撮像部11、処理装置12、操作部13、メモリ14、表示部15を有する。
撮像部11は撮像光学系と撮像素子(イメージ・センサ)を含む。撮像光学系は被写体からの光を集光するレンズ(フォーカスレンズなど),レンズを通過した光の量を調整する絞り,等を含む。撮像素子はCCDやCMOSイメージセンサ等であり、入射する光を電気信号に変換して1フレーム分の画像データを生成する。撮像部11は、撮像素子から出力されるアナログの画像データをデジタル化し、そのデジタル化した画像データを同期信号に基づいて出力する。同期信号は、1フレームの区切りを示す垂直同期信号と、1ラインの区切りを示す水平同期信号を含む。
処理装置12は、複数の処理部を有する。各処理部は、設定された処理に応じて、メモリ14をアクセスする。メモリ14は例えばシンクロナスダイナミックランダムアクセスメモリ(SDRAM)である。処理装置12は、メモリ14に格納されたデータに基づく表示データを表示部15に出力する。表示部15は、例えば液晶表示装置(LCD:Liquid Crystal Display)である。処理装置12は、撮像部11から入力する画像データに基づく表示データを表示部15に出力する。表示部15は、表示データに基づく画像を表示する。これにより、表示部15は、撮像部11にて取り込む被写体の光像を確認する電子ビューファインダ(EVF:ElectronicView Finder )として機能する。また、処理装置12は、操作部13に対する操作に基づいて、記録する画像データに応じた表示データを表示部15に出力する。
操作部13は、ユーザにより操作されるシャッターボタンやメニューボタン等を含み、例えば機械的なスイッチやタッチパネル等の電気的なスイッチである。処理装置12は、操作部13に対する操作に応じて、撮影モードや各処理において必要な情報等の設定値を記憶する。そして、処理装置12は、撮像部11から入力する画像データに対して設定値に応じた処理を行い、処理後の画像データ(処理中の画像データを含む)をメモリ14に格納する。
記録部16は例えば撮像装置に装着されるメモリカードである。処理装置12は、メモリ14に格納されたデータ(例えば圧縮された画像データ)を記録部16に格納する。また、処理装置12は、操作部13に対する操作に従って、記録部16に格納されたデータに基づく表示データを表示部15に出力する。
次に、処理装置12の概略を説明する。
図3に示すように、処理装置12は、複数の処理部21a〜21f,22a,22b,23a,23b,24a〜24c,25a〜25cを有している。各処理部21a〜25cは、データを処理するものであり、各処理に応じて図1に示すメモリ14をアクセスするための要求信号を含む各種信号を出力する。
各処理部21a〜25cに設定された処理の一例を説明する。
処理部21aはプリプロセス部(前処理部)であり、撮像部11から出力される画像データに対しホワイトバランス等の前処理を行い、処理後のデータをメモリ14に格納する。処理部21bはカラー処理部であり、画像データに対して色空間変換処理を行う。処理部21cは歪み補正部であり、画像データに対して、例えば撮像光学系に起因する画像の歪みを補正する処理を行う。処理部21dは解像度変換部であり、画素データの間引き、データ補間などの処理を行う。処理部21eは顔検出部であり、画像データの画像に含まれる顔の位置を検出する。処理部21fは表示部であり、メモリ14から読み出したデータを表示データに変換し、変換後のデータを図1に示す表示部15に出力する。
処理部22aは動画コーデックであり、所定の方式(例えばMPEG(Moving Picture Experts Group)方式)により圧縮データを生成する。また、処理部22aは圧縮データを伸長した画像データを生成する。処理部22bはオーディオ処理部であり、所定の方式により音のデータを圧縮した圧縮データを生成する。また、処理部22bは、圧縮データを伸長して音のデータを生成する。
処理部23aは静止画コーデックであり、所定の方式(例えばJPEG(Joint Photographic Experts Group)方式)により圧縮データを生成する。また、処理部23aは、圧縮データを伸長した画像データを生成する。処理部23bはRAWコーデックであり、撮像部11から出力される画像データを圧縮処理してRAWデータを生成する。
処理部24aはカードインタフェース(I/F)であり、装着されたメモリカードをアクセスする。処理部24bはカードインタフェース(I/F)であり、装着されたメモリカードをアクセスする。なお、処理部24a,24bは互いに異なる形式のメモリカードのインタフェースである。処理部24cはUSB(Universal Serial Bus)インタフェースである。
処理部25aはノイズ除去部であり、メモリ14から読み出したデータに対して所定の処理を行ってノイズを除去し、処理後のデータをメモリ14に格納する。処理部25bは高DR(Dynamic Range)処理部であり、輝度レンジを拡張した画像データを生成する。処理部25cは画像表示効果処理部であり、画像データに対して輪郭強調等の処理を行う。
処理装置12は、クロック制御部26、調停回路27、メモリコントローラ(MC)28、中央処理装置(CPU)29を有している。
クロック制御部26は、基準クロック信号CLKに基づいて、クロック信号CK1〜CK5を生成する。基準クロック信号CLKは、例えば処理装置12のシステムクロック信号である。
クロック信号CK1は、処理部21a〜21fに供給される。クロック信号CK2は処理部22a,22bに供給される。クロック信号CK3は処理部23a,23bに供給される。クロック信号CK4は処理部24a〜24cに供給される。クロック信号CK5は、処理部25a〜25cに供給される。調停回路27は、各クロック信号CK1〜CK5により動作する回路ブロックを含む。
クロック制御部26は、例えば、基準クロック信号CLKの周波数と等しい周波数のクロック信号CK1を生成する。クロック制御部26は、分周回路を有し、その分周回路の分周比に応じて基準クロック信号CLKを分周してクロック信号CK2〜CK5を生成する。そして、クロック制御部26は、分周回路における分周比を調停回路27から供給される選択情報に従って変更する。したがって、クロック信号CK2〜CK5の周波数がクロック信号CK1の周波数と等しい場合と比べ、処理装置12の消費電力が少なくなる。
また、クロック制御部26は、CPU29の設定に応じて、各クロック信号CK2〜CK5を出力または停止する。供給が停止されたクロック信号CK2〜CK5に対応する処理部及び調停回路のブロックは、動作を停止する。したがって、処理部及び調停回路のブロックの動作を停止させることで、処理装置12の消費電力が、全ての回路が動作する場合と比べ少なくなる。
調停回路27は、各処理部21a〜25cの要求信号を調停し、調停結果に応じて1つの処理部に対してアクセス許可を与える。そして、調停回路27は、調停結果に応じた1つの要求信号をメモリコントローラ28に出力する。メモリコントローラ28は、アクセスが許可された処理部から出力される制御情報(各種コマンド、アドレス、データ、等)を図1に示すメモリ14に出力する。これにより、各処理部21a〜25cは、バスBLとメモリコントローラ28を介して図1に示すメモリ14をアクセスする。
調停回路27は、複数(図において5つ)の調停部31〜35、FIFO(First In First Out)方式のメモリ(「FIFO」と表記。以下、FIFOメモリ)41〜48を有している。調停部32〜35は第1の調停部の一例であり、調停部31は第2の調停部の一例である。FIFOメモリ41〜48は転送用メモリの一例である。
処理部22a,22bは調停部32に接続されている。調停部32は、FIFOメモリ41,42を介して調停部31に接続されている。上記のクロック信号CK2は、処理部22a,22bと調停部32に供給される。処理部22a,22bは、クロック信号CK2に同期して、要求信号を出力し、メモリ14に対するアクセス、画像データに対する処理、等を行う。調停部32は、クロック信号CK2に同期して、要求信号の調停、調停結果に応じて調停部31に対する要求信号の出力、調停結果に応じたアクセス許可、等を行う。
処理部23a,23bは調停部33に接続されている。調停部33は、FIFOメモリ43,44を介して調停部31に接続されている。上記のクロック信号CK3は、処理部23a,23bと調停部33に供給される。処理部23a,23bは、クロック信号CK3に同期して、要求信号を出力し、メモリ14に対するアクセス、画像データに対する処理、等を行う。調停部33は、クロック信号CK3に同期して、要求信号の調停、調停結果に応じて調停部31に対する要求信号の出力、調停結果に応じたアクセス許可、等を行う。
処理部24a〜24cは調停部34に接続されている。調停部34は、FIFOメモリ45,46を介して調停部31に接続されている。上記のクロック信号CK4は、処理部24a〜24cと調停部34に供給される。処理部24a〜24cは、クロック信号CK4に同期して、要求信号を出力し、メモリ14に対するアクセス、画像データに対する処理、等を行う。調停部34は、クロック信号CK4に同期して、要求信号の調停、調停結果に応じて調停部31に対する要求信号の出力、調停結果に応じたアクセス許可、等を行う。
処理部25a〜25cは調停部35に接続されている。調停部35は、FIFOメモリ47,48を介して調停部31に接続されている。上記のクロック信号CK5は、処理部25a〜25cと調停部35に供給される。処理部25a〜25cは、クロック信号CK5に同期して、要求信号を出力し、メモリ14に対するアクセス、画像データに対する処理、等を行う。調停部35は、クロック信号CK5に同期して、要求信号の調停、調停結果に応じて調停部31に対する要求信号の出力、調停結果に応じたアクセス許可、等を行う。
処理部21a〜21fは調停部31に接続されている。調停部31はメモリコントローラ28に接続されている。上記のクロック信号CK1は、調停部31と処理部21a〜21fに供給される。各処理部21a〜21fは、クロック信号CK1に同期して、要求信号を出力し、メモリ14に対するアクセス、画像データに対する処理を行う。調停部31は、クロック信号CK1に同期して、処理部21a〜21fの要求信号と、調停部32〜35から出力される要求信号の調停、調停結果に応じてメモリコントローラ28に対する要求信号の出力、調停結果に応じたアクセス許可、等を行う。
つまり、調停部31は、調停部32〜35における調停にしたがって出力される要求信号と、調停部31に直接的に接続された処理部21a〜21fの要求信号を受け付け、それらの要求信号を調停する。これにより、調停部31に直接的に接続された処理部21a〜21fの要求は、低テイテンシでリアルタイム処理を行う処理部の要求であることから、調停部32〜35にそれぞれ直接的に接続された処理部22a〜25cの要求よりも高い優先度により処理される。調停部32〜35から出力される要求信号は第1調停信号の一例、調停部31から出力される要求信号は第2調停信号の一例である。
上記したように、調停部31は、クロック信号CK1に基づいて動作する。そして、調停部32は、クロック信号CK2に基づいて動作する。
クロック信号CK1の周波数とクロック信号CK2の周波数が互いに異なる場合、調停部31と調停部32は直接的にデータ転送を行うことができない。FIFOメモリ41,42は、所謂クロックの乗せ替えを行い、互いに異なる周波数のクロック信号にて動作する2つの調停部31,32間のデータ転送を可能とする。つまり、FIFOメモリ41,41には、クロック信号CK1,CK2が供給される。調停部32とFIFOメモリ41は、クロック信号CK2に基づいて互いにデータ転送する。同様に、調停部32とFIFOメモリ42は、クロック信号CK2に基づいて互いにデータ転送する。また、調停部31とFIFOメモリ41は、クロック信号CK1に基づいて互いにデータ転送する。同様に、調停部31とFIFOメモリ42は、クロック信号CK1に基づいて互いにデータ転送する。
調停部33〜35と調停部31の間のデータ転送も同様である。
つまり、調停部33とFIFOメモリ43,44は、クロック信号CK3に基づいて互いにデータ転送する。調停部34とFIFOメモリ45,46は、クロック信号CK4に基づいて互いにデータ転送する。調停部35とFIFOメモリ47,48は、クロック信号CK5に基づいて互いにデータ転送する。そして、FIFOメモリ43〜48と調停部31は、クロック信号CK1に基づいて互いにデータ転送する。
調停回路27に対して、要求信号を出力する処理部21a〜25cをバスマスタと呼び、調停回路27が出力する要求信号を受け付けるメモリコントローラをバススレーブと呼ぶ。そして、各調停部31〜35において、バスマスタ側のインタフェース回路をスレーブインタフェース(スレーブI/F)、バススレーブ側のインタフェース回路をマスタインタフェース(マスタI/F)と呼ぶ。
次に、撮像装置10におけるモードと、各モードにおける動作の概略を説明する。
CPU29は、図1に示す操作部13に対する操作にしたがって、撮像装置の動作を設定する。そして、CPU29は、撮像装置の動作に応じて、各処理部21a〜25c、調停回路27、クロック制御部26を制御する。なお、CPU29は、図1に示すメモリ14をアクセスするための要求信号を調停部31に出力する。つまり、CPU29は調停部31にて要求を調停する処理部の一つである。
撮像装置の動作は、例えば、図2に示すように、ライブビュー、静止画撮影、動画撮影、高画質静止画撮影、静止画再生、動画再生、スライドショー再生を含む。各処理では、必要な処理部が異なる。各処理部は、撮像装置の動作に対する要否に応じて調停部31〜35に接続されている。なお、図2において、「調停部[2]」は、図3に示す調停部32と、その調停部32に接続された処理部22a,22bを示す。同様に、「調停部[3]」は、調停部33と、その調停部33に接続された処理部23a,23bを示し、「調停部[4]」は、調停部34と、その調停部34に接続された処理部24a〜24cを示す。そして、「調停部[5]」は、調停部35と、その調停部35に接続された処理部25a〜25cを示す。
例えば、各動作において動作頻度が他の処理部22a〜25cよりも動作頻度の高い処理部21a〜21fは、調停部31に接続されている。同時に動作することが多い処理部22a,22bは、調停部32に接続されている。同時に動作または何れか一つを動作させる処理部23a,23bは、調停部33に接続されている。何れか一つを動作させる処理部24a〜24cは、調停部34に接続されている。画像特性やユーザの指示により排他的または同時に動作する処理部25a〜25cは、調停部35に接続されている。
調停部32に接続された処理部22aは動画コーデックである。この処理部22aは、撮影動作において、画像データの入力と、処理後の符号データの出力とを同時に行うことがある。また、処理部22aは、再生動作において、符号データの入力と、処理後の画像データの出力とを同時に行うことがある。このため、処理部22aは、それぞれの動作(入力動作及び出力動作)に応じた要求信号を出力する。調停部32は、上記の動作を同時に行うことが可能なように、それぞれの要求信号に応じて、2つの要求信号を調停部31に出力する。
調停部33に接続された処理部23a,23bは静止画のコーデックであり、処理部22aと同様に、処理前のデータの入力と処理後のデータの出力を同時に行うことがある。このため、処理部23a、23bは、それぞれの動作に応じた要求信号を出力し、調停部33は、上記の動作を同時に行うことが可能なように、それぞれに要求信号に応じて、2つの要求信号を調停部31に出力する。
調停部34に接続された処理部24a〜24cは、同時にメモリ14をアクセスすることがある。同様に、調停部35に接続された処理部25a〜25cは、同時にメモリ14をアクセスすることがある。このため、調停部34と調停部35は、同時のアクセスが可能なように、2つの要求信号を調停部31に出力する。
そして、CPU29は、撮像装置の動作にしたがって、その時々の動作に必要な処理部以外の処理部に対するクロック信号の供給を停止するように各クロック制御部26を制御する。例えば、CPU29は、撮像装置の動作に応じた設定値を各クロック制御部26のレジスタに格納する。各クロック制御部26は設定値に応じてクロック信号CK2〜CK5を出力または停止する。
クロック信号が停止された処理部は動作しない。各クロック制御部26のクロック信号CK2〜CK5は、調停部32〜35に供給される。クロック信号が停止された調停部は動作しない。すなわち、CPU29は、その時々の動作に応じて、必要な処理部及び調停部に対してクロック信号を供給してそれらを動作させる。したがって、CPU29は、その時々の動作に不要な処理部及び調停部に対するクロック信号を停止し、処理装置12の消費電力を低減する。
さらに、CPU29は、その時々における撮像装置の動作に応じた信号選択情報を調停部31〜35に設定する。各処理では、必要な処理部における優先度が異なる。したがって、CPU29は、その時々の動作に応じて、必要な処理部における優先度を設定する。調停回路27の対応する調整部は、それぞれに設定された信号選択情報に応じた優先度により、処理部から出力される要求信号を調停する。
次に、各クロック信号CK2〜CK5の周波数の制御と、各クロック信号CK1〜CK5の周波数に応じた要求信号の出力タイミングの制御を説明する。
図3に示すように、モニタ部51、転送制御部52を有している。
モニタ部51は、調停部31とメモリコントローラ28の間のデータ転送をモニタする。
調停部31とメモリコントローラ28の間の転送は、各調停部31〜35の調停結果に基づくデータ転送を含む。上記したように、調停部31は、処理部21a〜21fの要求信号と、調停部32〜35の要求信号とを、優先順位に従って調停する。調停部32は、処理部22a,22bの要求信号を、優先順位に従って調停する。同様に、調停部33〜35は、処理部23a,23b,24a〜24c,25a〜25cの要求信号を、優先順位に従って調停する。
従って、所定期間において、調停部31とメモリコントローラ28の間で、優先順位に応じたデータが転送される。そして、調停部31とメモリコントローラ28の間のデータ転送は、各調停部32〜35における調停結果に応じたデータ転送を含む。なお、所定期間は、同期信号に基づく期間であって、例えば垂直同期信号に基づく1つのフレームを転送する期間である。モニタ部51は、各調停部32〜35による調停結果に基づいて、調停部31とメモリコントローラ28の間で転送されるデータ量をモニタする。
また、調停部31とメモリコントローラ28の間の転送は、メモリ14に対するデータの書込のための転送(ライト転送)と、メモリ14のデータを読み出す転送(リード転送)を含む。モニタ部51は、ライト転送におけるデータ量と、リード転送におけるデータ量をモニタする。
転送制御部52は、モニタ部51のモニタ結果に基づいて、クロック制御部26とFIFOメモリ41〜48を制御する。モニタ部51におけるモニタ結果は、各調停部31〜35における調停結果、つまり、各調停部31〜35に設定される優先順位に応じて転送されるデータ量である。転送制御部52は、各調停部31〜35の調停、つまり優先順位の比率に応じたデータ量に基づいて、各調停部32〜35に供給するクロック信号CK2〜CK5の周波数を制御する。
調停部31とメモリコントローラ28(メモリ14)の間において転送されるデータの量は、調停部31とメモリコントローラ28(メモリ14)の間のバスにおける帯域幅(情報転送能力)に対応する。これを全帯域幅とする。調停部31とメモリコントローラ28の間において転送されるデータの量は、調停部31と各調停部32〜35の間において転送されるデータの量、つまり各調停部32〜35における帯域幅を含む。転送制御部52は、全帯域幅と各調停部32〜35に対応する帯域幅の比に応じて、クロック信号CK1の周波数と各調停部32〜35に供給するクロック信号CK2〜CK5の周波数の比を制御する。
次に、調停回路27の詳細を説明する。
なお、図3に示す調停部32〜35は、互いに同様に動作する。また、調停部31における調停部33〜35に対する回路及び処理は、調停部32に対する回路及び動作と同様である。このため、以下の説明において、調停部33〜35に対する回路及び処理の説明を省略する。また、調停部31において、処理部21a〜21fのそれぞれに対する回路及び処理は同様である。また、調停部32〜34において処理部22a〜25cのそれぞれに対する回路及び処理は同様である。このため、以下の説明において、動作等の説明を必要としない場合に、単に「処理部」として説明する。また、調停部31等に接続される処理部の数を簡略化(例えば「2」)として説明する。
図4に示すように、調停部31は、リード調停部31Rとライト調停部31Wを有している。調停部32は、リード調停部32Rとライト調停部32Wを有している。FIFOメモリ41は、リード用のFIFOメモリ(以下、リード用メモリ)41Rと、ライト用のFIFOメモリ(以下ライト用メモリ)41Wを有している。同様に、FIFOメモリ42は、リード用メモリ42Rとライト用メモリ42Wを有している。
リード調停部32Rは、図3に示す処理部22aから要求信号Rr20と読出情報Rp20が供給され、処理部22aに対して読出データRd20を出力する。また、リード調停部32Rは、図3に示す処理部22bから要求信号Rr21と読出情報Rp21が供給され、処理部22aに対して読出データRd21を出力する。リード調停部32Rは、リード用メモリ41Rに対して要求信号Rr12mと読出情報Rp12mを出力し、リード用メモリ41Rはリード調停部32Rに対して読出データRd12mを出力する。同様に、リード調停部32Rは、リード用メモリ42Rに対して要求信号Rr13mと読出情報Rp13mを出力し、リード用メモリ41Rはリード調停部32Rに対して読出データRd13mを出力する。
リード用メモリ41Rは、リード調停部31Rに対して要求信号Rr12sと読出情報Rp12sを出力し、リード調停部31Rはリード用メモリ41Rに対して読出データRd12sを出力する。同様に、リード用メモリ42Rは、リード調停部31Rに対して要求信号Rr13sと読出情報Rp13sを出力し、リード調停部31Rは、リード用メモリ42Rに対して読出データRd13sを出力する。
リード調停部31Rは、例えば図3に示す処理部21bから要求信号Rr10と読出情報Rp10が供給され、処理部21bに対して読出データRd10を出力する。また、リード調停部31Rは、例えば図3に示す処理部21cから要求信号Rr11と読出情報Rp11が供給され、処理部21cに対して読出データRd11を出力する。リード調停部31Rは、メモリコントローラ28に対して要求信号Rrqと読出情報Rpaを出力し、メモリコントローラ28は、リード調停部31Rに対して読出データRdtを出力する。
ライト調停部32Wは、図3に示す処理部22aから要求信号Wr20、書込情報Wp20、書込データWd20が供給される。また、ライト調停部32Wは、図3に示す処理部22bから要求信号Wr21、書込情報Wp21、書込データWd21が供給される。ライト調停部32Wは、ライト用メモリ41Wに対して要求信号Wr12m、書込情報Wp12m、書込データWd12mを出力する。同様に、ライト調停部32Wは、ライト用メモリ42Wに対して要求信号Wr13m、書込情報Wp13m、書込データWd13mを出力する。
ライト用メモリ41Wは、ライト調停部31Wに対して要求信号Wr12s、書込情報Wp12s、書込データWd12sを出力する。同様に、ライト用メモリ42Wは、ライト調停部31Wに対して要求信号Wr13s、書込情報Wp13s、書込データWd13sを出力する。ライト調停部31Wは、例えば図3に示す処理部21bから要求信号Wr10、書込情報Wp10、書込データWd10が供給される。また、ライト調停部31Wは、例えば図3に示す処理部21cから要求信号Wr11、書込情報Wp11、書込データWd11が供給される。ライト調停部31Wは、メモリコントローラ28に対して要求信号Wrq、書込情報Wpa、書込データWdtを出力する。
モニタ部51は、カウンタ部61R,61W,62R,62Wを含む。
カウンタ部61Rは、読出情報Rpaに基づいて、リード調停部31Rに対してメモリコントローラ28から出力される読出データRdtのデータ量に応じたカウント値を出力する。カウンタ部62Rは、読出情報Rpaに基づいて、リード調停部32Rに対してメモリコントローラ28から出力される読出データRdtのデータ量に応じたカウント値を出力する。カウンタ部61Wは、書込情報Wpaに基づいて、ライト調停部31Wからメモリコントローラ28へ出力される書込データWdtのデータ量に応じたカウント値を出力する。カウンタ部62Wは、書込情報Wpaに基づいて、ライト調停部32Wからメモリコントローラ28へ出力される書込データWdtのデータ量に応じたカウント値を出力する。
詳述すると、リード調停部31Rは、選択した要求信号と等しい要求信号Rrqと、選択した要求信号に対応する書込情報と等しい読出情報Rpaを出力する。読出情報Rpaは、識別番号(ID番号)とバーストサイズを含む。識別番号(ID番号)は、要求信号を出力した処理部のマスタ番号と、要求信号を調停したリード調停部32Rのマスタ番号を含む。バーストサイズは、1回の転送処理において処理部がメモリ14との間で行う転送のデータサイズを含む。
したがって、カウンタ部61Rは、読出情報Rpaに含まれるバーストサイズをカウントし、カウント値を出力する。つまり、カウンタ部61Rは、全ての読出情報Rpaに含まれるバーストサイズを順次取り込み、その取り込んだバーストサイズをカウント値に加算する。そして、カウンタ部61Rは、カウント値Wcaを出力する。カウンタ部62Rは、読出情報Rpaに基づいて、リード調停部32Rに対応する読出情報、つまりリード調停部32Rが出力した読出情報Rp12m,Rp13mに含まれるバーストサイズをカウントし、カウント値Wc2を出力する。同様に、カウンタ部61Wは、書込情報Wpaに基づいて、ライト調停部31Wからメモリコントローラ28に対して出力される書込データWdtのデータ量をカウントし、カウント値Wcaを出力する。カウンタ部62Wは、書込情報Wpaに基づいて、ライト調停部32Wからメモリコントローラ28に対して出力される書込データWdt(Wd12s,Wd13s)のデータ量をカウントし、カウント値Wc2を出力する。
ライト調停部31Wは、選択した要求信号と等しい要求信号Wrqと、選択した要求信号に対応する書込情報と等しい書込情報Wpaを出力する。書込情報Wpaは、識別番号(ID番号)とバーストサイズを含む。識別番号(ID番号)は、要求信号を出力した処理部のマスタ番号と、要求信号を調停したライト調停部32Wのマスタ番号を含む。バーストサイズは、1回の転送処理において処理部がメモリ14との間で行う転送のデータサイズを含む。
したがって、カウンタ部61Wは、書込情報Wpaに含まれるバーストサイズをカウントし、カウント値Wcaを出力する。つまり、カウンタ部61Wは、全ての書込情報Wpaに含まれるバーストサイズを順次取り込み、その取り込んだバーストサイズをカウント値に加算する。そして、カウンタ部61Wは、カウント値Wcaを出力する。カウンタ部62Wは、書込情報Wpaに基づいて、ライト調停部32Wに対応する書込情報、つまりライト調停部32Wが出力した書込情報Wp12m,Wp13mに含まれるバーストサイズをカウントし、カウント値Wc2を出力する。
転送制御部52は、カウンタ制御部71、制御信号生成部72、メモリ制御部73を有している。
カウンタ制御部71は、同期信号SYNCによってモニタ部51に含まれるカウンタ部61R〜62Wのカウント動作を制御する。
同期信号SYNCは、例えば垂直同期信号VDである。垂直同期信号VDは、図1に示す撮像部11が出力する画像データのフレーム転送レート(例えば30fps(frame per second))に応じた間隔で所定期間(例えば基準クロック信号CLKの1周期分)Lレベルとなるパルス信号である。カウンタ制御部71は、例えばLレベルの同期信号SYNCに応答してイネーブル信号ENとリセット信号RSTを出力する。イネーブル信号ENは所定期間(例えば基準クロック信号CLKの1周期分)所定レベル(例えばLレベル)であるパルス信号であり、その周期は同期信号SYNCの周期と等しい。リセット信号RSTは、イネーブル信号ENに続く所定期間(例えば基準クロック信号CLKの1周期分)所定レベル(例えばLレベル)であるパルス信号であり、その周期は同期信号SYNCの周期と等しい。
垂直同期信号VDは、1フレームの区切りを示す。各カウンタ部61R〜62Wは、所定レベルのイネーブル信号ENに応答してカウント値をラッチし、所定レベルのリセット信号RSTに応答してカウント値をリセットする。したがって、カウンタ部61R〜62Wは、イネーブル信号ENに基づいて、フレーム毎のデータ転送量をカウントし、そのカウント値をラッチする。そして、カウンタ部61R〜62Wは、ラッチしたカウント値Rca〜Wc2を出力する。
制御信号生成部72は、カウンタ部61R〜62Wからそれぞれ出力されるカウント値Rca〜Wc2に基づいて、クロック制御部26とメモリ制御部73に対する選択信号SELを生成する。制御信号生成部72は、カウンタ部61Rのカウント値Wcaと、カウンタ部62Rのカウント値Wc2を互いに比較した比較結果と、カウンタ部61Wのカウント値Wcaと、カウンタ部62Wのカウント値Wc2を互いに比較した比較結果とに基づいて、選択信号SELを生成する。
メモリ制御部73は、制御信号生成部72からの選択信号SELに基づいて、クロック制御部26に対するトリガ信号TRGと、リード用メモリ41R,42Rとライト用メモリ41W,42Wに対する停止信号SHTとしきい値wpthを生成する。
クロック制御部26は、選択信号SELに応じた周波数のクロック信号CK2を生成する。メモリ制御部73は、リード用メモリ41R,42Rとライト用メモリ41W,42Wの状態に応じて、トリガ信号TRGを生成する。クロック制御部26は、トリガ信号TRGに応答して、クロック信号CK2の周波数を切り替える。
そして、メモリ制御部73は、クロック信号CK2の周波数を変更する際に、リード用メモリ41R,42Rとライト用メモリ41W,42Wの動作を制御するための停止信号SHTを生成する。
また、メモリ制御部73は、クロック信号CK1,CK2の周波数に基づいて、ライト用メモリ41W,42Wの転送要求の発行タイミングを制御する。メモリ制御部73は、例えば、クロック信号CK1の周波数とクロック信号CK2の周波数の比に応じたしきい値wpthを設定し、このしきい値wpthをライト用メモリ41W,42Wに出力する。ライト用メモリ41W,42Wは、しきい値wpthとライトポインタWPを比較した結果に応じて転送要求を発行する。
次に、図5にしたがって、ライト用メモリ41Wに係る回路の詳細を説明する。なお、ライト用メモリ42Wに係る回路は、ライト用メモリ41Wに係る回路と同様であるため、図面及び説明を省略する。
ライト用メモリ41Wは、複数段(例えば64段)のレジスタ91、ライトポインタ制御部92、リードポインタ制御部93、要求発行制御部94を含む。
各段のレジスタ91は、それぞれバス幅に応じた複数バイト(例えば4バイト)のデータを記憶する。ライトポインタ制御部92は、レジスタ91に対する書き込みに応じて、書き込み位置を示すライトポインタWPを制御する。リードポインタ制御部93は、レジスタ91に対する読み出しに応じて、読み出し位置を示すリードポインタRPを制御する。
要求発行制御部94は、要求発行制御とデータ同期化を行う。つまり、要求発行制御部94は、ライトポインタWPとリードポインタRPに基づいてエンプティ信号SEPを出力する。また、要求発行制御部94は、停止信号SHTに基づいて、レジスタ91に対する書き込み、読み出しを制御する。また、要求発行制御部94は、しきい値wpthとライトポインタWPを比較した結果に応じて要求発行を制御する。
ライト調停部31Wは、メモリコントローラ28から要求信号Wrqに対する応答信号(許可信号)ACKを受け取り、識別番号(ID番号)とバーストサイズSBSをメモリコントローラ28に出力する。
カウンタ部61Wは、カウンタ61aとラッチ回路61bを含む。カウンタ61aは、ライト調停部31Wに対するメモリコントローラ28(図4参照)の応答信号ACKに基づいて、ライト調停部31Wから出力されるバーストサイズSBSをカウントし、カウント値を出力する。そして、カウンタ61aは、リセット信号RSTによりカウント値をクリア(=0)する。
ラッチ回路61bは、カウンタ制御部71から出力されるイネーブル信号ENに応答して、カウンタ61aから出力されるカウント値を取り込み、これを保持する。ラッチ回路61bに保持されるカウント値は、イネーブル信号のENの1周期の間に、カウンタ61aが累積的にカウントしたバーストサイズSBSである。そして、ラッチ回路61bは、保持したカウント値Wcaを出力する。
カウンタ部62Wは、カウンタ62aとラッチ回路62bを含む。カウンタ62aは、応答信号ACKに基づいて、ライト調停部31Wから出力されるバーストサイズSBSのうち、ライト調停部32Wの識別情報(ID)SIDに応じて取り込んだバーストサイズSBSをカウントし、カウント値を出力する。そして、カウンタ62aは、リセット信号RSTによりカウント値をクリア(=0)する。ラッチ回路62bは、カウンタ制御部71から出力されるイネーブル信号ENに応答して、カウンタ62aから出力されるカウント値を取り込み、これを保持する。そして、ラッチ回路62bは、保持したカウント値Wc2を出力する。
なお、図5では省略したが、図4に示すカウンタ部61R,62Rは、上記のカウンタ部61W,62Wと同様に、カウンタとラッチ回路を含む。そして、カウンタ部61Rは、カウント値Rcaを出力する。同様に、カウンタ部62Rは、カウント値Rc2を出力する。
制御信号生成部72は、各カウンタ部61R〜62Wのカウント値Wca,Wc2,Rca,Rc2に基づいて、次に示す比較処理に従って選択信号SELを生成する。
Wc2*8<Wca(「*」は乗算の演算子)の場合、ライト比WRを[11b](2進数)に設定。
Wc2*4<Wcaの場合、ライト比WRを[10b]に設定。
Wc2*2<Wcaの場合、ライト比WRを[01b]に設定。
上記以外の場合、ライト比WRを[00b]に設定。
Rc2*8<Rcaの場合、リード比RRを[11b]に設定。
Rc2*4<Rcaの場合、リード比RRを[10b]に設定。
Rc2*2<Rcaの場合、リード比RRを[01b]に設定。
上記以外の場合、リード比RRを[00b]に設定。
リード比RRとライト比WRのうちの小さい方の値を選択信号SELとする。
クロック制御部26は、複数(図5において3つ)の分周器81〜83、選択部84、切替部85を有している。クロック制御部26において、基準クロック信号CLKと等しい周波数の信号をクロック信号CKaとする。各分周器81〜83の分周比は、それぞれ「1/2」に設定されている。分周器81は、クロック信号CKaを分周したクロック信号CKbを出力する。分周器82は、クロック信号CKbを分周したクロック信号CKcを出力する。分周器83は、クロック信号CKcを分周したクロック信号CKcを出力する。したがって、クロック信号CKaの周波数は基準クロック信号CLKの周波数と等しい。また、クロック信号CKbの周波数は基準クロック信号CLKの周波数の1/2である。また、クロック信号CKcの周波数は基準クロック信号CLKの周波数の1/4である。そして、クロック信号CKdの周波数は基準クロック信号CLKの周波数の1/8である。
選択部84は、選択信号SELに応じてクロック信号CKa〜CKdのうちの1つを選択する。切替部85は、トリガ信号TRGに応答して、選択部84により選択したクロック信号をクロック信号CK2として出力する。例えば、選択部84は、2組のレジスタ及びスイッチ回路を含む。各組のレジスタは、選択信号の値を記憶し、スイッチ回路は、レジスタの設定値に従って各クロック信号CKa〜CKdのうちの1つを選択する。1組のレジスタ及びスイッチ回路は、切り替え前の設定値に応じたクロック信号を選択し、他の1組のレジスタ及びスイッチ回路は、切り替え後の設定値に応じたクロック信号を選択する。切替部85は、トリガ信号TRGに応答してレジスタ及びスイッチ回路の組を切り替えることで、クロック信号CK2の周波数を変更する。なお、各組のレジスタの設定値は、CPU29により変更することも可能である。
メモリ制御部73は、例えば選択信号SELの値に応じた複数(例えば4つ)のレジスタを含む。各レジスタには、それぞれ選択信号SELに応じたしきい値が設定されている。レジスタの数は、クロック信号CK2の周波数を切り替える段数に対応する。各レジスタに設定されるしきい値は、ライト用メモリ41Wに含まれるレジスタ91の段数に応じて設定されている。例えば、レジスタ91の数を「64」とすると、しきい値は、「1」、「33」、「49」,「57」である。
メモリ制御部73は、選択信号SELに応じたレジスタの値を読み出し、その値と等しいしきい値wpthを出力する。例えば、メモリ制御部73は、[00b](2進数)の選択信号SELに応じて「1」のしきい値wpthを出力し、[01b]の選択信号SELに応じて「33」のしきい値wpthを出力する。また、メモリ制御部73は、[10b]の選択信号SELに応じて「49」のしきい値wpthを出力し、[11b]の選択信号SELに応じて「57」のしきい値wpthを出力する。
次に、転送制御部52におけるクロック信号の切替処理を説明する。
図6に示すように、ステップ101において、初期化処理を行う。この初期化処理において、クロック信号CK2の周波数fck2を、クロック信号CK1の周波数fck1と等しくする。
ステップ102において、同期信号SYNCが発生(Lレベルの同期信号SYNC)したか否かを判定する。同期信号SYNCが発生した場合(判定:YES)、次のステップ103へ移行する。一方、同期信号SYNCが発生していない場合(判定:NO)、ステップ102へ移行する。つまり、このステップ102において、同期信号SYNCの発生まで待機(ループ)する。
次に、ステップ103において、カウント値Wca,Wc2,Rca,Rc2の比較結果に基づいて選択信号SELの値を設定する。
ステップ104において、選択信号SELの値が変化したか否かを判定する。変化した場合(判定:YES)、次のステップ105へ移行する。一方、変化していない場合(判定:NO)、ステップ102へ移行する。
そして、ステップ105において、Hレベルの停止信号SHTを出力する。
次に、ステップ106において、エンプティ信号SEPがLレベルか否かを判定する。Lレベルの場合(判定:YES)、次のステップ107へ移行する。一方、Lレベルではない、つまりHレベルの場合(判定:NO)、ステップ106へ移行する。
なお、図4に示すように、FIFOメモリ41,42(リード用メモリ41R,42R及びライト用メモリ41W,42W)において、調停部32との間の通信に係る回路は、クロック信号CK2に基づいて動作する。各メモリ41R〜42Wのそれぞれは、ライトポインタWPとリードポインタRPによって記憶したデータを管理し、エンプティ信号を生成する。このため、このステップ106では、クロック信号CK2に係るメモリ41R〜42Wからそれぞれ出力されるエンプティ信号がLレベルか否かを判定し、全てのエンプティ信号がLレベルになるまで待機する。
そして、ステップ107において、トリガ信号TRG発生させ、クロック信号CK2の周波数を切り替える。
次に、ステップ108において、Hレベルの停止信号SHTを出力する。
そして、ステップ109において、処理終了か否かを判定する。処理終了の場合(判定:YES)、この処理を終了する。一方、処理終了ではない場合(判定:NO)、ステップ102へ移行する。
次に、図5に示すライト用メモリ41Wにおける受信処理、つまりライト調停部32Wから送出されるデータをライト用メモリ41Wが受け取るときの処理を説明する。
図7に示すように、ステップ111において、停止信号SHTがHレベルか否かを判定する。Hレベルの場合(判定:YES)、次のステップ112へ移行する。一方、Lレベルの場合(判定:NO)、ステップ116へ移行する。
そして、ステップ112において、要求信号の受け付けを停止する。
次に、ステップ113において、全てのデータを送出したか否かを判定する。全でのデータを送出した場合(判定:YES)、次のステップ114へ移行する。一方。全てのデータを送出していない場合(判定:NO)、ステップ113へ移行する。つまり、全てのデータを送出するまで待機する。
そして、ステップ114において、Lレベルのエンプティ信号SEPを出力する。
次に、ステップ115において、停止信号SHTがLレベルか否かを判定する。Lレベルの場合(判定:YES)、次のステップ116へ移行する。一方、Hレベルの場合(判定:NO)、ステップ115へ移行する。つまり、停止が解除されるまで待機する。
そして、ステップ116において、要求信号の受付を開始する。
次に、ステップ117において、要求信号Wr21がライト調停部32Wから出力されているか否かを判定する。要求信号Wr21がある場合(判定:YES)、次のステップ118へ移行する。一方、要求信号Wr21がない場合(判定:NO)、ステップ117へ移行する。つまり、ライト調停部32Wから要求信号Wr21が出力されるまで待機する。
そして、ステップ118において、データを受信する。
先ず、Hレベルの許可信号rdymを出力する。次に、図5に示すライト調停部32Wから出力される書込データWd21を受信する。そして、書込データWd21をライトポインタWPが示すレジスタ91に格納し、ライトポインタWPを更新し、Hレベルのエンプティ信号SEPを出力する。
次に、ステップ119において、受信完了したか否かを判定する。受信完了した場合(判定:YES)、次のステップ120へ移行する。一方、受信完了していない場合(判定:NO)、ステップ117へ移行する。
次いで、ステップ120において、処理終了か否かを判定する。処理終了の場合(判定:YES)、この処理を終了する。一方、処理終了ではない場合(判定:NO)、ステップ111へ移行する。
次に、図5に示すライト用メモリ41Wにおける送信処理、つまりライト用メモリ41Wからライト調停部31Wへデータを送出するときの処理を説明する。
図8に示すように、ステップ121において、ライトポインタWPをしきい値wpthと比較し、ライトポインタWPがしきい値epth以上(WP≧wpth)か否かを判定する。ライトポインタWPがしきい値wpth以上の場合(判定;YES)、次のステップ122へ移行する。一方、ライトポインタWPがしきい値wpth未満の場合(判定:NO)、ステップ121へ移行する。つまり、このステップ121において、ライトポインタWPがしきい値wpth以上になるまで待機する。
そして、ステップ122において、クロック信号CK1に基づくタイミングで、要求信号Wr12sを出力する。ライト用メモリ41Wは、クロック信号CK1に基づくタイミングで書込データWd12sを送信する。このため、ライト用メモリ41Wは、例えば、上記の判定においてライトポインタWPをしきい値wpth以上と判定したとき、次のクロック信号CK1のタイミング(例えば立ち上がりエッジに応じたタイミング)で所定レベル(例えばHレベル)の要求信号Wr12sを出力する。
次に、ステップ123において、送信が許可されたか否かを判定する。例えば、図5に示すように、ライト調停部31Wは、ライト用メモリ41Wから出力される要求信号Wr12sに基づいて、データの受信が可能なときに所定レベル(例えばHレベル)の許可信号rdysを出力する。従って、この許可信号rdysのレベルに基づいて、送信の可否を判定する。送信が許可された場合(判定:YES)、次のステップ124へ移行する。一方、送信が許可されていない場合(判定:NO)、このステップ123を繰り返し実行する。
そして、ステップ124において、書込データWd12sを送信する。
次に、ステップ125において、送信完了したか否かを判定する。送信を完了した場合(判定:YES)、次のステップ126へ移行する。一方、送信が完了していない場合、(判定:NO)、ステップ123へ移行する。
そして、ステップ126において、処理が終了したか否かを判定する。処理が終了した場合(判定:YES)、この送信処理を終了する。一方、処理が終了していない場合(判定:NO)、ステップ121へ移行する。
次に、上記の処理装置12の作用を説明する。
先ず、クロック信号CK2の周波数切り替えについて説明する。
図9に示すように、同期信号SYNCに応じたモニタ期間毎に、カウンタ61a,62aのカウント値が更新される。同期信号SYNCに応じたタイミング(同期信号SYNCに応じて生成されるイネーブル信号EN)に基づいて、カウンタ61a,62aのカウント値が、ラッチ回路61b,62bにラッチされる。
今、図9に示すモニタ期間TM1において、カウンタ61a,62aのカウント値をそれぞれ「12Mb」,「5Mb」(Mb:Mega byte)とする。このとき、ラッチ回路61b,62bに保持されている値をそれぞれ「8Mb」,「5Mb」とする。モニタ期間TM1におけるカウンタ61a,62aのカウント値は、次のモニタ期間TM2において、ラッチ回路61b,62bに保持される。そして、ラッチ回路61b,62bに保持されたカウント値に基づいて選択信号SELが[01b]に設定される。そして、選択信号SELが変化するため、Hレベルの停止信号SHTが出力される。このHレベルの停止信号SHTにより、リード用メモリ41R,42Rとライト用メモリ41W,42Wにおける要求信号の出力が停止される。データ転送は継続されるため、データ転送にしたがって各メモリ41R〜42Wに保持されたデータの数が少なくなる。
図9において、信号SEP41Rは、図4に示すリード用メモリ41Rのエンプティ信号、信号SEP42Rは、図4に示すリード用メモリ42Rのエンプティ信号である。また、信号SEP41Wは、図4に示すライト用メモリ41Wのエンプティ信号、信号SEP42Wは、図4に示すライト用メモリ42Wのエンプティ信号である。これら全てのエンプティ信号SEP41R〜SEP42WがHレベルになると、Hレベルのトリガ信号TRGが出力される。このHレベルのトリガ信号TRGに基づいて、クロック信号CK2の周波数が切り替えられる。
同様に、モニタ期間TM3において、カウンタ61a,62aのカウント値をそれぞれ「8Mb」,「5Mb」とする。このとき、ラッチ回路61b,62bに保持されている値をそれぞれ「10Mb」,「5Mb」とする。モニタ期間TM3におけるカウンタ61a,62aのカウント値は、次のモニタ期間TM4において、ラッチ回路61b,62bに保持される。そして、ラッチ回路61b,62bに保持されたカウント値に基づいて選択信号SELが[00b]に設定される。そして、選択信号SELが変化するため、Hレベルの停止信号SHTが出力される。このHレベルの停止信号SHTにより、リード用メモリ41R,42Rとライト用メモリ41W,42Wにおける要求信号の出力が停止される。データ転送は継続されるため、データ転送にしたがって各メモリ41R〜42Wに保持されたデータの数が少なくなる。そして、各メモリ41R,42R,41W,42Wのエンプティ信号SEP41R,SEP42R,SEP41W,SEP42WがHレベルになると、Hレベルのトリガ信号TRGが出力される。このHレベルのトリガ信号TRGに基づいて、クロック信号CK2の周波数が切り替えられる。
次に、データ転送について説明する。
図10の上段は、図5に示すライト調停部32Wとライト用メモリ41Wの間のデータ転送を示し、図10の下段は図5に示すライト用メモリ41Wとライト調停部31Wの間のデータ転送を示す。
この例では、クロック信号CK2の周波数fck2を、クロック信号CK1の周波数fck1の2分の1(fck2=fck1/2)とする。
先ず、ライト調停部32Wは、Hレベルの要求信号Wr12mを出力する。ライト用メモリ41Wは、要求信号Wr12mに対してHレベルの許可信号rdymを出力する。ライト調停部32Wは、Hレベルの許可信号rdymに基づいて、クロック信号CK2に同期して書込データWd12mを順次送信する。ライト調停部32Wとライト用メモリ41Wの間のバス幅は、例えば4バイトである。したがって、ライト調停部31Wは、「0」番目から「3」番目までのデータ([0−3]と表記)を表記する。なお、以下、の説明において、[0−3]データとする。そして、同様のデータについても同様に表記し、説明する。
ライト用メモリ41WのライトポインタWPは、転送開始において、「0」番目のレジスタ91を示す。そして、ライト用メモリ41Wは、[0−3]データを受信し、これをライトポインタWPにて示す「0」番目のレジスタ91に格納し、ライトポインタWPを「1」に更新する。
次に、ライト調停部32Wは、クロック信号CK2に基づいて[4−7]データを送信する。ライト用メモリ41Wは、[4−7]データを受信し、これをライトポインタWP「1」のレジスタ91に格納し、ライトポインタWPを「2」に更新する。
同様に、ライト調停部32Wは、クロック信号CK2に基づいて[252−255]データを送信する。そして、ライト調停部32Wは、全てのデータを送信したため、Lレベルの要求信号Wr12mを出力する。
ライト用メモリ41Wは、[252−255]データを受信し、これをライトポインタWP「63」のレジスタ91に格納し、ライトポインタWPを「0」に更新する。そして、ライト用メモリ41Wは、Lレベルの許可信号rdymを出力する。
ライト用メモリ41Wには、クロック信号CK1,CK2の周波数fck1,fck2に基づいて、「33」のしきい値wpthが設定されている。
ライト用メモリ41Wは、ライトポインタWPをしきい値wpthと比較した結果に基づいて、Hレベルの要求信号Wr12sを出力する。ライト調停部31Wは、要求信号Wr12sに対してHレベルの許可信号rdysを出力する。ライト用メモリ41Wは、Hレベルの許可信号rdysに基づいて、クロック信号CK1に同期して書込データWd12sを順次送信する。
先ず、ライト用メモリ41Wは、クロック信号CK1に基づいて、[0−3]データ(図10では「0」のみを表記。以下、ライト用メモリ41Wから送信されるデータについて同様に表記する。)を送信する。次に、クロック信号CK1に基づいて、[4−7]データを送信する。そして、最後に、クロック信号CK1に基づいて、[252−255]データを送信する。
この最後のデータ([252−255]データ)を送信するタイミングは、この最後のデータを受信してレジスタ91に格納した直後であることが、転送効率において好適である。転送効率は、レイテンシTL及び占有期間TOに基づく。レイテンシTLは、ライト調停部32Wが書込データWd12mの送信を開始してから、ライト調停部31Wが書込データWd12sの受信を開始するまでに要する時間である。占有期間TOは、ライト用メモリ41Wが書込データWd12sを受信するために必要な時間(受信の開始から終了までの期間)である。レイテンシTL及び占有期間TOは、例えばクロック信号CK1のサイクル数により表される。占有期間TOが短く、レイテンシTLと占有期間TOの合計値が少ない方が、転送効率が良いといえる。図10に示す転送の場合、レイテンシTLは65サイクルであり、占有期間TOは64サイクルである。したがって、ライト調停部32Wからライト調停部31Wへの書込データの転送は、129サイクルで終了する。
次に、比較例のデータ転送について説明する。なお、便宜上、同様の部材については実施形態の部材と同じ符号を用いて説明する。
図11の上段は、ライト調停部32Wとライト用メモリ41Wの間のデータ転送を示し、図11の中段は第1の比較例におけるライト用メモリ41Wとライト調停部31Wの間のデータ転送を示す。そして、図11の下段は第2の比較例におけるライト用メモリ41Wとライト調停部31Wの間のデータ転送を示す。
第1の比較例は、ライト用メモリ41Wにデータが格納される毎に要求信号Wr12sを出力するものである。この場合、クロック信号CK1の2周期毎に要求信号Wr12sが出力される。ライト用メモリ41Wとライト調停部31Wの間の転送は、クロック信号CK1の1周期にて行われる。したがって、ライト調停部31Wは、ライト用メモリ41Wにデータが格納されるまでの間、待機状態となる。つまり、ライト調停部31Wは、バス幅の書込データWd12sの受信と、待機状態とを交互に繰り返す。この場合、占有期間TOは127サイクルとなる。なお、レイテンシTLは、クロック信号CK2により[0−3]データをレジスタ91に格納する期間、つまり2サイクルとなる。従って、この第2の比較例では、書込データの転送期間は、129サイクルとなる。しかし、占有期間TOが上記実施形態の約2倍となる。ライト調停部31Wは、この占有期間TOにおいて、図3に示す処理部21a〜21fや調停部33〜35の要求信号を受け付けることができない。したがって、第1の比較例の転送効率は、上記の実施形態と比べ良くないといえる。
第2の比較例は、ライト用メモリ41Wに全ての書込データWd12mを格納した後に、ライト用メモリ41Wから書込データWd12sを送信するものである。この場合、レイテンシTLは128サイクル、占有期間TOは64サイクルである。書込データWd12sの送信処理における効率は、上記した第1の比較例よりも良く、上記の実施形態と同じである。しかし、レイテンシTLが上記の実施形態の約2倍となる。このため、書込データの転送に、192サイクルを要する。したがって、第2の比較例の転送効率は、上記の実施形態と比べ良くないといえる。
このように、本実施形態の場合、クロック信号CK1の周波数fck1とクロック信号CK2の周波数fck2の比に応じてしきい値wpthを設定することで、レイテンシTLを最小限に抑え、効率の良いデータ転送を行うことができる。
ところで、図3に示す調停回路27は、図1に示す撮像装置10の動作状態(モード)に応じて、各処理部21a〜25cに対する優先度を調整する。
例えば、図2に示すように、静止画撮影の場合、調停部[3]と調停部[4]、つまり、図3に示す調停部33,34に対してクロック信号CK3,CK4を供給する。図1に示す撮像部11にて取り込んだ画像データを表示部15に表示する。また、画像データを調停部33に接続された処理部23a(静止画コーデック)にて符号化し、符号化後の画像データを調停部34に接続された処理部24a(カードインタフェース)を介して図1に示す記録部16に記録する。
静止画撮影のモードにおいて、シャッターボタンを所定時間以上操作すると、操作している間又は所定枚数の静止画を連写する。この静止画を連写する場合、撮像部11から画像データを取り込む処理と、表示部15に画像を表示する処理が優先される。つまり、図3に示す調停部31は、画像データを取り込む処理部21a(プリプロセス部)と、画像データを表示する処理部21f(表示部)の要求信号を、調停部33,34の要求信号よりも優先する。
この動作モードにおいて、図1に示す処理装置12は、撮像部11により取り込んだ画像データを表示部15に表示させる。そして、操作部13に含まれるシャッターボタンを押し下げている間、図3に示す処理部21a(プリプロセス部)によって画像データ(ベイヤデータ)をメモリ14に格納する。シャッターボタンがリリースされると、メモリ14に格納した画像データを処理部23a(静止画コーデック)により符号化し、符号化後の画像データを処理部24a(カードインタフェース)を介して図1に示す記録部16(メモリカード)に記録する。
シャッターボタンを押し下げている間、画像データをメモリ14へ取り込む処理と画像データを表示部15に表示する処理の優先度が、符号化処理や記録部16への記録の処理の優先度よりも高く設定される。このため、メモリコントローラ28に対する転送データ量において、調停部33,34にかかる転送データ量の割合が少なくなる。したがって、図3に示す転送制御部52は、調停部33,34に対して低い周波数(例えば、クロック信号CK1の周波数の1/4)のクロック信号CK3,CK4を供給するようにクロック制御部26を制御する。これにより、処理部23a,24aの処理速度(単位時間において処理するデータの量)を低くし、処理を継続しながらシャッターボタンの押し下げ中にメモリ14に画像データを取り込む処理や画像の表示に対する影響を少なくすることができる。
シャッターボタンをリリースした後は、撮像部11から画像データの取り込む処理や画像を表示部15に表示する処理を優先する必要が無くなる。このため、メモリコントローラ28に対する転送データ量において、調停部33,34にかかる転送データ量の割合が多くなる。したがって、図3に示す転送制御部52は、調停部33,34に対して高い周波数(例えば、クロック信号CK1の周波数と等しい)のクロック信号CK3,CK4を供給するようにクロック制御部26を制御する。これにより、処理部23a,24aの処理速度(単位時間において処理するデータの量)を高くし、シャッターボタンの押し下げ中にメモリ14に格納した複数フレームの画像データの処理を短時間で終了させることができる。このように、取り溜めた画像データを短時間で処理することで、次の撮影に備えることができる。
次に、クロック信号の供給について説明する。
図12に示すように、クロック制御部26は、クロック信号CK1を出力するクロック制御部26a、クロック信号CK2を出力するクロック制御部26bを含む。
クロック制御部26aから出力されるクロック信号CK1は、信号伝達部201aを介して、調停回路27の調停部31と、処理部21a,21bに供給される。信号伝達部201aは、少なくとも1つのクロックバッファ202aと、クロック信号CK1を伝達する配線を含む。クロック制御部26aと調停部31、処理部21a,21bの間のクロックバッファ202aの数は、それらの間の伝送経路に応じて、調停部31と処理部21a,21bにおけるクロック信号CK1の変化を同じタイミングとするように設定される。
処理部21aは、レジスタ211a,スイッチ212a,内部回路213aを含む。レジスタ211aにはCPU29によって設定値が格納される。CPU29は、撮影装置の動作に応じた設定値をレジスタ211aに格納する。スイッチ212aは、レジスタ211aに格納された設定値に応じてオンオフする。スイッチ212aがオンすると、クロック信号CK1が内部回路213aに供給され、スイッチ212aがオフすると、クロック信号CK1は内部回路213aに供給されない。したがって、処理部21aは、レジスタ211aの設定値に応じて動作または停止する。
処理部21bは、処理部21aと同様に、レジスタ211b,スイッチ212b,内部回路213bを含む。スイッチ212bは、レジスタ211bに格納された設定値に応じてオンオフし、オンしたスイッチ212bを介してクロック信号CK1が内部回路213bに供給される。したがって、処理部21bは、レジスタ211bの設定値に応じて動作または停止する。
なお、図3に示す処理部21c〜21fは、図12に示す処理部21a,21bと同様であり、クロック信号CK1も同様に供給される。このため、図12では、処理部21c〜21fについて省略している。
クロック制御部26bはレジスタ231,スイッチ232を含む。レジスタ231にはCPU29によって撮影装置の動作に応じた設定値が格納される。スイッチ232は、レジスタ231の設定値に応じてオンオフする。スイッチ232がオンすると、クロック制御部26bからクロック信号CK2が出力される。一方、スイッチ232がオフすると、クロック信号CK2の出力が停止される。
クロック制御部26bから出力されるクロック信号CK2は、信号伝達部201bを介して、処理部22a,22bと調停部32に供給される。信号伝達部201bは、少なくとも1つのクロックバッファ202bと、クロック信号CK2を伝達する配線を含む。クロック制御部26bと調停部32、処理部22a,22bの間のクロックバッファ202bの数は、それらの間の伝送経路に応じて、調停部32と処理部22a,22bにおけるクロック信号CK2の変化を同じタイミングとするように設定される。
処理部22aは、処理部21a、21bと同様に、レジスタ221a,スイッチ222a,内部回路223aを含む。スイッチ222aは、レジスタ221aに格納された設定値に応じてオンオフし、オンしたスイッチ222aを介してクロック信号CK2が内部回路223aに供給される。このように、処理部22aは、レジスタ221aの設定値に応じて動作または停止する。
処理部22bは、処理部22aと同様に、レジスタ221b,スイッチ222b,内部回路223bを含む。スイッチ222bは、レジスタ221bに格納された設定値に応じてオンオフし、オンしたスイッチ222bを介してクロック信号CK2が内部回路223bに供給される。このように、処理部22bは、レジスタ221bの設定値に応じて動作または停止する。
なお、図3に示すクロック制御部26により生成されたクロック信号CK3〜CK5は、図12に示す信号伝達部201a,201bと同様の信号伝達部により各処理部23a〜25cと調停部33〜35に供給される。
クロック制御部26bから出力されるクロック信号CK2を処理部22a,22bと調停部32に供給する信号伝達部201bにおいて、クロック信号CK2が停止すると、信号伝達部201bに含まれるクロックバッファ202bは、静止状態となる。例えば、CMOS構造のクロックバッファ202bの場合、静止状態のクロックバッファ202bにおける消費電力はほぼゼロ「0」である。したがって、クロック信号CK2を停止することにより、信号伝達部201bにおける消費電力は、クロック信号CK2を供給する場合より少なくなる。
なお、クロック制御部26は、クロック信号CK2に対応するクロック制御部26bと同様に、各クロック信号CK3〜CK5(図3参照)に対応するクロック制御部を含む。そして、クロック制御部から出力されるクロック信号CK3〜CK5を処理部23a〜25cと調停部33〜35に供給する信号伝達部においても同様である。
また、図3に示す処理部23a〜25cは、図12に示す処理部22a,22bと同様に、レジスタの設定値に応じてオンオフするスイッチを含み、オンしたスイッチを介してクロック信号CK3〜CK5が内部回路に供給される。このように、各処理部23a〜25cは、レジスタの設定値に応じて動作または停止する。つまり、CPU29は、設定値を各処理部21a〜25cに設定し、各処理部21a〜25cは、設定値に応じて動作または停止する。したがって、CPU29は、処理部21a〜25cそれぞれの動作を制御する。このように、CPU29は、撮影装置の動作に応じて必要な処理部を動作させ、動作に不要な処理部を停止させる。
調停部32は、複数(図12において2つ)のマスタインタフェース(「マスタI/F」と表記)250a,250bと、複数(図12において3つ)のスレーブインタフェース(「スレーブI/F」と表記)251a〜251cを有している。マスタインタフェース250a,250bは調停部31に接続される。スレーブインタフェース251a,251bは処理部22aに接続され、スレーブインタフェース251cは処理部22bに接続されている。調停部32は、クロック信号CK2に基づいて、処理部22aから出力される2つの要求信号と、処理部22bから出力される1つの要求信号を受け、それらの要求信号を調停する。そして、調停部32は、調停結果に応じた2つの要求信号を調停部31に出力する。
調停部31は、1つのマスタインタフェース240を有し、そのマスタインタフェース240はメモリコントローラ28と接続されている。また、調停部31は、複数(図12において2つ)のスレーブインタフェース241a,241bを有している。スレーブインタフェース241a,241bは処理部21a,21bと接続されている。なお、図12では省略したが、調停部31は、図3に示す処理部21c〜21fと接続されたスレーブインタフェースを有している。
また、調停部31は複数(図12において2つ)のスレーブインタフェース242a,242bを有している。スレーブインタフェース242a,242bは、調停部32のマスタインタフェース250a,250bと接続されている。スレーブインタフェース242a,242bにはクロック信号CK2が供給される。スレーブインタフェース242a,242bは、クロック信号CK2に基づいて動作する。したがって、クロック信号CK2が供給されないとき、スレーブインタフェース242a,242bが停止するため、調停部31における消費電力が少なくなる。
なお、図12では省略したが、調停部31は、図3に示す調停部33〜35のマスタインタフェースと接続されたスレーブインタフェースを有している。調停部33と接続されるスレーブインタフェースにはクロック信号CK3が供給される。同様に、調停部34に接続されるスレーブインタフェースにはクロック信号CK4が供給され、調停部35に接続されるスレーブインタフェースにはクロック信号CK5が供給される。各調停部33〜35は、供給されるクロック信号CK3〜CK5に基づいて動作する。したがって、クロック信号CK3〜CK5の供給をそれぞれ停止することで、調停部33〜35に接続されたスレーブインタフェースの動作を停止させることが可能であり、スレーブインタフェースの停止に応じて調停部31における消費電力が低下する。
次に、調停部31,32の一例を説明する。
図13に示すように、調停部32は、マスタインタフェース250a,250b、スレーブインタフェース251a〜251c、調停機能部252、インタフェース選択部253を有している。
スレーブインタフェース251a〜251cはそれぞれキュー(queue )を有している。スレーブインタフェース251aは、図12に示す処理部22aから出力される要求信号をキューに格納し、格納した順序で出力する。同様に、スレーブインタフェース251b,251cは、処理部22a,22bから出力される要求信号をキューに格納し、格納した順序で出力する。
調停機能部252には、複数(図本実施形態では3つ)の要求信号、即ち、スレーブインタフェース251a〜251cにて受け付けた要求信号が入力される。調停機能部252には複数の優先レベルが設定され、各優先レベルには少なくとも1つのチャネル番号が設定されている。チャネル番号は、調停機能部252に入力される要求信号に対して設定されている。例えば、調停機能部252には2つの優先レベルが設定され、各優先レベルには要求信号のうちの少なくとも1つに応じたチャネル番号が設定されている。信号選択情報は、このチャネル番号を含む。
調停機能部252は、各優先レベル内において、設定されたチャネル番号について競合する要求をラウンドロビン方式により調停する。更に、調停機能部252は、各設定レベルにおいて選択したチャネル番号について競合する要求を調停する。調停機能部252には、このレベル間調停において、各レベルにはそれぞれ選択回数が設定されている。各レベルの選択回数は、例えば各レベルの優先度に応じて、それぞれのレベルよりも優先度が高いレベルに設定された選択回数より少ない選択回数が設定されている。
調停機能部252は、上位レベル、即ち優先度の高いレベルに設定されたチャネル番号を順次選択する。そして、調停機能部252は、各レベルに設定された回数のチャネル番号を選択すると、そのレベルよりも下位、即ち低いレベルに設定されたチャネル番号を、そのレベルに設定された回数選択する。即ち、調停機能部252は、各優先レベルに設定された選択回数の比率に応じて、各優先レベルのチャネル番号即ち要求信号を選択し、選択した要求信号を出力する。従って、調停機能部252は、優先レベルの高い要求信号が多い場合であっても、所定の割合で優先レベルの低い要求信号を選択する。
そして、調停機能部252は、選択した要求信号と、その選択した要求信号を出力した処理部の番号(マスタ番号)を出力する。
インタフェース選択部253は、変換部254、切替部255、CPUインタフェース(「CPU I/F」と表記)256を有している。CPUインタフェース256は、図3に示すCPU29と接続されている。CPU29は、調停部32に接続された処理部22a,22b(図12参照)のマスタインタフェースに対応するマスタ番号とそのマスタ番号に対して関連付けたマスタインタフェース250a,250bのインタフェース番号を変換部254に設定する。
図12に示すように、スレーブインタフェース251aとスレーブインタフェース251bは処理部22aのマスタインタフェースに接続され、スレーブインタフェース251cは処理部22bのマスタインタフェースに接続されている。なお、図12では、マスタインタフェースを省略している。
スレーブインタフェース251aに接続された処理部22aのマスタインタフェースに対応するマスタ番号と、マスタインタフェース250aのインタフェース番号が関連付けられて変換部254に設定されている。また、スレーブインタフェース251bに接続された処理部22aのマスタインタフェースに対応するマスタ番号と、マスタインタフェース250bのインタフェース番号が関連付けられて変換部254に設定されている。さらに、スレーブインタフェース251cに接続された処理部22bのマスタインタフェースに対応するマスタ番号と、マスタインタフェース250bのインタフェース番号が関連付けられて変換部254に設定されている。
変換部254は、調停機能部252により選択された要求信号のマスタ番号を、設定にしたがってマスタインタフェース番号に変換する。
切替部255は、マスタインタフェース番号に応じたマスタインタフェースを変換部254に接続する。これにより、インタフェース選択部253は、調停機能部252により選択された要求信号を、その要求信号を出力する処理部に対して設定されたインタフェース番号のマスタインタフェースに出力する。また、インタフェース選択部253は、調停機能部252により選択された要求信号のマスタ番号と等しい識別番号(ID番号)をマスタインタフェースに出力する。
したがって、図12に示す処理部22aから出力される2つの要求信号のうち、一方の要求信号はマスタインタフェース250aから出力され、他方の要求信号はマスタインタフェース250bから出力される。そして、図12に示す処理部22bから出力される1つの要求信号はマスタインタフェース250bから出力される。
調停部31は、スレーブインタフェース241a,241b,242a,242b、調停機能部246、CPUインタフェース(「CPU I/F」と表記)247を有している。なお、図13では、図3に示す処理部21c〜21f及び調停部33〜35に対応するスレーブインタフェース、及び図12に示すマスタインタフェース240を省略している。
各スレーブインタフェース241a〜242bはそれぞれキュー(queue )を有している。スレーブインタフェース241aは、図12に示す処理部21aから出力される要求信号をキューに格納し、格納した順序で出力する。同様に、スレーブインタフェース241bは、処理部21bから出力される要求信号をキューに格納し、格納した順序で出力する。また、スレーブインタフェース242a,242bは、調停部32から出力される要求信号をキューに格納し、格納した順序で出力する。
調停機能部246には、複数(図本実施形態では4つ)の要求信号、即ち、スレーブインタフェース241a〜242bから出力される要求信号が入力される。調停機能部246には複数の優先レベルが設定され、各優先レベルには少なくとも1つのチャネル番号が設定されている。チャネル番号は、調停機能部246に入力される要求信号に対して設定されている。例えば、調停機能部246には3つの優先レベルが設定され、各優先レベルには要求信号のうちの少なくとも1つに応じたチャネル番号が設定されている。このチャネル番号は信号選択情報はこのチャネル番号を含む。
調停機能部246は、各優先レベル内において、設定されたチャネル番号について競合する要求をラウンドロビン方式により調停する。更に、調停機能部246は、各設定レベルにおいて選択したチャネル番号について競合する要求を調停する。調停機能部246には、このレベル間調停において、各レベルにはそれぞれ選択回数が設定されている。各レベルの選択回数は、例えば各レベルの優先度に応じて、それぞれのレベルよりも優先度が高いレベルに設定された選択回数より少ない選択回数が設定されている。
調停機能部246は、上位レベル、即ち優先度の高いレベルに設定されたチャネル番号を順次選択する。そして、調停機能部246は、各レベルに設定された回数のチャネル番号を選択すると、そのレベルよりも下位、即ち低いレベルに設定されたチャネル番号を、そのレベルに設定された回数選択する。即ち、調停機能部246は、各優先レベルに設定された選択回数の比率に応じて、各優先レベルのチャネル番号即ち要求信号を選択する。従って、調停機能部246は、優先レベルの高い要求信号が多い場合であっても、所定の割合で優先レベルの低い要求信号を選択する。
これにより、低い優先レベルの要求信号を確実に選択してその要求信号を出力する処理部がメモリ14をアクセスする権利、即ちメモリ14が接続された共有バスの使用権を獲得することができる。
そして、調停機能部246は、選択した要求信号に対する受付信号を、その要求信号を受けたスレーブインタフェースを介して出力する。また、調停機能部246は、選択した要求信号をメモリコントローラ28に出力する。例えば、スレーブインタフェース241aによる受けた要求信号を選択した場合、その要求信号に対する受付信号は、スレーブインタフェース241aから図3に示す処理部21aに対して出力される。処理部21aは、受付信号に基づいて、バスBL及びメモリコントローラ28を介してメモリ14をアクセスする。
また、スレーブインタフェース242aにより受けた要求信号を選択した場合、その要求信号に対する受付信号は、スレーブインタフェース242aを介して調停部32に対して出力される。調停部32は、マスタインタフェース250aにて受け取った受付信号に基づいて、そのマスタインタフェース250aのインタフェース番号に対応するマスタ番号の処理部が接続されたスレーブインタフェースを介して図3に示す処理部22aに対して受付信号を出力する。処理部22aは、受付信号に基づいて、バスBL及びメモリコントローラ28を介してメモリ14をアクセスする。
次に、クロック信号を停止するときの処理を説明する。
例えば、図3に示す処理部22a,22b及び調停部32に対するクロック信号CK2を停止するときの処理を説明する。
図14に示すように、ステップ261において、CPU29は、処理部22a,22b及び調停部32が動作しないモード(非動作モード)に移行したか否かを判定する。例えば、図2において、動画撮影を行うモード(動画モード)から静止画撮影を行うモード(静止画モード)に変更する。この場合、「調停部[2]」、つまり図3に示す調停部32に接続された処理部22a,22bが不要となる。非動作モードに移行したと判定した場合、ステップ262に移行する。
次に、ステップ262において、CPU29は、調停部32に接続されたバスマスタの動作状態を確認する。すなわち、CPU29は、調停部32に接続された処理部22a,22bの動作状態を確認する。処理部22a,22bの動作状態は、各処理部22a,22bの処理終了や転送終了に基づく割り込み信号、等によって判定される。そして、ステップ263において、CPU29は、全てのバスマスタ、つまり処理部22a,22bが処理を終了したか否かを判定する。処理部22a,22bの処理が終了していないと判定した場合、ステップ262に移行して処理部22a,22bの動作状態を確認する。処理部22a,22bの処理が終了した場合、次のステップ264に移行する。
ステップ264において、CPU29は、調停部31に対して構成変更を指示する。つまり、CPU29は、図13に示す調停機能部246に対して、優先順位等を含む構成情報を設定する。
次に、ステップ265において、調停部31は、スレーブインタフェースに対して、マスク信号等により要求信号の受け付けを保留する。
そして、ステップ266において、調停部31は、発行した要求信号に対するデータ転送が終了したか否かを判定する。データ転送が終了していない場合、データ転送が終了するまでステップ266における判定処理を実行する。データ転送が終了した場合、次のステップ267へ移行する。
調停部31は、バススレーブであるメモリコントローラ28に対して発行した要求信号に対する処理状態、つまりバスマスタとバススレーブの間の転送状態を確認する機能を有する。調停部31は、転送状態を確認し、メモリコントローラ28に対して発行した最後の要求信号に対するデータ転送が終了したと判定すると、ステップ267において、CPU29に対して例えば割り込み信号により構成変更可能である旨を通知する。CPU29に対する割り込み信号は、構成変更可能信号の一例である。
次に、ステップ268において、CPU29は、調停部32と、調停部32に接続された処理部22a,22bに対するクロック信号CK2を停止する。CPU29は、クロック信号CK2を出力するクロック制御部26bのレジスタ231に所定の設定値を格納する。図12に示すように、クロック制御部26bのスイッチ232は、レジスタ231の設定値に応じてオフする。これにより、クロック信号CK2の出力が停止される。なお、CPU29は、各処理部22a、22bのレジスタ221a,221bに対して動作停止を示す設定値を格納し、スイッチ222a,222bはその設定値に応じてオフする。
そして、ステップ269において、調停部31は、CPU29により設定された構成情報にしたがって構成を変更する。例えば、調停部31は、調停部32に接続されたバスマスタである処理部22a,22bの優先順位を割り当てから外し、動作を継続するバスマスタの優先順位を動作モードに応じた値に変更する。
次いで、ステップ270において、調停部31は、例えば要求信号に対するマスクを解除し、スレーブインタフェースから入力する要求信号の受け付けを再開する。
次に、クロック信号を供給するときの処理を説明する。
なお、図3に示す処理部22a,22b及び調停部32に対してクロック信号CK2を供給するときの処理を説明する。
図15に示すように、ステップ271において、CPU29は、処理部22a,22b及び調停部32が動作するモード(動作モード)に移行したか否かを判定する。例えば、図2において、静止画撮影を行うモード(静止画モード)から動画撮影を行うモード(動画モード)に変更する。この場合、「調停部[2]」、つまり図3に示す調停部32に接続された処理部22a,22bが必要となる。動作モードに移行したと判定した場合、ステップ272に移行する。
ステップ272において、CPU29は、調停部31に対して構成変更を指示する。つまり、CPU29は、図13に示す調停機能部246に対して、優先順位等を含む構成情報を設定する。
次に、ステップ273において、調停部31は、スレーブインタフェースに対して、マスク信号等により要求信号の受け付けを保留する。
そして、ステップ274において、調停部31は、発行した要求信号に対するデータ転送が終了したか否かを判定する。データ転送が終了していない場合、データ転送が終了するまでステップ274における判定処理を実行する。データ転送が終了した場合、調停部31は、次のステップ275において、CPU29に対して例えば割り込み信号により構成変更可能である旨を通知する。
次に、ステップ276において、CPU29は、調停部32と調停部32に接続された処理部22a,22bに対してクロック信号CK2を供給するように設定する。つまり、CPU29は、図12に示すクロック制御部26bのレジスタ231に設定値を格納する。クロック制御部26bのスイッチ232はレジスタ231の設定値に従ってオンする。これにより、クロック信号CK2は調停部32及び処理部22a,22bに供給される。
次いで、ステップ277において、調停部31は、CPU29により設定された構成情報にしたがって構成を変更する。例えば、調停部31は、構成情報にしたがって、調停部32に接続されたバスマスタである処理部22a,22bに対して優先順位を割り当てる。そして、調停部31は、ステップ278において、例えば要求信号に対するマスクを解除し、スレーブインタフェースから入力する要求信号の受け付けを再開する。
そして、ステップ279において、CPU29は、調停部32に接続された処理部22a,22bを起動する。すなわち、CPU29は、図12に示す処理部22a,22bのレジスタ221a,221bに対して動作許可を示す設定値を格納し、スイッチ222a,222bはその設定値に応じてオンする。これにより、内部回路223a,223bは、供給されるクロック信号CK2に基づいて動作する。
上記したように、図14と図15に示す処理は処理部22a,22b及び調停部32に対するものである。CPU29は、処理部22a,22b及び調停部32に対する処理と同様に、動作状態に応じて不要となる処理部及び調停部に対して処理を行う。
次に、各調停部31〜35における調停機能部の一例を説明する。
図16は、調停部31に含まれる調停機能部246(図13参照)の一例を示すブロック図である。なお、以下の説明において、7つの要求信号W0〜W6に対する調停機能部を説明する。
図16に示すように、調停機能部246は、設定されたレベルに対応する複数(図16では3つ)のレベル内調停部281a〜281cを有する。例えば、レベル内調停部281aは1番目の優先度、即ち最も高い優先度に設定され、レベル内調停部281bは2番目の優先度に設定され、レベル内調停部281cは3番目の優先度、即ち最も低い優先度に設定されている。
各レベル内調停部281a〜281cには、それぞれ要求信号W0〜W6が入力される。また、各レベル内調停部281a〜281cには、それぞれイネーブル信号ENa1〜ENc1が入力される。イネーブル信号ENa1〜ENc1は、それぞれのレベル内調停部281a〜281cが出力したチャネル番号に対してバス使用権が確定したか否かを示す。各レベル内調停部281a〜281cは、イネーブル信号ENa1〜ENc1に基づいて、それぞれが出力したチャネル番号についてバス使用権が確定した場合に、所定の方式(本実施形態ではラウンドロビン方式)により優先度を変更する。
各レベル内調停部281a〜281cには、それぞれ信号選択情報が格納されている。信号選択情報は、少なくとも1つのチャネル番号を含む。また、信号選択情報は、それぞれのレベル内調停部281a〜281cにおいて、調停の優先度が設定されている。各レベル内調停部281a〜281cは、それぞれ設定されたチャネル番号に対応する要求信号の調停を行い、要求の有無を示す有効信号SE1〜SE3を生成する。そして、各レベル内調停部281a〜281cは、イネーブル信号(確定信号)に応答して調停結果に応じたチャネル番号を出力する。そして、各レベル内調停部281a〜281cは、上記のイネーブル信号ENa1〜ENc1に基づいて、各信号選択情報の優先度を変更する。
調停機能部246は、設定されたレベルに対応する2つの優先フラグ生成部282a,282bを有している。各優先フラグ生成部282a,282bは、要求信号が競合する場合に、それぞれ対応するレベルの要求信号を優先するか、他のレベルの要求信号を優先するかを示す優先フラグを生成する。従って、最下位以外のレベルを優先しない場合、自動的に最下位のレベルの要求信号が選択されるため、最下位以外のレベルに対応して優先フラグ生成部が設けられている。
優先フラグ生成部282aには、イネーブル信号ENa1及びイネーブル信号ENa2が入力される。イネーブル信号ENa1は、優先フラグ生成部282aが対応するレベルの要求(信号、チャネル番号)についてバス使用権が確定したか否かを示す。イネーブル信号ENa2は、他のレベルの要求(信号、チャネル番号)についてバス使用権が確定したか否かを示す。即ち、優先フラグ生成部282aは、イネーブル信号ENa1により当該優先レベルのチャネル番号について使用権が確定したことを確認し、イネーブル信号ENa2により他のレベルのチャネル番号について使用権が確定したことを確認する。優先フラグ生成部282aは、最上位の優先レベルに対応する。従って、優先フラグ生成部282aは、自身のレベルに対応するチャネル番号についてバス使用権が確定したか、自身より低いレベルのチャネル番号についてバス使用権が確定したかを判断する。優先フラグ生成部282aは、カウント機能を有し、それぞれバス使用権が確定した回数をカウントする。そして、優先フラグ生成部282aは、それぞれのカウント値に基づいて、優先フラグSP1を生成する。
優先フラグSP1は、例えば2値の信号であり、値(例えば「0」)の場合に、当該レベルのチャネル番号が優先であることを示し、値(例えば「1」)の場合に、他のレベルのチャネル番号が優先であることを示す。
優先フラグ生成部282bには、優先フラグ生成部282aと同様に、イネーブル信号ENb1及びイネーブル信号ENb2が入力される。イネーブル信号ENb1は、優先フラグ生成部282bが対応するレベルの要求(信号、チャネル番号)についてバス使用権が確定したか否かを示す。イネーブル信号ENb2は、他のレベルの要求(信号、チャネル番号)についてバス使用権が確定したか否かを示す。優先フラグ生成部282bは、イネーブル信号ENb1及びイネーブル信号ENb2に基づいて、優先フラグSP2を生成する。
上記したように、優先フラグ生成部282aは、自身のレベル(最上位レベル)を優先するか、他のレベル即ち自身より下位のレベルを優先するかを示す優先フラグSP1を生成する。同様に、優先フラグ生成部282bは、自身のレベルを優先するか他のレベルを優先するかを示す優先フラグSP2を生成する。他のレベルについて、最上位のレベルについては、優先フラグ生成部282aに入力されるイネーブル信号ENa1により示されている。従って、優先フラグ生成部282bは、自身のレベルを優先するか、自身より下位のレベルを優先するかを示す優先フラグSP2を生成する。
調停機能部246は、設定されたレベルに対応する2つのレベル間調停部283a,283bを有している。
レベル間調停部283aには、レベル内調停部281aから出力される有効信号SE1と、優先フラグ生成部282aから出力される優先フラグSP1と、オア回路285の出力信号SE21が入力される。オア回路285には、レベル内調停部281bから出力される有効信号SE2と、レベル内調停部281cから出力される有効信号SE3が入力される。オア回路285は、両有効信号SE2,SE3を論理和演算して合成信号SE21を生成する。この合成信号SE21は、レベル内調停部281b及びレベル内調停部281cのうちの少なくとも一方について有効となる要求信号が入力されていることを示す。つまり、合成信号SE21は、レベル間調停部283aの設定レベルに対して、そのレベルよりも下位のレベルについて有効な要求信号があることを示す有効信号である。
レベル間調停部283aは、両有効信号SE1,SE2のうちの何れか一方が有効な要求があることを示す場合、その有効な要求があることを示す有効信号と等しいレベル間調停信号SA1を出力する。また、レベル間調停部283aは、両有効信号SE1,SE2がともに有効な要求であることを示す、つまり有効信号SE1,SE2が競合している場合に、優先フラグSP1に従って何れか一方を選択し、その選択した有効信号と等しいレベル間調停信号SA1を出力する。つまり、レベル間調停部283aは、優先フラグSP1に従って、自己のレベルを優先する場合には有効信号SE1を選択し、自己のレベルを優先しない、即ち他のレベルを優先する場合には有効信号SE2を選択する。
図17は、レベル間調停部283aの動作説明図である。同図において、「優先フラグ」は優先フラグ生成部282aから出力される優先フラグSP1を示し、「有効信号1」はレベル内調停部281aから出力される有効信号SE1を示し、「有効信号2」はレベル内調停部281bから出力される有効信号SE2を示す。「0」の「優先フラグ」は上位側レベルを優先することを示し、「1」の「優先フラグ」は下位側レベルを優先することを示す。「1」の「有効信号1」「有効信号2」は、設定されたDMAチャネルからの要求があることを示し、「0」は要求がないことを示す。
従って、「有効信号1」「有効信号2」がともに「1」の場合は、レベル間において要求が競合していることを示す。この場合、レベル間調停部283aは、選択結果に示すように、「0」の優先フラグに従って「有効信号1」を選択し、「1」の優先フラグに従って「有効信号2」を選択する。
同様に、レベル間調停部283bには、レベル内調停部281bから出力される有効信号SE2と、優先フラグ生成部282bから出力される優先フラグSP2と、レベル内調停部281cから出力される有効信号SE3が入力される。レベル間調停部283bは、優先フラグSP2に従って、両有効信号SE2,SE3のうちの何れか一方を選択し、選択した有効信号と等しいレベル間調停信号SA2を出力する。
各レベル間調停部283a,283bから出力されるレベル間調停信号SA1,SA2は、チャネル確定部284に入力される。このチャネル確定部284には、各レベル内調停部281a〜281cから出力されるチャネル番号SN1〜SN3が入力される。チャネル確定部284は、レベル間調停信号SA1,SA2に基づいて、各チャネル番号SN1〜SN3のうちの1つに対してバス使用権を確定し、確定したチャネル番号SDを出力する。このチャネル番号SDは、図3に示すメモリコントローラ28に供給される。
図18は、チャネル確定部284の動作説明図である。同図において、「レベル間調停信号1」はレベル間調停部283aから出力される調停信号SA1を示し、「レベル間調停信号2」はレベル間調停部283bから出力される調停信号SA2を示し、「有効信号3」はレベル内調停部281cから出力される有効信号SE3を示す。「1」の「レベル間調停信号」は対応する優先レベルのチャネル番号が有効、即ち要求があることを示す。
従って、上位レベル側の「レベル間調停信号」が「1」の場合に、その上位側レベルのチャネル番号に対してバスの使用権を確定する。そして、各「レベル間調停信号」が「0」の場合に、下位側レベル、即ち最下位レベルのチャネル番号に対してバスの使用権を確定する。
更に、チャネル確定部284は、各チャネル番号SN1〜SN3に対してバス使用権を確定したか否かを示すイネーブル信号ENa1〜ENc1を生成する。各イネーブル信号ENa1〜ENc1は、それぞれ対応するレベルのレベル内調停部281a〜281cに出力される。
レベルに対応するイネーブル信号ENb1とレベル(最下位レベル)に対応するイネーブル信号ENc1は、オア回路286に入力される。オア回路286は、イネーブル信号ENb1,ENc1を論理和演算して生成した信号を出力する。この出力信号は、最上位レベルに対応するイネーブル信号ENa2である。また、レベルに対応するイネーブル信号ENc1は、レベルについて、イネーブル信号ENb1に対して他のレベルのチャネル番号を確定したことを示す。従って、チャネル確定部284から出力されるレベルに対応するイネーブル信号ENc1は、レベルにおいて他のレベルのチャネル番号を確定したことを示すイネーブル信号ENb2であり、優先フラグ生成部282bに入力される。
次に、レベル内調停部281aの構成を説明する。
図19に示すように、レベル内調停部281aは、判定部291、選択部292、情報記憶部293、並び替え部294を有する。判定部291には所定数の要求信号(本実施形態では、すべての要求信号W0〜W6)が入力される。また、判定部291には、情報記憶部293に記憶された設定情報が入力される。
情報記憶部293は、複数(n個)のレジスタ2931 〜293n を含み、各レジスタ2931 〜293n にはそれぞれ設定情報又は非設定情報が記憶される。設定情報は判定部291に入力される要求信号W0〜W6のうち、当該レベル内調停部281aに割り当てられた要求信号を出力するDMAチャネル(処理部)のチャネル番号であり、非設定情報はチャネル番号が設定されていないことを示す値である。情報記憶部293はレジスタ2931 〜293n により構成されているため、複数のレジスタに同一値のチャネル番号を設定可能である。この設定情報及び非設定情報は、図3に示すCPU29により選択部292を介して書き込まれる。
CPU29は、電源投入時の初期化処理や、設定情報であるチャネル番号を設定チャネル値とする。各レジスタ2931 〜293n は、それぞれ記憶した情報(値)を出力する。
判定部291は、サービス間隔(バスの使用を許可する期間)毎に、各要求信号W0〜W6に基づいて、レベル内調停部281aの優先レベルに設定されたDMAチャネルによるバス使用権の要求があるか否かを判断する。そして、判定部291は、要求がある場合にはそのDMAチャネルのチャネル番号SN1と、要求があることを示す(例えばHレベル)有効信号SE1を出力する。一方、要求がない場合には、その旨を示す(例えばLレベル)有効信号SE1を出力する。
詳述すると、判定部291は、各要求信号W0〜W6がバス使用権の要求を示す(例えばHレベル)か否かを判断する。これは、要求信号W0〜W6の論理和演算結果により判断される。判定部291は、要求がある場合に、その要求を示す要求信号のチャネル番号と、各レジスタ2931 〜293n から出力される設定チャネル値とを順次比較し、最初に設定チャネル値と一致するチャネル番号を、このレベル内調停部281aにおける調停結果、即ち選択したチャネル番号とする。判定部291は、設定したチャネル番号SN1を出力するとともに、出力するチャネル番号SN1が有効であることを示す有効信号SE1を出力する。また、判定部291は、決定したチャネル番号、即ち要求信号のチャネル番号と最初に一致した設定チャネル値が記憶されたレジスタを示すポインタ情報を並び替え部294に出力する。
並び替え部294には、情報記憶部293を構成するすべてのレジスタ2931 〜293n に記憶された情報が入力される。並び替え部294は、シフトレジスタであり、判定部291から入力されたポインタ情報が示すレジスタに記憶された情報が最終のレジスタに記憶されるように、情報の並び替えを行い、その結果を選択部292に出力する。例えば、判定部291において、2番目のレジスタ2932 に記憶された設定チャネル値と等しいチャネル番号のDMAチャネルからの要求を選択した場合、判定部291は、その2番目のレジスタ2932 を示すポインタ情報を出力する。並び替え部294は、そのポインタ情報に従って、3〜n番目のレジスタ2933 〜293n に記憶された情報を2〜(n−1)番目のレジスタ2932 〜293n-1 のレジスタに記憶するとともに、2番目のレジスタ2932 に記憶された情報をn番目のレジスタ293n に記憶されるように、情報をシフトし、そのシフト結果を選択部292に出力する。尚、図ではレジスタ2933 を省略している。
選択部292には、イネーブル信号ENa1が入力される。選択部292は、図3に示すCPU29から入力される情報(設定情報及び非設定情報)をレジスタ2931 〜293n に書き込む。また、選択部292は、イネーブル信号ENa1に基づいて、該イネーブル信号ENa1がこの優先レベルの要求が確定したことを示す場合に並び替え部294から入力される情報をレジスタ2931 〜293n に書き込む。この並び替え部294及び選択部292により、情報記憶部293に記憶したチャネル番号をラウンドロビン方式により並び替え、この優先レベル内の優先順序を変更する。
次に、優先フラグ生成部282aの構成を説明する。
図20に示すように、優先フラグ生成部282aは、カウンタ制御部301、選択部302、カウンタ303、フラグ制御部304を有する。カウンタ303は、カウンタ303aとカウンタ303bとを有する。両カウンタ303a,303bは例えばアップカウンタである。両カウンタ303a,303bには、それぞれカウントアップ値が図3に示すCPU29から格納される。カウンタ303aとカウンタ303bにそれぞれ格納されるカウントアップ値は、上位側レベル内調停部即ちレベル内調停部281aと、下位側レベル内調停部即ちレベル内調停部281bの優先順位の比に応じた値である。それぞれのカウントアップ値は、例えば、「4」,「3」である。両カウンタ303a,303bは、カウンタ制御部301から出力されるカウントアップ信号に応答してカウントアップ(+1)する。そして、各カウンタ303a,303bは、それぞれカウント値がカウントアップ値と一致すると一致信号をカウンタ制御部301に出力するとともに、カウント値をクリア(=0)する。
カウンタ制御部301には、イネーブル信号ENa1とイネーブル信号ENa2が入力される。カウンタ制御部301は、イネーブル信号ENa1に応答してカウンタ303aにカウントアップ信号を出力し、イネーブル信号ENa2に応答してカウンタ303bにカウントアップ信号を出力する。イネーブル信号ENa1は、レベル間で要求が競合した場合に上位側レベル、即ちレベル内調停部281aの優先レベルのチャネル番号を確定したことを示し、イネーブル信号ENa2は、レベル間で要求が競合した場合に下位側レベル、即ちレベル内調停部281aより下位の優先レベルのチャネル番号を確定したことを示す。従って、カウンタ303aのカウント値は、調停によって上位側レベルの要求を確定した回数を示し、カウンタ303bのカウント値は調停によって下位側レベルの要求を確定した回数を示す。
カウンタ制御部301は、両カウンタ303a,303bから出力される一致信号に基づいてフラグ制御信号をフラグ制御部304に出力する。フラグ制御部304は、フラグ制御信号に応答して優先フラグSP1を生成する。詳述すると、カウンタ制御部301は、イネーブル信号ENa1に応答してカウンタ303aをカウントアップさせている間、フラグ制御信号によりフラグ制御部304から上位レベルを優先する優先フラグ(例えば値「0」、Lレベル)を出力させる。このとき、図16に示すレベル間調停部283aは、レベル内調停部281aとレベル内調停部281bからそれぞれ要求があることを示す有効信号SE1,SE2が出力されると、「0」の優先フラグSP1に応答して、上位側レベルの有効信号SE1を選択する。そして、レベル間調停部283aは、選択した有効信号を出力する。この出力信号は、上位側レベルと下位側レベルとの間で要求信号を調停したことを示すレベル間調停信号SA1である。
そして、カウンタ制御部301は、カウンタ303aが一致信号を出力すると、フラグ制御信号によりフラグ制御部304から下位レベルを優先する優先フラグ(例えば値「1」、Hレベル)を出力させる。すると、図16に示すレベル間調停部283aは、レベル内調停部281aとレベル内調停部281bからそれぞれ要求があることを示す有効信号SE1,SE2が出力されると、「1」の優先フラグSP1に応答して、下位側レベルの有効信号SE2を選択する。そして、レベル間調停部283aは、選択した有効信号を出力する。この出力信号は、上位側レベルと下位側レベルとの間で要求信号を調停したことを示すレベル間調停信号SA1である。
従って、このレベル間調停部283aは、優先フラグ生成部282aのカウンタ303aとカウンタ303bにそれぞれ設定したカウント値の回数だけ上位側レベルの要求と下位側レベルの要求をそれぞれ確定する。即ち、レベル間調停部283aは、カウンタ303a,303bに設定したカウント値の比に応じて、上位側レベルの要求を優先するとともに、下位側レベルの要求を許容する。
レベル内調停部281bは、レベル内調停部281aと同じ構成であるため、図面を省略する。
レベル内調停部281bの情報記憶部293には、少なくとも1つのチャネル番号が記憶される。従って、レベル内調停部281bにチャネル番号の設定を設定することにより、同チャネル番号のDMAチャネルに対する優先レベルを容易に設定することができる。また、レベル内調停部281aに設定したチャネル番号を削除し、同チャネル番号をレベル内調停部281bに設定することにより、同チャネル番号のDMAチャネルに対する優先レベルを容易に変更することができる。
また、各レベル内調停部281a,281bの情報記憶部293は、それぞれ複数のレジスタから構成されている。従って、例えばレベル内調停部281aにおいて同一値のチャネル番号を複数のレジスタに設定する。この場合、同一値のチャネル番号を設定したレジスタの数だけ、同チャネル番号のDMAチャネルに対してバス使用権が与えられる。即ち、設定するレジスタの数に応じて、同一レベル内において優先度を上げることができる。
同一値のチャネル番号の設定は、異なる優先レベルについても行うことができる。即ち、レベル内調停部281aとレベル内調停部281bに同じ値のチャネル番号を設定する。この場合、上記と同様に、設定したレジスタの数だけそのチャネル番号のDMAチャネルにバス使用権が与えられる。
レベル内調停部281cは、レベル内調停部281aと同じ構成であるため、図面を省略する。
このレベル内調停部281cについても、レベル内調停部281bと同様のことがいえる。即ち、各レベル内調停部281a〜281cに対してチャネル番号を設定することにより、優先レベルを容易に設定することができる。また、設定したチャネル番号を変更することにより、優先レベルを容易に変更することができる。更に、その時に動作しない処理部について、レベル内調停部281a〜281cの何れにもチャネル番号を設定しないことにより、同チャネル番号のDMAチャネルに対してバス使用権を許容しない。即ち、必要としないDMAチャネルに対してリソースであるバス使用権を設定しないため、必要とするDMAチャネルに対してバス使用権を従来に比べて多く与えることができる。
そして、優先フラグ生成部282bは、優先フラグ生成部282aと同じ構成であるため、図面を省略する。優先フラグ生成部282bのカウンタ303a,303bには、優先フラグ生成部282aと同様に、上位側レベルの要求と下位側レベルの要求を確定する値が格納されている。従って、図16に示すように、この優先フラグ生成部282bが生成する優先フラグSP2を入力するレベル間調停部283bは、レベル間調停部283aは、カウンタ303a,303bに設定したカウント値の比に応じて、上位側レベルの要求を優先するとともに、下位側レベルの要求を許容する。優先レベルが高く設定されたDMAチャネルの処理部から連続的にバス使用権の要求がある場合でも、優先レベルが最も低く設定されたレベル内調停部281cに設定されたチャネル番号のDMAチャネルについてもバス使用権を確定する。即ち、各レベル内調停部281a〜281cに設定されたチャネル番号のDMAチャネルのすべてに対してバス使用権を確実に確定することができる。
上記のレベル内調停部の処理の流れを図21に従って説明する。
先ず、各レベル内調停部に対してDMAチャネルの割当て、即ちチャネル番号の設定が行われる(ステップ311)。次に、レベル間調停部は、転送中、即ちバスが使用中か否かを判断し(ステップ312)、転送中の場合には転送終了まで待つ。転送が終了すると、レベル間調停部は、割当てチャネルの要求があるか否かを判断し(ステップ313)、要求が無い場合にはステップ312に戻る。
チャネルの要求がある場合、チャネル内調停部は要求チャネルの検索を行い(ステップ314)、優先チャネルを決定する(ステップ315)。次に、レベル内調停部は、レベル内調停部に対して有効信号の出力がディセーブル(禁止)されているか否かを判断し(ステップ316)、ディセーブルされていない場合に有効信号及びチャネル番号を出力する(ステップ317)。次に、レベル内調停部は、当グループが選択されたか否か、即ち当該レベルのチャネル番号に対してバスの使用権が確定されたか否かを判断し(ステップ318)、選択された場合にチャネル番号の並び替えを行う(ステップ319)。そして、1回のサービスについての全ての処理が終了したか否かを判断し(ステップ320)、処理終了によりステップ312に戻って次の要求を待つ。
上記の優先フラグ生成部が実行する処理の流れを図22に従って説明する。
先ず、優先フラグ生成部に対して優先フラグ初期値、優先比率(カウント値)が設定される(ステップ321)。次に、優先フラグ生成部は、優先フラグ側、即ちその時に優先しているレベル(上位側レベル又は下位側レベル)について要求受付があるか否かを判断し(ステップ322)、要求受付がある場合に要求が競合しているか否かを判断する(ステップ323)。次に、優先フラグ生成部は、競合している場合に、優先フラグ側のカウント値をダウンカウントする(ステップ324)。
次に、優先フラグ生成部は、カウント値がゼロ「0」か否か、即ち設定された数の要求を受け付けたか否かを判断し(ステップ325)、カウント値が「0」の場合に優先フラグ側の優先比率、即ちカウント値を再設定する(ステップ326)。次に、優先フラグ生成部は優先フラグを反転する、即ち優先するレベルを切り換えるように優先フラグを変更する(ステップ327)。そして、1回のサービスについての全ての処理が終了したか否かを判断し(ステップ328)、処理終了によりステップ312に戻って次の要求を待つ。
従って、図21に示す処理を記述したプログラムを記憶し、そのプログラムを実行する処理部によりレベル内調停部を構成することもできる。同様に、図22に示す処理を記述したプログラムを記憶し、そのプログラムを実行する処理部により優先フラグ生成部を生成することもできる。
次に、処理装置12の作用を説明する。
例えば、図12に示すように、処理部21a,21bは要求信号R1a,R1bを出力する。また、処理部22aは要求信号R2a0,R2a1を出力し、処理部22bは要求信号R2bを出力する。
調停部32は、スレーブインタフェース251a〜251cにより要求信号R2a0,R2a1,R2bを受け取る。調停部32は、スレーブインタフェース251bにて受け取る要求信号R2a0に基づいて、マスタインタフェース250aから要求信号RA0を出力する。そして、調停部32は、スレーブインタフェース251b,251cにて受け取る要求信号R2a1,R2bを設定に従って調停し、調停結果に基づいてマスタインタフェース250bから要求信号RA1を出力する。要求信号RA1は、要求信号R2a1と要求信号R2bのうちの何れかである。
調停部31は、スレーブインタフェース241a,241bにより要求信号R1a,R1bを受け取り、スレーブインタフェース242a,242bにより調停部32が出力する要求信号RA0,RA1を受け取る。調停部31は、各要求信号R1a,R1b,RA0,RA1を設定に従って調停し、調停結果に基づいてマスタインタフェース240から要求信号を出力する。
例えば、調停部31における設定は、スレーブインタフェース241aにて受け取る要求信号の優先度が最も高い。また、スレーブインタフェース242aにて受け取る要求信号をスレーブインタフェース242bにて受け取る要求信号よりも優先する。そして、スレーブインタフェース241bにて受け取る要求信号を、スレーブインタフェース242a,242bにて受け取る要求信号よりも高い優先度とする。したがって、各要求信号R1a,R1b,RA0,RA1における優先度は、
R1a>R1b>RA0(R2a0)>RA1(R2a1 or R2b)
となる。
そして、スレーブインタフェース241bにて受け取る要求信号の優先度の設定を変更することにより、各要求信号R1a,R1b,RA0,RA1の優先度は、
R1a>RA0(R2a0)>R1b>RA1(R2a1 or R2b)
または、
R1a>RA0(R2a0)>RA1(R2a1 or R2b)>R1b
とすることが可能となる。
図3に示すように、調停回路27は調停部31〜35を有している。処理装置12の各処理部21a〜25cは、動作頻度に応じて調停部31〜35の何れかに接続されている。処理部22a〜25cと比べて動作頻度の高い処理部21a〜21fは調停部31に直接的に接続されている。処理部22a〜25cは、同時動作又は排他的な動作に応じて、調停部32〜35に接続されている。そして、調停部32〜35は調停部31に接続されている。
CPU29は、撮影装置の動作モードにしたがって、その時々の動作において不要な処理部に対するクロック信号を停止する。例えば、図12に示すように、クロック制御部26bから出力されるクロック信号CK2は、クロックバッファ202bを介して処理部22a,22bに供給される。さらに、クロック信号CK2は、クロックバッファ202bを介して調停部32と、調停部31のスレーブインタフェース242a,242bに供給される。CPU29は、クロック制御部26bのレジスタ231に設定値を格納し、その設定値にしたがってオフするスイッチ232によりクロック信号CK2の出力が停止される。したがって、クロック信号CK2に基づいて動作する処理部22a,22b、調停部32、調停部31のスレーブインタフェース242a,242b、及びクロック信号CK2を供給する経路に配設されたクロックバッファ202bは動作を停止する。このことは、処理装置12ひいては撮影装置における消費電力を少なくする。
また、図12に示すように、処理部21aは、レジスタ211aの設定値に応じてオンオフするスイッチ212aを有している。同様に、処理部21bは、レジスタ211bによりオンオフするスイッチ212bを有している。したがって、レジスタ211a,211bに対する設定値により、処理部21a,21bそれぞれを停止させることが可能となる。同様に、処理部22aは、レジスタ221aの設定値に応じてオンオフするスイッチ222aを有し、処理部22bは、レジスタ221bによりオンオフするスイッチ222bを有している。したがって、レジスタ221a,221bに対する設定値により、処理部22a,22bそれぞれを停止させることが可能となる。なお、図3に示す処理部21c〜21f,23a〜25cについても同様である。このため、動作に対する要否に応じて各処理部21a〜25cを停止させることが可能となる。このことは、処理装置12ひいては撮影装置における消費電力を少なくする。
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)調停部32〜35は、処理部22a〜25cから出力される要求信号を調停し、調停結果に応じて調停部31に対する要求信号の出力、調停結果に応じたアクセス許可、等を行う。調停部31は、処理部21a〜21fの要求信号と、調停部32〜35から出力される要求信号の調停、調停結果に応じてメモリコントローラ28に対する要求信号の出力、調停結果に応じたアクセス許可、等を行う。
FIFOメモリ41〜48は、クロック信号CK2〜CK5に基づいて、調停部32〜35の間のデータ転送を行う。また、FIFOメモリ41〜48は、クロック信号CK1に基づいて、調停部31との間のデータ転送を行う。
モニタ部51は、調停部31とメモリコントローラ28との間のデータ転送に基づいて、調停部31の転送量と、各調停部32〜35の転送量をモニタする。転送制御部52は、モニタ部51のモニタ結果に基づいて、選択信号SELを生成する。クロック制御部26は、選択信号SELに応じてクロック信号CK2の周波数を変更する。
したがって、各調停部32〜35の転送量に応じてクロック信号CK2〜CK5の周波数が調停される。このため、例えば転送量が少ない調停部に対応するクロック信号の周波数を低くすることで、処理装置12ひいては撮影装置における消費電力を、全てのクロック信号を供給する場合と比べ低減することができる。
(2)転送制御部52は、選択信号SELに応じたしきい値wpthをFIFOメモリ41のライト用メモリ41Wに設定する。ライト用メモリ41Wは、受信したデータを書き込むレジスタ91を示すライトポインタWPをしきい値wpthと比較し、比較結果に応じて要求信号Wr12sを出力する。しきい値wpthはクロック信号CK2の周波数fck2とクロック信号CK1の周波数fck1の比に応じた値である。したがって、ライト用メモリ41Wにおいて、クロック信号CK2に基づいてライト調停部32Wから受信したデータを、しきい値wpthに応じたタイミングでライト調停部31Wに対して送信することで、動作遅延であるレイテンシTLと、送信の占有期間TOを調整し、効率の良い転送を行うことができる。
(3)モニタ部51は、調停部31からメモリコントローラ28への転送量をモニタするためのカウンタ部61W,62Wと、メモリコントローラ28から調停部31への転送量をモニタするためのカウンタ部61R,62Rを含む。カウンタ部61W,61Rは、調停部31とメモリコントローラ28の間の全ての転送にかかる転送量をカウントする。カウンタ部62W,62Rは、調停部32に係る転送量をカウントする。転送制御部52は、同期信号SYNCに基づいてイネーブル信号ENを生成する。カウンタ部61R〜62Wは、イネーブル信号ENに基づいて、フレーム毎のデータ転送量をカウントし、そのカウント値をラッチする。そして、カウンタ部61R〜62Wは、ラッチしたカウント値Rca〜Wc2を出力する。このように、同期信号SYNCに応じた期間(画像データのフレーム)毎に転送量をモニタし、その転送量にしたがってクロック信号CK2の周波数を制御することができる。
(4)クロック制御部26(26b)から出力されるクロック信号CK2は、処理部22a,22bに供給される。CPU29は、クロック制御部26(26b)のレジスタ231に設定値を格納し、その設定値にしたがってオフするスイッチ232によりクロック信号CK2の出力が停止される。したがって、クロック信号CK2に基づいて動作する処理部22a,22bは動作を停止する。このように、撮影装置(処理装置12)の動作状態に応じてクロック信号を停止することで、処理装置12ひいては撮影装置における消費電力を、全てのクロック信号を供給する場合と比べ低減することができる。
(5)各処理部21a,21b,22a,22bは、レジスタ211a,211b,221a,221bの設定値に応じてオンオフするスイッチ212a,212b,222a,222bを有している。したがって、各レジスタ211a〜221bに対して個々に設定値を設定することにより、各処理部21a〜22bを個々に停止させることができる。このため、複数の処理部22a,22bが接続された調停部32を動作させるときでも、処理部22a,22bのそれぞれを処理に応じて停止させることで、処理装置12における消費電力を低減することができる。
(6)調停部32は、調停機能部252により調停した要求信号におけるマスタ番号を、マスタインタフェース250a,250bのインタフェース番号に変換する変換部254を有し、変換後のインタフェース番号のマスタインタフェースから要求信号が出力される。調停部31は、調停部32のマスタインタフェース250a,250bと接続されたスレーブインタフェース242a,242bから受け取る要求信号を、それぞれのスレーブインタフェース242a,242bに応じた優先度(優先順位レベル)に従って調停する。したがって、変換部254における変換のための情報を変更することで、要求信号を供給するスレーブインタフェース242a,242bを変更することができる。この結果、要求信号に対する優先順位を容易に変更することができる。これにより、停止した処理部22a〜25c,調停部32〜35に応じて、そのときの処理に必要な処理部の優先度を変更することで、効率的な処理が可能となる。
尚、上記各実施形態は、以下の態様で実施してもよい。
・複数フレーム毎のモニタ結果に基づいてクロック信号CK2〜CK5の周波数を変更し、変更後のクロック信号CK2〜CK5の周波数に応じて、データ転送のタイミングを調整するようにしてもよい。また、モニタするフレームの数を変更するようにしてもよい。
・垂直同期信号VD以外の同期信号によりデータ転送をモニタするようにしてもよい。例えば、水平同期信号HDを用いてもよい。また、基準クロック信号CLK(またはクロック信号CK1)をカウントするカウンタを用いて同期信号SYNCを生成するようにしてもよい。
・制御信号生成部72において、リード比RRとライト比WRの論理積演算結果(RR AND WR)の値を選択信号SELとしてもよい。また、ライト比WRを選択信号SELとしてもよい。また、リード比RRを選択信号SELとしてもよい。
・制御信号生成部72において、カウント値Wca,Wc2,Rca,Rc2に基づいて演算により選択信号SELの値を設定してもよい。
・転送制御部52において、しきい値wpthを演算により求めてもよい。
例えば、FIFOメモリ41,42に含まれるレジスタ91の段数をFd、クロック信号CK1の周波数をfck1、クロック信号CK2の周波数をfck2、係数をkとする。係数kは1以上で、しきい値wpthがFIFOメモリに含まれるレジスタ91の段数を超えない範囲の値である。しきい値wpthは、
wpth=F×(1−fck2/fck1)+k
(但し、小数点以下は切り上げ)により求められる。なお、上記の式において、(fck2/fck1)はクロック信号CK1の周波数fck1とクロック信号CK2の周波数fck2の比である。この比は、クロック制御部26における分周比と等しい。従って、クロック制御部26において分周比を設定するための選択信号SELの値に基づいて、しきい値wpthを算出することができる。
・各調停部が有するマスタインタフェースの数を適宜変更してもよい。
例えば、図23に示すように、調停回路330は複数(図23において2つ)の調停部331,332を有している。調停部331は1つのマスタインタフェース341と複数(図23において3つ)のスレーブインタフェース342a,342b,343を有している。調停部332は1つのマスタインタフェース351と複数(図23において3つ)のスレーブインタフェース352a〜352cを有している。
調停部331と処理部361a,361bは、クロック制御部26aから出力されるクロック信号CK1に基づいて動作する。調停部332と処理部362a〜362c、及び調停部331のスレーブインタフェース343は、クロック制御部26bから出力されるクロック信号CK2に基づいて動作する。
調停部332は、スレーブインタフェース352a〜352cにより処理部362a〜362cから出力される要求信号W1a〜W1cを受け取る。そして、調停部332は、それらの要求信号W1a〜W1cを設定に応じて調停し、調停結果に応じた要求信号WAをマスタインタフェース351から出力する。要求信号WAは、要求信号W1a〜W1cのうちの何れか1つの要求信号である。
調停部331は、スレーブインタフェース342a,342bにより処理部361a,361bから出力される要求信号W0a,W0bと、スレーブインタフェース343により調停部332から出力される要求信号WAを受け取り、それらの要求信号W0a,W0b,WAを設定に応じて調停し、調停結果に応じた要求信号をマスタインタフェース341から出力する。
このように構成された調停回路330の調停部331において、設定に応じて各要求信号W0a,W0b,WAの優先度を、
W0a>W0b>WA(W1a or W1b or W1c)
または、
W0a>WA(W1a or W1b or W1c)>W0b
とすることができる。
また、図24に示すように、調停回路370は複数(図24において2つ)の調停部371,372を有している。調停部371は2つのマスタインタフェース381a,381bと複数(図24において4つ)のスレーブインタフェース382a,382b,383a,383bを有している。マスタインタフェース381aはメモリコントローラ28aを介してメモリ14aに接続され、マスタインタフェース381bはメモリコントローラ28bを介してメモリ14bに接続されている。つまり、この調停部371は、2つのバススレーブに接続されている。調停部372は2つのマスタインタフェース391a,391bと複数(図24において3つ)のスレーブインタフェース392a〜392cを有している。
調停部371と処理部361a,361bは、クロック制御部26aから出力されるクロック信号CK1に基づいて動作する。調停部372と処理部362a〜362c、及び調停部371のスレーブインタフェース383a,383bは、クロック制御部26bから出力されるクロック信号CK2に基づいて動作する。
調停部372は、スレーブインタフェース392a〜392cにより処理部362a〜362cから出力される要求信号W1a〜W1cを受け取る。そして、調停部372は、それらの要求信号W1a〜W1cを設定に応じて調停し、調停結果に応じた要求信号WA0,WA1をマスタインタフェース391a,391bから出力する。例えば、調停部372は、要求信号W1aに基づいて要求信号WA0を出力し、要求信号W1b,W1cを調停した結果に応じて要求信号WA1を出力する。
調停部371は、スレーブインタフェース382a,382bにより処理部361a,361bから出力される要求信号W0a,W0bと、スレーブインタフェース383a,383bにより調停部372から出力される要求信号WA0,WA1を受け取り、それらの要求信号W0a,W0b,WA0,WA1を設定に応じて調停し、調停結果に応じた要求信号をマスタインタフェース381a,381bから出力する。例えば、調停部371は、要求信号W0aと要求信号WA0を調停した結果に応じた要求信号をマスタインタフェース381aから出力する。また、調停部371は、要求信号W0bと要求信号WA1を調停した結果に応じた要求信号をマスタインタフェース381bから出力する。
このような調停回路370により、処理部361aと処理部362aはメモリ14aをアクセスし、処理部361bと処理部362b,362cはメモリ14bをアクセスする。なお、処理部361aと処理部362aがメモリ14bをアクセスし、処理部361bと処理部362b,362cがメモリ14aをアクセスするように設定することもできる。このように、転送チャネルにおけるバスマスタとバススレーブを容易に設定することができる。
・調停部における処理を適宜変更してもよい。
例えば、図25に示すように、調停部401はスレーブインタフェース241a,241b,242a,242b、調停機能部411、CPUインタフェース247を有している。スレーブインタフェース241a,241bは、例えば図13に示す調停部31と同様に、図3に示す処理部21a,21bに接続されている。スレーブインタフェース242a,242bは、調停部402のマスタインタフェース250a,250bに接続されている。なお、図25において、調停部401におけるマスタインタフェースは省略されている。
調停部402は、マスタインタフェース250a,250b、スレーブインタフェース251a〜251c、調停機能部421、インタフェース選択部422を有している。インタフェース選択部422は、変換部423、切替部255、CPUインタフェース256を有している。CPU29は、調停部402における優先度(優先順位レベル)に対するしきい値を変換部423に設定する。
調停機能部421は、スレーブインタフェース251a〜251cにより受け付けた要求信号を、それぞれの要求信号を出力する処理部に対して設定された優先度(優先順位レベル)にしたがって調停し、調停結果に基づいて、要求信号と優先順位レベルを出力する。
変換部423は、設定されたしきい値と優先順位レベルを比較し、比較結果に応じてインタフェース番号を設定する。例えば、変換部423は、しきい値以上の優先順位レベルをマスタインタフェース250aのインタフェース番号に変換し、しきい値より低い優先順位レベルをマスタインタフェース250bのインタフェース番号に変換する。切替部255は、インタフェース番号に応じて要求信号をマスタインタフェース250a,250bに供給する。
例えば、スレーブインタフェース251aにより受け付ける要求信号R1aの優先度を最上位(優先順位レベル=0)とする。スレーブインタフェース251bにより受け付ける要求信号R1bの優先度を中位(優先順位レベル=1)とする。スレーブインタフェース251cにより受け付ける要求信号R1cの優先度を最下位(優先順位レベル=2)とする。そして、優先順位レベルのしきい値を「0」とする。この場合、変換部423は、「0」の優先順位レベルをマスタインタフェース250aのインタフェース番号に変換し、「1」,「2」の優先順位レベルをマスタインタフェース250bのインタフェース番号に変換する。これにより、要求信号R1aはマスタインタフェース250aから出力され、要求信号R1b,R1cはマスタインタフェース250bから出力される。
調停部401の調停機能部411は、スレーブインタフェース241a,241bにて受け付けた要求信号R0a,R0bと、スレーブインタフェース242a,242bにより受け付けた要求信号RA0,RA1を、設定に従って調停し、調停結果に応じた要求信号を出力する。なお、上記のようにしきい値(=0)を設定した場合、要求信号RA0は要求信号R1aであり、要求信号RA1は要求信号R1bと要求信号R1cの何れか1つの要求信号である。
調停機能部411における優先度を、
R0a>R0b>RA0(R1a)>RA1(R1b or R1c)
とする。この優先度は、CPU29の設定により、
R0a>RA0(R1a)>R0b>RA1(R1b or R1c)
R0a>RA0(R1a)>RA1(R1b or R1c)>R0b
のように変更することができる。
また、調停機能部411は、スレーブインタフェース242a,242bのキューの状態を監視し、その監視結果に応じて変換部423における優先順位レベルのしきい値を変更する。上記したように、しきい値を「0」とした場合、要求信号R1a(要求信号RA0)がマスタインタフェース250aから出力され、スレーブインタフェース242aのキューに入力される。また、要求信号R1bと要求信号R1c(要求信号RA1)がマスタインタフェース250bから出力され、スレーブインタフェース242bのキューに入力される。調停機能部411は、スレーブインタフェース242a,242bのキューに格納された要求信号を順次選択する。
例えば、所定の時間に互いに同数の要求信号R1a〜R1cがそれぞれの処理部から発行されると、スレーブインタフェース242bのキューに蓄えられた要求信号の数は、スレーブインタフェース242aのキューに蓄えられた要求信号の数の2倍となる。このキューの状態に基づいて、調停機能部411は、変換部423のしきい値を例えば「1」に変更する。すると、変換部423は、「0」,「1」の優先順位レベルをマスタインタフェース250aのインタフェース番号に変換し、「2」の優先順位レベルをマスタインタフェース250bのインタフェース番号に変換する。これにより、要求信号R1a.R1bはマスタインタフェース250aから出力され、要求信号R1cはマスタインタフェース250bから出力される。
調停部402のマスタインタフェース250aから出力される要求信号RA0(R1a or R1b)は、スレーブインタフェース242aのキューに入力される。また、マスタインタフェース250bから出力される要求信号RA1(R1c)は、スレーブインタフェース242bのキューに入力される。調停機能部411は、スレーブインタフェース242aにより受け付けた要求信号RA0(R1a or R1b)を、スレーブインタフェース242bにより受け付けた要求信号RA1(R1c)よりも優先する。したがって、各要求信号R1a〜R1cに対する優先比率は、変換部423のしきい値により変更される。このように、各要求信号R1a〜R1cにおける優先比率を容易に変更することができる。
また、各スレーブインタフェース242a,242bのキューに蓄えられる要求信号の数が、変換部423に設定するしきい値に応じて変化する。このため、調停部402に接続される処理部から出力される要求信号に対して受付信号を出力するまでに要する時間を短くすることができる。これにより、クロック信号の供給・停止を行う場合、要求信号の受け付けを保留してから、既に受け付けた要求信号に対する処理が終了するまでの時間が短くなる。このため、調停部402及び調停部332に接続された処理部に対するクロック信号CK2の供給・停止にかかる時間を短くすることができる。
・上記実施形態において、図3に示す処理部21a〜25cの数、各処理部21a〜25cにおける処理の内容、処理部21a〜25cと調停部31〜35の接続関係は一例であり、適宜変更してもよい。
・図3に示す処理部21a〜21fから出力される要求信号を調停する調停部を含み、調停部31はその調停部から出力される要求信号と調停部32〜35から出力される要求信号を調停した結果に応じた要求信号を出力するようにしてもよい。
・CPU29は、クロック信号の供給を停止するクロック制御部のレジスタに対して設定値を格納したが、制御情報として制御信号を出力するようにしてもよい。この場合、制御信号は、例えばイネーブル信号のように出力・停止を示す信号と、制御するクロック信号を指定するための信号を含む。例えば、クロック制御部26は、第1のレベル(例えばHレベル)の制御信号に応答してクロック信号を出力し、第2のレベル(例えばLレベル)の制御信号に応答してクロック信号の出力を停止する。クロック信号の出力・停止は、上記実施形態と同様に、制御信号に応答してオンオフするスイッチにより行うことができる。
なお、図13に示す処理部22a,22bに対しても同様に、CPU29から処理部22a,22bのそれぞれに対して出力される制御信号により動作・停止するようにしてもよい。なお、CPU29から出力される制御情報に基づいて各処理部22a,22bに応じた制御信号を出力するデコーダ等の回路を用いてもよい。なお、処理部22a,22bについて説明したが、図3に示す処理部23a〜25cについても同様である。
・上記実施形態において、調停部31からCPU29に対する構成変更可能である旨の通知は、割り込み信号に限られず、CPU29が受け取る信号やコマンド、レジスタに格納した値、等により通知するようにしてもよい。