(57)【特許請求の範囲】
【請求項１】
コンピュータ機器本体におけるバス幅が３２ビットのコンピュータ機器本体側バスとバス幅が６４ビットのコンピュータ機器本体側バスとの双方に接続可能なバス用接続部を有する拡張カードであって、
前記拡張カードのデバイス用接続部を介して所定のデバイスからデータを受信して、受信されたデータを６４ビット単位で先入れ先出し方式により一時的に記憶するＦＩＦＯ型バッファ部と、
バス幅が６４ビットであり、前記ＦＩＦＯ型バッファ部が接続される内部バスと、
前記内部バスに接続されており当該内部バスを介して前記ＦＩＦＯバッファ部にアクセスしてデータを読み出し、読み出されたデータを前記バス用接続部を介して前記コンピュータ機器本体側バスに渡すプロセッサと、
前記バス用接続部が接続される前記コンピュータ機器本体側バスのバス幅を検知するバス幅検知部と、
前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅に応じて、前記内部バスに接続されている前記ＦＩＦＯ型バッファ部へのデータのセット数を変更する書き込みモード設定部と、を有し、
前記書き込みモード設定部は、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が３２ビットである場合、前記ＦＩＦＯ型バッファ部に６４ビット単位で同じ内容のデータを２セット分、セットするための書き込みモードの設定を行うことを特徴とする拡張カード。
【請求項２】
前記プロセッサは、画像処理機能を有するデジタルシグナルプロセッサであることを特徴とする請求項１に記載の拡張カード。
【請求項３】
前記書き込みモード設定部は、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が６４ビットであるときの前記記憶部へのデータ書き込み用クロックの周波数と、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が３２ビットであるときの前記記憶部へのデータ書き込み用クロックの周波数との比を１：２とすることを特徴とする請求項２に記載の拡張カード。
【請求項４】
前記コンピュータ機器本体側バスはＰＣＩバスであることを特徴とする請求項２または３に記載の拡張カード。
【請求項５】
前記所定のデバイスからデータが３２ビット単位で第１のクロックにしたがって転送される場合、前記書き込みモード設定部は、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が３２ビットであるとき、前記第１のクロックにしたがって６４ビット単位でデータを前記記憶部に書き込む第１の書き込みモードの設定を行い、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が６４ビットであるとき、前記第１のクロックに対し周波数が２分の１である第２のクロックにしたがって６４ビット単位でデータを前記記憶部に書き込む第２の書き込みモードの設定を行うことを特徴とする請求項２に記載の拡張カード。
【請求項６】
前記バス幅検知部は、前記バス用接続部が接続される前記コンピュータ機器本体側バスのバスの信号を用いて当該コンピュータ機器本体側バスのバス幅を検知することを特徴とする請求項２〜５のいずれか１つに記載の拡張カード。
【請求項７】
前記データは、画像データであることを特徴とする請求項２〜６のいずれか１つに記載の拡張カード。
【請求項８】
前記所定のデバイスは、原稿を読み取って画像データを取得する画像読取部を備えることを特徴とする請求項２〜７のいずれか１つに記載の拡張カード。
【請求項９】
コンピュータ機器本体におけるバス幅が３２ビットのコンピュータ機器本体側バスとバス幅が６４ビットのコンピュータ機器本体側バスとの双方に接続可能なバス用接続部を有する拡張カードに設けられたＦＩＦＯ型バッファ部にデータを書き込むためのデータ書き込み方法であって、
前記バス用接続部が接続されている前記コンピュータ機器本体側バスのバス幅が３２ビットまたは６４ビットのいずれであるかを検知する段階と、
前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅に応じて、バス幅が６４ビットである内部バスに接続されている前記ＦＩＦＯ型バッファ部へのデータのセット数を変更する書き込みモード設定段階と、
前記拡張カードのデバイス用接続部を介して所定のデバイスからデータを受信して、受信されたデータを６４ビット単位で前記セット数分にわたって前記データを先入れ先出し方式により前記ＦＩＦＯ型バッファ部に一時的に書き込むデータ書き込み段階と、
前記内部バスに接続されているプロセッサが、当該内部バスを介して前記ＦＩＦＯバッファ部にアクセスしてデータを読み出す段階と、
前記プロセッサが、読み出されたデータを前記バス用接続部を介して前記コンピュータ機器本体側バスに渡す段階と、を有し、
前記書き込みモード設定部は、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が３２ビットである場合、前記ＦＩＦＯ型バッファ部に６４ビット単位で同じ内容のデータを２セット分、セットするための書き込みモードに設定し、
前記データ書き込み段階では、前記検知されたバス幅が３２ビットである場合、前記記憶部に６４ビット単位で同じ内容のデータを先入れ先出し方式により２セット分、セットすることを特徴とするデータ書き込み方法。
【請求項１０】
前記プロセッサは、画像処理機能を有するデジタルシグナルプロセッサであることを特徴とする請求項９に記載のデータ書き込み方法。
【請求項１１】
前記書き込みモード設定段階は、検知された前記コンピュータ機器本体側バスのバス幅が６４ビットであるときの前記記憶部へのデータ書き込み用クロックの周波数と、検知された前記コンピュータ機器本体側バスのバス幅が３２ビットであるときの前記記憶部へのデータ書き込み用クロックの周波数との比を１：２とすることを特徴とする請求項１０に記載のデータ書き込み方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＰＣＩ（Peripheral Component Interconnect）バスなどの拡張バスに接続可能な拡張カード、および拡張カードの記憶部へのデータ書き込み方法に関する。
【０００２】
【従来の技術】
ＣＰＵおよびメモリとブリッジを介して結ばれたＰＣＩバスに接続して使用され、コンピュータの機能を拡張するためのＰＣＩカードが知られている。このようなＰＣＩカードの１つとして、画像処理機能を有するＤＳＰ（Digital Signal Processor）を搭載したものが存在する。かかるＤＳＰによる高速処理を実現するため、ＤＳＰを搭載したＰＣＩカードの内部バスは、一般にバス幅が６４ビットの高速バスとされる。
【０００３】
ここで、高速な６４ビット内部バスを利用してスキャナなどの外部デバイスとのデータのやり取りを行うため、ＤＳＰを搭載したＰＣＩカードを外部デバイスインタフェースとして使用することが提案されている。
【０００４】
この外部デバイスインタフェース用のＰＣＩカードを使用して、たとえばスキャナにより取得された画像データをコンピュータ側のメモリに取り込む場合、コンピュータ側からＰＣＩカードに設けられたバッファに対してリード命令が出される。つまり、スキャナから転送される画像データは、ＰＣＩカードのバッファに一旦記憶された後、上記リード命令にしたがって、バッファからＰＣＩバスを通ってコンピュータ側のメモリに送られる。
【０００５】
【発明が解決しようとする課題】
ところで、外部デバイスから入力されるデータのバッファリングを行う場合、一般に、先入れ先出し（ＦＩＦＯ）方式のバッファが使用される。したがって、上記した外部デバイスインタフェース用のＰＣＩカードのバッファとしては、６４ビット内部バス上に設けられることから、６４ビット単位でＦＩＦＯ方式によりデータを蓄積可能なバッファが使用される。これに対し、ＰＣＩカードが接続されるＰＣＩバスとしては、バス幅が３２ビットである３２ビットＰＣＩバスと、バス幅が６４ビットである６４ビットＰＣＩバスとの２種類が存在する。
【０００６】
このため、ＰＣＩカードが３２ビットＰＣＩバスに接続され、ＣＰＵが３２ビットＰＣＩバス経由でバッファにリードアクセスするときは、６４ビットデータに対して２回のリード命令を出す必要がある。ここで、１回目のリード命令は、バッファに記憶されている６４ビットデータのうち下位３２ビットのデータに対する命令であり、２回目のリード命令は、バッファに記憶されている６４ビットデータのうち上位３２ビットのデータに対する命令である。一方、ＰＣＩカードが６４ビットＰＣＩバスに接続され、ＣＰＵが６４ビットＰＣＩバス経由でバッファにリードアクセスするときは、１回のリード命令を出せば済む。
【０００７】
しかしながら、３２ビットＰＣＩバス経由で６４ビットデータに対して２回のリード命令が出される場合、１回ごとにバッファから６４ビット単位でデータが出力されてしまう。すなわち、１回目のリード命令により、６４ビットバッファに記憶されている６４ビットデータのすべてが出力されて、そのうちの下位３２ビットのデータだけが３２ビットＰＣＩバスに転送され、２回目のリード命令により、次の６４ビットデータが出力されて、そのうちの上位３２ビットのデータだけが３２ビットＰＣＩバスに転送されることになる。このため、１回目のリード命令時に出力される６４ビットデータの上位３２ビットのデータ、および２回目のリード命令時に出力される６４ビットデータの下位３２ビットのデータが消滅してしまうという問題があった。
【０００８】
本発明は、かかる課題を解決するためになされたものであり、本発明の目的は、拡張カードが接続される拡張バスのバス幅が３２ビットまたは６４ビットのいずれであっても、拡張カードに設けられたＦＩＦＯ方式の記憶部に拡張バス経由でリードアクセスすることにより欠損のないデータを得ることである。
【０００９】
【課題を解決するための手段】
本発明の目的は、下記する手段により達成される。
【００１０】
（１）コンピュータ機器本体におけるバス幅が３２ビットのコンピュータ機器本体側バスとバス幅が６４ビットのコンピュータ機器本体側バスとの双方に接続可能なバス用接続部を有する拡張カードであって、前記拡張カードのデバイス用接続部を介して所定のデバイスからデータを受信して、受信されたデータを６４ビット単位で先入れ先出し方式により一時的に記憶するＦＩＦＯ型バッファ部と、バス幅が６４ビットであり、前記ＦＩＦＯ型バッファ部が接続される内部バスと、前記内部バスに接続されており当該内部バスを介して前記ＦＩＦＯバッファ部にアクセスしてデータを読み出し、読み出されたデータを前記バス用接続部を介して前記コンピュータ機器本体側バスに渡すプロセッサと、前記バス用接続部が接続される前記コンピュータ機器本体側バスのバス幅を検知するバス幅検知部と、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅に応じて、前記内部バスに接続されている前記ＦＩＦＯ型バッファ部へのデータのセット数を変更する書き込みモード設定部と、を有し、前記書き込みモード設定部は、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が３２ビットである場合、前記ＦＩＦＯ型バッファ部に６４ビット単位で同じ内容のデータを２セット分、セットするための書き込みモードの設定を行うことを特徴とする拡張カード。
（２）前記プロセッサは、画像処理機能を有するデジタルシグナルプロセッサであることを特徴とする上記（１）に記載の拡張カード。
【００１２】
（３）前記書き込みモード設定部は、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が６４ビットであるときの前記記憶部へのデータ書き込み用クロックの周波数と、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が３２ビットであるときの前記記憶部へのデータ書き込み用クロックの周波数との比を１：２とすることを特徴とする上記（２）に記載の拡張カード。
【００１３】
（４）前記コンピュータ機器本体側バスはＰＣＩバスであることを特徴とする上記（２）または（３）に記載の拡張カード。
（５）前記所定のデバイスからデータが３２ビット単位で第１のクロックにしたがって転送される場合、前記書き込みモード設定部は、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が３２ビットであるとき、前記第１のクロックにしたがって６４ビット単位でデータを前記記憶部に書き込む第１の書き込みモードの設定を行い、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が６４ビットであるとき、前記第１のクロックに対し周波数が２分の１である第２のクロックにしたがって６４ビット単位でデータを前記記憶部に書き込む第２の書き込みモードの設定を行うことを特徴とする上記（２）に記載の拡張カード。
（６）前記バス幅検知部は、前記バス用接続部が接続される前記コンピュータ機器本体側バスのバスの信号を用いて当該コンピュータ機器本体側バスのバス幅を検知することを特徴とする上記（２）〜（５）のいずれか１つに記載の拡張カード。
（７）前記データは、画像データであることを特徴とする上記（２）〜（６）のいずれか１つに記載の拡張カード。
（８）前記所定のデバイスは、原稿を読み取って画像データを取得する画像読取部を備えることを特徴とする上記（２）〜（７）のいずれか１つに記載の拡張カード。
【００１４】
（９）コンピュータ機器本体におけるバス幅が３２ビットのコンピュータ機器本体側バスとバス幅が６４ビットのコンピュータ機器本体側バスとの双方に接続可能なバス用接続部を有する拡張カードに設けられたＦＩＦＯ型バッファ部にデータを書き込むためのデータ書き込み方法であって、前記バス用接続部が接続されている前記コンピュータ機器本体側バスのバス幅が３２ビットまたは６４ビットのいずれであるかを検知する段階と、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅に応じて、バス幅が６４ビットである内部バスに接続されている前記ＦＩＦＯ型バッファ部へのデータのセット数を変更する書き込みモード設定段階と、前記拡張カードのデバイス用接続部を介して所定のデバイスからデータを受信して、受信されたデータを６４ビット単位で前記セット数分にわたって前記データを先入れ先出し方式により前記ＦＩＦＯ型バッファ部に一時的に書き込むデータ書き込み段階と、前記内部バスに接続されているプロセッサが、当該内部バスを介して前記ＦＩＦＯバッファ部にアクセスしてデータを読み出す段階と、前記プロセッサが、読み出されたデータを前記バス用接続部を介して前記コンピュータ機器本体側バスに渡す段階と、を有し、前記書き込みモード設定部は、前記バス幅検知部により検知された前記コンピュータ機器本体側バスのバス幅が３２ビットである場合、前記ＦＩＦＯ型バッファ部に６４ビット単位で同じ内容のデータを２セット分、セットするための書き込みモードに設定し、前記データ書き込み段階では、前記検知されたバス幅が３２ビットである場合、前記記憶部に６４ビット単位で同じ内容のデータを先入れ先出し方式により２セット分、セットすることを特徴とするデータ書き込み方法。
（１０）前記プロセッサは、画像処理機能を有するデジタルシグナルプロセッサであることを特徴とする上記（９）に記載のデータ書き込み方法。
（１１）前記書き込みモード設定段階は、検知された前記コンピュータ機器本体側バスのバス幅が６４ビットであるときの前記記憶部へのデータ書き込み用クロックの周波数と、検知された前記コンピュータ機器本体側バスのバス幅が３２ビットであるときの前記記憶部へのデータ書き込み用クロックの周波数との比を１：２とすることを特徴とする上記（１０）に記載のデータ書き込み方法。
【００１５】
【発明の実施の形態】
以下、図面を参照して、本発明の実施の形態を説明する。
【００１６】
図１は、本発明の一実施形態にかかる拡張カードを使用して構成された通信システムの構成を示すブロック図である。
【００１７】
図１に示す通信システムは、多機能周辺機器（ＭＦＰ：Multi-Function Peripheral）７を有しており、このＭＦＰ７は、通信ネットワーク６を介して図示しない他の機器と相互に通信可能に接続されている。通信ネットワーク６は、電話網、ＩＳＤＮ、パケット交換網等の公衆網、およびＬＡＮ、ＷＡＮ、インターネット等のコンピュータネットワークを含むものである。
【００１８】
図１に示すように、ＭＦＰ７は、パソコン１、スキャナ３、操作パネル４、およびプリンタ５を有しており、パソコン１とスキャナ３とは、拡張カードとしてのＰＣＩカード２を介して接続されている。
【００１９】
ＭＦＰ７は、スキャナ３で原稿を読み取って得た画像データをプリンタ５に送って印刷するという複写機としての機能のほかに、スキャナ３で取得された画像データを通信ネットワーク６を介して他の機器に送信するというネットワークスキャナとしての機能と、通信ネットワーク６を介して他の機器から受信したデータをプリンタ５で印刷するというネットワークプリンタとしての機能とを有している。操作パネル４は、ユーザがＭＦＰ７に対して各種操作指示を行うための操作部と各種の表示を行うための表示部とから構成される。
【００２０】
図２は、パソコン１の構成の一例を示すブロック図である。
【００２１】
図２に示すように、パソコン１は、ＣＰＵ１０、ブリッジ１１、メモリ１２、およびＰＣＩスロット１３を有している。ＣＰＵ１０とブリッジ１１とは、フロントサイドバス１４で結ばれ、ブリッジ１１とメモリ１２とは、メモリバス１５で結ばれている。また、ブリッジ１１とＰＣＩスロット１３とは、ＰＣＩバス１６で結ばれている。なお、図２においては、ＰＣＩバス１６を経由したデータ転送に関する構成要素が主として示されており、他の構成要素は図示省略する。
【００２２】
ＣＰＵ１０は、制御プログラムにしたがって、各種の演算および制御を行う。ブリッジ１１は、バス１４〜１６を介したデータの受け渡しを管理する。
【００２３】
メモリ１２は、ＲＯＭおよびＲＡＭから構成されており、制御プログラムおよび各種データが記憶されると共に、プログラムを実行するための作業領域として一時的に使用される。ＰＣＩスロット１３は、ＰＣＩカード２をＰＣＩバス１６に接続するために、ＰＣＩカード２が挿し込まれる接続部であり、通常複数設けられている。
【００２４】
ＰＣＩバス１６は、コンピュータの機能を拡張するための拡張バスの１つであり、バス幅が３２ビットの３２ビットＰＣＩバス、またはより高速なデータ転送が可能なバス幅が６４ビットの６４ビットＰＣＩバスである。
【００２５】
本実施形態では、ＭＦＰ７は、パソコン１をベースとして構成されている。したがって、パソコン１における各種ジョブの管理、周辺外部デバイスとの通信、ファイルフォーマット変換などの処理がソフトウエアにより実行され得る。このため、バージョンアップやバグの修正を容易に行うことができ、しかも、パソコンの性能向上に伴って全体的な処理能力も向上する利点がある。さらに、パソコン１のＰＣＩスロット１３に各種のＰＣＩカード２を接続することにより、パソコン１の機能をハードウエアの面から拡張することが可能とされている。
【００２６】
図３は、ＰＣＩカード２の構成の一例を示すブロック図である。
【００２７】
図３に示すように、ＰＣＩカード２は、ＤＳＰ２０、ＳＤＲＡＭ２１、バッファ部２２、バス用接続部２３、およびデバイス用接続部２４を有している。ＤＳＰ２０、ＳＤＲＡＭ２１、およびバッファ部２２は、高速なデータ転送が可能なバス幅が６４ビットのＳＤＲＡＭバス２６を介して相互に接続されている。
【００２８】
ＤＳＰ２０は、ＰＣＩブリッジ２００、演算部２０１、およびＳＤＲＡＭコントローラ２０２を有している。ＰＣＩブリッジ２００は、バス用接続部２３がパソコン１のＰＣＩスロット１３に挿し込まれることにより、パソコン１のＰＣＩバス１６を介してブリッジ１１と接続される。このＰＣＩブリッジ２００は、ＰＣＩバス１６を介したデータの受け渡しを管理する。演算部２０１は、たとえば画像処理のための高速演算を行う。ＳＤＲＡＭコントローラ２０２は、ＳＤＲＡＭバス２６の制御を行う。ＳＤＲＡＭ２１は、各種演算処理のためのデータなどを記憶するシンクロナスＤＲＡＭである。
【００２９】
バッファ部２２は、書き込み部２２０、バッファ２２１、読み出し部２２２、およびバス幅検知部２２３を有している。書き込み部２２０は、たとえばデバイス用接続部２４を介して転送されるデータを受信し、受信したデータをバッファ２２１に書き込む。バッファ２２１は、書き込み部２２０により書き込まれたデータを６４ビット単位でＦＩＦＯ方式により蓄積する。読み出し部２２２は、バッファ２２１に蓄積されているデータを読み出す。また、読み出し部２２２は、読み出したデータをＳＤＲＡＭバス２６で使用されるデータ形式に変換する。バス幅検知部２２３は、バス用接続部２３が接続されるＰＣＩバス１６のバス幅を検知する。
【００３０】
バス用接続部２３は、ＰＣＩカード２をＰＣＩバス１６に接続するための、パソコン１のＰＣＩスロット１３に挿し込み可能な接続端子である。ここで、ＰＣＩカード２は、３２ビットＰＣＩバスおよび６４ビットＰＣＩバスの任意の一方に接続可能とされている。デバイス用接続部２４は、ＰＣＩカード２をスキャナ３などの外部デバイスと接続するためのコネクタである。
【００３１】
次に、図４を参照して、バッファ部２２の構成の一例を詳細に説明する。
【００３２】
図４に示すように、書き込み部２２０は、データ変換部２２００と、２分周回路２２０１とを有している。データ変換部２２００は、スキャナ３から転送される３２ビットデータS#DATAを６４ビットデータに変換する。２分周回路２２０１は、スキャナ３から３２ビットデータが転送されるときの同期クロックである第１クロックS#CLKから、第１クロックの周波数を２分の１にした第２クロックHS#CLKを生成する。本実施形態では、スキャナ３から転送されるデータの幅は３２ビットであるため、６４ビット単位で記憶されるバッファ２２１に書き込む前に、データ変換部２２００によりデータ幅が６４ビットに変換される。この変換によりデータ幅が２倍となるため、データ変換部２２００におけるデータ同期クロックは、図示のように第２クロックとなる。
【００３３】
バス幅検知部２２３には、REQ64#信号が入力される。REQ64#信号は、ＰＣＩバス１６を介したデータ転送の開始を示すFRAME#信号と同時にＬ（Low）となる場合、バス用接続部２３が接続されるＰＣＩバス１６が６４ビットＰＣＩバスであることを示すＰＣＩバス信号の１つである。バス幅検知部２２３は、Ｄ−ＦＦ（Ｄ−フリップフロップ）から構成されており、FRAME#信号をインバータ２２４で反転した信号が加えられた際のREQ64#信号がラッチされて、Detect64信号として出力される。このように、バス幅検知部２２３は、REQ64#信号を用いてＰＣＩバス１６のバス幅を検知し、ＰＣＩバス１６が６４ビットＰＣＩバスである場合にＬ（Low）、ＰＣＩバス１６が３２ビットＰＣＩバスである場合にＨ（High）となるDetect64信号を出力する。
【００３４】
また、書き込み部２２０は、ＯＲ回路２２０２、ＡＮＤ回路２２０３、２２０４、およびインバータ２２０５から構成される書き込みモード設定部を有している。この書き込みモード設定部は、バス幅検知部２２３からのDetect64信号に応じて、スキャナ３から転送されるデータに基づくバッファ２２１への書き込み内容を規定するための書き込みモードを設定する。具体的には、Detect64信号に応じて、バッファ２２１へのデータ書き込み用クロックが、第１クロックまたは第２クロックのいずれかに切り替えられる。
【００３５】
図５は、スキャナ３の構成の一例を示すブロック図である。
【００３６】
スキャナ３は、ＣＰＵ３０、メモリ３１、画像読取部３２、およびインタフェース３３を備えており、これらはバス３５を介して相互に接続されている。
【００３７】
ＣＰＵ３０は、制御プログラムにしたがって、各種の演算および制御を行う。メモリ３１は、ＲＯＭおよびＲＡＭから構成されており、制御プログラムおよび各種データが記憶されると共に、プログラムを実行するための作業領域として一時的に使用される。画像読取部３２は、原稿を読み取って画像データを取得する。具体的には、原稿読取部３２は、所定の読取位置にセットされた原稿に光を当て、その反射光をＣＣＤなどの受光素子を用いて電気信号に変換し、この電気信号から画像データを生成する。原稿読取部３２は、自動原稿搬送装置（ＡＤＦ）を備えていてもよい。インタフェース３３は、スキャナ３をＰＣＩカード２に接続するためのインタフェースである。
【００３８】
次に、図６〜図８を参照して、ＭＦＰ７における画像読取処理の手順の一例について説明する。ここでは、パソコン１に対する外部デバイスとしてのスキャナ３で原稿を読み取って得た画像データを、パソコン１のメモリ１２に転送する処理について説明する。
【００３９】
まず、図６を参照して、ＰＣＩカード２におけるＤＳＰ２０の動作について説明する。図６のフローチャートに示されるアルゴリズムは、プログラムとして図示しない記憶部に記憶されており、ＣＰＵ１０からのリード命令に基づいてＤＲＡＭコントローラ２０２によって実行される。
【００４０】
ステップＳ１０１では、画像読取処理の間、常に、バッファ２２１がデータで満杯（ＦＵＬＬ）であるか否かが判断される。すなわち、ＳＤＲＡＭコントローラ２０２は、バッファ部２２の読み出し部２２２における図示しないバッファステータスレジスタをポーリングし、バッファ２２１がＦＵＬＬか否かを判断する。バッファ２２１がＦＵＬＬの場合（ステップＳ１０１：ＹＥＳ）、ステップＳ１０２の処理が実行され、バッファ２２１がＦＵＬＬでない場合（ステップＳ１０１：ＮＯ）、バッファ２２１がＦＵＬＬになるまで待機する。
【００４１】
ステップＳ１０２では、バッファ２２１に蓄積されたデータが読み出される。ここで、ＰＣＩカード２が接続されるＰＣＩバス１６が６４ビットＰＣＩバスである場合、１回のリード命令で６４ビットデータが読み出される。一方、ＰＣＩカード２が接続されるＰＣＩバス１６が３２ビットＰＣＩバスである場合、２回のリード命令が組となって発行され、１回目のリード命令でバッファ２２１に記憶されている６４ビットデータのうち下位３２ビットのデータが読み出され、２回目のリード命令でバッファ２２１に記憶されている次の６４ビットデータのうち上位３２ビットのデータが読み出される。この場合、１回目のリード命令時における最初の６４ビットデータのうち上位３２ビットのデータと、２回目のリード命令時における次の６４ビットデータのうち下位３２ビットのデータとは、結果的に破棄されることになる。なお、バッファ２２１から読み出されたデータは、ＰＣＩバス１６を介してパソコン１のメモリ１２に転送される。
【００４２】
ステップＳ１０３では、バッファ２２１内のデータが空（ＥＭＰＴＹ）であるか否かが判断される。すなわち、ＳＤＲＡＭコントローラ２０２は、再度、読み出し部２２２におけるバッファステータスレジスタをポーリングし、バッファ２２１がＥＭＰＴＹか否かを判断する。バッファ２２１がＥＭＰＴＹでない場合（ステップＳ１０３：ＮＯ）、ステップＳ１０２に戻る。一方、バッファ２２１がＥＭＰＴＹとなった場合（ステップＳ１０１：ＹＥＳ）、ステップＳ１０１に戻って、次のデータに対する処理が行われる。
【００４３】
次に、図７を参照して、スキャナ３における画像データの転送処理について説明する。図７のフローチャートに示されるアルゴリズムは、プログラムとしてメモリ３１に記憶されており、ＣＰＵ３０によって実行される。
【００４４】
ステップＳ２０１では、バッファ２２１からの信号に基づいて、ＰＣＩカード２のバッファ２２１がＥＭＰＴＹであるか否かが判断される。バッファ２２１がＥＭＰＴＹの場合（ステップＳ２０１：ＹＥＳ）、ステップＳ２０２の処理が実行され、バッファ２２１がＥＭＰＴＹでない場合（ステップＳ２０１：ＮＯ）、バッファ２２１がＥＭＰＴＹになるまで待機する。
【００４５】
ステップＳ２０２では、原稿を読み取って得た画像データの出力準備が完了したか否かが判断される。画像データの出力準備が完了した場合（ステップＳ２０２：ＹＥＳ）、ステップＳ２０３の処理が実行され、出力準備が完了していない場合（ステップＳ２０２：ＮＯ）、出力準備が完了するまで待機する。
【００４６】
ステップＳ２０３では、ＰＣＩカード２に対して、書き込み要求が出力される。すなわち、ＰＣＩカード２のバッファ２２１へのデータ書き込みを要求するためのWRREQ信号がＨにドライブされる。
【００４７】
ステップＳ２０４では、ＰＣＩカード２に対して、前述した第１クロックに同期して、取得した画像データが３２ビット単位で出力される。
【００４８】
ステップＳ２０５では、バッファ２２１からの信号に基づいて、ＰＣＩカード２のバッファ２２１がＦＵＬＬであるか否かが判断される。バッファ２２１がＦＵＬＬでない場合（ステップＳ２０５：ＮＯ）、ステップＳ２０４に戻る。一方、バッファ２２１がＦＵＬＬとなった場合（ステップＳ２０５：ＹＥＳ）、ステップＳ２０１に戻って、次のデータに対する処理が行われる。
【００４９】
次に、図４、図８〜図１０を参照して、ＰＣＩカード２におけるバッファ部２２の動作について説明する。図８は、ＰＣＩカード２におけるバッファ部２２の動作を示すフローチャート、図９は、ＰＣＩカード２が６４ビットＰＣＩバスに接続された場合のＰＣＩバス信号の一例を示すタイミングチャート、図１０は、ＰＣＩカード２が３２ビットＰＣＩバスに接続された場合のＰＣＩバス信号の一例を示すタイミングチャートである。
【００５０】
ステップＳ３０１では、ＰＣＩバス１６のFRAME#信号がＬであるか否かが判断される。図９および図１０に示すように、FRAME#信号は、ＨからＬになることによってＰＣＩバス１６を介したデータ転送の開始を示す。FRAME#信号がＬである場合（ステップＳ３０１：ＹＥＳ）、ステップＳ３０２の処理が実行され、FRAME#信号がＬでない場合（ステップＳ３０１：ＮＯ）、FRAME#信号がＬとなるまで待機する。
【００５１】
ステップＳ３０２では、ＰＣＩバス１６のREQ64#信号がＬであるか否かが判断される。REQ64#信号がＬである場合（ステップＳ３０２：ＹＥＳ、図９参照）、バス幅検知部２２３のDetect64信号がＬとなり、バス用接続部２３が接続されたＰＣＩバス１６が６４ビットＰＣＩバスであると判断され、ステップＳ３０３の処理が実行される。一方、REQ64#信号がＬでない場合（ステップＳ３０２：ＮＯ、図１０参照）、バス幅検知部２２３のDetect64信号がＨとなり、バス用接続部２３が接続されたＰＣＩバス１６が３２ビットＰＣＩバスであると判断され、ステップＳ３０４の処理が実行される。
【００５２】
ステップＳ３０３では、バッファ２２１の書き込みクロック端子WRCLKに入力されるデータ書き込み用クロックが、第２クロック、すなわちスキャナ３から３２ビットデータが転送されるときの同期クロックである第１クロックの周波数を２分の１にした第２クロックに設定される。
【００５３】
ステップＳ３０４では、バッファ２２１の書き込みクロック端子WRCLKに入力されるデータ書き込み用クロックが、第１クロック、すなわちスキャナ３から３２ビットデータが転送されるときの同期クロックである第１クロックに設定される。
【００５４】
なお、図６〜図８に示される処理の実行は、ＰＣＩバス１６を介して所定の全データが転送されたときに終了する。
【００５５】
図６〜図８を参照して説明したように、ＰＣＩカード２が接続されるＰＣＩバスが６４ビットＰＣＩバスである場合、スキャナ３から３２ビットデータが転送されるときの同期クロックである第１クロックの周波数を２分の１にした第２クロックを用いてバッファ２２１にデータが書き込まれる。このときのデータ書き込み用クロックである第２クロックは、データ変換部２２２０におけるデータ同期クロックと同じであるため、バッファ２２１に６４ビット単位で１回ずつデータを書き込むことになる。したがって、６４ビットＰＣＩバスを介して１回のリード命令で６４ビットデータを読み出すことができる。すなわち、図９に示すように、たとえばデータＤ１、Ｄ２の合計６４ビットデータが一度に転送される。なお、ここでは、１回のアドレス信号の送出で複数のデータを連続的に転送するバースト転送が行われる。
【００５６】
一方、ＰＣＩカード２が接続されるＰＣＩバス１６が３２ビットＰＣＩバスである場合、スキャナ３から３２ビットデータが転送されるときの同期クロックである第１クロックを用いてバッファ２２１にデータが書き込まれる。このときのデータ書き込み用クロックである第１クロックは、データ変換部２２２０におけるデータ同期クロックである第２クロックに対して周波数が２倍となるため、バッファ２２１に６４ビット単位で同じ内容のデータを２回書き込むことになる。したがって、３２ビットＰＣＩバスを介して、１回目のリード命令でバッファ２２１に記憶されている６４ビットデータのうち下位３２ビットのデータ（たとえば図１０のデータＤ１）が読み出され、２回目のリード命令でバッファ２２１に記憶されている次の６４ビットデータのうち上位３２ビットのデータ（たとえば図１０のデータＤ２）が読み出されるリードアクセスが行われた場合であっても、スキャナ３から転送される画像データを欠損することなく読み出すことが可能となる。
【００５７】
このように、本実施形態によれば、バス幅検知部２２３により検知されたＰＣＩバス１６のバス幅に応じて、スキャナ３から転送される画像データに基づくバッファ２２１への書き込み内容を規定するための書き込みモードを設定する。したがって、ＰＣＩバス１６のバス幅が３２ビットである場合にバッファ２２１に６４ビット単位で同じ内容のデータを２回書き込むことが可能となり、ＰＣＩカード２が接続されるＰＣＩバス１６のバス幅が３２ビットまたは６４ビットのいずれであっても、ＰＣＩカード２に設けられたＦＩＦＯ方式のバッファ２２１にＰＣＩバス１６経由でリードアクセスすることにより欠損のないデータを得ることができる。
【００５８】
本発明は、上記した実施形態のみに限定されるものではなく、特許請求の範囲内において、種々改変することができる。
【００５９】
たとえば、上記した実施形態では、バッファ２２１へ書き込むためのデータを転送する外部デバイスとして原稿を読み取るタイプのスキャナを例示して説明したが、外部デバイスは特に上記スキャナに限定されるものではなく、フィルムスキャナ、デジタルカメラ、汎用デバイスなどのクロック同期でデータ転送を行うデバイスであれば何でもよい。さらに、本発明は、外部デバイスインタフェース用のＰＣＩカードに限定されるものではなく、ＰＣＩカード２内におけるたとえば画像データに対して圧縮処理を行う圧縮デバイスなどの所定のデバイスからバッファ２２１へ書き込むためのデータを転送する場合にも適用可能である。
【００６０】
また、上記した実施形態では、ＰＣＩバスに接続可能なＰＣＩカードを例示して説明したが、ＰＣＩバスと同様なバス幅を有する他の拡張バスに接続可能な拡張カードにも適用可能である。
【００６１】
また、上記した実施形態では、ＰＣＩカード２に対して、３２ビット単位でデータが転送される場合について説明したが、本発明はこれに限定されるものではなく、たとえば６４ビット単位などの他のビット単位でデータが転送される場合にも適用可能である。この場合も上記した実施形態と同様に、ＰＣＩバスのバス幅が６４ビットであるときのバッファ２２１へのデータ書き込み用クロックの周波数と、ＰＣＩバスのバス幅が３２ビットであるときのバッファ２２１へのデータ書き込み用クロックの周波数との比を１:２にする必要がある。ただし、ＰＣＩバスのバス幅が６４ビットである場合、外部デバイスから６４ビットデータが転送されるときの同期クロックを用いてバッファ２２１にデータが書き込まれ、一方、ＰＣＩバスのバス幅が３２ビットである場合、外部デバイスから６４ビットデータが転送されるときの同期クロックの周波数を２倍にしたクロックを用いてバッファ２２１にデータが書き込まれる点で、上記した実施形態と相違するものとなる。
【００６２】
また、本発明は、好ましくは画像データを転送する場合に適用されるが、これに限定されるものではなく、他のデータを転送する場合にも適用可能である。
【００６３】
また、上記した実施形態では、ＰＣＩカード２が適用される対象がＭＦＰである場合について説明したが、本発明はこれに限定されるものではなく、複写機、画像処理装置、コンピュータなどの他の機器にも適用可能である。
【００６９】
【発明の効果】
以上説明したように、本発明によれば、検知されたコンピュータ機器本体側バスのバス幅が３２ビットである場合、前記記憶部に６４ビット単位で同じ内容のデータを先入れ先出し方式により２セット分、セットするので、拡張カードが接続される拡張バスのバス幅が３２ビットまたは６４ビットのいずれであっても、拡張カード内でコンピュータ機器本体側バスへデータを渡すプロセッサを変更することなく、プロセッサが６４ビット幅の内部バスを介してＦＩＦＯ型バッファ部へアクセスする方式を維持したまま、拡張カードに設けられた先入れ先出し方式の記憶部に拡張バス経由でリードアクセスすることにより欠損のないデータを得ることができる。
【図面の簡単な説明】
【図１】  本発明の一実施形態にかかる拡張カードを使用して構成された通信システムの構成を示すブロック図である。
【図２】  パソコン１の構成の一例を示すブロック図である。
【図３】  ＰＣＩカード２の構成の一例を示すブロック図である。
【図４】  バッファ部２２の構成の一例を詳細に示す図である。
【図５】  スキャナ３の構成の一例を示すブロック図である。
【図６】  ＰＣＩカード２におけるＤＳＰ２０の動作を示すフローチャートである。
【図７】  スキャナ３における画像データの転送処理を示すフローチャートである。
【図８】  ＰＣＩカード２におけるバッファ部２２の動作を示すフローチャートである。
【図９】  ＰＣＩカード２が６４ビットＰＣＩバスに接続された場合のＰＣＩバス信号の一例を示すタイミングチャートである。
【図１０】  ＰＣＩカード２が３２ビットＰＣＩバスに接続された場合のＰＣＩバス信号の一例を示すタイミングチャートである。
【符号の説明】
１…パソコン、
１０…ＣＰＵ、
１１…ブリッジ、
１２…メモリ、
１３…ＰＣＩスロット、
１６…ＰＣＩ       バス、
２…ＰＣＩカード（拡張カード）、
２０…ＤＳＰ、
２２…バッファ部、
２２０…書き込み部、
２２１…バッファ、
２２２…読み出し部、
２２３…バス幅検知部、
２３…バス用接続部、
２６…ＳＤＲＡＭバス、
３…スキャナ（デバイス）、
３２…画像読取部、
４…操作パネル、
５…プリンタ、
６…通信ネットワーク、
７…ＭＦＰ。
【図１】
0004135374.tif 000002
【図２】
0004135374.tif 000003
【図３】
0004135374.tif 000004
【図４】
0004135374.tif 000005
【図５】
0004135374.tif 000006
【図６】
0004135374.tif 000007
【図７】
0004135374.tif 000008
【図８】
0004135374.tif 000009
【図９】
0004135374.tif 000010
【図１０】
0004135374.tif 000011