(57)【要約】【課題】消費電力の増加を抑えつつ、高速なデータ通信を可能とする通信制御装置を提供する。【解決手段】通信用バッファを使用して通信制御を行う通信制御装置であって、通信用バッファの使用を全２重通信と半２重通信とに切り替える制御手段と、通信用バッファの使用に応じて前記通信用バッファのクロック制御を行うクロック制御手段と、を有することを特徴とする。【選択図】図１
2008219303.tif 000002
【特許請求の範囲】
【請求項１】
通信用バッファを使用して通信制御を行う通信制御装置であって、
通信用バッファの使用を全２重通信と半２重通信とに切り替える制御手段と、
通信用バッファの使用に応じて前記通信用バッファのクロック制御を行うクロック制御手段と、
を有することを特徴とする通信制御装置。
【請求項２】
前記クロック制御手段は、
転送プロトコルの状態に応じて前記通信用バッファのクロック制御を行うことを特徴とする請求項１記載の通信制御装置。
【請求項３】
前記クロック制御手段は、
前記通信用バッファのクロックの開始及び停止の制御を行うことを特徴とする請求項１または２記載の通信制御装置。
【請求項４】
メインメモリと、
前記通信用バッファと前記メインメモリとの間でＤＭＡ転送を行う通信用コントローラと、を有し、
前記クロック制御手段は、
通信用バッファの使用および前記転送プロトコルの状態に応じて前記通信用コントローラのクロック制御を行うことを特徴とする請求項２記載の通信制御装置。
【請求項５】
前記クロック制御手段は、
全２重通信の場合は、前記通信用コントローラのクロックを停止し、
半２重通信の場合で、前記通信用バッファと前記メインメモリとの間の転送時に、前記通信用コントローラのクロックを開始することを特徴とする請求項４記載の通信制御装置。
【請求項６】
第２の通信用バッファを有し、
前記クロック制御手段は、
前記第２の通信用バッファによる通信時に、前記通信用バッファと前記通信用コントローラとのクロックを停止することを特徴とする請求項４記載の通信制御装置。
【請求項７】
前記制御手段は、
データを伴うコマンドを双方向で送受信する場合は、通信用バッファの使用を全２重通信に切り替え、
一方から他方へ大容量のデータを送信する場合には、通信用バッファの使用を半２重通信に切り替えることを特徴とする請求項１記載の通信制御装置。
【請求項８】
請求項１から７の何れか１項に記載の通信制御装置を搭載し、該搭載した通信制御装置を用いて画像処理を行うことを特徴とする画像処理装置。
【請求項９】
通信用バッファを有する通信制御装置で行う通信制御方法であって、
通信用バッファの使用を全２重通信と半２重通信とに切り替える制御工程と、
通信用バッファの使用に応じて前記通信用バッファのクロック制御を行うクロック制御工程と、を前記通信制御装置が行うことを特徴とする通信制御方法。
【請求項１０】
通信用バッファを有する通信制御装置において実行させる通信制御プログラムであって、
通信用バッファの使用を全２重通信と半２重通信とに切り替える制御処理と、
通信用バッファの使用に応じて前記通信用バッファのクロック制御を行うクロック制御処理と、を前記通信制御装置に実行させることを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御装置、画像処理装置、通信制御方法及び通信制御プログラムに関し、特に、通信用バッファを使用して通信制御を行う通信制御装置、画像処理装置、通信制御方法及び通信制御プログラムに関するものである。
【背景技術】
【０００２】
プリンタや、コピー／ＦＡＸ／プリンタ等の機能を持つ複合機などの画像形成装置は、複数のＣＰＵを搭載しており、それぞれのＣＰＵは、機能を実現するために各種コマンドやデータのやりとりを行っている。
【０００３】
プリンタや複合機などの画像形成装置では、一般的に、プリンタの画像描画や各種アプリケーションの実行を行うコントローラＣＰＵと、用紙の搬送や作像、定着などの制御を行うエンジンＣＰＵと、が搭載されている。
【０００４】
コントローラＣＰＵとエンジンＣＰＵとの間で送受信されるコマンドやデータには、エンジンのドアオープンや紙詰りの状態通知、エンジンへの給紙先設定といった数バイトの短いコマンドや、γテーブルのように数十〜数百バイトのデータ、エンジンパラメータやログのアップロード、エンジンＣＰＵプログラムのダウンロードのように、数キロバイトのデータまで様々なサイズのものがある。
【０００５】
従来、コントローラＣＰＵとエンジンＣＰＵとの間の通信方法として、両方のＣＰＵからアクセスできるＡＳＩＣ（特定用途向け集積回路）に小容量のバッファを設け、コマンドやデータのやり取りを行う方法がある（例えば、特許文献１参照）。
【０００６】
しかしながら、エンジンパラメータやログのアップロード、エンジンＣＰＵのプログラムのダウンロードといった数キロバイトのデータを転送する場合には、小容量に分けて転送を行うため、ＣＰＵへの割り込みが頻繁に発生し、転送に時間がかかり、ＣＰＵの負荷も高くなっていた。
【０００７】
なお、バッファ容量を増やした場合には、サイズの小さいコマンドやデータの送受信時にも多くの電力が消費されてしまうことになる。
【０００８】
このようなことから、消費電力の増加を抑えつつ、高速なデータ通信を可能とする通信制御の開発が必要視されることになる。
【特許文献１】特開２００５−９４６７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、上記事情に鑑みてなされたものであり、消費電力の増加を抑えつつ、高速なデータ通信を可能とする通信制御装置、画像処理装置、通信制御方法及び通信制御プログラムを提供することを目的とするものである。
【課題を解決するための手段】
【００１０】
かかる目的を達成するために、本発明は、以下の特徴を有することとする。
【００１１】
本発明にかかる通信制御装置は、
通信用バッファを使用して通信制御を行う通信制御装置であって、
通信用バッファの使用を全２重通信と半２重通信とに切り替える制御手段と、
通信用バッファの使用に応じて前記通信用バッファのクロック制御を行うクロック制御手段と、
を有することを特徴とする。
【００１２】
また、本発明にかかる通信制御装置において、
前記クロック制御手段は、
転送プロトコルの状態に応じて前記通信用バッファのクロック制御を行うことを特徴とする。
【００１３】
また、本発明にかかる通信制御装置において、
前記クロック制御手段は、
前記通信用バッファのクロックの開始及び停止の制御を行うことを特徴とする。
【００１４】
また、本発明にかかる通信制御装置は、
メインメモリと、
前記通信用バッファと前記メインメモリとの間でＤＭＡ転送を行う通信用コントローラと、を有し、
前記クロック制御手段は、
通信用バッファの使用および前記転送プロトコルの状態に応じて前記通信用コントローラのクロック制御を行うことを特徴とする。
【００１５】
また、本発明にかかる通信制御装置において、
前記クロック制御手段は、
全２重通信の場合は、前記通信用コントローラのクロックを停止し、
半２重通信の場合で、前記通信用バッファと前記メインメモリとの間の転送時に、前記通信用コントローラのクロックを開始することを特徴とする。
【００１６】
また、本発明にかかる通信制御装置は、
第２の通信用バッファを有し、
前記クロック制御手段は、
前記第２の通信用バッファによる通信時に、前記通信用バッファと前記通信用コントローラとのクロックを停止することを特徴とする。
【００１７】
また、本発明にかかる通信制御装置において、
前記制御手段は、
データを伴うコマンドを双方向で送受信する場合は、通信用バッファの使用を全２重通信に切り替え、
一方から他方へ大容量のデータを送信する場合には、通信用バッファの使用を半２重通信に切り替えることを特徴とする。
【００１８】
また、本発明にかかる画像処理装置は、
上記記載の通信制御装置を搭載し、該搭載した通信制御装置を用いて画像処理を行うことを特徴とする。
【００１９】
また、本発明にかかる通信制御方法は、
通信用バッファを有する通信制御装置で行う通信制御方法であって、
通信用バッファの使用を全２重通信と半２重通信とに切り替える制御工程と、
通信用バッファの使用に応じて前記通信用バッファのクロック制御を行うクロック制御工程と、を前記通信制御装置が行うことを特徴とする。
【００２０】
また、本発明にかかる通信制御プログラムは、
通信用バッファを有する通信制御装置において実行させる通信制御プログラムであって、
通信用バッファの使用を全２重通信と半２重通信とに切り替える制御処理と、
通信用バッファの使用に応じて前記通信用バッファのクロック制御を行うクロック制御処理と、を前記通信制御装置に実行させることを特徴とする。
【発明の効果】
【００２１】
本発明によれば、消費電力の増加を抑えつつ、高速なデータ通信が可能となる。
【発明を実施するための最良の形態】
【００２２】
＜本実施形態の通信制御装置の特徴＞
まず、図１を参照しながら、本実施形態の通信制御装置の特徴について説明する。
【００２３】
本実施形態の通信制御装置は、通信用バッファを使用して通信制御を行う通信制御装置であって、通信用バッファの使用を全２重通信と半２重通信とに切り替える制御手段と、通信用バッファの使用に応じて前記通信用バッファのクロック制御を行うクロック制御手段と、を有することを特徴とする。
【００２４】
これにより、消費電力の増加を抑えつつ、高速なデータ通信が可能となる。以下、添付図面を参照しながら、本実施形態の通信制御装置について詳細に説明する。なお、以下の説明では、画像処理装置に搭載された通信制御装置について説明するが、本実施形態の通信制御装置は、通信用バッファを使用して全２重通信と半２重通信とを行う機器であれば、あらゆる機器に適用可能である。
【００２５】
＜画像処理装置の構成＞
まず、図１を参照しながら、本実施形態の画像処理装置の構成について説明する。なお、図１は、本実施形態の画像処理装置の構成例を示す図である。
【００２６】
本実施形態における画像処理装置は、エンジン（１０００）と、コントローラ（２０００）と、操作部（３０００）と、ＳＤカード（４０００）と、を有して構成している。
【００２７】
＜エンジン：１０００＞
まず、エンジン（１０００）の構成について説明する。
【００２８】
エンジン（１０００）は、スキャナ（１１００）、プロッタ（１３００）、および、それらを制御するエンジンＣＰＵ（１６００）等を有して構成し、原稿の読み取り、および、画像の出力制御を行う。
【００２９】
スキャナ（１１００）は、原稿の読み取りを行うユニットで、スキャナ動作、コピー動作、ＦＡＸ送信動作時に原稿の画像データを出力する。
【００３０】
スキャナ画像処理ＡＳＩＣ（１２００）は、スキャナ（１１００）で読み取られた画像データに補正を行った画像データ、および、原稿における文字部/写真部、有彩/無彩を判定した画像分離データを生成して出力する。
【００３１】
プロッタ（１３００）は、プロッタ制御ＡＳＩＣ（１４００）から出力される画像データに基づいて、用紙上に出力画像の形成を行って出力する。
【００３２】
プロッタ制御ＡＳＩＣ（１４００）は、プロッタ（１３００）からの同期信号に合わせて、エンジンＡＳＩＣ（１８００）から入力される画像データをプロッタ（１３００）へ出力する。
【００３３】
ＲＡＭ（１５００）は、エンジンＣＰＵ（１６００）がエンジン制御の実行を行うための作業用メモリで、エンジンＣＰＵ（１６００）により、プログラム実行中の変数記憶領域等の用途に使用される。
【００３４】
エンジンＣＰＵ（１６００）は、スキャナ制御、用紙の搬送、作像、定着等、エンジン全般の制御を行う。
【００３５】
フラッシュメモリ（１７００）は、エンジンＣＰＵ（１６００）が実行するプログラムを記憶するための書き換え可能な不揮発性の記憶領域である。
【００３６】
エンジンＡＳＩＣ（１８００）は、後述するビデオ出力部（１８１０）、アービタ（１８２０）、コミュニケーションバッファ（１８３０）等を有し、コントローラ（２０００）とエンジンＣＰＵ（１６００）との間のデータインタフェイス、及び、コントローラ（２０００）とプロッタ制御ＡＳＩＣ（１４００）との間のデータのインターフェイスを行う。
【００３７】
ビデオ出力部（１８１０）は、画像データをメインメモリ（２４００）から読み込み、マスク処理、合成処理、フォーマット変換等を行い、プロッタ制御ＡＳＩＣ（１４００）に出力する。
【００３８】
アービタ（１８２０）は、エンジンＡＳＩＣ（１８００）内の各モジュールとコントローラＣＰＵ（２３００）とのアクセスの調停を行う。
【００３９】
コミュニケーションバッファ（１８３０）は、エンジンＣＰＵ（１６００）とコントローラＣＰＵ（２３００）との間の通信のためのモジュールであり、エンジンＣＰＵ Ｉ／Ｆ（１８３１）と、コントローラＣＰＵ Ｉ／Ｆ（１８３２）と、エンジンＣＰＵ用送信バッファ（１８３３）と、コントローラＣＰＵ用送信バッファ（１８３４）と、エンジンＣＰＵ用受信バッファ（１８３５）と、コントローラＣＰＵ用受信バッファ（１８３６）と、エンジンＣＰＵ割り込み制御部（１８３７）と、コントローラＣＰＵ割り込み制御部（１８３８）と、コントローラＣＰＵ用レジスタ（１８３９）と、エンジンＣＰＵ用レジスタ（１８４０）と、通信用ＳＲＡＭ１（１８４１）と、通信用ＳＲＡＭ２（１８４２）と、通信バッファＤＭＡＣ（１８４３）と、クロック制御部（１８４４）と、のモジュールを有して構成している。
【００４０】
エンジンＣＰＵ Ｉ／Ｆ（１８３１）は、エンジンＣＰＵ（１６００）からの通信用バッファへの書き込み／読み出し、エンジンＣＰＵ用レジスタ（１８４０）、エンジンＣＰＵ割り込み制御部（１８３７）へのアクセス制御、クロック制御部（１８４４）への制御信号出力などを行う。
【００４１】
コントローラＣＰＵ Ｉ／Ｆ（１８３２）は、コントローラＣＰＵ（２３００）からの通信用バッファへの書き込み／読み出し、コントローラＣＰＵ用レジスタ（１８３９）、コントローラＣＰＵ割り込み制御部（１８３８）へのアクセス制御、クロック制御部（１８４４）への制御信号出力などを行う。
【００４２】
エンジンＣＰＵ用送信バッファ（１８３３）は、エンジンＣＰＵ（１６００）がコントローラＣＰＵ（２３００）へ転送するコマンドやデータを書き込むための小容量のバッファ領域である。
【００４３】
コントローラＣＰＵ用送信バッファ（１８３４）は、コントローラＣＰＵ（２３００）がエンジンＣＰＵ（１６００）に転送するコマンドやデータを書き込むための小容量のバッファ領域である。
【００４４】
エンジンＣＰＵ用受信バッファ（１８３５）は、コントローラＣＰＵ（２３００）がエンジンＣＰＵ（１６００）に送信したコマンドやデータを読み出すための小容量のバッファ領域で、コントローラＣＰＵ（２３００）が書き込んだ送信データが反映される。
【００４５】
コントローラＣＰＵ用受信バッファ（１８３６）は、エンジンＣＰＵ（１６００）がコントローラＣＰＵ（２３００）に送信したコマンドやデータを読み出すための小容量のバッファ領域で、エンジンＣＰＵ（１６００）が書き込んだ送信データが反映される。
【００４６】
エンジンＣＰＵ割り込み制御部（１８３７）は、エンジンＡＳＩＣ（１８００）内部の各種信号の状態に応じて、割り込み信号を生成し、エンジンＣＰＵ（１６００）に割り込みを発生させる。
【００４７】
コントローラＣＰＵ割り込み制御部（１８３８）は、エンジンＡＳＩＣ（１８００）内部の各種信号の状態に応じて、割り込み信号を生成し、コントローラＣＰＵ（２３００）に割り込みを発生させる。
【００４８】
コントローラＣＰＵ用レジスタ（１８３９）は、コントローラＣＰＵ（２３００）がエンジンＡＳＩＣ（１８００）の制御を行うためのパラメータ設定領域で、モードレジスタ、モード変更リクエストレジスタ、割り込み要因レジスタ、割り込みマスクレジスタ、ＤＭＡＣモード設定レジスタ、ＤＭＡＣ起動レジスタ、送信／受信データサイズレジスタ、ＤＭＡ送信／受信データサイズレジスタ、読み出し終了レジスタ、ＤＭＡ読み出し終了レジスタ、書き込み開始レジスタなどを備える。
【００４９】
エンジンＣＰＵ用レジスタ（１８４０）は、エンジンＣＰＵ（１６００）がエンジンＡＳＩＣ（１８００）の制御を行うためのパラメータ設定領域で、モードレジスタ、モード変更リクエストレジスタ、割り込み要因レジスタ、割り込みマスクレジスタ、送信／受信データサイズレジスタ、ＤＭＡ送信／受信データサイズレジスタ、読み出し終了レジスタ、ＤＭＡ読み出し終了レジスタ、書き込み開始レジスタ、ＤＭＡ書き込み開始レジスタなどを備える。
【００５０】
通信用ＳＲＡＭ１（１８４１）、および、通信用ＳＲＡＭ２（１８４２）は、コントローラＣＰＵ（２３００）とエンジンＣＰＵ（１６００）との間で送受信するために使用する大容量のバッファ領域である。
【００５１】
通信バッファＤＭＡＣ（１８４３）は、通信用ＳＲＡＭ１、２（１８４１、１８４２）とメインメモリ（２４００）と、の間でＤＭＡ転送を行うためのＤＭＡコントローラであり、通信用ＳＲＡＭ１、２（１８４１、１８４２）からメインメモリ（２４００）への転送と、メインメモリ（２４００）から通信用ＳＲＡＭ１、２（１８４１、１８４２）への転送を切り替えて使用する。
【００５２】
クロック制御部（１８４４）は、エンジンＣＰＵ Ｉ／Ｆ（１８３１）や、コントローラＣＰＵ Ｉ／Ｆ（１８３２）からの制御信号に基づき、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）のクロックの開始／停止の制御を行う。
【００５３】
＜コントローラ：２０００＞
次に、コントローラ（２０００）の構成について説明する。
【００５４】
コントローラ（２０００）は、画像処理装置の全体制御や各種アプリケーションの実行を行う制御装置である。
【００５５】
コントローラＡＳＩＣ（２１００）は、ビデオ入力部（２１１０）、コントローラ画像処理部（２１２０）、アービタ（２１３０）、ハードディスクＩ／Ｆ（２１４０）等を有し、エンジン（１０００）から入力された画像データのメインメモリ（２４００）への転送、コピー時の画像処理、ハードディスク（２２００）へのリード／ライトなどの制御を行う。
【００５６】
ビデオ入力部（２１１０）は、スキャナ画像処理ＡＳＩＣ（１２００）から出力された画像データを圧縮し、メインメモリ（２４００）への転送を行う。
【００５７】
コントローラ画像処理部（２１２０）は、メインメモリ（２４００）上の圧縮画像データを展開し、フィルタ処理、色変換処理、階調処理等を行い、メインメモリ（２４００）への転送を行う。
【００５８】
アービタ（２１３０）は、コントローラＡＳＩＣ（２１００）内の各モジュールからコントローラＣＰＵ（２３００）へのアクセスの調停を行う。
【００５９】
ハードディスクＩ／Ｆ（２１４０）は、ハードディスク（２２００）へのリード／ライトの制御を行う。
【００６０】
ハードディスク（２２００）は、各種画像データの蓄積や、コントローラＣＰＵ（２３００）の一時記憶領域に使用する記憶装置である。
【００６１】
コントローラＣＰＵ（２３００）は、メモリコントローラ、ＰＣＩ Express、ＰＣＩの汎用インターフェイスを備え、メインメモリ（２４００）のリード／ライト制御、プリンタの画像描画、コピー、スキャナ、ＦＡＸ、配信など各種アプリケーションの実行などを行う。
【００６２】
メインメモリ（２４００）は、コントローラＣＰＵ（２３００）がプリンタの画像描画や各種アプリケーションの実行を行うための作業用メモリで、コントローラＣＰＵ（２３００）により、データの一時記憶領域や、ＤＭＡＣ用ディスクリプタ領域などの用途に使用される。
【００６３】
Ｉ／Ｏ ＡＳＩＣ（２５００）は、操作部Ｉ／Ｆ（２５１０）やＳＤカードＩ／Ｆ（２５２０）などのインターフェイスを備え、外部装置、媒体とのデータ受け渡しの制御を行う。
【００６４】
操作部Ｉ／Ｆ（２５１０）は、操作部（３０００）のタッチパネル、キーからの入力データの入力制御、操作部の表示画面への出力制御を行う。
【００６５】
ＳＤカードＩ／Ｆ（２５２０）は、ＳＤカード（４０００）へのリード／ライトの制御を行う。
【００６６】
操作部（３０００）は、表示画面、タッチパネル、キーなどで構成し、装置の状態表示やユーザーからのモード選択、処理実行などの操作に使用する。
【００６７】
ＳＤカード（４０００）は、プログラムが記憶された記憶媒体で、エンジン（１０００）やコントローラ（２０００）のプログラムをアップデートする際に使用する。
【００６８】
＜コピー動作時の処理動作＞
次に、図１、図２を参照しながら、コピー動作時の処理動作について説明する。なお、図２は、コピー動作時の画像データフローの一例である。
【００６９】
スキャナ（１１００）で読み取られた原稿の画像データは、スキャナ画像処理ＡＳＩＣ（１２００）で補正、ビデオ入力部（２１１０）で圧縮を行い、アービタ（２１３０）、コントローラＣＰＵ（２３００）を経由して、メインメモリ（２４００）上に転送される（図２のＡ１）。
【００７０】
圧縮画像のメインメモリ（２４００）への転送が終了した場合に、コントローラＡＳＩＣ（２１００）のコントローラ画像処理部（２１２０）は、メインメモリ（２４００）からコントローラＣＰＵ（２３００）、アービタ（２１３０）を経由して画像データを読み出し、画像データを展開しながら画像処理を行い、画像処理後の画像データを、アービタ（２１３０）、コントローラＣＰＵ（２３００）を経由してメインメモリ（２４００）へ転送する（図２のＡ２）。
【００７１】
画像処理後の画像データのメインメモリ（２４００）への転送が終了した場合に、エンジンＡＳＩＣ（１８００）のビデオ出力部（１８１０）は、画像処理後の画像データをメインメモリ（２４００）からコントローラＣＰＵ（２３００）、アービタ（１８２０）を経由して読み出し、フォーマット変換などを行い、プロッタ制御ＡＳＩＣ（１４００）に出力する。プロッタ制御ＡＳＩＣ（１４００）は、プロッタ（１３００）のタイミングに合わせて画像データを出力し、プロッタ（１３００）は、画像形成を行い、画像の出力を行う（図２のＡ３）。
【００７２】
＜コピー動作時の通信処理＞
次に、図３を参照しながら、コピー動作時の通信処理について説明する。なお、図３は、コピー動作時のエンジンＣＰＵ（１６００）とコントローラＣＰＵ（２３００）との間の通信の一例である。
【００７３】
まず、コントローラＣＰＵ（２３００）は、エンジンＣＰＵ（１６００）に、操作部（３０００）で選択されたモードに基づいて、スキャナ画像処理ＡＳＩＣ（１２００）に設定する画像処理パラメータ設定コマンドと設定データとを送信する（ステップＳ１）。
【００７４】
次に、コントローラＣＰＵ（２３００）は、エンジンＣＰＵ（１６００）に、操作部（３０００）で選択されたモードに基づいて、カラーモード設定コマンドと設定データとを送信する（ステップＳ２）。
【００７５】
次に、コントローラＣＰＵ（２３００）は、エンジンＣＰＵ（１６００）に、プロセス実行要求コマンドを送信する（ステップＳ３）。
【００７６】
エンジンＣＰＵ（１６００）は、プロセス実行要求コマンドを受信した場合に、コントローラＣＰＵ（２３００）にプロセス実行受付コマンドを送信する（ステップＳ４）。
【００７７】
次に、エンジンＣＰＵ（１６００）は、プロセスが実行可能になった場合に、コントローラＣＰＵ（２３００）にプロセス実行開始コマンドを送信する（ステップＳ５）。
【００７８】
次に、エンジンＣＰＵ（１６００）は、画像の転送が可能になった場合に、コントローラＣＰＵ（２３００）に転送準備要求コマンドを送信する（ステップＳ６）。
【００７９】
コントローラＣＰＵ（２３００）は、画像転送の準備ができた場合に、エンジンＣＰＵ（１６００）にメモリ転送ＯＫコマンドを送信する（ステップＳ７）。
【００８０】
エンジンＣＰＵ（１６００）は、スキャン開始の準備ができた場合に、コントローラＣＰＵ（２３００）にスキャン開始コマンドを送信する（ステップＳ８）。
【００８１】
次に、エンジンＣＰＵ（１６００）は、スキャナ（１１００）を起動し、図２に示す『画像転送：Ａ１』を行う（ステップＳ９）。
【００８２】
エンジンＣＰＵ（１６００）は、『画像転送：Ａ１』が終了した場合に、コントローラＣＰＵ（２３００）にスキャン終了コマンドを送信する（ステップＳ１０）。
【００８３】
次に、エンジンＣＰＵ（１６００）は、スキャンプロセスが終了した場合に、コントローラＣＰＵ（２３００）にプロセス結果通知コマンドとプロセス結果データとを送信する（ステップＳ１１）。
【００８４】
コントローラＣＰＵ（２３００）は、図２に示す『画像転送：Ａ２』を行い、画像データを作成する（ステップＳ１２）。
【００８５】
コントローラＣＰＵ（２３００）は、『画像転送：Ａ２』が終了した場合に、エンジンＣＰＵ（１６００）に、操作部（３０００）で選択されたモードに基づき、スキャナ画像処理ＡＳＩＣ（１２００）に設定する画像処理パラメータ設定コマンドと設定データとを送信する（ステップＳ１３）。
【００８６】
次に、コントローラＣＰＵ（２３００）は、エンジンＣＰＵ（１６００）に、操作部（３０００）で選択されたモードに基づいて、カラーモード設定コマンドと設定データとを送信する（ステップＳ１４）。
【００８７】
次に、コントローラＣＰＵ（２３００）は、エンジンＣＰＵ（１６００）に、プロセス実行要求コマンドを送信する（ステップＳ１５）。
【００８８】
エンジンＣＰＵ（１６００）は、プロセス実行要求コマンドを受信した場合に、コントローラＣＰＵ（２３００）にプロセス実行受付コマンドを送信する（ステップＳ１６）。
【００８９】
次に、エンジンＣＰＵ（１６００）は、プロセスが実行可能になった場合に、コントローラＣＰＵ（２３００）にプロセス実行開始コマンドを送信する（ステップＳ１７）。
【００９０】
次に、エンジンＣＰＵ（１６００）は、給紙を開始するタイミングで、コントローラＣＰＵ（２３００）に給紙開始コマンドを送信する（ステップＳ１８）。
【００９１】
エンジンＣＰＵ（１６００）は、画像の転送が可能になった場合に、コントローラＣＰＵ（２３００）に転送準備要求コマンドを送信する（ステップＳ１９）。
【００９２】
コントローラＣＰＵ（２３００）は、画像転送の準備ができた場合に、エンジンＣＰＵ（１６００）にメモリ転送ＯＫコマンドを送信する（ステップＳ２０）。
【００９３】
エンジンＣＰＵ（１６００）は、スキャン開始の準備ができた場合に、コントローラＣＰＵ（２３００）に書き込み開始コマンドを送信する（ステップＳ２１）。
【００９４】
次に、エンジンＣＰＵ（１６００）は、プロッタ（１３００）を起動し、図２に示す『画像転送：Ａ３』を行う（ステップＳ２２）。
【００９５】
次に、エンジンＣＰＵ（１６００）は、『画像転送：Ａ３』が終了した場合に、コントローラＣＰＵ（２３００）に書き込み終了コマンドを送信する（ステップＳ２３）。
【００９６】
エンジンＣＰＵ（１６００）は、出力画像の排紙が終了した場合に、コントローラＣＰＵ（２３００）に排紙終了コマンドを送信する（ステップＳ２４）。
【００９７】
エンジンＣＰＵ（１６００）は、スキャンプロセスが終了した場合に、コントローラＣＰＵ（２３００）にプロセス結果通知コマンドとプロセス結果データとを送信する（ステップＳ２５）。
【００９８】
＜ＣＰＵリードライトモードの説明＞
次に、図４〜図６を参照しながら、ＣＰＵリードライトモードについて説明する。
【００９９】
ＣＰＵリードライトモードは、全２重方式の通信の場合は、ＤＭＡコントローラを使用せず、コントローラＣＰＵ（２３００）が、直接、通信用ＳＲＡＭ１、２（１８４１、１８４２）のリード／ライトを行うモードである。
【０１００】
コピー動作時は、図３に示すようにデータを伴うコマンドを双方向で送受信するため、このモードを使用して通信を行うことになる。
【０１０１】
＜コントローラＣＰＵ：２３００からエンジンＣＰＵ：１６００への転送＞
図４〜図６は、ＣＰＵリードライトモードにおけるクロック制御のイメージ図である。なお、図４〜図６では、コミュニケーションバッファ（１８３０）内の一部のモジュールを省略している。
【０１０２】
初期状態、および、エンジンＣＰＵ（１６００）／コントローラＣＰＵ（２３００）のリード／ライトが終了した時点では、図４に示すように、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）のクロックは停止している。
【０１０３】
また、送信／受信バッファのサイズよりも小さい容量のデータの送受信を、送信／受信バッファで送受信する場合も、図４に示すように、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）のクロックは停止している。
【０１０４】
なお、エンジンＣＰＵ（１６００）ライト時、および、コントローラＣＰＵ（２３００）リード時は、図５に示すように、通信用ＳＲＡＭ１（１８４１）にクロックが供給され、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）のクロックは停止している。
【０１０５】
また、コントローラＣＰＵ（２３００）ライト時、および、エンジンＣＰＵ（１６００）リード時は、図６に示すように、通信用ＳＲＡＭ２（１８４２）にクロックが供給され、通信用ＳＲＡＭ１（１８４１）、通信バッファＤＭＡＣ（１８４３）のクロックは停止している。
【０１０６】
なお、全２重通信のため、エンジンＣＰＵ（１６００）とコントローラＣＰＵ（２３００）との両方が、リード／ライトを行う場合があり、この時は、通信用ＳＲＡＭ１（１８４１）と、通信用ＳＲＡＭ２（１８４２）と、にクロックが供給され、通信バッファＤＭＡＣ（１８４３）のクロックは停止している。
【０１０７】
＜ＣＰＵリードライトモード時の処理動作＞
次に、図７、図８を参照しながら、ＣＰＵリードライトモード時の処理動作について説明する。なお、図７は、ＣＰＵリードライトモードで、コントローラＣＰＵ（２３００）からエンジンＣＰＵ（１６００）にデータを送信する場合の動作フローであり、図８は、ＣＰＵリードライトモードで、エンジンＣＰＵ（１６００）からコントローラＣＰＵ（２３００）にデータを送信する場合の動作フローである。
【０１０８】
＜コントローラＣＰＵ：２３００からエンジンＣＰＵ：１６００へのデータ転送＞
まず、図７を参照しながら、ＣＰＵリードライトモードで、コントローラＣＰＵ（２３００）からエンジンＣＰＵ（１６００）にデータを送信する場合の動作について説明する。
【０１０９】
コントローラＣＰＵ（２３００）は、コントローラＣＰＵ用レジスタ（１８３９）の送信バッファエンプティ割り込み要因のチェックを行う（ステップＳ１）。
【０１１０】
コントローラＣＰＵ（２３００）は、送信バッファエンプティ割り込み要因が『０』か否かを判断し（ステップＳ２）、送信バッファエンプティ割り込み要因が『０』の場合は（ステップＳ２／Ｙｅｓ）、エンジンＣＰＵ（１６００）が前のデータを読み出し中のため、ステップＳ３に移行し、読み出しが終了するのを待つことになる。
【０１１１】
また、送信バッファエンプティ割り込み要因が『１』の場合は（ステップＳ２／Ｎｏ）、エンジンＣＰＵ（１６００）が前のデータの読み出しを終了しているため、ステップＳ７に移行し、データの書き込みを開始することになる。
【０１１２】
なお、ステップＳ３において、コントローラＣＰＵ（２３００）は、コントローラＣＰＵ用レジスタ（１８３９）の送信バッファエンプティ割り込みマスクを解除する（ステップＳ３）。
【０１１３】
エンジンＡＳＩＣ（１８００）は、エンジンＣＰＵ（１６００）により、読み出し終了レジスタがセットされているか否かを判断し（ステップＳ４）、読み出し終了レジスタがセットされている場合は（ステップＳ４／Ｙｅｓ）、エンジンＣＰＵ（１６００）のデータ読み出しが終了したと判断し、エンジンＡＳＩＣ（１８００）は、コントローラＣＰＵ用レジスタ（１８３９）の送信バッファ割り込み要因を『１』にする（ステップＳ５）。
【０１１４】
エンジンＡＳＩＣ（１８００）のコントローラＣＰＵ割り込み制御部（１８３８）は、同時に、コントローラＣＰＵ（２３００）に、送信バッファエンプティ割り込みをアサートする（ステップＳ６）。
【０１１５】
コントローラＣＰＵ（２３００）は、コントローラＣＰＵ用レジスタ（１８３９）の書き込み開始レジスタをセットする（ステップＳ７）。
【０１１６】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、書き込み開始レジスタがセットされた場合に、通信用ＳＲＡＭ２（１８４２）のクロックを開始する（ステップＳ８）。
【０１１７】
コントローラＣＰＵ（２３００）は、送信するデータを通信用ＳＲＡＭ２（１８４２）へ書き込む（ステップＳ９）。
【０１１８】
コントローラＣＰＵ（２３００）は、通信用ＳＲＡＭ２（１８４２）へのデータの書き込みが終了したか否かを判断し（ステップＳ１０）、データの書き込みが終了していない場合は（ステップＳ１０／Ｎｏ）、ステップＳ９に移行し、通信用ＳＲＡＭ２（１８４２）へのデータの書き込みを行うことになる（ステップＳ９）。
【０１１９】
また、コントローラＣＰＵ（２３００）は、通信用ＳＲＡＭ２（１８４２）へのデータの書き込みが終了している場合は（ステップＳ１０／Ｙｅｓ）、コントローラＣＰＵ用レジスタ（１８３９）の送信データサイズレジスタに、送信データサイズをセットする（ステップＳ１１）。
【０１２０】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、送信データサイズレジスタに値がセットされた場合は、通信用ＳＲＡＭ２（１８４２）のクロックを停止する（ステップＳ１２）。
【０１２１】
エンジンＡＳＩＣ（１８００）は、同時に、コントローラＣＰＵ用レジスタ（１８３９）の送信バッファエンプティ割り込み要因を『０』にする（ステップＳ１３）。
【０１２２】
エンジンＡＳＩＣ（１８００）は、エンジンＣＰＵ用レジスタ（１８４０）の受信データサイズレジスタに、受信データサイズをセットする（ステップＳ１４）。
【０１２３】
エンジンＡＳＩＣ（１８００）のエンジンＣＰＵ割り込み制御部（１８３７）は、同時に、エンジンＣＰＵ（１６００）に、受信バッファフル割り込みをアサートする（ステップＳ１５）。
【０１２４】
エンジンＣＰＵ（１６００）は、エンジンＣＰＵ用レジスタ（１８４０）の受信データサイズを読み出す（ステップＳ１６）。
【０１２５】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、受信データサイズが読み出された場合に、通信用ＳＲＡＭ２（１８４２）のクロックを開始する（ステップＳ１７）。
【０１２６】
エンジンＣＰＵ（１６００）は、通信用ＳＲＡＭ２（１８４２）のデータを読み出す（ステップＳ１８）。
【０１２７】
エンジンＣＰＵ（１６００）は、通信用ＳＲＡＭ２（１８４２）のデータの読み出しが終了したか否かを判断し（ステップＳ１９）、通信用ＳＲＡＭ２（１８４２）のデータの読み出しが終了していないと判断した場合は（ステップＳ１９／Ｎｏ）、ステップＳ１８に移行し、通信用ＳＲＡＭ２（１８４２）のデータを読み出すことになる（ステップＳ１８）。
【０１２８】
また、エンジンＣＰＵ（１６００）は、通信用ＳＲＡＭ２（１８４２）のデータの読み出しが終了したと判断した場合は（ステップＳ１９／Ｙｅｓ）、エンジンＣＰＵ用レジスタ（１８４０）の読み出し終了レジスタのセットを行う（ステップＳ２０）。
【０１２９】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、読み出し終了レジスタがセットされた場合は、通信用ＳＲＡＭ２（１８４２）のクロックを停止する（ステップＳ２１）。
【０１３０】
エンジンＡＳＩＣ（１８００）は、同時に、コントローラＣＰＵ用レジスタ（１８３９）の送信バッファエンプティ割り込み要因を『１』にする（ステップＳ２２）。
【０１３１】
＜エンジンＣＰＵ：１６００からコントローラＣＰＵ：２３００へのデータ転送＞
次に、図８を参照しながら、ＣＰＵリードライトモードで、エンジンＣＰＵ（１６００）からコントローラＣＰＵ（２３００）にデータを送信する場合の動作について説明する。
【０１３２】
エンジンＣＰＵ（１６００）は、エンジンＣＰＵ用レジスタ（１８４０）の送信バッファエンプティ割り込み要因のチェックを行う（ステップＳ１）。
【０１３３】
エンジンＣＰＵ（１６００）は、送信バッファエンプティ割り込み要因が『０』か否かを判断し（ステップＳ２）、送信バッファエンプティ割り込み要因が『０』の場合は（ステップＳ２／Ｙｅｓ）、コントローラＣＰＵ（２３００）が前のデータを読み出し中のため、ステップＳ３に移行し、読み出しが終了するのを待つことになる。
【０１３４】
また、送信バッファエンプティ割り込み要因が『１』の場合は（ステップＳ２／Ｎｏ）、コントローラＣＰＵ（２３００）が前のデータの読み出しを終了しているため、ステップＳ７に移行し、データの書き込みを開始することになる。
【０１３５】
なお、ステップＳ３において、エンジンＣＰＵ（１６００）は、エンジンＣＰＵ用レジスタ（１８４０）の送信バッファエンプティ割り込みマスクを解除する（ステップＳ３）。
【０１３６】
エンジンＡＳＩＣ（１８００）は、コントローラＣＰＵ（２３００）により、読み出し終了レジスタがセットされているか否かを判断し（ステップＳ４）、読み出し終了レジスタがセットされている場合は（ステップＳ４／Ｙｅｓ）、コントローラＣＰＵ（２３００）のデータ読み出しが終了したと判断し、エンジンＡＳＩＣ（１８００）は、エンジンＣＰＵ用レジスタ（１８４０）の送信バッファ割り込み要因を『１』にする（ステップＳ５）。
【０１３７】
エンジンＡＳＩＣ（１８００）のエンジンＣＰＵ割り込み制御部（１８３７）は、同時に、エンジンＣＰＵ（１６００）に、送信バッファエンプティ割り込みをアサートする（ステップＳ６）。
【０１３８】
エンジンＣＰＵ（１６００）は、エンジンＣＰＵ用レジスタ（１８４０）の書き込み開始レジスタをセットする（ステップＳ７）。
【０１３９】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、書き込み開始レジスタがセットされた場合は、通信用ＳＲＡＭ１（１８４１）のクロックを開始する（ステップＳ８）。
【０１４０】
エンジンＣＰＵ（１６００）は、送信するデータを通信用ＳＲＡＭ１（１８４１）へ書き込む（ステップＳ９）。
【０１４１】
エンジンＣＰＵ（１６００）は、通信用ＳＲＡＭ１（１８４１）へのデータの書き込みが終了したか否かを判断し（ステップＳ１０）、データの書き込みが終了していない場合は（ステップＳ１０／Ｎｏ）、ステップＳ９に移行し、通信用ＳＲＡＭ１（１８４１）へのデータの書き込みを行うことになる（ステップＳ９）。
【０１４２】
また、エンジンＣＰＵ（１６００）は、通信用ＳＲＡＭ１（１８４１）へのデータの書き込みが終了している場合は（ステップＳ１０／Ｙｅｓ）、エンジンＣＰＵ用レジスタ（１８４０）の送信データサイズレジスタに、送信データサイズをセットする（ステップＳ１１）。
【０１４３】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、送信データサイズレジスタに値がセットされた場合は、通信用ＳＲＡＭ１（１８４１）のクロックを停止する（ステップＳ１２）。
【０１４４】
エンジンＡＳＩＣ（１８００）は、同時に、エンジンＣＰＵ用レジスタ（１８４０）の送信バッファエンプティ割り込み要因を『０』にする（ステップＳ１３）。
【０１４５】
エンジンＡＳＩＣ（１８００）は、コントローラＣＰＵ用レジスタ（１８３９）の受信データサイズレジスタに、受信データサイズをセットする（ステップＳ１４）。
【０１４６】
エンジンＡＳＩＣ（１８００）のコントローラＣＰＵ割り込み制御部（１８３８）は、同時に、コントローラＣＰＵ（２３００）に、受信バッファフル割り込みをアサートする（ステップＳ１５）。
【０１４７】
コントローラＣＰＵ（２３００）は、コントローラＣＰＵ用レジスタ（１８４０）の受信データサイズを読み出す（ステップＳ１６）。
【０１４８】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、受信データサイズが読み出された場合は、通信用ＳＲＡＭ１（１８４１）のクロックを開始する（ステップＳ１７）。
【０１４９】
コントローラＣＰＵ（２３００）は、通信用ＳＲＡＭ１（１８４１）のデータを読み出す（ステップＳ１８）。
【０１５０】
コントローラＣＰＵ（２３００）は、通信用ＳＲＡＭ１（１８４１）のデータの読み出しが終了したか否かを判断し（ステップＳ１９）、通信用ＳＲＡＭ１（１８４１）のデータの読み出しが終了していないと判断した場合は（ステップＳ１９／Ｎｏ）、ステップＳ１８に移行し、通信用ＳＲＡＭ１（１８４１）のデータを読み出すことになる（ステップＳ１８）。
【０１５１】
また、コントローラＣＰＵ（２３００）は、通信用ＳＲＡＭ１（１８４１）のデータの読み出しが終了したと判断した場合は（ステップＳ１９／Ｙｅｓ）、コントローラＣＰＵ用レジスタ（１８３９）の読み出し終了レジスタのセットを行う（ステップＳ２０）。
【０１５２】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、読み出し終了レジスタがセットされた場合に、通信用ＳＲＡＭ１（１８４１）のクロックを停止する（ステップＳ２１）。
【０１５３】
エンジンＡＳＩＣ（１８００）は、同時に、エンジンＣＰＵ用レジスタ（１８４０）の送信バッファエンプティ割り込み要因を『１』にする（ステップＳ２２）。
【０１５４】
＜ダウンロード時の処理動作＞
次に、図９を参照しながら、ダウンロード時の処理動作について説明する。なお、図９は、エンジンのアップデートプログラムダウンロード時のデータフローを示す図である。
【０１５５】
ＳＤカード（４０００）に予め記録されたエンジンのアップデートプログラムは、ＳＤカードＩ／Ｆ（２５２０）で読み出しを行い、コントローラＣＰＵ（２３００）を経由し、メインメモリ（２４００）上に転送される（図９のＢ１）。
【０１５６】
アップデートプログラムのメインメモリ（２４００）への転送が終了した場合に、エンジンＡＳＩＣ（１８００）の通信バッファＤＭＡＣ（１８４３）は、メインメモリ（２４００）からコントローラＣＰＵ（２３００）、アービタ（１８２０）、を経由し、アップデートプログラムを読み出し、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）に転送する（図９のＢ２）。
【０１５７】
アップデートプログラムの通信用ＳＲＡＭ１、２（１８４１、１８４２）への転送が終了した場合に、エンジンＣＰＵ（１６００）は、エンジンＣＰＵ Ｉ／Ｆ（１８３１）を経由し、通信用ＳＲＡＭ１、２（１８４１、１８４２）のアップデートプログラムを読み出し、フラッシュメモリ（１７００）への書き込みを行う（図９のＢ３）。
【０１５８】
＜ダウンロード時の処理動作＞
次に、図１０を参照しながら、ダウンロード時の処理動作について説明する。なお、図１０は、エンジンのアップデートプログラムをダウンロードする時のエンジンＣＰＵ（１６００）と、コントローラＣＰＵ（２３００）と、の間の処理動作の一例を示す図である。
【０１５９】
コントローラＣＰＵ（２３００）は、起動が終了した場合に、エンジンＣＰＵ（１６００）にコントローラ接続通知コマンドを送信する（ステップＳ１）。
【０１６０】
エンジンＣＰＵ（１６００）は、起動が終了した場合に、コントローラＣＰＵ（２３００）にエンジン接続通知コマンドを送信する（ステップＳ２）。
【０１６１】
コントローラＣＰＵ（２３００）は、プログラムダウンロード開始の準備ができた場合に、エンジンＣＰＵ（１６００）にプログラムダウンロード初期化要求コマンドを送信する（ステップＳ３）。
【０１６２】
エンジンＣＰＵ（１６００）は、プログラムダウンロード初期化が終了した場合に、コントローラＣＰＵ（２３００）に、プログラムダウンロード初期化応答コマンドを送信する（ステップＳ４）。
【０１６３】
コントローラＣＰＵ（２３００）は、プログラムダウンロード初期化応答コマンドを受信した場合に、エンジンＣＰＵ（１６００）に、プログラムダウンロード実行要求コマンド、および、ダウンロードするプログラムを送信する（ステップＳ５）。
【０１６４】
エンジンＣＰＵ（１６００）は、１回のプログラムダウンロードの実行が終了した場合に、コントローラＣＰＵ（２３００）に、プログラムダウンロード実行応答コマンドを送信する（ステップＳ６）。
【０１６５】
コントローラＣＰＵ（２３００）は、全てのダウンロードが終了しているか否かを判断し（ステップＳ７）、全てのダウンロードが終了していない場合は（ステップＳ７／Ｎｏ）、ステップＳ５に移行し、エンジンＣＰＵ（１６００）に、プログラムダウンロード実行要求コマンド、および、ダウンロードするプログラムを送信する（ステップＳ５）。
【０１６６】
また、全てのダウンロードが終了している場合は（ステップＳ７／Ｙｅｓ）、エンジンＣＰＵ（１６００）に、プログラムダウンロード終了要求コマンドを送信する（ステップＳ８）。
【０１６７】
エンジンＣＰＵ（１６００）は、プログラムダウンロード終了要求コマンドを受信した場合に、コントローラＣＰＵ（２３００）に、プログラムダウンロード終了応答コマンドを送信する（ステップＳ９）。
【０１６８】
＜ＤＭＡ転送モードの説明＞
次に、ＤＭＡ転送モードについて説明する。
【０１６９】
ＤＭＡ転送モードは、半２重方式で、ＤＭＡコントローラを使用するモードである。
【０１７０】
エンジンプログラムのダウンロード時は、図１０に示すように、コントローラＣＰＵ（２３００）からエンジンＣＰＵ（１６００）に大容量データを伴うコマンドを送信するため、このモードを使用して通信を行う。
【０１７１】
このモードは、その他に、エンジンＣＰＵ（１６００）側のパラメータやログをコントローラＣＰＵ（２３００）側へ転送する場合等に使用する。
【０１７２】
＜コントローラＣＰＵ：２３００からエンジンＣＰＵ：１６００への転送＞
図１１〜図１３は、ＤＭＡ転送モードのコントローラＣＰＵ（２３００）からエンジンＣＰＵ（１６００）への転送におけるクロック制御のイメージ図である。なお、図１１〜図１３は、コミュニケーションバッファ（１８３０）内の一部モジュールを省略している。
【０１７３】
初期状態、ＤＭＡ転送終了後、エンジンＣＰＵ（１６００）のリード終了後は、図１１に示すように、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）のクロックは停止している。
【０１７４】
ＤＭＡ転送中は、図１２に示すように、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）にクロックが供給される。
【０１７５】
エンジンＣＰＵリード中は、図１３に示すように、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）にクロックが供給され、通信バッファＤＭＡＣ（１８４３）のクロックは停止している。
【０１７６】
図１４は、ＤＭＡ転送モードで、コントローラＣＰＵ（２３００）からエンジンＣＰＵ（１６００）にデータを送信する場合の動作フローである。
【０１７７】
コントローラＣＰＵ（２３００）は、メインメモリ（２４００）上に送信するデータを準備する。例えば、ハードディスク（２２００）や、ＳＤカード（４０００）等から必要なデータを予めＤＭＡ転送しておく（ステップＳ１）。
【０１７８】
コントローラＣＰＵ（２３００）は、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡ送信バッファエンプティ割り込み要因レジスタのチェックを行う（ステップＳ２）。
【０１７９】
コントローラＣＰＵ（２３００）は、ＤＭＡ送信バッファエンプティ割り込み要因レジスタが『０』か否かを判断する（ステップＳ３）。
【０１８０】
なお、コントローラＣＰＵ（２３００）が送信したデータの読み出しをエンジンＣＰＵ（１６００）が完了していない場合は、ＤＭＡ送信バッファエンプティ割り込み要因レジスタは『０』になっており、データの読み出しをエンジンＣＰＵ（１６００）が完了している場合は、ＤＭＡ送信バッファエンプティ割り込み要因レジスタは『１』となっている。
【０１８１】
コントローラＣＰＵ（２３００）は、ＤＭＡ送信バッファエンプティ割り込み要因レジスタが『０』の場合は（ステップＳ３／Ｙｅｓ）、エンジンＣＰＵ（１６００）の読み出しが終了するまで待つ必要があるので、ステップＳ４に移行する。
【０１８２】
また、ＤＭＡ送信バッファエンプティ割り込み要因レジスタが『１』の場合は（ステップＳ３／Ｎｏ）、通信用ＳＲＡＭ１、２（１８４１、１８４２）に書き込みが可能なので、ステップＳ８に移行する。
【０１８３】
なお、ステップＳ４において、コントローラＣＰＵ（２３００）は、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡ送信バッファエンプティ割り込みマスクを解除し、ＤＭＡ送信バッファエンプティ割り込みが来るのを待つことになる（ステップＳ４）。
【０１８４】
エンジンＡＳＩＣ（１８００）は、ＤＭＡ読み出しが終了したか否かを判断し（ステップＳ５）、ＤＭＡ読み出しが終了していると判断した場合は（ステップＳ５／Ｙｅｓ）、エンジンＣＰＵ（１６００）により、エンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ読み出し終了レジスタがセットされた場合に、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡ送信バッファエンプティ要因レジスタを『１』にする（ステップＳ６）。
【０１８５】
同時に、エンジンＡＳＩＣ（１８００）のコントローラＣＰＵ割り込み制御部（１８３８）は、コントローラＣＰＵ（２３００）にＤＭＡ送信バッファエンプティ割り込みを出力する（ステップＳ７）。
【０１８６】
コントローラＣＰＵ（２３００）は、通信バッファＤＭＡＣ（１８４３）によるＤＭＡ転送のためのディスクリプタ情報をメインメモリ（２４００）に書き込む（ステップＳ８）。なお、ディスクリプタ情報は、ＤＭＡ転送時のアドレスや転送サイズといったパラメータの情報である。
【０１８７】
コントローラＣＰＵ（２３００）は、通信バッファＤＭＡＣ（１８４３）のＤＭＡＣモード設定レジスタをメモリリードモードにセットする（ステップＳ９）。これにより、通信バッファＤＭＡＣ（１８４３）は、メインメモリ（２４００）から通信用ＳＲＡＭ１、２（１８４１、１８４２）にデータを転送することになる。
【０１８８】
コントローラＣＰＵ（２３００）は、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡＣ起動レジスタで通信バッファＤＭＡＣ（１８４３）を起動する（ステップＳ１０）。
【０１８９】
コントローラＣＰＵ（２３００）は、ＤＭＡ転送が終了するまで、別のタスクを実行することが可能となる（ステップＳ１１）。従って、この間に、エンジン用送信／受信バッファと、コントローラ用送信／受信バッファと、を使用し、コマンドやデータの送受信を行うことが可能となる。
【０１９０】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、通信バッファＤＭＡＣ（１８４３）が起動された場合に、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）のクロックを開始する（ステップＳ１２）。
【０１９１】
エンジンＡＳＩＣ（１８００）の通信バッファＤＭＡＣ（１８４３）は、起動された場合に、メインメモリ（２４００）からディスクリプタ情報を読み出す（ステップＳ１３）。
【０１９２】
エンジンＡＳＩＣ（１８００）の通信バッファＤＭＡＣ（１８４３）は、ディスクリプタ情報に従い、メインメモリ（２４００）からデータを読み出し、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）に書き込む（ステップＳ１４）。
【０１９３】
エンジンＡＳＩＣ（１８００）の通信バッファＤＭＡＣ（１８４３）は、ＤＭＡ転送が終了しているか否かを判断し（ステップＳ１５）、ＤＭＡ転送が終了していない場合は（ステップＳ１５／Ｎｏ）、ステップＳ１４に移行し、ディスクリプタ情報に従い、メインメモリ（２４００）からデータを読み出し、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）に書き込むことになる（ステップＳ１４）。
【０１９４】
また、ＤＭＡ転送が終了している場合は（ステップＳ１５／Ｙｅｓ）、エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）のクロックを停止する（ステップＳ１６）。
【０１９５】
エンジンＡＳＩＣ（１８００）のコントローラＣＰＵ割り込み制御部（１８３８）は、転送が終了した場合に、コントローラＣＰＵ（２３００）にcomplete割り込みを出力する（ステップＳ１７）。
【０１９６】
コントローラＣＰＵ（２３００）は、通信用ＳＲＡＭ１、２（１８４１、１８４２）への転送が終了した場合に、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡ送信データサイズレジスタにＤＭＡ送信データサイズを書き込む（ステップＳ１８）。
【０１９７】
エンジンＡＳＩＣ（１８００）は、ＤＭＡ送信データサイズが書き込まれた場合に、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡ送信バッファエンプティ割り込み要因レジスタを『０』にする（ステップＳ１９）。
【０１９８】
エンジンＡＳＩＣ（１８００）は、ＤＭＡ送信データサイズが書き込まれた場合に、エンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ受信データサイズレジスタに、ＤＭＡ受信データサイズをセットする（ステップＳ２２）。
【０１９９】
エンジンＡＳＩＣ（１８００）のエンジンＣＰＵ割り込み制御部（１８３７）は、同時に、エンジンＣＰＵ（１６００）にＤＭＡ受信バッファフル割り込みを発生する（ステップＳ２１）。
【０２００】
エンジンＣＰＵ（１６００）は、ＤＭＡ受信バッファフル割り込みが来た場合に、エンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ受信データサイズを読み出す（ステップＳ２２）。
【０２０１】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、ＤＭＡ受信データサイズが読み出されると、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）のクロックを開始する（ステップＳ２３）。
【０２０２】
エンジンＣＰＵ（１６００）は、通信用ＳＲＡＭ１（１８４１）、および、通信用ＳＲＡＭ２（１８４２）からデータを読み出す（ステップＳ２４）。
【０２０３】
エンジンＣＰＵ（１６００）は、ＤＭＡ受信データサイズ分の読み出しが終了しているか否かを判断し（ステップＳ２５）、ＤＭＡ受信データサイズ分の読み出しが終了していない場合は（ステップＳ２５／Ｎｏ）、ステップＳ２４に移行し、通信用ＳＲＡＭ１（１８４１）、および、通信用ＳＲＡＭ２（１８４２）からデータを読み出すことになる（ステップＳ２４）。
【０２０４】
また、エンジンＣＰＵ（１６００）は、ＤＭＡ受信データサイズ分の読み出しが終了した場合は（ステップＳ２５／Ｙｅｓ）、エンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ読み出し終了レジスタをセットする（ステップＳ２６）。
【０２０５】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、ＤＭＡ読み出し終了レジスタがセットされた場合に、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）のクロックを停止する（ステップＳ２７）。
【０２０６】
エンジンＡＳＩＣ（１８００）は、ＤＭＡ読み出し終了レジスタがセットされた場合に、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡ送信バッファエンプティ割り込み要因レジスタを『１』にする（ステップＳ２８）。
【０２０７】
＜エンジンＣＰＵ：１６００からコントローラＣＰＵ：２３００へのデータ転送＞
図１５〜図１７は、ＤＭＡ転送モードのエンジンＣＰＵ（１６００）からコントローラＣＰＵ（２３００）へのデータ転送におけるクロック制御のイメージ図である。なお、図１５〜図１７は、コミュニケーションバッファ（１８３０）内の一部モジュールを省略している。
【０２０８】
初期状態、エンジンＣＰＵ（１６００）ライト終了後、ＤＭＡ転送終了後は、図１５に示すように、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）のクロックは停止している。
【０２０９】
エンジンＣＰＵ（１６００）ライト中は、図１６に示すように、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）にクロックが供給され、通信バッファＤＭＡＣ（１８４３）のクロックは停止している。
【０２１０】
ＤＭＡ転送中は、図１７に示すように、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）にクロックが供給される。
【０２１１】
図１８は、ＤＭＡ転送モードで、エンジンＣＰＵ（１６００）からコントローラＣＰＵ（２３００）にデータを送信する場合の動作フローである。
【０２１２】
エンジンＣＰＵ（１６００）は、エンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ送信バッファエンプティ割り込み要因レジスタのチェックを行う（ステップＳ１）。
【０２１３】
エンジンＣＰＵ（１６００）が送信したデータの読み出しをコントローラＣＰＵ（２３００）が完了していない場合は、ＤＭＡ送信バッファエンプティ割り込み要因レジスタは『０』になっており、データの読み出しをコントローラＣＰＵ（２３００）が完了している場合は、ＤＭＡ送信バッファエンプティ割り込み要因レジスタは『１』になっている。
【０２１４】
エンジンＣＰＵ（１６００）は、ＤＭＡ送信バッファエンプティ割り込み要因レジスタが『０』か否かを判断し（ステップＳ２）、ＤＭＡ送信バッファエンプティ割り込み要因レジスタが『０』の場合は（ステップＳ２／Ｙｅｓ）、コントローラＣＰＵ（２３００）の読み出しが終了するまで待つ必要があるので、ステップＳ３に移行する。
【０２１５】
また、ＤＭＡ送信バッファエンプティ割り込み要因レジスタが『１』の場合は（ステップＳ２／Ｎｏ）、通信用ＳＲＡＭ１、２（１８４１、１８４２）に書き込みが可能なので、ステップＳ７に移行する。
【０２１６】
なお、ステップＳ３において、エンジンＣＰＵ（１６００）は、エンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ送信バッファエンプティ割り込みマスクを解除し、コントローラＣＰＵ（２３００）の読み出しが終了するのを待つ（ステップＳ３）。
【０２１７】
エンジンＡＳＩＣ（１８００）は、コントローラＣＰＵ（２３００）の読み出しが終了しているか否かを判断し（ステップＳ４）、コントローラＣＰＵ（２３００）の読み出しが終了し（ステップＳ４／Ｙｅｓ）、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡ読み出し終了レジスタがセットされている場合に、エンジンＡＳＩＣ（１８００）のエンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ送信バッファエンプティ要因レジスタを『１』にする（ステップＳ５）。
【０２１８】
コントローラＣＰＵ（２３００）がデータの読み出しを終了した場合に、エンジンＡＳＩＣ（１８００）のエンジンＣＰＵ割り込み制御部（１８３７）は、エンジンＣＰＵ（１６００）にＤＭＡ送信バッファエンプティ割り込みを出力する（ステップＳ６）。
【０２１９】
エンジンＣＰＵ（１６００）は、エンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ書き込み開始レジスタをセットする（ステップＳ７）。
【０２２０】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、ＤＭＡ書き込み開始レジスタがセットされた場合に、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）のクロックを開始する（ステップＳ８）。
【０２２１】
エンジンＣＰＵ（１６００）は、通信用ＳＲＡＭ１（１８４１）、および、通信用ＳＲＡＭ２（１８４２）に送信するデータの書き込みを行う（ステップＳ９）。
【０２２２】
エンジンＣＰＵ（１６００）は、通使用ＳＲＡＭ１、２（１８４１、１８４２）へのデータの書き込みが終了しているか否かを判断し（ステップＳ１０）、通信用ＳＲＡＭ１、２（１８４１、１８４２）へのデータの書き込みが終了していない場合は(ステップＳ１０／Ｎｏ)、ステップＳ９に移行し、通信用ＳＲＡＭ１（１８４１）、および、通信用ＳＲＡＭ２（１８４２）に送信するデータの書き込みを行うことになる（ステップＳ９）。
【０２２３】
また、通信用ＳＲＡＭ１、２（１８４１、１８４２）へのデータの書き込みが終了している場合は(ステップＳ１０／Ｙｅｓ)、エンジンＣＰＵ（１６００）は、エンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ送信データサイズレジスタにデータのＤＭＡ送信データサイズを書き込む（ステップＳ１１）。
【０２２４】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、ＤＭＡ送信データサイズが書き込まれた場合に、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）のクロックを停止する（ステップＳ１２）。
【０２２５】
エンジンＡＳＩＣ（１８００）は、エンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ送信バッファエンプティ割り込み要因レジスタを『０』にする（ステップＳ１３）。
【０２２６】
エンジンＡＳＩＣ（１８００）は、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡ受信データサイズレジスタに、受信データサイズをセットする（ステップＳ１４）。
【０２２７】
エンジンＡＳＩＣ（１８００）のコントローラＣＰＵ割り込み制御部（１８３８）は、コントローラＣＰＵ（２３００）にＤＭＡ受信バッファフル割り込みを出す（ステップＳ１５）。
【０２２８】
コントローラＣＰＵ（２３００）は、ＤＭＡ受信バッファフル割り込みが来た場合に、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡ受信データサイズレジスタの値を読み出す（ステップＳ１６）。
【０２２９】
コントローラＣＰＵ（２３００）は、メインメモリ（２４００）にデータ転送用のメモリ領域を確保する（ステップＳ１７）。
【０２３０】
コントローラＣＰＵ（２３００）は、メインメモリ（２４００）に通信バッファＤＭＡＣ（１８４３）によるＤＭＡ転送のためのディスクリプタ情報を書き込む（ステップＳ１８）。
【０２３１】
コントローラＣＰＵ（２３００）は、通信バッファＤＭＡＣ（１８４３）のＤＭＡＣモード設定レジスタをメモリライトモードにする（ステップＳ１９）。これにより、通信バッファＤＭＡＣ（１８４３）は、通信用ＳＲＡＭ１、２（１８４１、１８４２）からメインメモリ（２４００）へデータを転送することになる。
【０２３２】
コントローラＣＰＵ（２３００）は、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡＣ起動レジスタで通信バッファＤＭＡＣ（１８４３）を起動する（ステップＳ２０）。
【０２３３】
コントローラＣＰＵ（２３００）は、ＤＭＡ転送が終了するまで、別のタスクを実行することが可能となる（ステップＳ２１）。従って、この間に、エンジン用送信／受信バッファと、コントローラ用送信／受信バッファと、を使用し、コマンドの送受信を行うことが可能となる。
【０２３４】
エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、通信バッファＤＭＡＣ（１８４３）が起動された場合に、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）のクロックを開始する（ステップＳ２２）。
【０２３５】
エンジンＡＳＩＣ（１８００）の通信バッファＤＭＡＣ（１８４３）は、起動された場合に、メインメモリ（２４００）からディスクリプタ情報を読み出す（ステップＳ２３）。
【０２３６】
エンジンＡＳＩＣ（１８００）の通信バッファＤＭＡＣ（１８４３）は、読み出したディスクリプタ情報に従い、通信用ＳＲＡＭ１、２（１８４１、１８４２）からデータを読み出し、メインメモリ（２４００）に転送する（ステップＳ２４）。
【０２３７】
エンジンＡＳＩＣ（１８００）の通信バッファＤＭＡＣ（１８４３）は、ＤＭＡ転送が終了しているか否かを判断し（ステップＳ２５）、ＤＭＡ転送が終了していない場合は（ステップＳ２５／Ｎｏ）、ステップＳ２４に移行し、読み出したディスクリプタ情報に従い、通信用ＳＲＡＭ１、２（１８４１、１８４２）からデータを読み出し、メインメモリ（２４００）に転送する（ステップＳ２４）。
【０２３８】
また、エンジンＡＳＩＣ（１８００）のクロック制御部（１８４４）は、ＤＭＡ転送が終了した場合は（ステップＳ２５／Ｙｅｓ）、通信用ＳＲＡＭ１（１８４１）、通信用ＳＲＡＭ２（１８４２）、通信バッファＤＭＡＣ（１８４３）のクロックを停止する（ステップＳ２６）。
【０２３９】
エンジンＡＳＩＣ（１８００）のコントローラＣＰＵ割り込み制御部（１８３８）は、ＤＭＡ転送が終了した場合に、コントローラＣＰＵ（２３００）にcomplete割り込みを出す（ステップＳ２７）。
【０２４０】
コントローラＣＰＵ（２３００）は、complete割り込みが来た場合に、コントローラＣＰＵ用レジスタ（１８３９）のＤＭＡ読み出し終了レジスタをセットする（ステップＳ２８）。
【０２４１】
エンジンＡＳＩＣ（１８００）は、ＤＭＡ読み出し終了レジスタがセットされた場合に、エンジンＣＰＵ用レジスタ（１８４０）のＤＭＡ送信バッファエンプティ割り込み要因レジスタを『１』にする（ステップＳ２９）。
【０２４２】
＜モード変更時の処理動作＞
次に、図１９、図２０を参照しながら、モード変更時の処理動作について説明する。
なお、図１９、図２０は、全２重通信／半２重通信（コントローラＣＰＵ：２３００→エンジンＣＰＵ：１６００）／半２重通信（エンジンＣＰＵ：１６００→コントローラＣＰＵ：２３００）の動作モードの切り替え制御フローを示す。どちらのＣＰＵから切り替える場合も、プロトコルは同一である。
【０２４３】
要求元ＣＰＵは、要求元ＣＰＵ用レジスタのモード変更リクエストレジスタに要求するモードをセットする（ステップＳ１）。
【０２４４】
エンジンＡＳＩＣ（１８００）は、要求先のモード変更リクエストレジスタに要求するモードをセットし、要求先ＣＰＵにモード変更リクエスト割り込みをアサートする（ステップＳ２）。
【０２４５】
要求先ＣＰＵは、モード変更リクエスト割り込みが来た場合に、モード変更リクエストレジスタの読み出しを行う（ステップＳ３）。
【０２４６】
要求先ＣＰＵは、要求されたモードに変更し、問題がなければ、変更後のモードを、要求先ＣＰＵ用レジスタのモードレジスタにセットする。要求されたモードに変更できない場合は、現在のモードを、モードレジスタにセットする（ステップＳ４）。
【０２４７】
エンジンＡＳＩＣ（１８００）は、要求元ＣＰＵ用レジスタのモードレジスタに、要求先ＣＰＵがセットしたモードをセットし、要求元ＣＰＵにモード変更レスポンス割り込みをアサートする（ステップＳ５）。
【０２４８】
要求元ＣＰＵは、モード変更レスポンス割り込みが来た場合に、要求元ＣＰＵ用レジスタのモードレジスタの読み出しを行う（ステップＳ６）。
【０２４９】
要求元ＣＰＵは、モード変更がＯＫか否かを判断し（ステップＳ７）、モードレジスタに要求したモードがセットされていた場合に、モード変更ＯＫと判断し（ステップＳ７／Ｙｅｓ）、そのモードでの転送を行う。また、現在のモードがセットされていれば、モード変更ＮＧと判断し（ステップＳ７／Ｎｏ）、一定時間待機後、再び、ステップＳ１から同様の処理を行い、モード変更リクエストを出すことになる。
【０２５０】
このように、本実施形態の画像処理装置は、通信用バッファの使用方法を、全２重通信と半２重通信とで切り替え、その通信バッファの使用方法に応じて、通信用バッファのクロックの開始／停止の制御を行うことで、一方から大容量のデータを送る必要があり、他方からは大容量のデータを送る必要が無い場合には、半２重通信を使用して高速に通信を行い、また、双方向でデータの送受信をする必要がある場合は、全２重通信を使用し、使用していない方向の通信用バッファのクロックを停止することで、消費電力を抑えることが可能となる。
【０２５１】
また、通信プロトコルの状態に応じて、通信用バッファのクロックを停止する時間を増やすことで、クロックを供給する時間を減らすことが可能となり、さらに、消費電力を抑えることが可能となる。
【０２５２】
また、通信バッファの使用方法、通信プロトコルの状態に応じて、通信用ＤＭＡコントローラのクロックの開始／停止の制御を行うことで、通信用バッファからメインメモリへの転送を行う際に、消費電力の増加を抑えつつ高速にデータ転送を行うことが可能となる。
【０２５３】
また、小容量の通信用バッファで制御可能なコマンドやデータの送受信の場合には、通信用バッファ、および、通信用ＤＭＡコントローラのクロックを停止させたままにすることで、大容量データを高速に転送する機能を搭載しても小容量のデータやコマンド送受信時の消費電力を抑えることが可能となる。
【０２５４】
なお、上述する実施形態は、本発明の好適な実施形態であり、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【０２５５】
例えば、上述した実施形態における画像処理装置における制御動作は、ハード構成ではなく、コンピュータプログラム等のソフトウェアにより実行することも可能であり、また、上記のプログラムは、光記録媒体、磁気記録媒体、光磁気記録媒体、または半導体等の記録媒体に記録し、その記録媒体から上記プログラムを、上述した画像処理装置に読み込ませることで、上述した制御動作を、画像処理装置において実行させることも可能である。また、所定のネットワークを介して接続されている外部機器から上記プログラムを上述した画像処理装置に読み込ませることで、上述した制御動作を、画像処理装置において実行させることも可能である。
【産業上の利用可能性】
【０２５６】
本発明にかかる通信制御装置、画像処理装置、通信制御方法及び通信制御プログラムは、通信用バッファを使用して通信を制御する機器に適用可能である。
【図面の簡単な説明】
【０２５７】
【図１】本実施形態の画像処理装置の構成を示す図である。
【図２】コピー動作時の画像データフローの一例を示す図である。
【図３】コピー動作時のエンジンＣＰＵ（１６００）とコントローラＣＰＵ（２３００）との間の通信の一例を示す図である。
【図４】ＣＰＵリードライトモードについて説明するための第１の図である。
【図５】ＣＰＵリードライトモードについて説明するための第２の図である。
【図６】ＣＰＵリードライトモードについて説明するための第３の図である。
【図７】ＣＰＵリードライトモードで、コントローラＣＰＵ（２３００）からエンジンＣＰＵ（１６００）にデータを送信する場合の動作フローである。
【図８】ＣＰＵリードライトモードで、エンジンＣＰＵ（１６００）からコントローラＣＰＵ（２３００）にデータを送信する場合の動作フローである。
【図９】エンジンのアップデートプログラムダウンロード時のデータフローを示す図である。
【図１０】エンジンのアップデートプログラムをダウンロードする時のエンジンＣＰＵ（１６００）と、コントローラＣＰＵ（２３００）と、の間の処理動作の一例を示す図である。
【図１１】ＤＭＡ転送モードのコントローラＣＰＵ（２３００）からエンジンＣＰＵ（１６００）への転送におけるクロック制御を説明するための第１の図である。
【図１２】ＤＭＡ転送モードのコントローラＣＰＵ（２３００）からエンジンＣＰＵ（１６００）への転送におけるクロック制御を説明するための第２の図である。
【図１３】ＤＭＡ転送モードのコントローラＣＰＵ（２３００）からエンジンＣＰＵ（１６００）への転送におけるクロック制御を説明するための第３の図である。
【図１４】ＤＭＡ転送モードで、コントローラＣＰＵ（２３００）からエンジンＣＰＵ（１６００）にデータを送信する場合の動作フローである。
【図１５】ＤＭＡ転送モードのエンジンＣＰＵ（１６００）からコントローラＣＰＵ（２３００）へのデータ転送におけるクロック制御を説明するための第１の図である。
【図１６】ＤＭＡ転送モードのエンジンＣＰＵ（１６００）からコントローラＣＰＵ（２３００）へのデータ転送におけるクロック制御を説明するための第２の図である。
【図１７】ＤＭＡ転送モードのエンジンＣＰＵ（１６００）からコントローラＣＰＵ（２３００）へのデータ転送におけるクロック制御を説明するための第３の図である。
【図１８】ＤＭＡ転送モードで、エンジンＣＰＵ（１６００）からコントローラＣＰＵ（２３００）にデータを送信する場合の動作フローである。
【図１９】モード変更時の処理動作を説明するための第１の図である。
【図２０】モード変更時の処理動作を説明するための第２の図である。
【符号の説明】
【０２５８】
１０００    エンジン
１１００    スキャナ
１２００    スキャナ画像処理ＡＳＩＣ
１３００    プロッタ
１４００    プロッタ制御ＡＳＩＣ
１５００    ＲＡＭ
１６００    エンジンＣＰＵ
１７００    フラッシュメモリ
１８００    エンジンＡＳＩＣ
１８１０    ビデオ出力部
１８２０    アービタ
１８３０    コミュニケーションバッファ
１８３１    エンジンＣＰＵ Ｉ／Ｆ
１８３２    コントローラＣＰＵ Ｉ／Ｆ
１８３３    エンジンＣＰＵ用送信バッファ
１８３４    コントローラＣＰＵ用送信バッファ
１８３５    エンジンＣＰＵ用受信バッファ
１８３６    コントローラＣＰＵ用受信バッファ
１８３７    エンジンＣＰＵ割り込み制御部
１８３８    コントローラＣＰＵ割り込み制御部
１８３９    コントローラＣＰＵ用レジスタ
１８４０    エンジンＣＰＵ用レジスタ
１８４１    通信用ＳＲＡＭ１
１８４２    通信用ＳＲＡＭ２
１８４３    通信バッファＤＭＡＣ
１８４４    クロック制御部
２０００    コントローラ
２１００    コントローラＡＳＩＣ
２１１０    ビデオ入力部
２１２０    コントローラ画像処理部
２１３０    アービタ
２１４０    ハードディスクＩ／Ｆ
２２００    ハードディスク
２３００    コントローラＣＰＵ
２４００    メインメモリ
２５００    Ｉ／Ｏ  ＡＳＩＣ
２５１０    操作部Ｉ／Ｆ
２５２０    ＳＤカードＩ／Ｆ
３０００    操作部
４０００    ＳＤカード
【図１】
2008219303.tif 000003
【図２】
2008219303.tif 000004
【図３】
2008219303.tif 000005
【図４】
2008219303.tif 000006
【図５】
2008219303.tif 000007
【図６】
2008219303.tif 000008
【図７】
2008219303.tif 000009
【図８】
2008219303.tif 000010
【図９】
2008219303.tif 000011
【図１０】
2008219303.tif 000012
【図１１】
2008219303.tif 000013
【図１２】
2008219303.tif 000014
【図１３】
2008219303.tif 000015
【図１４】
2008219303.tif 000016
【図１５】
2008219303.tif 000017
【図１６】
2008219303.tif 000018
【図１７】
2008219303.tif 000019
【図１８】
2008219303.tif 000020
【図１９】
2008219303.tif 000021
【図２０】
2008219303.tif 000022