(57)【要約】【課題】  メモリカードと装置の間のデータ転送を短時間に完了することを可能とする。【解決手段】  本発明では、第１のサイズの画像データをメモリカードに書き込むにあたり、ＤＭＡ回路は第１のサイズの画像データの書き込みが完了するまでカードＩ／Ｆに対して画像データを転送すると共に、カードＩ／Ｆは、メモリカードに対する第１のサイズよりも小さい第２のサイズの画像データの書き込みが完了する度にメモリカードのステータスが所定の状態であることをチェックし、メモリカードに対して第１のサイズの画像データの書き込みが完了したことに応じてマイクロプロセッサに対して割り込み要求信号を出力する。【選択図】  図１
2005078161.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと、
メモリデバイスに対してデータを書き込むメモリ制御手段と、
前記マイクロプロセッサの指示に従い、前記メモリ制御手段に対して前記データを転送処理するＤＭＡ手段とを備え、
第１のサイズの前記データを前記メモリデバイスに書き込むにあたり、前記ＤＭＡ手段は前記第１のサイズのデータの書き込みが完了するまで前記メモリ制御手段に対して前記データを転送すると共に、前記メモリ制御制御手段は、前記メモリデバイスに対する前記第１のサイズよりも小さい第２のサイズの前記データの書き込みが完了する度に前記メモリデバイスの状態が所定の状態であることをチェックし、前記メモリデバイスに対して前記第１のサイズのデータの書き込みが完了したことに応じて前記マイクロプロセッサに対して割り込み要求信号を出力することを特徴とする記録装置。
【請求項２】
前記メモリ制御手段は、前記記録媒体の状態が前記所定の状態ではない場合、前記記録媒体に対する前記データの書き込みを停止することを特徴とする請求項１記載の記録装置。
【請求項３】
前記メモリ制御手段は、前記記録媒体から読み出したステータスデータと予め設定した比較値とを比較する比較手段を有し、前記比較手段の出力に基づいて前記メモリデバイスの状態をチェックすることを特徴とする請求項１記載の記録装置。
【請求項４】
前記メモリデバイスは前記第２のサイズのデータが書き込まれる度に割り込み要求を出力し、前記メモリ制御手段は前記メモリデバイスが割り込み要求を発生したことに応じて前記ステータスデータを前記メモリデバイスより読み出すことを特徴とする請求項３の記録装置。
【請求項５】
前記メモリ制御手段は、前記第１のサイズのデータの書き込み開始の指示に応じて前記メモリデバイスより前記ステータスデータを読み出すことを特徴とする請求項４記載の記録装置。
【請求項６】
前記ＤＭＡ手段による前記データの転送を行うか否かを制御するステート制御手段を備えたことを特徴とする請求項１記載の記録装置。
【請求項７】
前記データは画像データを含み、前記ステート制御手段は前記画像データを出力する撮像手段の動作状態に応じて前記ＤＭＡ手段による前記データの転送を行うか否かを制御することを特徴とする請求項６記載の記録装置。
【請求項８】
前記ステート制御手段は、前記画像データの垂直同期期間に同期した所定期間の間、前記ＤＭＡ手段による前記データの転送を停止することを特徴とする請求項７記載の記録装置。
【請求項９】
前記第２のサイズは前記メモリデバイスに従って決定されることを特徴とする請求項１〜８記載の記録装置。
【請求項１０】
マイクロプロセッサと、
メモリデバイスからデータを読み出すメモリ制御手段と、
前記マイクロプロセッサの指示に従い、前記メモリ制御手段により読み出されたデータを転送処理するＤＭＡ手段とを備え、
第１のサイズの前記データを前記メモリデバイスから読み出すにあたり、前記ＤＭＡ手段は前記第１のサイズのデータの読み出しが完了するまで前記メモリ制御手段から読み出された前記データを転送すると共に、前記メモリ制御制御手段は、前記メモリデバイスからの前記第１のサイズよりも小さい第２のサイズの前記データの読み出しがする度に前記メモリデバイスの状態が所定の状態であることをチェックし、前記メモリデバイスから前記第１のサイズのデータの読み出しが完了したことに応じて前記マイクロプロセッサに対して割り込み要求信号を出力することを特徴とする再生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記録媒体に対してデータを記録再生する装置に関する。
【背景技術】
【０００２】
従来、画像信号をデジタル信号として記録再生するデジタルカメラにおいては、画像データなどの記録媒体としてメモリカードを用いている。メモリカードの代表例としてＰＣカード、コンパクトフラッシュ（登録商標）などがある。これらのカードはＡＴＡ規格で定められたコマンドを用いてデータのライト、リードを制御する。
【０００３】
これらのメモリカードのうち、コンパクトフラッシュ（登録商標）の制御方法に関しては、ＣｏｍｐａｃｔＦｌａｓｈ  Ａｓｓｏｃｉａｔｉｏｎが発行する、ＣＦ＋  ａｎｄ  ＣｏｍｐａｃｔＦｌａｓｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  １．４に開示され、ＰＣカードについてはＰＣＭＣＩＡ／ＪＥＩＤＡが発行するＰＣ  Ｃａｒｄ  Ｓｔａｎｄａｒｄ  Ｒｅｌｅａｓｅ  ７に開示されている。
【０００４】
例えばデータライトを行うときには、ホストはまずメモリカードに対してライトセクタコマンドを発行する。次にカードの状態がデータ書き込み可能状態になることを待つ。カードの状態がデータ書き込み可能状態になったことは、カードが出力する割り込み要求信号（ＩＲＥＱ信号）とカードのステータスレジスタを用いて検出することが可能である。ホストはＩＲＥＱ信号のアサートを検出すると、カードのステータスレジスタをリードし、レディフラグがレディ状態であること、データリクエストフラグがデータリクエスト状態であること、エラーフラグがエラー状態でないこと、などを確認する。これが確認された場合、ホストがカードに対して１セクタのデータライトを行うことが可能となる。
【０００５】
ホストがカードに対して複数セクタのデータを連続書き込みする場合においても、１セクタごとに上記のようなカードステータスの確認を行う必要がある。
【０００６】
また、ホストがメモリカードからデータリードを行う場合も同様に、セクタリードコマンド、ＩＲＥＱ信号の確認、ステータスレジスタ値の確認の後に１セクタのデータリードが可能となる。
【０００７】
このようなメモリカードのインターフェースを備えたシステムの例が、特許文献１に開示されている。メモリカードへのデータ転送はＤＭＡコントローラによって制御される。
【０００８】
このようにメモリカードとの間のデータ転送にはＤＭＡを使用することが可能である。
【０００９】
一方で、コンパクトフラッシュ（登録商標）やＰＣＭＣＩＡ  Ｉ／ＯカードといったＡＴＡ規格を使用するメモリカードは、例えば１セクタといった所定のデータサイズを転送するごとに、カードのステータスをチェックすることを要求している。
【００１０】
従って、メモリカードのインターフェースの制御を目的としてＤＭＡを用いる場合、ホストはＤＭＡによるデータ転送の単位を１セクタとし、１セクタ転送毎にステータスリードとチェックとＤＭＡの起動を繰り返し行う必要がある。
【００１１】
メモリカードはデータ転送の単位ごとに割り込み要求信号（ＩＲＥＱ信号）を出力することが可能である。これをＣＰＵの割り込み要求入力に接続することにより、ＣＰＵは１セクタごとにステータスチェックを行うことが可能となる。
【００１２】
ＩＲＥＱ信号がアサートされたとき、ＣＰＵはまず、それまで実行していたタスクを一時停止し、そのタスクに関するレジスタやスタックの値をメモリに退避する。そして割り込み処理を開始し、ステータスリードとステータス値のチェックを行う。そしてステータスレジスタのレディフラグがレディ状態であること、データリクエストフラグがデータリクエスト状態であること、エラーフラグがエラー状態でないこと、などを期待値との比較によって行う。
【００１３】
期待値との比較が一致した場合、ＣＰＵはＤＭＡの起動を行い、割り込み処理を終了する。これによって１セクタ分のデータをシステムメモリからメモリカード、あるいはメモリカードからシステムメモリに対する転送が達成できる。
【００１４】
ＣＰＵは所望のデータ転送が終了するまでの間、これらの処理を繰り返し行うことで、データ転送を達成する。
【特許文献１】特開平６−３３７８４０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
この様に、従来は、ＤＭＡを１セクタを単位として動作させ、さらに１セクタごとにカードのステータスレジスタの値を確認する必要がある。
【００１６】
このため、ＣＰＵは１セクタごとに割り込み処理を実行する必要がある。
【００１７】
通常、ＣＰＵは、メモリカードの処理のみでなく、電源制御、シリアル通信、デジタルカメラの場合では撮像制御といったさまざまなデバイスがアサートする割り込み要求を処理する。さらにはＣＰＵはスタックやレジスタの退避も行う。
【００１８】
従って、カードがＩＲＥＱをアサートしても、ＣＰＵがそれに対してカードステータスのリードを開始するまでの間に、上記の処理も実行することになるため、数百マイクロ秒といった時間が消費されてしまう。
【００１９】
これにより、メモリカードがＩＲＥＱをアサートしてからＤＭＡがメモリカードに対するデータ転送を開始するまでの間に、数百マイクロ秒といった無駄な時間が発生し、ホストとカード間における所望のデータ全てを転送する時間が長大化する。
【００２０】
特に、デジタルカメラにおいてはこの問題が重要になる。
【００２１】
デジタルカメラは、撮影を行うと画像ファイルを生成し、これをメモリカードに記録する。メモリカードへの記録時間が長大化した場合、カメラのユーザーは撮影後、次の撮影が可能となるまでの時間まで待たされることになり、シャッターチャンスを逃してしまう。
【００２２】
また、ＣＰＵは１セクタ転送ごとに割り込み処理を起動するため、その間行われる他のタスクがその都度停止され、他のタスクの実行速度が低下する。
【００２３】
例えばデジタルカメラにおいては、ユーザーインターフェースのレスポンスが低下したり、動画撮影の能力が低下することによって動画中の自動露出やオートホワイトバランスの処理が達成できず、画質の低下が起こる。
【００２４】
更に、デジタルカメラでは、通常、撮像素子は所定の周期に同期して水平ラインを読み出し、さらにこれを垂直方向に繰り返し読み出すことによって画像信号を得る。その際、画像の明るさやホワイトバランスを適切に制御する必要がある。このためデジタルカメラは生成した一画面の画像データを解析し、この結果を撮像回路にパラメータとしてセットすることにより、画像の明るさやホワイトバランスを適切に制御している。
【００２５】
従って、一般的に垂直ブランキング期間と呼ばれる１フレームと１フレームの間の時間に画像データの解析から撮像回路に対するパラメータのセットを完了しなければならない。
【００２６】
このようなときにメモリカードに対するデータ転送を行っている場合、データ転送の間はこれがシステムのバスを占有するため、上記のような処理が次のフレームまでに完了できない場合があり、この場合画質が低下してしまう。
【００２７】
本発明はこのような問題を解決し、ホストとメモリカードの間のデータ転送時間を短縮するとともに情報機器がメモリカードに対するデータ転送を行っている間の処理能力を向上することで、レスポンスや撮像能力を向上することを目的とする。
【課題を解決するための手段】
【００２８】
このような目的を達成するため、本発明においては、マイクロプロセッサと、メモリデバイスに対してデータを書き込むメモリ制御手段と、前記マイクロプロセッサの指示に従い、前記メモリ制御手段に対して前記データを転送処理するＤＭＡ手段とを備え、第１のサイズの前記データを前記メモリデバイスに書き込むにあたり、前記ＤＭＡ手段は前記第１のサイズのデータの書き込みが完了するまで前記メモリ制御手段に対して前記データを転送すると共に、前記メモリ制御制御手段は、前記メモリデバイスに対する前記第１のサイズよりも小さい第２のサイズの前記データの書き込みが完了する度に前記メモリデバイスの状態が所定の状態であることをチェックし、前記メモリデバイスに対して前記第１のサイズのデータの書き込みが完了したことに応じて前記マイクロプロセッサに対して割り込み要求信号を出力する構成とした。
【発明の効果】
【００２９】
本発明によれば、メモリデバイスとの間のデータ転送を短時間に完了することが可能となる。
【発明を実施するための最良の形態】
【００３０】
図１は、本発明の実施の形態のデジタルカメラの構成を示す図である。
【００３１】
１はシステムバスで、アドレスバス、データバス、制御信号から成る。２はＣＰＵで、カメラのシーケンスをコントロールする。１４はＲＯＭで、カメラが動作するためのプログラムが書き込まれている。ＣＰＵ２はシステムバス１及びＲＯＭコントローラ１３を通してＲＯＭ１４をリードすることが可能であり、これによりＣＰＵ２はＲＯＭ１４に記録された命令を実行することが可能である。
【００３２】
１５はメモリコントローラ、１６はＤＲＡＭで、メモリコントローラはシステムバスからのＤＲＡＭアクセス要求を受け、ＤＲＡＭ１６へのアクセス信号を生成し、さらにＤＲＡＭ１６へのデータの書き込みやＤＲＡＭ１６からのデータの読み出しを実行する回路である。ＤＲＡＭ１６はＣＰＵ２がプログラムを実行する際のワークデータを保持し、またカメラの撮影動作によって生成される画像データやディスプレイに再生するための画像データを保持する。また、ＣＰＵ２はＤＲＡＭ１６に記録された命令を実行することも可能である。
【００３３】
１７は被写体像を結像させるためのレンズで１８は撮像センサである。２０は撮像回路で撮像センサ１８より得たデジタル画像信号を処理することによりデジタル画像データを生成する回路である。撮像回路２０は所定周期で行われる撮像処理に同期した信号を割り込みコントローラ３に対して出力する。
【００３４】
２３は表示回路でＤＲＡＭ１６上のデジタル画像データより画像信号を生成し、ディスプレイ２１に対して出力する。ディスプレイ２１はカラー液晶表示パネルなどによって構成されるディスプレイで、画像を表示する。
【００３５】
４はメモリカードで、主に撮影によって得られた画像ファイルを保存する。メモリカードは例えばＰＣＭＣＩＡ  Ｉ／Ｏカードやコンパクトフラッシュ（登録商標）等の記録再生可能なカードであり、例えばＡＴＡコマンドといったコマンドによりデータライト、データリードを制御し、さらにデータ転送は例えば１セクタ、５１２バイトといった所定の数を単位として行われる。
【００３６】
５はメモリカードのソケットであり、メモリカード４の着脱を可能とするための装置である。例えばコンパクトフラッシュ（登録商標）のデータバスは１６ビットのデータ線およびアドレス線や制御信号線から構成されている。
【００３７】
６はメモリカードコントローラで、メモリカードのデータ線、アドレス線、制御信号を制御する回路で、メモリカード４に対するコマンドの発行、メモリカードの各レジスタに対するライト及びリードアクセス、メモリカード４に対するデータライト、データリードが可能である。また、メモリカードコントローラ６はバスインターフェース１１によりシステムバス１に接続され、ＣＰＵ２によってメモリカードコントローラ６の制御及びメモリカードに対するライトアクセス、リードアクセスが可能である。
【００３８】
更に、メモリカードコントローラ６にはＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）回路１２が接続されている。ＤＭＡ１２は予めＣＰＵ２によってセットされた転送開始アドレスと転送データ長を用いて所定のアドレスから所定の数のデータを転送する回路である。ＤＭＡ１２はバスマスタとしてシステムバス１に対して制御信号とアドレスを生成することが可能であり、さらにメモリカードコントローラ６に対してもライトアクセス要求、リードアクセス要求を発行することが可能である。
【００３９】
これにより例えばＤＲＡＭ１６のように所定のアドレスにマッピングされたデバイスとメモリカードコントローラ６の間において、ＣＰＵ２がデータ転送アクセスを実行することなく、メモリカードコントローラ６のデータアクセスに同期してデータを転送することが可能となる。
【００４０】
メモリカードコントローラ６にはカウンタ１０が接続されている。メモリカードコントローラ６はメモリカード４に対するデータリードまたはデータライト処理が発生したとき、カウンタ１０に対してカウントアップ信号を出力する。カウンタ１０はメモリカードコントローラ６が行ったデータリードまたはデータライトの回数をカウントし、１セクタ相当のアクセス回数がカウントされたとき、ステート制御回路９に対して信号を出力する。
【００４１】
また、メモリカードの種類によっては一度のステータスチェックにより複数セクタ相当の数のデータを転送することを許容するものもある。
【００４２】
この場合、カウンタ１０が、一度のステータスチェックにより転送を許可されている最大のデータ数をカウントした際に信号を発生するよう設定することも可能である。
【００４３】
メモリカードコントローラ６には比較回路８、及び比較回路２４が接続されている。メモリカードコントローラ６はメモリカード４より読み取ったメモリカードのステータスレジスタの値を比較回路８と比較回路２４に出力する。
【００４４】
設定レジスタブロック７はメモリカード４の制御動作に関する設定値を記憶するレジスタブロックであり、ＣＰＵ２からシステムバス１及びバスインターフェース１１を経由してライトアクセス、リードアクセスすることが可能である。
【００４５】
設定レジスタブロック７はその中の一つのレジスタにカードステータスの期待値１を記憶し、これを比較回路８に出力し、また他の一つのレジスタにカードステータスの期待値２を記憶し、これを比較回路２４に出力している。
【００４６】
比較回路８とメモリカードコントローラ６の間にはマスク回路２５が、また比較回路２４とメモリカードコントローラ６の間にはマスク回路２６がある。マスク回路２５及び２６は、入力データ中の特定のビットのみを通過させる論理回路であり、マスク回路２５に通過させるビットは選択可能であり、その設定値は設定レジスタブロック７が保持する。同様にマスク回路２６に通過させるビットは選択可能であり、その設定値は設定レジスタブロック７が保持する。これらによりＣＰＵ２はマスク回路２５及び２６に通過させるビットをそれぞれ独立に設定することが可能である。
【００４７】
比較回路８はメモリカード４より読み取ったメモリカード４のステータスレジスタの値と期待値１とを比較し、比較結果をステート制御回路９に出力する。同様に比較回路２４はメモリカードより読み取ったメモリカード４のステータスレジスタの値と期待値２を比較し、比較結果をステート制御回路９に出力する。
【００４８】
ステート制御回路９はメモリアクセスのシーケンスを制御するステートマシンであり、その動作の詳細については後で述べる。
【００４９】
次に、図１、図２、図３、図４を用いてメモリカード４に対してデータライトを行う時の動作を説明する。図２はステート制御回路９の動作を示し、図３はＣＰＵ２の動作を示す図である。
【００５０】
図３の１０００において、ＣＰＵ２はデータライト処理を開始する。
【００５１】
ＣＰＵ２はまずＳ１００１にてメモリカードに対してこれから行うデータ転送に関する、論理ブロックアドレスの設定、更にＳ１００２にて転送セクタ数、Ｓ１００３にて転送するデータが記録される先頭セクタ番号の設定を行う。これらはＣＰＵ２による設定値のライト指示がシステムバス１とバスインターフェース１１を経由してメモリカードコントローラ６に伝達され、メモリカードコントローラがメモリカード４を制御することによって行われる。
【００５２】
次にＣＰＵ２はＳ１００４において、メモリカードコントローラ６に対してＤＭＡ転送先アドレスを指定する。このＤＭＡ転送先アドレスとは、メモリカード４上でマッピングされたアドレスを指し、ここではデータレジスタを示すアドレスを指定する。このアドレス値は設定レジスタブロック７に記憶される。
【００５３】
Ｓ１００５においてＣＰＵ２は、Ｓｋｉｐ  ＩＲＥＱ  Ｗａｉｔｉｎｇレジスタに１を、転送終了割り込みイネーブルレジスタに１をセットする。Ｓｋｉｐ  ＩＲＥＱ  Ｗａｉｔｉｎｇレジスタは設定レジスタブロック７に存在する一つのレジスタであり、この値が０であるか１であるかによってステート制御回路９の動作を決定する。転送終了割り込みイネーブルレジスタは、メモリカードコントローラ６が全てのデータをメモリカード４に転送し終わった時に割り込み要求をアサートする機能の動作を決定するための値を保持し、この値が１であるとき、メモリカードコントローラ６は全ての転送の終了を、ＤＭＡＥＮがネゲートされたこと、１セクタ単位の転送が終了していること、メモリカードがＩＲＥＱをアサートしたことにより判断したとき、割り込み要求信号をアサートする。
【００５４】
Ｓ１００６においてＣＰＵ２は、メモリカードコントローラ６に対して１セクタのデータ数すなわち１セクタの転送に必要なデータライトの回数を設定する。
【００５５】
一般的なファイルシステムの元でメモリカードを使用する場合、１セクタは５１２バイトであり、メモリカードのデータバスが１６ｂｉｔである場合、データライトの回数は２５６回である。この値は設定レジスタブロック７に記憶される。
【００５６】
Ｓ１００７及びＳ１００８においてＣＰＵ２は、メモリカード４のステータスレジスタのアドレスとこれの期待値を設定する。メモリカード４のステータスレジスタとはメモリカード４の状態を示すレジスタで、これをリードすることによりレディ状態であるか、データリクエスト状態であるか、エラーステータスであるか、等を知ることができる。
【００５７】
データライトやデータリードを行う場合はこのレジスタの値が所定の値、例えばレディ状態かつデータリクエスト状態であり、かつエラー状態ではないこと、である必要があり、期待値としてこのような値を設定レジスタブロックの期待値１にセットし、メモリカード４から読み出したステータスレジスタの値と期待値を比較することによりこれらをチェックする。また、エラーの検出のため、エラービットを設定レジスタブロックの期待値２としてセットし、さらにエラービット以外はマスクされるようマスク回路２６を設定する。
【００５８】
更にＣＰＵ２は比較回路が比較一致を示した場合のステートマシンの振る舞いを設定することが可能であり、これを設定するレジスタとしてＳｕｓｐｅｎｄＥｎａｂｌｅレジスタが存在する。ＳｕｓｐｅｎｄＥｎａｂｌｅレジスタの設定値としてはＤＭＡ続行とＤＭＡサスペンドの二種類から選択が可能である。ここでは比較回路８が一致を示したときはＤＭＡ続行を選択し、比較回路２４が一致を示したときはＤＭＡサスペンドを選択し、これをＳｕｓｐｅｎｄＥｎａｂｌｅレジスタに設定する。
【００５９】
Ｓ１００９においてＣＰＵ２は、メモリカード４に対してライトセクタコマンドを発行する。これによりメモリカード４は後にライト可能な状態となるが、それについては後で説明する。
【００６０】
Ｓ１０１０にてＣＰＵ２は、ＤＭＡ１２に対してＤＭＡの転送対象となるデータが存在する、先頭アドレスを設定する。ここではメモリカード４に対して転送するデータはＤＲＡＭ１６に存在する。従って、ここでＤＭＡ１２にセットされるＤＭＡ転送開始アドレスとは、ＤＲＡＭ１６上に存在する転送対象データの先頭アドレスである。更にＣＰＵ２はＤＭＡ１２に対してＤＭＡ転送対象となるデータのサイズを設定する。
【００６１】
Ｓ１０１１にてＣＰＵ２はＤＭＡ１２に対してＤＭＡによるデータ転送の方向をＤＲＡＭ１６からメモリカード４の方向にセットする。
【００６２】
ここで、ＣＰＵ２は図３のＳ１０１２、図４のＡにおいて、ＤＭＡ１２に対してＤＭＡ転送開始を指示する。これにより、ＤＭＡ１２はＤＭＡＥＮ信号を１にアサートする。
【００６３】
更にＣＰＵ２はＳ１０１３にて割り込みコントローラ３に対して、メモリカードコントローラ６が発生する転送終了割り込みをＣＰＵ２に対する割り込み要求として設定する。これによってＣＰＵ２はメモリカードコントローラがデータ転送終了を示すまでの間、メモリカード４とＤＲＡＭ１６間のデータ転送に関する処理を行う必要は無くなる。
【００６４】
更にマルチタスクＯＳによりシステムのタスクを制御することにより、割り込み発生までの間、ＣＰＵ２は他のタスクを処理することが可能となる。
【００６５】
このとき、割り込み要因としてＤＭＡ１２ではなくメモリカードコントローラ６を選択するのは、メモリカードコントローラ６はメモリカード４を制御するので全てのデータがメモリカード４に転送されたことを検出することが可能であるためである。
【００６６】
図２において、ステート制御回路９は、デジタルカメラが起動してからここまでの間、すなわち初期状態では１０１のアイドルステートをとる。そしてＣＰＵ２がＳ１０１２にてＤＭＡ１２に対してＤＭＡ転送開始を指示したことにより、ＤＭＡ１２はＤＭＡＥＮ信号をアサートし、これはメモリカードコントローラ６を経由してステート制御回路９に伝達される。ステート制御回路９はＤＭＡＥＮ信号がアサートされかつ事前にＳｋｉｐ  ＩＲＥＱ  Ｗａｉｔｉｎｇレジスタの値が１にセットされていることにより、状態を１０３のステータスチェックステートに遷移する。
【００６７】
本形態ではデータライトまたはリード時の最初のセクタに関して、Ｓｋｉｐ  ＩＲＥＱ  Ｗａｉｔｉｎｇレジスタによって、ＩＲＥＱがアサートされることを待つ機能を動作させるか否かを選択可能である。これは、コンパクトフラッシュ（登録商標）やＰＣＭＣＩＡ  Ｉ／ＯカードといったＡＴＡ規格を用いるメモリカードが、データリードとデータライトにおいて異なるＩＲＥＱの振る舞いをとるためである。
【００６８】
これらのメモリカードはデータリード時にはリードコマンド発行後最初のセクタに関してもＩＲＥＱをアサートするが、一方データライト時ライトコマンド発行後、最初のセクタに関してはＩＲＥＱをアサートしない。
【００６９】
ステート制御回路９のステートが１０３である場合、メモリカードコントローラ６はメモリカード４のステータスレジスタを繰り返しリードする。リードした値は比較回路８において事前にセットされた期待値と比較される。比較結果が不一致である場合、ステート制御回路は状態１０３をとり、メモリカードコントローラ６は比較結果が一致するまで繰り返しステータスレジスタをリードする。
【００７０】
この様に図４のＡからＢまでの間において、メモリカード４のステータスレジスタを繰り返しリードする。そしてメモリカード４がステータスの値を所望の値に変化させたことにより、Ｂにて比較回路８の比較結果が期待値１との一致を示した場合、ステート制御回路９は図４のＢにて状態を図２のステート１０４のＤＭＡに遷移させる。
【００７１】
ステート制御回路９の状態が１０４であるとき、メモリカードコントローラ６はＤＭＡ１２がアサートするＤＭＡリクエスト信号に同期してＤＭＡ１２よりデータを受け取り、これをメモリカード４のデータレジスタに対してライトアクセスする。ここでメモリカードコントローラ６がデータレジスタに対してデータをライトするのは、事前にＳ１００４にてデータ転送先がデータレジスタを示すアドレスに設定されているためである。
【００７２】
ステート制御回路９の状態が１０４である間、メモリカードコントローラ６は繰り返しデータライトを行う。これと同時にカウンタ１０はデータライトの回数をカウントする。
【００７３】
カウンタ１０はデータライトの回数が１セクタ分となった場合、これを示す信号をステート制御回路９に対してアサートする。
【００７４】
図４のＣにおいてカウンタ１０が１セクタのデータライトが完了したことを示し、さらに最後の転送が完了していたとする。ここで、ステート制御回路９はＤＭＡＥＮの値を評価する。ＤＭＡＥＮは転送開始によって１にアサートされ、予めセットされたデータサイズ全ての転送が終了したときに０にネゲートされる信号である。
【００７５】
従って、１セクタの転送完了後にＤＭＡＥＮがアサート状態である場合、まだ転送すべきデータが残っていることを示す。
【００７６】
ステート制御回路９はこれにより図４のＣにおいて状態を図２のステート１０２に遷移させる。ステート制御回路９の状態が１０２のＷａｉｔ  ＩＲＥＱである場合、メモリカードコントローラ６はメモリカード４がＩＲＥＱ信号をアサートすることを待つ。
【００７７】
メモリカード４はデータ転送可能な状態となったとき、ＩＲＥＱ信号をアサートする。ＩＲＥＱ信号は０でアサート状態すなわち割り込み要求状態であり、１でネゲート状態である。図４のＤにおいてメモリカード４がＩＲＥＱ信号をアサートしたとする。これによりステート制御回路９は状態を１０３に遷移させる。メモリカードコントローラ６はメモリカード４のステータスレジスタをリードし、比較回路８はメモリカード４のステータスと期待値を再び比較する。そして図４のＥにおいて再びステートを１０４に遷移させ、１セクタ分のデータライトをＤＭＡに同期して行う。
【００７８】
以上の処理を繰り返し行い、図４のＦにて予定していた全てのデータがＤＲＡＭ１６からメモリカードコントローラ６に転送されたとする。ここでは１セクタ分の転送が完了していると同時にＤＭＡＥＮは０にネゲートされているので、ステート制御回路９は状態を１０１のアイドル状態に遷移させる。
【００７９】
更にこの後、メモリカードコントローラ６は図４のＧにおいて、ＤＭＡＥＮがネゲートされたこと、１セクタ単位の転送が終了していること、メモリカード４がＩＲＥＱをアサートしたことを判断すると、割り込み要求信号を割り込みコントローラ３に対して出力し、さらに割り込みコントローラ３はこれをＣＰＵ２に対してアサートする。
【００８０】
これにより、ＣＰＵ２はメモリカード４に対するデータライトが確実に完了したことを知ることが可能となり、メモリカードに対する次のコマンドを誤ってデータ転送完了前に発行するなどの事故を防止することが可能となる。また、通常デジタルカメラでは、メモリカードへのデータ書き込み動作中は、ユーザーによるメモリカードの抜き取りを防止するために警告を表示する。本形態ではデータの書き込みが完全に終了したときにＣＰＵに割り込み要求を出力するため、このような警告表示の終了を確実に行うことが可能である。
【００８１】
データ書き込み終了割り込みによりＣＰＵ２は他のタスクの実行を停止し、実行処理を図３のセクタライト処理のＳ１０１４に戻す。これによりＣＰＵ２はメモリカードに対するデータライトの処理をＳ１０１５にて終了する。
【００８２】
以上の様に、メモリカード４に対するデータライトは完了する。
【００８３】
このとき、メモリカード４に対するデータ転送を開始した直後であるＳ１０１３からデータ転送が完了するＳ１０１４間での間、ＣＰＵ２はメモリカード４に関する処理は一切必要ない。そのため、ＣＰＵ２はこの間別のタスクを実行することが可能である。
【００８４】
また、メモリカード４に対するデータ転送において、ＣＰＵ２はステータスの確認を行う必要は無く、ＩＲＥＱ信号によって割り込み処理を起動する必要も無いのでステータスが期待値と一致したことは瞬時に判断され、ＤＭＡ１２はメモリカード４のステータスがレディとなった直後にデータ転送を開始することが可能となる。
【００８５】
ここで、データ転送中においてメモリカード４がステータス値としてエラー状態を示した場合について説明する。
【００８６】
予め期待値２にはエラービットの値が設定され、マスク回路２６はエラービット以外をマスクするよう設定されている。
【００８７】
図２の１０３においてメモリカード４のステータスレジスタがリードされ、この値のエラービットが真である場合、比較回路２４はその結果をステート制御回路９に伝達する。ステート制御回路９は状態を図２の１０５に遷移させる。そして、ＤＭＡは起動され、かつデータ転送をリクエストした状態であるが、メモリカードコントローラ６はメモリカード４へのアクセスを行わず、ＤＭＡ処理を一時停止させた状態をとる。
【００８８】
もしエラーを回避することが可能なのであればＣＰＵ２はメモリカードコントローラ６にレジューム指令を行い、データ転送を再開することも可能である。また、エラーに対してこれを回避することが不可能である場合は、ＤＭＡ処理を停止する。その結果ＤＭＡＥＮ信号が０になり、ステート制御回路９は１０１の初期状態に遷移するため、データ転送は中止され、例えばカードを初期化するといったことが可能である。
【００８９】
もしカードに書き込むべきデータがＤＲＡＭ１６上に存在するのであれば、論理アドレスを変更した上で再びデータのライトを試みればよい。
【００９０】
次に、図１、図２、図５、図６を用いてメモリカードに対するデータリード時の動作を説明する。
【００９１】
図３の１１００において、ＣＰＵ２はデータリード処理を開始する。
【００９２】
ＣＰＵ２はまずＳ１１０１にてメモリカード４に対してこれから行うデータ転送に関する、論理ブロックアドレスの設定、さらにＳ１１０２にて転送セクタ数、Ｓ１１０３にて転送するデータが記録される先頭セクタ番号の設定を行う。
【００９３】
更にＣＰＵ２はＳ１１０４において、メモリカードコントローラ６に対してＤＭＡ転送元アドレスとしてメモリカード４のデータレジスタを示すアドレスを指定する。
【００９４】
Ｓ１１０５においてＣＰＵ２は、Ｓｋｉｐ  ＩＲＥＱ  Ｗａｉｔｉｎｇレジスタに０をセットする。これはメモリカード４がリードセクタ時においては最初のセクタに関してもＩＲＥＱをアサートするためである。また、このときＣＰＵ２は、転送終了割り込みイネーブルレジスタに０をセットする。
【００９５】
Ｓ１１０６においてＣＰＵ２は、メモリカードコントローラ６に対して１セクタのデータ数として５１２バイトを設定する。また、Ｓ１１０７及びＳ１１０８においてＣＰＵ２は、メモリカード４のステータスレジスタのアドレスとこれの期待値を設定する。Ｓ１１０９においてＣＰＵ２は、メモリカード４に対してリードコマンドを発行する。
【００９６】
Ｓ１１１０にてＣＰＵ２は、ＤＭＡ１２に対してデータを記録するアドレスとしてＤＲＡＭ１６上に存在するデータ保存領域の先頭アドレスを指定する。さらにＣＰＵ２はＤＭＡ１２に対してＤＭＡ転送対象となるデータのサイズを設定する。
【００９７】
Ｓ１１１１にてＣＰＵ２はＤＭＡ１２に対してＤＭＡによるデータ転送の方向をメモリカード４からＤＲＡＭ１６の方向にセットする。
【００９８】
ここで、ＣＰＵ２は図５のＳ１１１２、図６のＨにおいて、ＤＭＡ１２に対してＤＭＡ転送開始を指示する。これにより、ＤＭＡ１２はＤＭＡＥＮ信号を１にアサートする。
【００９９】
更にＣＰＵ２はＳ１１１３にて割り込みコントローラ３に対して、ＤＭＡ１２が発生する転送終了割り込みをＣＰＵ２に対する割り込み要求として設定する。これによってＣＰＵ２はＤＭＡ１２がデータ転送終了を示すまでの間、メモリカード４とＤＲＡＭ１６間のデータ転送に関する処理を行う必要は無くなる。
【０１００】
更にマルチタスクＯＳによりシステムのタスクを制御することにより、割り込み発生までの間、ＣＰＵ２は他のタスクを処理することが可能となる。
【０１０１】
このとき、割り込み要因としてＤＭＡを選択するのは、メモリに対してトランザクションを発生するＤＭＡ１２は全てのデータがＤＲＡＭ１６に転送されたことを検出することが可能であるためである。
【０１０２】
図２において、ステート制御回路９は、デジタルカメラが起動してからここまでの間は１０１のアイドルステートをとる。そしてＣＰＵ２がＳ１１１２にてＤＭＡ１２に対してＤＭＡ転送開始を指示したことにより、ＤＭＡ１２はＤＭＡＥＮ信号をアサートし、これはメモリカードコントローラ６を経由してステート制御回路９に伝達される。
【０１０３】
ステート制御回路９はＤＭＡＥＮ信号がアサートされかつ事前にＳｋｉｐ  ＩＲＥＱ  Ｗａｉｔｉｎｇレジスタの値が０にセットされていることにより、状態を１０２のＷａｉｔ  ＩＲＥＱ状態に遷移させる。これによりメモリカードコントローラはカードがＩＲＥＱ信号をアサートすることを待つ。ＩＲＥＱ信号がアサートされた場合、図６のＩにおいて状態を１０３のステータスチェックステートに遷移する。
【０１０４】
ステート制御回路９のステートが１０３である場合、メモリカード４のステータスレジスタを繰り返しリードする。ここで、メモリカード４がステータスの値を所望の値に変化させたことにより、Ｊにて比較回路の比較結果が期待値との一致を示し、ステート制御回路９は図６のＪにて状態を図２のステート１０４のＤＭＡに遷移させる。
【０１０５】
ステート制御回路９の状態が１０４であるとき、メモリカードコントローラ６はＤＭＡ１２がアサートするＤＭＡリクエスト信号に同期してメモリカードのデータレジスタよりデータを受け取り、これをＤＲＡＭ１６に対して転送する。ステート制御回路９の状態が１０４である間、メモリカードコントローラ６は繰り返しデータリードを行う。これと同時にカウンタ１０はデータリードの回数をカウントする。
【０１０６】
カウンタ１０はカウント値が１セクタ分のデータライトの回数と一致した場合、これを示す信号をステート制御回路９に対してアサートする。
【０１０７】
図６のＫにおいてカウンタ１０が１セクタのデータリードが完了したことを示し、さらに最後の転送が完了していたとする。ここで、ステート制御回路９はＤＭＡＥＮの値を評価する。１セクタの転送完了後にＤＭＡＥＮがアサート状態である場合、まだ転送すべきデータが残っていることを示す。
【０１０８】
ステート制御回路９はこれにより図６のＫにおいて状態を図２のステート１０２に遷移させる。ステート制御回路９の状態が１０２のＷａｉｔ  ＩＲＥＱである場合、メモリカードコントローラ６はメモリカード４がＩＲＥＱ信号をアサートすることを待つ。
【０１０９】
メモリカード４はデータ転送可能な状態となったとき、ＩＲＥＱ信号をアサートする。図４のＬにおいてメモリカード４がＩＲＥＱ信号をアサートした場合、ステート制御回路９は状態を１０３に遷移させる。メモリカードコントローラ６はメモリカード４のステータスレジスタをリードし、比較回路８はメモリカード４のステータスと期待値を再び比較する。そして図６のＭにおいて再びステートを１０４に遷移させ、１セクタ分のデータリードをＤＭＡに同期して行う。
【０１１０】
これらの動作を繰り返し行い、図６のＮにて予定していた全てのデータがメモリカードコントローラ６からＤＲＡＭ１６に転送されたとする。ここでは１セクタ分の転送が完了していると同時にＤＭＡＥＮは０にネゲートされている。これによりステート制御回路は状態を１０１のアイドル状態に遷移させる。
【０１１１】
ここではメモリカードコントローラ６は、転送終了割り込みをアサートしない。一方ＤＭＡ１２は全データがＤＲＡＭ１６に転送されたとき、転送終了割り込みをアサートする。ＣＰＵ２は全データの転送終了をＤＭＡ１２の転送終了割り込みがアサートされたことによって検出する。
【０１１２】
これによりＣＰＵ２は図３のＳ１１１４において割り込みを検出し、メモリカード４からのデータリードの処理をＳ１１１５にて終了する。
【０１１３】
以上によってメモリカード４からのデータリードは完了する。
【０１１４】
このとき、メモリカード４からのデータ読み出しを開始した直後であるＳ１１１３からデータ転送が完了するＳ１１１４間での間、ＣＰＵ２はメモリカード４に関する処理は一切行うことなしに複数セクタのデータリードを完了することが可能である。そのため、ＣＰＵ２はこの間別のタスクを実行することが可能である。
【０１１５】
また、メモリカード４からのデータ転送において、ＣＰＵ２はステータスの確認を行う必要は無く、ＩＲＥＱ信号によって割り込み処理を起動する必要も無いのでステータスが期待値と一致したことは瞬時に判断され、ＤＭＡは直後にデータ転送を開始することが可能となる。
【０１１６】
以上のように、本形態では、ＩＲＥＱ信号の検出、ステータスレジスタ値のチェック、ＤＭＡの起動の間に、ＣＰＵが行う割り込み処理が介在しないため、これらの処理を瞬時に完了することが可能となり、メモリカードと装置の間のデータ転送を短時間に完了することが可能となり、これにより撮影間隔時間が短く使い勝手のよいデジタルカメラを実現することが可能となる。
【０１１７】
更に、メモリカードとの間でデータ転送している間、ＣＰＵは他のタスクを実行することが可能であり、かつこのタスクはデータ転送のセクタ単位によって中断されることも無い。これによりＣＰＵの処理能力が向上し、例えばユーザーからの操作に対してレスポンスよく動作する使い勝手のよいデジタルカメラを実現することが可能となる。
【０１１８】
なお、本形態では、所定の期間、メモリカードとＤＲＡＭの間のデータ転送を一時的に中止し、その期間の終了によりデータ転送を再開することも可能である。
【０１１９】
本形態では、比較回路が比較一致を示した場合のステートマシンの振る舞いを設定するＳｕｓｐｅｎｄＥｎａｂｌｅレジスタが存在し、振る舞いはＤＭＡ続行とＤＭＡサスペンドの二種類から選択が可能である。
【０１２０】
図７はデータ転送実行中の動作を示す図である。
【０１２１】
データ転送実行中であるＰにおいて、ＣＰＵ２は比較回路８の比較結果に関するＳｕｓｐｅｎｄＥｎａｂｌｅレジスタの値をＤＭＡ続行からサスペンドに変更する。ステート制御回路９はＱにおいてステートを１０３に遷移しステータスレジスタをリードする。さらに比較回路８はこれらのデータの一致を示す。
【０１２２】
Ｒにおいてステート制御回路９はこのような設定が行われたことにより状態を１０５のサスペンドステートに遷移する。これによってメモリカード４とＤＲＡＭ１６間のＤＭＡ転送は一時停止状態となる。
【０１２３】
次にＣＰＵ２はＳにおいてＳｕｓｐｅｎｄＥｎａｂｌｅレジスタの値をＤＭＡ続行に戻し、さらにメモリカードコントローラ６に対してレジュームを指令する。これによってステート制御回路９はデータ転送を再開する。
【０１２４】
デジタルカメラにおいては、撮像動作の動作に同期して、ＣＰＵのプログラム実行を優先させたい場面がある。
【０１２５】
例えば撮像時、撮像画像の露出やホワイトバランスを調整する必要がある。撮像処理は水平同期信号や垂直同期信号に同期して行われ、一画面と一画面の間の時間をＶブランキング期間と呼んでいる。露出やホワイトバランスの処理は、撮像素子より得られた一画面分の画像データを用いて演算を行い、この露出やホワイトバランス制御のための制御値を次の一画面の撮像が開始されるより前に撮像回路に対して設定する必要がある。したがって演算からパラメータセットまでの処理をＶブランキング期間中に完了することが必要となる。
【０１２６】
そのためＶブランキングの期間中は露出やホワイトバランス制御のためにシステムバスやＲＯＭ、ＤＲＡＭを優先的に使用することが好ましく、メモリカードに対するデータ転送のために使用することは好ましくない。
【０１２７】
そのため、Ｖブランキング期間が開始されるより前にＳｕｓｐｅｎｄＥｎａｂｌｅレジスタをＤＭＡサスペンドに変更し、Ｖブランキング期間終了とともにＳｕｓｐｅｎｄＥｎａｂｌｅレジスタの値をＤＭＡ続行に戻し、さらにメモリカードコントローラ６に対してレジュームを指令すればよい。
【０１２８】
撮像回路２０はＶブランキング期間の開始よりちょうどメモリカードアクセス１セクタ分の時間前に、割り込み要求を、またＶブランキング終了時も割り込み要求を割り込みコントローラ３に出力する。ＣＰＵ２はＶブランキング期間開始前であることを割り込みによって検出した場合、ＳｕｓｐｅｎｄＥｎａｂｌｅレジスタをＤＭＡサスペンドに変更する。また、ＣＰＵ２はＶブランキング期間終了を割り込みによって検出した場合、ＳｕｓｐｅｎｄＥｎａｂｌｅレジスタをＤＭＡ続行に戻し、さらにメモリカードコントローラ６に対してレジュームを指令する。
【０１２９】
これにより、メモリカード４に対するデータ転送はＶブランキング期間には行われず、Ｖブランキング期間、ＣＰＵは撮像に関する処理を最大限に処理することが可能となる。しかもＶブランキング以外の時間はメモリカード４に対するデータ転送を短時間で行うことが可能である。
【０１３０】
この様に、本形態では、撮像時において撮像に必要な処理をメモリカードに対するデータ転送より優先して行うことが可能であり、撮像処理を確実に行うことにより高画質なデジタルカメラを実現することも可能である。
【図面の簡単な説明】
【０１３１】
【図１】実施形態の装置の構成を示す図である
【図２】ステート制御回路の状態遷移を示す図である
【図３】データライト時の処理の流れを示す図である
【図４】データライト時の動作を示す図である
【図５】データリード時の処理の流れを示す図である
【図６】データリード時の動作を示す図である
【図７】データ転送一時停止の動作を示す図である
【図１】
2005078161.tif 000003
【図２】
2005078161.tif 000004
【図３】
2005078161.tif 000005
【図４】
2005078161.tif 000006
【図５】
2005078161.tif 000007
【図６】
2005078161.tif 000008
【図７】
2005078161.tif 000009