(57)【特許請求の範囲】
【請求項１】
記録媒体の所望アドレスを形成する第１バイトおよび第２バイトを順に指定するＣＰＵ、および前記ＣＰＵの指定に基づいて前記記録媒体からデータを読み出すメモリコントローラを備えるメモリアクセス回路であって、前記記録媒体はデータが読み出された後もアドレス指定およびチップセレクト指定を必要とし、前記ＣＰＵは終了信号に応答してアドレス指定およびチップセレクト指定を解除するものにおいて、
前記ＣＰＵは、第１終了信号に応答してバイト指定を前記第１バイトから前記第２バイトに更新し、第２終了信号に応答して前記アドレス指定および前記チップセレクト指定を解除し、
前記メモリコントローラは、データ読み出しを許可するイネーブル信号を前記アドレス指定および前記チップセレクト指定によって規定される特定期間に前記記録媒体に出力するイネーブル信号出力手段、前記特定期間の後に前記第２終了信号を前記ＣＰＵに出力する第２終了信号出力手段、および前記特定期間が開始された後でかつ前記第２終了信号が出力される前に前記第１終了信号を前記ＣＰＵに出力する第１終了信号出力手段を含む、メモリアクセス回路。
【請求項２】
前記ＣＰＵは前記第２バイトの指定の後に前記メモリコントローラから入力されたデータを無効とする、請求項１記載のメモリアクセス回路。
【請求項３】
前記ＣＰＵは同期バス方式を採用する、請求項１または２記載のメモリアクセス回路。
【請求項４】
請求項１ないし３のいずれかに記載のメモリアクセス回路を備える、ディジタルカメラ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はメモリアクセス回路に関し、特にたとえばディジタルカメラに適用され、ＣＰＵがメモリコントローラを介してメモリにアクセスする、メモリアクセス回路に関する。
【０００２】
【従来の技術】
従来のこの種のメモリアクセス方式として、同期バス方式が知られている。この同期バス方式では、ＣＰＵが図８（Ｂ）に示すハイレベルのリード／ライト信号（Ｒ／Ｗ信号）をメモリコントローラに与えると、メモリコントローラが図８（Ｄ）に示すアクティブローのリードイネーブル信号をメモリに出力する。これによって、メモリから図８（Ｆ）に示すタイミングで信号が読み出され、メモリコントローラは、このリード信号とともに図８（Ｅ）に示すＲＥＡＤＹ信号をＣＰＵに出力する。ＲＥＡＤＹ信号は、信号の読み出しの終了を示すタイミング信号である。ＣＰＵは、このＲＥＡＤＹ信号がローレベルとなる期間に、クロックの立ち上がりに応答してリード信号を取り込み、その後ＲＥＡＤＹ信号の立ち上がりに応答してアクセスを中止する。なお、ＣＰＵはリード／ライト信号とともにチップセレクト信号およびアドレス信号を出力し、チップセレクト信号およびアドレス信号の出力を中止することによって、メモリへのアクセスを中止する。
【０００３】
一方、メモリに信号を書き込むときは、ＣＰＵはローレベルのリード／ライト信号とともに図８（Ａ）に示すライト信号をメモリコントローラに入力する。メモリコントローラは、これに応じて図８（Ｇ）に示すライトイネーブル信号を出力し、このライトイネーブル信号の立ち上がりタイミングでライト信号をメモリに書き込む。メモリコントローラは、ライトイネーブル信号の立ち上がりから所定期間経過後に図８（Ｈ）に示すＲＥＡＤＹ信号をＣＰＵに与え、これに応じて、ＣＰＵはアクセスを中止する。
【０００４】
このように、同期バス方式では、ＣＰＵはＲＥＡＤＹ信号の立ち上がりに応答してメモリへのアクセスを中止する。
【０００５】
【発明が解決しようとする課題】
しかし、コンパクトフラッシュなどの外部記憶メモリで採用されているＰＣＭＣＩＡフォーマットでは、アクセス終了後に一定期間チップセレクト信号およびアドレス信号をホールドすることを要求している。つまり、メモリコントローラは、リードイネーブル信号あるいはライトイネーブル信号を立ち上げた後も、チップセレクト信号およびアドレス信号を一定期間メモリに出力する必要がある。
【０００６】
これに対して、同期バス方式では、信号の書込時はともかく、信号の読出時にはホールド期間を確保できない。つまり、信号の書込時は、ライトイネーブル信号の立ち上がりからＲＥＡＤＹ信号の立ち上がりまでに時間的余裕があるが、信号の読み出し時は、リード信号の取り込みからＲＥＡＤＹ信号の立ち上がりまでに１／２クロック期間もないため、ホールド期間を十分に確保することはできない。このため、従来の同期バス方式では、ＰＣＭＣＩＡフォーマットを満足することはできなかった。
【０００７】
それゆえに、この発明の主たる目的は、ホールド期間を必要とする記録媒体に同期バス方式のＣＰＵを用いて適切にアクセスすることができる、メモリアクセス回路を提供することである。
【０００８】
【課題を解決するための手段】
この発明に従うメモリアクセス回路は、記録媒体の所望アドレスを形成する第１バイトおよび第２バイトを順に指定するＣＰＵ、およびＣＰＵの指定に基づいて記録媒体からデータを読み出すメモリコントローラを備えるメモリアクセス回路であって、記録媒体はデータが読み出された後もアドレス指定およびチップセレクト指定を必要とし、ＣＰＵは終了信号に応答してアドレス指定およびチップセレクト指定を解除するものにおいて、ＣＰＵは、第１終了信号に応答してバイト指定を第１バイトから第２バイトに更新し、第２終了信号に応答してアドレス指定およびチップセレクト指定を解除し、メモリコントローラは、データ読み出しを許可するイネーブル信号をアドレス指定およびチップセレクト指定によって規定される特定期間に記録媒体に出力するイネーブル信号出力手段、特定期間の後に第２終了信号をＣＰＵに出力する第２終了信号出力手段、および特定期間が開始された後でかつ第２終了信号が出力される前に第１終了信号をＣＰＵに出力する第１終了信号出力手段を含む。
【０００９】
【作用】
メモリに設けられたそれぞれのワードは３２ビットつまり４バイトからなり、ＣＰＵは１６ビットつまりハーフワード毎に所望のワードにアクセスする。メモリから信号を読み出すとき、メモリコントローラはたとえば上位１６ビットに対する読み出し要求に応答して、リードイネーブル信号をメモリに出力するとともに、所定期間経過後にＲＥＡＤＹ信号をＣＰＵに戻す。このため、ＣＰＵはＲＥＡＤＹ信号の立ち下がり期間におけるクロックの立ち上がりタイミングで、メモリから読み出された信号を取り込む。メモリコントローラは、ＲＥＡＤＹ信号の立ち上げと同時にリードイネーブル信号の出力を中止する。つまり、後半１６ビットに対する読み出し要求に応答してリードイネーブル信号を出力することはない。ただし、メモリコントローラは、後半１６ビットに対する読み出し要求の出力から所定期間経過後に、ＲＥＡＤＹ信号を出力する。このＲＥＡＤＹ信号に応答して、ＣＰＵは所望のワードに対するアクセスを中止する。したがって、後半１６ビットに対する読み出し要求が出力される間、アドレス信号がホールドされる。
【００１０】
【発明の効果】
この発明によれば、同期バス方式のＣＰＵを用いて、ホールド期間を要求する記録媒体に適切にアクセスできる。
【００１１】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００１２】
【実施例】
図１を参照して、この実施例のディジタルカメラ１０は、同期バス方式のＣＰＵ１２を含む。このディジタルカメラ１０には、コンパクトフラッシュのようなＰＣＭＣＩＡフォーマットを採用するメモリカード１６が装着され、ＣＰＵ１２はメモリコントローラ１４を介してこのメモリカード１６にアクセスする。
【００１３】
メモリカード１６のメモリエリアに設けられたそれぞれのワードは、図２に示すように３２ビットつまり４バイトからなる。アドレスは１ワードを構成するバイト数に関係なく、１バイト毎に割り当てられるため、最初のワードにはアドレス“０”が付され、２番目のワードにはアドレス“４”が付される。このように、各ワードに付されるアドレス値は４つずつ変化する。
【００１４】
メモリカード１６にアクセスするとき、ＣＰＵ１２は、図４（Ａ）〜（Ｅ）または図５（Ａ）〜（Ｅ）に示すアドレスストローブ信号，チップセレクト信号，リード／ライト信号，アドレス信号およびバイトイネーブル信号を、バス１３を介してメモリコントローラ１４に入力する。バイトイネーブル信号は、所望のワードにバイト単位でアクセスするときに用いられる。ＣＰＵ１２がハーフワード毎に所望のワードにアクセスするとき、バイトイネーブル信号は“１”および“０”のいずれかの値をとる。“１”であれば上位１６ビットが指定され、“０”であれば下位１６ビットが指定される。
【００１５】
アドレス信号およびバイトイネーブル信号は、図３に示すデータバス１３ａを介してバッファ３２に入力され、その後、データバス１５ａを介してメモリカード１６に入力される。信号を書き込もうとする所望のワードはアドレス信号によって特定され、信号を書き込もうとする所望のバイトがバイトイネーブル信号によって特定される。信号の書込時、ＣＰＵ１２はライト信号もバッファ３２に入力する。これによって、ライト信号が所望のバイトに書き込まれる。信号の読出時は、ＣＰＵ１２はアドレス信号およびバイトイネーブル信号だけをバッファ３２に入力する。これによって所望のバイトから信号が読み出され、リード信号が、データバス１５ａ，バッファ３４およびデータバス１３ａを介してＣＰＵ１２に入力される。
【００１６】
アドレスストローブ信号およびチップセレクト信号は、ＯＲ回路２８ａに入力され、ＯＲ回路２８ａはアドレスストローブ信号およびチップセレクト信号に論理和を施す。カウンタ２０はフリップフロップ回路２６ａが“０”の期間クロックによってインクリメントされ、カウント値はデコーダ２２ａ〜２２ｇに入力される。デコーダ２２ａはカウント値が“９”となる１クロック期間だけハイレベル信号を出力し、カウント値が“９”以外のときローレベル信号を出力する。また、デコーダ２２ｃおよび２２ｅは、カウント値が“７”のときだけハイレベル信号を出力し、これ以外のときローレベル信号を出力する。さらに、デコーダ２２ｂおよび２２ｄは、カウント値が“３”のときだけローレベル信号を出力し、“３”以外のカウント値ではハイレベル信号を出力する。さらにまた、デコーダ２２ｇはカウント値が“８”のときローレベル信号を出力し、これ以外の期間ではハイレベル信号を出力する。
【００１７】
デコーダ２２ｂ〜２２ｆには、リード／ライト信号も入力される。リード／ライト信号がハイレベルとなると、デコーダ２２ｂ，２２ｃおよび２２ｇが能動化され、リード／ライト信号がローレベルとなると、デコーダ２２ｄおよび２２ｅが能動化される。一方、論理和信号をラッチイネーブル回路２４ａに入力する。ラッチイネーブル回路２４ａは、ＯＲ回路２８ａからの論理和信号から“０”のラッチパルスを生成する。そして、デコーダ２２ａからの出力信号を受け、カウント値が“９”のときに“１”のラッチパルスを生成する。フリップフロップ回路２６ａはクロックに応答してラッチイネーブル回路２４ａの出力をラッチし、ラッチ信号をチップセレクト信号としてメモリカード１６に出力するとともに、ゲート信号としてカウンタ２０に入力する。つまり、信号の書き込み時は、図４（Ａ）に示すアドレスストローブ信号および図４（Ｂ）に示すチップセレクト信号に基づいて、図４（Ｆ）に示すチップセレクト信号がフリップフロップ回路２６ａから出力される。信号の読み出し時も、図５（Ａ），（Ｂ）および（Ｆ）に示すように、アドレスストローブ信号およびチップセレクト信号から新たなチップセレクト信号が生成される。カウンタ２０は、図４（Ｆ）または図５（Ｆ）に示すチップセレクト信号の立ち下がりでリセットされる。
【００１８】
デコーダ２２ｂおよび２２ｃの出力はラッチイネーブル回路２４ｂに入力され、デコーダ２２ｄおよび２２ｅの出力はラッチイネーブル回路２４ｃに入力される。ラッチイネーブル回路２４ｂおよび２４ｃのいずれも、カウント値“３”で“０”のラッチパルスを、カウント値“７”で“１”のラッチパルスを生成する。そして、ラッチイネーブル回路２４ｂおよび２４ｃの出力が、フリップフロップ回路２６ｂおよび２６ｃでクロックに応答してラッチされる。デコーダ２２ｂおよび２２ｃは信号の読み出し時だけ能動化され、デコーダ２２ｄおよび２２ｅは信号の書き込み時だけ能動化される。このため、信号の読み出し時、図５（Ｈ）に示すリードイネーブル信号がフリップフロップ回路２６ｂから出力され、信号の書き込み時、図４（Ｈ）に示すライトイネーブル信号が、フリップフロップ回路２６ｃから出力される。ライトイネーブル信号およびリードイネーブル信号のいずれも、カウント値が“４”〜“７”をとる期間だけローレベルとなる。
【００１９】
デコーダ２２ｆおよび２２ｇの出力はＡＮＤ回路３０によって論理積を施され、論理積信号がクロックに応答してフリップフロップ回路２６ｂでラッチされる。そして、ラッチ信号がアクセスの終了タイミングを規定するＲＥＡＤＹ信号となる。デコーダ２２ｆは信号の読み出し時だけ能動化されるため、読み出し時は図５（Ｉ）に示すようなカウント値が“７”および“９”をとるときだけローレベルとなるＲＥＡＤＹ信号が出力され、書き込み時は、図４（Ｉ）に示すようなカウント値が“９”となるときだけローレベルとなるＲＥＡＤＹ信号が出力される。このＲＥＡＤＹ信号によって、アクセスの終了タイミングをしめす。なお、アドレスストローブ信号，チップセレクト信号，ライトイネーブル信号，リードイネーブル信号およびＲＥＡＤＹ信号のいずれも、アクティブローの信号である。
【００２０】
フリップフロップ回路２６ａから出力されたチップセレクト信号ならびにリード／ライト信号は、ＯＲ回路２８ｂにも入力される。ＯＲ回路２８ｂは、両信号に論理和を施し、論理和信号をバッファ３２および３４に入力する。バッファ３２には反転端子３２ａが設けられているため、バッファ３２および３４が同時に能動化されることはない。つまり、論理和信号がローレベルであればバッファ３２だけが能動化され、論理和信号がハイレベルであればバッファ３４だけが能動化される。バッファ３２は信号の書き込み時に能動化され、バッファ３４は信号の読み出し時に能動化される。
【００２１】
図４を参照して、アドレス信号およびバイトイネーブル信号は、ハーフワードアクセス期間同じ値を保持する。また、アドレス信号およびバイトイネーブル信号の出力と同時に、図４（Ａ）に示すアドレスストローブ信号および図４（Ｊ）に示すライト信号が、ＣＰＵ１２からメモリコントローラ１４に入力される。メモリコントローラ１４は、ライトイネーブル信号がローレベルとなる期間において、クロックのいずれかの立ち上がりタイミングでライト信号を出力してメモリカード１６の所望のバイトに書き込む。ＲＥＡＤＹ信号はカウント値が“９”となるときだけローレベルとなる。ＲＥＡＤＹ信号はＣＰＵ１２に与えられ、ＣＰＵ１２は、ＲＥＡＤＹ信号の立ち上がりに応答して、チップセレクト信号，アドレス信号，バイトイネーブル信号およびライト信号の出力を中止する。つまり、メモリカード１６へのアクセスを中止する。
【００２２】
以上のように、ライトイネーブル信号が立ち上がってからアクセスが中止されるまでに２クロック期間あり、この２クロック期間チップセレクト信号およびアドレス信号がホールドされる。したがって、十分なホールド期間を確保することができ、ＰＣＭＣＩＡフォーマットを満足できる。
図５を参照して、信号の読み出し時、ＣＰＵ１２は、ＲＥＡＤＹ信号の最初の立ち下がり期間におけるクロックの立ち上がりに応答して、図５（Ｊ）に示すリード信号を取り込む。ＣＰＵ１２はその後、ＲＥＡＤＹ信号の最初の立ち上がりに応答してバイトイネーブル信号の値を切り換える。このため、カウント値が“８”となった時点でハーフワードアクセス期間が終了する。ただし、ハーフワードアクセスのために、バイトイネーブル信号が切り換わってもアドレス信号は同じ値を維持する。ＲＥＡＤＹ信号は、カウント値が“９”を取るとき再度立ち下がり、“０”に切り換わるときに立ち上がる。したがって、カウント値が“８”および“９”をとる期間が、次のハーフワードアクセス期間となる。アドレス信号は、ＲＥＡＤＹ信号の２回目の立ち上がりに応答して切り換わる。
【００２３】
最初のＲＥＡＤＹ信号の立ち上がりつまりカウント値が“７”から“８”に変化するときにリードイネーブル信号が立ち上がるため、メモリカード１６からは所望のワードの上位１６ビットの信号だけが読み出される。このリード信号は、そのままＣＰＵ１２に入力され、カウント値が“７”をとる期間のクロックの立ち上がりに応答して取り込まれ、図１に示すレジスタ１８ａに書き込まれる。
【００２４】
カウント値が“７”および“９”をとるときにＲＥＡＤＹ信号を出力し、カウント値が“７”から“８”に変化するタイミングでリードイネーブル信号を立ち上げることによって、信号の読み出しが終了した後２クロック期間アドレス信号をホールドすることができる。つまり、所望のワードの下位１６ビットからの信号の読み出しを中止することによって、バイトイネーブル信号がこの下位１６ビットを指定する期間、アドレス信号をホールドすることができる。
【００２５】
メモリコントローラ１４が下位１６ビットから信号を読み出せなかったとしても、ＣＰＵ１２は２回目のＲＥＡＤＹ信号の立ち下がり期間に信号の取り込み動作を行う。つまり、ＣＰＵ１２は、下位１６ビットの信号が入力されるべき期間に取り込んだたとえばハイインピーダンスの信号をレジスタ１８ｂに格納する。しかし、適切な信号はレジスタ１８ａにのみ存在するため、ＣＰＵ１２はレジスタ１８ａからのみ信号を読み出し、所定の信号処理を施す。
【００２６】
具体的には、ＣＰＵ１２は信号の読出時、図６および図７に示すフロー図を処理する。まずステップＳ１で図５（Ａ）〜（Ｅ）に示す各種の信号を出力し、次にステップＳ３で、ＲＥＡＤＹ信号が立ち上がったかどうか判断する。ここで“ＹＥＳ”であれば、ステップＳ５でクロックが立ち上がったかどうか判断し、ここでも“ＹＥＳ”であれば、ステップＳ７で入力信号をレジスタ１８ａに保持する。このとき、所望のワードの上位１６ビットのデータがレジスタ１８ａに格納される。ＣＰＵ１２は続いて、ステップＳ９でＲＥＡＤＹ信号が立ち上がったかどうか判断し、“ＹＥＳ”であればステップＳ１１でバイトイネーブル信号を反転させ、ステップＳ１３でＲＥＡＤＹ信号が立ち下がったかどうかを再度判断する。ここで“ＹＥＳ”であれば、ステップＳ１５でクロックが立ち上がったと判断されるのを待って、ステップＳ１７で入力信号をレジスタ１８ｂに保持する。このとき、メモリカード１６からは下位１６ビットの信号が読み出されないため、たとえばハイインピーダンス信号がレジスタ１８ｂに保持される。このため、ＣＰＵ１２は、ステップＳ１９でレジスタ１８ａから信号を読み出し、ステップＳ２１でこの信号に所定の処理を施し、そして処理を終了する。
【００２７】
この実施例によれば、メモリカード１６に対してハーフワード毎にアクセスを行い、読み出しについては上位１６ビットへのアクセスが終了した時点でリードイネーブル信号をハイレベルとするようにしたため、下位１６ビットへのアクセス期間アドレスをホールドすることができ、ＰＣＭＣＩＡフォーマットを満足することができる。
【００２８】
なお、この実施例ではハーフワードアクセスを用いて説明したが、この発明は、所望のバイトを所定バイト毎に複数回アクセスする場合にも適用できることはもちろんである。
【図面の簡単な説明】
【図１】この発明の一実施例を示すブロック図である。
【図２】図１実施例の動作の一部を示す図解図である。
【図３】メモリコントローラを示すブロック図である。
【図４】図３実施例の動作の一部を示すタイミング図である。
【図５】図３実施例の動作の他の一部を示すタイミング図である。
【図６】ＣＰＵの動作の一部を示すフロー図である。
【図７】ＣＰＵの動作の他の一部を示すフロー図である。
【図８】従来技術の動作を示すタイミング図である。
【符号の説明】
１０  …ディジタルカメラ
１２  …ＣＰＵ
１４  …メモリコントローラ
１６  …メモリカード
【図１】
0003568384.tif 000002
【図２】
0003568384.tif 000003
【図３】
0003568384.tif 000004
【図４】
0003568384.tif 000005
【図５】
0003568384.tif 000006
【図６】
0003568384.tif 000007
【図７】
0003568384.tif 000008
【図８】
0003568384.tif 000009