説明

データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体

【課題】本発明は、高速シリアルバスを利用したデータ通信を適切かつ効率的に行うデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体に関する。
【解決手段】複合装置1は、PCIeバス2をPCIeバス2a、2bに分割して各PCIeバス2a、2bを利用して同じデータを同期を取りながら通信し、所定のPCIeバス2a、2bをデータ採用通信バスとして該データ採用通信バスであるPCIeバス2a、2bのデータを後段のメインメモリ102に転送する。複合装置1は、PCIeバス2a、2bにおける通信エラーの発生の有無を検出して、通信エラーが未検出のときには、任意のPCIeバス2a、2bをデータ採用通信バスとし、通信エラーが検出されると、通信エラーの発生したPCIeバス2a、2bのデータとの同期を取ったデータ通信を停止して通信エラー未発生のPCIeバス2a、2bのみによるデータ通信を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体に関し、詳細には、高速シリアルバスを利用したデータ通信を適切かつ効率的に行うデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体に関する。
【背景技術】
【0002】
複写装置、複合装置、スキャナ装置、ファクシミリ装置等の画像処理装置においては、データ(画像データ等)を高速かつ適切に転送することが重要であり、スキャナ部で読み取られた画像データ、外部記憶部(例えば、ハードディスク、CD−ROM(Compact Disc Read Only Memory )、DVD(Digital Video Disk)、SD(Secure Digital)カード等)から読み取られた画像データ等の入力画像データに対して各種画像処理を施して、一旦RAM(Random Access Memory)やハードディスク等の一時保管メモリに保管し、該一時保管メモリに保管した画像データを再度必要な画像処理(スキャナγ補正、フィルタ処理、地肌除去、色補正、プリンタγ補正、中間調処理等)を施して、プリンタ部に送って記録出力に供したり、ネットワークを介してコンピュータ等に転送したり、ファクシミリ送信に供する等の各種出力処理を行う。
【0003】
そして、近年、複合装置、プリンタ等の画像処理装置においては、ASIC(Application Specific Integrated Circuit)等の画像処理用チップとメモリとの間のデータ通信等において、高速データ通信を実現するために、要求と応答が分離され、応答を待たずに次の要求を発行できる高速な転送を行うスプリットトランザクションのバスであるPCI(Peripheral Component Interconnect) Express(以下、PCIeという。)が用いられるようになってきている。PCIeのような高速シリアルバスにおいては、特定の確率でビット化けによるパケット転送エラーが発生する。そして、PCIeの場合、PCIeの規格によると、ビット化けによるパケット転送エラーが発生した場合、再送(リトライ)を行い、データを保証することとなっている。
【0004】
一方、コピー処理や転送処理等においては、入力される画像データを所定の処理時間内に転送処理を完了する必要があり、この処理時間をオーバーすると、データ通信を適切に行うことができなくなる。例えば、スキャナ部で原稿の画像の読み取りが始まると、予め設定されている速度で読み取りデータがスキャナ部から入力されるため、この入力画像データをスキャナ部での読み取りに間に合うように、所定の短い時間間隔でデータを送信する必要がある。すなわち、所定の短い周期で一定量のデータを必ず転送し終わらないといけないという同期転送の制約がある。
【0005】
したがって、データ通信速度に対する要求が高い高速機にあっては、高速シリアルバス(例えば、PCIeバス)に要求される同期転送の制約も厳しくなり、高速シリアルバス上で再送処理が発生しただけで、そのオーバーヘッドにより異常画像が発生してしまうことがある。
【0006】
そこで、従来、データ通信において、パケットデータの送信エラーの発生状況に応じて、該パケットデータの再送とダミーデータの送信のいずれかを適宜選択して行う技術が提案されている(特許文献1参照)。すなわち、この従来技術は、エラー後の再送動作を速く、確実に行うために、送信側から受信側にダミーデータを送信して、受信側に強制的に応答を行わせている。
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上記従来技術にあっては、エラーに対応するために、ダミーデータの送信を行って、オーバーヘッドの発生を防止しているため、ダミーデータの送信とデータの再送に時間を必要とし、全体の処理時間を向上させる上で、改良の必要があった。
【0008】
そこで、本発明は、データが正常転送できなかった場合にデータを再送するデータ通信を安定してかつ速やかに行うデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体を提供することを目的としている。
【課題を解決するための手段】
【0009】
本発明は、上記目的を達成するために、通信バスを複数の多重通信バスに分割して各多重通信バスを利用して同じデータを同期を取りながら通信を行って、所定の多重通信バスをデータ採用通信バスとして該データ採用通信バスのデータを後段に転送するに際して、該多重通信バスにおける通信エラーの発生の有無を検出して、通信エラーが未検出のときには、任意の前記多重通信バスを前記データ採用通信バスとするとともに、通信エラーが検出されると、該通信エラーの発生した多重通信バスのデータとの同期を取ったデータ通信を停止して通信エラー未発生の多重通信バスのみによるデータ通信を行って、該通信エラー未発生の多重通信バスの1つをデータ採用通信バスとすることを特徴としている。
【0010】
また、本発明は、多重通信バスで通信エラーが発生すると、該通信エラーの発生した前記多重通信バスによるデータ通信を停止することを特徴としてもよい。
【0011】
さらに、本発明は、ライン単位で順次通信されるラインデータの後端を検出し、前記データ通信を停止した後に、該データ通信を停止したラインの後端を検出すると、該ライン後端検出タイミングに合わせて、停止していた該多重通信バスによるデータ通信を再開するとともに、データ通信を再開した多重通信バスのデータを含めた全ての多重通信バスにおけるデータの同期を取ることを特徴としてもよい。
【0012】
また、本発明は、通信エラーが発生して通信停止となった多重通信バスによるデータ通信の再開までに要するライン数を計数し、また、ライン単位で順次通信されるラインデータの後端を検出して、前記通信エラーが発生したラインから計数したライン数のラインの後端を検出すると、該ライン後端検出タイミングに合わせて、停止していた該多重通信バスによるデータ通信を再開するとともに、データ通信を再開した該多重通信バスのデータを含めた全ての多重通信バスにおけるデータの同期を取ることを特徴としてもよい。
【発明の効果】
【0013】
本発明によれば、データが正常転送できなかった場合にデータを再送するデータ通信を安定してかつ速やかに行うことができる。
【図面の簡単な説明】
【0014】
【図1】本発明の第1実施例を適用した複合装置の要部ブロック構成図。
【図2】図1のコントローラのデータ受信部とスキャナ画像処理部のデータ送信部の詳細なブロック構成図。
【図3】図2のコントローラのデータ受信部のさらに詳細なブロック構成図。
【図4】第1実施例のデータ通信制御処理を示すフローチャート。
【図5】第2実施例のデータ送信部のブロック構成図。
【図6】第2実施例のデータ通信制御処理を示すフローチャート。
【図7】第3実施例におけるコントローラのデータ受信部のブロック構成図。
【図8】第3実施例におけるデータ送信部のブロック構成図。
【図9】第3実施例のデータ通信制御処理を示すフローチャート。
【図10】図9のデータ通信制御処理の続きの処理を示すフローチャート。
【図11】第4実施例におけるコントローラのデータ受信部のブロック構成図。
【図12】第4実施例におけるスキャナ画像処理部のデータ送信部のブロック構成図。
【図13】第4実施例のデータ通信制御処理を示すフローチャート。
【図14】図13のデータ通信制御処理の続きの処理を示すフローチャート。
【図15】第5実施例におけるコントローラのデータ受信部とスキャナ画像処理部のデータ送信部のブロック構成図。
【図16】第5実施例におけるコントローラのデータ受信部のブロック構成図。
【図17】第5実施例におけるスキャナ画像処理部のデータ送信部のブロック構成図。
【発明を実施するための形態】
【0015】
以下、本発明の好適な実施例を添付図面に基づいて詳細に説明する。なお、以下に述べる実施例は、本発明の好適な実施例であるので、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明によって不当に限定されるものではなく、また、本実施の形態で説明される構成の全てが本発明の必須の構成要件ではない。
【実施例1】
【0016】
図1〜図4は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の第1実施例を示す図であり、図1は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の第1実施例を適用した複合装置1の要部ブロック構成図である。
【0017】
図1において、複合装置1は、コントローラ100、スキャナ画像処理部200、スキャナ部300、プロッタ画像処理部400、プロッタ部500、解像度変換画像処理部600及び図示しないファクシミリ通信部、ネットワーク通信部、操作表示部等を備えている。ファクシミリ通信部は、複合装置1に接続されている公衆電話回線等のファクシミリ通信可能な通信回線を介してファクシミリ受信及びファクシミリ送信を行い、ネットワーク通信部は、専用線やLAN(Local Area Network)等のネットワークを介して接続されたコンピュータ等のホスト装置と通信してスキャナ部300で読み取った画像データの送信及び該ホスト装置からのデータの受信処理を行う。操作表示部は、テンキーやスタートキー等の複合装置1の操作を行うのに必要な各種操作キーを備えるとともに、複合装置1から操作者に通知する各種情報を表示するディスプレイ(例えば、液晶ディスプレイ)を備えている。
【0018】
スキャナ部300は、例えば、CCD(Charge Coupled Device)を利用したラインイメージセンサ等が用いられており、一般にADF(Auto Document Feeder)を備えている。ADFには、複数枚の原稿がセットされ、ADFは、セットされた原稿を1枚ずつスキャナ部300の原稿読取位置に送給する。スキャナ部300は、ADFから搬送されてきた原稿を走査し、原稿の画像を所定の解像度で読み取ってスキャナ画像処理部200に出力する。
【0019】
プロッタ部500は、プロッタ画像処理部400から渡されるシアン(C)、マゼンタ(M)、イエロー(Y)、ブラック(K)等の画像データに基づいて所定の印刷方式、例えば、電子写真方式やインク噴射方式等によって画像を用紙に記録出力する。
【0020】
スキャナ画像処理部200は、例えば、ASIC(Application Specific Integrated Circuit)等で構成され、スキャナ特性補正部201及びデータ送信部202等を備えている。スキャナ特性補正部201は、スキャナ部300から入力される原稿の読み取り画像データに対してスキャナ特性の補正等の画像処理(例えば、シェーディング補正処理等)を施してデータ送信部202に渡す。
【0021】
データ送信部202は、スキャナ特性補正部201の処理した画像データをコントローラ100に送信する。
【0022】
コントローラ100は、CPU(Central Processing Unit )101、メインメモリ102、データ受信部103、データ送信部104及びデータ送受信部105等を備えており、各部は、バス106に接続されている。
【0023】
メインメモリ102は、複合装置1の基本プログラムや本発明のデータ通信制御方法を実行するデータ通信制御プログラム及び必要なシステムデータを格納するとともに、画像データを一時保管する。
【0024】
CPU101は、メインメモリ102内のプログラムに基づいて複合装置1の各部を制御して、複合装置1としての基本処理を実行するとともに、本発明のデータ通信制御処理を実行する。
【0025】
データ受信部103は、スキャナ画像処理部200のデータ送信部202とPCIeバス2によって接続されており、データ送信部202からPCIe転送によって画像データを受信する。なお、データ送信部202とデータ受信部103とのデータ通信については、後で詳細に説明する。
【0026】
データ送信部104は、プロッタ画像処理部400とPCIeバス3によって接続されており、プロッタ画像処理部400は、データ受信部401及び出力処理部402等を備えている。データ送信部104は、データ受信部401とPCIeバス3によって接続されており、CPU101の制御下で、メインメモリ102内の画像データをPCIeバス3を通してプロッタ画像処理部400のデータ受信部401に転送する。プロッタ画像処理部400は、データ受信部401の受信した画像データに対して、出力処理部402でプロッタ出力に必要な画像処理を行ってプロッタ部500に出力する。
【0027】
データ送受信部105は、解像度変換画像処理部600とPCIeバス4によって接続されており、解像度変換画像処理部600は、データ送受信部601を備えている。データ送受信部105は、データ送受信部601とPCIeバス4によって接続されており、CPU101の制御下で、メインメモリ102内の画像データをデータ送受信部601に送信し、また、データ送受信部601から処理済みの画像データを受信する。解像度変換画像処理部600は、データ送受信部601が受信した画像データに解像度変換処理、回転処理等の画像処理を、必要で有ればメインメモリ102を使用して実行し、画像処理後の画像データをデータ送受信部601からPCIeバス4を介してデータ送受信部105に転送する。CPU101は、データ送受信部105が解像度変換画像処理部600から受け取った画像データをメインメモリ102に格納する。
【0028】
すなわち、システム101は、メインメモリ102に保存された画像データを、データ送受信部105、PCIeバス4及びデータ送受信部601を介して解像度変換画像処理部600に送って、解像度変換画像処理部600にγ補正処理や解像度変換処理等を行わせた後、データ送信部104、PCIeバス3及びデータ受信部401を介してプロッタ画像処理部400からプロッタ部500に出力され、また、ファクシミリ送信やデータ転送に供される。コントローラ100は、上記画像回転や解像度変換、画像圧縮、画像伸長等を行う過程で、メインメモリ102を画像データの一次保存領域として利用し、また、これらの画像処理を行うデバイスの起動タイミングや処理パラメータの設定等をCPU101が行う。
【0029】
そして、上記コントローラ100のデータ受信部103及びスキャナ画像処理部200のデータ送信部202は、図2に示すようにブロック構成されている。データ送信部202は、データ分割制御部211及びPCIeエンドポイント(PCI Express End Point)212等を備えており、コントローラ100のデータ受信部103は、PCIeルートコンプレックス(PCI Express Root Complex)111及びデータ選択制御部112等を備えている。データ送信部202及びデータ受信部103は、PCIeエンドポイント212及びPCIeルートコンプレックス111が、それぞれ対となる2つのリンクLaとリンクLbを備えることで、PCIeバス2を同時に同じデータを転送可能な2組のPCIeバス2a及びPCIeバス2bに分割して、同じデータを同期して転送するのに利用する。
【0030】
データ分割制御部211は、スキャナ部300から入力されスキャナ特性補正部201で画像処理された画像データを全く同じ2つの画像データに多重化して、それぞれ内部データバスBa及び内部データバスBbを経由して、PCIeエンドポイント212のリンクLaとリンクLbに転送する。
【0031】
PCIeエンドポイント212のリンクLaとリンクLbは、PCIeルートコンプレックス111のリンクLaとリンクLbにそれぞれPCIeバス2aとPCIeバス2bによって接続され、データ分割制御部211から受け取った画像データをPCIeバス2a、2bを介してPCIeルートコンプレックス111のリンクLa及びリンクLbに転送する。
【0032】
PCIeルートコンプレックス111のリンクLa、Lbは、それぞれ受信した画像データを内部データバスBa、Bbを通してデータ選択制御部112に送り、データ選択制御部112は、リンクLaとリンクLbから入力される画像データのうち、パケット転送エラーの発生していない画像データを選択してコントローラ100の内部デバイス(例えば、メインメモリ102)に転送する。
【0033】
データ受信部103のPCIeルートコンプレックス111のリンクLa及びリンクLbは、パケット転送時にビット化け等のエラーが発生すると、10ビット/8ビット変換エラーやランニングディスパリティエラー等として検知し、パケット転送エラー通知をデータ制御部112に行うとともに、PCIeバス2a、2bを介して送信側のPCIeエンドポイント212のリンクLa、LbにNAK信号を送ってパケット転送エラーが発生したことを通知する。すなわち、PCIe転送においては、データ送信側であるデータ送信部202では、パケット転送エラーを認識するまでに遅延が発生することとなるが、データ受信側であるデータ受信部103は、受け取ったデータをデコードすることで、速やかにパケット転送エラーの発生を検知することができる。したがって、リンクLa、Lbを有するPCIeルートコンプレックス111及びリンクLa、Lbを有するPCIeエンドポイント212は、全体として通信手段として機能し、また、エラー検出手段として機能する。
【0034】
データ選択制御部112は、図3に示すように、データセレクタ121及びデータ選択部122等を備えており、データセレクタ121には、PCIeルートコンプレックス111のリンクLa、Lbからそれぞれ内部データバスBa、Bbによって画像データが送られてくる。
【0035】
データセレクタ(データ選択手段)121は、同じ画像データがほぼ同タイミングで転送されてくる内部データバスBaと内部データバスBbのデータの同期を常に取って、データ選択部122からデータ選択指示が通知されると、そのデータ選択指示に従って画像データの整合性を保ったまま内部データバスBa、Bbの切り替えを行う。データセレクタ121は、一度データ選択指示を受け取って内部データバスBa、Bbを切り替えると、その後は内部データバスBaと内部データバスBbのデータの同期を取らず、選択した内部データバスBa、Bbの画像データのみをコントローラ100の内部デバイスに転送する。
【0036】
このデータセレクタ121におけるデータ同期の取り方としては、種々の方法を用いることができる。例えば、内部データバスBaと内部データバスBbのデータが揃ってからどちらかのデータを後段(内部デバイス)に転送する方法を用いることができ、この方法では、データが揃うのを待つため、先にデータが到達した内部データバスBa、Bb側に対して、他方の内部データバスBa、Bbから同じデータが転送されるまで待たせるのに、データセレクタ121が内部バッファを設けて、リンクLaとリンクLbのデータ通信速度差を吸収する。また、データセレクタ121におけるデータ同期の取り方としては、例えば、内部データバスBaと内部データバスBbのうち、先にデータを転送してきた内部データバスBa、Bbのデータを後段に転送し、内部データバスBaと内部データバスBbのデータ受信量の差をカウンタ等で常に記録する方法を用いることができる。この方法では、常に転送量の差分を記録・更新して管理するため、データセレクタ121内部にデータバッファを持つ必要が無く、回路規模が小さくなるというメリットがある。なお、この場合、PCIeバス2a、2bでパケット転送エラーの発生した画像データは、後で再送されるため、画像データの内容は保証されるが、再送オーバーヘッドによるリンクLaリンクLbの間のデータ通信速度差は発生することはあっても、両方のPCIeバス2a、2bの間でデータ内容が異なることはなく、このように、転送されてきたデータを先に後段に送ってしまっても、異常画像となることはない。
【0037】
データ選択部(バス選択手段)122は、データ選択指示をデータセレクタ121に出力してデータセレクタ121に内部データバスBa、Bbのいずれか一方を選択させる。また、データ選択部122は、CPU101によって内部データバスBa、Bbのうちいずれか一方の内部データバスBa、Bbが初期データバスとして指定され、初期状態として、CPU101によって指定されている初期データバスをデータセレクタ121にデータ選択指示によって選択させる。
【0038】
データ選択部122には、上述のように、リンクLa、Lbからパケット転送エラー通知が入力され、データ選択部122は、リンクLa、Lbのいずれかからパケット転送エラー通知が入力されると、パケット転送エラーの発生していない方のリンクLa、Lbに接続されている内部データバスBa、Bbを選択させるデータ選択指示をデータセレクタ121に出力する。
【0039】
すなわち、複合装置1は、スキャナ画像処理部200とコントローラ100のデータ受信部103とのデータ通信においては、スキャナ画像処理部200のデータ送信部202がPCIeエンドポイント212を、コントローラ100のデータ受信部103がPCIeルートコンプレックス111を、それぞれ備え、PCIeエンドポイント212とPCIeルートコンプレックス111に2つのリンクLa、Lbを設けて、各リンクLa、Lb間をそれぞれ2レーンのPCIeバス2aとPCIeバス2bで接続して、データの多重転送(多重通信)を行う。
【0040】
そして、複合装置1は、コントローラ100のデータ送信部104とプロッタ画像処理部400のデータ受信部401との画像データの転送及びコントローラ100のデータ送受信部105と解像度変換画像処理部600のデータ送受信部601のPCIeバス3及びPCIeバス4を利用したデータ通信についても、詳細は説明しないが、上記コントローラ100のデータ受信部103とスキャナ画像処理部200のデータ送信部202とのデータ通信と同様に、2レーンのPCIeバス3、4によってデータの多重転送を行う。
【0041】
なお、複合装置1は、ROM、EEPROM(Electrically Erasable and Programmable Read Only Memory )、EPROM、フラッシュメモリ、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory )、CD−RW(Compact Disc Rewritable )、DVD(Digital Video Disk)、SD(Secure Digital)カード、MO(Magneto-Optical Disc)等のコンピュータが読み取り可能な記録媒体に記録されている本発明のデータ通信制御方法を実行するデータ通信制御プログラムを読み込んでメインメモリ102等に導入することで、後述するデータを効率的にかつ高速に転送するデータ通信制御方法を実行するデータ通信装置である複合装置1として構築されている。このデータ通信制御プログラムは、アセンブラ、C、C++、C#、Java(登録商標)等のレガシープログラミング言語やオブジェクト指向ブログラミング言語等で記述されたコンピュータ実行可能なプログラムであり、上記記録媒体に格納して頒布することができる。
【0042】
次に、本実施例の作用を説明する。本実施例の複合装置1は、PCIeバス2、3、4を複数に分割して同じ画像データを多重転送する。なお、以下の説明では、スキャナ画像処理部200とコントローラ100のデータ受信部103との間のPCIeバス2を利用したデータ通信について説明するが、データ送信部104とプロッタ画像処理部400及びデータ送受信部105と解像度変換画像処理部600との間のデータ通信も同様である。
【0043】
すなわち、複合装置1は、スキャナ画像処理部200のデータ送信部202がPCIeエンドポイント212を備え、コントローラ100のデータ受信部103がPCIeルートコンプレックス111を備えている。そして、PCIeエンドポイント212とPCIeルートコンプレックス111は、それぞれ2つのリンクLa、Lbを備え、各リンクLa、Lb間が、それぞれ2レーンのPCIeバス2aとPCIeバス2bで接続されていて、データの多重転送を行う。
【0044】
そして、このデータの多重転送において、データ受信側のデータ受信部103は、図4に示すようにデータ通信制御処理を行う。この場合、ハードウェアで実装される場合は、ソフトウェアで実行する場合のようにシーケンシャルに動作処理が行われるわけではないが、説明を明確にするために、図4では、シーケンシャルに記述している。
【0045】
すなわち、複合装置1は、コントローラ100のCPU101が、スキャナ画像処理に必要なパラメータを設定してスキャナ部300による画像読み取りタイミングと同期して、スキャナ画像処理部200からメインメモリ102に画像データを書き込むDMAC(Direct Memory Access Controller :DMAコントローラ)(図示略)を起動すると(ステップS101)、データ通信を開始し(ステップS102)、データセレクタ121が、同じ画像データがほぼ同じタイミングで転送されてくる内部データバスBaと内部データバスBbのデータの同期を常に取って、データ選択部122から初期設定リンクとして指示されているリンクLa、Lbに接続されている内部データバスBa、Bbからの画像データを選択して内部デバイスであるメインメモリ102に転送する(ステップS103)。すなわち、初期設定リンクLa、Lbに接続されているPCIeバス2a、2bをデータ採用通信バスとして、該データ通信バスであるPCIeバス2a、2bを通して送られてきたデータを内部デバイス(後段)に転送する。
【0046】
データ受信部103は、データ選択制御部112によって、1ページ分の画像データの転送が完了したかチェックし(ステップS104)、1ページ分の画像データの転送が完了していないときには、リンクLaまたはリンクLb(PCIeバス2aまたはPCIeバス2b)に転送エラーが発生したかチェックする(ステップS105)。すなわち、パケット転送エラーが発生したことをリンクLa、Lbが検知すると、リンクLa、Lbは、パケット転送エラー通知をデータ受信部103に行い、データ受信部103は、このパケット転送エラー通知がリンクLa、Lbからあるか否かによって転送エラーが発生したか否かチェックする。データ受信部103は、ステップS105で、リンクLa、Lbにパケット転送エラーが発生していないときには、ステップS104に戻って、1ページ分のデータ通信が完了したかのチェックから上記同様に処理を行う(ステップS104、S105)。
【0047】
データ受信部103は、ステップS104で、パケット転送エラーが発生することなく、1ページ分の画像データの転送が完了すると、データ通信制御処理を終了する。データ受信部103は、ステップS104で、1ページ分の転送が完了する前に、ステップS105で、リンクLaまたはリンクLbでパケット転送エラーが発生すると、パケット転送エラーがリンクLaで発生したのかリンクLbで発生したのかを確認する(ステップS106)。
【0048】
ステップS106で、リンクLaでパケット転送エラーが発生していると、データ受信部103は、データ選択部122によってパケット転送エラーの発生していない方のリンクLb(PCIeバス2b)からのデータの選択を指示するデータ選択指示をデータセレクタ121に通知するとともに、CPU101にパケット転送エラーが発生したことを通知するエラー割り込みを発生させる(ステップS107)。
【0049】
データセレクタ121は、データ選択部122からリンクLb側、すなわち、内部データバスBbからのデータを選択するようにとのデータ選択指示があると、該データ選択指示で指示されたリンクLb側である内部データバスBbからの画像データを選択して内部データバスを介して内部デバイスであるメインメモリ102へのデータ転送を開始するとともに、以降、リンクLaとリンクLbからのデータの同期、すなわち、内部データバスBaからの画像データと内部データバスBbからの画像データの同期を取ることを解除して、パケット転送エラーによる再送動作のオーバーヘッドによって遅延の生じるPCIeバス2a(リンクLa)からのデータを待たずに、選択された内部データバスBbのデータをそのまま後段の内部デバイスであるメインメモリ102に転送するように制御して、1ページ分の画像データの転送を行う(ステップS108)。すなわち、データセレクタ121は、内部データバスBaと内部データバスBbのデータの同期を取ることで、データバスBa、Bbの切り替えによるデータの欠損や冗長等が発生しないようバス切り替えを行い、バス切り替えを行うと、内部データバスBaと内部データバスBbのデータの同期を止めて、パケット転送エラーによる再送動作のオーバーヘッドによって遅延の生じるバス(いまの場合、内部データバスBa)からのデータを待たずに、選択された内部データバスBa、Bb(いまの場合、内部データバスBb)のデータをそのまま後段の内部デバイスであるメインメモリ102に流す。
【0050】
ステップS106で、リンクLbでパケット転送エラーが発生していると、データ受信部103は、データ選択部122によってパケット転送エラーの発生していない方のリンクLaからのデータの選択を指示するデータ選択指示をデータセレクタ121に通知するとともに、CPU101にパケット転送エラーが発生したことを通知するエラー割り込みを発生させる(ステップS109)。
【0051】
データセレクタ121は、データ選択部122からリンクLa側、すなわち、内部データバスBaからのデータを選択するようにとのデータ選択指示があると、該データ選択指示で指示されたリンクLa側である内部データバスBaからの画像データを選択して内部データバスを介して内部デバイスであるメインメモリ102への転送を開始するとともに、以降、リンクLaからのデータとリンクLbからのデータの同期、すなわち、内部データバスBaからの画像データと内部データバスBbからの画像データの同期を取ることを解除して、パケット転送エラーによる再送動作のオーバーヘッドによって遅延の生じるPCIeバス2b(リンクLb)からのデータを待たずに、選択された内部データバスBaのデータをそのまま後段の内部デバイスであるメインメモリ102に転送するように制御して、1ページ分の画像データの転送を行う(ステップS110)。
【0052】
なお、上記説明では、スキャナ画像処理部200とコントローラのデータ受信部103との間のデータ通信について説明したが、データ送信部104とプロッタ画像処理部400との間及びデータ送受信部105と解像度変換画像処理部600との間のデータ通信についても同様に処理することができる。
【0053】
また、上記説明では、PCIe2〜4を多重化する場合の多重化の数については、上記の場合のように2つに限定されるものではない。
【0054】
さらに、データ通信方法としては、例えば、2つの異なるDMACにメモリアドレスやデータサイズ等について同じパラメータの設定を行い、2つのDMA転送が同時に動作する方法でもよい。この場合、DMACがデータ送信側に存在してデータ受信側にライト動作を行うことでデータを転送してもよいし、データ受信側にDMACが存在してデータ送信側からリード動作を行うことでデータ通信を行ってもよい。
【0055】
このように、本実施例の複合装置1は、PCIeバス2を複数の多重通信バスであるPCIeバス2a、2bに分割して各PCIeバス2a、2bを利用して同じデータを同期を取りながら通信して、所定のPCIeバス2a、2bをデータ採用通信バスとして該データ採用通信バスであるPCIeバス2a、2bのデータを後段の内部デバイス(例えば、メインメモリ102)に転送するに際して、該PCIeバス2a、2bにおける通信エラーの発生の有無を検出して、通信エラーが未検出のときには、任意のPCIeバス2a、2bをデータ採用通信バスとするとともに、通信エラーが検出されると、該通信エラーの発生したPCIeバス2a、2bのデータとの同期を取ったデータ通信を停止して通信エラー未発生のPCIeバス2a、2bのみによるデータ通信を行って、該通信エラー未発生のPCIeバス2a、2bの1つをデータ採用通信バスとしている。
【0056】
したがって、多重化されたPCIe2a、2bのいずれかでパケット転送エラーが発生して再送動作によるオーバーヘッドが発生した場合であっても、残りのデータバス2a、2bからのデータを後段モジュールに供給することができ、PCIeの同期転送制約を遵守して、異常画像が発生することを防止することができる。
【0057】
すなわち、PCIeバス2のような高速シリアルバスでは、特定の確率でビット化けによるパケット転送にエラーが発生するが、PCIeの規格では、ビット化けによるパケット転送エラーが発生した場合には、再送(リトライ)を行い、データを保証することとなっている。ところが、再送が発生すると、再送動作を行うための一定のオーバーヘッドがかかり、一時的にデータ通信がストップする。
【0058】
一方、プロッタやスキャナのようなデータに対して所定周期で動作するエンジンは、画像データのライン周期毎に確実にデータ転送を行わなないと、異常画像が発生する。
【0059】
従って、データ通信速度に対する要求が高い高速機では、特に、PCIeバス2に要求されるデータの同期転送の制約も厳しくなり、PCIeバス2上で再送が発生しただけで、そのオーバーヘッドにより異常画像が発生してしまうことがある。
【0060】
ところが、本実施例の複合装置1は、PCIeバス2を、PCIeバス2aとPCIeバス2bに多重化して同期させてデータ転送しているので、いずれかのPCIeバス2a、2bにパケット転送エラーによる再送が発生した場合においても、データ通信速度を保証し、異常画像の発生を防止することができる。そして、PCIe規格によれば、パケット転送エラーは、10の−12乗以下の確率での発生であれば、認められているが、そのような確率であれば1ページのデータ通信を行う間に2つのPCIeバス2a、2bが両方ともパケット転送エラーを発生する確率は非常に低く、2重転送を行うPCIeバス2a、2bによって転送効率を向上させることができる。
【0061】
また、本実施例においては、データの受信側での処理のみで、エラー発生時のデータ処理を行うことができるため、複数のリンクで接続可能なインターフェイスを持った汎用のチップセットをデータ送信側に用いても適切に処理を行うことができる。
【実施例2】
【0062】
図5及び図6は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の第2実施例を示す図であり、図5は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の第2実施例を適用した複合装置1のスキャナ画像処理部200のデータ送信部202の詳細なブロック構成図である。
【0063】
なお、本実施例は、上記第1実施例の複合装置1と同様の複合装置に適用したものであり、本実施例の説明においては、上記第1実施例と同様の構成部分には、同一の符号を付して、その詳細な説明を省略するとともに、図示しない部分についても、必要に応じて第1実施例の説明で用いた符号をそのまま用いて説明する。
【0064】
複合装置1は、第1実施例の複合装置1と同様に、コントローラ100、スキャナ画像処理部200、スキャナ部300、プロッタ画像処理部400、プロッタ部500、解像度変換画像処理部600及び図示しないファクシミリ通信部、ネットワーク通信部、操作表示部等を備えている。そして、複合装置1は、図1に示したように、スキャナ画像処理部200が、スキャナ特性補正部201及びデータ送信部202等を、プロッタ画像処理部400が、データ受信部401と出力処理部402等を、解像度変換画像処理部600が備えており、コントローラ100が、CPU101、メインメモリ102、データ受信部103、データ送受信部104及びデータ送受信部105等を備えている。
【0065】
そして、本実施例の複合装置1は、第1実施例の場合と同様に、スキャナ画像処理部300からデータ受信部103へのPCIeバス2を用いた画像データの転送、データ送受信部104からプロッタ画像処理部400へのPCIeバス3を用いた画像データの転送及びデータ送受信部105と解像度変換画像処理部600とのPCIeバス4を用いた画像データの転送において、各PCIeバス2〜4をそれぞれ複数のバスに分割した多重転送を行う。
【0066】
そして、本実施例の複合装置1においては、画像データの送信側が、画像データの多重転送において、パケットデータ通信にエラーの発生したリンクによる画像データの送信を停止させる。
【0067】
以下、スキャナ画像処理部200とコントローラ100のデータ受信部103との間のデータ通信の場合について、図5及び図6を用いて説明するが、データ送受信部104からプロッタ画像処理部400へのPCIeバス3を用いた画像データの転送及びデータ送受信部105と解像度変換画像処理部600とのPCIeバス4を用いた画像データの転送についても同様である。
【0068】
図5は、スキャナ画像処理部200のデータ分割制御部211の詳細なブロック構成を示しており、スキャナ画像処理部200は、上述のように、スキャナ特性補正部201とデータ送信部202を備えているが、このデータ送信部202は、図5に示すように、データ分割制御部211とPCIeエンドポイント212等を備えている。
【0069】
PCIeエンドポイント212は、2つのリンクLaとリンクLbを備えており、PCIeエンドポイント212のリンクLaとリンクLbは、第1実施例のデータ受信部103のPCIeルートコンプレックス111のリンクLaとリンクLbがそれぞれ対となることで、PCIeバス2を同時に同じデータを転送可能な2組のPCIeバス2a及びPCIeバス2bとして利用する。
【0070】
データ分割制御部211は、スキャナ特性補正部201からの内部データバスDBを、内部データバスBaと内部データバスBbの2つに分離して、同じデータを同時にリンクLaとリンクLbに供給する。
【0071】
データ分割制御部211は、この内部データバスBaと内部データバスBbの途中に、通信停止手段としてのデータ停止部221aとデータ停止部221bがそれぞれ配設されており、データ停止部221a及びデータ停止部221bは、リンクLa及びリンクLbからパケット転送エラー通知が入力される。
【0072】
すなわち、第1実施例において説明したように、データ受信部103のPCIeルートコンプレックス111のリンクLa及びリンクLbは、パケット転送時にビット化け等のエラーが発生すると、10ビット/8ビット変換エラーやランニングディスパリティエラー等として検知し、パケット転送エラー通知をデータ制御部112に行うとともに、PCIeバス2a、2bを介して送信側のPCIeエンドポイント212のリンクLa、LbにNAK信号を送ってパケット転送エラーが発生したことを通知する。
【0073】
PCIeエンドポイント212のリンクLaとリンクLbは、それぞれ内部データバスBaと内部データバスBbからの画像データをPCIeバス2aとPCIeバス2bを経由させてデータ受信部103のPCIeルートコンプレックス111のリンクLa及びリンクLbに送信し、また、PCIeルートコンプレックス111のリンクLa及びリンクLbからPCIeバス2a、2bを通してパケット転送エラーを受け取ると、パケット転送エラー通知をデータ休止部221a及びデータ休止部221bに出力する。
【0074】
そして、データ休止部221a及びデータ休止部221bは、リンクLa及びリンクLbからパケット転送エラー通知が入力されない間は、内部データバスBa及び内部データバスBbをリンクLa及びリンクLbに接続して各内部データバスBa及び内部データバスBbを流れる画像データをリンクLa及びリンクLbに渡し、パケット転送エラー通知がリンクLaまたはリンクLbから入ると、パケット転送エラー通知の入った方のデータ休止部221aまたはデータ休止部221bが、自己の接続されている内部データバスBaまたは内部データバスBbを遮断してリンクLaまたはリンクLbへの画像データの供給を停止する。
【0075】
次に、本実施例の作用を説明する。本実施例の複合装置1は、PCIeバス2〜4において複数のリンクでデータの多重転送を行うが、パケット転送エラーが発生した場合には、図6に示すように、送信側からのエラーの発生したリンクによるデータ通信を停止する。
【0076】
なお、このデータの多重転送において、データ送信側のデータ送信部202は、図6に示すようにデータ通信制御処理を行う。この場合、第1実施例の場合と同様に、ハードウェアで実装される場合は、ソフトウェアで実行する場合のようにシーケンシャルに動作処理が行われるわけではないが、説明を明確にするために、図6では、シーケンシャルに記述している。
【0077】
すなわち、複合装置1は、コントローラ100のCPU101が、スキャナ画像処理に必要なパラメータを設定してスキャナ部300による画像読み取りタイミングと同期して、スキャナ画像処理部200からメインメモリ102に画像データを書き込むDMACを起動すると(ステップS201)、データ通信を開始し、データ停止部221a及びデータ停止部221bがオンとなって、内部データバスBa及び内部データバスBbを通して送られてくる画像データを、PCIeエンドポイント212のそれぞれリンクLa及びリンクLbからPCIeバス2a及びPCIeバス2bを通してコントローラ100側に転送する(ステップS202)。
【0078】
複合装置1は、1ページ分の画像データの転送が完了したかチェックし(ステップS203)、1ページ分の画像データの転送が完了していないときには、リンクLaまたはリンクLb(PCIeバス2aまたはPCIeバス2b)に転送エラーが発生したかチェックする(ステップS204)。すなわち、パケット転送エラーが発生したことを受信側のリンクLa、Lbが検知すると、該受信側のリンクLa、LbからPCIeバス2a、2bを通して送信側のリンクLa、Lbにパケット転送エラーが発生したことを示すNAK信号が送られ、送信側のリンクLa、Lbは、NAK信号が送られてくると、対応するデータ休止部221a、221bにパケット転送エラー通知を行うため、データ分割制御部211は、データ休止部221a、221bに、このパケット転送エラー通知が送られてきたかチェックする。
【0079】
データ分割制御部211は、ステップS204で、リンクLa、Lbにパケット転送エラーが発生していないときには、ステップS203に戻って、1ページ分のデータ通信が完了したかのチェックから上記同様に処理を行う(ステップS203、S204)。
【0080】
データ分割制御部211は、ステップS203で、パケット転送エラーが発生することなく、1ページ分の画像データの転送が完了すると、データ通信制御処理を終了する。データ分割制御部211は、ステップS203で、1ページ分のデータ転送が完了する前に、ステップS204で、リンクLaまたはリンクLbでパケット転送エラーが発生すると、転送エラーがリンクLaで発生したのかリンクLbで発生したのかをリンクLa、Lbのいずれがデータ受信側からのNAK信号を受信して、パケット転送エラー通知をデータ休止部221a、221bのいずれに行ったかによって確認する(ステップS205)。
【0081】
ステップS205で、リンクLaでパケット転送エラーが発生していると、データ停止部221aが内部データバスBaを閉鎖して、リンクLaへの画像データの転送を停止し、リンクLaによるコントローラ100側へのPCIeバス2aを利用した画像データの転送を停止するとともに、CPU101にパケット転送エラーが発生したことを通知するエラー割り込みを発生させる(ステップS206)。
【0082】
ステップS205で、リンクLbでパケット転送エラーが発生していると、データ停止部221bが内部データバスBbを閉鎖して、リンクLbへの画像データの転送を停止し、リンクLbによるコントローラ100側へのPCIeバス2bを利用した画像データの転送を停止するとともに、CPU101にパケット転送エラーが発生したことを通知するエラー割り込みを発生させる(ステップS207)。なお、受信側のデータ受信部103での処理は、第1実施例と同様である。
【0083】
このように、本実施例の複合装置1は、PCIe2a、2bで通信エラーが発生すると、該通信エラーの発生したPCIeバス2a、2bによるデータ通信を停止している。
【0084】
したがって、パケット転送エラーの発生したPCIeバス2a、2bによるデータ通信を中断することで、不要なデータ転送を中断することができる。
【0085】
すなわち、PCIeの規格によれば、受信側でパケット転送エラーを検知した場合は、送信側に対してNAK信号を送ってデータの再送を要求することとなっており、データ送信側は、このNAK信号によってパケット転送エラーが発生したことを認識することができる。そこで、本実施例の複合装置1は、このNAK信号を利用して、多重転送を行っているパケット転送において、パケット転送エラーが発生すると、該パケット転送エラーの発生したPCIeバス2a、2bによるデータ通信を停止している。
【0086】
そして、データ受信側であるコントローラ100は、上述のように、パケット転送エラー発生後、データセレクタ121がコントローラ100の内部デバイス(メインメモリ102等)に転送する画像データを、パケット転送エラーの発生していないリンクLa、Lbからの画像データに切り替えた後は、パケット転送エラーの発生したリンクLa、Lbを経由した画像データについては使用しないため、データ送信側であるスキャナ画像処理部200がパケット転送エラーの発生したリンクLa、Lbからの画像データを送信することで、処理の簡略化を向上させることができる。
【0087】
なお、本実施例のデータ通信方法としては、第1実施例の場合と同様に、2つの異なるDMACにメモリアドレスやデータサイズなどに関して同じパラメータ設定を行い、2つのDMA転送を同時に動作させる方法でもよく、この場合、パケット転送エラー検知を要因に割り込みを発生させて、CPU101がパケット転送エラーの発生したDMACを停止する方法を用いることができる。この場合、データ送信側に特別なハードウェアによる仕組みは必要なく、複数のリンクで接続可能なインターフェイスを持った汎用のチップセットを送信側に用いても実現が可能である。
【実施例3】
【0088】
図7〜図10は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の第3実施例を示す図であり、図7は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の第3実施例を適用した複合装置1におけるコントローラ100のデータ受信部103の詳細なブロック構成図、図8は、スキャナ画像処理部200のデータ送信部202の詳細なブロック構成図である。
【0089】
なお、本実施例は、上記第1実施例の複合装置1と同様の複合装置に適用したものであり、本実施例の説明においては、上記第1実施例と同様の構成部分には、同一の符号を付して、その詳細な説明を省略するとともに、図示しない部分についても、必要に応じて第1実施例の説明で用いた符号をそのまま用いて説明する。
【0090】
複合装置1は、第1実施例の複合装置1と同様に、コントローラ100、スキャナ画像処理部200、スキャナ部300、プロッタ画像処理部400、プロッタ部500、解像度変換画像処理部600及び図示しないファクシミリ通信部、ネットワーク通信部、操作表示部等を備えている。そして、複合装置1は、図1に示したように、スキャナ画像処理部200が、スキャナ特性補正部201及びデータ送信部202等を、プロッタ画像処理部400が、データ受信部401と出力処理部402等を、解像度変換画像処理部600が備えており、コントローラ100が、CPU101、メインメモリ102、データ受信部103、データ送受信部104及びデータ送受信部105等を備えている。
【0091】
本実施例の複合装置1は、第1実施例の場合と同様に、スキャナ画像処理部300からデータ受信部103へのPCIeバス2を用いた画像データの転送、データ送受信部104からプロッタ画像処理部400へのPCIeバス3を用いた画像データの転送及びデータ送受信部105と解像度変換画像処理部600とのPCIeバス4を用いた画像データの転送において、各PCIeバス2〜4をそれぞれ複数のバスに分割した多重転送を行う。
【0092】
そして、本実施例の複合装置1においては、画像データの送信側が、画像データの多重転送において、パケットデータ通信にエラーの発生したリンクによる画像データの送信を停止させるとともに、パケット転送エラー発生後も次のラインからライン毎に同期を取って画像データの多重転送を開始する。
【0093】
以下、スキャナ画像処理部200とコントローラ100のデータ受信部103との間のデータ通信の場合について、図7〜図10を用いて説明するが、データ送受信部104からプロッタ画像処理部400へのPCIeバス3を用いた画像データの転送及びデータ送受信部105と解像度変換画像処理部600とのPCIeバス4を用いた画像データの転送についても同様である。
【0094】
図7は、コントローラ100のデータ受信部103の詳細なブロック構成を示しており、データ受信部103は、上述のように、PCIeルートコンプレックス111とデータ選択制御部112を備えているが、このデータ選択制御部112が、図7に示すように、上記第1実施例と同様のデータセレクタ121とデータ選択部122を備えているとともに、ライン後端検知部123を備えている。
【0095】
ライン後端検知部(ライン後端検出手段)123は、内部データバスBaと内部データバスBbによって転送される画像データをモニターし、例えば、画像データの主走査データサイズと内部データバスBa及び内部データバスBbを通過した画像データの総転送サイズとから、画像データの各ラインの後端にあたるデータの転送を検知する。ライン後端検知部123は、各ラインの転送終了を検知すると、データ選択部122にライン同期信号を通知する。
【0096】
データ選択部122は、リンクLaとリンクLbからパケット転送エラー通知があると、転送エラーの発生していない方のリンクLa、Lbの内部データバスBa、Bbの選択を指示するデータ選択指示をデータセレクタ121に行う。また、ライン後端検知部123から通知されたライン同期信号に基づいて、データセレクタ121へのデータ選択指示を解除(リセット)し、データセレクタ121に対して再び内部データバスBaと内部データバスBbを流れるデータの同期を取るように指示する。
【0097】
データセレクタ121は、上記同様に、同じデータがほぼ同タイミングで転送されてくる内部データバスBaと内部データバスBb2のデータの同期を常に取り、データ選択部122からデータ選択指示が通知されると、その指示に従ってデータの整合性を保ったまま内部データバスBa、Bbの切り替えを行う。データセレクタ121は、一度データ選択指示を受けて、内部データバスBa、Bbを切り替えると、その後は内部データバス1Baと内部データバスBbのデータの同期を取らず、選択された内部データバスBa、Bbのデータのみをコントローラ100の内部デバイス(例えば、メインメモリ102)に転送するように動作する。さらに、データセレクタ121は、一旦、内部データバスBaと内部データバスBbのデータの同期を止めた後に、データ選択部122からデータ選択指示が解除されると、解除されたタイミング以降のデータに関しては、再び内部データバスBaと内部データバスBbのデータの同期を取るように動作し、再びデータ選択指示を受けるまで同期を取り続ける。
【0098】
図8は、スキャナ画像処理部200のデータ分割制御部211の詳細なブロック構成を示しており、スキャナ画像処理部200は、上述のように、スキャナ特性補正部201とデータ送信部202を備えているが、このデータ送信部202は、図8に示すように、データ分割制御部211とPCIeエンドポイント212等を備えている。
【0099】
PCIeエンドポイント212は、上記第1実施例及び第2実施例と同様に、2つのリンクLaとリンクLbを備えており、PCIeエンドポイント212のリンクLaとリンクLbは、第1実施例のデータ受信部103のPCIeルートコンプレックス111のリンクLaとリンクLbがそれぞれ対となることで、PCIeバス2を同時に同じデータを転送可能な2組のPCIeバス2a及びPCIeバス2bとして利用する。
【0100】
データ分割制御部211は、データ休止部221a、221b及びライン後端検知部222等を備えており、スキャナ特性補正部201から画像データが送られてくる内部データバスDBを、内部データバスBaと内部データバスBbの2つに分離して、全く同じデータを同時にリンクLaとリンクLbに供給する。
【0101】
データ分割制御部211は、この内部データバスBaと内部データバスBbの途中に、データ停止部221aとデータ停止部221bがそれぞれ配設されており、データ停止部221a及びデータ停止部221bには、リンクLa及びリンクLbからパケット転送エラー通知が入力される。
【0102】
PCIeエンドポイント212のリンクLaとリンクLbは、それぞれ内部データバスBaと内部データバスBbからの画像データをPCIeバス2aとPCIeバス2bを経由させてデータ受信部103のPCIeルートコンプレックス111のリンクLa及びリンクLbに送信し、また、PCIeルートコンプレックス111のリンクLa及びリンクLbからPCIeバス2a、2bを通してパケット転送エラーを受け取ると、パケット転送エラー通知をデータ休止部221a及びデータ休止部221bに出力する。
【0103】
ライン後端検知部(ライン後端検出手段)222は、内部データバスBaと内部データバスBbによって転送される画像データをモニターし、例えば、画像データの主走査データサイズと内部データバスBa及び内部データバスBbを通過した画像データの総転送サイズとから、画像データの各ラインの後端にあたるデータの転送を検知する。ライン後端検知部222は、各ラインの転送終了を検知すると、データ休止部221aとデータ休止部221bにライン同期信号を通知する。
【0104】
データ停止部221a及びデータ停止部221bは、内部データバスBa、Bbの画像データをリンクLa、Lbに転送するが、リンクLa、Lbからパケット転送エラー通知があると、パケット転送エラーの発生したPCIeバス2a、2bのリンクLa、Lbに画像データを供給する内部データバスBa、Bbのデータ通信を停止する。また、データ停止部221a及びデータ停止部221bは、パケット転送エラーを検知して一旦データ通信を中断した後に、ライン後端検知部222からライン同期信号を受け取ると、次のラインの先頭から内部データバスBa、Bbを開いてリンクLa、Lbへのデータ通信を再開する。
【0105】
次に、本実施例の作用を説明する。本実施例の複合装置1は、図9及び図10に示すように、パケット転送エラーの発生したPCIeバス2a、2bを利用したデータ通信を中断しても、次のラインから多重転送を再開する。
【0106】
なお、このデータの多重転送において、データ受信側のデータ受信部103及びデータ送信側のデータ送信部202は、図9及び図10に示すようにデータ通信制御処理を行う。この場合、上記実施例の場合と同様に、ハードウェアで実装される場合は、ソフトウェアで実行する場合のようにシーケンシャルに動作処理が行われるわけではないが、説明を明確にするために、図9及び図10では、シーケンシャルに記述している。
【0107】
すなわち、複合装置1は、図9に示すように、コントローラ100のCPU101が、スキャナ画像処理に必要なパラメータを設定してスキャナ部300による画像読み取りタイミングと同期して、スキャナ画像処理部200からメインメモリ102に画像データを書き込むDMACを起動すると(ステップS301)、データ通信を開始し(ステップS302)、データセレクタ121が、同じ画像データがほぼ同タイミングで転送されてくる内部データバスBaと内部データバスBbのデータの同期を常に取って、データ選択部122から初期設定リンクとして指示されているリンクLa、Lbに接続されている内部データバスBa、Bbからの画像データを選択して内部デバイスであるメインメモリ102に転送する(ステップS303)。
【0108】
データ受信部103は、データ選択制御部112によって、1ページ分の画像データの転送が完了したかチェックし(ステップS304)、1ページ分の画像データの転送が完了していないときには、リンクLaまたはリンクLbにパケット転送エラーが発生したかチェックする(ステップS305)。データ受信部103は、ステップS305で、リンクLa、Lbにパケット転送エラーが発生していないときには、ステップS303に戻って、データ受信を継続して、ステップS304で、1ページ分のデータ通信が完了したかのチェックを行い、ステップS305で、転送エラーが発生したかの処理を繰り返し行う(ステップS303〜S305)。パケット転送エラーについては、上述のように、データ受信部103では、PCIeルートコンプレックス111がパケット転送エラーの発生を検知してデータ選択部124にパケット転送エラー通知を行うとともにデータ送信側にPCIeバス2を通してNAK信号によってパケット転送エラーの発生を通知し、データ送信部202では、データ受信部103のPCIeルートコンプレックス111から通知されるパケット転送エラー通知をPCIeエンドポイント212が受け取ってデータ休止部222a、221bに渡す。
【0109】
データ受信部103は、ステップS304で、パケット転送エラーが発生することなく、1ページ分の画像データの転送が完了すると、データ通信制御処理を終了する。データ受信部103は、ステップS304で、1ページ分の転送が完了する前に、ステップS305で、リンクLaまたはリンクLbでパケット転送エラーが発生すると、転送エラーがリンクLaで発生したのかリンクLbで発生したのかを確認する(ステップS306)。
【0110】
ステップS306で、リンクLaでパケット転送エラーが発生していると、図10に示すように、データ送信側のデータ送信部202は、パケット転送エラーの発生したリンクLaに画像データを供給するデータ休止部221aを閉じてリンクLaのデータ通信を停止させ(ステップS307)、データ受信側のデータ受信部103は、データ選択部122が、パケット転送エラーの発生していない方のリンクLbからのデータの選択を指示するデータ選択指示をデータセレクタ121に通知するとともに、CPU101にパケット転送エラーが発生したことを通知するエラー割り込みを発生させ(ステップS308)、データセレクタ121が、データ選択部122からリンクLb側、すなわち、内部データバスBbからのデータを選択するようにとのデータ選択指示があると、該データ選択指示で指示されたリンクLb側である内部データバスBbからの画像データを選択して内部データバスを介して内部デバイスであるメインメモリ102への転送を開始して(ステップS309)、ライン後端検知部123及びライン後端検知部222が、ラインの後端を検知して、1ライン分のデータ通信が完了したかチェックする(ステップS310)。
【0111】
ステップS310で、1ライン分のデータ通信が完了していないときには、データセレクタ121は、ステップS309に戻って、リンクLb側である内部データバスBbからの画像データを選択して内部データバスを介して内部デバイスであるメインメモリ102への転送を継続して、1ライン分のデータ通信が完了したかチェックする処理を繰り返し行う(ステップS309、ステップS310)。
【0112】
ステップS310で、データ送信側のライン後端検知部222は、ラインの後端を検知して1ライン分のデータ通信が完了すると、データ停止部221aに対しライン同期信号を発生し、また、データ受信側のライン後端検知部123は、ラインの後端を検知するとデータ選択部122に対しライン同期信号を発生する。
【0113】
データ受信側のデータ選択部122が、データ選択指示を解除し(ステップS311)、データ送信側のデータ停止部221aが、停止していた内部データバスBa、すなわち、リンクLaのデータ通信を再開して(ステップS312)、ステップS303に戻り、2つのリンクLa、Lbからデータの同期を取りつつ、初期設定リンクからのデータを選択して転送を開始する処理から上記同様に処理する(ステップS303〜S312)。
【0114】
そして、図9のステップS305で、パケット転送エラーが発生して、ステップS306で、転送エラーがリンクLbで発生していると、図10に示すように、データ送信側のデータ送信部202は、パケット転送エラーの発生したリンクLbに画像データを供給するデータ休止部221bを閉じてリンクLbのデータ通信を停止させ(ステップS3313)、データ受信側のデータ受信部103は、データ選択部122が、パケット転送エラーの発生していない方のリンクLaからのデータの選択を指示するデータ選択指示をデータセレクタ121に通知するとともに、CPU101にパケット転送エラーが発生したことを通知するエラー割り込みを発生させる(ステップS314)。データセレクタ121は、データ選択部122からリンクLa側、すなわち、内部データバスBaからのデータを選択するようにとのデータ選択指示があると、該データ選択指示で指示されたリンクLa側である内部データバスBaからの画像データを選択して内部データバスを介して内部デバイスであるメインメモリ102への転送を開始して(ステップS315)、1ライン分のデータ通信が完了したかチェックする(ステップS316)。
【0115】
この場合、上記同様に、データセレクタ121は、内部データバスBaと内部データバスBbのデータの同期を取ることで、データバスBa、Bbの切り替えによるデータの欠損や冗長等が発生しないようバス切り替えを行い、バス切り替えを行うと、内部データバスBaと内部データバスBbのデータの同期を止めて、パケット転送エラーによる再送動作のオーバーヘッドによって遅延の生じるバス(いまの場合、内部データバスBa)からのデータを待たずに、選択された内部データバスBa、Bb(いまの場合、内部データバスBb)のデータをそのまま後段の内部デバイスであるメインメモリ102に流す。
【0116】
ステップS316で、1ライン分のデータ通信が完了していないときには、データセレクタ121は、ステップS315に戻って、リンクLa側である内部データバスBaからの画像データを選択して内部データバスを介して内部デバイスであるメインメモリ102への転送を継続して、1ライン分のデータ通信が完了したかチェックする処理を繰り返し行う(ステップS315、ステップS316)。
【0117】
ステップS315で、1ライン分のデータ通信が完了すると、データ受信側のデータ選択部122が、データ選択指示を解除し(ステップS317)、データ送信側のデータ停止部221aが停止していたデータ通信を再開して(ステップS318)、図9のステップS303に戻り、2つのリンクLa、Lbからデータの同期を取りつつ、初期設定リンクからのデータを選択して転送を開始する処理から上記同様に処理する(ステップS303〜S318)。
【0118】
上記処理を繰り返し行って、図9のステップS304で、データ通信が完了すると、複合装置1は、データ通信制御処理を終了する。
【0119】
このように、本実施例の複合装置1は、ライン単位で順次通信されるラインデータの後端を検出し、データ通信を停止した後に、該データ通信を停止したラインの後端を検出すると、該ライン後端検出タイミングに合わせて、停止していた該多重通信バスによるデータ通信を再開するとともに、データ通信を再開した多重通信バスであるPCIeバス2a、2bのデータを含めた全てのPCIeバス2a、2bにおけるデータの同期を取っている。
【0120】
したがって、一旦パケット転送エラーが発生して再送動作による遅延が発生し、データ通信が間に合わなくなったPCIeバス2a、2bも、ライン単位で再度同期をとることができ、1ページ内で2回以上のパケット転送エラーが発生した場合であっても、同期転送制約を守って、異常画像が発生することを防止することができる。
【0121】
すなわち、スキャナ部300のCCDによって読み込まれた画像データをライン同期で転送する場合、1ライン分の画像データをスキャナ部300から受け取った後、次のラインのデータがスキャナ部300から送られてくるまでに、データ転送の発生しない待機時間が発生する。この待機時間を利用して、転送エラーの発生したPCIeバス2a、2bと転送エラーの発生していないPCIeバス2a、2bとの間の画像データをライン単位で再同期させる。このように、ライン単位で同期を取った多重転送を再開することで、1ページの転送途中に2回以上のパケット転送エラーが発生しても、同一のライン内で2回エラーが発生しない限りは画像データのライン同期転送制約を守ることができる。
【実施例4】
【0122】
図11〜図14は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の第4実施例を示す図であり、図11は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の第4実施例を適用した複合装置1におけるコントローラ100のデータ受信部103の詳細なブロック構成図、図12は、第4実施例を適用した複合装置1におけるスキャナ画像処理部200のデータ送信部202の詳細なブロック構成図である。
【0123】
なお、本実施例は、上記第1実施例の複合装置1と同様の複合装置に適用したものであり、本実施例の説明においては、上記第1実施例と同様の構成部分には、同一の符号を付して、その詳細な説明を省略するとともに、図示しない部分についても、必要に応じて第1実施例の説明で用いた符号をそのまま用いて説明する。
【0124】
複合装置1は、第1実施例の複合装置1と同様に、コントローラ100、スキャナ画像処理部200、スキャナ部300、プロッタ画像処理部400、プロッタ部500、解像度変換画像処理部600及び図示しないファクシミリ通信部、ネットワーク通信部、操作表示部等を備えている。そして、複合装置1は、図1に示したように、スキャナ画像処理部200が、スキャナ特性補正部201及びデータ送信部202等を、プロッタ画像処理部400が、データ受信部401と出力処理部402等を、解像度変換画像処理部600が備えており、コントローラ100が、CPU101、メインメモリ102、データ受信部103、データ送受信部104及びデータ送受信部105等を備えている。
【0125】
本実施例の複合装置1は、第1実施例の場合と同様に、スキャナ画像処理部300からデータ受信部103へのPCIeバス2を用いた画像データの転送、データ送受信部104からプロッタ画像処理部400へのPCIeバス3を用いた画像データの転送及びデータ送受信部105と解像度変換画像処理部600とのPCIeバス4を用いた画像データの転送において、各PCIeバス2〜4をそれぞれ複数のバスに分割した多重転送を行う。
【0126】
そして、本実施例の複合装置1においては、画像データの送信側が、画像データの多重転送において、パケットデータ通信にエラーの発生したリンクによる画像データの通信を停止させるとともに、パケット転送エラー発生後、データの転送準備が完了すると、その後のラインの先頭から同期を取って画像データの多重転送を開始する。
【0127】
以下、スキャナ画像処理部200とコントローラ100のデータ受信部103との間のデータ通信の場合について、図11〜図14を用いて説明するが、データ送受信部104からプロッタ画像処理部400へのPCIeバス3を用いた画像データの転送及びデータ送受信部105と解像度変換画像処理部600とのPCIeバス4を用いた画像データの転送についても同様である。
【0128】
図11は、コントローラ100のデータ受信部103の詳細なブロック構成を示しており、データ受信部103は、上述のように、PCIeルートコンプレックス111とデータ選択制御部112を備えており、このデータ選択制御部112が、図11に示すように、上記第1実施例と同様のデータセレクタ121とデータ選択部122及び上記第3実施例と同様のライン後端検知部123を備えているとともに、ライン数計測部124及び転送再開ライン数受信部125等を備えている。
【0129】
ライン後端検知部123は、第3実施例と同様であり、内部データバスBaと内部データバスBbによって転送される画像データをモニターして、例えば、画像データの主走査データサイズと内部データバスBa及び内部データバスBbを通過した画像データの総転送サイズとから、画像データの各ラインの後端にあたるデータの転送を検知する。ライン後端検知部123は、各ラインの転送終了を検知すると、データ選択部122及びラインする計測部124にライン同期信号を通知する。
【0130】
ライン数計測部(ライン数計数手段)124は、ライン後端検知部123が発生するライン同期信号を計数して、転送中の画像データのライン数を把握し、データ選択部122に転送再開ライン数情報を出力する。
【0131】
また、転送再開ライン数受信部125は、PCIeバス2a、2bを経由してスキャナ画像処理部200のデータ送信部202から送られてきた転送再開ライン数情報を受信し、データ選択部122に転送再開ライン数を通知する。このPCIeバス2a、2bを経由して再開ライン数情報を転送する具体的な方法としては、例えば、ある特定のアドレスを、転送再開ライン数情報を受信するアドレスとして設定し、データ送信部202がそのアドレスにデータをライトした場合は、PCIeルートコンプレックス111は、内部データバスBa、Bbではなく、転送再開ライン数受信部125にデータを転送する方法等を用いることができる。
【0132】
データ選択部122は、上述のように、リンクLaとリンクLbから通知されるパケット転送エラーを検知し、エラーの発生していない内部データバスBa、Bbを選択するようデータセレクタ121に指示するが、ライン数計測部124から通知された転送ライン数と転送再開ライン数受信部125から通知された転送再開ライン数が「転送ライン数」−1=「転送再開ライン数」の関係になった状態で、次のライン同期信号をライン後端検知部123から受け取ると、データセレクタ121に対するデータ選択指示を解除し、データセレクタ121に対して再び内部データバスBaと内部データバスBbを流れる画像データの同期を取るように指示する。
【0133】
データセレクタ121は、上記同様に、同じデータがほぼ同タイミングで転送されてくる内部データバスBaと内部データバスBbのデータの同期を常に取り、データ選択部122からデータ選択指示が通知されると、その指示に従ってデータの整合性を保ったまま内部データバスBa、Bbの切り替えを行う。データセレクタ121は、一度データ選択指示を受けて、内部データバスBa、Bbを切り替えると、その後は内部データバス1Baと内部データバスBbのデータの同期を取らず、選択された内部データバスBa、Bbのデータのみをコントローラ100の内部デバイス(例えば、メインメモリ102)に転送するように動作する。さらに、データセレクタ121は、一旦、内部データバスBaと内部データバスBbのデータの同期を止めた後に、データ選択部122からデータ選択指示が解除されると、解除されたタイミング以降のデータに関しては、再び内部データバスBaと内部データバスBbのデータの同期を取るように動作し、再びデータ選択指示を受けるまで同期を取り続ける。
【0134】
一方、画像データ送信側であるスキャナ画像処理部200のデータ送信部202は、図12に示すように、上記データ分割制御部211及びPCIeエンドポイント212等を備えており、データ分割制御部211は、データ休止部221a、221b、ライン後端検知部222及びライン数計測部223等を備えている。このデータ分割制御部211は、スキャナ部300で読み取られスキャナ特性補正部201で画像処理された画像データが入力され、この画像データを全く同じデータのままPCIeエンドポイント212のリンクLaとリンクLbとにそれぞれ内部データバスBa及び内部データバスBbを経由させて転送する。
【0135】
ライン後端検知部222は、内部データバスBaと内部データバスBbによって転送される画像データをモニターし、例えば、画像データの主走査データサイズと内部データバスBa及び内部データバスBbを通過した画像の総転送サイズから、画像データの各ラインの後端にあたるデータの転送を検知する。ライン後端検知部222は、各ラインの転送終了を検知すると、ライン数計測部223及びデータ休止部221aとデータ休止部221bにライン同期信号を通知する。
【0136】
ライン数計測部(ライン数計数手段)223は、ライン後端検知部222から入力されるライン同期信号を計数して、転送中の画像データのライン数を把握し、データ停止部221aとデータ停止部221bに転送ライン数情報を入力する。
【0137】
データ停止部221a及びデータ停止部221bは、それぞれ内部データバスBa及び内部データバスBbに配置され、パケット転送エラー発生後に内部データバスBa及び内部データバスBbのうち、エラーが発生したPCIeバス2a、2bに画像データを供給する内部データバスBa、Bbのデータ通信を停止する。また、データ停止部221a及びデータ停止部221bは、パケット転送エラーを検知して一旦データ通信を中断した後に、データ通信を再開する準備が整うと、上記転送再開ライン数情報を、内部データバスBa、BbからPCIeバス2a、2bを経由してコントローラ100のデータ受信部103に転送し、その後に、ライン同期信号をライン後端検知部222から受け取ると、次のラインの先頭から内部データバスBa、Bbを開いてリンクLa、Lbへのデータ通信を再開する。
【0138】
PCIeエンドポイント212のリンクLaとリンクLbは、上記同様に、それぞれ内部データバスBaと内部データバスBbからの画像データをPCIeバス2aとPCIeバス2bを経由させてデータ受信部103のPCIeルートコンプレックス111のリンクLa及びリンクLbに送信し、また、PCIeルートコンプレックス111のリンクLa及びリンクLbからPCIeバス2a、2bを通してパケット転送エラーを受け取ると、パケット転送エラー通知をデータ休止部221a及びデータ休止部221bに出力する。
【0139】
次に、本実施例の作用を説明する。本実施例の複合装置1は、パケット転送エラーの発生したPCIeバス2a、2bを利用したデータ通信を中断した後に、図13及び図14に示すように、データの転送準備が整った次のラインから同期を取ったライン多重転送を再開する。
【0140】
なお、このデータの多重転送において、データ受信側のデータ受信部103及びデータ送信側のデータ送信部202は、図13及び図14に示すようにデータ通信制御処理を行うが、上記同様に、ハードウェアで実装される場合は、ソフトウェアで実行する場合のようにシーケンシャルに動作処理が行われるわけではないが、説明を明確にするために、図13及び図14では、シーケンシャルに記述している。
【0141】
すなわち、複合装置1は、コントローラ100のCPU101が、図13に示すように、スキャナ画像処理に必要なパラメータを設定してスキャナ部300による画像読み取りタイミングと同期して、スキャナ画像処理部200からメインメモリ102に画像データを書き込むDMACを起動すると(ステップS401)、データ通信を開始し(ステップS402)、データ受信側であるデータ受信部103のデータセレクタ121が、同じ画像データがほぼ同タイミングで転送されてくる内部データバスBaと内部データバスBbのデータの同期を常に取って、データ選択部122から初期設定リンクとして指示されているリンクLa、Lbに接続されている内部データバスBa、Bbからの画像データを選択して内部デバイスであるメインメモリ102に転送する(ステップS403)。
【0142】
データ受信部103は、データ選択制御部112によって、1ページ分の画像データの転送が完了したかチェックし(ステップS404)、1ページ分の画像データの転送が完了していないときには、リンクLaまたはリンクLbに転送エラーが発生したかチェックする(ステップS405)。データ受信部103は、ステップS405で、リンクLa、Lbにパケット転送エラーが発生していないときには、ステップS403に戻って、データ受信を継続して、ステップS404で、1ページ分のデータ通信が完了したかのチェックを行い、ステップS405で、転送エラーが発生したかの処理を繰り返し行う(ステップS403〜S405)。
【0143】
データ受信部103は、ステップS404で、パケット転送エラーが発生することなく、1ページ分の画像データの転送が完了すると、データ通信制御処理を終了する。データ受信部103は、ステップS404で、1ページ分の転送が完了する前に、ステップS405で、リンクLaまたはリンクLbでパケット転送エラーが発生すると、転送エラーがリンクLaで発生したのかリンクLbで発生したのかを確認する(ステップS406)。
【0144】
ステップS406で、リンクLaでパケット転送エラーが発生していると、データ送信側のデータ送信部202は、パケット転送エラーの発生したリンクLaに画像データを供給するデータ休止部221aを閉じてリンクLaのデータ通信を停止させ(ステップS407)、データ受信側のデータ受信部103は、データ選択部122が、パケット転送エラーの発生していない方のリンクLbからのデータの選択を指示するデータ選択指示をデータセレクタ121に通知するとともに、CPU101にパケット転送エラーが発生したことを通知するエラー割り込みを発生させ(ステップS408)、図14に示すように、データセレクタ121が、データ選択部122からリンクLb側、すなわち、内部データバスBbからのデータを選択するようにとのデータ選択指示があると、該データ選択指示で指示されたリンクLb側である内部データバスBbからの画像データを選択して内部データバスを介して内部デバイスであるメインメモリ102への転送を開始して(ステップS409)、ライン後端検知部123及びライン後端検知部222が、ラインの後端を検知して、1ライン分のデータ通信が完了したかチェックする(ステップS410)。
【0145】
ステップS410で、1ライン分のデータ通信が完了していないときには、データセレクタ121は、ステップS409に戻って、リンクLb側である内部データバスBbからの画像データを選択して内部データバスを介して内部デバイスであるメインメモリ102への転送を継続して、1ライン分のデータ通信が完了したかチェックする処理を繰り返し行う(ステップS409、ステップS410)。
【0146】
ステップS410で、データ送信側のライン後端検知部222が、ラインの後端を検知して1ライン分のデータ通信が完了すると、ライン数計測部223が、ライン後端検知部123が発生するライン同期信号を計数し、転送中の画像データのライン数を把握して、データ選択部122に転送再開ライン数情報を出力する。データ送信部202は、PCIeエンドポイント212のリンクLa、Lbを含めたデータ送信部202が再びデータを転送できる準備が整ったかチェックして(ステップS409)、転送準備が整っていないときには、ステップS409に戻って、データ通信再開の準備が整うまでデータ送信を再開することなく、上記同様の処理を行う(ステップS409〜S411)。
【0147】
ステップS411で、データ通信再開の準備が完了すると、データ停止部221aが、ライン数計測部223から転送再開ライン数情報を受け取ってリンクLa及びPCIeバス2を介してデータ受信部103のPCIeルートコンプレックス111に送信する(ステップS412)。
【0148】
受信側では、送信側から送られてきた転送再開ライン数情報をリンクLa、Lbが受け取って転送再開ライン数受信部125に通知し、転送再開ライン数受信部125が転送再開ライン数をデータ選択部122に通知する。また、データ選択部122は、ライン数計測部124からライン後端検知部123の検知したライン同期信号を計数した転送ライン数と転送再開ライン数との関係が、上述のように、「転送ライン数」−1=「転送再開ライン数」の関係になった状態で、次のライン同期信号をライン後端検知部123から受け取ると、データセレクタ121に対するデータ選択指示を解除し、データセレクタ121に対して再びリンクLaとリンクLb、すなわち、内部データバスBaと内部データバスBbを流れる画像データの同期を取るように指示する(ステップS413)。
【0149】
そして、データ送信側のデータ停止部221aが、停止していた内部データバスBa、すなわち、リンクLaのデータ通信を再開して(ステップS414)、図13に示すステップS403に戻り、2つのリンクLa、Lbからデータの同期を取りつつ、初期設定リンクからのデータを選択して転送を開始する処理から上記同様に処理する(ステップS403〜S414)。
【0150】
そして、図13のステップS405で、パケット転送エラーが発生して、ステップS406で、転送エラーがリンクLbで発生していると、データ送信側のデータ送信部202は、パケット転送エラーの発生したリンクLbに画像データを供給するデータ休止部221bを閉じてリンクLbのデータ通信を停止させ(ステップS415)、データ受信側のデータ受信部103は、データ選択部122が、パケット転送エラーの発生していない方のリンクLaからのデータの選択を指示するデータ選択指示をデータセレクタ121に通知するとともに、CPU101にパケット転送エラーが発生したことを通知するエラー割り込みを発生させ(ステップS416)、図14に示すように、データセレクタ121が、データ選択部122からリンクLa側、すなわち、内部データバスBaからのデータを選択するようにとのデータ選択指示があると、該データ選択指示で指示されたリンクLa側である内部データバスBaからの画像データを選択して内部データバスを介して内部デバイスであるメインメモリ102への転送を開始して(ステップS417)、ライン後端検知部123及びライン後端検知部222が、ラインの後端を検知して、1ライン分のデータ通信が完了したかチェックする(ステップS418)。
【0151】
ステップS418で、1ライン分のデータ通信が完了していないときには、データセレクタ121は、ステップS417に戻って、リンクLa側である内部データバスBaからの画像データを選択して内部データバスを介して内部デバイスであるメインメモリ102への転送を継続して、1ライン分のデータ通信が完了したかチェックする処理を繰り返し行う(ステップS417、ステップS418)。
【0152】
ステップS418で、データ送信側のライン後端検知部222が、ラインの後端を検知して1ライン分のデータ通信が完了すると、ライン数計測部223が、ライン後端検知部123が発生するライン同期信号を計数し、転送中の画像データのライン数を把握して、データ選択部122に転送再開ライン数情報を出力する。データ送信部202は、PCIeエンドポイント212のリンクLa、Lbを含めたデータ送信部202が再びデータを転送できる準備が整ったかチェックして(ステップS419)、転送準備が整っていないときには、ステップS417に戻って、データ通信再開の準備が整うまでデータ送信を再開することなく、上記同様の処理を行う(ステップS417〜S419)。
【0153】
ステップS419で、データ通信再開の準備が完了すると、データ停止部221bが、ライン数計測部223から転送再開ライン数情報を受け取ってリンクLb及びPCIeバス2を介してデータ受信部103のPCIeルートコンプレックス111に送信する(ステップS420)。
【0154】
受信側では、送信側から送られてきた転送再開ライン数情報をリンクLa、Lbが受け取って転送再開ライン数受信部125に通知し、転送再開ライン数受信部125が転送再開ライン数をデータ選択部122に通知する。また、データ選択部122は、ライン数計測部124からライン後端検知部123の検知したライン同期信号を計数した転送ライン数と転送再開ライン数との関係が、上述のように、「転送ライン数」−1=「転送再開ライン数」の関係になった状態で、次のライン同期信号をライン後端検知部123から受け取ると、データセレクタ121に対するデータ選択指示を解除し、データセレクタ121に対して再びリンクLaとリンクLb、すなわち、内部データバスBaと内部データバスBbを流れる画像データの同期を取るように指示する(ステップS421)。
【0155】
そして、データ送信側のデータ停止部221aが、停止していた内部データバスBb、すなわち、リンクLbのデータ通信を再開して(ステップS422)、図13のステップS403に戻り、2つのリンクLa、Lbからデータの同期を取りつつ、初期設定リンクからのデータを選択して転送を開始する処理から上記同様に処理する(ステップS403〜S422)。
【0156】
このように、本実施例の複合装置1は、通信エラーが発生して通信停止となったPCIeバス2a、2bによるデータ通信の再開までに要するライン数を計数し、また、ライン単位で順次通信されるラインデータの後端を検出して、通信エラーが発生したラインから計数したライン数のラインの後端を検出すると、該ライン後端検出タイミングに合わせて、停止していたPCIeバス2a、2bによるデータ通信を再開させるとともに、データ通信を再開したPCIeバス2a、2bのデータを含めた全てのPCIeバス2a、2bにおけるデータの同期を取らせている。
【0157】
したがって、転送エラーの発生したPCIeバス2a、2bによる再転送の準備が完了してから同期タイミングを発生させることができ、パケット転送エラーがラインの終わり付近で発生した場合や再送動作に1ライン以上のオーバーヘッドがかかる場合であっても、データの内容を保証しつつ安全にデータの同期を取った多重通信を行うことができる。
【0158】
スキャナ部300のCCDによって読み込まれた画像データをライン同期で転送する場合、1ライン分の画像データをスキャナ部300から受け取った後、次のラインのデータがスキャナ部300から送られてくるまでに待機時間が発生するが、特に高速で画像をスキャンする複合装置1においては、1ラインの画像を転送する時間が短いため、パケット転送エラーに伴う再送が発生した場合に、ライン間の待機時間のみで再送のオーバーヘッドを吸収することができない場合がある。そこで、本実施例の複合装置1は、データ送信側がラインの先頭というきりのよいデータ位置から画像の転送を再開するために、数ライン分の画像転送時間を費やしてしまうシステムに対して、ライン毎に同期を取ることは行わず、転送準備が終ってから同期を取り直すために、データ通信を再開する準備の整うライン数をデータの受信側に通知することで、パケット転送エラーが発生してエラーが発生したPCIeバス2a、2bのデータ通信を中断した後も、数ライン後のデータ再転送準備が整ったラインからデータの多重転送を再開する。このように、ライン単位で転送準備が整ってから多重転送を再開することで、1ラインで再転送準備が完了しないような高速で画像をスキャンする場合等において、1ページの転送途中で2回以上のパケット転送エラーが発生しても、再転送準備期間にエラーが発生しない限りは、画像データのライン同期転送制約を守ることができ、より一層適切に画像データの転送再開を行うことができる。
【実施例5】
【0159】
図15〜図17は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の第5実施例を示す図であり、図15は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の第5実施例を適用した複合装置1におけるコントローラ100のデータ受信部103とスキャナ画像処理部200のデータ送信部202のブロック構成図である。
【0160】
なお、本実施例は、上記第1実施例の複合装置4と同様の複合装置に適用したものであり、本実施例の説明においては、上記第4実施例と同様の構成部分には、同一の符号を付して、その詳細な説明を省略するとともに、図示しない部分についても、必要に応じて第4実施例の説明で用いた符号をそのまま用いて説明する。
【0161】
複合装置1は、第1実施例の複合装置1と同様に、コントローラ100、スキャナ画像処理部200、スキャナ部300、プロッタ画像処理部400、プロッタ部500、解像度変換画像処理部600及び図示しないファクシミリ通信部、ネットワーク通信部、操作表示部等を備えている。そして、複合装置1は、図1に示したように、スキャナ画像処理部200が、スキャナ特性補正部201及びデータ送信部202等を、プロッタ画像処理部400が、データ受信部401と出力処理部402等を、解像度変換画像処理部600が備えており、コントローラ100が、CPU101、メインメモリ102、データ受信部103、データ送受信部104及びデータ送受信部105等を備えている。
【0162】
本実施例の複合装置1は、スキャナ画像処理部300からデータ受信部103へのPCIeバス2を用いた画像データの転送、データ送受信部104からプロッタ画像処理部400へのPCIeバス3を用いた画像データの転送及びデータ送受信部105と解像度変換画像処理部600とのPCIeバス4を用いた画像データの転送において、設定に応じて、第1実施例の場合と同様に、各PCIeバス2〜4をそれぞれ複数のバスに分割した多重転送を行うとともに、PCIeバス2〜4をそれぞれ単独のバスとしてデータ通信する通常転送を行う。そして、本実施例の複合装置1においては、画像データの送信側が、画像データの多重転送においては、上記第4実施例において説明したように、パケットデータ通信にエラーの発生したリンクによる画像データの送信を停止させるとともに、パケット転送エラー発生後、データの転送準備が完了すると、その後のラインの先頭から同期を取って画像データの多重転送を開始する。
【0163】
以下、スキャナ画像処理部200とコントローラ100のデータ受信部103との間のデータ通信の場合について、図15〜図17用いて説明するが、データ送受信部104からプロッタ画像処理部400へのPCIeバス3を用いた画像データの転送及びデータ送受信部105と解像度変換画像処理部600とのPCIeバス4を用いた画像データの転送についても同様である。
【0164】
そして、上記コントローラ100のデータ受信部103及びスキャナ画像処理部200のデータ送信部202は、図15に示すようにブロック構成されている。データ送信部202は、上記同様のデータ分割制御部211及びPCIeエンドポイント212等を備えているとともに、動作モード設定部(切り替え手段)213を備えており、コントローラ100のデータ受信部103は、上記同様のPCIeルートコンプレック111及びデータ選択制御部112等を備えているとともに、動作モード設定部(切り替え手段)113を備えている。データ送信部202及びデータ受信部103は、動作モードの設定に応じて、PCIeエンドポイント212及びPCIeルートコンプレックス111が、上述のように、それぞれ対となる2つのリンクLaとリンクLbとして機能して、PCIeバス2を同時に同じデータを転送可能な2組のPCIeバス2a及びPCIeバス2bとして利用する多重転送と、PCIeエンドポイント212及びPCIeルートコンプレックス111が、通常の1つのリンクLz(図16及び図17参照)として機能して、PCIeバス2を1つのバスとして利用した通常の転送(通常転送)とを行う。
【0165】
動作モード設定部113及び動作モード設定部213は、コントローラ100のCPU101によってその動作モードが設定され、動作モード設定部113及び動作モード設定部213は、設定された動作モードに応じて、PCIeバス2〜4の4レーンを1つのリンクとして動作させる通常動作転送モードと2レーンの2つのリンクとして動作させる2重転送モードのいずれかを指示するPCIeバス2〜4のバス構成指示情報を、PCIeルートコンプレックス111とデータ選択制御部112及びPCIeエンドポイント212とデータ分割制御部211に通知する。
【0166】
PCIeルートコンプレックス111及びPCIeエンドポイント212は、動作モード設定部113及び動作モード設定部213からのバス構成指示情報に従ってバス構成を変更する。例えば、PCIeルートコンプレックス111及びPCIeエンドポイント212は、2重転送モードが指定されると、図15に示すように、2レーンの2つのリンクLa、Lbとして構成とし、通常転送モードが指定されると、図16及び図17に示すように、1つのレーンの1つのリンクLzとして構成とする。
【0167】
データ受信側のデータ受信部103は、2重転送モード時には、図11に示したように、データセレクタ121、データ選択部122、ライン後端検知部123、ライン数計測部124及び転送再開ラインする受信部125が動作して、2つのリンクLa、Lbを利用した2重転送動作を行う。また、データ受信部103は、通常転送モード時には、図16に示すように、PCIeルートコンプレックス111が1つのリンクLzとして構成され、データ選択制御部112がデータセレクタ121のみが動作する構成となる。この1つのリンクLzとデータセレクタ121が内部データバスBaで接続されていて、データセレクタ121は、リンクLzから送られてくるデータを内部デバイス、例えば、メインメモリ102に転送する。
【0168】
また、データ送信側のスキャナ画像処理部200のデータ送信部202は、図17に示すように、データ休止部221a、221b、ライン後端検知部222、ライン数計測部223を備えているとともに、データ休止部221aとPCIeエンドポイント212との間に配設されたデータセレクタ224を備えており、データセレクタ224には、スキャナ特性補正部201からの画像データが入力される内部データバスDBが分離された内部データバスBzが接続されている。データ送信部202は、動作モード設定部213から「2重転送モード」を示すPCIeバス構成指示情報がデータ分割制御部211及びPCIeエンドポイント212に入力される2重転送モード時には、図12に示したように、データ停止部221a、221b、ライン後端検知部222及びライン数計測部22が動作して、2つのリンクLa、Lbを利用した2重転送動作を行うが、このとき、データセレクタ224は、データ休止部221aからのデータを選択してPCIeエンドポイント212に出力する。また、データ送信部202は、通常転送モード時には、動作モード設置部213が、通常転送モード時のバス構成指示情報をデータ分割制御部211のデータセレクタ224及びPCIeエンドポイント212に出力して、図17に示すように、PCIeエンドポイント212が1つのリンクLzとして構成され、データ分割制御部211がデータセレクタ224のみが動作する構成となる。このPCIeエンドポイント212の1つのリンクLzとデータセレクタ224が内部データバスBaで接続されていて、データセレクタ224は、スキャナ特性補正部201から内部データバスDB及び内部データバスBzを通して送られてくるデータをリンクLzに転送し、リンクLzからPCIeバス2を介して受信側のPCIeルートコンプレックス111の1つのリンクLzに転送する。
【0169】
このように、本実施例の複合装置1は、動作モード設定部113、213によって、リンク111、212を、PCIeバス2を2重通信バス2a、2bとして機能させる2重転送モード(多重通信モード)と1つの通信バス2として機能させる通常転送モード(単通信モード)とに切り替え、リンク111、212を該切り替えに応じて2重転送モードと通常転送モードとに切り替えて通信している。
【0170】
したがって、複合装置1の画像データの転送動作モードを、例えば、画像種や要求されるデータ通信制約に合わせて動作させる機能毎に切り替えて、PCIeバス2の転送効率が最も有効な状態でデータ通信を行うことができ、データの転送効率をより一層向上させることができる。
【0171】
すなわち、PCIe2の全てのレーンをひとつのリンクとして動作させる通常転送モードでは、パケット転送エラーによって発生する再送動作のオーバーヘッドが無視できないような小さなデータ単位での転送速度が求められている場合は、一度パケット転送エラーが発生してしまうと要求転送速度が満たせないため、例えば、複合装置1の場合にはスキャナ部300から取り込まれた画像データはメモリ102に異常画像となって保存される。
【0172】
逆に、パケット転送エラーによって発生する再送動作のオーバーヘッドが無視できるほど十分に大きなデータに対して要求される転送処理能力としては、2重転送モードのほぼ2倍の転送能力が要求される。
【0173】
このように、CPU101が設定を行う動作モード設定部113、213を用いて、PCIeバス2のリンク構成と各リンクのレーン数を変更することで、例えば、2400dpiのカラー画像データを要求されて設計されたASICが、1200dpiの解像度の画像データを転送するためにPCIeバス2を使用する際に、PCIeバス2を多重化し、上記第1実施例から第4実施例の方法を用いてパケット転送エラーによる再送が発生した場合においてもデータ通信速度を保証し、異常画像の発生確率を低下させることができる。
【0174】
より具体的には、画像処理を行うASICは、利用用途に応じて複数の画像種に対応した画像処理ができるよう設計されることが多く、このとき、データバスにのみ着目すると、カラー画像をプロッタ部500に出力するときには、CMYK版の4色の画像データの転送が必要であり、モノクロ画像の場合は、K版1色の画像データの転送のみとなる。
【0175】
したがって、1版あたりの1画素のデータ量及び解像度が同じで、プロッタ部500の生産性(1分あたりの出力枚数)も同じ場合であっても、カラー画像とモノクロ画像とでは、データバスに要求される転送速度は4倍も異なる。
【0176】
一方、データバスを多重化するためにパケット転送エラーが発生しないと仮定した場合に必要となる帯域の2倍以上のデータバス幅が要求され、コスト的に不利になる。
【0177】
このような場合に、本実施例の複合装置1は、プロッタ部500に出力する画像種、スキャナ部300から入力される画像種等によって決定される動作モードに応じてPCIeバス2〜4の構成とバス幅を変更することができるため、例えば、PCIeバス2〜4を通常転送モードで動作させて、2400dpiのカラー画像データを要求された設計されたASICによって高速データ転送を実現することができるとともに、1200dpiかそれ以下の解像度の画像データを転送するためにPCIeバス2〜4を実力よりも低い帯域で使用する際には、動作モード設定部113、213によってPCIeバス2〜4のバス構成及びバス幅を多重転送(2重転送)モードに変更設定することで、第1実施例から第4実施例の方法を用いて、短い周期で一定量のデータを必ず伝送し終わらなければならないというような同期転送の制約が強い用途に対応する機能を持たせることができる。
【0178】
なお、上記説明では、通常転送モードと2重転送モードでのデータの選択を、データセレクタ224、121によって内部データバスを選択することによって行っているが、データバスの選択方法は、上記方法に限るものではない。例えば、内部データバスBaを2重転送モード時の内部データバスBa及び内部データバスBbを束ねたものとしてもよいし、2重転送モード時の内部データバスBa及び内部データバスBbとは全く異なるデータバスを設けてもよい。
【0179】
また、上記各実施例においては、バスインターフェイスとして共通で汎用的なPCIeバス2に適用している。したがって、汎用性を向上させることができる。
【0180】
以上、本発明者によってなされた発明を好適な実施例に基づき具体的に説明したが、本発明は上記実施例で説明したものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【0181】
本発明は、PCIe等の高速シリアルバスを利用したデータ通信を行う複合装置、プリンタ装置、複写装置、スキャナ装置等のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体に利用することができる。
【符号の説明】
【0182】
1 複合装置
2、2a、2b、3、4 PCIeバス
100 コントローラ
101 CPU
102 メインメモリ
103 データ受信部
104 データ送信部
105 データ送受信部
106 バス
111 PCIeルートコンプレックス
112 データ制御部
113 動作モード設定部
121 データセレクタ
122 データ選択部
123 ライン後端検知部
200 スキャナ画像処理部
201 スキャナ特性補正部
202 データ送信部
211 データ分割制御部
212 PCIeエンドポイント(PCI Express End Point)
213 動作モード設定部
221a、221b データ休止部
222 ライン後端検知部
223 ライン数計測部
300 スキャナ部
400 プロッタ画像処理部
401 データ受信部
402 出力処理部
500 プロッタ部
600 解像度変換画像処理部
601 データ送受信部
La、Lb、Lz リンク
Ba、Bb、Bz 内部データバス
DB 内部データバス
【先行技術文献】
【特許文献】
【0183】
【特許文献1】特開2008−204245号公報

