画像処理装置及び方法
【課題】データ転送中の任意のデータ間でコマンドに応じた処理を実行可能なデータ処理装置及びその方法を提供する。
【解決手段】それぞれが処理部を有する複数の処理ブロックが共通バスによって直列に接続された画像処理装置における当該複数の処理ブロックのそれぞれは、共通バスを介して当該処理ブロックに入力されたデータを用いた画像処理を、当該処理ブロックの処理部により行ない、共通バスを介して当該処理ブロックに入力されたコマンドに応じた処理を、当該処理ブロックの処理部に対して行ない、共通バスを介して第1の処理ブロックに入力される第1のコマンドについて、当該第1のコマンドの前に第1の処理ブロックへ入力されたデータに基づくデータ処理によるデータ出力が完了するまで、第1の処理ブロックから当該第1のコマンドを出力することを遅延させる。
【解決手段】それぞれが処理部を有する複数の処理ブロックが共通バスによって直列に接続された画像処理装置における当該複数の処理ブロックのそれぞれは、共通バスを介して当該処理ブロックに入力されたデータを用いた画像処理を、当該処理ブロックの処理部により行ない、共通バスを介して当該処理ブロックに入力されたコマンドに応じた処理を、当該処理ブロックの処理部に対して行ない、共通バスを介して第1の処理ブロックに入力される第1のコマンドについて、当該第1のコマンドの前に第1の処理ブロックへ入力されたデータに基づくデータ処理によるデータ出力が完了するまで、第1の処理ブロックから当該第1のコマンドを出力することを遅延させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コマンド及びデータを多重化して、共通のデータバスによりそれらの入出力を行なう画像処理装置及び方法に関する。
【背景技術】
【0002】
従来技術として、データの入出力を行なう為のデータバスと、レジスタ設定を行なう為のCPUバスが別々に設けられた画像処理装置が知られている。この種の画像処理装置においては、割り込み信号を用いた制御方式により、特定のデータ単位(ページ、ブロック、バンド等)で処理に用いるパラメータを変更したり、内部状態を示すレジスタのリード動作を行なったりしていた。そして、このような割り込み処理の実行中では、データ転送を止めていた。
【0003】
また、特許文献1では、映像データの各フレームのスキャンラインの先頭に制御コマンドを付加して、映像データに制御コマンドを多重化し伝送を行なうことにより、各フレームに同期した制御を行なっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平8−214267号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、割り込み信号を用いた制御方式では、転送中の任意のデータ間で、画像処理に用いるフィルタ係数や二値化用閾値等のパラメータを変更したり、内部状態を示すレジスタのリード動作を実行したりすることは困難であった。又、出来たとしても、割り込み処理中はデータ転送を止める必要があり、処理が低速になってしまうという課題があった。さらに特許文献1に記載された技術では、フレームごとにパラメータの変更やレジスタのリード動作を行なうことは可能であるが、フレーム内の任意のデータ間でのパラメータ変更やレジスタのリード動作を行なうことは困難であった。特許文献1においても、スキャンライン毎に制御コマンドを伝送することができるものの、データ転送中の任意のタイミングでコマンドによる処理を実行させることはできない。
【0006】
本発明は、上記の課題に鑑みてなされたものであり、データ転送中の任意のデータ間でコマンドに応じた処理を実行可能な画像処理装置及びその方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記の目的を達成するための本発明の一態様によるデータ処理方法は、
それぞれが処理部を有する複数の処理ブロックが共通バスによって直列に接続された画像処理装置における当該複数の処理ブロックのそれぞれにより実行される画像処理方法であって、
前記共通バスを介して当該処理ブロックに入力されたデータを用いた画像処理を、当該処理ブロックの処理部により行なうデータ処理工程と、
前記共通バスを介して当該処理ブロックに入力されたコマンドに応じた処理を、当該処理ブロックの処理部に対して行なうコマンド処理工程と、
前記共通バスを介して第1の処理ブロックに入力される第1のコマンドについて、当該第1のコマンドの前に前記第1の処理ブロックへ入力されたデータに基づくデータ処理によるデータ出力が完了するまで、前記第1の処理ブロックから当該第1のコマンドを出力することを遅延させる遅延工程とを有する。
【発明の効果】
【0008】
本発明によれば、データ転送中の任意のデータ間でコマンドに応じた処理を実行することが可能となる。
【図面の簡単な説明】
【0009】
【図1】実施形態における、画像処理装置の構成を示すブロック図である。
【図2】実施形態の入力コマンドのフォーマットを示す図である。
【図3】実施形態の入力データのフォーマットを示す図である。
【図4】実施形態の出力コマンドのフォーマットを示す図である。
【図5】実施形態の出力データのフォーマットを示す図である。
【図6】実施形態のレジスタリード及びライト動作のタイミングを示す図である。
【図7】実施形態の第1の画像処理動作のタイミングを示す図である。
【図8】実施形態の第2画像処理動作のタイミングを示す図である。
【図9】実施形態の第2画像処理動作の詳細なタイミングを示す図である。
【図10】実施形態の第3画像処理動作のタイミングを示す図である。
【図11】実施形態の第3画像処理動作の詳細なタイミングを示す図である。
【図12】実施形態の画像処理ブロックの構成を示す図である。
【図13】実施形態の画像処理ブロックのレジスタリード及びライト動作のタイミングを示す図である。
【図14】実施形態の画像処理ブロックの画像処理動作のタイミングを示す図である。
【発明を実施するための形態】
【0010】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【0011】
図1に、データ処理装置としての本実施形態による画像処理装置10の構成図を示す。100は送信部であり、コマンドワード及びデータワードを多重化して送信する。101〜103は画像処理ブロックであり、図示の如く直列に接続され、それぞれが所定の画像処理を行なう。以下、処理ブロック101〜103と記載する。104は受信部であり、コマンドワード及びデータワードを受信して、終了信号105を送信部100へ送信する。11はCPUであり、画像処理装置10を利用して、例えば印刷装置等の画像処理装置10が組み込まれる装置を制御する。12はDRAMであり、処理対象となる画像データを格納する。13はDMACであり、DRAM12から画像処理装置10への画像データの直接的な転送を制御する。
【0012】
次に図2〜図5を用いてコマンドワード及びデータワードのフォーマットを説明する。なお、コマンドワード及びデータワードは所定のビット長を有しており、本実施形態では64ビットで構成されているものとする。以下、コマンドワードをコマンド、データワードをデータと記載する。
【0013】
図2は入力コマンドのフォーマットの一例を示す。入力コマンドフォーマット200において、MSBを63ビット目、LSBを0ビット目とする。63ビット目はコマンド及びデータを識別する為のmodeフラグ201(属性データ)であり、0の場合はデータを、1の場合はコマンドを示す。56〜60ビット目は入力コマンドが適用される処理ブロック番号を示す処理ブロックID202である。なお、後述するように各処理ブロックにはそれぞれを特定するための識別データとしての処理ブロックIDが割り当てられており、処理ブロックID202と一致する処理ブロックのみにおいて、当該コマンドが実行される。55ビット目はレジスタのリードライトを指定するためのRWフラグ203である。32〜47ビット目はレジスタのアドレス204である。0〜31ビット目はレジスタデータ205のためのデータ領域である。ここで、レジスタデータ205の値は、リードコマンド時(RWフラグ203が0の時)は“0”であり、ライトコマンド時(RWフラグ203が1の時)はライトされるレジスタ値である。48〜54ビット目及び61、62ビット目は使用不可のリザーブド領域206である。以上のようにして、コマンドは、アクセスするレジスタへのデータ書き込みあるいはレジスタからのデータ読み出しを指示する。
【0014】
また、図3は入力データのフォーマットの一例を示す。入力データフォーマット300において、MSBを63ビット目、LSBを0ビット目とする。63ビット目はコマンド及びデータを識別する為のmodeフラグ201(属性データ)であり、0の場合はデータを、1の場合はコマンドを示す。56ビット目は所定のデータ単位で(ページ、ブロック、バンド等の所定の範囲のデータを単位として)画像処理される最初のデータを示すstartフラグである。55ビット目は画像処理される最後のデータを示すendフラグ303である。0〜47ビット目は画像処理されるデータ304である。48〜54ビット目及び57〜62ビット目は、使用不可のリザーブド領域305である。
【0015】
図4は出力コマンドのフォーマットの一例を示す。出力コマンドフォーマット400において、MSBを63ビット目、LSBを0ビット目とする。63ビット目はコマンド及びデータを識別する為のmodeフラグ401(属性データ)であり、0の場合はデータを、1の場合はコマンドを示す。56〜60ビットはコマンドが適用された処理ブロック番号を示す処理ブロックID402である。55ビット目は、レジスタのリードライトを指定するためのRWフラグ203であるRWフラグ403である。32〜47ビット目はレジスタのアドレス404である。0〜31ビット目はレジスタデータ405のためのデータ領域である。ここで、レジスタデータ405の値はリードコマンド時(RWフラグ403が0の場合)はリードされたレジスタ値であり、ライトコマンド時(RWフラグ403が1の場合)は入力コマンドフォーマット200のレジスタデータ205の値である。48〜54ビット目及び61、62ビット目はリザーブド領域406である。
【0016】
また、図5は出力データのフォーマットの一例を示す。出力データフォーマット500において、MSBを63ビット目、LSBを0ビット目とする。63ビット目は、コマンド及びデータを識別する為のmodeフラグ501(属性データ)であり、0の場合はデータを、1の場合はコマンドを示す。56ビット目は所定のデータ単位(ページ、ブロック、バンド等)で画像処理された最初のデータであることを示すstartフラグ502である。55ビット目は画像処理された最後のデータであることを示すendフラグ503である。0〜47ビット目は画像処理されたデータ504である。48〜54ビット目及び57〜62ビット目はリザーブド領域505である。
【0017】
尚、処理ブロック101〜103は、後述するように、入力コマンド/入力データを出力コマンド/出力データに変換する。入力コマンド及び入力データはそれぞれ入力コマンドフォーマット200、入力データフォーマット300を有する。また、出力コマンド及び出力データはそれぞれ出力コマンドフォーマット400、出力データフォーマット500を有する。通常、処理ブロックがmodeフラグ変更を行なうことは無い為、変換前後においてmodeフラグ201とmodeフラグ401の値は等しくかつ、modeフラグ301とmodeフラグ501の値は等しい値である。同様に処理ブロックID202と処理ブロックID402は等しく、RWフラグ203とRWフラグ403は等しく、アドレス204とアドレス404は等しい。
【0018】
次に、図6のタイミング図を用いて、図1に示した画像処理装置10のレジスタのリードライト動作を説明する。図6において、600はクロックを、601は送信部100の出力を、602〜604は処理ブロック101〜103の出力をそれぞれ示す。ここで、各処理ブロックのコマンドに対するレイテンシは2クロックサイクルとする。また、処理ブロック101〜103に対してそれぞれ処理ブロックIDとして0〜2の値が割り振られているものとする。
【0019】
まず、CPU11から送信部100に対して、レジスタアドレス、ライトデータ、処理ブロック番号IDが設定される。送信部100は図2に示した入力コマンドフォーマット200に従って、リードレジスタコマンド又はライトレジスタコマンド(これらを入力コマンドという)を生成する。図6の605〜607はそれぞれ処理ブロック101〜103に対するライトレジスタコマンドであり、処理ブロックID202が0〜2に設定されている。また、608、610、612はそれぞれ処理ブロック101〜103に対するリードレジスタコマンドであり、処理ブロックID202が0〜2に設定されている。
【0020】
ライトレジスタコマンド605〜607に従って、処理ブロック101〜103はそれぞれレジスタ値をライトする。その後、図6に示すように、処理ブロック101〜103は、ライトレジスタコマンド605〜607から、図4で説明した出力コマンドフォーマット400に従って入力コマンドと同等な出力コマンドを生成し、後段の処理ブロックへ出力する。受信部104は、各処理ブロックからの出力コマンドを受信する。その後、CPU11が受信部104で受信されたライトレジスタコマンドの確認を行なうことにより、レジスタのライトが正常に行なわれたこと確認をする。
【0021】
また、処理ブロック101は、リードレジスタコマンド608に従ってレジスタリード動作を行なった後、図4で説明した出力コマンドフォーマット400に従った出力コマンド609を生成し、後段の処理ブロック102に出力する。出力コマンド609は、リードレジスタコマンド608のレジスタデータのデータ領域に、レジスタコマンド608が指定するアドレスから読み出したレジスタデータをセットしたものである。処理ブロック102及び処理ブロック103は出力コマンド609をそのまま後段へ出力する。こうして、出力コマンド609は受信部104にて受信される。
【0022】
リードレジスタコマンド610は処理ブロック101ではそのまま後段の処理ブロック102に出力される。処理ブロック102は、リードレジスタコマンド610に従ってレジスタリード動作を行なった後、図4で説明した出力コマンドフォーマット400に従った出力コマンド611を生成し、後段の処理ブロック103に出力する。出力コマンド611は、リードレジスタコマンド608のレジスタデータのデータ領域に、レジスタコマンド610が指定するアドレスから読み出したレジスタデータをセットしたものである。処理ブロック103は出力コマンド611をそのまま後段へ出力し、受信部104にて受信する。
【0023】
さらに、リードレジスタコマンド612は処理ブロック101及び102ではそのまま後段の処理ブロックに出力される。処理ブロック103はリードレジスタコマンド612に従ってレジスタリード動作を行なった後、図4で説明した出力コマンドフォーマット400に従った出力コマンド613を生成し、後段へ出力する。出力コマンド613は、リードレジスタコマンド612のレジスタデータのデータ領域に、レジスタコマンド612が指定するアドレスから読み出したレジスタデータをセットしたものである。出力された出力コマンド613は受信部104にて受信される。
【0024】
その後、CPU11が受信部104で受信されたリードレジスタコマンドから、レジスタ値を取得する。以上のように、直列に接続された複数の処理ブロックにおいて、前段の処理ブロックの出力が、後段の処理ブロックの多重化データとして入力され、最終的な処理結果が受信部104に受信されることになる。
【0025】
次に、図7のタイミング図を用いて、図1に示した画像処理装置10が所定のデータ単位(ページ、ブロック、バンド等)の画像処理中にレジスタのリード又はライトを行なわない場合の画像処理動作を説明する。図7において、700は送信部100の出力を、701〜703は処理ブロック101〜103の出力をそれぞれ示す。ここで、各処理ブロックのコマンドに対するレイテンシは、画像処理中(最初のデータであることを示すstartフラグ302のセットされたデータを送信してから、最後のデータであることを示すendフラグ303のセットされたデータを送信するまでの間)にコマンドが送信されていないので、図6で説明したのと同様に2クロックサイクルとする。また、各処理ブロックのデータに対するレイテンシは4クロックサイクルとする。
【0026】
まずCPU11から送信部100に対してレジスタアドレス、ライトデータ、処理ブロック番号IDが設定される。704〜706はそれぞれ、処理ブロック101〜103に対する、単数又は複数のライトレジスタコマンドである。図6を用いて説明したのと同様な手順で、処理ブロック101〜103はこれらライトレジストコマンドに従ってレジスタライト動作を行ない、これにより処理ブロック内の画像処理パラメータの設定が行なわれる。次に、DRAM12等の記憶媒体から、DMAC13を介して上記データ単位分の画像データが送信部100に転送される。送信部100では、図3に示した入力データフォーマット300に従ってデータ707を作成し、処理ブロック101に対して出力する。処理ブロック101は、入力されたデータ707に対して画像処理を実施した後、得られたデータ708を処理ブロック102に対して出力する。同様に、処理ブロック102は入力されたデータ708に対して画像処理を実施した後、得られたデータ709を処理ブロック103に対して出力する。更に、処理ブロック103は入力されたデータ709に対して画像処理を実施した後、得られたデータ710を受信部104へ出力する。受信部104は、DMAC13を介してDRAM12へ画像処理後のデータを転送する。
【0027】
また、711、713、715はそれぞれ、処理ブロック101〜103に対する、画像処理後の内部状態を観測する為の、単数又は複数のリードレジスタコマンドである。処理ブロック101〜103は、これらリードレジスタコマンド711,713,715に従って、図6を用いて説明したのと同様な手順でレジスタリード動作を行なう。処理ブロック101〜103に対するレジスタリードの結果はそれぞれリードレジスタコマンド712,714,716として受信部104へ送られ、受信部104によって受信される。
【0028】
その後、CPU11は、受信部104で受信されたリードレジスタコマンドから、レジスタ値を取得する。
【0029】
次に、図8のタイミング図を用いて、図1に示した画像処理装置10が所定のデータ単位(ページ、ブロック、バンド等)の画像処理中にレジスタのリードを行なう場合の画像処理動作を説明する。800は送信部100の出力を、801〜803は処理ブロック101〜103の出力をそれぞれ示す。ここで、各処理ブロックのデータに対するレイテンシは4クロックサイクルとする。また、各処理ブロックのコマンドに対するレイテンシは、画像処理中(最初のデータであることを示すstartフラグ302のセットされたデータを送信してから、最後のデータであることを示すendフラグ303のセットされたデータを送信するまでの間)に送信される場合と画像処理中以外に送信される場合で異なる。画像処理中以外に送信されるコマンド(804〜806及び816〜821)に対するレイテンシは、図6で説明したのと同様に2クロックサイクルである。一方、画像処理中に送信されるコマンド(811及び822)のレイテンシは、画像処理対象のデータと同様に4クロックサイクルとする。
【0030】
まずCPU11から送信部100に対してレジスタアドレス、ライトデータ、処理ブロック番号IDが設定される。804〜806はそれぞれ、処理ブロック101〜103に対する、単数又は複数のライトレジスタコマンドである。図6を用いて説明したのと同様な手順で、処理ブロック101〜103はこれらレジスタコマンドに従ってレジスタライト動作を行ない、処理ブロック101〜103の各々に対する画像処理パラメータの設定が行なわれる。
【0031】
次に、DRAM12等の記憶手段からDMAC13を介して上記データ単位分の画像データが送信部100に対して転送される。送信部100では、図3に示した入力データフォーマット300に従ってデータを作成し、データ807及びデータ812として処理ブロック101に出力する。なお、送信部100は、データ807とデータ812の間に処理ブロック103に対する、画像処理中の内部状態を観測する為のリードレジスタコマンド811を挿入して、処理ブロック101に対して出力を行う。処理ブロック101は、データ807及び812に画像処理を実施し、得られたデータ808及び813を処理ブロック102に対して出力する。このとき、リードレジスタコマンド811は、データ808とデータ813の間に挟まれて、そのまま処理ブロック102に出力される。
【0032】
同様に、処理ブロック102は入力されたデータ808,813に画像処理を実施し、得られたデータ809及び814を処理ブロック103に対して出力する。また、リードレジスタコマンド811は、データ809及び814に挟まれて、そのまま処理ブロック103に対して出力される。処理ブロック103は、入力されたデータ809,814に画像処理を実施し、得られたデータ810及び815を受信部104に出力する。また、処理ブロック103は、リードレジスタコマンド811を実行し、レジスタリードの結果である出力コマンド822を受信部104へ出力する。
【0033】
その後、受信部104はDMAC13を介してDRAM12へ画像処理後のデータを転送する。CPU11はレジスタリード結果815からレジスタ値を取得することにより、処理ブロック103における画像処理中の内部状態を観測することができる。
【0034】
また、816、818、820はそれぞれ、処理ブロック101〜103に対する、画像処理後の内部状態を観測する為の、単数又は複数のリードレジスタコマンドである。これらのリードレジスタコマンド816,818,820は、図6を用いて説明したのと同様な手順で処理ブロック101〜107に対してレジスタリード動作を行なう。そして、処理ブロック101〜103に対するレジスタリードの結果が、出力コマンド817,819,821として、受信部104へ送られ、受信部104により受信される。CPU11は、受信部104で受信された出力コマンド817,819,821からレジスタ値を取得することにより、処理ブロック101〜103における画像処理後の内部状態を観測することができる。
【0035】
次に、図9に図8をより詳細に示した、リードレジスタコマンド811の前後のデータ転送のタイミング図を示す。900はクロックを、901は送信部100の出力を、902〜904は処理ブロック101〜103の出力をそれぞれ示す。また、811及び812は図8に示したリードレジスタコマンド及びこれに対応した出力コマンドである。図8でも説明したように、リードレジスタコマンド811は処理ブロック103に対してレジスタリードを行なうコマンドである。通常、処理ブロック103のコマンドに対するレイテンシは2クロックであるが、リードレジスタコマンド811は入力データDn''までが処理された時点の処理ブロック103の内部状態のレジスタ値をリードする為のコマンドである。その為、リードレジスタコマンド811のレイテンシはデータと同じ4クロックとなる。そして、その出力(出力コマンド822))は、処理後のデータDn'''及びDn+1'''との前後関係を保ちながら、・・・Dn''',RC_ID2',Dn+1'''・・・の順で出力される。
【0036】
次に、図10のタイミング図を用いて、図1に示した画像処理装置10が所定のデータ単位(ページ、ブロック、バンド等)の画像処理中にレジスタのライトを行なう場合の画像処理動作を説明する。ここで、図8と動作及びタイミングが同等なものに関しては同じ参照番号を付し、詳細な説明を省略する。また、図8と同様に、各処理ブロックのデータに対するレイテンシは4クロックサイクルとする。さらに、各処理ブロックのコマンドに対するレイテンシは、画像処理中(最初のデータであることを示すstartフラグ302のセットされたデータを送信してから、最後のデータであることを示すendフラグ303のセットされたデータを送信するまでの間)とそれ以外に送信される場合とで異なる。すなわち、画像処理中以外に送信されるライトレジスタコマンド(804〜806及び816〜821)は、図6で説明したのと同様に2クロックサイクルである。一方、画像処理中に送信されるライトレジスタコマンド(1000)のレイテンシは、データと同様に4クロックサイクルとする。
【0037】
図8との違いは、リードレジスタコマンド811が処理ブロック103に対するライトレジスタコマンド1000に置き換わっている点である。このように、上記のデータ単位の画像処理動作中に、処理ブロック103のレジスタ設定値の変更が行なわれる。また、ライトレジスタコマンド1000は、図6で説明したように、処理ブロック103からそのまま受信部104へ送られる。
【0038】
次に、図11に図10をより詳細に示した、ライトレジスタコマンド1000の前後のデータ転送のタイミング図を示す。図11において、図9と動作及びタイミングが同等なものに関しては同一の参照番号付し、詳細な説明を省略する。図9との違いは、リードレジスタコマンド811が図10に示したライトレジスタコマンド1000に置き換わっている点である。
【0039】
図10でも説明したように、ライトレジスタコマンド1000は処理ブロック103にレジスタライトを行なわせる。通常、処理ブロック103のコマンドに対するレイテンシは2クロックである。しかしながら、ライトレジスタコマンド1000は入力データDn+1''以降の画像処理に関して、処理ブロック103の設定を変更する為のコマンドである為、そのレイテンシはデータと同じ4クロックとなる。そして、その出力は、処理後のデータDn'''及びDn+1'''との前後関係を保ちながら、・・・Dn''',WC_ID2,Dn+1'''・・・の順で出力される。ただし、レジスタの更新は、データDn+1''が処理される前に行なわれる。
【0040】
次に、上述した処理ブロック101〜103について詳細に説明する。図12は、処理ブロック101〜103の内部構成を示すブロック図である。1200はコマンド及びデータの入力端子である。1201はデコーダであり、入力端子1200より入力されたコマンド及びデータをデコードする。1202はレジスタ部であり、デコーダ1201からのコマンドにより、レジスタデータの読み出し、及び書き込みを行なう。ここで、書き込み動作により、処理パラメータを格納するとともに、信号1211を介して処理部1203に与える。また、読み出し動作により、格納されている処理パラメータの読み出し、あるいは、処理部1203の内部ステータスを、信号1212を介して受け取って、その値の読み出しを行なう。1211は上記処理パラメータ値を処理部1203に伝える為の信号であり、1212は処理部1203の内部ステータスをレジスタ部1202に伝える為の信号である。
【0041】
1203は処理部であり、デコーダ1201からのデータ(画像データ)に対して予め定められた処理(画像処理)を施す。デコーダ1201は、modeフラグ201,301,401,501に基づいて、転送データ中のデータとコマンドを処理部1203とレジスタ部1202に振り分ける分離機能を有する。1204はバッファであり、コマンドとデータの前後関係を保証する。1205はデコーダ1201からバッファ1204へ出力されるコマンド保持信号である。1206は入力コマンドが自分のIDと一致しなかった場合、コマンドをそのまま出力する系に挿入される遅延調整用のフリップフロップである。1207はデコーダ1201でデコードされたmodeフラグ201及び処理ブロックID202の遅延調整用のフリップフロップである。1208はエンコーダであり、出力コマンド及びデータを生成する。1209はエンコーダ1208が出力を選択する為のセレクト信号である。1210はコマンド及びデータを出力する為の出力端子である。
【0042】
図12において、デコーダ1201は、多重化されたコマンド及びデータを分離する。レジスタ部1202は、画像処理パラメータの値を格納し、処理部1203が、画像処理を行なう。バッファ1204は、時系列的な前後関係を保証し、エンコーダ1208は、バッファ1204の出力と処理部1203の出力とデコーダ1201の出力を選択する。
【0043】
次に図13を用いて、図12に示した処理ブロックによるレジスタリード及びライト動作を説明する。ここで、図12の処理ブロックIDには“2”が設定されており、画像処理中(最初のデータであることを示すstartフラグ302のセットされたデータを送信してから、最後のデータであることを示すendフラグ303のセットされたデータを送信するまでの間)でない場合での動作を説明する。1300はクロック、1301はコマンド及びデータの入力端子1200における入力データのタイミングを示す。1304はレジスタ部1202の入力データのタイミング、1305はレジスタ部1202の出力データのタイミングを表す。1306はコマンド保持信号1205の内容、1307はバッファ1204の出力データのタイミング、1308はフリップフロップ1206の出力データを示す。1309はセレクト信号1209の内容、1310はエンコーダ1208の出力データ(すなわち出力端子1210における出力データ)のタイミングを示す。なお、エンコーダ1208は、セレクト信号1209が“0”の時はバッファ1204の出力を選択し、“2”の時はフリップフロップ1206の出力を選択して、出力コマンドを生成する。
【0044】
1301に示すように、
・サイクルC0にて処理ブロックID202=2、アドレス204=0のライトレジスタコマンドが、
・サイクルC1にて処理ブロックID202=2、アドレス204=1のライトレジスタコマンドが、
・サイクルC2にて処理ブロックID202=2、アドレス204=0のリードコマンドが、
・サイクルC3にて処理ブロックID202=2、アドレス204=1のリードコマンドが、
・サイクルC4にて処理ブロックID202=0のライトコマンドが、
・サイクルC5にて処理ブロックID202=1のリードコマンドが入力されたとする。
【0045】
これら入力されたコマンドはデコーダ1201にてデコードされる。そして、処理ブロックID202が“2”であるコマンドに関しては、RWフラグ203、アドレス204、レジスタデータ205の内容がレジスタ部1202へ出力される。また、画像処理中でなく、且つIDが“2”以外である場合は、当該コマンドはそのままフリップフロップ1206へ出力される。そして、フリップフロップ1206にて1クロック分遅延させられ、エンコーダ1208へ出力される。さらに、modeフラグ201及び処理ブロックID202がフリップフロップ1207へ入力され、そこで1クロック分遅延させられ、modeフラグ401及び処理ブロックID402としてバッファ1204へ出力される。また、サイクルC0〜C5においてはコマンドのみが入力されている。従って、デコーダ1201は、信号内容1309に示すように、処理ブロックのコマンドに対するレイテンシ(2クロックサイクル)分にあわせて、セレクト信号1209を出力する。
【0046】
つまり、1304に示すように、
・サイクルC0にてRWフラグ203=1、アドレス204=0及びレジスタデータ205がレジスタ部1202へ出力され、
・サイクルC1にてRWフラグ203=1、アドレス204=1及びレジスタデータ205がレジスタ部1202へ出力され、
・サイクルC2にてRWフラグ203=0、アドレス204=0及びレジスタデータ205がレジスタ部1202へ出力され、
・サイクルC3にてRWフラグ203=0、アドレス204=1及びレジスタデータ205がレジスタ部1202へ出力される。
【0047】
また、1308に示すように、
・処理ブロックID202=0のライトコマンドは、サイクルC5にてエンコーダ1208へ出力され、
・処理ブロックID202=1のリードコマンドは、サイクルC6にてエンコーダ1208へ出力される。
【0048】
また、エンコーダ1208は、セレクト信号1209が“0”の時はバッファ1204の出力を選択し、“1”の時は処理部1203の出力を選択し、“2”の時はフリップフロップ1206の出力を選択する。なお、セレクト信号は、
・当該処理ブロックで実行すべきコマンドに対して“0”が、
・当該処理ブロックが画像処理すべきデータに対して“1”が、
・当該処理ブロックで実行されないコマンドに対して“2”が、
セットされる。そのため、セレクト信号1209は、信号内容1309に示すように、サイクルC1〜C4の期間は“0”が出力され、サイクルC5〜C6の期間は“2”が出力される。
【0049】
レジスタ部1202においては、RWフラグ203の値が“0”の時は所望のアドレスのレジスタリード動作を行ない、同時にそのときのRWフラグ403=0、アドレス404及びレジスタデータ405をバッファ1204へ出力する。このとき、レジスタリード動作は、レジスタコマンドの直前に入力されたデータの処理が終了してから行なわれる。またRWフラグ203の値が“1”の時はレジスタライト動作を行ない、そのときのRWフラグ403、アドレス404と所望のアドレスのレジスタ値をバッファ1204へ出力する。
【0050】
この時、ライトされたレジスタデータは画像処理パラメータとして処理部1203へ出力される。また、レジスタリードデータには、処理部1203から入力された、内部状態等を反映させる。
【0051】
つまり、1305に示すように、
・サイクルC1にてアドレス204=0へのライト動作を行なうと同時にRWフラグ403=1、アドレス404=0及びレジスタデータ405をバッファ1204へ出力し、
・サイクルC2にてアドレス204=1へのライト動作を行なうと同時にRWフラグ403=1、アドレス404=1及びレジスタデータ405をバッファ1204へ出力し、
・サイクルC3にてアドレス204=0へのリード動作を行なうと同時にRWフラグ403=0、アドレス404=0及びレジスタデータ405をバッファ1204へ出力し、
・サイクルC4にてアドレス204=1へのリード動作を行なうと同時にRWフラグ403=0、アドレス404=1及びレジスタデータ405をバッファ1204へ出力する。
【0052】
バッファ1204においては、コマンド保持信号1205が“1”の時、入力されたデータを保持する。“1”の値になるのは、デコーダ1201にて、所定のデータ単位(ページ、ブロック、バンド等)の画像処理中に、即ちデータ転送中に、レジスタリード動作などのコマンドの転送が行なわれた場合である。
【0053】
図13の例では、画像処理中にコマンドの転送が行なわれていない為、コマンド保持信号1205が“0”値を有している。そして、入力されたmodeフラグ401、処理ブロックID402、RWフラグ403、アドレス404及びレジスタデータ405は、そのままエンコーダ1208へ出力される。そして、エンコーダ1208は、図4に示した出力コマンドフォーマット400に従った出力コマンドの生成をセレクト信号1209に従って行ない、1クロックサイクル後に出力端子1210より出力する。
【0054】
つまり、サイクルC1〜C4の期間はセレクト信号1209の値が“0”なので、エンコーダ1208はバッファ1204の出力を選択する。そして、エンコーダ1208は、1310に示すように、
・1クロックサイクル後のサイクルC2にて処理ブロックID402=2、アドレス404=0のライトコマンドを、
・サイクルC3にて処理ブロックID402=2、アドレス404=1のライトコマンドを、
・サイクルC4にて処理ブロックID402=2、アドレス404=0のリードコマンドを、
・サイクルC5にて処理ブロックID402=2、アドレス404=1のリードコマンドを、出力端子1210へ出力する。
【0055】
また、セレクト信号1209はサイクルC5〜C6の期間は値が“2”なので、エンコーダ1208はフリップフロップ1206の出力を選択する。そして、エンコーダ1208は、1310に示すように、
・1クロックサイクル後のサイクルC6にて処理ブロックID402=0のライトコマンドWC_ID0を、
・サイクルC7にて処理ブロックID402=1のリードコマンドRC_ID1を出力端子1210へ出力する。
【0056】
次に図14を用いて、図12に示した処理ブロックが所定のデータ単位の画像処理中(最初のデータであることを示すstartフラグ302のセットされたデータを送信してから、最後のデータであることを示すendフラグ303のセットされたデータを送信するまでの間)にレジスタのリードを行なう場合の画像処理動作を説明する。なお、所定のデータ単位とは、ページ、ブロック、バンド等の単位である。ここで、図12の処理ブロックのIDは図13と同様に“2”が設定されており、処理ブロックのデータに対するレイテンシは4クロックサイクルとする。また、各処理ブロックのコマンドに対するレイテンシは、そのコマンドが画像処理中に送信される場合は、データと同様に4クロックサイクルとする。
【0057】
図14において、1400はクロック、1401はコマンド及びデータの入力端子1200におけるタイミングを示す。1402は処理部1203の入力データのタイミング、1403は処理部1203の出力データのタイミングを示す。1404はレジスタ部1202の入力データのタイミング、1405はレジスタ部1202の出力データのタイミングを示す。1406はコマンド保持信号1205の状態、1409はセレクト信号1209の状態を示す。1407はバッファ1204の出力データのタイミング、1410はコマンド及びデータの出力端子1210における出力データのタイミングを示す。
【0058】
1401に示すように、サイクルC0にてデータDn-1が、サイクルC1にてデータDnが、サイクルC2にて処理ブロックID202=2のリードコマンドが、サイクルC3〜C7にてデータDn+1〜Dn+5が入力される場合を説明する。これら入力されたデータ及びコマンドのうち、データはデコーダ1201にてデコードされ、Startフラグ302、endフラグ303、データ304が処理部1203へ出力される(1402)。また、画像処理中においては、処理ブロックID202の値に関わらず、コマンドのRWフラグ203、アドレス204、レジスタデータ205がレジスタ部1202へ出力される(1404)。これは、たとえコマンドの処理ブロックID202が“2”以外の値であっても、データとコマンドの前後関係を保ちながら、後段の処理ブロックへデータ及びコマンドを伝播させる為である。
【0059】
さらに、modeフラグ401及び処理ブロックID402がフリップフロップ1207へ出力され、フリップフロップ1207にて1クロック分遅延させられ、バッファ1204へ出力される。またデコーダ1201にはサイクルC2の期間以外はデータが入力されている。デコーダ1201は、データが入力されている期間中は画像処理中であると判断してセレクト信号1209を“1”にセットする。また、デコーダ1201は、自身の処理ブロックIDを持つコマンドを入力した場合には、セレクト信号1209を“0”にセットする。但し、処理ブロックのデータのレイテンシ、及び画像処理中に受信したコマンドに対するレイテンシが4クロックであり、セレクト信号1209はこれにあわせて出力されている(1409)。
【0060】
つまり、1402に示すように、サイクルC0,C1及びC3〜C7にてstartフラグ302、endフラグ303及びデータ304が処理部1203へ入力される。そして、1404に示すように、サイクルC2にてアドレス204及びレジスタデータ205がレジスタ部1202へ出力される。また、セレクト信号1209は、1409に示すようにサイクルC0〜C4、C6、C7の期間は“1”となり、サイクルC5の期間は“0”となる。
【0061】
処理部1203においては入力されたデータに対して4クロックサイクルのレイテンシで画像処理をおこない、出力データのstartフラグ502、endフラグ503及びデータ504をエンコーダ1208へ出力する(1403)。
【0062】
また、レジスタ部1202においては、サイクルC2で入力端子1200から入力されたレジスタリードコマンド(RC_ID2)に応じて、図13で説明したレジスタリード動作を行なう。つまり、1405に示すようにサイクルC3にてアドレス204へのリード動作を行なうと同時にRWフラグ403=0、アドレス404及び読み出したレジスタデータ405をバッファ1204へ出力する。
【0063】
図13で説明したようにデコーダ1201にて所定のデータ単位(ページ、ブロック、バンド等)の画像処理中にレジスタリードコマンドを検知した為、サイクルC3及びC4においてコマンド保持信号1205が“1”となる。よって、バッファ1204は、サイクルC3で入力されたmodeフラグ401、処理ブロックID402、RWフラグ403、アドレス404、レジスタデータ405をそのままエンコーダ1208へ出力し、サイクルC4及びC5でそれらの値を保持する。この様子は、1407によって示されている。
【0064】
エンコーダ1208は、1409に示されるセレクト信号1209に従い、図4に示した出力コマンドフォーマット400或いは出力データフォーマット500を有する出力コマンド/データを生成し、出力端子1210より出力する。つまり、エンコーダ1208は、サイクルC0〜C4、C6、C7の期間はセレクト信号1209の値が“1”なので、処理部1203の出力を選択し、1クロックサイクル後のサイクルに出力端子1210へデータを出力する。また、サイクルC5ではセレクト信号1209の値が“0”である為、エンコーダ1208はバッファ1204を選択し、1クロックサイクル後のサイクルに処理ブロックID402=2、アドレス404=0のリード出力コマンドを出力端子1210へ出力する。
【0065】
尚、図14の例では、画像処理中にレジスタのリード動作を行なう場合を示したが、レジスタのライト動作を行なう場合でも、レジスタのリード動作と同等な動作となる。但し、レジスタのライト動作では、レジスタの更新のタイミングが、当該レジスタライトコマンドの次のデータに対する処理の開始までに行なわれる。
【0066】
また、レイテンシの調整も画像処理部のレイテンシを4サイクル固定として説明したが、これに限られるものではない。例えば画像処理部のレイテンシが可変の場合においても、画像処理部にコマンド挿入個所を示す信号を追加し、上記出力の切替えを該コマンド挿入個所を示す信号によって切替えることにより、コマンドとデータの順番を維持して出力できる。
【0067】
以上説明したように、本実施形態によれば、コマンド及びデータを多重化して、共通のデータバス上を転送し、処理ブロックでは入力されたコマンドとデータの順序を保ちながら処理結果を出力する。これにより、データに同期した制御を、任意のデータ間でかつ高速に行なうことが可能となる。
【0068】
尚、本実施形態では、データ単位(ページ、ブロック、バンド等)の画像処理中にレジスタのリード及びライトを行なう動作に関して、1つのみのコマンドを転送する例を示したがこれに限られるものではない。複数のコマンドの転送及び、上記データ単位内の複数箇所でデータに対してコマンドを挿入して転送する場合も可能であることは上記実施形態の説明から当業者には明らかである。
【0069】
また、本実施形態では画像処理中のコマンド転送が1つの処理ブロックに関してのみ行なう例を示したが、複数の処理ブロックに対して行なう場合も可能であることはいうまでもない。
また、上記実施形態では、1つのコマンドに1つの処理ブロックを特定するIDを記述したが、例えば、1FH(処理ブロックID202の全ビットが1)の場合には、全ての処理ブロックが選択されるようにしてもよい。例えば、全ての処理ブロックの同一アドレスに同一データを書き込むような処理を、1つのコマンドで実現できる。
また、上記実施形態では、処理ブロックが3つの場合を説明したが、処理ブロックの数は1以上、いくつでも良い。但し、処理ブロックIDで表せる数が上限となる。
【0070】
さらに、実施形態では各処理ブロックのデータに対するコマンド及びデータに対するレイテンシが同一の場合に関して説明したが、これに限定されるものではない。複数の処理ブロックのコマンド及びデータに対するレイテンシが互いに異なる場合でも、デコーダ1201によるバッファ1204でコマンドを保持するクロックサイクルの制御をそれぞれ適宜変更することにより対応できる。
【0071】
[他の実施形態]
以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0072】
尚、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって前述した実施形態の機能が達成される場合を含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したコンピュータプログラムである。
【0073】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0074】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
【0075】
コンピュータプログラムを供給するためのコンピュータ読み取り可能な記憶媒体としては以下が挙げられる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などである。
【0076】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0077】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
【0078】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどとの協働で実施形態の機能が実現されてもよい。この場合、OSなどが、実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
【0079】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行なう。
【技術分野】
【0001】
本発明は、コマンド及びデータを多重化して、共通のデータバスによりそれらの入出力を行なう画像処理装置及び方法に関する。
【背景技術】
【0002】
従来技術として、データの入出力を行なう為のデータバスと、レジスタ設定を行なう為のCPUバスが別々に設けられた画像処理装置が知られている。この種の画像処理装置においては、割り込み信号を用いた制御方式により、特定のデータ単位(ページ、ブロック、バンド等)で処理に用いるパラメータを変更したり、内部状態を示すレジスタのリード動作を行なったりしていた。そして、このような割り込み処理の実行中では、データ転送を止めていた。
【0003】
また、特許文献1では、映像データの各フレームのスキャンラインの先頭に制御コマンドを付加して、映像データに制御コマンドを多重化し伝送を行なうことにより、各フレームに同期した制御を行なっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平8−214267号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、割り込み信号を用いた制御方式では、転送中の任意のデータ間で、画像処理に用いるフィルタ係数や二値化用閾値等のパラメータを変更したり、内部状態を示すレジスタのリード動作を実行したりすることは困難であった。又、出来たとしても、割り込み処理中はデータ転送を止める必要があり、処理が低速になってしまうという課題があった。さらに特許文献1に記載された技術では、フレームごとにパラメータの変更やレジスタのリード動作を行なうことは可能であるが、フレーム内の任意のデータ間でのパラメータ変更やレジスタのリード動作を行なうことは困難であった。特許文献1においても、スキャンライン毎に制御コマンドを伝送することができるものの、データ転送中の任意のタイミングでコマンドによる処理を実行させることはできない。
【0006】
本発明は、上記の課題に鑑みてなされたものであり、データ転送中の任意のデータ間でコマンドに応じた処理を実行可能な画像処理装置及びその方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記の目的を達成するための本発明の一態様によるデータ処理方法は、
それぞれが処理部を有する複数の処理ブロックが共通バスによって直列に接続された画像処理装置における当該複数の処理ブロックのそれぞれにより実行される画像処理方法であって、
前記共通バスを介して当該処理ブロックに入力されたデータを用いた画像処理を、当該処理ブロックの処理部により行なうデータ処理工程と、
前記共通バスを介して当該処理ブロックに入力されたコマンドに応じた処理を、当該処理ブロックの処理部に対して行なうコマンド処理工程と、
前記共通バスを介して第1の処理ブロックに入力される第1のコマンドについて、当該第1のコマンドの前に前記第1の処理ブロックへ入力されたデータに基づくデータ処理によるデータ出力が完了するまで、前記第1の処理ブロックから当該第1のコマンドを出力することを遅延させる遅延工程とを有する。
【発明の効果】
【0008】
本発明によれば、データ転送中の任意のデータ間でコマンドに応じた処理を実行することが可能となる。
【図面の簡単な説明】
【0009】
【図1】実施形態における、画像処理装置の構成を示すブロック図である。
【図2】実施形態の入力コマンドのフォーマットを示す図である。
【図3】実施形態の入力データのフォーマットを示す図である。
【図4】実施形態の出力コマンドのフォーマットを示す図である。
【図5】実施形態の出力データのフォーマットを示す図である。
【図6】実施形態のレジスタリード及びライト動作のタイミングを示す図である。
【図7】実施形態の第1の画像処理動作のタイミングを示す図である。
【図8】実施形態の第2画像処理動作のタイミングを示す図である。
【図9】実施形態の第2画像処理動作の詳細なタイミングを示す図である。
【図10】実施形態の第3画像処理動作のタイミングを示す図である。
【図11】実施形態の第3画像処理動作の詳細なタイミングを示す図である。
【図12】実施形態の画像処理ブロックの構成を示す図である。
【図13】実施形態の画像処理ブロックのレジスタリード及びライト動作のタイミングを示す図である。
【図14】実施形態の画像処理ブロックの画像処理動作のタイミングを示す図である。
【発明を実施するための形態】
【0010】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【0011】
図1に、データ処理装置としての本実施形態による画像処理装置10の構成図を示す。100は送信部であり、コマンドワード及びデータワードを多重化して送信する。101〜103は画像処理ブロックであり、図示の如く直列に接続され、それぞれが所定の画像処理を行なう。以下、処理ブロック101〜103と記載する。104は受信部であり、コマンドワード及びデータワードを受信して、終了信号105を送信部100へ送信する。11はCPUであり、画像処理装置10を利用して、例えば印刷装置等の画像処理装置10が組み込まれる装置を制御する。12はDRAMであり、処理対象となる画像データを格納する。13はDMACであり、DRAM12から画像処理装置10への画像データの直接的な転送を制御する。
【0012】
次に図2〜図5を用いてコマンドワード及びデータワードのフォーマットを説明する。なお、コマンドワード及びデータワードは所定のビット長を有しており、本実施形態では64ビットで構成されているものとする。以下、コマンドワードをコマンド、データワードをデータと記載する。
【0013】
図2は入力コマンドのフォーマットの一例を示す。入力コマンドフォーマット200において、MSBを63ビット目、LSBを0ビット目とする。63ビット目はコマンド及びデータを識別する為のmodeフラグ201(属性データ)であり、0の場合はデータを、1の場合はコマンドを示す。56〜60ビット目は入力コマンドが適用される処理ブロック番号を示す処理ブロックID202である。なお、後述するように各処理ブロックにはそれぞれを特定するための識別データとしての処理ブロックIDが割り当てられており、処理ブロックID202と一致する処理ブロックのみにおいて、当該コマンドが実行される。55ビット目はレジスタのリードライトを指定するためのRWフラグ203である。32〜47ビット目はレジスタのアドレス204である。0〜31ビット目はレジスタデータ205のためのデータ領域である。ここで、レジスタデータ205の値は、リードコマンド時(RWフラグ203が0の時)は“0”であり、ライトコマンド時(RWフラグ203が1の時)はライトされるレジスタ値である。48〜54ビット目及び61、62ビット目は使用不可のリザーブド領域206である。以上のようにして、コマンドは、アクセスするレジスタへのデータ書き込みあるいはレジスタからのデータ読み出しを指示する。
【0014】
また、図3は入力データのフォーマットの一例を示す。入力データフォーマット300において、MSBを63ビット目、LSBを0ビット目とする。63ビット目はコマンド及びデータを識別する為のmodeフラグ201(属性データ)であり、0の場合はデータを、1の場合はコマンドを示す。56ビット目は所定のデータ単位で(ページ、ブロック、バンド等の所定の範囲のデータを単位として)画像処理される最初のデータを示すstartフラグである。55ビット目は画像処理される最後のデータを示すendフラグ303である。0〜47ビット目は画像処理されるデータ304である。48〜54ビット目及び57〜62ビット目は、使用不可のリザーブド領域305である。
【0015】
図4は出力コマンドのフォーマットの一例を示す。出力コマンドフォーマット400において、MSBを63ビット目、LSBを0ビット目とする。63ビット目はコマンド及びデータを識別する為のmodeフラグ401(属性データ)であり、0の場合はデータを、1の場合はコマンドを示す。56〜60ビットはコマンドが適用された処理ブロック番号を示す処理ブロックID402である。55ビット目は、レジスタのリードライトを指定するためのRWフラグ203であるRWフラグ403である。32〜47ビット目はレジスタのアドレス404である。0〜31ビット目はレジスタデータ405のためのデータ領域である。ここで、レジスタデータ405の値はリードコマンド時(RWフラグ403が0の場合)はリードされたレジスタ値であり、ライトコマンド時(RWフラグ403が1の場合)は入力コマンドフォーマット200のレジスタデータ205の値である。48〜54ビット目及び61、62ビット目はリザーブド領域406である。
【0016】
また、図5は出力データのフォーマットの一例を示す。出力データフォーマット500において、MSBを63ビット目、LSBを0ビット目とする。63ビット目は、コマンド及びデータを識別する為のmodeフラグ501(属性データ)であり、0の場合はデータを、1の場合はコマンドを示す。56ビット目は所定のデータ単位(ページ、ブロック、バンド等)で画像処理された最初のデータであることを示すstartフラグ502である。55ビット目は画像処理された最後のデータであることを示すendフラグ503である。0〜47ビット目は画像処理されたデータ504である。48〜54ビット目及び57〜62ビット目はリザーブド領域505である。
【0017】
尚、処理ブロック101〜103は、後述するように、入力コマンド/入力データを出力コマンド/出力データに変換する。入力コマンド及び入力データはそれぞれ入力コマンドフォーマット200、入力データフォーマット300を有する。また、出力コマンド及び出力データはそれぞれ出力コマンドフォーマット400、出力データフォーマット500を有する。通常、処理ブロックがmodeフラグ変更を行なうことは無い為、変換前後においてmodeフラグ201とmodeフラグ401の値は等しくかつ、modeフラグ301とmodeフラグ501の値は等しい値である。同様に処理ブロックID202と処理ブロックID402は等しく、RWフラグ203とRWフラグ403は等しく、アドレス204とアドレス404は等しい。
【0018】
次に、図6のタイミング図を用いて、図1に示した画像処理装置10のレジスタのリードライト動作を説明する。図6において、600はクロックを、601は送信部100の出力を、602〜604は処理ブロック101〜103の出力をそれぞれ示す。ここで、各処理ブロックのコマンドに対するレイテンシは2クロックサイクルとする。また、処理ブロック101〜103に対してそれぞれ処理ブロックIDとして0〜2の値が割り振られているものとする。
【0019】
まず、CPU11から送信部100に対して、レジスタアドレス、ライトデータ、処理ブロック番号IDが設定される。送信部100は図2に示した入力コマンドフォーマット200に従って、リードレジスタコマンド又はライトレジスタコマンド(これらを入力コマンドという)を生成する。図6の605〜607はそれぞれ処理ブロック101〜103に対するライトレジスタコマンドであり、処理ブロックID202が0〜2に設定されている。また、608、610、612はそれぞれ処理ブロック101〜103に対するリードレジスタコマンドであり、処理ブロックID202が0〜2に設定されている。
【0020】
ライトレジスタコマンド605〜607に従って、処理ブロック101〜103はそれぞれレジスタ値をライトする。その後、図6に示すように、処理ブロック101〜103は、ライトレジスタコマンド605〜607から、図4で説明した出力コマンドフォーマット400に従って入力コマンドと同等な出力コマンドを生成し、後段の処理ブロックへ出力する。受信部104は、各処理ブロックからの出力コマンドを受信する。その後、CPU11が受信部104で受信されたライトレジスタコマンドの確認を行なうことにより、レジスタのライトが正常に行なわれたこと確認をする。
【0021】
また、処理ブロック101は、リードレジスタコマンド608に従ってレジスタリード動作を行なった後、図4で説明した出力コマンドフォーマット400に従った出力コマンド609を生成し、後段の処理ブロック102に出力する。出力コマンド609は、リードレジスタコマンド608のレジスタデータのデータ領域に、レジスタコマンド608が指定するアドレスから読み出したレジスタデータをセットしたものである。処理ブロック102及び処理ブロック103は出力コマンド609をそのまま後段へ出力する。こうして、出力コマンド609は受信部104にて受信される。
【0022】
リードレジスタコマンド610は処理ブロック101ではそのまま後段の処理ブロック102に出力される。処理ブロック102は、リードレジスタコマンド610に従ってレジスタリード動作を行なった後、図4で説明した出力コマンドフォーマット400に従った出力コマンド611を生成し、後段の処理ブロック103に出力する。出力コマンド611は、リードレジスタコマンド608のレジスタデータのデータ領域に、レジスタコマンド610が指定するアドレスから読み出したレジスタデータをセットしたものである。処理ブロック103は出力コマンド611をそのまま後段へ出力し、受信部104にて受信する。
【0023】
さらに、リードレジスタコマンド612は処理ブロック101及び102ではそのまま後段の処理ブロックに出力される。処理ブロック103はリードレジスタコマンド612に従ってレジスタリード動作を行なった後、図4で説明した出力コマンドフォーマット400に従った出力コマンド613を生成し、後段へ出力する。出力コマンド613は、リードレジスタコマンド612のレジスタデータのデータ領域に、レジスタコマンド612が指定するアドレスから読み出したレジスタデータをセットしたものである。出力された出力コマンド613は受信部104にて受信される。
【0024】
その後、CPU11が受信部104で受信されたリードレジスタコマンドから、レジスタ値を取得する。以上のように、直列に接続された複数の処理ブロックにおいて、前段の処理ブロックの出力が、後段の処理ブロックの多重化データとして入力され、最終的な処理結果が受信部104に受信されることになる。
【0025】
次に、図7のタイミング図を用いて、図1に示した画像処理装置10が所定のデータ単位(ページ、ブロック、バンド等)の画像処理中にレジスタのリード又はライトを行なわない場合の画像処理動作を説明する。図7において、700は送信部100の出力を、701〜703は処理ブロック101〜103の出力をそれぞれ示す。ここで、各処理ブロックのコマンドに対するレイテンシは、画像処理中(最初のデータであることを示すstartフラグ302のセットされたデータを送信してから、最後のデータであることを示すendフラグ303のセットされたデータを送信するまでの間)にコマンドが送信されていないので、図6で説明したのと同様に2クロックサイクルとする。また、各処理ブロックのデータに対するレイテンシは4クロックサイクルとする。
【0026】
まずCPU11から送信部100に対してレジスタアドレス、ライトデータ、処理ブロック番号IDが設定される。704〜706はそれぞれ、処理ブロック101〜103に対する、単数又は複数のライトレジスタコマンドである。図6を用いて説明したのと同様な手順で、処理ブロック101〜103はこれらライトレジストコマンドに従ってレジスタライト動作を行ない、これにより処理ブロック内の画像処理パラメータの設定が行なわれる。次に、DRAM12等の記憶媒体から、DMAC13を介して上記データ単位分の画像データが送信部100に転送される。送信部100では、図3に示した入力データフォーマット300に従ってデータ707を作成し、処理ブロック101に対して出力する。処理ブロック101は、入力されたデータ707に対して画像処理を実施した後、得られたデータ708を処理ブロック102に対して出力する。同様に、処理ブロック102は入力されたデータ708に対して画像処理を実施した後、得られたデータ709を処理ブロック103に対して出力する。更に、処理ブロック103は入力されたデータ709に対して画像処理を実施した後、得られたデータ710を受信部104へ出力する。受信部104は、DMAC13を介してDRAM12へ画像処理後のデータを転送する。
【0027】
また、711、713、715はそれぞれ、処理ブロック101〜103に対する、画像処理後の内部状態を観測する為の、単数又は複数のリードレジスタコマンドである。処理ブロック101〜103は、これらリードレジスタコマンド711,713,715に従って、図6を用いて説明したのと同様な手順でレジスタリード動作を行なう。処理ブロック101〜103に対するレジスタリードの結果はそれぞれリードレジスタコマンド712,714,716として受信部104へ送られ、受信部104によって受信される。
【0028】
その後、CPU11は、受信部104で受信されたリードレジスタコマンドから、レジスタ値を取得する。
【0029】
次に、図8のタイミング図を用いて、図1に示した画像処理装置10が所定のデータ単位(ページ、ブロック、バンド等)の画像処理中にレジスタのリードを行なう場合の画像処理動作を説明する。800は送信部100の出力を、801〜803は処理ブロック101〜103の出力をそれぞれ示す。ここで、各処理ブロックのデータに対するレイテンシは4クロックサイクルとする。また、各処理ブロックのコマンドに対するレイテンシは、画像処理中(最初のデータであることを示すstartフラグ302のセットされたデータを送信してから、最後のデータであることを示すendフラグ303のセットされたデータを送信するまでの間)に送信される場合と画像処理中以外に送信される場合で異なる。画像処理中以外に送信されるコマンド(804〜806及び816〜821)に対するレイテンシは、図6で説明したのと同様に2クロックサイクルである。一方、画像処理中に送信されるコマンド(811及び822)のレイテンシは、画像処理対象のデータと同様に4クロックサイクルとする。
【0030】
まずCPU11から送信部100に対してレジスタアドレス、ライトデータ、処理ブロック番号IDが設定される。804〜806はそれぞれ、処理ブロック101〜103に対する、単数又は複数のライトレジスタコマンドである。図6を用いて説明したのと同様な手順で、処理ブロック101〜103はこれらレジスタコマンドに従ってレジスタライト動作を行ない、処理ブロック101〜103の各々に対する画像処理パラメータの設定が行なわれる。
【0031】
次に、DRAM12等の記憶手段からDMAC13を介して上記データ単位分の画像データが送信部100に対して転送される。送信部100では、図3に示した入力データフォーマット300に従ってデータを作成し、データ807及びデータ812として処理ブロック101に出力する。なお、送信部100は、データ807とデータ812の間に処理ブロック103に対する、画像処理中の内部状態を観測する為のリードレジスタコマンド811を挿入して、処理ブロック101に対して出力を行う。処理ブロック101は、データ807及び812に画像処理を実施し、得られたデータ808及び813を処理ブロック102に対して出力する。このとき、リードレジスタコマンド811は、データ808とデータ813の間に挟まれて、そのまま処理ブロック102に出力される。
【0032】
同様に、処理ブロック102は入力されたデータ808,813に画像処理を実施し、得られたデータ809及び814を処理ブロック103に対して出力する。また、リードレジスタコマンド811は、データ809及び814に挟まれて、そのまま処理ブロック103に対して出力される。処理ブロック103は、入力されたデータ809,814に画像処理を実施し、得られたデータ810及び815を受信部104に出力する。また、処理ブロック103は、リードレジスタコマンド811を実行し、レジスタリードの結果である出力コマンド822を受信部104へ出力する。
【0033】
その後、受信部104はDMAC13を介してDRAM12へ画像処理後のデータを転送する。CPU11はレジスタリード結果815からレジスタ値を取得することにより、処理ブロック103における画像処理中の内部状態を観測することができる。
【0034】
また、816、818、820はそれぞれ、処理ブロック101〜103に対する、画像処理後の内部状態を観測する為の、単数又は複数のリードレジスタコマンドである。これらのリードレジスタコマンド816,818,820は、図6を用いて説明したのと同様な手順で処理ブロック101〜107に対してレジスタリード動作を行なう。そして、処理ブロック101〜103に対するレジスタリードの結果が、出力コマンド817,819,821として、受信部104へ送られ、受信部104により受信される。CPU11は、受信部104で受信された出力コマンド817,819,821からレジスタ値を取得することにより、処理ブロック101〜103における画像処理後の内部状態を観測することができる。
【0035】
次に、図9に図8をより詳細に示した、リードレジスタコマンド811の前後のデータ転送のタイミング図を示す。900はクロックを、901は送信部100の出力を、902〜904は処理ブロック101〜103の出力をそれぞれ示す。また、811及び812は図8に示したリードレジスタコマンド及びこれに対応した出力コマンドである。図8でも説明したように、リードレジスタコマンド811は処理ブロック103に対してレジスタリードを行なうコマンドである。通常、処理ブロック103のコマンドに対するレイテンシは2クロックであるが、リードレジスタコマンド811は入力データDn''までが処理された時点の処理ブロック103の内部状態のレジスタ値をリードする為のコマンドである。その為、リードレジスタコマンド811のレイテンシはデータと同じ4クロックとなる。そして、その出力(出力コマンド822))は、処理後のデータDn'''及びDn+1'''との前後関係を保ちながら、・・・Dn''',RC_ID2',Dn+1'''・・・の順で出力される。
【0036】
次に、図10のタイミング図を用いて、図1に示した画像処理装置10が所定のデータ単位(ページ、ブロック、バンド等)の画像処理中にレジスタのライトを行なう場合の画像処理動作を説明する。ここで、図8と動作及びタイミングが同等なものに関しては同じ参照番号を付し、詳細な説明を省略する。また、図8と同様に、各処理ブロックのデータに対するレイテンシは4クロックサイクルとする。さらに、各処理ブロックのコマンドに対するレイテンシは、画像処理中(最初のデータであることを示すstartフラグ302のセットされたデータを送信してから、最後のデータであることを示すendフラグ303のセットされたデータを送信するまでの間)とそれ以外に送信される場合とで異なる。すなわち、画像処理中以外に送信されるライトレジスタコマンド(804〜806及び816〜821)は、図6で説明したのと同様に2クロックサイクルである。一方、画像処理中に送信されるライトレジスタコマンド(1000)のレイテンシは、データと同様に4クロックサイクルとする。
【0037】
図8との違いは、リードレジスタコマンド811が処理ブロック103に対するライトレジスタコマンド1000に置き換わっている点である。このように、上記のデータ単位の画像処理動作中に、処理ブロック103のレジスタ設定値の変更が行なわれる。また、ライトレジスタコマンド1000は、図6で説明したように、処理ブロック103からそのまま受信部104へ送られる。
【0038】
次に、図11に図10をより詳細に示した、ライトレジスタコマンド1000の前後のデータ転送のタイミング図を示す。図11において、図9と動作及びタイミングが同等なものに関しては同一の参照番号付し、詳細な説明を省略する。図9との違いは、リードレジスタコマンド811が図10に示したライトレジスタコマンド1000に置き換わっている点である。
【0039】
図10でも説明したように、ライトレジスタコマンド1000は処理ブロック103にレジスタライトを行なわせる。通常、処理ブロック103のコマンドに対するレイテンシは2クロックである。しかしながら、ライトレジスタコマンド1000は入力データDn+1''以降の画像処理に関して、処理ブロック103の設定を変更する為のコマンドである為、そのレイテンシはデータと同じ4クロックとなる。そして、その出力は、処理後のデータDn'''及びDn+1'''との前後関係を保ちながら、・・・Dn''',WC_ID2,Dn+1'''・・・の順で出力される。ただし、レジスタの更新は、データDn+1''が処理される前に行なわれる。
【0040】
次に、上述した処理ブロック101〜103について詳細に説明する。図12は、処理ブロック101〜103の内部構成を示すブロック図である。1200はコマンド及びデータの入力端子である。1201はデコーダであり、入力端子1200より入力されたコマンド及びデータをデコードする。1202はレジスタ部であり、デコーダ1201からのコマンドにより、レジスタデータの読み出し、及び書き込みを行なう。ここで、書き込み動作により、処理パラメータを格納するとともに、信号1211を介して処理部1203に与える。また、読み出し動作により、格納されている処理パラメータの読み出し、あるいは、処理部1203の内部ステータスを、信号1212を介して受け取って、その値の読み出しを行なう。1211は上記処理パラメータ値を処理部1203に伝える為の信号であり、1212は処理部1203の内部ステータスをレジスタ部1202に伝える為の信号である。
【0041】
1203は処理部であり、デコーダ1201からのデータ(画像データ)に対して予め定められた処理(画像処理)を施す。デコーダ1201は、modeフラグ201,301,401,501に基づいて、転送データ中のデータとコマンドを処理部1203とレジスタ部1202に振り分ける分離機能を有する。1204はバッファであり、コマンドとデータの前後関係を保証する。1205はデコーダ1201からバッファ1204へ出力されるコマンド保持信号である。1206は入力コマンドが自分のIDと一致しなかった場合、コマンドをそのまま出力する系に挿入される遅延調整用のフリップフロップである。1207はデコーダ1201でデコードされたmodeフラグ201及び処理ブロックID202の遅延調整用のフリップフロップである。1208はエンコーダであり、出力コマンド及びデータを生成する。1209はエンコーダ1208が出力を選択する為のセレクト信号である。1210はコマンド及びデータを出力する為の出力端子である。
【0042】
図12において、デコーダ1201は、多重化されたコマンド及びデータを分離する。レジスタ部1202は、画像処理パラメータの値を格納し、処理部1203が、画像処理を行なう。バッファ1204は、時系列的な前後関係を保証し、エンコーダ1208は、バッファ1204の出力と処理部1203の出力とデコーダ1201の出力を選択する。
【0043】
次に図13を用いて、図12に示した処理ブロックによるレジスタリード及びライト動作を説明する。ここで、図12の処理ブロックIDには“2”が設定されており、画像処理中(最初のデータであることを示すstartフラグ302のセットされたデータを送信してから、最後のデータであることを示すendフラグ303のセットされたデータを送信するまでの間)でない場合での動作を説明する。1300はクロック、1301はコマンド及びデータの入力端子1200における入力データのタイミングを示す。1304はレジスタ部1202の入力データのタイミング、1305はレジスタ部1202の出力データのタイミングを表す。1306はコマンド保持信号1205の内容、1307はバッファ1204の出力データのタイミング、1308はフリップフロップ1206の出力データを示す。1309はセレクト信号1209の内容、1310はエンコーダ1208の出力データ(すなわち出力端子1210における出力データ)のタイミングを示す。なお、エンコーダ1208は、セレクト信号1209が“0”の時はバッファ1204の出力を選択し、“2”の時はフリップフロップ1206の出力を選択して、出力コマンドを生成する。
【0044】
1301に示すように、
・サイクルC0にて処理ブロックID202=2、アドレス204=0のライトレジスタコマンドが、
・サイクルC1にて処理ブロックID202=2、アドレス204=1のライトレジスタコマンドが、
・サイクルC2にて処理ブロックID202=2、アドレス204=0のリードコマンドが、
・サイクルC3にて処理ブロックID202=2、アドレス204=1のリードコマンドが、
・サイクルC4にて処理ブロックID202=0のライトコマンドが、
・サイクルC5にて処理ブロックID202=1のリードコマンドが入力されたとする。
【0045】
これら入力されたコマンドはデコーダ1201にてデコードされる。そして、処理ブロックID202が“2”であるコマンドに関しては、RWフラグ203、アドレス204、レジスタデータ205の内容がレジスタ部1202へ出力される。また、画像処理中でなく、且つIDが“2”以外である場合は、当該コマンドはそのままフリップフロップ1206へ出力される。そして、フリップフロップ1206にて1クロック分遅延させられ、エンコーダ1208へ出力される。さらに、modeフラグ201及び処理ブロックID202がフリップフロップ1207へ入力され、そこで1クロック分遅延させられ、modeフラグ401及び処理ブロックID402としてバッファ1204へ出力される。また、サイクルC0〜C5においてはコマンドのみが入力されている。従って、デコーダ1201は、信号内容1309に示すように、処理ブロックのコマンドに対するレイテンシ(2クロックサイクル)分にあわせて、セレクト信号1209を出力する。
【0046】
つまり、1304に示すように、
・サイクルC0にてRWフラグ203=1、アドレス204=0及びレジスタデータ205がレジスタ部1202へ出力され、
・サイクルC1にてRWフラグ203=1、アドレス204=1及びレジスタデータ205がレジスタ部1202へ出力され、
・サイクルC2にてRWフラグ203=0、アドレス204=0及びレジスタデータ205がレジスタ部1202へ出力され、
・サイクルC3にてRWフラグ203=0、アドレス204=1及びレジスタデータ205がレジスタ部1202へ出力される。
【0047】
また、1308に示すように、
・処理ブロックID202=0のライトコマンドは、サイクルC5にてエンコーダ1208へ出力され、
・処理ブロックID202=1のリードコマンドは、サイクルC6にてエンコーダ1208へ出力される。
【0048】
また、エンコーダ1208は、セレクト信号1209が“0”の時はバッファ1204の出力を選択し、“1”の時は処理部1203の出力を選択し、“2”の時はフリップフロップ1206の出力を選択する。なお、セレクト信号は、
・当該処理ブロックで実行すべきコマンドに対して“0”が、
・当該処理ブロックが画像処理すべきデータに対して“1”が、
・当該処理ブロックで実行されないコマンドに対して“2”が、
セットされる。そのため、セレクト信号1209は、信号内容1309に示すように、サイクルC1〜C4の期間は“0”が出力され、サイクルC5〜C6の期間は“2”が出力される。
【0049】
レジスタ部1202においては、RWフラグ203の値が“0”の時は所望のアドレスのレジスタリード動作を行ない、同時にそのときのRWフラグ403=0、アドレス404及びレジスタデータ405をバッファ1204へ出力する。このとき、レジスタリード動作は、レジスタコマンドの直前に入力されたデータの処理が終了してから行なわれる。またRWフラグ203の値が“1”の時はレジスタライト動作を行ない、そのときのRWフラグ403、アドレス404と所望のアドレスのレジスタ値をバッファ1204へ出力する。
【0050】
この時、ライトされたレジスタデータは画像処理パラメータとして処理部1203へ出力される。また、レジスタリードデータには、処理部1203から入力された、内部状態等を反映させる。
【0051】
つまり、1305に示すように、
・サイクルC1にてアドレス204=0へのライト動作を行なうと同時にRWフラグ403=1、アドレス404=0及びレジスタデータ405をバッファ1204へ出力し、
・サイクルC2にてアドレス204=1へのライト動作を行なうと同時にRWフラグ403=1、アドレス404=1及びレジスタデータ405をバッファ1204へ出力し、
・サイクルC3にてアドレス204=0へのリード動作を行なうと同時にRWフラグ403=0、アドレス404=0及びレジスタデータ405をバッファ1204へ出力し、
・サイクルC4にてアドレス204=1へのリード動作を行なうと同時にRWフラグ403=0、アドレス404=1及びレジスタデータ405をバッファ1204へ出力する。
【0052】
バッファ1204においては、コマンド保持信号1205が“1”の時、入力されたデータを保持する。“1”の値になるのは、デコーダ1201にて、所定のデータ単位(ページ、ブロック、バンド等)の画像処理中に、即ちデータ転送中に、レジスタリード動作などのコマンドの転送が行なわれた場合である。
【0053】
図13の例では、画像処理中にコマンドの転送が行なわれていない為、コマンド保持信号1205が“0”値を有している。そして、入力されたmodeフラグ401、処理ブロックID402、RWフラグ403、アドレス404及びレジスタデータ405は、そのままエンコーダ1208へ出力される。そして、エンコーダ1208は、図4に示した出力コマンドフォーマット400に従った出力コマンドの生成をセレクト信号1209に従って行ない、1クロックサイクル後に出力端子1210より出力する。
【0054】
つまり、サイクルC1〜C4の期間はセレクト信号1209の値が“0”なので、エンコーダ1208はバッファ1204の出力を選択する。そして、エンコーダ1208は、1310に示すように、
・1クロックサイクル後のサイクルC2にて処理ブロックID402=2、アドレス404=0のライトコマンドを、
・サイクルC3にて処理ブロックID402=2、アドレス404=1のライトコマンドを、
・サイクルC4にて処理ブロックID402=2、アドレス404=0のリードコマンドを、
・サイクルC5にて処理ブロックID402=2、アドレス404=1のリードコマンドを、出力端子1210へ出力する。
【0055】
また、セレクト信号1209はサイクルC5〜C6の期間は値が“2”なので、エンコーダ1208はフリップフロップ1206の出力を選択する。そして、エンコーダ1208は、1310に示すように、
・1クロックサイクル後のサイクルC6にて処理ブロックID402=0のライトコマンドWC_ID0を、
・サイクルC7にて処理ブロックID402=1のリードコマンドRC_ID1を出力端子1210へ出力する。
【0056】
次に図14を用いて、図12に示した処理ブロックが所定のデータ単位の画像処理中(最初のデータであることを示すstartフラグ302のセットされたデータを送信してから、最後のデータであることを示すendフラグ303のセットされたデータを送信するまでの間)にレジスタのリードを行なう場合の画像処理動作を説明する。なお、所定のデータ単位とは、ページ、ブロック、バンド等の単位である。ここで、図12の処理ブロックのIDは図13と同様に“2”が設定されており、処理ブロックのデータに対するレイテンシは4クロックサイクルとする。また、各処理ブロックのコマンドに対するレイテンシは、そのコマンドが画像処理中に送信される場合は、データと同様に4クロックサイクルとする。
【0057】
図14において、1400はクロック、1401はコマンド及びデータの入力端子1200におけるタイミングを示す。1402は処理部1203の入力データのタイミング、1403は処理部1203の出力データのタイミングを示す。1404はレジスタ部1202の入力データのタイミング、1405はレジスタ部1202の出力データのタイミングを示す。1406はコマンド保持信号1205の状態、1409はセレクト信号1209の状態を示す。1407はバッファ1204の出力データのタイミング、1410はコマンド及びデータの出力端子1210における出力データのタイミングを示す。
【0058】
1401に示すように、サイクルC0にてデータDn-1が、サイクルC1にてデータDnが、サイクルC2にて処理ブロックID202=2のリードコマンドが、サイクルC3〜C7にてデータDn+1〜Dn+5が入力される場合を説明する。これら入力されたデータ及びコマンドのうち、データはデコーダ1201にてデコードされ、Startフラグ302、endフラグ303、データ304が処理部1203へ出力される(1402)。また、画像処理中においては、処理ブロックID202の値に関わらず、コマンドのRWフラグ203、アドレス204、レジスタデータ205がレジスタ部1202へ出力される(1404)。これは、たとえコマンドの処理ブロックID202が“2”以外の値であっても、データとコマンドの前後関係を保ちながら、後段の処理ブロックへデータ及びコマンドを伝播させる為である。
【0059】
さらに、modeフラグ401及び処理ブロックID402がフリップフロップ1207へ出力され、フリップフロップ1207にて1クロック分遅延させられ、バッファ1204へ出力される。またデコーダ1201にはサイクルC2の期間以外はデータが入力されている。デコーダ1201は、データが入力されている期間中は画像処理中であると判断してセレクト信号1209を“1”にセットする。また、デコーダ1201は、自身の処理ブロックIDを持つコマンドを入力した場合には、セレクト信号1209を“0”にセットする。但し、処理ブロックのデータのレイテンシ、及び画像処理中に受信したコマンドに対するレイテンシが4クロックであり、セレクト信号1209はこれにあわせて出力されている(1409)。
【0060】
つまり、1402に示すように、サイクルC0,C1及びC3〜C7にてstartフラグ302、endフラグ303及びデータ304が処理部1203へ入力される。そして、1404に示すように、サイクルC2にてアドレス204及びレジスタデータ205がレジスタ部1202へ出力される。また、セレクト信号1209は、1409に示すようにサイクルC0〜C4、C6、C7の期間は“1”となり、サイクルC5の期間は“0”となる。
【0061】
処理部1203においては入力されたデータに対して4クロックサイクルのレイテンシで画像処理をおこない、出力データのstartフラグ502、endフラグ503及びデータ504をエンコーダ1208へ出力する(1403)。
【0062】
また、レジスタ部1202においては、サイクルC2で入力端子1200から入力されたレジスタリードコマンド(RC_ID2)に応じて、図13で説明したレジスタリード動作を行なう。つまり、1405に示すようにサイクルC3にてアドレス204へのリード動作を行なうと同時にRWフラグ403=0、アドレス404及び読み出したレジスタデータ405をバッファ1204へ出力する。
【0063】
図13で説明したようにデコーダ1201にて所定のデータ単位(ページ、ブロック、バンド等)の画像処理中にレジスタリードコマンドを検知した為、サイクルC3及びC4においてコマンド保持信号1205が“1”となる。よって、バッファ1204は、サイクルC3で入力されたmodeフラグ401、処理ブロックID402、RWフラグ403、アドレス404、レジスタデータ405をそのままエンコーダ1208へ出力し、サイクルC4及びC5でそれらの値を保持する。この様子は、1407によって示されている。
【0064】
エンコーダ1208は、1409に示されるセレクト信号1209に従い、図4に示した出力コマンドフォーマット400或いは出力データフォーマット500を有する出力コマンド/データを生成し、出力端子1210より出力する。つまり、エンコーダ1208は、サイクルC0〜C4、C6、C7の期間はセレクト信号1209の値が“1”なので、処理部1203の出力を選択し、1クロックサイクル後のサイクルに出力端子1210へデータを出力する。また、サイクルC5ではセレクト信号1209の値が“0”である為、エンコーダ1208はバッファ1204を選択し、1クロックサイクル後のサイクルに処理ブロックID402=2、アドレス404=0のリード出力コマンドを出力端子1210へ出力する。
【0065】
尚、図14の例では、画像処理中にレジスタのリード動作を行なう場合を示したが、レジスタのライト動作を行なう場合でも、レジスタのリード動作と同等な動作となる。但し、レジスタのライト動作では、レジスタの更新のタイミングが、当該レジスタライトコマンドの次のデータに対する処理の開始までに行なわれる。
【0066】
また、レイテンシの調整も画像処理部のレイテンシを4サイクル固定として説明したが、これに限られるものではない。例えば画像処理部のレイテンシが可変の場合においても、画像処理部にコマンド挿入個所を示す信号を追加し、上記出力の切替えを該コマンド挿入個所を示す信号によって切替えることにより、コマンドとデータの順番を維持して出力できる。
【0067】
以上説明したように、本実施形態によれば、コマンド及びデータを多重化して、共通のデータバス上を転送し、処理ブロックでは入力されたコマンドとデータの順序を保ちながら処理結果を出力する。これにより、データに同期した制御を、任意のデータ間でかつ高速に行なうことが可能となる。
【0068】
尚、本実施形態では、データ単位(ページ、ブロック、バンド等)の画像処理中にレジスタのリード及びライトを行なう動作に関して、1つのみのコマンドを転送する例を示したがこれに限られるものではない。複数のコマンドの転送及び、上記データ単位内の複数箇所でデータに対してコマンドを挿入して転送する場合も可能であることは上記実施形態の説明から当業者には明らかである。
【0069】
また、本実施形態では画像処理中のコマンド転送が1つの処理ブロックに関してのみ行なう例を示したが、複数の処理ブロックに対して行なう場合も可能であることはいうまでもない。
また、上記実施形態では、1つのコマンドに1つの処理ブロックを特定するIDを記述したが、例えば、1FH(処理ブロックID202の全ビットが1)の場合には、全ての処理ブロックが選択されるようにしてもよい。例えば、全ての処理ブロックの同一アドレスに同一データを書き込むような処理を、1つのコマンドで実現できる。
また、上記実施形態では、処理ブロックが3つの場合を説明したが、処理ブロックの数は1以上、いくつでも良い。但し、処理ブロックIDで表せる数が上限となる。
【0070】
さらに、実施形態では各処理ブロックのデータに対するコマンド及びデータに対するレイテンシが同一の場合に関して説明したが、これに限定されるものではない。複数の処理ブロックのコマンド及びデータに対するレイテンシが互いに異なる場合でも、デコーダ1201によるバッファ1204でコマンドを保持するクロックサイクルの制御をそれぞれ適宜変更することにより対応できる。
【0071】
[他の実施形態]
以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0072】
尚、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって前述した実施形態の機能が達成される場合を含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したコンピュータプログラムである。
【0073】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0074】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
【0075】
コンピュータプログラムを供給するためのコンピュータ読み取り可能な記憶媒体としては以下が挙げられる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などである。
【0076】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0077】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
【0078】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどとの協働で実施形態の機能が実現されてもよい。この場合、OSなどが、実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
【0079】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行なう。
【特許請求の範囲】
【請求項1】
それぞれが処理部を有する複数の処理ブロックが共通バスによって直列に接続された画像処理装置における当該複数の処理ブロックのそれぞれにより実行される画像処理方法であって、
前記共通バスを介して当該処理ブロックに入力されたデータを用いた画像処理を、当該処理ブロックの処理部により行なうデータ処理工程と、
前記共通バスを介して当該処理ブロックに入力されたコマンドに応じた処理を、当該処理ブロックの処理部に対して行なうコマンド処理工程と、
前記共通バスを介して第1の処理ブロックに入力される第1のコマンドについて、当該第1のコマンドの前に前記第1の処理ブロックへ入力されたデータに基づくデータ処理によるデータ出力が完了するまで、前記第1の処理ブロックから当該第1のコマンドを出力することを遅延させる遅延工程とを有することを特徴とする画像処理方法。
【請求項2】
前記コマンド処理工程では、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記処理部に対して当該コマンドに応じた処理を行なうことを特徴とする請求項1に記載の画像処理方法。
【請求項3】
前記コマンド処理工程では、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記処理部にパラメータを設定することを特徴とする請求項1に記載の画像処理方法。
【請求項4】
前記コマンド処理工程では、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記処理部の状態を示すデータを読出すことを特徴とする請求項1に記載の画像処理方法。
【請求項5】
前記コマンド処理工程では、当該処理ブロックの処理部の状態を示すデータを読出し、前記遅延工程では、前記コマンドより前に当該処理ブロックに入力されたデータを用いた処理を行なった前記処理部の出力が終了するまで、前記読出された状態を示すデータの出力を待機させることを特徴とする請求項1に記載の画像処理方法。
【請求項6】
前記遅延工程は、前記コマンドの処理結果、及び、当該処理ブロックの入力がデータであるかコマンドであるかを示す識別データを、バッファに格納する格納工程を含むことを特徴とする請求項1に記載の画像処理方法。
【請求項7】
共通バスによって直列に接続された複数の処理ブロックを有する画像処理装置であって、
前記複数の処理ブロックのそれぞれは、
当該処理ブロックに入力されたデータを用いた画像処理を行なう第1の処理手段と、
当該処理ブロックに入力されたコマンドに応じた処理を、前記第1の処理手段に対して行なう第2の処理手段と、
前記共通バスを介して第1の処理ブロックに入力される第1のコマンドについて、当該第1のコマンドの前に前記第1の処理ブロックへ入力されたデータに基づくデータ処理によるデータ出力が完了するまで、前記第1の処理ブロックから当該第1のコマンドを出力することを遅延させるように制御する制御手段とを有することを特徴とする画像処理装置。
【請求項8】
前記第2の処理手段は、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記第1の処理手段に対して当該コマンドに応じた処理を行なうことを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記第2の処理手段は、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記第1の処理手段にパラメータを設定することを特徴とする請求項7に記載の画像処理装置。
【請求項10】
前記第2の処理手段は、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記第1の処理手段の状態を示すデータを読出すことを特徴とする請求項7に記載の画像処理装置。
【請求項11】
前記第2の処理手段は、前記第1の処理手段の状態を示すデータを読出し、前記制御手段は、前記コマンドより前に当該処理ブロックに入力されたデータを用いた処理を行なった前記第1の処理手段の出力が終了するまで、前記読出された状態を示すデータの出力を待機させることを特徴とする請求項7に記載の画像処理装置。
【請求項12】
前記制御手段は、前記コマンドの処理結果、及び、当該処理ブロックの入力がデータであるかコマンドであるかを示す識別データを格納するバッファをさらに有することを特徴とする請求項7に記載の画像処理装置。
【請求項1】
それぞれが処理部を有する複数の処理ブロックが共通バスによって直列に接続された画像処理装置における当該複数の処理ブロックのそれぞれにより実行される画像処理方法であって、
前記共通バスを介して当該処理ブロックに入力されたデータを用いた画像処理を、当該処理ブロックの処理部により行なうデータ処理工程と、
前記共通バスを介して当該処理ブロックに入力されたコマンドに応じた処理を、当該処理ブロックの処理部に対して行なうコマンド処理工程と、
前記共通バスを介して第1の処理ブロックに入力される第1のコマンドについて、当該第1のコマンドの前に前記第1の処理ブロックへ入力されたデータに基づくデータ処理によるデータ出力が完了するまで、前記第1の処理ブロックから当該第1のコマンドを出力することを遅延させる遅延工程とを有することを特徴とする画像処理方法。
【請求項2】
前記コマンド処理工程では、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記処理部に対して当該コマンドに応じた処理を行なうことを特徴とする請求項1に記載の画像処理方法。
【請求項3】
前記コマンド処理工程では、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記処理部にパラメータを設定することを特徴とする請求項1に記載の画像処理方法。
【請求項4】
前記コマンド処理工程では、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記処理部の状態を示すデータを読出すことを特徴とする請求項1に記載の画像処理方法。
【請求項5】
前記コマンド処理工程では、当該処理ブロックの処理部の状態を示すデータを読出し、前記遅延工程では、前記コマンドより前に当該処理ブロックに入力されたデータを用いた処理を行なった前記処理部の出力が終了するまで、前記読出された状態を示すデータの出力を待機させることを特徴とする請求項1に記載の画像処理方法。
【請求項6】
前記遅延工程は、前記コマンドの処理結果、及び、当該処理ブロックの入力がデータであるかコマンドであるかを示す識別データを、バッファに格納する格納工程を含むことを特徴とする請求項1に記載の画像処理方法。
【請求項7】
共通バスによって直列に接続された複数の処理ブロックを有する画像処理装置であって、
前記複数の処理ブロックのそれぞれは、
当該処理ブロックに入力されたデータを用いた画像処理を行なう第1の処理手段と、
当該処理ブロックに入力されたコマンドに応じた処理を、前記第1の処理手段に対して行なう第2の処理手段と、
前記共通バスを介して第1の処理ブロックに入力される第1のコマンドについて、当該第1のコマンドの前に前記第1の処理ブロックへ入力されたデータに基づくデータ処理によるデータ出力が完了するまで、前記第1の処理ブロックから当該第1のコマンドを出力することを遅延させるように制御する制御手段とを有することを特徴とする画像処理装置。
【請求項8】
前記第2の処理手段は、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記第1の処理手段に対して当該コマンドに応じた処理を行なうことを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記第2の処理手段は、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記第1の処理手段にパラメータを設定することを特徴とする請求項7に記載の画像処理装置。
【請求項10】
前記第2の処理手段は、当該コマンドの前に当該処理ブロックに入力されたデータを用いた処理を終了した前記第1の処理手段の状態を示すデータを読出すことを特徴とする請求項7に記載の画像処理装置。
【請求項11】
前記第2の処理手段は、前記第1の処理手段の状態を示すデータを読出し、前記制御手段は、前記コマンドより前に当該処理ブロックに入力されたデータを用いた処理を行なった前記第1の処理手段の出力が終了するまで、前記読出された状態を示すデータの出力を待機させることを特徴とする請求項7に記載の画像処理装置。
【請求項12】
前記制御手段は、前記コマンドの処理結果、及び、当該処理ブロックの入力がデータであるかコマンドであるかを示す識別データを格納するバッファをさらに有することを特徴とする請求項7に記載の画像処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2012−120179(P2012−120179A)
【公開日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願番号】特願2011−275079(P2011−275079)
【出願日】平成23年12月15日(2011.12.15)
【分割の表示】特願2007−194794(P2007−194794)の分割
【原出願日】平成19年7月26日(2007.7.26)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願日】平成23年12月15日(2011.12.15)
【分割の表示】特願2007−194794(P2007−194794)の分割
【原出願日】平成19年7月26日(2007.7.26)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]