(58)【調査した分野】(Int.Cl.,DB名)
クロック信号をカウントするカウンタのカウント値と前記第1のデータ転送の最早開始タイミング及び前記第3のデータ転送の最早開始タイミングをそれぞれ比較し、比較結果に応じて前記第1の転送要求又は前記第3の転送要求に対する転送許可を出力する転送実施部を有することを特徴とする請求項2に記載のタイミング調整装置。
スレーブデバイスをアクセスする複数のマスタデバイスが出力する転送要求を受けるタイミング調整装置が実行する、前記転送要求に対応するデータ転送の開始タイミングを調整するタイミング調整方法であって、
第1のマスタデバイスから出力される第1の転送要求と、前記第1の転送要求に応じた第1のデータ転送の開始が可能となるタイミングの情報と、前記第1のデータ転送を完了すべきタイミングの情報と、前記第1のデータ転送により転送するデータ量を含む第1の転送情報とを受け、前記第1の転送情報に基づいて、前記第1のデータ転送の開始タイミングを算出し、
第2のマスタデバイスから出力される第2の転送要求と、前記第2の転送要求に応じた第2のデータ転送により転送するデータ量を含む第2の転送情報とを受け、前記第2の転送情報に基づいて、前記第2のデータ転送の終了タイミングを算出し、前記終了タイミングと前記開始タイミングを比較した結果に基づいて、前記第1のデータ転送と前記第2のデータ転送の少なくとも一方のデータ転送を実行するタイミングを調整すること、
を特徴とするタイミング調整方法。
【発明を実施するための形態】
【0009】
以下、一実施形態を説明する。
図1に示すように、この撮像装置は例えばデジタルスチルカメラであり、撮像部11、処理装置12、操作部13、メモリ14、表示部15を有する。
【0010】
撮像部11は撮像光学系と撮像素子(イメージ・センサ)を含む。撮像光学系は被写体からの光を集光するレンズ(フォーカスレンズなど),レンズを通過した光の量を調整する絞り,等を含む。撮像素子はCCDやCMOSイメージセンサ等であり、入射する光を電気信号に変換して1フレーム分の画像データを生成する。撮像部11は、撮像素子から出力されるアナログの画像データをデジタル化し、そのデジタル化した画像データを同期信号に基づいて出力する。同期信号は、1フレームの区切り(フレームの開始)を示す垂直同期信号と、1ラインの区切り(ラインの開始)を示す水平同期信号、各画像データを出力するタイミングを示すクロック信号を含む。例えば、同期信号は、処理装置12から供給される。
【0011】
処理装置12は、撮像部11から出力される画像データを同期信号に基づいて取り込む。そして、処理装置12は、取り込んだ画像データをメモリ14に格納する。メモリ14は例えばシンクロナスダイナミックランダムアクセスメモリ(SDRAM:SynchronousDynamic Random Access Memory)である。メモリ14の記憶容量は、少なくとも1フレーム分の画像データを格納するように設定される。
【0012】
操作部13は、ユーザにより操作されるシャッタボタンやメニューボタン等の各種スイッチ、タッチパネル等である。処理装置12は、操作部13に対する操作に応じて、撮影モードや各処理において必要な情報等の設定値を記憶する。そして、処理装置12は、メモリ14から読み出した画像データに対して設定値に応じた処理を行い、処理後の画像データをメモリ14に格納する。なお、処理装置12は、画像データの処理中に生成する一時的なデータをメモリ14に格納することがある。
【0013】
表示部15は、例えば液晶表示装置(LCD:Liquid Crystal Display)である。表示部15は、撮影する画像(撮影フレーム)の確認、撮影された画像の表示、撮像装置における各種情報(例えば、駆動源であるバッテリの残量、撮影モード、等)の表示に用いられる。例えば、処理装置12は、メモリ14に格納された画像データを読み出し、その読み出した画像データを、クロック信号に基づいて生成した同期信号に応じて出力する。同期信号は、フレームの開始を示す垂直同期信号、各ラインの開始を示す水平同期信号、クロック信号を含む。同期信号の周期は、表示部15に応じて設定される。表示部15は、処理装置12から出力される画像データを同期信号に従って受け取り、1フレームの画像データに基づく画像を表示する。
【0014】
記録部16は例えば撮像装置に装着されるメモリカードである。処理装置12は、メモリ14に格納されたデータ(例えば圧縮された画像データ)を記録部16に格納する。また、処理装置12は、操作部13に対する操作に応じて、記録部16に格納されたデータに基づく表示データを表示部15に出力する。
【0015】
次に、処理装置12の詳細を説明する。
図3に示すように、処理装置12は、センサデータ取り込み部21、色処理部22、補正部23、ノイズ除去部24、リサイズ部25、圧縮伸張部26、表示出力部27、調停部31、メモリインタフェース(「メモリI/F」と表記)32を有している。
【0016】
センサデータ取り込み部21は、
図1に示す撮像部11から出力される画像データを同期信号に基づいて取り込み、その画像データをメモリ14に格納する。色処理部22は、画像データに対して色空間変換処理を行う。補正部23は、メモリ14から読み出したデータに対して補正処理を行い、補正後のデータをメモリ14に格納する。補正処理は、例えば、γ補正.歪補正である。ノイズ除去部24は、メモリ14から読み出したデータに対して所定の処理を行ってノイズを除去し、処理後のデータをメモリ14に格納する。
【0017】
リサイズ部25は、メモリ14から読み出したデータに対して、画素データの間引き、データ補間などの処理を行って画像サイズを変更し、処理簿のデータをメモリ14に格納する。圧縮伸張部26は、所定の方式(例えばJPEG(Joint Photographic Experts Group)方式)により圧縮データを生成する。また、圧縮伸張部26は、圧縮データを伸長した画像データを生成する。圧縮伸張部26は、生成したデータをメモリ14に格納する。表示出力部27は、クロック信号に基づいて
図1に示す表示部15に応じた垂直同期信号、水平同期信号を生成する。表示出力部27は、メモリ14から読み出したデータを表示データに変換し、その表示データDDを同期信号に応じて
図1に示す表示部15に出力する。
【0018】
センサデータ取り込み部21、色処理部22、補正部23、ノイズ除去部24、リサイズ部25、圧縮伸張部26、表示出力部27は、処理部の一例である。なお、以後の説明において、それぞれの処理を区別する必要がない場合には、処理部21〜27として説明する。
【0019】
処理部21〜27は、それぞれの処理タイミングに応じてメモリ14をアクセスするための要求信号を含む各種信号を出力する。調停部31は、処理部21〜27の要求信号を調停し、調停結果に応じて1つの処理部に対してアクセス許可を与える。また、調停部31は、調停結果に応じた1つの要求信号をメモリインタフェース32に出力する。メモリインタフェース32は、アクセスが許可された処理部から出力される制御情報(各種コマンド、アドレス、データ、等)をメモリ14に出力する。これにより、処理部21〜27は、メモリインタフェース32を介してメモリ14をアクセスする。つまり、処理部21〜27とメモリ14の間のデータ転送が実施される。
【0020】
上記したように、
図1に示す撮像部11は、同期信号に応じて1フレーム分の画像データを出力する。処理部21は、同期信号に応じて1フレーム分の画像データを取り込む。処理部21は、撮像部11が画像データを出力するタイミングに応じて、その画像データを取り込まなければならない。つまり、この撮像部11と処理部21との間のデータ転送は、1フレームの途中で中断することができない。このように、1群のデータの途中で転送を中断することができない転送をリアルタイム性を有する転送(リアルタイム転送)と呼ぶ。
【0021】
処理部21は、撮像部11との間のリアルタイム転送にて転送される画像データをメモリ14に格納するために転送予約を行う。転送予約は、転送期間を通知してデータ転送の帯域を確保するものである。予めデータ転送の帯域を確保することで、他の転送要求の影響を受けることなくデータ転送を行うことで、リアルタイム性のあるデータ転送における破綻の発生を抑制する。転送予約によって実施されるデータ転送を予約転送と呼ぶ。処理部21は、予約転送のための転送要求(予約転送要求)を出力する。処理部21は、予約転送要求を出力する処理部の一例である。
【0022】
処理部22〜26は、1フレームの画像データのうち、処理に必要な部分の画像データをメモリ14に対してアクセスする。例えば、圧縮伸張部26は、圧縮処理又は伸張処理に必要な複数の画素(例えば、8×8のブロックに含まれる画像データ)をメモリ14に対してアクセスする。従って、処理部22〜26とメモリ14との間のデータ転送は、1フレームの画像データについて、フレームの途中で転送を中断することが可能である。このようなデータ転送を通常転送と呼ぶ。各処理部22〜26は、通常転送のための転送要求(通常転送要求)と通常転送のための情報を出力する。通常転送のための情報は、各処理部22〜26がメモリ14との間でデータ転送するデータ量を含む。処理部22〜26は、通常転送要求を出力する処理部の一例である。
【0023】
処理部27は、メモリ14から1フレーム分の画像データを順次読み出し、同期信号に応じて出力する。
図1に示す表示部15は、同期信号に応じて1フレーム分の画像データを順次受け取り、その1フレーム分の画像データに応じた画像を表示する。この処理部27と表示部15の間のデータ転送は、1フレームの途中で中断することができない。従って、処理部27と表示部15の間のデータ転送は、撮像部11と処理部21の間のデータ転送と同様に、リアルタイム性を有する転送(リアルタイム転送)である。従って、処理部27は、処理部21と同様に、表示部15との間のリアルタイム転送にて転送する画像データをメモリ14から読み出すために転送予約を行い、予約転送を実施する。処理部27予約転送のための転送要求(予約転送要求)を出力する。処理部21は、予約転送要求を出力する処理部の一例である。表示部15は外部装置の一例である。
【0024】
処理部21は、複数(
図3において2つ)のバッファ21a,21bを有している。2つのバッファ21a,21bそれぞれの記憶容量は、メモリ14との間の1回のデータ転送において転送されるデータの量に応じて設定され、例えば1回のデータ転送におけるデータ量と等しい記憶容量に設定されている。例えば、バッファ21a,21bそれぞれの記憶容量は512バイトである。
【0025】
処理部21は、2つのバッファ21a,21bを交互に使用し、取り込んだ画像データを欠落することなく、メモリ14に格納する。例えば、処理部21は、取り込んだ画像データを第1のバッファ21aに格納する。第1のバッファ21aがフル状態、つまり第1のバッファ21aが有する全ての記憶領域に画像データを格納すると、処理部21は次に取り込んだ画像データを第2のバッファ21bに格納する。そして、処理部21は、第1のバッファ21aに格納した画像データをメモリ14へ転送する。同様に、処理部21は、第2のバッファ21bがフル状態になると、次に取り込んだ画像データを第1のバッファ21aに格納する。そして、処理部21は、第2のバッファ21bに格納した画像データをメモリ14へ転送する。
【0026】
処理部21は、バッファ21a,21bに格納した画像データをメモリ14へ転送するために転送予約を行う。処理部21は、第1のバッファ21aに画像データを格納している期間において、この第1のバッファ21aからメモリ14へ画像データを転送するための転送予約を行う。例えば、処理部21は、予約転送要求と、転送予約のための情報を出力する。
【0027】
転送予約のための情報は、開始予定、転送データ量、終了期限を含む。開始予定は、予約転送要求を出力するタイミングから、転送が可能となるタイミングまでの期間情報である。この期間情報は、例えば、クロック信号CLKに基づくサイクル数である。転送データ量は、予約した転送期間に転送するデータ量である。終了期限は、予約転送要求を出力するタイミングから、転送を完了しなければならないタイミングまでの期間情報である。この期間情報は、例えば、クロック信号CLKに基づくサイクル数である。
【0028】
上記したように、処理部21は、クロック信号CLKに同期して、
図1に示す撮像部11から出力される画像データGDを取り込む。そして、処理部21は、取り込んだ画像データをバッファ21a,21bに格納する。例えば、処理部21は、バッファ21a,21bの記憶容量と、クロック信号CLKをカウントしたカウント値に基づいて、バッファ21a,21bがフル状態となるまでの期間値を算出する。そして、処理部21は、算出した期間値と等しい値の開始予定のサイクル数を出力する。
【0029】
処理部21は、2つのバッファ21a,21bを交互に使用して取り込んだ画像データGDを記憶する。従って、処理部21は、第1のバッファ21aに格納した画像データの転送を、第2のバッファ21bがフル状態となるまでに完了する必要がある。第2のバッファ21bに格納した画像データのデータ転送も同様である。従って、処理部21は、開始予定のサイクル数と、バッファ21a,21bをフル状態とするために必要なサイクル数に基づいて終了期限のサイクル数を算出し、その終了期限のサイクル数を出力する。そして、処理部21は、バッファ21a,21bの記憶容量と等しい値の転送データ量を出力する。
【0030】
処理部27は、処理部21と同様に、複数(
図3において2つ)のバッファ27a,27bを有している。2つのバッファ27a,27bそれぞれの記憶容量は、メモリ14との間の1回のデータ転送において転送されるデータの量に応じて設定され、例えば1回のデータ転送におけるデータ量と等しい記憶容量に設定されている。例えば、バッファ27a,27bそれぞれの記憶容量は512バイトである。
【0031】
処理部27は、2つのバッファ27a,27bを交互に使用し、表示部15に対して1フレームの画像データを連続的に出力する。例えば、処理部27は、第1のバッファ27aに格納した画像データを表示部15へ出力する。第1のバッファ27aがエンプティ状態、つまり第1のバッファ27aの記憶領域に格納し出力していない画像データの数が「0」となると、処理部27は次に第2のバッファ27bに格納した画像データを表示部15へ出力する。そして、処理部27は、メモリ14から第1のバッファ27aへ画像データを転送する。同様に、処理部27は、第2のバッファ27bがエンプティ状態になると、次に第1のバッファ27aの画像データを表示部15へ出力する。そして、処理部27は、メモリ14から第2のバッファ27bへ画像データを転送する。
【0032】
処理部27は、メモリ14からバッファ27a,27bへ画像データを転送するために転送予約を行う。処理部27は、第1のバッファ27aの画像データを表示部15へ出力している期間に、メモリ14から転送される画像データを第2のバッファ27bに格納するように転送予約を行う。例えば、処理部27は、予約転送要求と、転送予約のための情報を出力する。
【0033】
転送予約のための情報は、開始予定、転送データ量、終了期限を含む。開始予定は、予約転送要求を出力するタイミングから、転送が可能となるタイミングまでの期間情報である。この期間情報は、例えば、クロック信号CLKに基づくサイクル数である。転送データ量は、予約した転送期間に転送するデータ量である。終了期限は、予約転送要求を出力するタイミングから、転送を完了しなければならないタイミングまでの期間情報である。この期間情報は、例えば、クロック信号CLKに基づくサイクル数である。
【0034】
上記したように、処理部27は、クロック信号CLKに同期してバッファ27a,27bの画像データGDを出力する。例えば、処理部27は、バッファ27a,27bの記憶容量と、クロック信号CLKをカウントしたカウント値に基づいて、バッファ27a,27bがエンプティ状態となるまでの期間値を算出する。そして、処理部27は、算出した期間値と等しい値の開始予定のサイクル数を出力する。
【0035】
処理部27は、2つのバッファ27a,27bを交互に使用して画像データGDを出力する。従って、処理部27は、第1のバッファ27aに対する画像データの転送を、第2のバッファ27bがエンプティ状態となるまでに完了する必要がある。第2のバッファ27bに対する画像データのデータ転送も同様である。従って、処理部27は、開始予定のサイクル数と、バッファ27a,27bがエンプティ状態となるまでに要するサイクル数に基づいて終了期限のサイクル数を算出し、その終了期限のサイクル数を出力する。そして、処理部27は、バッファ27a,27bの記憶容量と等しい値の転送データ量を出力する。
【0036】
調停部31は、転送要求と転送のための情報に基づいて、各処理部21〜27のデータ転送の実施タイミングを調整する。調停部31は、タイミング調整装置の一例である。処理部21は第1処理部の一例、処理部22〜26は第2処理部の一例、処理部27は第3処理部の一例である。
【0037】
調停部31に対して、処理部21〜27をバスマスタと呼び、メモリインタフェース32をバススレーブと呼ぶ。なお、バスマスタのアクセス対象であるメモリ14をバススレーブと呼ぶこと、メモリインタフェース32とメモリ14を合わせてバススレーブと呼ぶことがある。
【0038】
図2に示すように、調停部31は、予約処理部41、転送調停部42、転送実施部43を有している。
予約処理部41は、予約転送要求RTを受け付ける。予約転送要求RTは、
図3に示す処理装置12の場合、処理部21と処理部27から出力される。予約転送要求RTは、第1の転送要求、第3の転送要求の一例である。
【0039】
予約処理部41は、予約転送要求RTに対応する転送情報に従って予約転送期間のタイミング(例えばサイクル数)を算出する。転送情報は、開始予定、終了期限、転送データ量を含む。予約転送期間のタイミングは、最早開始サイクル数,最遅開始サイクル数,転送サイクル数を含む。1つの予約転送要求RTを受け付けた場合、予約処理部41は、算出した予約転送期間のタイミングを出力する。複数の予約転送要求RTを受け付けた場合、予約処理部41は、各予約転送要求RTに対する予約転送期間が互いに干渉しないように予約転送期間のタイミングを調整し、調整後のタイミングを出力する。予約処理部41は、要求処理部の一例である。
【0040】
転送調停部42は、通常転送要求NTを受け付ける。通常転送要求NTは、
図3に示す処理部22〜26から出力される。通常転送要求NTは、第2の転送要求の一例である。
転送調停部42は、通常転送要求NTに対応する転送情報に従って通常転送期間のタイミング(例えばサイクル数)を算出する。転送調停部42は、算出した通常転送期間のタイミングを予約転送期間のタイミングと比較し、比較結果に応じて、通常転送要求NTに対するデータ転送が可能か否かを判定する。転送調停部42は、データ転送が可能と判定した場合、通常転送要求NTに対応する転送許可ENを出力する。そして、転送調停部42は、通常転送要求NTに対応するデータ転送の期間に基づいて、予約転送期間のタイミングを調整し、調整後のタイミングを出力する。
【0041】
転送実施部43は、転送調停部42から出力されるタイミングに基づいて、転送開始のタイミングで転送許可ERを出力する。予約処理部41において複数の予約転送要求RTを受け付けた場合、転送開始のタイミングに達した予約転送要求RTに対応する転送許可ERを出力する。
【0042】
次に、予約処理部41、転送調停部42、転送実施部43の回路例を
図4〜
図7に従って説明する。
なお、回路例の説明において、処理部21の転送予約を[予約A]、処理部27の転送予約を[予約B]とする。以下の説明において、[予約A]と[予約B]の信号等に対して必要に応じて[a][b]を付してそれぞれを区別する。
【0043】
図4に示すように、予約処理部41は、[予約A]のための情報をラッチするラッチ回路51a〜54aを有している。ラッチ回路51aは、予約転送要求RTaに基づいて開始予定CCaをラッチする。ラッチ回路52aは、予約転送要求RTaに基づいて終了期限CDaをラッチする。ラッチ回路53aは、予約転送要求RTaに基づいて転送データ量CEaをラッチする。ラッチ回路54aの入力端子は[1]に設定され、予約転送要求RTaに基づいて設定されたレベルの信号を出力する。ラッチ回路54aは、転送許可信号ERaに応答して出力信号をクリア(=[0])する。ラッチ回路55aは、クロック信号CLK(図示略)に応答してラッチ回路54aの出力信号をラッチし、ラッチしたレベルと等しいレベルの選択信号SL1aを出力する。
【0044】
スタート信号生成回路56は、[予約A]の予約転送要求RTa、[予約B]の予約転送要求RTb、予約状態信号xRIに基づいてスタート信号を生成する。例えば、スタート信号生成回路56は、受付済みの予約転送要求がない状態で、新たな予約転送要求RTa,RTbを受け付けたときに、スタート信号を生成する。スタート信号は、例えばパルス信号である。
【0045】
カウンタ57は、スタート信号に応答してカウント動作を開始し、クロック信号CLKのパルスをカウントしたカウント値CVを出力する。カウンタ57は、停止信号STPに応答してカウント値CVをクリア(=[0])し、カウント動作を停止する。例えば、調停部31は、全ての予約転送要求に対するデータ転送が終了すると停止信号STPを生成する。
【0046】
ラッチ回路58aは、カウンタ57から出力されるカウント値CVを予約転送要求RTaに基づいてラッチする。加算器59aは、ラッチ回路51aの出力信号にラッチ回路58aの出力信号を加算し、最早開始サイクル数Ca1を出力する。加算器60aは、ラッチ回路52aの出力信号にラッチ回路58aの出力信号を加算し、最遅終了サイクル数Da1を出力する。サイクル数算出部61aは、ラッチ回路53aの出力信号と所定の係数に基づいて、転送データ量のデータの転送に要する転送サイクル数Ca3を算出する。サイクル数算出部61aにおける所定の係数は、例えば処理装置12とメモリ14の間のデータ転送の速度、単位時間において処理装置12とメモリ14との間で転送されるデータ量、である。減算器62aは、加算器60aから出力される最遅終了サイクル数Da1から転送サイクル数Ca3を減算して最遅開始サイクル数Ca2を算出する。選択回路63aは、選択信号SL1aに応じて、最遅開始サイクル数Ca2又はチェック後の最遅開始サイクル数Ca22を選択し、選択した値と等しいサイクル数Ca2dを出力する。
【0047】
また、予約処理部41は、[予約B]のための情報をラッチするラッチ回路51b〜54bを有している。ラッチ回路51bは、予約転送要求RTbに基づいて開始予定CCbをラッチする。ラッチ回路52bは、予約転送要求RTbに基づいて終了期限CDbをラッチする。ラッチ回路53bは、予約転送要求RTbに基づいて転送データ量CEbをラッチする。ラッチ回路54bの入力端子は[1]に設定され、予約転送要求RTbに基づいて設定されたレベルの信号を出力する。ラッチ回路54bは、転送許可信号ERbに応答して出力信号をクリア(=[0])する。ラッチ回路55bは、クロック信号CLK(図示略)に応答してラッチ回路54bの出力信号をラッチし、ラッチしたレベルと等しいレベルの選択信号SL1bを出力する。
【0048】
ラッチ回路58bは、予約転送要求RTbに基づいてカウンタ57から出力されるカウント値CVをラッチする。加算器59bは、ラッチ回路51bの出力信号にラッチ回路58bの出力信号を加算し、最早開始サイクル数Cb1を出力する。加算器60bは、ラッチ回路52bの出力信号にラッチ回路58bの出力信号を加算し、最遅終了サイクル数Db1を出力する。
【0049】
サイクル数算出部61bは、ラッチ回路53bの出力信号と所定の係数に基づいて、転送データ量のデータの転送に要する転送サイクル数Cb3を算出する。所定の係数は、例えば処理装置12とメモリ14の間のデータ転送の速度、単位時間において処理装置12とメモリ14との間で転送されるデータ量、である。減算器62bは、加算器60bから出力される最遅終了サイクル数Db1から転送サイクル数Cb3を減算して最遅開始サイクル数Cb2を算出する。選択回路63bは、選択信号SL1bに応じて、最遅開始サイクル数Cb2又はチェック後の最遅開始サイクル数Cb22選択し、選択した値と等しいサイクル数Cb2dを出力する。
【0050】
ノア回路64は、選択信号SL1a,SL1bを論理演算(否定論理和演算)して予約状態信号xRIを出力する。予約状態信号xRIは、予約の有無を示す。例えば、Hレベルの予約状態信号xRIは予約がないことを示す。インバータ回路65は、予約状態信号xRIを論理反転したレベルの反転予約状態信号zRIを出力する。例えば、Hレベルの反転予約状態信号zRIは、受け付けた予約があることを示す。
【0051】
比較演算器66は、[予約A]の最遅終了サイクル数Da1と[予約B]の最遅終了サイクル数Db1を互いに比較し、比較結果に応じて、[予約A]の最遅開始サイクル数Ca2(又はCa2d)、または[予約B]の最遅開始サイクル数Cb2(又はCb2d)を調整する。例えば、比較演算器66は、[予約A]の最遅終了サイクル数Da1が[予約B]の最遅終了サイクル数Db1よりも少ない場合、[予約B]の転送を可能とするように、[予約A]の最遅開始サイクル数Ca2(又はCa2d)を調整する。例えば、比較演算器66は、[予約B]の最遅終了サイクル数Db1から[予約A]の転送サイクル数Ca3を減算した結果の値と等しい調整サイクル数Ca21を出力する。そして、比較演算器66は、調整サイクル数Ca21を選択するための選択信号SL2aを出力する。同様に、比較演算器66は、[予約B]の最遅終了サイクル数Db1が[予約A]の最遅終了サイクル数Da1よりも少ない場合、[予約A]の転送を可能とするように、[予約B]の最遅開始サイクル数Cb2(又はCb2d)を調整する。例えば、比較演算器66は、[予約A]の最遅終了サイクル数Da1から[予約B]の転送サイクル数Cb3を減算した結果の値と等しい調整サイクル数Cb21を出力する。そして、比較演算器66は、調整サイクル数Cb21を選択するための選択信号SL2bを出力する。
【0052】
選択回路67aは、最遅開始サイクル数Ca2と比較演算器66から出力される調整サイクル数Ca21を入力し、比較演算器66から出力される選択信号SL2aに応じたサイクル数を選択して出力する。ラッチ回路68aは、選択回路67aから出力されるサイクル数を図示しないクロック信号CLK(図示略)に応じてラッチし、ラッチしたサイクル数と等しい調整後サイクル数Ca22を出力する。
【0053】
同様に、選択回路67bは、最遅開始サイクル数Cb2と比較演算器66から出力される調整サイクル数Cb21を入力し、比較演算器66から出力される選択信号SL2bに応じたサイクル数を選択して出力する。ラッチ回路68bは、選択回路67bから出力されるサイクル数を図示しないクロック信号CLK(図示略)に応じてラッチし、ラッチしたサイクル数と等しい調整後サイクル数Cb22を出力する。
【0054】
図5に示すように、転送調停部42のサイクル数算出部71は、通常転送要求NTとデータ量NDnに基づいて通常転送サイクル数N3を算出する。通常転送サイクル数N3は、通常転送においてデータを転送する期間である。加算器72は、通常転送サイクル数N3にカウント値CVを加算し、加算結果に応じて転送完了サイクル数N3Dを出力する。
【0055】
選択回路73aは、アンド回路76aから出力される選択信号SL3aに応じて最早開始サイクル数Ca1または転送完了サイクル数N3Dを選択し、選択したサイクル数を出力する。例えば、選択回路73aは、Hレベルの選択信号SL3aに応答して最早開始サイクル数Ca1を選択し、Lレベルの選択信号SL3aに応答して転送完了サイクル数N3Dを選択する。ラッチ回路74aは、クロック信号CLK(図示略)に応答して選択回路73aから出力されるサイクル数をラッチし、ラッチしたサイクル数と等しい変更した最早開始サイクル数Ca11を出力する。
【0056】
比較回路75aは、ラッチ回路74aから出力される最早開始サイクル数Ca11を転送完了サイクル数N3Dと比較し、比較結果に応じたレベルの比較信号D1aを出力する。例えば、比較回路75aは、最早開始サイクル数Ca11と転送完了サイクル数N3Dを大小比較し、最早開始サイクル数Ca11が転送完了サイクル数より大きい場合に第1のレベル(例えばHレベル)の比較信号D1aを出力し、最早開始サイクル数Ca11が転送完了サイクル数N3D以下の場合に第2のレベル(例えばLレベル)の比較信号D1aを出力する。アンド回路76aは、比較回路75aから出力される比較信号D1aとアンド回路78から出力される判定信号SJ1を論理演算(論理積演算)した結果に応じたレベルの選択信号SL3aを出力する。
【0057】
比較回路77aは、最遅開始サイクル数Ca22と転送完了サイクル数N3Dとを比較し、比較結果に応じたレベルの比較信号D2aを出力する。例えば、比較回路77aは、最遅開始サイクル数Ca22を転送完了サイクル数N3Dと大小比較し、最遅開始サイクル数Ca22が転送完了サイクル数N3Dより小さい場合に第1のレベル(Hレベル)の比較信号D2aを出力し、最遅開始サイクル数Ca22が転送完了サイクル数より以上の場合に第2のレベル(Lレベル)の比較信号D2aを出力する。
【0058】
選択回路73bは、アンド回路76bから出力される選択信号SL3bに応じて最早開始サイクル数Cb1または転送完了サイクル数N3Dを選択し、選択したサイクル数を出力する。例えば、選択回路73bは、Hレベルの選択信号SL3bに応答して最早開始サイクル数Cb1を選択し、Lレベルの選択信号SL3bに応答して転送完了サイクル数N3Dを選択する。ラッチ回路74bは、クロック信号CLK(図示略)に応答して選択回路73bから出力されるサイクル数をラッチし、ラッチしたサイクル数と等しい変更した最早開始サイクル数Cb11を出力する。
【0059】
比較回路75bは、ラッチ回路74bから出力される最早開始サイクル数Cb11を転送完了サイクル数N3Dと比較し、比較結果に応じたレベルの比較信号D1bを出力する。例えば、比較回路75bは、最早開始サイクル数Cb11と転送完了サイクル数N3Dを大小比較し、最早開始サイクル数Cb11が転送完了サイクル数より大きい場合に第1のレベル(例えばHレベル)の比較信号D1bを出力し、最早開始サイクル数Cb11が転送完了サイクル数N3D以下の場合に第2のレベル(例えばLレベル)の比較信号D1bを出力する。アンド回路76bは、比較回路75bから出力される比較信号D1bとアンド回路78から出力される判定信号SJ1を論理演算(論理積演算)した結果に応じたレベルの選択信号SL3bを出力する。
【0060】
比較回路77bは、最遅開始サイクル数Cb22と転送完了サイクル数N3Dとを比較し、比較結果に応じたレベルの比較信号D2bを出力する。例えば、比較回路77bは、最遅開始サイクル数Cb22を転送完了サイクル数N3Dと大小比較し、最遅開始サイクル数Cb2が転送完了サイクル数N3Dより小さい場合に第1のレベル(Hレベル)の比較信号D2bを出力し、最遅開始サイクル数Cb22が転送完了サイクル数より以上の場合に第2のレベル(Lレベル)の比較信号D2bを出力する。
【0061】
アンド回路78は、通常転送状態信号zNIと比較信号D2a,D2bを論理演算(論理積演算)した結果に応じたレベルの判定信号SJ1を出力する。通常転送状態信号zNIは、例えば調停部31により生成される。調停部31は、通常転送要求を受け付けると第1のレベル(Hレベル)の通常転送状態信号zNIを生成し、通常転送要求を受け付けていない場合に第2のレベル(Lレベル)の通常転送状態信号zNIを生成する。判定信号SJ1は、通常転送要求があって、予約A,Bの最遅までに転送が終了するか否かを示す。アンド回路79は、通常転送状態信号zNIと
図4のノア回路64から出力される予約状態信号xRIを論理演算(論理積演算)した結果に応じたレベルの信号を出力する。オア回路80は、アンド回路78から出力される判定信号SJ1とアンド回路79の出力信号を論理演算(論理積演算)した結果に応じたレベルの通常転送実施信号ENを出力する。ノア回路81は、予約状態信号xRIとアンド回路78から出力される判定信号SJ1を論理演算(否定論理和演算)した結果に応じたレベルの予約転送実施信号ER0を出力する。
【0062】
図6に示すように、転送実施部43の比較回路91aは、
図4に示すカウンタ57から出力されるカウント値CVと変更後の最早開始サイクル数Ca11を比較し、比較結果に応じたレベルの比較信号D3aを出力する。例えば、比較回路91aは、カウント値CVが変更後の最早開始サイクル数Ca11以上の場合に第1のレベル(Hレベル)の比較信号D3aを出力し、カウント値CVが変更後の最早開始サイクル数Ca11より小さいときに第2のレベル(Lレベル)の比較信号D3aを出力する。
【0063】
比較回路91bは、カウント値CVと変更後の最早開始サイクル数Cb11を比較し、比較結果に応じたレベルの比較信号D3bを出力する。例えば、比較回路91bは、カウント値CVが変更後の最早開始サイクル数Cb11以上の場合に第1のレベル(Hレベル)の比較信号D3bを出力し、カウント値CVが変更後の最早開始サイクル数Cb11より小さいときに第2のレベル(Lレベル)の比較信号D3bを出力する。
【0064】
アンド回路92は、比較信号D3a,D3bを論理演算(論理積演算)した結果に応じたレベルの判定信号SJ2を出力する。
アンド回路93は、反転通常転送状態信号xNIと
図4のインバータ回路65から出力される反転予約状態信号zRIを論理演算(論理積演算)した結果に応じたレベルの信号を出力する。例えば、調停部31は、通常転送状態信号zNIを論理反転して反転通常転送状態信号xNIを生成する。Hレベルの反転通常転送状態信号xNIは、通常転送要求がないことを示す。オア回路94は、アンド回路93の出力信号と予約転送実施信号ER0を論理演算(論理和演算)した結果に応じたレベルの信号を出力する。
【0065】
アンド回路95aは、オア回路94の出力信号と比較信号D3aを論理演算(論理積演算)した結果に応じたレベルの信号を出力する。
アンド回路95bは、オア回路94の出力信号と比較信号D3bを論理演算(論理積演算)した結果に応じたレベルの信号を出力する。
【0066】
比較回路96は、チェック後の最遅開始サイクル数Ca22とチェック後の最遅開始サイクル数Cb22を比較し、比較結果に応じたレベルの比較信号D4を出力する。例えば、比較回路96は、最遅開始サイクル数Cb22が最遅開始サイクル数Ca22以上の場合に第1のレベル(Hレベル)の比較信号D4を出力し、最遅開始サイクル数Cb22が最遅開始サイクル数Ca22より小さい場合に第2のレベル(Lレベル)の比較信号D4を出力する。
【0067】
インバータ回路97は、比較回路96から出力される比較信号D4を論理反転したレベルの信号xD4を出力する。アンド回路98aは、インバータ回路97の出力信号xD4とアンド回路92の出力信号SJ2を論理演算(論理積演算)した結果に応じたレベルの選択信号SL4aを出力する。選択回路99aは、選択信号SL4aに応答してアンド回路95aの出力信号又は固定されたレベル([0])を選択し、選択した信号のレベルと等しいレベルの転送許可信号ERaを出力する。この転送許可信号ERaは、予約Aに対する転送の許可又は不許可を示す。例えば、Hレベル([1])の転送許可信号ERaは予約Aの転送の許可を示し、Lレベル([0])の転送許可信号ERaは不許可を示す。
【0068】
アンド回路98bは、比較回路96から出力される比較信号D4とアンド回路92の出力信号SJ2を論理演算(論理積演算)した結果に応じたレベルの選択信号SL4bを出力する。選択回路99bは、選択信号SL4bに応答してアンド回路95bの出力信号又は固定されたレベル([0])を選択し、選択した信号のレベルと等しいレベルの転送許可信号ERbを出力する。この転送許可信号ERbは、予約Bに対する転送の許可又は不許可を示す。例えば、Hレベル([1])の転送許可信号ERbは予約Bの転送の許可を示し、Lレベル([0])の転送許可信号ERbは不許可を示す。
【0069】
次に、調停部31の予約転送処理を、
図7〜
図9に従って説明する。
なお、
図7〜
図9において、最早開始サイクル数を単に[最早]、最遅開始サイクル数を単に[最遅]と表記する。
【0070】
図7に示すステップ101において、受け付ける要求があるか否かを判定する。要求がない場合(判定:NO)、次のステップ102において、受付済みの予約転送要求があるか否かを判定する。受付済みの予約転送要求がない場合(判定:NO)、ステップ101に移行する。
【0071】
一方、受付済みの予約転送要求がある場合(判定:YES)、ステップ103において、予約転送を実施する。ステップ111〜118はステップ103のサブステップである。なお、説明を簡略化するため、受付済みの予約転送要求を2つとする。この2つの予約転送要求を[予約A][予約B]とする。
【0072】
先ず、ステップ111において、カウント値CVと[予約A]の最早開始サイクル数Ca1と比較し、カウント値CVが最早開始サイクル数Ca1以上か否かを判定する。カウント値CVが転送開始サイクルCa1未満の場合(判定:NO)、ステップ112へ移行する。一方、カウント値CVが最早開始サイクル数Ca1以上の場合(判定:YES)、ステップ113へ移行する。
【0073】
ステップ112において、カウント値CVと[予約B]の最早開始サイクル数Cb1と比較し、カウント値CVが最早開始サイクル数Cb1以上か否かを判定する。カウント値CVが最早開始サイクル数Cb1未満の場合(判定:NO)、ステップ101へ移行し、カウント値CVが最早開始サイクル数Cb1以上の場合(判定:YES)、ステップ117へ移行する。
【0074】
ステップ113において、カウント値CVと[予約B]の最早開始サイクル数Cb1と比較し、カウント値CVが最早開始サイクル数Cb1以上か否かを判定する。カウント値CVが最早開始サイクル数Cb1以上の場合(判定:YES)、次のステップ114へ移行し、カウント値CVが最早開始サイクル数Cb1未満の場合(判定:NO)、ステップ115へ移行(ステップ114をスキップ)する。
【0075】
ステップ114において、[予約A]の最遅開始サイクル数Ca2と[予約B]の最遅開始サイクル数Cb2と比較し、どちらの最遅開始サイクル数が先かを判定する。[予約A]の最遅開始サイクル数Ca2が[予約B]の最遅開始サイクル数Cb2よりも先(Ca2≦CCB2)の場合(判定:YES)、次のステップ115へ移行する。一方[予約A]の最遅開始サイクル数Ca2が[予約B]の最遅開始サイクル数Cb2よりも後(Ca2>CCB2)の場合(判定:NO)、ステップ117へ移行する。
【0076】
ステップ115において、[予約A]の転送を実行する。次いで、ステップ116において、[予約A]を削除する。
ステップ117において、[予約B]の転送を実行する。次いで、ステップ118において、[予約B]を削除する。
【0077】
次に、ステップ104において、全ての予約転送要求に対する処理を終了したか否かを判定する。受付済みの予約転送要求がある場合、全ての予約に対する処理を終了していないと判定し(判定:NO)、ステップ101へ移行する。一方、受付済みの予約転送要求がない場合、全ての予約に対する処理を終了したと判定し(判定:YES)、ステップ105へ移行する。
【0078】
ステップ105において、カウンタを停止し、ステップ101へ移行する。
上記のステップ101において受け付ける要求がある場合(判定:YES)、
図8に示すステップ121に移行する。
【0079】
ステップ121において、新たな予約転送要求があるか否かを判定する。新たな予約転送要求がある場合(判定:YES)、次のステップ122へ移行する。一方、新たな予約転送要求がない場合(判定:NO)、
図9に示すステップ161へ移行する。
【0080】
ステップ131〜137はステップ122のサブステップである。
ステップ131において、受付済みの予約転送要求があるか否かを判定する。受付済みの予約転送要求がある場合(判定:YES)、ステップ132へ移行し、受付済みの予約転送要求がない場合(判定:NO)、ステップ136へ移行する。
【0081】
ステップ132において、受け付けた予約転送要求について、転送情報とカウント値に基づいて、予約期間に応じたサイクル数を算出する。予約期間に応じたサイクル数は、最早開始サイクル数、最遅開始サイクル数、転送サイクル数を含む。
【0082】
ステップ133において、比較演算処理を行う。この処理において、受け付けた2つの予約転送要求の予約期間に応じたサイクル数を比較し、比較結果に応じて変更が必要な場合に変更する予約転送要求の最遅開始サイクル数を算出する。
【0083】
ステップ134において、予約Aの最遅開始サイクル数を、予約Bの最遅開始サイクル数Cb2に応じて変更する。例えば、予約Bの最遅開始サイクル数Cb2から予約Aの転送サイクル数Ca3を減算した結果の値を、予約Aの最遅開始サイクル数Ca2とする。
【0084】
ステップ135において、予約Bの最遅開始サイクル数を、予約Aの最遅開始サイクル数Ca2に応じて変更する。例えば、予約Aの最遅開始サイクル数Ca2から予約Bの転送サイクル数Cb3を減算した結果の値を、予約Bの最遅開始サイクル数Cb2とする。
【0085】
ステップ141〜144はステップ133のサブステップである。
ステップ141において、受け付けた2つの予約転送要求に対する転送が実行可能か否かを判定する。一方の予約転送を最早のタイミングで実行した場合、その予約転送が他方の予約転送の最遅のタイミングよりも先に完了すれば、2つの予約に対する転送が実行可能である。従って、一方の最早開始サイクル数に転送サイクル数を加算した結果の値と他方の最遅開始サイクル数を比較し、加算結果が他方の最遅開始サイクル数よりも小さい場合、転送の実行可能と判定する。実行可能と判定した場合、次のステップ132へ移行する。実行不可能と判定した場合、エラーとする。
【0086】
例えば、予約Aの最早開始サイクル数Ca1と転送サイクル数Ca3を加算した結果と、予約Bの最遅開始サイクル数Cb2を比較し、加算結果が最遅サイクル数より小さい(Cb2≧(Ca1+Ca3))場合、データ転送が実行可能と判定する。また、予約Bの最早開始サイクル数Cb1と転送サイクル数Cb3を加算した結果と、予約Aの最遅開始サイクル数Ca2を比較し、加算結果が最遅サイクル数より小さい(Ca2≧(Cb1+Cb3))場合、データ転送が実行可能と判定する。
【0087】
ステップ142において、予約Aの最遅が予約Bの最遅より先か否かを判定する。予約Aの最遅が予約Bの最遅よりも先(Cb2≧Ca2)の場合(判定:YES)、次のステップ143へ移行し、予約Bの最遅が予約Aの最遅よりも先の場合(判定:NO)、ステップ144へ移行する。
【0088】
ステップ143において、予約Aの転送開始を最遅開始タイミングとして場合に予約Bの転送が可能か否かを判定する。例えば、予約Aの最遅開始サイクル数Ca2に転送サイクル数Ca3を加算した結果の値から予約Bの最遅開始サイクル数Cb2を減算して結果の値が[0(ゼロ]より大きいか否かを判定する。[0]より大きい場合(判定:YES)にステップ134へ移行し、[0]以下の場合(判定:NO)にステップ123へ移行する。
【0089】
ステップ144において、予約Bの転送開始を最遅開始タイミングとした場合に予約Aの転送が可能か否かを判定する。例えば、予約Bの最遅開始サイクル数Cb2に転送サイクル数Cb3を加算した結果の値から予約Aの最遅開始サイクル数Ca2を減算して結果の値が[0(ゼロ]より大きいか否かを判定する。[0]より大きい場合(判定:YES)にステップ135へ移行し、[0]以下の場合(判定:NO)にステップ123へ移行する。
【0090】
ステップ136において、カウンタ57のカウント動作をスタートさせる。次に、ステップ137において、受け付けた予約転送要求について、転送情報とカウント値に基づいて、予約期間に応じたサイクル数を算出する。予約期間に応じたサイクル数は、最早開始サイクル数、最遅開始サイクル数、転送サイクル数を含む。
【0091】
ステップ123において、通常要求があるか否かを判定する。通常要求がある場合(判定:YES)、
図9に示すステップ151へ移行し、通常要求がない場合(判定:NO)、
図7に示すステップ103へ移行する。
【0092】
〔
図9〕
図9に示すステップ151において、予約転送と通常転送の調停処理を行う。
ステップ161〜ステップ167はステップ151のサブステップである。
【0093】
ステップ161において、受付済みの予約要求があるか否かを判定する。予約要求がある場合(判定:YES)はステップ162へ移行し、予約要求がない場合(判定:NO)には調停処理を終了してステップ152へ移行する。
【0094】
ステップ162において、通常要求におけるデータ転送の完了サイクル数を算出する。
例えば、通常要求におけるデータ量に基づいて、通常要求の転送サイクル数N3を算出し、その転送サイクル数N3とカウント値CVに基づいて、転送完了サイクル数N3Dを算出する。
【0095】
ステップ163において、通常転送が予約の最遅までに終了するか否かを判定する。例えば、上記のステップ162において算出した転送完了サイクル数N3Dと、予約転送の最遅開始サイクル数とを比較する。例えば、2つの予約A,Bを受け付けている場合、転送完了サイクル数N3Dを[予約A]の最遅開始サイクル数Ca2と比較し、転送完了サイクル数N3Dを[予約B]の最遅開始サイクル数Cb2と比較する。そして、転送完了サイクル数N3Dが最遅開始サイクル数Ca2より小さく、且つ転送完了サイクル数N3Dが最遅開始サイクル数Cb2より小さい場合(判定:YES)、次のステップ164へ移行する。一方、転送完了サイクル数N3Dが最遅開始サイクル数Ca2以上、または転送完了サイクル数N3Dが最遅開始サイクル数Cb2以上の場合(判定:NO)、
図7に示すステップ103へ移行する。
【0096】
ステップ164において、通常転送の転送完了が予約[A]の最早より遅いか否かを判定する。例えば、通常転送の転送完了サイクル数N3Dが予約[A]の最早開始サイクル数Ca1と比較し、比較結果に基づいて判定する。転送完了サイクル数N3Dが最早開始サイクル数Ca1より大きい場合(判定:YES)、次のステップ165へ移行し、転送完了サイクル数N3Dが最早開始サイクル数Ca1以下の場合(判定:NO)、ステップ166へ移行する。
【0097】
ステップ165において、通常転送の転送完了サイクル数N3Dに基づいて[予約A]の最早開始サイクル数Ca1を変更する。例えば、最早開始サイクル数Ca1の値を転送完了サイクル数N3Dの値と等しくする。そして、ステップ166へ移行する。
【0098】
ステップ166において、通常転送の転送完了が予約[B]の最早より遅いか否かを判定する。例えば、通常転送の転送完了サイクル数N3Dが予約[B]の最早開始サイクル数Cb1と比較し、比較結果に基づいて判定する。転送完了サイクル数N3Dが最早開始サイクル数Cb1より大きい場合(判定:YES)、次のステップ167へ移行する。一方、転送完了サイクル数N3Dが最早開始サイクル数Cb1以下の場合(判定:NO)、調停処理を終了してステップ152へ移行する。
【0099】
ステップ167において、通常転送の転送完了サイクル数N3Dに基づいて[予約B]の最早開始サイクル数Cb1を変更する。例えば、最早開始サイクル数Cb1の値を転送完了サイクル数N3Dの値と等しくする。そして、ステップ152へ移行する。
【0100】
ステップ152において、通常要求の転送を実施する。そして、
図7に示すステップ101へ移行する。
次に、調停部31の作用を説明する。
【0101】
先ず、予約転送について説明する。
図10に示すように、クロック信号CLKに基づいて
図1に示す撮像部11から画像データGDが出力される。
図3に示す処理部21は、バッファ21aとバッファ21bに対して画像データを交互に格納する。そして、処理部21は、バッファ21aのデータをメモリ14へ転送するために予約転送要求201と転送情報211を出力する。なお、処理部21が出力する予約転送要求201を上記の説明における[予約A]とする。
【0102】
転送情報211は、開始予定、終了期限、転送データ量を含む。
図10において、転送情報211を一点鎖線の長方形にて示す。また、転送情報211は、開始予定等のタイミングに応じて示している。転送情報211の左端は開始予定のタイミングを示し、右端は終了期限のタイミングを示す。なお、一点鎖線の矩形は、予約期間を示す。また、実線の長方形は、転送情報の転送データ量のデータを転送する期間(転送期間)を示す。
【0103】
図3に示す調停部31は、転送情報211に基づいて、最早開始サイクル数Ca1,最遅開始サイクル数Ca2,転送サイクル数Ca3を算出する。
図10において、[最早]と表記した長方形(以下、単に[最早]とする)は、最早開始サイクル数Ca1にてデータ転送を開始したときの転送期間を示す。[最遅]と表記した長方形(以下、単に[最遅]とする)は、最遅開始サイクル数Ca2にてデータ転送を開始したときの転送期間を示す。最遅の右端はデータ転送を完了するタイミングであり、転送情報211の終了期限と一致する。転送期間を示す実線の長方形の長さ(図において左右方向の長さ)は、転送サイクル数Ca3である。
【0104】
他の予約転送要求、通常転送要求がない場合、調停部31は、
図4に示すカウンタ57のカウント値CVが最早開始サイクル数Ca1以上となると、予約転送要求201に対する転送許可を処理部21に対して与える。処理部21は、転送許可に応答して、バッファ21aのデータを出力する。これにより、
図10に示す[最早]のタイミング及び期間において、バッファ21aからメモリ14へデータが転送される。
【0105】
次に、
図3に示す処理部21は、バッファ21bのデータをメモリ14へ転送するために予約転送要求202と転送情報212を出力する。調停部31は、カウント値CVに従って予約転送要求202に対する転送許可を処理部21に対して与える。処理部21は、転送許可に応答して、バッファ21bのデータを出力する。同様に、バッファ21a,21bに対する予約転送要求203,204と転送情報213,214が処理部21から出力され、バッファ21a,21bのデータが転送される。
【0106】
次に、通常転送要求がある場合について説明する。
図11に示すように、予約転送要求201を受け付けた後、その予約転送要求201に対応するデータ転送を開始する前に、通常転送要求221が例えば
図3に示す処理部22から出力される。
【0107】
調停部31は、通常転送要求221とその転送情報231を受け付け、通常転送が可能か否かを判定する。調停部31は、転送情報231に基づいて転送完了サイクル数N3Dを算出する。そして、調停部31は、転送完了サイクル数N3Dを、受付済みの予約転送要求201の最早開始サイクル数Ca1及び最遅開始サイクル数Ca2と比較し、比較結果に応じて通常転送が可能か否かを判定する。
【0108】
図11において、転送完了サイクル数N3Dは、最早開始サイクル数Ca1より大きく(タイミングが遅い)、最遅開始サイクル数Ca2より小さい(タイミングが早い)。従って、通常転送要求221に対するデータ転送は、[最遅]におけるデータ転送の開始タイミングより前に終了する。このため、調停部31は、通常転送要求221に対して転送許可を与える。そして、予約転送要求201に対する最早開始サイクル数Ca1を、転送完了サイクル数N3Dと等しくする。これにより、通常転送要求221に対するデータ転送221Tが実施され、続いて予約転送要求201に対するデータ転送211Tが実施される。データ転送211Tを示す長方形中に、このデータ転送211Tによりデータが転送されるバッファの符号「21a」を示す。このデータ転送211Tにおいてデータ転送を完了するタイミングは、予約転送要求201における完了期限より前である。従って、リアルタイム性がある処理部21のデータ転送において転送破綻は発生しない。
【0109】
次に、調停部31は予約転送要求202と転送情報212を受け付ける。その後、調停部31は、通常転送要求222を受け付け、転送情報232に基づいて通常転送が可能か否かを判定する。調停部31は、転送情報に基づいて転送完了サイクル数N3Dを算出する。そして、調停部31は、転送完了サイクル数N3Dを、受付済みの予約転送要求202の最早開始サイクル数Ca1及び最遅開始サイクル数Ca2と比較し、比較結果に応じて通常転送が可能か否かを判定する。
【0110】
図11において、転送完了サイクル数N3Dは、最早開始サイクル数Ca1及び最遅開始サイクル数Ca2より大きい(タイミングが遅い)。従って、通常転送要求222に対するデータ転送は、[最遅]におけるデータ転送の開始タイミングより遅い。このため、調停部31は、通常転送要求222に対する転送許可を保留する。そして、調停部31は、カウント値に従って予約転送要求202に対して転送許可を与える。これにより、予約転送要求202に対応するデータ転送212T(バッファ21b)が実施される。
【0111】
次に、調停部31は、予約転送要求203と転送情報213を受け付け、その転送情報213に基づいて、予約転送要求203に対する最早開始サイクル数Ca1,最遅開始サイクル数Ca2,転送サイクル数Ca3を算出する。そして、調停部31は、最早開始サイクル数Ca1及び最遅開始サイクル数Ca2を、通常転送要求222の転送完了サイクル数N3Dと比較する。
【0112】
図11において、転送完了サイクル数N3Dは、最早開始サイクル数Ca1より大きく(タイミングが遅い)、最遅開始サイクル数Ca2と等しい。従って、通常転送要求222に対するデータ転送222Tは、[最遅]におけるデータ転送の開始タイミングにて終了する。このため、調停部31は、通常転送要求222に対して転送許可を与える。そして、予約転送要求203に対する最早開始サイクル数Ca1を、転送完了サイクル数N3Dと等しくする。これにより、通常転送要求222に対するデータ転送222Tが実施され、続いて予約転送要求203に対するデータ転送213T(バッファ21a)が実施される。このデータ転送213Tにおいてデータ転送を完了するタイミングは、予約転送要求203に対応する転送情報213に含まれる完了期限より前である。従って、リアルタイム性がある処理部21のデータ転送において転送破綻は発生しない。
【0113】
次に、複数の予約転送要求に対する調整を説明する。
図12に示すように、予約転送要求301〜303と転送情報311〜313が例えば
図3に示す処理部21から出力され、予約転送要求321,322と転送情報331,332が例えば
図3に示す処理部27から出力される。なお、予約転送要求301〜303を[予約A]とし、予約転送要求321,322を[予約B]とする。
図12において、[予約A]と[予約B]の予約転送要求と転送情報について、それぞれ文字[A][B]を付して対応関係を示す。
【0114】
図3に示す調停部31は、[予約A]の転送情報311〜313に基づいて、最早開始サイクル数,最遅開始サイクル数,転送サイクル数を算出する。算出した各サイクル数に基づく最早転送期間と最遅転送期間を[予約A]の転送期間として示す。同様に、[予約B]の転送情報331,332に基づいて、最早開始サイクル数,最遅開始サイクル数,転送サイクル数を算出する。算出した各サイクル数に基づく最早転送期間と最遅転送期間を[予約B]の転送期間として示す。
【0115】
[予約A]の転送情報311に基づく最早転送期間311Fと[予約B]の転送情報331に基づく最早転送期間331Fは、最早転送期間311Fの終了タイミングが最早転送期間331Fの開始タイミングより早いため、互いに干渉しない。[予約B]の転送情報331に基づく最早転送期間331Fと[予約A]の転送情報312に基づく最早転送期間312Fは、最早転送期間331Fの終了タイミングが最早転送期間312Fの開始タイミングより早いため、互いに干渉しない。同様に、[予約A]の転送情報311,312に基づく最遅転送期間311L,312Lと[予約B]の転送情報331に基づく最遅転送期間331Lは、互いに干渉しない。従って、調整後の各転送期間は、転送情報に基づく転送期間と等しい。
【0116】
[予約A]の転送情報313に基づく最早転送期間313Fと[予約B]の転送情報332に基づく最早転送期間332Fは、最早転送期間313Fの終了タイミングが最早転送期間332Fの開始タイミングより遅いため、互いに干渉する。このため、
図3に示す調停部31は、[予約A]の最早転送期間313Fに基づいて、[予約B]の最早転送期間332Fを調整する。調停部31は、[予約B]の転送期間332Mの最早開始サイクル数を、[予約A]の最早転送期間313Fの最早開始サイクル数に、最早転送期間313Fの転送サイクル数を加算した結果の値と等しくする。これにより、干渉が解消される。
【0117】
同様に、[予約A]の転送情報313に基づく最遅転送期間313Lと[予約B]の転送情報332に基づく最遅転送期間332Lは、最遅転送期間313Lの終了タイミングが最遅転送期間332Lの開始タイミングより遅いため、互いに干渉する。このため、
図3に示す調停部31は、[予約B]の最遅転送期間332Lに基づいて、[予約A]の最遅転送期間313Lを調整する。調停部31は、[予約A]の転送期間313Mの最遅開始サイクル数を、[予約B]の最遅転送期間332Lの最遅開始サイクル数から、[予約Aの最遅転送期間313Lの転送サイクル数を減算した結果の値と等しくする。これにより、干渉が解消される。
【0118】
次に、転送方法の比較例を説明する。
なお、比較例の説明において用いる部材については、
図1,
図3に示す各部材と同じ名称及び同じ符号を用いる。
【0119】
[比較例1]
図13(a)に示すように、クロック信号CLKに基づいて
図1に示す撮像部11から画像データGDが出力される。
図3に示す処理部21は、バッファ21aとバッファ21bに対して画像データを交互に格納する。処理部21は、バッファ21aがフル状態になると、通常転送要求251を出力し、バッファ21aのデータを転送する(転送期間251T)。同様に、処理部21は、バッファ21b,21a,21bがフル状態になると、通常転送要求252,253,254を出力し、データを転送する(転送期間252T,253T,254T)。
【0120】
図13(b)に示すように、他の処理部(例えば、
図3に示す処理部22)から通常転送要求221(図において[C]表記)が出力される。この通常転送要求221は、他の処理部の通常転送要求と競合していないため、調停部31は通常転送要求221に対する転送許可を出力し、処理部22は転送許可に応答してデータを転送する(図において[C]と表記した転送期間221T)。
【0121】
この転送期間221T中に処理部21は、バッファ21aがフル状態になるため、通常転送要求251を出力する。調停部31は、転送期間221Tが終了した後、処理部21に対して転送許可を出力する。処理部21は、転送許可に応答してバッファ21aのデータを転送する(転送期間261T)。
【0122】
次いで、他の処理部(例えば、
図3に示す処理部23)から通常転送要求222(図において[D]表記)が出力される。この通常転送要求222は、他の処理部の通常転送要求と競合していないため、調停部31は通常転送要求222に対する転送許可を出力し、処理部23は転送許可に応答してデータを転送する(図において[D]と表記した転送期間222T)。
【0123】
この転送期間222T中に処理部21は、バッファ21bがフル状態になるため、通常転送要求252を出力する。調停部31は、転送期間222Tが終了した後、処理部21に対して転送許可を出力する。処理部21は、転送許可に応答してバッファ21aのデータを転送する(転送期間252T)。この転送期間252Tの終了タイミングは、バッファ21aに対してデータの書き込みを開始するタイミングより遅い。従って、この転送方法は、転送破綻を発生させる。
【0124】
[比較例2]
図14(a)に示すように、クロック信号CLKに基づいて
図1に示す撮像部11から画像データGDが出力される。
図3に示す処理部21は、バッファ21aとバッファ21bに対して画像データを交互に格納する。そして、処理部21は、バッファ21aのデータをメモリ14へ転送するために予約転送要求201と転送開始タイミング及び転送データ量を出力する。調停部31は、転送開始タイミング及び転送データ量に基づいて予約期間261を設定する。そして、調停部31は、予約期間261になると、処理部21に対して転送許可を出力する。処理部21は、転送許可に応答してバッファ21aのデータを出力する(転送期間261T)。同様に、調停部31は、処理部21から出力される予約転送要求202,203,204を応じて予約期間262,263,264を設定し、予約期間262〜264に従って転送許可を出力する。処理部21は、調停部31から出力される転送許可に応答してバッファ21b.21a,21bのデータを転送する(転送期間262T〜264T)。
【0125】
他の処理部(例えば、
図3に示す処理部22)から通常転送要求221(図において[C]表記)が出力される。この通常転送要求221に基づくデータの転送期間は、予約期間261と予約期間262の間の間隔(サイクル数)と等しい。このため、調停部31は、予約期間261の終了後に処理部22に対して通常転送要求221に対する転送許可を出力し、処理部22は転送許可に従ってデータを転送する(図において[C]と表記した転送期間221T)。
【0126】
また、別の処理部(例えば、
図3に示す処理部23)から通常転送要求222(図において[D]表記)が出力される。この通常転送要求222に基づくデータの転送期間は、予約期間262と予約期間263の間の間隔(サイクル数)、予約期間263と予約期間264の間の間隔(サイクル数)よりも長い。従って、調停部31は、通常転送要求222に対する転送許可を出力しない。そして、調停部31は、予約期間264の終了後に、通常転送要求222に対する転送許可を出力し、処理部23は転送許可に従ってデータを転送する(図において[D]と表記した転送期間222T)。従って、この転送方法は、システムにおける処理効率の低下を招く。
【0127】
[比較例3]
図14(b)に示すように、クロック信号CLKに基づいて
図1に示す撮像部11から画像データGDが出力される。処理部21は、3つのバッファ21a〜21cに対して、画像データを順に格納する。そして、処理部21は、各バッファ21a〜21cがフル状態になると、各バッファ21a〜21cに対応する通常転送要求251〜253を出力する。
【0128】
この場合、
図13(b)と同様に通常転送要求221,222が発生する。この場合、通常転送要求221に対するデータ転送(転送期間221T)の後に、バッファ21aに対するデータ転送(転送期間251T)が実施される。同様に、通常転送要求222に対するデータ転送(転送期間222T)の後に、バッファ21bに対するデータ転送(転送期間252T)が実施される。その後、バッファ21cに対するデータ転送を行う(転送期間253T)。これにより、通常転送要求221,222による転送破綻の発生を抑制することができる。
【0129】
しかし、複数の処理部がリアルタイム性のあるデータ転送を行う場合、転送破綻を発生される場合がある。また、
図14(b)では、2つの処理部(例えば、
図3に示す処理部22,23)が通常転送要求221,222を出力する場合を示しているが、3つ以上の処理部が通常転送要求を出力する場合、タイミングによって各バッファ21a〜21cに対するデータ転送が間に合わなくなる場合がある。このような場合、更にバッファを追加する必要がある。つまり、処理部に必要なバッファの数等は、処理装置に含まれる処理部の数や処理装置が行う画像処理に応じて変化する。このため、処理装置の全ての処理において転送破綻の発生を抑制するために非常にレアケースも考慮して過剰な量のバッファを備える必要があり、チップ面積の増大等を招く。
【0130】
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)予約処理部41は、予約転送要求RTに対応する転送情報に従って予約転送期間のタイミング(例えばサイクル数)を算出する。転送情報は、開始予定、終了期限、転送データ量を含む。予約転送期間のタイミングは、最早開始サイクル数,最遅開始サイクル数,転送サイクル数を含む。1つの予約転送要求RTを受け付けた場合、予約処理部41は、算出した予約転送期間のタイミングを出力する。
【0131】
転送調停部42は、通常転送要求NTを受け付ける。転送調停部42は、通常転送要求NTに対応する転送情報に従って通常転送期間のタイミング(例えばサイクル数)を算出する。転送調停部42は、算出した通常転送期間のタイミングを予約転送期間のタイミングと比較し、比較結果に応じて、通常転送要求NTに対するデータ転送が可能か否かを判定する。転送調停部42は、データ転送が可能と判定した場合、通常転送要求NTに対応する転送許可ENを出力する。そして、転送調停部42は、通常転送要求NTに対応するデータ転送の期間に基づいて、予約転送期間のタイミングを調整し、調整後のタイミングを出力する。
【0132】
従って、予約転送要求RTを受け付けた後に通常転送要求NTを受け付け、その通常転送要求NTのデータ転送が可能と判定した場合、その通常転送要求NTに対する転送許可ENを出力する。これにより、通常転送要求NTに対応するデータ転送を行うことができ、システムにおけるデータ転送の効率の低下を抑制することができる。
【0133】
(2)複数の予約転送要求RTを受け付けた場合、予約処理部41は、各予約転送要求RTに対する予約転送期間が互いに干渉しないように予約転送期間のタイミングを調整し、調整後のタイミングを出力する。予約転送要求RTは、リアルタイム性のあるデータ転送が必要な処理部21,27から出力される。これにより、複数の予約転送要求RTに対するデータ転送を実施することができ、リアルタイム性のあるデータ転送における転送破綻の発生を抑制することができる。
【0134】
尚、上記各実施形態は、以下の態様で実施してもよい。
・上記実施形態の処理部21は、
図10に示すように、1つの転送期間211Tに対して1つの予約転送要求201を出力したが、複数回の転送期間を1つの転送要求により予約するようにしてもよい。例えば、処理部21は、
図15に示すように、1つの周期予約転送要求301と転送情報を出力する。転送情報は、最初の予約期間311のための開始予定及び終了期限、各予約期間において転送するデータの量、予約期間の周期、実施予定の転送期間の回数を含む。予約期間の周期は、各転送期間の開始予定の間隔(サイクル数)である。転送期間の周期は、例えば
図15では、予約期間311の開始タイミングと予約期間312の開始タイミングの差である。実施予定の転送期間の回数は、
図15の場合は「4」である。
【0135】
調停部31は、周期予約転送要求301と転送情報に基づいて、各予約期間311〜314の最早開始サイクル数,最遅開始サイクル数,転送完了サイクル数を算出する。そして、
図15に示す通常転送要求221,222に応じて、開始サイクル数を調整した転送期間311T〜314Tに応じたタイミングで転送許可を出力する。このような周期予約転送要求によっても、上記実施形態と同様に、リアルタイム性のあるデータ転送における転送破綻の発生を抑制し、通常転送要求に対するデータ転送を行うことで、システムの効率低下を抑制することができる。
【0136】
なお、
図15では、1つの処理部(処理部21)による予約転送を説明したが、複数の処理部(例えば、
図3に示す処理部21,27)による予約転送を行うようにしてもよい。その場合、処理部21が周期予約転送要求を出力し、処理部27が転送毎に予約転送要求を出力するようにしてもよい。また、処理部21が転送毎に予約転送要求を出力し、処理部27が周期予約転送要求を出力するようにしてもよい。処理部21と処理部27が周期予約転送要求を出力するようにしてもよい。
【0137】
なお、
図15に示す4つの転送期間311T〜314Tにより転送されるデータは、1ライン分の画像データである。1フレームの画像データは複数ラインの画像データを含み、1ラインの画像データは複数画素の画像データを含む。このため、1つの周期予約転送要求により、1ライン分の画像データを転送するようにしてもよい。また、1つの周期予約転送要求により、複数ライン分の画像データを転送するようにしてもよい。また、1つの周期予約転送要求により、1フレームに含まれるライン分の画像データを転送するようにしてもよい。
【0138】
・上記実施形態の処理部21は、バッファ21a,21bの記憶容量とカウント値に基づいて開始予定のサイクル数を算出したが、この算出方法を適宜変更してもよい。例えば、処理部21は、バッファ21a,21bに対するデータの書き込みを開始してからクロック信号CLKのカウントを開始し、そのカウント値が所定の転送開始設定値と等しくなると予約転送要求を出力する。このとき、バッファ21a,21bの記憶容量とカウント値の差、つまりバッファ21a,21bの記憶容量と転送開始設定値の差の値を開始予定のサイクル数とする。また、バッファ21a,21bの空き容量値を算出し、予約転送要求を出力するときに、各バッファ21a,21bの空き容量値に基づいて開始予定のサイクル数を算出するようにしてもよい。
【0139】
・
図4に示す比較演算器66において、エラーチェックを行うようにしてもよい。例えば、比較演算器66において、受け付けた2つの予約転送要求に対する転送が実行可能か否かを判定する。比較演算器66に[予約A]の最早開始サイクル数Ca1と[予約B]の最早開始サイクル数Cb1を供給し、
図8に示すステップ141における処理と同様に、一方の最早開始サイクル数に転送サイクル数を加算した結果の値と他方の最遅開始サイクル数を比較し、実行可能か否かを判定する。そして、実行可能と判定した場合に
図4に示す調整ステップ数Ca2d,Cb2dを算出し、選択信号SL2a,SL2bを生成する。一方、実行不可能と判定した場合、エラー信号を出力する。
【0140】
・
図8に示すステップ141を省略してもよい。
・撮像部11から出力されるデータをメモリ14に書き込む処理部21が有するバッファの数を3つ以上としてもよい。同様に、表示部15に表示データを出力する処理部27が有するバッファの数を3つ以上としてもよい。
【0141】
・バッファ21a,21bの記憶容量を適宜変更してもよい。同様に、バッファ27a,27bの記憶容量を適宜変更してもよい。また、バッファ21a,21bの記憶容量と、バッファ27a,27bの記憶容量を互いに異なる値、つまり処理部21とメモリ14の間の1回のデータ転送におけるデータ量と、処理部27とメモリ14の間の1回のデータ転送におけるデータ量を互いに異なる値に設定してもよい。
【0142】
・転送予約を行う処理部を1つとしてもよい。また、転送予約を行う処理部を3つ以上としてもよい。
・処理部がアクセスする対象を2つ以上としてもよい。また、処理部がアクセスする対象として、揮発性メモリ、不揮発性メモリ、ディスク装置、等を用いても良い。
【0143】
・処理部21〜27は一例であり、処理部の数、処理部が実行する処理内容を適宜変更してもよい。
・画像データ以外のデータ、例えば音声データを転送するシステムとしてもよい。
【0144】
・転送するデータ量を算出するようにしてもよい。例えば、転送のための情報にアドレス情報を含める。アドレス情報は、メモリ14においてデータが格納された領域、またはデータを格納する領域の先頭アドレスと最終アドレスである。先頭アドレスと最終アドレスに基づいてデータ量を算出し、データ転送に必要な転送期間(サイクル数)を得ることが可能となる。