【特許請求の範囲】
【請求項1】
通信バスを複数の多重通信バスに分割し各多重通信バスを利用して同じデータの通信を行う通信手段と、
前記多重通信バスにおけるデータの同期を取りながら所定の多重通信バスをデータ採用通信バスとして該データ採用通信バスのデータを後段に転送するデータ選択手段と、
前記多重通信バスにおける通信エラーの発生の有無を検出するエラー検出手段と、
前記エラー検出手段が通信エラーを未検出のときには、任意の前記多重通信バスを前記データ採用通信バスとして前記データ選択手段に対して指定するとともに、該エラー検出手段が通信エラーを検出すると、前記データ選択手段に、該通信エラーの発生した多重通信バスのデータとの同期を取ったデータ通信を停止させて通信エラー未発生の多重通信バスのみによるデータ通信を行わせ、該通信エラー未発生の多重通信バスの1つをデータ採用通信バスとして指定するバス選択手段と、
を備えていることを特徴とするデータ通信装置。
【請求項2】
前記データ通信装置は、
前記エラー検出手段が前記通信エラーを検出すると、該通信エラーの発生した前記多重通信バスによるデータ通信を停止する通信停止手段を備えていることを特徴とする請求項1記載のデータ通信装置。
【請求項3】
前記データ通信装置は、
ライン単位で順次通信されるラインデータの後端を検出するライン後端検出手段をさらに備え、
前記バス選択手段は、前記データ通信を停止した後に、該データ通信を停止したラインの後端を前記ライン後端検出手段が検出すると、該ライン後端検出タイミングに合わせて、前記データ選択手段に、停止していた該多重通信バスによるデータ通信を再開させるとともに、データ通信を再開した多重通信バスのデータを含めた全ての多重通信バスにおけるデータの同期を取らせることを特徴とする請求項1または請求項2記載のデータ通信装置。
【請求項4】
前記データ通信装置は、
通信エラーが発生して通信停止となった多重通信バスによるデータ通信の再開までに要するライン数を計数するライン数計数手段と、
ライン単位で順次通信されるラインデータの後端を検出するライン後端検出手段と、
をさらに備え、
前記バス選択手段は、前記通信エラーが発生したラインから前記ライン数計数手段の計数したライン数のラインの後端を前記ライン後端検出手段が検出すると、該ライン後端検出タイミングに合わせて、前記データ選択手段に、停止していた該多重通信バスによるデータ通信を再開させるとともに、データ通信を再開した該多重通信バスのデータを含めた全ての多重通信バスにおけるデータの同期を取らせることを特徴とする請求項1から請求項3のいずれかに記載のデータ通信装置。
【請求項5】
前記データ通信装置は、
前記通信手段を、前記通信バスを前記多重通信バスとして機能させる多重通信モードと1つの通信バスとして機能させる単通信モードとに切り替える切り替え手段を備え、
前記通信手段は、前記切り替え手段の切り替えに応じて前記多重通信モードと前記単通信モードとに切り替えて通信することを特徴とする請求項1から請求項4のいずれかに記載のデータ通信装置。
【請求項6】
通信バスを複数の多重通信バスに分割し各多重通信バスを利用して同じデータの通信を行う通信処理ステップと、
前記多重通信バスにおけるデータの同期を取りながら所定の多重通信バスをデータ採用通信バスとして該データ採用通信バスのデータを後段に転送するデータ選択処理ステップと、
前記多重通信バスにおける通信エラーの発生の有無を検出するエラー検出処理ステップと、
前記エラー検出処理ステップで通信エラーが未検出のときには、任意の前記多重通信バスを前記データ採用通信バスとして前記データ選択処理ステップに対して指定するとともに、該エラー検出処理ステップで通信エラーが検出されると、前記データ選択処理ステップで、該通信エラーの発生した多重通信バスとの同期を取ったデータ通信を停止させて通信エラー未発生の多重通信バスのみによるデータ通信を行わせ、該通信エラー未発生の多重通信バスの1つをデータ採用通信バスとして指定するバス選択処理ステップと、
を有していることを特徴とするデータ通信制御方法。
【請求項7】
コンピュータに、
通信バスを複数の多重通信バスに分割し各多重通信バスを利用して同じデータの通信を行う通信処理と、
前記多重通信バスにおけるデータの同期を取りながら所定の多重通信バスをデータ採用通信バスとして該データ採用通信バスのデータを後段に転送するデータ選択処理と、
前記多重通信バスにおける通信エラーの発生の有無を検出するエラー検出処理と、
前記エラー検出処理で通信エラーが未検出のときには、任意の前記多重通信バスを前記データ採用通信バスとして前記データ選択処理に対して指定するとともに、該エラー検出処理で通信エラーが検出されると、前記データ選択処理で、該通信エラーの発生した多重通信バスとの同期を取ったデータ通信を停止させて通信エラー未発生の多重通信バスのみによるデータ通信を行わせ、該通信エラー未発生の多重通信バスの1つをデータ採用通信バスとして指定するバス選択処理と、
を実行させることを特徴とするデータ通信制御プログラム。
【請求項8】
請求項7記載のデータ通信制御プログラムを記録したことを特徴とするコンピュータが読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2010−288148(P2010−288148A)
【公開日】平成22年12月24日(2010.12.24)
【国際特許分類】
【出願番号】特願2009−141393(P2009−141393)
【出願日】平成21年6月12日(2009.6.12)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】