(57)【要約】【課題】大容量のデータに対しても信頼性の高いバッファリングを低コストで実現するバッファ装置を提供すること。【解決手段】バッファ装置１０は、受信回路１１０と、受信したデータ１１２を記憶するためのメモリ１（１２０）及びメモリ２（１３０）と、メモリ１及びメモリ２に対するデータの書き込み及び読み出しを制御する制御回路２００と、送信回路１５０と、を含む。制御回路は、メモリ１及びメモリ２を、データ書き込みを可能にする書き込みモード又はデータ読み出しを可能にする読み出しモードのいずれかに排他的に設定し、書き込みモードに設定されたメモリに対するデータ書き込みと読み出しモードに設定されたメモリに対するデータ読み出しがともに終了すると、書き込みモードに設定されたメモリを読み出しモードの設定に切り替えるとともに読み出しモードに設定されたメモリを書き込みモードの設定に切り替えるように制御する。【選択図】図１
2008269018.tif 000002
【特許請求の範囲】
【請求項１】
時系列に入力される一群のデータを一旦保持し、入力された順に送信するバッファ装置であって、
前記一群のデータを受信するデータ受信部と、
前記データ受信部が受信したデータを記憶するための第１のシングルポートメモリと、
前記データ受信部が受信したデータを記憶するための第２のシングルポートメモリと、
前記第１のシングルポートメモリ及び前記第２のシングルポートメモリに対するデータの書き込み及び読み出しを制御する制御部と、
前記第１のシングルポートメモリ及び前記第２のシングルポートメモリのいずれか一方から読み出したデータを送信するデータ送信部と、を含み、
前記制御部は、
前記第１のシングルポートメモリ及び前記第２のシングルポートメモリを、データ書き込みを可能にする書き込みモード又はデータ読み出しを可能にする読み出しモードのいずれかに排他的に設定し、
前記書き込みモードに設定されたシングルポートメモリに前記一群のデータの最後のデータを書き込むか、または、当該シングルポートメモリの所定のアドレスにデータを書き込むと、当該シングルポートメモリに対するデータ書き込みを終了し、
前記読み出しモードに設定されたシングルポートメモリから前記一群のデータの最後のデータを読み出すか、または、当該シングルポートメモリの前記所定のアドレスからデータを読み出すと、当該シングルポートメモリに対するデータ読み出しを終了し、
前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みと前記読み出しモードに設定されたシングルポートメモリに対するデータ読み出しがともに終了すると、前記書き込みモードに設定されたシングルポートメモリを前記読み出しモードの設定に切り替えるとともに前記読み出しモードに設定されたシングルポートメモリを前記書き込みモードの設定に切り替えるように制御することを特徴とするバッファ装置。
【請求項２】
請求項１において、
前記データ受信部は、
前記一群のデータの最後のデータに関連づけて入力されるデータ終了信号を受信し、
前記制御部は、
前記データ終了信号に基づいて、前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みを終了することを特徴とするバッファ装置。
【請求項３】
請求項１又は２において、
前記制御部は、
前記第１のシングルポートメモリに対するデータ書き込みの終了アドレスを記憶する第１の書き込み終了アドレスレジスタと、
前記第２のシングルポートメモリに対するデータ書き込みの終了アドレスを記憶する第２の書き込み終了アドレスレジスタと、を含み、
前記一群のデータの最後のデータを書き込んだ、前記第１のシングルポートメモリのアドレスを、前記第１の書き込み終了アドレスレジスタに記憶させ、
前記一群のデータの最後のデータを書き込んだ、前記第２のシングルポートメモリのアドレスを、前記第２の書き込み終了アドレスレジスタに記憶させ、
前記第１のシングルポートメモリの、前記第１の書き込み終了アドレスレジスタが記憶するアドレスからデータを読み出すと、前記第１のシングルポートメモリに対するデータ読み出しを終了し、
前記第２のシングルポートメモリの、前記第２の書き込み終了アドレスレジスタが記憶するアドレスからデータを読み出すと、前記第２のシングルポートメモリに対するデータ読み出しを終了するように制御することを特徴とするバッファ装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記第１のシングルポートメモリは、
異なるアドレスが割り当てられた２ｎ（ｎは０以上の整数）個の記憶領域を含み、
前記第２のシングルポートメモリは、
異なるアドレスが割り当てられた２ｍ（ｍは０以上の整数）個の記憶領域を含み、
前記制御部は、
前記第１のシングルポートメモリのアドレスを生成する、ｎ＋ｉ（ｉは１以上の整数）ビットの第１のアドレスカウンタと、
前記第２のシングルポートメモリのアドレスを生成する、ｍ＋ｊ（ｊは１以上の整数）ビットの第２のアドレスカウンタと、を含み、
前記第１のシングルポートメモリを前記読み出しモード又は前記書き込みモードの設定に切り替える時に、前記第１のアドレスカウンタの下位ｎビットをすべて０に、上位ｉビットの少なくとも一部を反転した値に初期化し、前記第１のシングルポートメモリに対してデータ書き込み又はデータ読み出しをする毎に、前記第１のアドレスカウンタを１ずつインクリメントし、前記第１のアドレスカウンタの上位ｉビットの少なくとも一部に基づいて、前記第１のシングルポートメモリが読み出しモード又は書き込みモードのいずれに設定されているかを判断し、
前記第２のシングルポートメモリを前記読み出しモード又は前記書き込みモードの設定に切り替える時に、前記第２のアドレスカウンタの下位ｍビットをすべて０に、上位ｊビットの少なくとも一部を反転した値に初期化し、前記第２のシングルポートメモリに対してデータ書き込み又はデータ読み出しをする毎に、前記第２のアドレスカウンタを１ずつインクリメントし、前記第２のアドレスカウンタの上位ｊビットの少なくとも一部に基づいて、前記第２のシングルポートメモリが読み出しモード又は書き込みモードのいずれに設定されているかを判断するように制御するすることを特徴とするバッファ装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記制御部は、
前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みが終了した時は、当該シングルポートメモリを、他方のシングルポートメモリに対するデータ読み出しが終了するまで、データ書き込み及びデータ読み出しを禁止するウェイトモードに設定し、
前記読み出しモードに設定されたシングルポートメモリに対するデータ読み出しが終了した時は、当該シングルポートメモリを、他方のシングルポートメモリに対するデータ書き込みが終了するまで、前記ウェイトモードに設定することを特徴とするバッファ装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記データ受信部は、
前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みが可能である時は、入力データの供給を要求するリクエスト信号を送出し、前記リクエスト信号に対する応答を確認するためのアクノリッジ信号を検出した場合のみデータを受信し、
前記データ送信部は、
データ送信を要求するリクエスト信号を検出した時は、前記読み出しモードに設定されたシングルポートメモリに対するデータ読み出しが可能である場合のみ、前記リクエスト信号に対する応答を確認するためのアクノリッジ信号を送出するとともに当該シングルポートメモリから読み出したデータを送信することを特徴とするバッファ装置。
【請求項７】
請求項６において、
前記データ受信部は、
前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みが終了し、他方のシングルポートメモリに対するデータ読み出しが終了していない時は、前記リクエスト信号を送出せず、
前記データ送信部は、
前記読み出しモードに設定されたシングルポートメモリに対するデータ読み出しが終了し、他方のシングルポートメモリに対するデータ書き込みが終了していない時は、前記アクノリッジ信号を送出しないことを特徴とするバッファ装置。
【請求項８】
請求項１乃至７のいずれかに記載されたバッファ装置を含むことを特徴とする半導体集積回路装置。
【請求項９】
請求項８に記載の半導体集積回路装置を含むことを特徴とするマイクロコンピュータ。
【請求項１０】
請求項９に記載のマイクロコンピュータと、
前記マイクロコンピュータの処理対象となるデータの入力手段と、
前記マイクロコンピュータにより処理されたデータを出力するための出力手段とを含むことを特徴とする電子機器。
【請求項１１】
第１のシングルポートメモリ及び第２のシングルポートメモリを含み、時系列に入力される一群のデータを前記第１のシングルポートメモリ又は前記第２のシングルポートメモリのいずれかに一旦保持し、入力された順に送信するバッファ装置の制御方法であって、
前記一群のデータを受信するステップと、
前記第１のシングルポートメモリ及び前記第２のシングルポートメモリを、データ書き込みを可能にする書き込みモード又はデータ読み出しを可能にする読み出しモードのいずれかに排他的に設定するステップと、
前記書き込みモードに設定されたシングルポートメモリに前記一群のデータの最後のデータを書き込むか、または、当該シングルポートメモリの所定のアドレスにデータを書き込むと、当該シングルポートメモリに対するデータ書き込みを終了するステップと、
前記読み出しモードに設定されたシングルポートメモリから前記一群のデータの最後のデータを読み出すか、または、当該シングルポートメモリの前記所定のアドレスからデータを読み出すと、当該シングルポートメモリに対するデータ読み出しを終了するステップと、
前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みと前記読み出しモードに設定されたシングルポートメモリに対するデータ読み出しがともに終了すると、前記書き込みモードに設定されたシングルポートメモリを前記読み出しモードの設定に切り替えるとともに前記読み出しモードに設定されたシングルポートメモリを前記書き込みモードの設定に切り替えるステップと、
前記第１のシングルポートメモリ及び前記第２のシングルポートメモリのいずれか一方から読み出したデータを送信するステップと、を含むことを特徴とするバッファ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファ装置、半導体集積回路装置、マイクロコンピュータ、電子機器、バッファ装置の制御方法に関する。
【背景技術】
【０００２】
ストリーム形式で供給される圧縮音楽データ等をデコードする際は、データの連続性を損なわないようにするため、デコーダ回路の前段において、データのバッファリングを行う必要がある。バッファリングの手法としては、フリップフロップやデュアルポートメモリ等で構成されたＦＩＦＯを用いたものが提案されている。
【特許文献１】特開平６−１９５３０１号公報
【特許文献２】特開平５−１３６８２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、ストリーミングデータ等の大容量のデータを連続性を損なわずに処理するためにはＦＩＦＯの容量を大きくする必要があり、フリップフロップやデュアルポートメモリで大容量のＦＩＦＯを実現すると低コスト化を達成することができないという問題があった。また、ＦＩＦＯでは読み出し用のアドレスが書き込み用のアドレスを超えてはいけないため、読み出し用のアドレスカウンタと書き込み用のアドレスカウンタを必要とし、制御も複雑になるという問題があった。
【０００４】
本発明は、以上のような問題点に鑑みてなされたものであり、大容量のデータに対しても信頼性の高いバッファリングを低コストで実現するバッファ装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
（１）本発明に係るバッファ装置は、
時系列に入力される一群のデータを一旦保持し、入力された順に送信するバッファ装置であって、
前記一群のデータを受信するデータ受信部と、
前記データ受信部が受信したデータを記憶するための第１のシングルポートメモリと、
前記データ受信部が受信したデータを記憶するための第２のシングルポートメモリと、
前記第１のシングルポートメモリ及び前記第２のシングルポートメモリに対するデータの書き込み及び読み出しを制御する制御部と、
前記第１のシングルポートメモリ及び前記第２のシングルポートメモリのいずれか一方から読み出したデータを送信するデータ送信部と、を含み、
前記制御部は、
前記第１のシングルポートメモリ及び前記第２のシングルポートメモリを、データ書き込みを可能にする書き込みモード又はデータ読み出しを可能にする読み出しモードのいずれかに排他的に設定し、
前記書き込みモードに設定されたシングルポートメモリに前記一群のデータの最後のデータを書き込むか、または、当該シングルポートメモリの所定のアドレスにデータを書き込むと、当該シングルポートメモリに対するデータ書き込みを終了し、
前記読み出しモードに設定されたシングルポートメモリから前記一群のデータの最後のデータを読み出すか、または、当該シングルポートメモリの前記所定のアドレスからデータを読み出すと、当該シングルポートメモリに対するデータ読み出しを終了し、
前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みと前記読み出しモードに設定されたシングルポートメモリに対するデータ読み出しがともに終了すると、前記書き込みモードに設定されたシングルポートメモリを前記読み出しモードの設定に切り替えるとともに前記読み出しモードに設定されたシングルポートメモリを前記書き込みモードの設定に切り替えるように制御することを特徴とする。
【０００６】
時系列に入力される一群のデータは、音楽や映像等のストリーミング配信において送信されるストリーミングデータであってもよいし、ＲＯＭ等に記憶されたデータであってもよい。
【０００７】
書き込みモード又は読み出しモードのいずれかに排他的に設定するとは、一方のシングルポートメモリを書き込みモードに設定する場合は、他方のシングルポートメモリを書き込みモードに設定しなければよく、また、一方のシングルポートメモリを読み出しモードに設定する場合は、他方のシングルポートメモリを読み出しモードに設定しなければよい。すなわち、一方のシングルポートメモリを書き込みモードに設定する場合は、他方のシングルポートメモリを読み出しモードに設定してもよいし、書き込み及び読み出しを禁止するモードに設定してもよい。同様に、一方のシングルポートメモリを読み出しモードに設定する場合は、他方のシングルポートメモリを書き込みモードに設定してもよいし、書き込み及び読み出しを禁止するモードに設定してもよい。
【０００８】
所定のアドレスは、最終アドレスであってもよい。すなわち、書き込みモードに設定されたシングルポートメモリの最終アドレスにデータを書き込むと、当該シングルポートメモリに対するデータ書き込みを終了し、読み出しモードに設定されたシングルポートメモリの最終アドレスからデータを読み出すと、当該シングルポートメモリに対するデータ読み出しを終了するようにしてもよい。
【０００９】
本発明によれば、一群のデータのサイズが各シングルポートメモリの容量を超えない限り、書き込みモードに設定されたシングルポートメモリに一群のデータをすべて書き込むまで、当該シングルポートメモリを読み出しモードの設定に切り替えないようにすることができる。また、本発明によれば、一群のデータのサイズが各シングルポートメモリの容量を超えない限り、読み出しモードに設定されたシングルポートメモリから一群のデータをすべて読み出すまで、当該シングルポートメモリを書き込みモードの設定に切り替えないようにすることができる。従って、一群のデータを途中で途切れることなく最後まで読み出して送信することができる。
【００１０】
また、本発明によれば、一群のデータの書き込みが読み出しよりも早く終了するように処理速度を調整することにより、一群のデータの読み出しと次の一群のデータの読み出しの間の待ち時間をなくすことができる。従って、ストリーミング配信される音楽データ等のストリーミングデータを、後段のデコーダ等に切れ目なく送信することができる。
【００１１】
さらに、本発明によれば、第１のバッファ及び第２のバッファをフリップフロップによるシフトレジスタで構成する場合やデュアルポートメモリで構成する場合と比較して、面積コストを削減することができ、かつ、第１のバッファ及び第２のバッファに対する書き込み及び読み出しの制御をより簡単にすることができる。従って、大容量のデータに対しても信頼性の高いバッファリングを低コストで実現することができる。
【００１２】
（２）本発明に係るバッファ装置は、
前記データ受信部は、
前記一群のデータの最後のデータに関連づけて入力されるデータ終了信号を受信し、
前記制御部は、
前記データ終了信号に基づいて、前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みを終了することを特徴とする。
【００１３】
データ終了信号は、例えば、ホストインターフェース回路が、ホスト（音楽データの配信サーバ等）から送信されるコマンドを解読して、一群のデータの最後のデータであると判断した時に、本発明に係るバッファ装置に送出してもよい。
【００１４】
本発明によれば、データ終了信号の検出の有無を判断することによって、書き込みの終了タイミングを簡単に制御することができる。
【００１５】
（３）本発明に係るバッファ装置は、
前記制御部は、
前記第１のシングルポートメモリに対するデータ書き込みの終了アドレスを記憶する第１の書き込み終了アドレスレジスタと、
前記第２のシングルポートメモリに対するデータ書き込みの終了アドレスを記憶する第２の書き込み終了アドレスレジスタと、を含み、
前記一群のデータの最後のデータを書き込んだ、前記第１のシングルポートメモリのアドレスを、前記第１の書き込み終了アドレスレジスタに記憶させ、
前記一群のデータの最後のデータを書き込んだ、前記第２のシングルポートメモリのアドレスを、前記第２の書き込み終了アドレスレジスタに記憶させ、
前記第１のシングルポートメモリの、前記第１の書き込み終了アドレスレジスタが記憶するアドレスからデータを読み出すと、前記第１のシングルポートメモリに対するデータ読み出しを終了し、
前記第２のシングルポートメモリの、前記第２の書き込み終了アドレスレジスタが記憶するアドレスからデータを読み出すと、前記第２のシングルポートメモリに対するデータ読み出しを終了するように制御することを特徴とする。
【００１６】
本発明によれば、読み出しモードに設定されたシングルポートメモリから読み出しを行う場合に、当該シングルポートメモリが直近に書き込みモードに設定された時に書き込んだ最後のデータを読み出したらすぐに読み出し処理を終了することができる。従って、書き込みモードに迅速に切り替えることができる。また、書き込みモードに設定する毎に、シングルポートメモリのデータを消去する必要がない。
【００１７】
（４）本発明に係るバッファ装置は、
前記第１のシングルポートメモリは、
異なるアドレスが割り当てられた２ｎ（ｎは０以上の整数）個の記憶領域を含み、
前記第２のシングルポートメモリは、
異なるアドレスが割り当てられた２ｍ（ｍは０以上の整数）個の記憶領域を含み、
前記制御部は、
前記第１のシングルポートメモリのアドレスを生成する、ｎ＋ｉ（ｉは１以上の整数）ビットの第１のアドレスカウンタと、
前記第２のシングルポートメモリのアドレスを生成する、ｍ＋ｊ（ｊは１以上の整数）ビットの第２のアドレスカウンタと、を含み、
前記第１のシングルポートメモリを前記読み出しモード又は前記書き込みモードの設定に切り替える時に、前記第１のアドレスカウンタの下位ｎビットをすべて０に、上位ｉビットの少なくとも一部を反転した値に初期化し、前記第１のシングルポートメモリに対してデータ書き込み又はデータ読み出しをする毎に、前記第１のアドレスカウンタを１ずつインクリメントし、前記第１のアドレスカウンタの上位ｉビットの少なくとも一部に基づいて、前記第１のシングルポートメモリが読み出しモード又は書き込みモードのいずれに設定されているかを判断し、
前記第２のシングルポートメモリを前記読み出しモード又は前記書き込みモードの設定に切り替える時に、前記第２のアドレスカウンタの下位ｍビットをすべて０に、上位ｊビットの少なくとも一部を反転した値に初期化し、前記第２のシングルポートメモリに対してデータ書き込み又はデータ読み出しをする毎に、前記第２のアドレスカウンタを１ずつインクリメントし、前記第２のアドレスカウンタの上位ｊビットの少なくとも一部に基づいて、前記第２のシングルポートメモリが読み出しモード又は書き込みモードのいずれに設定されているかを判断するように制御するすることを特徴とする。
【００１８】
制御を簡単にするためには、第１のシングルポートメモリと第２のシングルポートメモリの容量は同じである（すなわち、ｎ＝ｍ）のが好ましい。また、書き込みモードか読み出しモードかを最も簡単に判断するためには、ｉ＝ｊ＝１であるのが好ましい。
【００１９】
本発明によれば、一群のデータのサイズがシングルポートメモリの容量と等しい場合には、アドレスカウンタをインクリメントし続けるだけで、シングルポートメモリに対する適切な書き込み処理及び読み出し処理を簡単に実現することができる。すなわち、各シングルポートメモリに対して１つのアドレスカウンタで読み出し用のアドレスカウンタと書き込み用のアドレスカウンタを兼用することができる。また、アドレスカウンタの上位ｉビット又は上位ｊビットの少なくとも一部から書き込みモードか読み出しモードかを簡単に判断することができる。
【００２０】
（５）本発明に係るバッファ装置は、
前記制御部は、
前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みが終了した時は、当該シングルポートメモリを、他方のシングルポートメモリに対するデータ読み出しが終了するまで、データ書き込み及びデータ読み出しを禁止するウェイトモードに設定し、
前記読み出しモードに設定されたシングルポートメモリに対するデータ読み出しが終了した時は、当該シングルポートメモリを、他方のシングルポートメモリに対するデータ書き込みが終了するまで、前記ウェイトモードに設定することを特徴とする。
【００２１】
本発明によれば、書き込み又は読み出しが終了した一方のシングルポートメモリに対して、他方のシングルポートメモリの読み出し又は書き込みが終了するまで書き込み及び読み出しが禁止される。従って、誤った書き込みや読み出しを確実に防止することができる。
【００２２】
（６）本発明に係るバッファ装置は、
前記データ受信部は、
前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みが可能である時は、入力データの供給を要求するリクエスト信号を送出し、前記リクエスト信号に対する応答を確認するためのアクノリッジ信号を検出した場合のみデータを受信し、
前記データ送信部は、
データ送信を要求するリクエスト信号を検出した時は、前記読み出しモードに設定されたシングルポートメモリに対するデータ読み出しが可能である場合のみ、前記リクエスト信号に対する応答を確認するためのアクノリッジ信号を送出するとともに当該シングルポートメモリから読み出したデータを送信することを特徴とする。
【００２３】
本発明によれば、ハンドシェイク通信によってデータの送受信を行うので、不要なデータの送受信を確実に防止することができる。また、本発明によれば、受信元の処理速度と送信先の処理速度の差を吸収して信頼性の高いバッファリングを実現することができる。
【００２４】
（７）本発明に係るバッファ装置は、
前記データ受信部は、
前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みが終了し、他方のシングルポートメモリに対するデータ読み出しが終了していない時は、前記リクエスト信号を送出せず、
前記データ送信部は、
前記読み出しモードに設定されたシングルポートメモリに対するデータ読み出しが終了し、他方のシングルポートメモリに対するデータ書き込みが終了していない時は、前記アクノリッジ信号を送出しないことを特徴とする。
【００２５】
本発明によれば、書き込み処理が終了した場合はリクエスト信号を送出せず、読み出し処理が終了した場合はアクノリッジ信号を送出しないので、不要なデータの送受信を確実に防止することができる。また、本発明によれば、受信元の処理速度と送信先の処理速度の差を吸収して信頼性の高いバッファリングを実現することができる。
【００２６】
（８）本発明は、
上記に記載のバッファ装置を含むことを特徴とする半導体集積回路装置である。
【００２７】
（９）本発明は、
上記に記載の半導体集積回路装置を含むことを特徴とするマイクロコンピュータである。
【００２８】
（１０）本発明は、
上記に記載のマイクロコンピュータと、
前記マイクロコンピュータの処理対象となるデータの入力手段と、
前記マイクロコンピュータにより処理されたデータを出力するための出力手段とを含むことを特徴とする電子機器である。
【００２９】
（１１）本発明は、
第１のシングルポートメモリ及び第２のシングルポートメモリを含み、時系列に入力される一群のデータを前記第１のシングルポートメモリ又は前記第２のシングルポートメモリのいずれかに一旦保持し、入力された順に送信するバッファ装置の制御方法であって、
前記一群のデータを受信するステップと、
前記第１のシングルポートメモリ及び前記第２のシングルポートメモリを、データ書き込みを可能にする書き込みモード又はデータ読み出しを可能にする読み出しモードのいずれかに排他的に設定するステップと、
前記書き込みモードに設定されたシングルポートメモリに前記一群のデータの最後のデータを書き込むか、または、当該シングルポートメモリの所定のアドレスにデータを書き込むと、当該シングルポートメモリに対するデータ書き込みを終了するステップと、
前記読み出しモードに設定されたシングルポートメモリから前記一群のデータの最後のデータを読み出すか、または、当該シングルポートメモリの前記所定のアドレスからデータを読み出すと、当該シングルポートメモリに対するデータ読み出しを終了するステップと、
前記書き込みモードに設定されたシングルポートメモリに対するデータ書き込みと前記読み出しモードに設定されたシングルポートメモリに対するデータ読み出しがともに終了すると、前記書き込みモードに設定されたシングルポートメモリを前記読み出しモードの設定に切り替えるとともに前記読み出しモードに設定されたシングルポートメモリを前記書き込みモードの設定に切り替えるステップと、
前記第１のシングルポートメモリ及び前記第２のシングルポートメモリのいずれか一方から読み出したデータを送信するステップと、を含むことを特徴とするバッファ装置の制御方法である。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【００３１】
１．バッファ装置、半導体集積回路装置
図１は、本実施形態に係るバッファ装置の構成例を説明するための図である。
【００３２】
バッファ装置１０は、ホストインターフェース回路２０から時系列に入力される一群のデータ２２を一旦保持し、入力された順にデコーダ３０に送信する。ホストインターフェース回路２０は、ホスト４０との間でコマンドデータ通信を行う。ホスト４０は、例えば、音楽データのストリーミング配信サーバであり、ホストインターフェース回路２０に対してストリーミングデータを送信する。ホストインターフェース回路２０は、ストリーミングデータを受信し、例えば、１バイトのデータに分割して時系列に並べ、バッファ装置１０にデータ２２として順番に供給する。ホスト４０は、ストリーミングデータを送信する前に、ストリーミングデータのサイズを示すコマンドを送信する。ホストインターフェース回路２０は当該コマンドを解読し、バッファ装置１０にストリーミングデータの最後のデータを供給する時にデータ終了信号２６を一緒に供給する。デコーダ３０は、ＭＰ３、ＡＡＣ、Ｖｏｒｂｉｓ等の圧縮方式でエンコードされたデータ１４をデコードして再生する。バッファ装置１０は、ホスト４０のデータ送信速度とデコーダ３０の再生処理速度の差を吸収して、データ転送を行う役割を果たす。
【００３３】
バッファ装置１０は、受信回路１１０を含む。受信回路１１０は、一群のデータ２２を受信するデータ受信部として機能する。受信回路１１０は、書き込みモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ書き込みが可能である時は、ホストインターフェース回路２０に対して、データ２２の供給を要求するリクエスト信号１２を送出する。ホストインターフェース回路２０は、リクエスト信号１２を受けて、受信回路１１０に入力データ２２とともにリクエスト信号１２に対する応答を確認するためのアクノリッジ信号２４を供給する。受信回路１１０は、アクノリッジ信号２４を検出した場合のみデータ２２を受信する。受信回路１１０は、書き込みモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ書き込みが終了し、他方のメモリに対するデータ読み出しが終了していない時は、リクエスト信号１２を送出しない。従って、ホストインターフェース回路２０は、他方のメモリに対するデータ読み出しが終了するまで、受信回路１１０に次のデータを供給しない。また、受信回路１１０は、最後のデータとともに入力されるデータ終了信号２６を受信する。
【００３４】
バッファ装置１０は、メモリ１（１２０）及びメモリ２（１３０）を含む。メモリ１（１２０）及びメモリ２（１３０）はシングルポートメモリで構成されている。従って、フリップフロップによるシフトレジスタやデュアルポートメモリでＦＩＦＯを構成する場合と比較して、面積コストを削減することができる。メモリ１（１２０）及びメモリ２（１３０）は、データ受信回路１１０が受信したデータ１１２を記憶する。メモリ１（１２０）及びメモリ２（１３０）は、それぞれ、異なるアドレスが割り当てられた２ｎ個及び２ｍ個（ｎ、ｍは０以上の整数）の記憶領域を含む。例えば、メモリ１（１２０）及びメモリ２（１３０）はともに０ｘ０００〜０ｘ７ＦＦまでの異なるアドレスが割り当てられた２０４８（ｎ＝ｍ＝１１の場合）個の記憶領域を含むようにしてもよい（例えば、１つの記憶領域を１バイトとすると、メモリ１及びメモリ２は２０４８バイトの記憶容量を有する）。メモリ１及びメモリ２は、ホスト２０から送信されるストリーミングデータの最大容量以上の記憶容量を有することが望ましい。
【００３５】
バッファ装置１０は、制御回路２００を含む。制御回路２００は、メモリ１（１２０）及びメモリ２（１３０）に対するデータ１１２の書き込み及び読み出しを制御する制御部として機能する。制御回路２００は、メモリ１（１２０）及びメモリ２（１３０）を、データ書き込みを可能にする書き込みモード又はデータ読み出しを可能にする読み出しモードのいずれかに排他的に設定するように制御する。また、制御回路２００は、書き込みモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に最後に受信したデータを書き込むか、または、所定のアドレス（例えば、最終アドレス）にデータを書き込むと、データ書き込みを終了するように制御する。例えば、制御回路２００は、データ終了信号２６に基づいて、書き込みモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ書き込みを終了する。また、制御回路２００は、読み出しモードに設定されたメモリ１（１２０）又はメモリ２（１３０）から最後に受信したデータを読み出すか、または、所定のアドレス（例えば、最終アドレス）からデータを読み出すと、メモリ１（１２０）又はメモリ２（１３０）に対するデータ読み出しを終了するように制御する。また、制御回路２００は、書き込みモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ書き込みと読み出しモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ読み出しがともに終了すると、書き込みモードに設定されたメモリ１（１２０）又はメモリ２（１３０）を読み出しモードの設定に切り替えるとともに読み出しモードに設定されたメモリ１（１２０）又はメモリ２（１３０）を書き込みモードの設定に切り替えるように制御する。
【００３６】
制御回路２００は、書き込みモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ書き込みが終了した時は、書き込みモードに設定されたメモリ１（１２０）又はメモリ２（１３０）を、読み出しモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ読み出しが終了するまで、データ書き込み及びデータ読み出しを禁止するウェイトモードに設定するように制御してもよい。さらに、制御回路２００は、読み出しモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ読み出しが終了した時は、読み出しモードに設定されたメモリ１（１２０）又はメモリ２（１３０）を、書き込みモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ書き込みが終了するまで、ウェイトモードに設定するように制御してもよい。
【００３７】
制御回路２００は、メモリ１（１２０）に対するデータ書き込みの終了アドレスを記憶する終了アドレスレジスタ１（２４０）及びメモリ２（１３０）に対するデータ書き込みの終了アドレスを記憶する終了アドレスレジスタ２（２５０）を含んでもよい。例えば、メモリ１（１２０）及びメモリ２（１３０）が０ｘ０００〜０ｘ７ＦＦまでの異なるアドレスが割り当てられた２０４８バイトの記憶容量を有する場合、終了アドレスレジスタ１（２４０）及び終了アドレスレジスタ２（２５０）は、１１ビットのレジスタであればよい。制御回路２００は、一群のデータ２２の最後のデータを書き込んだ、メモリ１（１２０）及びメモリ２（１３０）のアドレスを、それぞれ、終了アドレスレジスタ１（２４０）及び終了アドレスレジスタ２（２５０）に記憶させる。制御回路２００は、メモリ１（１２０）又はメモリ２（１３０）の、終了アドレスレジスタ１（２４０）又は終了アドレスレジスタ２（２５０）が記憶するアドレスからデータを読み出すと、メモリ１（１２０）又はメモリ２（１３０）に対するデータ読み出しを終了する。
【００３８】
制御回路２００は、アドレスカウンタ１（２２０）及びアドレスカウンタ２（２３０）を含んでもよい。アドレスカウンタ１（２２０）及びアドレスカウンタ２（２３０）は、それぞれ、ｎ＋ｉ（ｉは１以上の整数）ビットの第１のアドレスカウンタ及びｎ＋ｊ（ｊは１以上の整数）ビットの第２のアドレスカウンタとして機能する。例えば、メモリ１（１２０）及びメモリ２（１３０）が０ｘ０００〜０ｘ７ＦＦまでの異なるアドレスが割り当てられた２０４８バイトの記憶容量を有する場合（ｎ＝ｍ＝１１の場合）、アドレスカウンタ１（２２０）及びアドレスカウンタ２（２３０）は、１２ビット以上のレジスタであればよい。メモリ１（１２０）及びメモリ２（１３０）が、それぞれ、書き込みモードか読み出しモードかを最も簡単に判断するためには、アドレスカウンタ１（２２０）及びアドレスカウンタ２（２３０）は、１２ビットであるのが好ましい（ｉ＝ｊ＝１の場合）。アドレスカウンタ１（２２０）又はアドレスカウンタ２（２３０）の最上位１ビットに基づいて、メモリ１（１２０）又はメモリ２（１３０）が読み出しモード又は書き込みモードのいずれに設定されているかを判断するようにできるからである。この場合、制御回路２００は、メモリ１（１２０）又はメモリ２（１３０）を読み出しモード又は書き込みモードの設定に切り替える時に、アドレスカウンタ１（２２０）又はアドレスカウンタ２（２３０）の下位１１ビットをすべて０に、最上位ビットを反転した値に初期化し、メモリ１（１２０）又はメモリ２（１３０）に対してデータ書き込み又はデータ読み出しをする毎に、アドレスカウンタ１（２２０）又はアドレスカウンタ２（２３０）を１ずつインクリメントするようにすればよい。
【００３９】
制御回路２００は、シーケンサ２１０を含んでもよい。シーケンサ２１０は、メモリ１（１２０）及びメモリ２（１３０）のモード設定（書き込みモード、読み出しモード、ウェイトモード等）の状態を管理する。制御回路２００は、シーケンサ２１０が管理するモード設定の状態に応じて、メモリ１（１２０）及びメモリ２（１３０）に対する書き込み及び読み出しの制御を行う。また、制御回路２００は、シーケンサ２１０が管理するモード設定の状態に応じて、受信回路１１０によるリクエスト信号１２の送出を制御する。
【００４０】
制御回路２００は、メモリ制御信号生成回路２６０を含んでもよい。メモリ制御信号生成回路２６０は、シーケンサ２６０の状態をデコードし、メモリ１（１２０）及びメモリ２（１３０）に対するチップセレクト信号、ライトイネーブル信号、リードイネーブル信号等の制御信号（２６２、２６４）を生成してもよい。また、メモリ制御信号生成回路２６０は、アドレスカウンタ１（２２０）及びアドレスカウンタ２（２３０）の最上位ビットに基づいて、メモリ１（１２０）及びメモリ２（１３０）に対するライトイネーブル信号やリードイネーブル信号を生成してもよい。
【００４１】
バッファ装置１０は、セレクタ１４０を含んでもよい。セレクタ１４０は、メモリ１（１２０）から読み出したデータ１２２又はメモリ２（１３０）から読み出したデータ１３２のいずれかを選択し、選択したデータ１４２を送信回路１５０に供給する。制御回路２００は、読み出しモードに設定されているメモリの出力を選択するようにデコーダ１４０を制御する。
【００４２】
バッファ装置１０は、送信回路１５０を含む。送信回路１５０は、メモリ１（１２０）及びメモリ２（１３０）のいずれか一方から読み出したデータ１４を送信するデータ送信部として機能する。デコーダ３０は、バッファ装置１０に対してデータ送信を要求するリクエスト信号３２を送信する。送信回路１５０は、リクエスト信号３２を検出した時は、読み出しモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ読み出しが可能である場合のみ、リクエスト信号３２に対する応答を確認するためのアクノリッジ信号１６を送出するとともにメモリ１（１２０）又はメモリ２（１３０）から読み出したデータ１４を送信する。送信回路１５０は、読み出しモードに設定されたメモリ１（１２０）又はメモリ２（１３０）に対するデータ読み出しが終了し、他方のメモリ１（１２０）又はメモリ２（１３０）に対するデータ書き込みが終了していない時は、アクノリッジ信号１６を送出しない。制御回路２００は、シーケンサ２１０が管理するモード設定の状態に応じて、送信回路１５０によるアクノリッジ信号１６の送出及びデータ１４を制御する。
【００４３】
なお、バッファ装置１０、ホストインターフェース回路２０及びデコーダ３０を含んで半導体集積回路装置を構成してもよい。例えば、半導体集積回路装置として、ホストインターフェース回路２０が圧縮音声データを受信し、デコーダ３０が圧縮音声データをデコードして音声データを再生する音声再生装置を考えることができる。
【００４４】
図２は、本実施形態に係るバッファ装置の状態遷移図である。以下、図１を参照しながら、バッファ装置１０（シーケンサ２１０）の状態遷移について説明する。なお、以下では、メモリ１（１２０）及びメモリ２（１３０）は、０ｘ０００〜０ｘ７ＦＦのアドレスを有する２０４８バイトの記憶容量を有し、アドレスカウンタ１（２２０）及びアドレスカウンタ２（２３０）は１２ビットとして説明する。
【００４５】
リセット信号が入力されると、バッファ装置１０（シーケンサ２１０）はステートＳＴ０に遷移する。ステートＳＴ０は初期状態であり、ステートＳＴ０において、メモリ１（１２０）は書き込みモードに設定され、メモリ２（１３０）はウェイトモードに設定される。図３は、バッファ装置のステートＳＴ０における処理のフローチャートの例である。まず、制御回路２００は、アドレスカウンタ１（２２０）及びアドレスカウンタ２（２３０）を０ｘ０００に初期化する（ステップＳ１０、Ｓ１２）。ここで、メモリ１（１２０）に対して先頭アドレスから書き込みを行うために、アドレスカウンタ１（２２０）の下位１１ビットを０ｘ０００に設定し、最上位ビットを０に設定している。また、制御回路２００は、終了アドレスレジスタ１（２４０）及び終了アドレスレジスタ２（２５０）を０ｘ７ＦＦに初期化する（ステップＳ１４、Ｓ１６）。ここで、メモリ１（１２０）の最終アドレス（０ｘ７ＦＦ）に対して書き込みが行われた時に終了アドレスレジスタ１（２４０）を更新する制御を不要にするために、終了アドレスレジスタ１（２４０）をメモリ１（１２０）の最終アドレスである０ｘ７ＦＦに初期化している。さらに、制御回路２００は、メモリ１（１２０）を書き込みモードに設定（初期化）し（ステップＳ１８）、メモリ２（１３０）をウェイトモードに設定（初期化）する（ステップＳ２０）。すなわち、初期状態では、メモリ１（１２０）に対する書き込みが可能な状態になる。一方、メモリ２（１３０）には有効なデータが存在していないので、読み出しが可能な状態にせずにメモリ１（１２０）に対する書き込みが終了するまでウェイト状態になる（ステップＳ２２）。メモリ１（１２０）に対する書き込みが終了すると、バッファ装置１０（シーケンサ２１０）はステートＳＴ０からＳＴ１に遷移する。
【００４６】
図２のステートＳＴ１において、メモリ１（１２０）は読み出しモードに設定され、メモリ２（１３０）は書き込みモードに設定される。図４は、バッファ装置１０のステートＳＴ１における処理のフローチャートの例である。まず、制御回路２００は、アドレスカウンタ１（２２０）を０ｘ８００に設定し（ステップＳ３０）、アドレスカウンタ２（２３０）を０ｘ０００に設定する（ステップＳ３２）。ここで、メモリ１（１２０）に対して先頭アドレスから読み出しを行うために、アドレスカウンタ１（２２０）の下位１１ビットを０ｘ０００に設定し、最上位ビットを１に設定している。同様に、メモリ２（１３０）に対して先頭アドレスから書き込みを行うために、アドレスカウンタ２（２３０）の下位１１ビットを０ｘ０００に設定し、最上位ビットを０に設定している。また、制御回路２００は、終了アドレスレジスタ２（２５０）を０ｘ７ＦＦに設定する（ステップＳ３４）。ここで、メモリ２（１３０）の最終アドレス（０ｘ７ＦＦ）に対して書き込みが行われた時に終了アドレスレジスタ２（２５０）を更新する制御を不要にするために、終了アドレスレジスタ２（２５０）をメモリ２（１３０）の最終アドレスである０ｘ７ＦＦに設定している。さらに、制御回路２００は、メモリ１（１２０）を読み出しモードに設定し（ステップＳ３６）、メモリ２（１３０）を書き込みモードに設定する（ステップＳ３８）。すなわち、メモリ１（１２０）に対する読み出しが可能な状態になり、メモリ２（１３０）に対する書き込みが可能な状態になる。次に、制御回路２００は、メモリ１（１２０）に対する読み出し又はメモリ２（１３０）に対する書き込みが終了したか否か判断する。すなわち、制御回路２００は、メモリ１（１２０）に対する読み出しが終了したか否か判断し（ステップＳ４０）、メモリ１（１２０）に対する読み出しが終了していない場合は、メモリ２（１３０）に対する書き込みが終了しているか否か判断する（ステップＳ４２）。メモリ２（１３０）に対する書き込みが終了している場合は、バッファ装置１０（シーケンサ２１０）はステートＳＴ１からＳＴ２に遷移する。一方、ステップＳ４０において、メモリ１（１２０）に対する読み出しが終了した場合は、メモリ２（１３０）に対する書き込みが終了しているか否か判断する（ステップＳ４４）。メモリ２（１３０）に対する書き込みが終了していない場合は、バッファ装置１０（シーケンサ２１０）はステートＳＴ１からＳＴ３に遷移する。メモリ２（１３０）に対する書き込みが終了している場合は、バッファ装置１０（シーケンサ２１０）はステートＳＴ１からＳＴ４に遷移する。
【００４７】
図２のステートＳＴ２において、メモリ１（１２０）は読み出しモードに設定されたままであり、メモリ２（１３０）はウェイトモードに設定される。図５は、バッファ装置１０のステートＳＴ２における処理のフローチャートの例である。制御回路２００は、メモリ２（１３０）をウェイトモードに設定する（ステップＳ５０）。すなわち、メモリ２（１３０）に対する読み出し及び書き込みが禁止される。メモリ１（１２０）は読み出しモードに設定されたままである。次に、制御回路２００は、メモリ１（１２０）に対する読み出しが終了したか否か判断する（ステップＳ５２）。メモリ１（１２０）に対する読み出しが終了すると、バッファ装置１０（シーケンサ２１０）はステートＳＴ２からＳＴ４に遷移する。
【００４８】
図２のステートＳＴ３において、メモリ１（１２０）はウェイトモードに設定され、メモリ２（１３０）は書き込みモードに設定されたままである。図６は、バッファ装置１０のステートＳＴ３における処理のフローチャートの例である。制御回路２００は、メモリ１（１２０）をウェイトモードに設定する（ステップＳ７０）。すなわち、メモリ１（１２０）に対する読み出し及び書き込みが禁止される。メモリ２（１３０）は書き込みモードに設定されたままである。次に、制御回路２００は、メモリ２（１３０）に対する書き込みが終了したか否か判断する（ステップＳ７２）。メモリ２（１３０）に対する書き込みが終了すると、バッファ装置１０（シーケンサ２１０）はステートＳＴ３からＳＴ４に遷移する。
【００４９】
図２のステートＳＴ４において、メモリ１（１２０）は書き込みモードに設定され、メモリ２（１３０）は読み出しモードに設定される。図７は、バッファ装置１０のステートＳＴ４における処理のフローチャートの例である。まず、制御回路２００は、アドレスカウンタ１（２２０）を０ｘ０００に設定し（ステップＳ９０）、アドレスカウンタ２（２３０）を０ｘ８００に設定する（ステップＳ９２）。ここで、メモリ１（１２０）に対して先頭アドレスから書き込みを行うために、アドレスカウンタ１（２２０）の下位１１ビットを０ｘ０００に設定し、最上位ビットを０に設定している。同様に、メモリ２（１３０）に対して先頭アドレスから読み出しを行うために、アドレスカウンタ２（２３０）の下位１１ビットを０ｘ０００に設定し、最上位ビットを１に設定している。また、制御回路２００は、終了アドレスレジスタ１（２４０）を０ｘ７ＦＦに設定する（ステップＳ９４）。ここで、メモリ１（１２０）の最終アドレス（０ｘ７ＦＦ）に対して書き込みが行われた時に終了アドレスレジスタ１（２４０）を更新する制御を不要にするために、終了アドレスレジスタ１（２４０）をメモリ１（１２０）の最終アドレスである０ｘ７ＦＦに設定している。さらに、制御回路２００は、メモリ１（１２０）を書き込みモードに設定し（ステップＳ９６）、メモリ２（１３０）を読み出しモードに設定する（ステップＳ９８）。すなわち、メモリ１（１２０）に対する書き込みが可能な状態になり、メモリ２（１３０）に対する読み出しが可能な状態になる。次に、制御回路２００は、メモリ１（１２０）に対する書き込み又はメモリ２（１３０）に対する読み出しが終了したか否か判断する。すなわち、制御回路２００は、メモリ１（１２０）に対する書き込みが終了したか否か判断し（ステップＳ１００）、メモリ１（１２０）に対する書き込みが終了していない場合は、メモリ２（１３０）に対する読み出しが終了しているか否か判断する（ステップＳ１０２）。メモリ２（１３０）に対する読み出しが終了している場合は、バッファ装置１０（シーケンサ２１０）はステートＳＴ４からＳＴ５に遷移する。一方、ステップＳ１００において、メモリ１（１２０）に対する書き込みが終了した場合は、メモリ２（１３０）に対する読み出しが終了しているか否か判断する（ステップＳ１０４）。メモリ２（１３０）に対する読み出しが終了していない場合は、バッファ装置１０（シーケンサ２１０）はステートＳＴ４からＳＴ６に遷移する。メモリ２（１３０）に対する読み出しが終了している場合は、バッファ装置１０（シーケンサ２１０）はステートＳＴ４からＳＴ１に遷移する。
【００５０】
図２のステートＳＴ５において、メモリ１（１２０）はウェイトモードに設定され、メモリ２（１３０）は読み出しモードに設定されたままである。図８は、バッファ装置１０のステートＳＴ５における処理のフローチャートの例である。制御回路２００は、メモリ１（１２０）をウェイトモードに設定する（ステップＳ１１０）。すなわち、メモリ１（１２０）に対する読み出し及び書き込みが禁止される。メモリ２（１３０）は読み出しモードに設定されたままである。次に、制御回路２００は、メモリ２（１３０）に対する読み出しが終了したか否か判断する（ステップＳ１１２）。メモリ２（１３０）に対する読み出しが終了すると、バッファ装置１０（シーケンサ２１０）はステートＳＴ５からＳＴ１に遷移する。
【００５１】
図２のステートＳＴ６において、メモリ１（１２０）は書き込みモードに設定されたままであり、メモリ２（１３０）はウェイトモードに設定される。図９は、バッファ装置１０のステートＳＴ６における処理のフローチャートの例である。制御回路２００は、メモリ２（１３０）をウェイトモードに設定する（ステップＳ１３０）。すなわち、メモリ２（１３０）に対する読み出し及び書き込みが禁止される。メモリ１（１２０）は書き込みモードに設定されたままである。次に、制御回路２００は、メモリ１（１２０）に対する書き込みが終了したか否か判断する（ステップＳ１３２）。メモリ１（１２０）に対する書き込みが終了すると、バッファ装置１０（シーケンサ２１０）はステートＳＴ６からＳＴ１に遷移する。
【００５２】
図１０は、本実施形態に係るバッファ装置がメモリ１又はメモリ２を書き込みモードに設定した時の書き込み処理のフローチャートの例である。すなわち、図１０のフローチャートは、図２で説明した状態遷移図のステートＳＴ０、ＳＴ４、ＳＴ６におけるメモリ１に対する書き込み処理及びステートＳＴ１、ＳＴ３におけるメモリ２に対する書き込み処理のフローに対応する。以下、図１を参照しながら、メモリ１を書き込みモードに設定した場合を例にとり、図１０のフローチャートについて説明する。メモリ２を書き込みモードに設定した場合も、メモリ２に対する書き込み処理に図１０のフローチャートを同様に適用することができる。
【００５３】
図１０のフローチャートの初期状態において、メモリ１（１２０）が書き込みモードに設定されており、アドレスカウンタ１（２２０）は０ｘ０００に設定されている。また、終了アドレスレジスタ１（２４０）は、０ｘ７ＦＦに設定されている。
【００５４】
まず、制御回路２００は、書き込みモードに設定されたメモリ１（１２０）の最終アドレス（０ｘ７ＦＦ）に書き込みが行われたか否か判断する（ステップＳ２００）。ステップＳ２００において、メモリ１（１２０）の最終アドレス（０ｘ７ＦＦ）に書き込みが行われた場合は、制御回路２００は、メモリ１（１２０）に対する書き込み処理を終了する。一方、メモリ１（１２０）の最終アドレス（０ｘ７ＦＦ）に書き込みが行われなければ、受信回路１１０は、ホストインターフェース回路２０に対してリクエスト信号１２を送出する（ステップＳ２０２）。
【００５５】
次に、受信回路１１０は、ホストインターフェース回路２０がアクノリッジ信号２４を送信してきたか否か判断する（ステップＳ２０４）。受信回路１１０は、アクノリッジ信号２４を検出することができなかった場合は、ホストインターフェース回路２０に対して再度リクエスト信号１２を送出する（ステップＳ２０２）。ステップＳ２０４において、アクノリッジ信号２４を検出した場合は、受信回路１１０はホストインターフェース回路２０が送信するデータ２２を受信し、制御回路２００は、メモリ１（１２０）に対して、アドレスカウンタ１（２２０）で示されるアドレスに受信したデータ１１２を書き込む（ステップＳ２０６）。例えば、アドレスカウンタ１（２２０）は最初は０ｘ０００に設定されているので、制御回路２００は、メモリ１（１２０）の０ｘ０００アドレス（アドレスカウンタ１（２２０）の下位１１ビットの値）に書き込みを行う。
【００５６】
次に、受信回路１１０は、ホストインターフェース回路２０がデータ１１２とともにデータ終了信号２６を送信してきたか否か判断する（ステップＳ２０８）。受信回路１１０がデータ終了信号２６を検出しなかった場合は、制御回路２００は、アドレスカウンタ１（２２０）をインクリメントする（ステップＳ２１０）。例えば、制御回路２００は、アドレスカウンタ１（２２０）を０ｘ０００から０ｘ００１にインクリメントする。以後、バッファ装置１０は、メモリ１（１２０）の０ｘ００１以降のアドレスに対して、ステップＳ２００〜Ｓ２１０の処理を繰り返す。ステップＳ２０８において、受信回路１１０がデータ終了信号２６を検出した場合は、制御回路２００は、終了アドレスレジスタ１（２４０）にアドレスカウンタ１（２２０）の値をコピーし（ステップＳ２１２）、メモリ１（１２０）に対する対する書き込み処理を終了する。
【００５７】
なお、メモリ１（１２０）の最終アドレス（０ｘ７ＦＦ）に書き込みが行われた場合（ステップＳ２００のＹＥＳの場合）は、ステップＳ２１２の処理を行わずに書き込み処理を終了するフローになっているのは、最初に終了アドレスレジスタ１（２４０）が０ｘ７ＦＦに設定されているため、ステップＳ２１２の処理が不要だからである。メモリ１（１２０）の最終アドレス（０ｘ７ＦＦ）に書き込みが行われた場合も、ステップＳ２１２の処理を行ってから書き込み処理を終了するようにしてもよい。
【００５８】
図１１は、本実施形態に係るバッファ装置がメモリ１又はメモリ２を読み出しモードに設定した時の読み出し処理のフローチャートの例である。すなわち、図１１のフローチャートは、図２で説明した状態遷移図のステートＳＴ１、ＳＴ２におけるメモリ１に対する読み出し処理及びステートＳＴ４、ＳＴ５におけるメモリ２に対する読み出し処理のフローに対応する。以下、図１を参照しながら、メモリ１を読み出しモードに設定した場合を例にとり、図１１のフローチャートについて説明する。メモリ２を読み出しモードに設定した場合も、メモリ２に対する読み出し処理に図１１のフローチャートを同様に適用することができる。
【００５９】
図１１のフローチャートの初期状態において、メモリ１（１２０）が読み出しモードに設定されており、アドレスカウンタ１（２２０）は０ｘ８００に設定されている。また、終了アドレスレジスタ１（２４０）には、メモリ１（１２０）に対する直前の書き込み処理において最後に書き込みが行われたアドレスが記憶されており、例えば、０ｘ３ＦＦに設定されている。
【００６０】
まず、制御回路２００は、読み出しモードに設定されたメモリ１（１２０）の最終アドレス（０ｘ７ＦＦ）から読み出しが行われたか否か判断する（ステップＳ２２０）。ステップＳ２２０において、メモリ１（１２０）の最終アドレス（０ｘ７ＦＦ）から読み出しが行われた場合は、制御回路２００は、メモリ１（１２０）に対する読み出し処理を終了する。一方、メモリ１（１２０）の最終アドレス（０ｘ７ＦＦ）から読み出しが行われなければ、送信回路１５０は、デコーダ３０がリクエスト信号３２を送信してきたか否か判断する（ステップＳ２２２）。送信回路１５０は、リクエスト信号３２を検出するまでメモリ１（１２０）に対する読み出しを行わない。ステップＳ２２２において、リクエスト信号３２を検出した場合は、制御回路２００は、メモリ１（１２０）に対して、アドレスカウンタ１（２２０）で示されるアドレスからデータを読み出す（ステップＳ２２４）。例えば、アドレスカウンタ１（２２０）は最初は０ｘ８００に設定されているので、制御回路２００は、メモリ１（１２０）の０ｘ０００アドレス（アドレスカウンタ１（２２０）の下位１１ビットの値）から読み出しを行う。
【００６１】
次に、送信回路１５０は、制御回路２００がメモリ１（１２０）から読み出したデータ１２２を送信データ１４としてアクノリッジ信号１６とともにデコーダ３０に送信する（ステップＳ２２６）。ここで、制御回路２００は、セレクタ１４０がメモリ１（１２０）から読み出したデータ１２２を選択するように制御する。
【００６２】
次に、制御回路２００は、メモリ１（１２０）の、データ終了アドレスレジスタ１（２４０）で示されるアドレス（例えば、０ｘ３ＦＦ）から読み出しを行ったか否か判断する（ステップＳ２２８）。データ終了アドレスレジスタ１（２４０）で示されるアドレスからまだ読み出しを行っていない場合は、制御回路２００は、アドレスカウンタ１（２２０）をインクリメントする（ステップＳ２３０）。例えば、制御回路２００は、アドレスカウンタ１（２２０）を０ｘ０００から０ｘ００１にインクリメントする。以後、バッファ装置１０は、メモリ１（１２０）の０ｘ００１以降のアドレスに対して、ステップＳ２２０〜Ｓ２３０の処理を繰り返す。制御回路２００が、ステップＳ２２４において、メモリ１（１２０）の、データ終了アドレスレジスタ１（２４０）で示されるアドレスから読み出しを行った場合（ステップＳ２２８のＹＥＳの場合）は、制御回路２００は、メモリ１（１２０）に対する対する読み出し処理を終了する。
【００６３】
２．マイクロコンピュータ
図１２は、本実施の形態のマイクロコンピュータのハードウエアブロック図の一例である。
【００６４】
本マイクロコンピュータ７００は、ＣＰＵ５１０、キャッシュメモリ５２０、ＲＯＭ７１０、ＲＡＭ７２０、ＭＭＵ７３０、ＬＣＤコントローラ５３０、リセット回路５４０、プログラマブルタイマ５５０、リアルタイムクロック（ＲＴＣ）５６０、ＤＭＡコントローラ５７０、割り込みコントローラ５８０、通信制御回路５９０、バスコントローラ６００、Ａ／Ｄ変換器６１０、Ｄ／Ａ変換器６２０、入力ポート６３０、出力ポート６４０、Ｉ／Ｏポート６５０、クロック発生装置６６０、プリスケーラ６７０、クロック停止制御回路７４０及びそれらを接続する汎用バス６８０、専用バス７５０等、各種ピン６９０等を含む。
【００６５】
３．電子機器
図１３に、本実施の形態の電子機器のブロック図の一例を示す。本電子機器８００は、マイクロコンピュータ（またはＡＳＩＣ）８１０、入力部８２０、メモリ８３０、電源生成部８４０、ＬＣＤ８５０、音出力部８６０を含む。
【００６６】
ここで、入力部８２０は、種々のデータを入力するためのものである。マイクロコンピュータ８１０は、この入力部８２０により入力されたデータに基づいて種々の処理を行うことになる。メモリ８３０は、マイクロコンピュータ８１０などの作業領域となるものである。電源生成部８４０は、電子機器８００で使用される各種電源を生成するためのものである。ＬＣＤ８５０は、電子機器が表示する各種の画像（文字、アイコン、グラフィック等）を出力するためのものである。
【００６７】
音出力部８６０は、電子機器８００が出力する各種の音（音声、ゲーム音等）を出力するためのものであり、その機能は、スピーカなどのハードウェアにより実現できる。
【００６８】
図１４（Ａ）に、電子機器の１つである携帯電話９５０の外観図の例を示す。この携帯電話９５０は、入力部として機能するダイヤルボタン９５２や、電話番号や名前やアイコンなどを表示するＬＣＤ９５４や、音出力部として機能し音声を出力するスピーカ９５６を備える。
【００６９】
図１４（Ｂ）に、電子機器の１つである携帯型ゲーム装置９６０の外観図の例を示す。この携帯型ゲーム装置９６０は、入力部として機能する操作ボタン９６２、十字キー９６４や、ゲーム画像を表示するＬＣＤ９６６や、音出力部として機能しゲーム音を出力するスピーカ９６８を備える。
【００７０】
図１４（Ｃ）に、電子機器の１つであるパーソナルコンピュータ９７０の外観図の例を示す。このパーソナルコンピュータ９７０は、入力部として機能するキーボード９７２や、文字、数字、グラフィックなどを表示するＬＣＤ９７４、音出力部９７６を備える。
【００７１】
本実施の形態のマイクロコンピュータを図１４（Ａ）〜図１４（Ｃ）の電子機器に組みむことにより、低価格でコストパフォーマンスの高い電子機器を短期間で提供することができる。
【００７２】
なお、本実施形態を利用できる電子機器としては、図１４（Ａ）、（Ｂ）、（Ｃ）に示すもの以外にも、携帯型情報端末、ページャー、電子卓上計算機、タッチパネルを備えた装置、プロジェクタ、ワードプロセッサ、ビューファインダ型又はモニタ直視型のビデオテープレコーダ、カーナビゲーション装置等のＬＣＤを使用する種々の電子機器を考えることができる
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【００７３】
例えば、図１０で説明した書き込み処理のフローチャートでは、ステップＳ２１０において、アドレスカウンタをインクリメントしているが、アドレスカウンタ１、２をダウンカウンタとして構成し、ステップＳ２１０においてアドレスカウンタをデクリメントする構成にしてもよい。同様に、図１１で説明した読み出し処理のフローチャートでは、ステップＳ２３０において、アドレスカウンタをインクリメントしているが、アドレスカウンタ１、２をダウンカウンタとして構成し、ステップＳ２３０においてアドレスカウンタをデクリメントする構成にしてもよい。アドレスカウンタ１、２をダウンカウンタとして構成した場合、図３において、ステップＳ１０、Ｓ１２、Ｓ１４、Ｓ１６の初期値をそれぞれ、０ｘ７ＦＦ、０ｘ７ＦＦ、０ｘ０００、０ｘ０００に変更すればよい。同様に、図４において、ステップＳ３０、Ｓ３２、Ｓ３４の設定値をそれぞれ、０ｘＦＦＦ、０ｘ７ＦＦ、０ｘ０００に変更すればよい。同様に、図７において、ステップＳ９０、Ｓ９２、Ｓ９４の設定値をそれぞれ、０ｘ７ＦＦ、０ｘＦＦＦ、０ｘ０００に変更すればよい。
【００７４】
また、例えば、図１〜図１１では、メモリ１（１２０）又はメモリ２（１３０）の書き込みモードの設定及び読み出しモードの設定を、１２ビットのアドレスカウンタ１（２２０）又は１２ビットのアドレスカウンタ２（２３０）の最上位ビットがそれぞれ０の時及び１の時に対応させているが、これに限られない。メモリ１（１２０）又はメモリ２（１３０）の書き込みモードの設定及び読み出しモードの設定を、１２ビットのアドレスカウンタ１（２２０）又は１２ビットのアドレスカウンタ２（２３０）の最上位ビットがそれぞれ１の時及び０の時に対応させてもよい。
【００７５】
また、例えば、図２で説明した状態遷移図のステートＳＴ１における処理のフローを示す図４において、ステップＳ３４で終了アドレスレジスタ２の設定を行っているが、メモリ２に対する読み出し処理が終了した時に設定してもよい。すなわち、図２のステートＳＴ４からＳＴ１又はＳＴ６に遷移する時及びＳＴ５からＳＴ１に遷移する時に終了アドレスレジスタ２を初期化してもよい。同様に、図２のステートＳＴ１からＳＴ４又はＳＴ３に遷移する時及びＳＴ２からＳＴ４に遷移する時に終了アドレスレジスタ１を初期化してもよい。
【００７６】
本発明は、実施の形態で説明した構成と実質的に同一の構成（例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成）を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【図面の簡単な説明】
【００７７】
【図１】本実施形態に係るバッファ装置の構成例を説明するための図。
【図２】本実施形態に係るバッファ装置の状態遷移図。
【図３】本実施形態に係るバッファ装置の状態遷移図のステートＳＴ０における処理のフローチャートの例。
【図４】本実施形態に係るバッファ装置の状態遷移図のステートＳＴ１における処理のフローチャートの例。
【図５】本実施形態に係るバッファ装置の状態遷移図のステートＳＴ２における処理のフローチャートの例。
【図６】本実施形態に係るバッファ装置の状態遷移図のステートＳＴ３における処理のフローチャートの例。
【図７】本実施形態に係るバッファ装置の状態遷移図のステートＳＴ４における処理のフローチャートの例。
【図８】本実施形態に係るバッファ装置の状態遷移図のステートＳＴ５における処理のフローチャートの例。
【図９】本実施形態に係るバッファ装置の状態遷移図のステートＳＴ６における処理のフローチャートの例。
【図１０】本実施形態に係るバッファ装置の書き込み処理のフローチャートの例。
【図１１】本実施形態に係るバッファ装置の読み出し処理のフローチャートの例。
【図１２】本実施の形態のマイクロコンピュータのハードウエアブロック図の一例である。
【図１３】マイクロコンピュータを含む電子機器のブロック図の一例を示す。
【図１４】図１４（Ａ）（Ｂ）（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
【００７８】
１０  バッファ装置、１２  リクエスト信号、１４  送信データ、１６  アクノリッジ信号、２０  ホストインターフェース回路、２２  入力データ、２４  アクノリッジ信号、２６  データ終了信号、３０  デコーダ、３２  リクエスト信号、４０  ホスト、１１０  受信回路、１１２  受信データ、１２０  メモリ１、１２２  読み出しデータ、１３０  メモリ２、１３２  読み出しデータ、１４０  セレクタ、１４２  選択データ、１５０  送信回路、２００  制御回路、２１０  シーケンサ、２２０  アドレスカウンタ１、２２２  アドレス信号、２３０  アドレスカウンタ２、２３２  アドレス信号、２４０  終了アドレスレジスタ１、２５０  終了アドレスレジスタ２、２６０  メモリ制御信号生成回路、２６２  制御信号、２６４  制御信号、５１０  ＣＰＵ、５２０  キャッシュメモリ、５３０  ＬＣＤコントローラ、５４０  リセット回路、５５０  プログラマブルタイマ、５６０  リアルタイムクロック（ＲＴＣ）、５７０  ＤＭＡコントローラ兼バスＩ／Ｆ、５８０  割り込みコントローラ、５９０  通信制御回路（シリアルインターフェース）、６００  バスコントローラ、６１０  Ａ／Ｄ変換器、６２０  Ｄ／Ａ変換器、６３０  入力ポート、６４０  出力ポート、６５０  Ｉ／Ｏポート、６６０  クロック発生装置（ＰＬＬ）、６７０  プリスケーラ、６８０  汎用バス、６９０  各種ピン、７００  マイクロコンピュータ、７１０  ＲＯＭ、７２０  ＲＡＭ、７３０  ＭＭＵ、７４０  クロック停止制御回路、７５０  専用バス、８００  電子機器、８１０  マイクロコンピュータ（ＡＳＩＣ）、８２０  入力部、８３０  メモリ、８４０  電源生成部、８５０  ＬＣＤ、８６０  音出力部、９５０  携帯電話、９５２  ダイヤルボタン、９５４  ＬＣＤ、９５６  スピーカ、９６０  携帯型ゲーム装置、９６２  操作ボタン、９６４  十字キー、９６６  ＬＣＤ、９６８  スピーカ、９７０  パーソナルコンピュータ、９７２  キーボード、９７４  ＬＣＤ、９７６  音出力部
【図１】
2008269018.tif 000003
【図２】
2008269018.tif 000004
【図３】
2008269018.tif 000005
【図４】
2008269018.tif 000006
【図５】
2008269018.tif 000007
【図６】
2008269018.tif 000008
【図７】
2008269018.tif 000009
【図８】
2008269018.tif 000010
【図９】
2008269018.tif 000011
【図１０】
2008269018.tif 000012
【図１１】
2008269018.tif 000013
【図１２】
2008269018.tif 000014
【図１３】
2008269018.tif 000015
【図１４】
2008269018.tif 000016