(57)【要約】【課題】転送終了情報に異常が発生した場合でも高速で正しいデータ通信を行うことができるようにする。【解決手段】外部ユニットとの間でデータ通信を行うためのＵＳＢＩ／Ｆ１７を設けたＡＳＩＣ１０において、ＵＳＢＩ／Ｆ１７から受信したデータの転送を制御するＤＭＡＣ５０と、ＵＳＢＩ／Ｆ１７からデータを受信した場合にそのデータに係る転送終了情報の異常を検出する転送異常検出部５５と、転送異常検出部５５が異常を検知した場合にＵＳＢＩ／Ｆ１７からＤＭＡＣ５０へのデータの入力を中断し、また異常の補償後に入力を再開する転送中断部５１と、転送中断部５１がデータの入力を中断した場合に転送異常検出部５５によって検出した転送終了情報の異常を補償する転送終了情報補償部５４とを設ける。【選択図】　　　　図１
2004110619.tif 000002
【特許請求の範囲】
【請求項１】
外部ユニットとの間でデータ通信を行うためのインタフェース手段と、
該手段から受信したデータの転送を制御する転送制御手段と、
前記インタフェース手段から前記転送制御手段にデータを入力した場合にそのデータに係る転送終了情報の異常を検出する転送異常検出手段と、
該手段が異常を検知した場合に前記インタフェース手段から前記転送制御手段へのデータの入力を中断する転送中断手段と、
該手段がデータの入力を中断した場合に前記転送異常検出手段によって検出した前記転送終了情報の異常を補償する補償手段と、
該手段による補償後に前記転送制御手段へのデータの入力を再開する転送再開手段とを設けたことを特徴とするデータ通信装置。
【請求項２】
請求項１記載のデータ通信装置であって、
前記転送制御手段は、ダイレクトメモリアクセスによるデータ転送を行う手段を有していることを特徴とするデータ通信装置。
【請求項３】
請求項１又は２記載のデータ通信装置であって、
前記インタフェース手段はシリアルインタフェースであることを特徴とするデータ通信装置。
【請求項４】
請求項３記載のデータ通信装置であって、
前記インタフェース手段はユニバーサルシリアルバスによるシリアルインタフェースであることを特徴とするデータ通信装置。
【請求項５】
請求項１乃至４のいずれか一項記載のデータ通信装置であって、
前記転送異常検出手段は、前記転送制御手段へ入力したデータのサイズが前記インタフェース手段によって１単位として受信可能な最大パケットサイズの整数倍から所定時間変化しない場合に前記転送終了情報に異常が発生していると判断する手段であることを特徴とするデータ通信装置。
【請求項６】
請求項５記載のデータ通信装置であって、
前記補償手段は、転送終了パケットを受信したことにして前記転送終了情報の異常を補償する手段であることを特徴とするデータ通信装置。
【請求項７】
請求項６記載のデータ通信装置であって、
前記データ通信はユニバーサルシリアルバス（ＵＳＢ）による通信であり、
前記転送終了パケットはＵＳＢ規格におけるＮＵＬＬパケットであることを特徴とするデータ通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、外部機器との間でデータ通信を行うことのできるデータ通信装置に関し、特に、データの受信に異常が発生した場合の動作に特徴を有するデータ通信装置に関する。
【０００２】
【従来の技術】
従来から、データ通信を行う場合において、一連のデータをいくつかのパケットに分けて送受信することが行われている。この場合において、どの範囲のパケットが一連のデータであるかがわからないと受信側で通信に係るデータを復元することができないので、一連のデータの送信の最後では、最終パケットを示す転送終了情報を送信するようにしている。
例えばＵＳＢ（ユニバーサル・シリアル・バス）による通信の場合には、最終パケットのサイズが１パケットとして転送可能な最大サイズ（Ｆｕｌｌ　Ｓｐｅｅｄなら６４バイト、Ｈｉｇｈ　Ｓｐｅｅｄなら５１２バイト）以下であればそのサイズの情報自体が転送終了情報であり、最終パケットのサイズが１単位として転送可能な最大サイズであれば、その後で転送終了情報としてＮＵＬＬパケット（ゼロレングスパケット）を送信するようにしている。
【０００３】
一方、受信側では、パケット毎に転送されてくるデータをバッファに記憶すると共に、その記憶位置を示すため、各パケットに対応する例えば図８に示すようなディスクリプタを作成する。
図８に示した例では、各パケットのディスクリプタは、次のパケットについてのディスクリプタの記憶位置を示す次ディスクリプタポインタ、そのパケットのデータの先頭位置を示すバッファアドレス、そのパケットのデータのサイズを示す転送サイズ、およびそのパケットが最終パケットか否かを示す最終パケット（ＥＯＰ）フラグの情報を有する。
そして、転送終了情報を受信した場合に、その情報が示す最終パケットのディスクリプタのＥＯＰフラグを１（ＯＮ）にすることにより、どのパケットが最終パケットであるかを記憶しておく。このようなディスクリプタを作成することにより、一連のデータをパケットに分解して転送した場合でも、先頭パケットから最終パケットまでのデータを順に読み出してつなぎ合わせ、元のデータを復元することができる。
【０００４】
しかし、何らかの理由で転送終了情報が正常に受信できない場合も考えられる。上述したＵＳＢのＮＵＬＬパケットの場合のように、有効なデータを含むパケットの送信後に別途転送終了情報を送信する場合には、この情報の転送に異常が生じ、抜け落ちてしまうことも考えられる。そして、このような場合には、ＥＯＰフラグはＯＮにされない。従って、読み出す際にも読み出しを最終パケットで終了せず、次の一連のデータと繋がった形で読み出してしまい、元のデータを正しく復元することができない。例えばプリンタでの印刷に供する印刷データにおいてこのような事態が発生すると、文字化け等の不具合の原因となり、非常に都合が悪い。
従来は、このような問題に対する対応として、例えば特許文献１に記載されているように、データ異常を検知した時点でプロトコルリスタートを要求し、再度データ転送を行うようにしていた。
【０００５】
【特許文献１】
特開２００１−２３７９１３号公報
【０００６】
【発明が解決しようとする課題】
しかしながら、このような方式ではデータ異常が発生した場合には再度データ転送を行う必要が生じるので、データの転送に時間がかかってしまうという問題があった。
この発明は、このような問題を解決し、外部ユニットとの間でデータ通信を行う通信装置において、転送終了情報に異常が発生した場合でも高速で正しいデータ通信を行うことができるようにすることを目的とする。
【０００７】
【課題を解決するための手段】
上記の目的を達成するため、この発明のデータ通信装置は、外部ユニットとの間でデータ通信を行うためのインタフェース手段と、その手段から受信したデータの転送を制御する転送制御手段と、上記インタフェース手段から上記転送制御手段にデータを入力した場合にそのデータに係る転送終了情報の異常を検出する転送異常検出手段と、その手段が異常を検知した場合に上記インタフェース手段から上記転送制御手段へのデータの入力を中断する転送中断手段と、その手段がデータの入力を中断した場合に上記転送異常検出手段によって検出した上記転送終了情報の異常を補償する補償手段と、その手段による補償後に上記転送制御手段へのデータの入力を再開する転送再開手段とを設けたものである。
【０００８】
このようなデータ通信装置において、上記転送制御手段に、ダイレクトメモリアクセスによるデータ転送を行う手段を設けるとよい。
また、上記インタフェース手段をシリアルインタフェースとするとよく、さらにユニバーサルシリアルバス（ＵＳＢ）によるシリアルインタフェースとするとよい。
また、上記のデータ通信装置において、上記転送異常検出手段を、上記転送制御手段へ入力したデータのサイズが上記インタフェース手段によって１単位として受信可能な最大パケットサイズの整数倍から所定時間変化しない場合に上記転送終了情報に異常が発生していると判断する手段とするとよい。
さらに、上記補償手段を、転送終了パケットを受信したことにして上記転送終了情報の異常を補償する手段とするとよく、さらに、上記データ通信がＵＳＢによる通信であり、上記転送終了パケットがＵＳＢ規格におけるＮＵＬＬパケットであるとよい。
【０００９】
【発明の実施の形態】
以下、この発明の好ましい実施の形態を図面を参照して説明する。
まず、この発明のデータ通信装置の実施形態である特定用途向けＩＣ（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ　Ｓｐｅｃｉｆｉｃ　Ｉｎｔｅｇｒａｔｅｄ　Ｃｉｒｃｕｉｔ）及び、そのＡＳＩＣを備えた画像処理装置の一例であるデジタル複合機（ＭＦＰ）について図１及び図２を用いて説明する。図１はそのＡＳＩＣの構成を示すブロック図、図２はそのＡＳＩＣを備えたデジタル複合機の構成をコントローラボードを中心に示すブロック図である。
【００１０】
このＡＳＩＣ１０は、図１に示すように、画像を回転させる処理を行う画像回転処理部１１及び画像データの圧縮と解凍を行う圧縮／伸長処理部１２による画像処理部と、外部ユニットとの間でデータ通信を行うためのインタフェース手段であるハードディスクドライブインタフェース（ＨＤＤＩ／Ｆ）１３，操作部Ｉ／Ｆ１４，ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ　ｏｆ　Ｅｌｅｃｔｒｉｃａｌ　ａｎｄ　Ｅｌｅｃｔｒｏｎｉｃ　Ｅｎｇｉｎｅｅｒｓ）１２８４Ｉ／Ｆ１５，メディアアクセス制御（ＭＡＣ）Ｉ／Ｆ１６，ユニバーサルシリアルバス（ＵＳＢ）Ｉ／Ｆ１７とを備え、画像処理部へのデータ入出力及び上記の各Ｉ／Ｆから受信したデータの転送をダイレクトメモリアクセス（ＤＭＡ）によって行う転送制御手段であるダイレクトメモリアクセスコントローラ（ＤＭＡＣ）３１〜４２，５０，５７を備えている。
ＤＭＡＣはこれらの各処理部及びＩ／Ｆについて２組ずつ設けているが、これはメモリリード用とメモリライト用のものである。そして、これらのＤＭＡＣはアービタ３０に接続されている。このアービタ３０が各ＤＭＡＣに対してバスの占有の優先順位を設定し、上位のＤＭＡＣから順にアクセス動作を行うことができる。
【００１１】
また、このＡＳＩＣ１０は、さらにＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔｓ　Ｉｎｔｅｒｃｏｎｎｅｃｔ）Ｉ／Ｆ１８，ＣＰＵＩ／Ｆ１９，システムＩ／Ｆ２０，ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ　Ｄｙｎａｍｉｃ　ＲＡＭ）Ｉ／Ｆ２１，ローカルバスＩ／Ｆ２２を備え、ＤＭＡＣ５０におけるデータ異常の検出を行うための転送異常検出部５５とタイマ５６も備えている。そして、システムＩ／Ｆ２０はＰＣＩＩ／Ｆ１８とＣＰＵＩ／Ｆ１９に接続され、ＰＣＩＩ／Ｆ１８，ＣＰＵＩ／Ｆ１９，システムＩ／Ｆ２０はそれぞれアービタ３０に接続している。
なお、シリアルインタフェースであるＵＳＢＩ／Ｆ１７から受信したデータを転送する際に用いるＤＭＡＣ５０には、この発明の特徴となる構成を設けており、他のＤＭＡＣよりも詳細に図示しているが、これらの構成については後に詳述する。
【００１２】
このようなＡＳＩＣ１０は、図２に示すようにＭＦＰの制御部であるコントローラボード１に搭載され、統括制御動作を行うＣＰＵ２を始めとする各ユニットとデータ通信を行って、それら各部の間でのデータの授受を仲介する。
コントローラボード１には、ＡＳＩＣ１０のほか、ＣＰＵ２，ＳＤＲＡＭ３，フラッシュＲＯＭ４，セントロニクスＩ／Ｆ５，物理メディアインタフェース（ＰＨＹ）６，ＵＳＢＩ／Ｆ７を備えている。そして、制御手段であるＣＰＵ２及び記憶手段であるＳＤＲＡＭ３とフラッシュＲＯＭ４は、それぞれＡＳＩＣ１０のＣＰＵＩ／Ｆ１９，ＳＤＲＡＭＩ／Ｆ２１，ローカルバスＩ／Ｆ２２と接続している。なお、ＳＤＲＡＭ３やフラッシュＲＯＭ４以外のメモリも、そのメモリに対応したＩ／ＦをＡＳＩＣ１０に設ければ接続可能である。
【００１３】
また、セントロニクスＩ／Ｆ５，ＰＨＹ６，ＵＳＢＩ／Ｆ７は、それぞれコントローラボード１に外部機器（ユニット）を接続するためのインタフェースであり、それぞれＡＳＩＣ１０のＩＥＥＥ１２８４Ｉ／Ｆ１５，ＭＡＣＩ／Ｆ１６，ＵＳＢＩ／Ｆ１７に接続している。ＰＨＹ６は、ＭＦＰをネットワークに接続するためのインタフェースである。
さらに、コントローラボード１にはＭＦＰの操作を行うための操作部８と画像データやプログラム等のデータを蓄積するためのＨＤＤ９とが接続され、これらはそれぞれＡＳＩＣ１０の操作部Ｉ／Ｆ１４とＨＤＤＩ／Ｆ１３に接続している。
【００１４】
このようなコントローラボード１は、ＡＳＩＣ１０のＰＣＩＩ／Ｆ１８に接続するＰＣＩバス１１０によって、画像形成手段であるプリンタや画像読取手段であるスキャナ、ファクシミリ通信手段である網制御部（ＮＣＵ）等を備えるエンジン部１００と接続している。
そして、ＣＰＵ２によって各部をコピー，プリンタ，スキャナ，ファクシミリ等のアプリケーションに割り振り、そのアプリケーションに必要なジョブを実行させることにより、このＭＦＰをコピー機，プリンタ，スキャナ，ファクシミリ装置等として機能させることができる。例えば、ＵＳＢＩ／Ｆ７経由でホストのパーソナルコンピュータ（ＰＣ）から受信した印刷データをコントローラボード１でプリンタによって印刷可能な形式に変換し、ＰＣＩバス１１０経由でエンジン部１００のプリンタに送出して印刷出力させたり、エンジン部１００のスキャナによって読み取った画像データをＰＣＩバス１１０経由でコントローラボード１に送信させ、これをＨＤＤ９に転送して蓄積させたりすることができる。
【００１５】
次に、上述したＡＳＩＣ１０におけるデータ通信の動作について、ＵＳＢＩ／Ｆ１７からデータを受信する際の動作を例として、図３乃至図７も用いて説明する。図３はＵＳＢＩ／Ｆによって受信したデータをＤＭＡによって転送する場合の制御タイミングを示すタイミングチャート、図４は同じくデータの受信終了時にＮＵＬＬパケットを受信した場合の制御タイミングを示すタイミングチャート、図５は同じくデータの受信終了時に必要なＮＵＬＬパケットを受信しなかった場合の制御タイミングを示すタイミングチャート、図６は最大サイズの２つのパケットをＤＭＡＣに入力した時点でのディスクリプタの状態を示す図、図７はその後一旦受信を終了して再度別のパケットを入力した時点でのディスクリプタの状態を示す図である。
【００１６】
図１に示したＡＳＩＣ１０がコントローラボード１のＵＳＢＩ／Ｆ７に接続された外部ユニットから送信されてくるデータを受信する場合、そのデータはＵＳＢＩ／Ｆ１７が受信し、これをＤＭＡＣ５０に入力してＤＭＡＣ５０がそのデータを指定されたユニットに対してＤＭＡ転送する。ＡＳＩＣ１０においては、このようなＤＭＡＣ５０に、転送中断部５１，カウンタ５２，データバッファ５３，転送終了情報補償部５４を設け、さらにタイマ５６と接続した転送異常検出部５５を接続している。
【００１７】
ＵＳＢＩ／Ｆ１７からＤＭＡＣ５０にデータを入力する場合、図３に示すように、まずＵＳＢＩ／Ｆ１７がデータの準備ができたことを示すＤＭＡ＿Ｒｅｑ信号をアサートし、ＤＭＡＣ５０側ではデータを受け取る準備ができた場合にその旨を示すＤＭＡ＿Ａｃｋ信号をアサートする。図３に示すＣＬＫ信号はＡＳＩＣ１０のシステムクロックである。そして、ＤＭＡ＿Ａｃｋ信号がアサートされるとＵＳＢＩ／Ｆ１７からＤＭＡＣ５０にデータの入力が開始され、入力されたデータは従来の技術の項で図８を用いて説明したようなディスクリプタを付してデータバッファ５３に記憶される。そして、このデータは指定されたユニットに対してアービタ３０を介して順次転送される。図３のＤＡＴＡ信号のＶＡＬＩＤの部分が有効なデータが入力される期間を示す。
【００１８】
ＵＳＢＩ／Ｆ１７はデータをパケット単位で受信するので、この入力もパケット毎に行われる。１単位として受信可能な最大パケットサイズは、Ｆｕｌｌ　Ｓｐｅｅｄの場合は６４バイト、Ｈｉｇｈ　Ｓｐｅｅｄの場合は５１２バイトであるが、ここでは後者とする。そして、１パケットのデータのＤＭＡＣ５０への入力が終了した時点でＤＭＡ＿Ｒｅｑ信号とＤＭＡ＿Ａｃｋ信号はデアサートされる。
一方、カウンタ５２は一連のデータのＤＭＡＣ５０への入力開始時から入力したデータのサイズをカウントしている。パケットのサイズは、入力されたパケットが最終パケットでない場合には常に最大パケットサイズであるので、カウンタ５２のカウント値は最終パケット以外のパケットの入力終了時には最大パケットサイズの整数倍になる。逆に言えば、パケットの入力終了時にカウンタ５２のカウント値が最大パケットサイズの整数倍でなければ、直前に入力を終了したパケットが最終パケットであったということなる。
【００１９】
従って、このような場合には一連のデータの受信が終了したものとみなして最終パケットのディスクリプタのＥＯＰフラグを１にし、カウンタ５２をリセットする。この場合においては、最大パケットサイズと異なるパケットサイズそのものが、一連のデータの受信終了を示す転送終了情報として機能することになる。
しかし、最終パケットのサイズが最大パケットサイズの整数倍になる場合も考えられる。そして、このような場合にはパケットサイズを転送終了情報として機能させることができないので、送信元の外部ユニットは最終パケットの後に転送終了情報としてＮＵＬＬパケット（ゼロレングスパケット）を送信してくる。
【００２０】
ＵＳＢＩ／Ｆ１７はこのＮＵＬＬパケットを受信すると図４に示すようにその旨を示すＤＭＡ＿Ｎｕｌｌ＿Ｒｅｑ信号をアサートする。これに応じてＤＭＡＣ５０がＤＭＡ＿Ａｃｋ信号をアサートするとＤＭＡＣ５０がＮＵＬＬパケットによる転送終了情報を認識し、ディスクリプタのＥＯＰフラグを１にすると共にカウンタ５２をリセットする。
しかし、ＮＵＬＬパケットは最終パケットとは別のパケットとして送信されてくるため、何らかの理由でＵＳＢＩ／Ｆ１７がこれを受信できないことも考えられる。この場合には、ＤＭＡＣ５０は一連のデータの受信が終了したことを認識できないので、ディスクリプタのＥＯＰフラグを１にしたりカウンタ５２をリセットしたりはしない。
【００２１】
例えば最大パケットサイズの２つのパケットからなる一連のデータがＤＭＡＣ５０に入力された場合にはディスクリプタは図６に示すようになるが、ここでＵＳＢＩ／Ｆ１７がＮＵＬＬパケットを受信できないと、ＥＯＰフラグが変更されない。そしてこのまま次の一連のデータの受信とＤＭＡＣ５０への入力が行われてしまうと、ディスクリプタが図８に示すようになって次のデータと繋がってしまうことになる。
【００２２】
このＡＳＩＣ１０においては、このような事態を避けるため、以下のように転送終了情報の異常を検出し、それを補償するようにしている。
すなわち、転送異常検出手段である転送異常検出部５５によってタイマ５６を参照しながらカウンタ５２のカウント値を監視し、ＤＭＡＣ５０へ入力したデータのサイズがＵＳＢＩ／Ｆ１７によって１単位として受信可能な最大パケットサイズの整数倍から所定時間変化しない場合に、転送終了情報に異常が発生している、すなわちＵＳＢＩ／Ｆ１７がＮＵＬＬパケットの受信に失敗していると判断し、この場合に転送中断手段である転送中断部５１によってＸ＿ＰＡＵＳＥ信号をアサートしてＵＳＢＩ／Ｆ１７からＤＭＡＣ５０へのデータの入力を中断するようにしている。
【００２３】
そして、補償手段である転送終了情報補償部５４によってＩＮＳ＿ＯＮ信号をアサートしてＵＳＢＩ／Ｆ１７がＮＵＬＬパケットを受信したことにし、転送終了情報の異常を補償する。すると、ＤＭＡＣ５０は図４に示した場合と同様にディスクリプタのＥＯＰフラグを１に設定すると共にカウンタ５２のカウント値をリセットするので、その後、転送中断部５１が転送再開手段として機能してＸ＿ＰＡＵＳＥ信号をデアサートし、ＤＭＡＣ５０へのデータの入力を再開する。
【００２４】
この動作の制御タイミングは図５に示す通りである。図５において、ＤＡＴＡ中の数字は一連のデータの何バイト目をＤＭＡＣ５０に入力中かを示し、ＣＯＵＮＴＥＲ中の数字はカウンタ５２のカウント値を示す。
図５に示す例では、時刻Ｔ０ではカウンタ５２は初期化されており、時刻Ｔ１でＵＳＢＩ／Ｆ１７がＤＭＡ＿Ｒｅｑ信号をアサートしてＤＭＡＣ５０にＤＭＡ転送を要求する。そして、時刻Ｔ２ではＸ＿ＰＡＵＳＥ信号はアサートされていないので、ＤＭＡＣ５０はＤＭＡ＿Ａｃｋ信号をアサートすることができ、これをアサートしてデータの入力を受け付ける。そして、その後時刻Ｔ３までの間に最初のパケットの５１２バイトのデータがＤＭＡＣ５０に入力され、カウンタ５２のカウント値は５１２になる。
【００２５】
この時点でＤＭＡ＿Ｒｅｑ信号とＤＭＡ＿Ａｃｋ信号は一旦デアサートされるが、時刻Ｔ４においてＵＳＢＩ／Ｆ１７が再度ＤＭＡ＿Ｒｅｑ信号をアサートして次のパケットのデータの入力を要求する。そして、ＤＭＡＣ５０は時刻Ｔ５にこれに応答する。このとき、時刻Ｔ３から時刻Ｔ５までの間カウンタ５２のカウント値は最大パケットサイズの整数倍（１倍）であるが、時刻Ｔ３から時刻Ｔ５までの期間は所定時間（Ｔ＿ｓａｍｅ）よりも短いため、Ｘ＿ＰＡＵＳＥ信号はアサートされていない。従って、時刻Ｔ５においてＤＭＡＣ５０はＤＭＡ＿Ａｃｋ信号をアサートすることができ、これをアサートして次のパケットのデータの入力を受け付ける。
【００２６】
そして、その後時刻Ｔ６までの間に２番目のパケットの５１２バイトのデータがＤＭＡＣ５０に入力され、カウンタ５２のカウント値は１０２４になり、この時点でＤＭＡ＿Ｒｅｑ信号とＤＭＡ＿Ａｃｋ信号はデアサートされる。
ここで、実際にはこの２番目のパケットが一連のデータの最終パケットであるが、外部ユニットが送信したＮＵＬＬパケットがＵＳＢＩ／Ｆ１７で受信できなかったものとする。
【００２７】
この場合、次のデータはすぐには転送されてこないので、ＤＭＡＣ５０はカウンタ５２のカウント値が最大パケットサイズの２倍の１０２４の状態でしばらく待機することになる。そして、そのまま時刻Ｔ６から所定時間Ｔ＿ｓａｍｅ経過後の時刻Ｔ７になると、ＤＭＡＣ５０へ入力したデータのサイズが最大パケットサイズの整数倍から所定時間変化しないことになるので、転送異常検出部５５はＵＳＢＩ／Ｆ１７がＮＵＬＬパケットの受信に失敗していると判断し、転送中断部５１にＸ＿ＰＡＵＳＥ信号をアサートさせてＤＭＡＣ５０へのデータの入力を中断させる。
【００２８】
一方、転送終了情報補償部５４はこの中断を検知すると次のタイミングでＩＮＳ＿ＯＮ信号をアサートしてＵＳＢＩ／Ｆ１７がＮＵＬＬパケットを受信したことにし、ディスクリプタのＥＯＰフラグを１にする。また、カウンタ５２のリセットは時刻Ｔ７の時点で行われる。その後、ＥＯＰフラグを１にする処理が終了した時刻Ｔ９の次のタイミングの時刻Ｔ１０で、転送中断部５１がＸ＿ＰＡＵＳＥ信号をデアサートしてＤＭＡＣ５０へのデータの入力を再開する。
図５に示した例では、それより前のタイミングの時刻Ｔ８でＵＳＢＩ／Ｆ１７がＤＭＡ＿Ｒｅｑ信号をアサートして次の一連のデータの入力を要求している。しかし、この次のタイミングではＸ＿ＰＡＵＳＥ信号がアサートされているのでＤＭＡＣ５０はＤＭＡ＿Ａｃｋ信号をアサートすることができず、転送は中断されることになる。
【００２９】
その後、時刻Ｔ１０でＸ＿ＰＡＵＳＥ信号がデアサートされるとＤＭＡ＿Ａｃｋ信号をアサートできるようになるので、次のタイミングの時刻Ｔ１１でこれをアサートしてデータの入力を受け付ける。そして、その後時刻Ｔ１２までの間に最初のパケットの１００バイトのデータがＤＭＡＣ５０に入力され、カウンタ５２のカウント値は１００になる。そして、その時点でそのパケットのデータの入力が終了するので、ＤＭＡ＿Ｒｅｑ信号とＤＭＡ＿Ａｃｋ信号はデアサートされる。また、ここで入力したパケットは最大サイズより小さいものであるので、ＤＭＡＣ５０はこれが最終パケットであると認識してそのパケットについてのＥＯＰフラグを１にすると共にカウンタ５２を０にクリアして次の一連のデータを受信する準備を整える。
【００３０】
なお、Ｘ＿ＰＡＵＳＥ信号がアサートされている間に外部ユニットからデータが送信されてくると、ＵＳＢＩ／Ｆ１７は外部ユニットに対し、データが受信不可能であることを示すＮＡＫを送信する。このように外部ユニット側にデータを受信できないことを伝えれば、再度外部ユニット側からデータを送信してくるので、データを取りこぼすことがなくなる。その後Ｘ＿ＰＡＵＳＥ信号がデアサートされた場合には、ＵＳＢＩ／Ｆ１７はデータの受信を再開できるので、ＮＡＫの送信を中止し、データ転送が可能になる。
【００３１】
ＵＳＢＩ／Ｆ１７からデータを受信する際に上記のような動作を行った場合、各パケットのディスクリプタは図７に示すようになる。すなわち、２番目と３番目のパケットについてのディスクリプタでＥＯＰフラグが１になっているので、２番目のパケットで一連のデータが一旦終了していることがわかる。
従って、ＵＳＢＩ／Ｆ１７が２番目のパケットの後で転送終了情報であるＮＵＬＬパケットを受信できず、転送終了情報に異常が発生した場合でも、このような異常を認識してそれを補償し、一連のデータを後のデータとつなげてしまうことなく正確に転送することができるといえる。そしてこのことにより、プリンタで印刷に供する印字データの異常により文字化けが発生するといった不具合を防止することができる。また、この際にデータの再送は必要ないので、転送速度を低下させることがなく、高速な転送を行うことができる。
【００３２】
なお、ここではＵＳＢＩ／Ｆ１７と接続したＤＭＡＣ５０にこの発明の特徴となる構成を設けた例について説明したが、他のＩ／Ｆに接続したＤＭＡＣに同様な構成を設けてもよい。この場合、転送終了情報の異常の検出やその補償、さらにデータの入力の中断及び再開には、そのＩ／Ｆにおける通信方式に適した方式を適宜採用すればよい。
また、このようなデータ通信装置をこのようなＡＳＩＣとして構成することは必須ではなく、独立の装置として構成してもよい。データ通信装置の搭載先も、ＭＦＰに限られるものではなく、プリンタ，スキャナ，ファクシミリ装置等の画像処理装置や、コンピュータ周辺機器を始めとする広く一般の電子装置に搭載することも可能である。
【００３３】
【発明の効果】
以上説明してきたように、この発明のデータ通信装置によれば、転送終了情報に異常が発生した場合でも、このような異常を認識してそれを補償し、正確かつ高速にデータ通信を行うことができる。
【図面の簡単な説明】
【図１】この発明のデータ通信装置の実施形態であるＡＳＩＣの構成を示すブロック図である。
【図２】そのＡＳＩＣを備えた画像処理装置の一例であるＭＦＰの構成をコントローラボードを中心に示すブロック図である。
【図３】図１に示したＡＳＩＣにおいてＵＳＢＩ／Ｆによって受信したデータをＤＭＡによって転送する場合の制御タイミングを示すタイミングチャートである。
【図４】同じくデータの受信終了時にＮＵＬＬパケットを受信した場合の制御タイミングを示すタイミングチャートである。
【図５】同じくデータの受信終了時に必要なＮＵＬＬパケットを受信しなかった場合の制御タイミングを示すタイミングチャートである。
【図６】最大サイズの２つのパケットをＤＭＡＣに入力した時点でのディスクリプタの状態を示す図である。
【図７】その後一旦受信を終了して再度別のパケットを入力した時点でのディスクリプタの状態を示す図である。
【図８】図７の場合と同様なパケットを従来のデータ通信装置のＤＭＡＣに入力した場合のディスクリプタの状態を示す図である。
【符号の説明】
１：コントローラボード　　２：ＣＰＵ
７：ＵＳＢＩ／Ｆ　　　　　１０：ＡＳＩＣ
１７：ＵＳＢＩ／Ｆ　　　　３０：アービタ
５０：ＤＭＡＣ　　　　　　５１：転送中断部
５２：カウンタ　　　　　　５３：データバッファ
５４：転送終了情報補償部　５５：転送異常検出部
５６：タイマ　　　　　　　１００：エンジン部
１１０：ＰＣＩバス
【図１】
2004110619.tif 000003
【図２】
2004110619.tif 000004
【図３】
2004110619.tif 000005
【図４】
2004110619.tif 000006
【図５】
2004110619.tif 000007
【図６】
2004110619.tif 000008
【図７】
2004110619.tif 000009
【図８】
2004110619.tif 000010