| 【発明の名称】 |
SDRAMインターフェイス回路およびSDRAM制御方法ならびにSDRAMインターフェイス回路を備えた画像処理装置 |
| 【発明者】 |
【氏名】野口 裕之
|
| 【要約】 |
【課題】DPS、CPU等の制御装置の負荷を軽減し、プログラムや回路の構成を簡略化することができるSDRAMインターフェイス回路を提供すること。
【解決手段】DSP100とSDRAM300とを接続するSDRAMインターフェイス回路200において、受信データバッファ700は、DSP100から入力された読み出しアドレスを複数のバッファに順次保存する。コマンド制御ブロック800は、複数のバッファに保存した読み出しアドレスの連続性を判定し、読み出しアドレスにそれ以上連続性がないと判定した場合にそこまでで最初の読み出しアドレスを開始アドレスとするリードコマンドを生成、出力する。SDRAM300はリードコマンドに応じてリードデータを出力する。受信データバッファ700は、リードデータを複数のバッファに順次保存する。受信データバッファ700は保存したリードデータをDSP100へ適宜出力する。 |
【特許請求の範囲】
【請求項1】 制御装置とSDRAMとを接続するSDRAMインターフェイス回路であって、前記制御装置から入力された読み出しアドレスを保存する複数のアドレスバッファ手段と、前記複数のアドレスバッファ手段に保存した読み出しアドレスの連続性を判定する判定手段と、前記判定手段が前記読み出しアドレスにそれ以上連続性がないと判定した場合にそこまでに前記複数のアドレスバッファ手段に保存した最初の読み出しアドレスを開始アドレスとするリードコマンドを生成、出力するコマンド生成手段と、前記リードコマンドに応じて前記SDRAMから入力されたリードデータを保存する複数のデータバッファ手段と、前記複数のデータバッファ手段に保存したリードデータを前記制御装置へ出力するリードデータ出力手段と、を具備することを特徴とするSDRAMインターフェイス回路。 【請求項2】 制御装置からのリードアクセスをカウントするリードカウンタ手段をさらに具備し、コマンド生成手段は前記リードカウンタ手段によるカウント値およびSDRAMのバースト長から前記カウント値に最適なバースト長を求め、変更するコマンドを生成、出力することを特徴とする請求項1記載のSDRAMインターフェイス回路。 【請求項3】 制御装置からのリードアクセスをカウントするリードカウンタ手段と、前記リードカウンタ手段によるカウント値を超えるリードデータがSDRAMから入力された場合当該リードデータを複数のデータバッファ手段に保存することなく破棄する入力制御手段と、をさらに具備することを特徴とする請求項1または請求項2記載のSDRAMインターフェイス回路。 【請求項4】 制御装置とSDRAMとを接続するSDRAMインターフェイス回路であって、前記制御装置から入力されたライトデータおよびその書き込みアドレスを保存する複数のバッファ手段と、前記複数のバッファ手段に保存した書き込みアドレスの連続性を判定する判定手段と、前記判定手段が前記書き込みアドレスにそれ以上連続性がないと判定した場合にそこまでに前記複数のバッファ手段に保存した最初の書き込みアドレスを開始アドレスとするライトコマンドを生成、出力するコマンド生成手段と、前記ライトコマンド出力後所定のタイミングで前記複数のバッファ手段に保存したライトデータを順次出力するライトデータ出力手段と、を具備することを特徴とするSDRAMインターフェイス回路。 【請求項5】 制御装置からのライトアクセスをカウントするライトカウンタ手段をさらに具備し、コマンド生成手段は前記ライトカウンタ手段によるカウント値およびSDRAMのバースト長から前記カウント値に最適なバースト長を求め、変更するコマンドを生成、出力することを特徴とする請求項4記載のSDRAMインターフェイス回路。 【請求項6】 制御装置からのライトアクセスをカウントするライトカウンタ手段と、前記ライトカウンタ手段によるカウント値を超えるライトデータを保存するバッファ手段からのライトデータの出力をマスクする出力制御手段と、をさらに具備することを特徴とする請求項4または請求項5記載のSDRAMインターフェイス回路。 【請求項7】 リフレッシュタイミングの間隔を自ら測定し、コマンド生成手段へリフレッシュのタイミングを通知するリフレッシュサイクルカウント手段をさらに具備し、コマンド生成手段は前記通知があったならばリフレッシュコマンドを生成、出力してSDRAMにリフレッシュを実行させることを特徴とする請求項1から請求項6のいずれかに記載のSDRAMインターフェイス回路。 【請求項8】 SDRAMのモードレジスタの設定内容を保持する設定保持手段をさらに具備し、コマンド生成手段はその設定内容に従ってモードセットコマンドを生成および出力して前記モードレジスタを設定することを特徴とする請求項1から請求項7のいずれかに記載のSDRAMインターフェイス回路。 【請求項9】 制御装置からの入力アドレスに基づいてSDRAMでのアドレッシングシーケンスでアドレスの繰り上がり無視が生じるか否か判定し、アドレスの繰り上がり無視が生じる場合前記コマンド生成手段に対してコマンドの再生成を指示するコマンド再生成判定手段をさらに具備することを特徴とする請求項1から請求項8のいずれかに記載のSDRAMインターフェイス回路。 【請求項10】 制御装置からの信号に基づいてSDRAMを制御するSDRAM制御方法であって、前記制御装置から入力された読み出しアドレスを保存し、前記保存した読み出しアドレスの連続性を判定し、前記判定手段が前記読み出しアドレスにそれ以上連続性がないと判定した場合にそこまでに保存した最初の読み出しアドレスを開始アドレスとするリードコマンドを生成および出力し、前記リードコマンドに応じて前記SDRAMから入力されたリードデータを前記制御装置へ出力するリードデータ出力することを特徴とするSDRAM制御方法。 【請求項11】 制御装置からのリードアクセスをカウントし、そのカウント値およびSDRAMのバースト長から前記カウント値に最適なバースト長を求め、変更するコマンドを生成、出力することを特徴とする請求項10記載のSDRAM制御方法。 【請求項12】 制御装置からのリードアクセスをカウントし、そのカウント値を超えるリードデータがSDRAMから入力された場合当該リードデータを複数のデータバッファ手段に保存することなく破棄することを特徴とする請求項10または請求項11記載のSDRAM制御方法。 【請求項13】 制御装置からの信号に基づいてSDRAMを制御するSDRAM制御方法であって、前記制御装置から入力されたライトデータおよびその書き込みアドレスを保存し、前記保存した書き込みアドレスの連続性を判定し、前記書き込みアドレスにそれ以上連続性がないと判定した場合にそこまでに保存した最初の書き込みアドレスを開始アドレスとするライトコマンドを生成し、出力し、前記ライトコマンド出力後所定のタイミングで前記保存したライトデータを順次出力することを特徴とするSDRAM制御方法。 【請求項14】 制御装置からのライトアクセスをカウントし、そのカウント値およびSDRAMのバースト長から前記カウント値に最適なバースト長を求め、変更するコマンドを生成、出力することを特徴とする請求項13記載のSDRAM制御方法。 【請求項15】 制御装置からのライトアクセスをカウントし、そのカウント値を超えるライトデータの出力をマスクすることを特徴とする請求項13または請求項14記載のSDRAM制御方法。 【請求項16】 リフレッシュタイミングの間隔を自ら測定し、リフレッシュのタイミングにリフレッシュコマンドを生成、出力してSDRAMにリフレッシュを実行させることを特徴とする請求項10から請求項15のいずれかに記載のSDRAM制御方法。 【請求項17】 SDRAMのモードレジスタの設定内容を保持し、その設定内容に従ってモードセットコマンドを生成および出力して前記モードレジスタを設定することを特徴とする請求項10から請求項16のいずれかに記載のSDRAM制御方法。 【請求項18】 制御装置からの入力アドレスに基づいてSDRAMでのアドレッシングシーケンスでアドレスの繰り上がり無視が生じるか否か判定し、アドレスの繰り上がり無視が生じる場合コマンドを再生成および出力することを特徴とする請求項10から請求項17のいずれかに記載のSDRAM制御方法。 【請求項19】 原稿画像を走査して読み取られた画像データと、前記画像データに対応する走査位置とを順次入力し、走査位置に基づいて前記画像データをSDRAMに格納する画像処理装置であって、重複して走査する重なり走査領域内の、前記画像データと前記SDRAMに格納された格納データとから前記走査位置の位置ずれを検出し、前記位置ずれを補正する補正値を出力する位置ずれ検出手段と、前記補正値に基づいて前記走査位置を補正する補正手段と、補正された走査位置に基づいて前記画像データを前記SDRAMに格納する写像手段と、を具備し、前記位置ずれ補正手段および/または前記写像手段と前記SDRAMとを接続する請求項1から請求項9のいずれかに記載のSDRAMインターフェイス回路を備えていることを特徴とする画像処理装置。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は、SDRAMインターフェイス回路およびSDRAM制御方法ならびにSDRAMインターフェイス回路を備えた画像処理装置に関する。 【0002】 【従来の技術】近年、非同期DRAMに代わる高速DRAMとして、シンクロナスDRAM(以下、SDRAMという)が開発されている。SDRAMは、従来のDRAMの特徴に加えて、外部クロックに同期した入出力回路構成、コマンド形式のアクセス、バースト転送による連続アクセス、多バンク構成などの特徴を有する。このようなSDRAMを画像バッファ等に利用すれば、例えばCPU、DPSのような処理回路とSDRAMとのクロックの共通化によりアクセス時のロスを少なくできる。また、バースト転送を利用することでDPSやCPUをノーウエイトで動作させることができる。 【0003】上述のSDRAMに対し、DSP等からデータをリードおよびライトするために、DSP等とSDRAMとの間にSDRAMインターフェイス回路を置いている。従来のSDRAMインターフェイス回路は、DSP等からの制御信号を受け取り、SDRAM用の信号に変換し、SDRAMを制御する。 【0004】 【発明が解決しようとする課題】しかしながら、従来のSDRAMインターフェイス回路は、DSP等からの制御信号を受け取りSDRAM用の信号に変換するような受動的な回路で構成しているので、DSP等がSDRAMを管理している。このため、DSP等が実行するプログラムにSDRAM制御のための手順を持たせ、DSP等にSDRAM制御のための動作を実行させる必要がある。 【0005】例えば、SDRAMは単位時間毎にリフレッシュを行う必要がある。このリフレッシュはSDRAMに対してリフレッシュコマンドを入力することにより行われる。従って、SDRAMがDSP等の管理下にある場合、DSP等が時間を測り、特定の周期でSDRAMインターフェイス回路にリフレッシュを命令する制御信号を入力する。SDRAMインターフェイス回路は、この制御信号をリフレッシュコマンドに変換し、SDRAMへ入力する。 【0006】また、SDRAMへデータをリード/ライトする場合、SDRAMに対するクロックイネーブル(CKE)信号をアクティブにした状態で、バンクアクティブ(ACT)コマンドによりバンクをアクティブにした後、リード(RD)/ライト(WT)コマンドをSDRAMへ入力しアドレスを指定し、データをリード/ライトする。 【0007】このリード/ライト動作を行うために、DSP等は何らかの制御信号を出力して、SDRAMインターフェイス回路にSDRAMへCKE信号をアクティブにする。次いで、アドレスデータをSDRAMインターフェイス回路に入力する。SDRAMインターフェイス回路は、アドレスデータからバンクおよびアドレスを決定し、バンクアクティブコマンドおよびリード/ライトコマンドをSDRAMへ入力する。 【0008】また、データのリード/ライトは、上記リフレッシュの合間に行う必要があるので、DSP等はSDRAMの状態を監視し、最適なタイミングにコマンドをSDRAMへ入力する必要がある。もしコマンドの入力が不適切なタイミングで行われたならば、ライトしたはずのデータを壊してしまったり、データのリードを上手く行えないことがある。 【0009】このようにSDRAMインターフェイス回路があるものの、SDRAMの制御がDSP等の下にある場合、DSP等の負荷が大きく、また、DSP等が実行するプログラムや回路の構成が複雑になり、プログラマが複雑なSDRAM制御に頭を悩ませている。 【0010】本発明は、かかる点に鑑みてなされたものであり、DSP、CPU等の制御装置の負荷を軽減し、プログラムや回路の構成を簡略化することができるSDRAMインターフェイス回路およびSDRAM制御方法ならびにSDRAMインターフェイス回路を備えた画像処理装置を提供することを目的とする。 【0011】 【課題を解決するための手段】この課題を解決するために、DSP、CPU等の制御装置とSDRAMとを接続するSDRAMインターフェイス回路において、制御装置からのアクセス要求(リードアクセス、ライトアクセスなど)を保留し、そのアドレスの連続性を調べ、それ以上のアドレスの連続性がなければそれまで保留したアクセス要求に従ってアドレスを生成、出力し、SDRAMを制御することとした。 【0012】これにより、SDRAMインターフェイス回路が制御装置に代わってSDRAMを制御するので、DSP等の負荷を軽減し、プログラマや回路設計者は複雑なSDRAM制御から逃れることができる。 【0013】 【発明の実施の形態】第1に、本発明は、上記目的を達成するために、制御装置とSDRAMとを接続するSDRAMインターフェイス回路であって、前記制御装置から入力された読み出しアドレスを保存する複数のアドレスバッファ手段と、前記複数のアドレスバッファ手段に保存した読み出しアドレスの連続性を判定する判定手段と、前記判定手段が前記読み出しアドレスにそれ以上連続性がないと判定した場合にそこまでに前記複数のアドレスバッファ手段に保存した最初の読み出しアドレスを開始アドレスとするリードコマンドを生成、出力するコマンド生成手段と、前記リードコマンドに応じて前記SDRAMから入力されたリードデータを保存する複数のデータバッファ手段と、前記複数のデータバッファ手段に保存したリードデータを前記制御装置へ出力するリードデータ出力手段と、を具備することを特徴とするSDRAMインターフェイス回路を提供する。 【0014】本発明は、かかる構成により、制御装置から特別なコマンドがなくても、アドレスの連続性を自ら判定し、適切なタイミングでリードコマンドを生成、出力し、SDRAMから入力されたリードデータを制御装置へ適宜出力するので、制御装置は、SDRAMへのリードコマンド生成等を行う必要がない。 【0015】また、本発明において、制御装置からのリードアクセスをカウントするリードカウンタ手段をさらに具備し、コマンド生成手段は前記リードカウンタ手段によるカウント値およびSDRAMのバースト長から前記カウント値に最適なバースト長を求め、変更するコマンドを生成、出力しても良い。 【0016】この構成により、制御装置から特別なコマンドがなくても、最適なバースト長を求め、SDRAMのバースト長を変更するので、制御装置は、SDRAMへのモードセットコマンドの生成等を行う必要がない。 【0017】また、本発明において、制御装置からのリードアクセスをカウントするリードカウンタ手段と、前記リードカウンタ手段によるカウント値を超えるリードデータがSDRAMから入力された場合当該リードデータを複数のデータバッファ手段に保存することなく破棄する入力制御手段と、をさらに具備しても良い。 【0018】この構成により、制御装置から特別なコマンドがなくても、制御装置が必要とするデータ数とバースト長とのずれを調整し、必要なリードデータのみを制御装置へ出力するので、制御装置は、不必要なリードデータの切り捨て等を行う必要がない。 【0019】第2に、本発明は、上記目的を達成するために、制御装置とSDRAMとを接続するSDRAMインターフェイ回路であって、前記制御装置から入力されたライトデータおよびその書き込みアドレスを保存する複数のバッファ手段と、前記複数のバッファ手段に保存した書き込みアドレスの連続性を判定する判定手段と、前記判定手段が前記書き込みアドレスにそれ以上連続性がないと判定した場合にそこまでに前記複数のバッファ手段に保存した最初の書き込みアドレスを開始アドレスとするライトコマンドを生成、出力するコマンド生成手段と、前記ライトコマンド出力後所定のタイミングで前記複数のバッファ手段に保存したライトデータを順次出力するライトデータ出力手段と、を具備することを特徴とするSDRAMインターフェイス回路を提供する。 【0020】本発明は、かかる構成により、制御装置から特別なコマンドがなくても、アドレスの連続性を自ら判定し、適切なタイミングでライトコマンドを生成、出力し、SDRAMへライトデータを適宜出力するので、制御装置は、SDRAMへのライトコマンド生成等を行う必要がない。 【0021】また、本発明において、制御装置からのライトアクセスをカウントするライトカウンタ手段をさらに具備し、コマンド生成手段は前記ライトカウンタ手段によるカウント値およびSDRAMのバースト長から前記カウント値に最適なバースト長を求め、変更するコマンドを生成、出力しても良い。 【0022】この構成により、制御装置から特別なコマンドがなくてても、最適なバースト長を求め、SDRAMのバースト長を変更するので、制御装置は、SDRAMへのモードセットコマンドの生成等を行う必要がない。 【0023】また、本発明において、制御装置からのライトアクセスをカウントするライトカウンタ手段と、前記ライトカウンタ手段によるカウント値を超えるライトデータを保存するバッファ手段からのライトデータの出力をマスクする出力制御手段と、をさらに具備しても良い。 【0024】この構成により、制御装置から特別なコマンドがなくても、制御装置がライトするデータ数とバースト長とのずれを調整し、意図しないライトデータがSDRAMへ出力されないようにしているので、制御装置は、かかる事態を考慮することなくライトデータを出力できる。 【0025】また、上記第1、第2の発明において、リフレッシュタイミングの間隔を自ら測定し、コマンド生成手段へリフレッシュのタイミングを通知するリフレッシュサイクルカウント手段をさらに具備し、コマンド生成手段は前記通知があったならばリフレッシュコマンドを生成、出力してSDRAMにリフレッシュを実行させても良い。 【0026】この構成により、制御装置から特別なコマンドがなくても、適切なリフレッシュタイミングでSDRAMへリフレッシュコマンドを生成、出力するので、制御装置は、リフレッシュを考慮することなくSDRAMへアクセス要求を行っても問題がない。 【0027】また、上記第1、第2の発明において、SDRAMのモードレジスタの設定内容を保持する設定保持手段をさらに具備し、コマンド生成手段はその設定内容に従ってモードセットコマンドを生成および出力して前記モードレジスタを設定しても良い。 【0028】この構成により、制御装置から特別なコマンドがなくても、起動時にSDRAMへモードセットコマンドを生成、出力するので、制御装置は、起動時にSDRAMのモードセットのための制御を行う必要がない。また、制御装置から設定内容をセットすることによりSDRAMのコマンドレジスタを適宜設定および変更し得る。 【0029】また、上記第1、第2の発明において、制御装置からの入力アドレスに基づいてSDRAMでのアドレッシングシーケンスでアドレスの繰り上がり無視が生じるか否か判定し、アドレスの繰り上がり無視が生じる場合前記コマンド生成手段に対してコマンドの再生成を指示するコマンド再生成判定手段をさらに具備しても良い。 【0030】この構成により、SDRAMでアドレスの繰り上がり無視が生じて制御装置が意図しないアドレスに対してデータをリード/ライトするという不都合を、制御装置から特別なコマンドなしに解消するので、制御装置はSDRAMにアクセス要求を行う際にアドレスの繰り上がり無視を考慮する必要がない。 【0031】第3に、本発明は、上記目的を達成するために、制御装置からの信号に基づいてSDRAMを制御するSDRAM制御方法であって、前記制御装置から入力された読み出しアドレスを保存し、前記保存した読み出しアドレスの連続性を判定し、前記判定手段が前記読み出しアドレスにそれ以上連続性がないと判定した場合にそこまでに保存した最初の読み出しアドレスを開始アドレスとするリードコマンドを生成および出力し、前記リードコマンドに応じて前記SDRAMから入力されたリードデータを前記制御装置へ出力することを特徴とするSDRAM制御方法を提供する。 【0032】本発明は、かかる方法により、制御装置から特別なコマンドがなくとも、アドレスの連続性を判定し、適切なタイミングでリードコマンドを生成、出力し、SDRAMから入力されたリードデータを制御装置へ適宜出力するので、制御装置は、SDRAMへのリードコマンド生成等を行う必要がない。 【0033】また、本発明において、制御装置からのリードアクセスをカウントし、そのカウント値およびSDRAMのバースト長から前記カウント値に最適なバースト長を求め、変更するコマンドを生成、出力しても良い。 【0034】この方法により、制御装置から特別なコマンドがなくてとも、最適なバースト長を求め、SDRAMのバースト長を変更するので、制御装置は、SDRAMへのモードセットコマンドの生成等を行う必要がない。 【0035】また、本発明において、制御装置からのリードアクセスをカウントし、そのカウント値を超えるリードデータがSDRAMから入力された場合当該リードデータを複数のデータバッファ手段に保存することなく破棄しても良い。 【0036】この方法により、制御装置から特別なコマンドがなくても、制御装置が必要とするデータ数とバースト長とのずれを調整し、必要なリードデータのみを制御装置へ出力するので、制御装置は、不必要なリードデータの切り捨て等を行う必要がない。 【0037】第4に、本発明は、上記目的を達成するために、制御装置からの信号に基づいてSDRAMを制御するSDRAM制御方法であって、前記制御装置から入力されたライトデータおよびその書き込みアドレスを保存し、前記保存した書き込みアドレスの連続性を判定し、前記書き込みアドレスにそれ以上連続性がないと判定した場合にそこまでに保存した最初の書き込みアドレスを開始アドレスとするライトコマンドを生成し、出力し、前記ライトコマンド出力後所定のタイミングで前記保存したライトデータを順次出力することを特徴とするSDRAM制御方法を提供する。 【0038】本発明は、かかる方法により、制御装置から特別なコマンドがなくとも、アドレスの連続性を自ら判定し、適切なタイミングでライトコマンドを生成、出力し、SDRAMへライトデータを適宜出力するので、制御装置は、SDRAMへのライトコマンド生成等を行う必要がない。 【0039】また、本発明において、制御装置からのライトアクセスをカウントし、そのカウント値およびSDRAMのバースト長から前記カウント値に最適なバースト長を求め、変更するコマンドを生成、出力しても良い。 【0040】この方法により、制御装置から特別なコマンドがなくてとも、最適なバースト長を求め、SDRAMのバースト長を変更するので、制御装置は、SDRAMへのモードセットコマンドの生成等を行う必要がない。 【0041】また、本発明において、制御装置からのライトアクセスをカウントし、そのカウント値を超えるライトデータの出力をマスクしても良い。 【0042】この方法により、制御装置から特別なコマンドがなくても、制御装置がライトするデータ数とバースト長とのずれを調整し、意図しないライトデータがSDRAMへ出力されないようにしているので、制御装置は、かかる事態を考慮することなくライトデータを出力できる。 【0043】また、上記第3、第4の発明において、リフレッシュタイミングの間隔を自ら測定し、リフレッシュのタイミングにリフレッシュコマンドを生成、出力してSDRAMにリフレッシュを実行させても良い。 【0044】この方法により、制御装置から特別なコマンドがなくても、適切なリフレッシュタイミングでSDRAMへリフレッシュコマンドを生成、出力するので、制御装置は、リフレッシュを考慮することなくSDRAMへアクセス要求を行っても問題がない。 【0045】また、上記第3、第4の発明において、SDRAMのモードレジスタの設定内容を保持し、その設定内容に従ってモードセットコマンドを生成および出力して前記モードレジスタを設定しても良い。 【0046】この方法により、制御装置から特別なコマンドがなくても、起動時にSDRAMへモードセットコマンドを生成、出力するので、制御装置は、起動時にSDRAMのモードセットのための制御を行う必要がない。また、制御装置から設定内容をセットすることによりSDRAMのコマンドレジスタ適宜設定および変更し得る。 【0047】また、上記第3、第4の発明において、制御装置からの入力アドレスに基づいてSDRAMでのアドレッシングシーケンスでアドレスの繰り上がり無視が生じるか否か判定し、アドレスの繰り上がり無視が生じる場合コマンドを再生成および出力しても良い。 【0048】この方法により、SDRAMでアドレスの繰り上がり無視が生じて制御装置が意図しないアドレスに対してデータをリード/ライトするという不都合を、制御装置から特別なコマンドなしに解消するので、制御装置はSDRAMにアクセス要求を行う際にアドレスの繰り上がり無視を考慮する必要がない。 【0049】さらに、第5に、本発明は、上記目的を達成するために、原稿画像を走査して読み取られた画像データと、前記画像データに対応する走査位置とを順次入力し、走査位置に基づいて前記画像データをSDRAMに格納する画像処理装置であって、重複して走査する重なり走査領域内の、前記画像データと前記SDRAMに格納された格納データとから前記走査位置の位置ずれを検出し、前記位置ずれを補正する補正値を出力する位置ずれ検出手段と、前記補正値に基づいて前記走査位置を補正する補正手段と、補正された走査位置に基づいて前記画像データを前記SDRAMに格納する写像手段と、を具備し、前記位置ずれ補正手段および/または前記写像手段と前記SDRAMとを接続する上記第1、第2の発明のSDRAMインターフェイス回路を備えていることを特徴とする画像処理装置を提供する。 【0050】本発明は、かかる構成により、SDRAMインターフェイス回路が上記第1、第2の発明について述べたように、位置ずれ補正手段および/または写像手段からの特別なコマンドがなくてもSDRAMの仕様に適合したコマンドを生成、出力してSDRAMを制御して、画像データをSDRAMに対してリード/ライトするので、位置ずれ補正手段および/または写像手段は、SDRAMへのリードコマンド、ライトコマンド、リフレッシュコマンドなどの生成等を行う必要がない。 【0051】以下、本発明の実施形態について、図面を参照して詳細に説明する。 【0052】(実施の形態1)図1は、本発明の実施の形態1に係るSDRAMインターフェイス回路とDSPおよびSDRAMとの関係を示すブロック図である。 【0053】DSP100は、一般的なSRAMとの接続のための出力構成を備えている。すなわち、アドレス信号、ライト信号、リード信号、データ信号およびステータス信号を出力または入力するためのピンを持っている。 【0054】このDSP100とSDRAMインターフェイス回路200とは、信号線(以下、DSP側信号線という)101で接続されている。このDSP側信号線101には、アドレス線102、データバス103、ライト信号線(WT)104、リード信号線(RD)105、ステータス信号線(STU)106およびクロック信号線(CLK)107が含まれる。 【0055】一方、SDRAMインターフェイス回路200とSDRAM300とは、信号線(以下、SDRAM側信号線という)201で接続されている。このSDRAM側信号線201には、アドレス線202、データバス203、チップセレクト信号線(NCS)204、ライト信号線(NWT)205、ローアドレスストローブ信号線(NRAS)206、カラムアドレスストローブ信号線(NCAS)207、アウトプットディセーブル/ライトマスク信号線(UDQM、LDQM)208、209、およびクロック信号線(CLK)210等が含まれる。 【0056】ここで、アウトプットディセーブル/ライトマスク信号線(UDQM、LDQM)208、209は、リードサイクルでは出力制御信号として働き、ライトサイクルでは入力データをマスクするのに使用される。例えば、クロック信号(CLK)の立ち上がりエッジでDQMがhighのとき、リードサイクルでは次のCLKエッジで出力されるデータがディセーブルされ、ライトサイクルではそのサイクルの入力データがマスクされる。この例では、UDQM、LDQMによってバイトデータ制御が可能になっている。 【0057】図2および図3は、DSP側信号線101およびSDRAM側信号線201でのタイミングチャートをそれぞれ示す図である。DSP100側では、一般的なSRAMと同様である。すなわち、例えば、ライト時には、DSP100は、ライト信号をアクティブ(この例ではLowレベル)にするとともに、アドレス信号およびデータ信号を送出する。また、リード時には、リード信号をアクティブにするとともに、アドレス信号を送出し、データ信号を受信する。 【0058】一方、SDRAM300側では、DSP100から入力されるクロック信号と同期してデータのリード・ライトが行われる。例えば、SDRAM300は、チップセレクタ信号(NCS)をアクティブにしたとき、クロック信号の立ち上がりエッジでSDRAM300はコマンドを取り込むようになっている。 【0059】ライトサイクル時には、バンクアクティブコマンドから所定時間経過後にライトコマンドを入力すると、クロック信号の立ち上がりエッジに同期してデータが連続的に入力される。より具体的には、図3に示すように、NCS=Low、NRAS=Low、NCAS=High、NWT=Highにセットすると、これらのセット内容がクロック信号の立ち上がりエッジAで取り込まれ、これによりバンクアクティブコマンドが選択され、BSで選ばれたバンクがアクティブになる。それから数クロック後、NCS=Low、NRAS=High、NCAS=Low、NWT=Lowにセットすると、これらのセット内容が次のクロック信号の立ち上がりエッジBで取り込まれ、これによりライトコマンドが選択され、カラムアクセスが開始し、データが入力される。 【0060】一方、リードサイクルでは、アイドル中のバンクに対してバンクアクティブコマンドを実行することでバンクをアクティブ状態にし、所定時間経過後にリードコマンドを入力するとクロック信号の立ち上がりエッジに同期してSDRAM300からデータが連続して出力される。より具体的には、図3に示すように、まず、NCS=Low、NRAS=Low、NCAS=High、NWT=Highにセットすると、これらのセット内容がクロック信号の立ち上がりエッジCでSDRAM300に取り込まれ、これによりバンクアクティブコマンドが選択され、BSで選ばれたバンクがアクティブになる。数クロック後に、NCS=Low、NRAS=High、NCAS=Low、NWT=Highにセットすると、これらのセット内容が次のクロック信号の立ち上がりエッジDで取り込まれ、これによりライトコマンドが選択され、カラムアクセスが開始し、SDRAM300よりデータが出力される。 【0061】このように、DSP側の信号とSDRAM側の信号との間には差異があるので、SDRAMインターフェイス回路200がDSP100からの信号を解釈し、コマンドを生成してSDRAM300に入力したり、適切なタイミングでデータをSDRAM300へ入力したり、DSP100へ出力するなどの制御を行う必要がある。 【0062】図4は、上記実施の形態1に係るSDRAMインターフェイス回路の内部構成を示すブロック図である。SDRAMインターフェイス回路200は、送信データバッファ500、受信データバッファ700、コマンド制御ブロック800および入出力セレクタ900で構成されている。 【0063】図5は、上記実施の形態1に係るSDRAMインターフェイス回路の送信データバッファの内部構成を示すブロック図である。送信データバッファ500は、送信時、すなわちライト動作時にDSP100からのライトすべきデータ(以下、ライトデータという)およびライトすべきアドレス(以下、書き込みアドレスという)を一時的に記憶する回路である。送信データバッファ500は、8つのバッファ1〜8を持つバッファブロック501、ライトカウンタ502、ライトセレクタ503、アドレスセレクタ504およびアウトプットカウンタ505により主に構成されている。 【0064】ライトカウンタ502は、DSP100からライト信号を1つ受け取ったときに1インクリメントする。そして、カウント値に対応するバッファ1〜8へデータおよび書き込みアドレスを入力する。これにより、バッファ1〜8には、DSP100から出力されるライトデータおよび書き込みアドレスが順次保存される。 【0065】また、ライトセレクタ503は、バッファ1〜8の中から1つを選択して、それが保存するライトデータおよび書き込みアドレスをSDRAM300へ出力する回路である。本実施の形態1では、バッファブロック501のバッファ1〜8に保存したライトデータを任意の数だけ選択的に出力する必要がある。また、図4に示す入出力セレクタ900は、ライト動作時には、送信データバッファ500からデータおよび書き込みアドレスが入力されるとともに、リード時にはSDRAM300からデータおよび書き込みアドレスが入力されるので、データの衝突を防止する必要がある。そこで、このライトセレクタ503にアウトプットカウンタ505を接続し、コマンド制御ブロック800から出力されるアウトプットイネーブル信号を使用して送信データバッファ500からの出力を制御している。 【0066】より具体的には、ライト動作時に送信データバッファ500からデータを出力するときにアウトプットイネーブル信号をアクティブにする。また、送信データバッファ500から出力するデータ量に応じてアウトプットイネーブル信号のアクティブにする量(時間)を長くする。アウトプットカウンタ505は、クロックと同期してアウトプットイネーブル信号がアクティブになっている量を測る。具体的には、アウトプットカウンタ505は、アウトプットイネーブル信号の立ち下がり(Lowのときアクティブとする)を検知し1つカウントし、その後1クロック毎にアウトプットイネーブル信号がアクティブであればカウンタ値を1インクリメントする。これにより、ライトセレクタ503は、バッファ1〜8からアウトプットカウンタ505のカウント値に対応するバッファを選択し、それが保存するライトデータおよび書き込みアドレスを出力する。この結果、バッファ1〜8に保存したデータおよび書き込みアドレスを任意の数だけ、任意のタイミングでかつバッファ1から順番に出力することができる。 【0067】ライトセレクタ503から出力された書き込みアドレスは、アドレスセレクタ504に入力される。アドレスセレクタ504は、DSP100とSDRAM300のアドレス信号線の数の違いを整合している。図6は、上記実施の形態1の送信データバッファのアドレスセレクタの内部構成を示すブロック図である。 【0068】この例では、DSP100からのアドレス信号線は、MA[0]〜MA[23]の24本であり、24ビットのアドレスで論理アドレス空間を表している。一方、SDRAM300を構成するチップのピン構成は、チップセレクト(CS)1本,バンクセレクタ(BS0,BS1)、アドレス入力(A0〜A11)12本である。また、ローアドレス入力にはアドレスA0〜A11の12本が常に用いられ、カラムアドレス入力にはチップの仕様によってA0〜A7の8本、A0〜A8の9本またはA0〜A9の10本のいずれかが用いられる。従って、DSP100からの入力アドレスのうち、最下位から8〜10ビットがカラムアドレスに、その上12ビットがローアドレスに割り当てられる。カラムアドレスとローアドレスの順番は逆であっても構わない。 【0069】また、この例のSDRAM300は4バンク構成であるので、2本のバンクセレクトBS0、BS1を用いて、BANK1〜4のどのバンクに対するアクセスであるかを表している。従って、入力アドレスのローアドレスの上2ビットがバンクセレクトに割り当てられる。 【0070】さらに、SDRAM300を複数のチップで構成する場合、どのチップに対するアクセスであるか指定する必要があり、各チップのチップセレクト(CS)を用いる。従って、チップが1つの場合は0ビット、チップが2つの場合は1ビット、チップが4つの場合は2ビット、が入力アドレスの最上位に割り当てられる。図6に示すアドレスセレクタ504は、このような入力アドレスからの出力アドレス生成を行うように構成された回路である。 【0071】具体的には、アドレスセレクタ504では、24本のアドレス線のうち、上位ビットから順番に、CSセレクタ601に2本、BSセレクタ602に2本、ローアドレスセレクタ603に12本、およびカラムアドレス604に8本を夫々分配する場合があり、これを例に説明をする。この例では、SDRAM300が総容量256MBitであって、1チップあたり64MBitの記憶容量のSDRAMチップを4つ組み合わせたときのものである。 【0072】CSセレクタ601では、入力アドレスの上位2桁からCS信号を生成し、SDRAM300のピン<NCS>へ入力する。CS信号は、メモリが複数のSDRAMチップで構成されているときに、データを書き込むべきチップを指定するのに用いられる。 【0073】BSセレクタ602では、次の2桁からBS信号を生成し、SDRAM300のピン<BS>へ入力する。BS信号は、SDRAM300がバンク構成になっている場合、データを書き込むべきバンクを指定するのに用いられる。 【0074】ローアドレスセレクタ603では、次の12桁からローアドレスを生成している。同様に、カラムアドレスセレクタ604では、次の8桁からカラムアドレスを生成している。ローアドレスセレクタ603およびカラムアドレスセレクタ604の出力先には、ロー/カラムセレクタ605が設けられている。SDRAM300のアドレス入力は、ローアドレスおよびカラムアドレスで共用されているので、ローアドレスを入力するかカラムアドレスを入力するか選択する必要がある。そこで、ロー/カラムセレクタ605は、後述のコマンド制御ブロック800から出力されるRASおよびCASに従って、ローアドレスおよびカラムアドレスを選択的にSDRAM300へ出力する。ここで説明したアドレスセレクタ504の回路は一例に過ぎず、SDRAM300の仕様によって適宜変更されることは言うまでもない。 【0075】上述の送信データバッファ500において、バッファブロック501が有するバッファの数は、SDRAM300の最大バースト長に相当する。この例では、SDRAM300の最大バースト長は「8」であるので、8つのバッファ1〜8が設けられている。これは、後述するようにライトサイクルでは、バースト長分のライトデータがCLKに同期してSDRAM300へ連続して出力されるので、最大バースト長分のライトデータおよび書き込みアドレスをバッファブロック501に保存する必要があるからである。 【0076】次に、受信データバッファ700について説明する。図7は、上記実施の形態1に係るSDRAMインターフェイス回路の受信データバッファの内部構成を示すブロック図である。 【0077】受信データバッファ700は、受信時、すなわちリード動作時に、DSP100からリードすべきアドレス(以下、読み出しアドレスという)を一時的に記憶するとともに、SDRAM300から読み出したデータ(以下、リードデータという)を読み出しアドレスと対にして一時的に記憶する回路である。 【0078】受信データバッファ700は、8つのバッファ1〜8を持つバッファブロック701、リードカウンタ702、リード要求セレクタ703、リードアウトセレクタ704、およびアドレスセレクタ705により主に構成されている。ここでバッファの数は、送信データバッファ500と同様に、SDRAM300の最大バースト長に相当する。 【0079】バッファブロック701の入力側に設けたリードカウンタ702は、DSP100からリード信号を1つ受け取ったときにカウント値を1インクリメントする。そしてカウント値に対応するバッファ1〜8へ読み出しアドレスを保存する。これにより、バッファ1〜8に読み出しアドレスが順次保存される。 【0080】バッファブロック701の出力側に設けたリード要求セレクタ703は、バッファ1〜8の中から1つを選択し、それが保存する読み出しアドレスをSDRAM300へ出力する回路である。 【0081】上述の送信データバッファ500と同様に、このリード要求セレクタ703の出力を制御するために、インプットカウンタ706が接続されている。インプットカウンタ706は、コマンド制御ブロック800から出力されるインプットイネーブル信号がアクティブになっている量を測り、カウント値を出力する。リード要求セレクタ703は、バッファ1〜8からインプットカウンタ706のカウント値に対応するバッファを選択し、それが保存する読み出しアドレスを出力する。バッファ1〜8のいずれか一つに保存した書き込みアドレスを、任意のタイミングで出力することができる。 【0082】リード要求セレクタ703から出力された読み出しアドレスは、アドレスセレクタ705に入力され、SDRAM300が受信・認識できる情報に変換する。アドレスセレクタ705は、図6に示すアドレスセレクタ504と同様に構成されている。 【0083】一方、SDRAM300から送信されたリードデータは、バッファブロック701のバッファ1〜8に順番に保存される。より具体的には、リードデータはすべてのバッファ1〜8に並列に入力される。一方、バッファ1〜8には、インプットカウンタ706からインプットイネーブル信号が夫々別個に入力されるようになっている。バッファ1〜8は、インプットイネーブル信号がアクティブ(この例ではLow)である場合にのみデータのインプットを許可する。コマンド制御ブロック800は、バッファ1〜8のいずれか一つについてのみ、インプットイネーブル信号をアクティブにする。これにより、SDRAM300からのリードデータを任意のバッファに保存することができる。 【0084】バッファブロック701の出力側には、リードアウトセレクタ704が設けられている。このリードアウトセレクタ704は、リードカウンタ702の出力に応じてバッファ1〜8のいずれか一つを選択し、これが保存するリードデータをDSP100へ出力する。 【0085】DSP100のリードサイクルの動作について、さらに詳細に説明すると、DSP100は、まず有効データで読み出していないデータがないことを、ステイタスで確認し、リード信号をアクティブにすると同時にリードアドレスを送信する(以下、この動作をリードアクセスという)。SDRAMインターフェイス回路200は、上述のように読み出しアドレスを保存し、コマンドを生成してSDRAM300へ出力し、SDRAM300が返したリードデータを保存する。DSP100は、再びステイタスを確認し、有効データであることを認識し、リードアクセスを行う。このリードアクセスに応じて、SDRAMインターフェイス回路200が保存していたリードデータを出力する。このように、DSP100は、1回目のリードアクセスをリードリクエストとし、2回目のリードアクセスで始めてリードデータを読み出すことができる。このとき、DSP100の動作速度は、SDRAM300の動作速度よりもはるかに遅いので、1回目から2回目までの間にSDRAM側の動作は完了している。 【0086】なお、DSP100やCPUは上述のようなリードアクセスを実行するが、後述するイメージスキャナのJPEG−IC回路などはリードアクセスを行わないので、SDRAMインターフェイス回路200の内部で、リード信号およびリードアドレスを生成する必要がある。 【0087】次に、コマンド制御ブロック800について図8を参照して説明する。図8は、上記実施の形態1に係るコマンド制御ブロックの内部構成を示すブロック図である。 【0088】コマンド制御ブロック800は、アクセスカウンタ801、コマンドレジスタ802、比較ブロック803、リフレッシュサイクル(RC)カウントブロック804およびコマンド生成ブロック805で構成されている。 【0089】SDRAM300はアドレスが連続するデータのリード/ライドを連続して行うことが一つの特徴である。しかし、DSP100は、SDRAM300の仕様を考慮することなくリード/ライトを行うので、DSP100に代わってSDRAMインターフェイス回路200がリード/ライトの連続性を調べる必要がある。 【0090】また、SDRAM300は単位時間毎にリフレッシュを行う必要があるが、DSP100はリフレッシュを考慮して動作していない。そこで、SDRAMインターフェイス回路200が時間を測り、所定の周期SDRAM300へリフレッシュを命令しなければならない。また、リフレッシュ時にはリード/ライトができないのでリード/ライト実行のタイミングを図る必要がある。 【0091】アクセスカウンタ801は、リード信号およびライト信号の両方のアクセス数をカウントし、その値を有効データ数として出力する。比較ブロック803は、リード時およびライト時にDSP100から入力された書き込みアドレスおよび読み出しアドレスを一時的に保存し、次に入力されたアドレスと比較し、その結果アドレスが非連続であるならばコマンド発生パルスを出力するようになっている。また、前回アクセスがあった信号がライト信号かリード信号か記憶し、リード信号からライト信号へ、またはライト信号からリード信号へ切り替わったならばコマンド発生パルスを出力するようになっている。言い換えれば、比較ブロック803は、DSP100が、アドレスが連続するデータをリード/ライトしていることを検出するように構成されている。 【0092】RCカウントブロック804は、クロックの周波数によってDSP100が間隔を設定し、リフレッシュの間隔を測っている。そして、RCカウントブロック804は、リフレッシュのタイミングが来たならば、リフレッシュスタートパルスを出力する。また、リフレッシュのタイミングを含む所定の期間(以下、リフレッシュサイクルという)を、アクセスカウンタ801、コマンドレジスタ802、比較ブロック803へ通知するリフレッシュサイクル信号を出力する。例えば、リフレッシュサイクル信号は、リフレッシュサイクルに開始するとアクティブになり、リフレッシュサイクルが終了するとノンアクティブになる。 【0093】コマンドレジスタ802は、SDRAM300のモードレジスタを設定する回路である。コマンドレジスタ802は、デフォルトのモードセットデータを保持し、起動時に、このデフォルトのモードセットデータを出力する。また、コマンドレジスタ802は、DSP100から特にモード設定の要求があった場合には、この要求に従ってモードセットデータを生成し、出力する。 【0094】コマンド生成ブロック805は、アクセスカウンタ801、比較ブロック803、RCカウントブロック804およびコマンドレジスタ802の出力に応じて、SDRAM300を制御するコマンドを生成し、SDRAM300へ出力する回路である。また、コマンド生成ブロック805は、図4に示すように、SDRAM300と外部制御線806を介して接続されているとともに、内部制御線807を介して、送信データバッファ500、受信データバッファ700および入出力セレクタ900と接続されている。このコマンド生成ブロック805の動作については後述する。 【0095】次に、入出力セレクタ900について図9を参照して説明する。図9は、上記実施の形態1に係るSDRAMインターフェイス回路のセレクタを示すブロック図である。 【0096】入出力セレクタ900は、送信データバッファ500、受信データバッファ700、コマンド制御ブロック800、およびRCカウントブロック804から出力される信号の中からSDRAM300にアクセスする信号を適宜選択する回路である。この入出力セレクタ900の選択は、コマンド生成ブロック805からのサイクル情報に従って行われる。 【0097】上述の構成からなる本実施の形態1に係るSDRAMインターフェイス回路200での、リフレッシュ、モードセット、リードおよびライトの各動作について説明する。 【0098】<リフレッシュ>上述のように、RCカウントブロック804は、クロックの周波数によってDSP100が間隔を設定し、リフレッシュの間隔を測り、リフレッシュのタイミングが来たらコマンド生成ブロック805へリフレッシュスタートパルスを出力する。これに応じて、コマンド生成ブロック805は、リフレッシュコマンドをSDRAM300に出力する。このように、SDRAMインターフェイス回路200は、DSP100からの特別なコマンドが無くとも、自律的にリフレッシュをSDRAM300に実行させることができる。 【0099】さらに、RCカウントブロック804は、リフレッシュサイクル信号により、リフレッシュのタイミングよりも前に、比較ブロック803などにリフレッシュの開始を通知しているので、比較ブロック803がリフレッシュよりも前にリード/ライトを完了させることが可能である。この結果、リフレッシュを最優先で行うことができる。 【0100】<モードセット>SDRAMインターフェイス回路200によれば、起動時に、コマンドレジスタ802は、保持しているデフォルトのモードセットデータをコマンド生成ブロック805に出力する。また、コマンドレジスタ802が保持するモードセットデータを、DSP100から設定することができる。この場合にも、コマンドレジスタ802は、設定されたモードセットデータをコマンド生成ブロック805に出力する。コマンド生成ブロック805は、入力されたモードセットデータに従ってモードセットコマンドを生成し、SDRAM300へ入力する。これにより、SDRAM300のモードセレクタに設定が行われる。ここで、SDRAM300のモードセレクタの設定内容は、例えば、バースト長、アドレスモード、CASレイテンシィなどである。 【0101】より具体的に説明すると、SDRAMインターフェイス回路200は、まずSDRAM300に対してオールバンクプリチャージコマンドを送信してすべてのバンクをアイドル状態にする。これにより、SDRAM300のモードセットが可能になる。次いで、モードセットコマンドを送出し、2クロックサイクル後オートリフレッシュコマンドを8回送出し、SDRAM300をアイドル状態とする。 【0102】このように、SDRAMインターフェイス回路200によれば、起動時にDSP100から特別なコマンドが無くても、コマンドレジスタ802が保持するデフォルトのモードセットデータに従ってSDRAM300のモードセットを行うことができる。また必要に応じてDSP100からもモードセットを直接行うことが可能である。 【0103】<リード>リード動作時、DSP100は、図2に示すように、リード信号をアクティブにするとともに読み出しアドレスを出力してリードアクセスを行う。DSP100は必要なアドレスの分だけリードアクセスを繰り返す。 【0104】SDRAMインターフェイス回路200では、DSP100からの読み出しアドレスを、受信データバッファ700のバッファブロック701のバッファ1〜8に順次保存する。 【0105】同時に、コマンド制御ブロック800では、アクセスカウンタ801がリード信号のアクセスをカウントする。また、コマンド制御ブロック800では、DSP100がいくつのリードデータを要求しているか認識している。すなわち、比較ブロック803は、リードアクセス毎に読み出しアドレスを保持し、これを次回のリードアクセスの際に受信した読み出しアドレスとを比較し、両者が連続しているか否か判定している。もし両者が連続していればリードデータに連続性があると判断し、続けてリードアクセスを受信する。しかし、もし両者が連続していなければ、リードデータにこれ以上連続性がないと判断し、コマンド生成ブロック805にコマンド発生パルスを出力する。また、比較ブロック803は、リード/ライトの種別をアクセス毎に保持し、次回のアクセスの際にリードからライトに切り替わったときもコマンド生成ブロック805にコマンド発生パルスを出力する。 【0106】コマンド生成ブロック805は、コマンド発生パルスが入力されたとき、最初のリードアクセスで指定された読み出しアドレス(バッファ1に保存した読み出しアドレス)を開始アドレスとして、図3に示すようなリードサイクルを実行する。これに応じて、SDRAM300からモードレジスタに設定されたバースト分のリードデータが返って来る。リードデータは、バッファ1〜8に読み出しアドレスに対応させて順次保存される。 【0107】しかし、実際には、DSP100が必要とするリードデータのワード数とSDRAM300が出力するリードデータのワード数にずれがあるので調整する必要がある。 【0108】第1に、コマンド生成ブロック805は、コマンド発生パルスが入力された時点の有効データ数と、SDRAM300のモードセレクタに設定されたバースト長とを比較し、最適なバースト長であるか否か判定する。設定されたバースト長は、コマンドレジスタ802からバースト情報として得られる。もし設定さえれたバースト長が有効データ数に最適なバースト長でないならば、上記<モードセット>の動作に準じてモードセットコマンドを生成し、SDRAM300へ出力する。これにより、SDRAM300のバースト長を最適なバースト長に変更する。 【0109】ここで最適なバースト長とは、有効データ数以上であって有効データ数に最も近いバースト長をいう。通常、バースト長は、1、2、4、8のように1および2の倍数になっているので、例えば有効データ数が3ワードであれば最適なバースト長は4である。 【0110】第2に、有効データ数とSDRAM300のバースト長(リードデータのワード数)とが一致しないことがある。このような場合、SDRAMインターフェイス回路200は、余分なリードデータを切り捨てる必要がある。この制御は、上述の受信データバッファ700について説明したインプットイネーブル信号を用いて行う。SDRAM300からバースト長のリードデータを受信する。リードデータをバッファブロック701にバッファ1から順次保存していくが、有効データ数を越える分については、すべてのバッファ1〜8に対してインプットイネーブル信号をノンアクティブとすることでリードデータの保存を制限する。 【0111】その後、DSP100からの2回目のリードアクセスに応じて、受信データバッファ700は、バッファブロック701に保存したリードデータをリードさせる。 【0112】より具体的に説明すると、DSP100が要求するワード数が3、SDRAM300のバースト長が4である場合、SDRAM300から4ワードのリードデータが出力されるが、3ワード分だけ受信データバッファ700に保存する。その後、DSP100は受信データバッファ700から3ワードのリードデータをディレイなしでリードすることができる。 【0113】このように、本実施の形態1に係るSDRAMインターフェイス回路200によれば、DSP100側からの特別なコマンドなしに、SDRAM300のバースト長を適宜変更したり、SDRAM300からのリードデータの超過分を切り捨てることができる。 【0114】以上の説明では、SDRAMインターフェイス回路200は、リードアクセスの連続性が無くなった時点でSDRAM300に対してリードサイクルを実行しているが、RCカウントブロック804からのリフレッシュサイクル信号に従ってリフレッシュサイクルが開始した時点でSDRAM300に対してリードサイクルを実行する。これにより、SDRAM300にリードよりもリフレッシュを優先して実行させることができる。 【0115】<ライト>ライト動作時、DSP100は、図2に示すように、ライト信号をアクティブにするとともにライトデータおよび書き込みアドレスを出力してライトアクセスを行う。DSP100はライトデータのワード数だけライトアクセスを繰り返す。 【0116】SDRAMインターフェイス回路200では、DSP100からのライトデータおよび書き込みアドレスを、送信データバッファ500のバッファブロック501のバッファ1〜8に順次保存する。 【0117】同時に、コマンド制御ブロック800では、DSP100が書き込むライトデータのワード数を認識している。すなわち、アクセスカウンタ801がライトアクセスをカウントし、その値を有効データ数として出力する。また、比較ブロック803は、ライトアクセス毎に書き込みアドレスを保持し、次回のライトアクセスの際に受信した書き込みアドレスと比較し、両者が連続していれば、ライトアクセスを続けて受信する。しかし、もし両者が連続していなければ、ライトデータにこれ以上連続性がないと判断し、コマンド生成ブロック805にコマンド発生パルスを出力する。 【0118】また、比較ブロック803は、リード/ライトの種別をアクセス毎に保持し、次回のアクセスの際にライトからリードに切り替わったときもライトデータに連続性がないと判断し、コマンド生成ブロック805にコマンド発生パルスを出力する。 【0119】コマンド生成ブロック805は、コマンド発生パルスが入力されたとき、最初のライトアクセスで指定された書き込みアドレス(バッファ1に保存した書き込みアドレス)を開始アドレスとして、図3に示すようなライトサイクルを実行する。 【0120】リードと同様にバースト長の適合性チェックを行うとともに、および、ライトデータのマスクを行う。すなわち、コマンド生成ブロック805は、コマンド発生パルスの入力時点の有効データ数と、SDRAM300に設定されたバースト長とを比較し、最適なバースト長であるか否か判断する。その判定基準はリードと同様である。 【0121】バースト長が最適でない場合、最適なバースト長に変更するために、上記<モードセット>の動作に準じてモードセットコマンドを生成し、SDRAM300へ出力する。その後、コマンド生成ブロック805はライトサイクルを実行する。一方、バースト長が適当であれば、モードセットを行うことなく、ライトサイクルを実行する【0122】ライトサイクルでは、ライトデータの有効データ数と、バースト長とに違いがあるのでその整合を取る必要がある。すなわち、ライトサイクルにおいて、図5に示す送信データバッファ500は、バッファ1〜8に保存されたライトデータをバースト分だけSDRAM300へ順次出力する。しかしながら、DSP100がライトを要求したライトデータだけを出力する必要があるので、送信データバッファ500は、有効データ数を越えるバッファからのデータ出力にマスクをかけている。 【0123】より具体的に説明すると、バースト長が8であり、かつ有効データ数が7である場合、送信データバッファ500のバッファ1〜7にライトデータが保存されている。よって、送信データバッファ500は、1ワード目から7ワード目のライトデータを順次出力するが、8ワード目、言い換えればバッファ8に保存されているデータは無効であるので、このデータの出力をマスクする。 【0124】データ出力のマスクは、上述のアウトプットイネーブル信号を用いて行う。すなわち、バーストモードでライトを行う場合、図3に示すようにバースト長分のライトデータを連続してSDRAM300へ出力するが、マスクすべきライトデータを出力するタイミングで、バッファ1〜8のすべてに対するアウトプットイネーブル信号をノンアクティブとする。これにより、このタイミングでのSDRAM300へのデータ出力をマスクすることができる。 【0125】このように、SDRAMインターフェイス回路200によれば、DSP100側から特別なコマンドを受信することなく、ライト時に、ライトデータの書き込みアドレスの連続性を認識し、連続するライトデータの有効データ数に最適のバースト長でSDRAM300にライトを行うことができる。 【0126】また、リードと同様に、RCカウントブロック804からのリフレッシュサイクル信号に従ってリフレッシュサイクルが開始した時点でSDRAM300に対してライトサイクルを実行する。これにより、SDRAM300にライトよりもリフレッシュを優先して実行させることができる。 【0127】<コマンド生成>以上説明した<リフレッシュ>、<モードセット>、<リード>、<ライト>でコマンドを生成するコマンド生成ブロック805の動作についてさらに詳細に説明する。図10は、上記実施の形態1に係るコマンド生成ブロックの動作を示すフロー図である。 【0128】コマンド生成ブロック805は、リセット解除を行った後(ステップ(以下、STと記す)1001)、DSP100からのSDRAM300へのアクセス要求を待つ(ST1002)。次に、リフレッシュが実行されるか否か(リフレッシュサイクル中か否か)判定する(ST1003)。この判定は上述のようにRCカウントブロック804からのリフレッシュサイクル信号に基づいて行う。リフレッシュが実行されないならば、リード/ライトの連続性を判定する(ST1004)。連続性があるならばアクセス要求を保留し、ST1002に戻り次のアクセス要求を待つ。一方、リード/ライトの連続性がないならば、そこまでに保留したアクセス要求に応じてコマンドを生成する(ST1005)。ここで、アクセス要求の保留とは、例えば、上述のように、ライト時にライトデータおよび書き込みアドレスを送信データバッファ500に保存すること、および、リード時に読み込みアドレスを受信データバッファ700に保存することをいう。 【0129】一方、ST1003においてリフレッシュを実行する場合には、そこまでに保留したアクセス要求があるか判断する(ST1006)。保留したアクセス要求があれば、リフレッシュを行う前に、そこまでに保留したアクセス要求に応じてコマンドを生成し(ST1007)、次いでリフレッシュを実行する(ST1008)。そこまでに保留したアクセス要求がなければ、そのままリフレッシュを実行する(ST1008)。リフレッシュ実行後は、次のアクセス要求を待つため、ST1002に戻る。 【0130】このように、コマンド生成ブロック805は、ST1004において、DSP100からのリード/ライトの連続性、すなわち、DSP100からの読み込みアドレスおよび書き込みアドレスが連続しているか否か判定し、連続していればデータをバッファに保留し、連続しなくなったときにそこまで保留したデータに従ってコマンドを生成し、SDRAM300にアクセスする。これにより、DSP100が特別な制御を行うことなくとも、コマンド生成ブロック805がSDRAM300の仕様にあったコマンドを生成し、SDRAM300へ出力し、リード/ライトを行うことができる。 【0131】また、コマンド生成ブロック805は、ST1003で他の処理にさきがけて、リフレッシュを実行するか否か判定しているので、常にリード/ライトに優先してリフレッシュを行うことができる。また、リフレッシュを実行する場合には、ST1006においてそれまで保留したアドレス要求があるか否かチェックし、あればSDRAM300に対してリード/ライトを実行する。これにより、DSP100のコマンド要求に対してリフレッシュを優先しつつできる限り早く応えることができる。 【0132】なお、リフレッシュサイクルの終了時点、言い換えればリフレッシュサイクル信号がアクティブからノンアクティブに切り替わるタイミングで、送信データバッファ500、受信データバッファ700、および比較ブロック803はソフトリセットを行い、バッファやカウンタをクリアして、以降のDSP100からのアクセス要求に応答する。 【0133】また、リード/ライトのアクセスが最大バースト長に達したときもアドレスに連続性があってもそこまで保留したコマンド要求に対して応答する。 【0134】<コマンド再生成>次に、アドレスの再生成について説明する。SDRAM300は、リード/ライトサイクルにおいて、入力された開始アドレスから始まり、順にインクリメントしたアドレスに対してリード/ライトを行うようになっている。このとき、SDRAM300の仕様により、バースト長によって異なる桁でCARRYが無視されるようになっている。具体的には、シーケンシャルモードにおいて、バースト長が2ワードの場合、A0からA1へのCARRYは無視される。またバースト長が4ワードの場合、A1からA2へのCARRYは無視される。また、バースト長が8ワードの場合、A2からA3へのCARRYは無視される。このような場合、DSP100からアクセス要求するアドレスと、SDRAM300がリード/ライトを行うアドレスとに食い違いが生じる。 【0135】図11を参照して具体的に説明する。図11は、シーケンシャルモードにおけるSDRAMでのアドレッシングシーケンスの一例を示す図である。シーケンシャルモードでは、開始アドレスとして5番地を指定してSDRAM300にリードを要求すると、5番地(”00101”)からアドレスを1インクリメントしながらデータ0,1,2・・・・と順番に出力する。しかしながら、上述のように8バーストの場合A2からA3ビットへのCARRYは無視されるので、7番地(”00111”)の次は8番地(”01000”)ではなく0番地(”00000”)に戻るようになっている。このような状態を「アドレスの繰り上がり無視」という。 【0136】このアドレスの繰り上がり無視のために、DSP100では、5番地から12番地まで連続して8ワードのデータをリードすることを要求しても、SDRAM300からは5〜7番地および0〜4番地のデータが送り返されてくる。従って、SDRAMインターフェイス回路200は、このようなDSP100とSDRAM300との間の調整を行う必要がある。 【0137】図12は、上記実施の形態1に係るSDRAMインターフェイス回路におけるコマンド再生成ブロックの内部構成を示すブロック図である。コマンド再生成ブロック1200のセレクタ1201には、DSP100からのアドレス入力のうち下位3ビットのMA[0]〜MA[2]が入力される。また、図8に示すコマンドレジスタ802からバースト情報が入力される。セレクタ1201は、バースト情報からSDRAM300に現在設定されているバースト長を取得し、これに従って判定部1202への出力を変更する。 【0138】図13は、上記実施の形態1に係るSDRAMインターフェイス回路のコマンド再生成ブロックのセレクタの動作を示す図である。バースト長が1である場合、図13(A)に示すように、セレクタ1201はMA[0]〜MA[2]に対応するすべての出力をローレベル(Low)に固定する。また、バースト長が2である場合セレクタ1201は、アドレス入力MA[0]についてはそのまま出力し、残りのMA[1],MA[2]についてはLに固定する。同様に、バースト長が4である場合、図13(C)に示すようにMA[2]のみをLに固定し、バースト長が8である場合、図13(D)に示すように、すべてのアドレス入力MA[0]〜MA[2]をそのまま出力する。 【0139】セレクタ1201から信号が入力されると、判定部1202はすべての信号がLである場合以外はコマンド再生パルスをコマンド生成ブロック805に出力する。セレクタ1201からの出力のいずれか一つがハイレベル(High)である場合、アドレスの繰り上がり無視が起こるからである。例えば、バースト長が1である場合開始アドレスがなんであれアドレスの繰り上がり無視は起こらないので、セレクタ1201の出力を”Low”に固定する。これに対して、バースト長が8であるとき、開始アドレスが0番地(”000”)の場合、すなわちMA[0]〜MA[2]の出力がすべて”Low”である場合にのみアドレスの繰り上がり無視が起こらないので、セレクタ1201の出力をすべて判定部1202へ出力し、MA[0]〜MA[2]の出力の一つでも”High”であれば、開始アドレスは0番地以外であるので、コマンド再生成が必要であると判定する。 【0140】コマンド再生成パルスを受信したコマンド生成ブロック805は、まず、DSP100からの1番目の入力アドレスを開始アドレス(以下、指定アドレスという)として指定し、始めのリード/ライトコマンドを生成し、SDRAM300へ出力する。しかしアドレスの繰り上がり無視が発生した以降では、意図しないアドレスにデータが書き込まれたり、意図しないアドレスのデータが出力されてしまう。そこで、コマンド生成ブロック805は、アウトプットディセーブル/ライトマスク信号(DQM)を利用する。コマンド生成ブロック805は、CLKの立ち上がりエッジでDQMをHighとし、ライトサイクルではそのサイクルの入力データをマスクさせる一方、リードサイクルでは次のCLKエッジで出力されるデータをディセーブルさせる。 【0141】始めのリード/ライトコマンドの処理が完了したならば、新たに2番目のリード/ライトコマンドを生成し、SDRAM300へ出力する。ここでの指定アドレス(以下、再指定アドレスという)は、DSP100が認識する論理アドレス空間において、SDRAM300でアドレスの繰り上がり無視があったアドレスの次のアドレスである。このアドレス以降のデータは未だリード/ライトされていない。 【0142】この再指定アドレスは、指定アドレスから算出可能である。以下、算出方法について具体的に説明する。図14は、上記実施の形態1に係るSDRAMインターフェイス回路における再指定アドレスの算出方法を説明する図である。 【0143】DSP100からの入力アドレスをMA[23:0]、バースト長を8、指定アドレスをx‘00004Aと仮定する。この指定アドレスは、2進数で表すと、図14(A)に示すようになる。図14(B)に示すように、SDRAM300は指定アドレスからアドレスを1インクリメントしながらデータをリード/ライトしていくと、アドレスx‘00004F(1111)でアドレスの繰り上がり無視が生じるので、アドレスx‘000048(1000)へ戻る。従って、再指定アドレスはx‘000050(0000)となる。これは指示アドレスがx‘000048(1000)以外のときはすべて同様である。そこで、指示アドレスのMA[23:3]に1を加算すれば、再指定アドレスを算出することが出来る。 【0144】このように、本実施の形態1に係るSDRAMインターフェイス回路200は、DSP100から特別なコマンドを受ける必要なく、SDRAM300でのアドレスの繰り上がり無視が生じるか否か判定し、アドレスの繰り上がり無視が生じる場合には、アクセス要求のコマンドを再生成して必要なリード/ライトを行うことができる。この結果、DSP100は、SDRAM300でのアドレスの繰り上がり無視を考慮する必要がない。 【0145】ここでは、アドレッシングシーケンスがシーケンシャルモードである場合について説明したが、インターリーブモードである場合も全く同様である。 【0146】以上説明したように、本実施の形態1に係るSDRAMインターフェイス回路200によれば、DSP100からの特別なコマンドがなくても、DSP100からのアクセス要求に応じてコマンドを生成、出力してSDRAM300を制御することができる。この結果、DSP100は、SDRAM300の制御を行う必要がないので、負荷を軽減し、高速で動作することができる。また、DSP100を設計するときに、設計者は、SDRAM300の仕様を考慮する煩雑さから解放され、開発期間を短縮し、コストを軽減することができる。 【0147】本実施の形態1では、DSP100を例に挙げて説明したが、これに限定されるものではなく、本発明は、例えば、CPUとSDRAMとのインターフェイスに応用することができる。この場合、DSPと同様に、SDRAMの制御を行う必要がないので、負荷を軽減し、高速で動作することができるとともに、ソフトウエアを設計するときに、プログラマはSDRAMの仕様を考慮する煩雑さから解放され、ソフトウエア開発の期間を短縮し、コストを軽減することができる。 【0148】(実施の形態2)次に、上記実施の形態1に係るSDRAMインターフェイス回路を搭載した電子機器の一例としてハンディスキャナを例示する。以下説明するハンディスキャナは、特開平8−107479号公報に開示されている画像処理装置の構成を採用している。 【0149】図15は、本発明の実施の形態2に係るハンディスキャナを示すブロック図である。ハンディスキャナ1500は、原稿読取ユニット1510を備えている。原稿読取ユニット1510は、原稿画像を読み取るラインイメージセンサ1511と、ラインイメージセンサ1511の両端位置に装備されたエンコーダ部1512、1513とを備えている。 【0150】原稿読取ユニット1510には、アナログ/ディジタルコンバータ(ADC)(図示せず)を介してLSI1600に接続されている。LSI1600は、ラインイメージセンサ1511から入力される画像データ、および、エンコーダ部1512、1513から入力される位置データ信号を処理すると共に、後述のSDRAM300、JPEGIC1520、DSP100間のインターフェイスコントローラとして機能する。 【0151】SDRAM300は、複数(n個)のSDRAMチップで構成されている。このSDRAM300は、DSP100のワークエリアとして使用される。より具体的には、SDRAM300は、イメージデータ、符号データ格納領域、シェーディング補正値格納領域などのメモリエリアを提供する。 【0152】メモリカードスロット1530は、SDメモリカード、フラッシュメモリカードなどのメモリカード1531を着脱自在に接続するためのスロットである。LCD1540は、画像データなどの表示を行う。また、USBコネクタ1550は、USBケーブルを接続するためのコネクタであり、USBケーブルを介してパーソナルコンピュータ等の外部機器との接続を行う。接続ケーブルはUSBに限定されず、IEEE1394、シリアルケーブル、パラレルケーブル等を用いることができる。 【0153】DSP100は、ハンディスキャナ1500の全体を制御する。ROM1560はDSP100が実行するプログラムを格納する。RAM1570は、DSP100のワーキングメモリエリア等を提供する。 【0154】このような構成により、このハンディスキャナ1500は、ラインイメージセンサ1511から読み取った画像データを、JPEGIC1520で圧縮し、SDRAM300に蓄積し、必要に応じてメモリカード1531に格納し、PCなどに渡す。また、読み取った画像データをLCD1540に表示する。 【0155】図16は、上記実施の形態2に係るハンディスキャナのLSIの内部構成を示すブロック図である。LSI1600は、シェーディング部1601、画像メモリ1602、JPEG画像インターフェイス1603、JPEG符号インターフェイス1604、DSPインターフェイス1605、制御レジスタ1606、メモリカードインターフェイス1607、USBインターフェイス1608、LCDインターフェイス1609、画像合成処理ブロック1610、およびSDRAMインターフェイス回路200により構成されている。 【0156】原稿読取ユニット1510を、原稿の上を手動によって走査することにより、ラインイメージセンサ1511が画像データを生成する。そして、生成された画像データは、ADCでディジタル化された後LSI1600に入力される。 【0157】入力されたディジタル画像データに対して、シェーディング部1601で、ラインイメージセンサ1511のセンサ各画素間の感度ばらつきを補正するためにシェーディング補正が施される。補正されたディジタル画像データは、画像メモリ1602上に一時的に蓄積される。このディジタル画像データは、JPEG画像インターフェイス1603を介してJPEGIC1520に送られる。JPEGIC1520は、ディジタル画像データを圧縮し、LSI1600に送り返す。送り返された圧縮画像データは、JPEG符号インターフェイス1604を介してSDRAMインターフェイス回路200に入力される。この圧縮画像データは、上記実施の形態1で説明した<ライト>動作に従ってSDRAM300にライトされる。この圧縮画像データは、アドレスに連続性があるのでそのままSDRAM300へライトされる。SDRAM300に格納した圧縮画像データは、後述の画像合成処理に先立ってSDRAM300から一旦読み出され、JPEGIC1520によりSDRAM300上のイメージ格納領域に展開される。 【0158】一方、エンコーダ部1512、1513は、原稿読取ユニット1510を原稿の上で走査したときの車輪(図示せず)の回転を検出し、この検出信号から移動距離を検出し、LSI1600に出力する。この移動距離は、LSI1600はエンコーダレジスタ1611にライン毎に保存される。 【0159】DSP100は、LSI1600にDSPインターフェイス1605を介してアクセスし、エンコーダレジスタ1611から各車輪の移動距離を読み取る。DSP100は、この移動距離に基づいて車輪の原稿上の座標を算出し、さらにこの車輪の座標をラインイメージセンサ1511の両端の各読取画素の座標に変換し、走査位置座標としてLSI1600の画像合成処理ブロック1610に出力する。 【0160】次に、本実施の形態2係るハンディスキャナ1500での画像合成処理について説明する。図17は、上記実施の形態2に係るハンディスキャナにおけるラインイメージセンサの走査領域の説明図である。図17に示すように、原稿1701の読み取り領域幅がラインイメージセンサ1511よりも大きい場合、原稿1701を読み取るために、操作者は、ハンディスキャナ1500を原稿1701に接触させ、原稿1701上を往復運動させながら手動走査する。このとき、図17に示すように、往方向へハンディスキャナを移動させたときの往方向走査領域1702と、復方向へハンディスキャナを移動させたときの復方向走査領域1703とに重なり走査領域1704が生じる。 【0161】本実施の形態2に係るハンディスキャナ1500では、往方向走査領域1702および復方向走査領域1703の画像を1つの画像に合成している。 【0162】このために、画像合成処理ブロック1610において、特開平8−107479号公報に開示されているように、位置ずれ検出・補正および写像処理を行う。画像合成処理ブロック1610は、特開平8−107479号公報に記載された画像ずれ検出回路および写像回路と同等の機能を有する。 【0163】画像合成処理ブロック1610は、画素密度変換処理により画像データを高密度化し、高密度化画像データを生成する。さらに、走査位置座標を用いて高密度画像データの各画素データのSDRAM300上のイメージ格納領域への格納アドレスを算出する。 【0164】論理的には、重なり走査領域1704において、SDRAM300に既に格納された往方向走査領域1702の画素データが、新しく描き込まれる復方向走査領域1703の画素データによりオーバーライトされる。しかしながら、原稿読取ユニット1510のメカ公差や座標計算の丸め誤差などにより、走査位置座標には誤差が含まれている。このため、往方向走査領域1702および復方向走査領域1703の画像を合成すると合成画像にずれが生じる。 【0165】この画像のずれを無くすため、画像合成処理ブロック1610は、往方向走査領域1702の画像データと復方向走査領域1703の画像データとを用いて、それらの相関度合いを示す相関値を算出する。さらに、画像合成処理ブロック1610は、この相関値に基づいて走査位置座標を補正するための位置補正量を算出する。さらに、画像合成処理ブロック1610は、この位置補正量に従って走査位置座標を補正する。 【0166】次いで、画像合成処理ブロック1610は、補正した走査位置座標に従って、画像データ中の各画素データの格納アドレスを生成し、この格納アドレスを指定して、SDRAMインターフェイス回路200にSDRAM300へのライトを要求する。SDRAMインターフェイス回路200は、上記実施の形態1で説明した<ライト>の手順に従って、各画素データを指定された格納アドレスにライトする。 【0167】位置ずれ補正についてさらに詳細に説明する。復方向走査を行うとき、すでに往方向走査の画像が写像されており、SDRAM300上のイメージ格納領域に格納されている。このイメージ格納領域からリードした往方向走査のディジタル画像データと、新たに生成した高密度化画像データとに基づいて、これらの重なり走査領域1704において相関を検出する。相関は、注目画素から上下左右に±1画素ずらした9パターンに、さらに、各パターンで角度を±θずらした計27パターンの位置補正画素群を生成する。すでに写像されている画素データとこれらから写像する画素データの差分の合計を取り、求めた値が最も小さい画素を相関が高いことになるので、最も相関が高い画素に位置補正を行う。 【0168】このように、この例では注目画素から±1の9パターン、すなわち3×3画素を基準としているので、画像合成処理ブロック1610は、SDRAMインターフェイス回路に対して、SDRAM300から往方向走査の画素データを読み出す場合に連続する3画素分を読み出すことを要求する。 【0169】図18は、上記実施の形態2に係るハンディスキャナにおける位置ずれ補正処理での位置補正画素群を示す図である。画像合成処理ブロック1610は、位置補正画素群1801の27の画素データをSDRAM300のイメージ格納領域から読み出すために、例えばx軸方向に連続する3つの画素データのリードを3行分行う必要がある。 【0170】画像合成処理ブロック1610は、上記実施の形態1でのDSP100に相当し、SDRAM300に対してリードアクセスを行う。1行目の3つの連続する画素データをリードする場合、画像合成処理ブロック1610は各画素データの格納アドレスをSDRAMインターフェイス回路200に順次入力する。SDRAMインターフェイス回路200は、格納アドレスを受信データバッファ700にバッファ1から順番に保存する。 【0171】DSP100は、1行目の画素データのリードアクセスが終了すると2行目の画素データのリードアクセスを開始する。SDRAMインターフェイス回路200は、上記実施の形態1で説明したようにここでリードアクセスに連続性がなくなったことをコマンド制御ブロック800の比較ブロック803で検出する。 【0172】SDRAMインターフェイス回路200は、ここまでの有効データ数3とSDRAM300に設定されているバースト長とを比較し、最適なバースト長か否か判定し、最適なバースト長でなければSDRAM300に対してモードセットを行い、SDRAM300の設定を変更する。この例では最適なバースト長は「4」である。 【0173】また、SDRAMインターフェイス回路200は、1つ目の画素の格納アドレスを開始アドレスとするリードコマンドを生成し、SDRAM300へ出力する。 【0174】SDRAM300は、SDRAMインターフェイス回路200からのコマンドに応じて、1つ目の画素の格納アドレスからバースト長分(4ワード)の画素データを出力する。SDRAMインターフェイス回路200は、SDRAM300から4ワードの画素データを受け取り、受信データバッファ700にバッファ1〜順番に保存するが、有効データ数「3」を越える4ワード目の画素データは余分であるので、バッファ4への書き込みをマスクする。これにより、4ワード目の画素データを切り捨てる。 【0175】画像合成処理ブロック1610が2回目のリードアクセスを行うと、SDRAMインターフェイス回路200は、バッファ1〜3に保存した3つの画素データを画像合成処理ブロック1610へ出力する。このような画素データの読み出しを3行分行うことにより、画像合成処理ブロック1610は、位置補正画素群1801のすべての画素データをSDRAM300のイメージ格納領域から読み出すことができる。 【0176】このように、本実施の形態2に係るハンディスキャナ1500では、画像合成処理ブロック1610が位置ずれ補正処理を行うに際し、SDRAM300の仕様を考慮することなくSDRAM300から画素データを読み出すことができる。より具体的に言えば、画像合成処理ブロック1610は、SDRAM300のバースト長の設定内容を認識し、自らが読み出そうとする画素データの数と比較し、最適なバースト長か否か判定する必要がない。また、最適なバースト長に変更するために、モードセットを行う必要がない。さらに、SDRAM300から出力された画素データから余分な画素データを切り捨てる処理を自ら行う必要がない。もちろんSDRAM300のためにアドレスを再生成する必要もないし、リフレッシュを考慮する必要もない。 【0177】この結果、画像合成処理ブロック1610の負荷を軽減し、位置ずれ補正処理および写像処理を高速で行うことができる。また、画像合成処理ブロック1610に、リフレッシュ、モードセットを行うための回路を組み込むことや、SDRAM300から出力されるバースト長分の画素データを一旦保存するバッファを設けたり、余分な画素データを切り捨てる回路を設けるなどの必要がないので、画像合成処理ブロック1610の回路構成を大幅に簡略化することができる。さらに、画像合成処理ブロック1610を設計するにあたり、設計者は、SDRAM300の仕様にあわせる煩雑な作業から解放される。 【0178】画像合成処理ブロック1610は、画像合成の精度を上げるなどの理由で回路設計の変更が考えられるが、その度にSDRAM制御のための回路まで再設計する必要がなくなるので、開発期間およびコストを削減することができる。 【0179】上記実施の形態2では、画像合成処理ブロック1610とSDRAM300とのインターフェイスを例示したが、その他に、画像読取装置において様々な処理装置とSDRAMとのインターフェイスにも本発明を適用し、同様の効果を得ることができる。また、画像合成処理をCPUで行わせる場合に、CPUとSDRAMとのインターフェイスにも適用することができる。 【0180】 【発明の効果】以上説明したように、本発明によれば、制御装置とSDRAMとのインターフェイス回路は制御装置から特別なコマンドを受けることなく制御装置からの要求に応じてコマンドを生成、出力してSDRAMを制御し得るので、制御装置はSDRAMの制御を考慮する必要がなく、制御装置の負荷を軽減して動作を高速化することができるとともに、制御装置の設計やソフトウエアのプログラミングの手間を簡略化し、開発期間の短縮および開発コストの削減を図ることができるという効果を奏する。
|
| 【出願人】 |
【識別番号】000187736 【氏名又は名称】松下電送システム株式会社
|
| 【出願日】 |
平成12年10月4日(2000.10.4) |
| 【代理人】 |
【識別番号】100105050 【弁理士】 【氏名又は名称】鷲田 公一
|
| 【公開番号】 |
特開2002−108700(P2002−108700A) |
| 【公開日】 |
平成14年4月12日(2002.4.12) |
| 【出願番号】 |
特願2000−304606(P2000−304606) |
|