(57)【要約】【課題】データ転送を制御するマイクロコンピュータ内部において、データ転送に必要なディスクリプタ領域を低減する必要があった。【解決手段】マイクロコンピュータ１は、ＵＳＢ通信における管理情報を記憶する物理メモリ４１と、管理情報（ディスクリプタ）へアクセスするためのアドレス情報を入力し、アドレス情報に基づいて、管理情報に関するアクセスであるかを判定する判定部５０と、判定部５０が判定した結果に基づいて、アドレス情報を、物理メモリ５１の領域を特定する実アドレスへ変換するアドレス変換部６０と、第一形式に従って配置された管理情報を入力し、第一形式に含まれるアドレス情報量を削減した第二形式へ管理情報を並べ替え、実アドレスに基づいて第二形式で配置された管理情報を物理メモリ５１へ書き込むデータ変換部７０と、を備える。【選択図】図５
2008242883.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus）通信における管理情報を記憶するメモリと、
前記管理情報へアクセスするためのアドレス情報を入力し、前記アドレス情報に基づいて、前記管理情報に関するアクセスであるかを判定する判定部と、
前記判定部が判定した結果に基づいて、前記アドレス情報を、前記メモリの領域を特定する実アドレスへ変換するアドレス変換部と、
第一形式に従って配置された前記管理情報を入力し、前記第一形式に含まれるアドレス情報量を削減した第二形式へ前記管理情報を並べ替え、前記実アドレスに基づいて前記第二形式で配置された管理情報を前記メモリへ書き込むデータ変換部と、を備えるマイクロコンピュータ。
【請求項２】
前記アドレス変換部は、前記判定部が判定した結果に基づいて、前記アドレス情報を、前記実アドレスへ変換して前記メモリへ出力するとともに、前記実アドレスに格納された管理情報を変換する変換方式情報を前記データ変換部へ通知し、
前記データ変換部は、前記実アドレスに格納された管理情報を入力し、前記変換方式情報に基づいて、前記第二形式で配置された管理情報を前記第一形式へ並べ替えて出力することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記判定部は、
前記管理情報に関するアクセスであることを判別する判別アドレスを設定する判別アドレス設定レジスタと、
前記判別アドレスと、前記アドレス情報の一部分とを比較して前記管理情報に関するアクセスであることを判別する判別部と、を備えることを特徴とする請求項１または２記載のマイクロコンピュータ。
【請求項４】
前記第一形式におけるアドレス情報を格納する領域は、サイズｎ（ｎは自然数）であり、
前記第二形式におけるアドレス情報を格納する領域は、サイズｍ（ｍは自然数、ｎ＞ｍ）であり、
前記データ変換部は、前記第一形式で配置されたサイズｎのアドレス情報をサイズｍの情報量に削減して前記第二形式へ配置することを特徴とする請求項１乃至３のいずれかに記載のマイクロコンピュータ。
【請求項５】
前記サイズｎは、前記サイズｍの２倍の大きさであり、
前記第二形式は、前記第一形式のアドレス情報の領域を半分の情報量へ削減し、
前記データ変換部は、前記メモリへ二つの管理情報を記憶するときに、一つ目の管理情報においてアドレス情報の領域を半分に削減し、削減して生じた空き領域へ、二つ目の管理情報のアドレス情報を配置することを特徴とする請求項４記載のマイクロコンピュータ。
【請求項６】
前記変換方式情報は、アクセスする管理情報が前記一つ目の管理情報と前記二つ目の管理情報のどちらの配置になるかを特定することを特徴とする請求項５記載のマイクロコンピュータ。
【請求項７】
前記管理情報は、ＵＳＢ通信におけるエンドポイント・ディスクリプタとジェネラルトランスファー・ディスクリプタのいずれかであることを特徴とする請求項１乃至６のいずれかに記載のマイクロコンピュータ。
【請求項８】
前記第一形式は、ＵＳＢ通信におけるＯＨＣＩ（Open Host Controller Interface Specification）に準拠したディスクリプタの形式であることを特徴とする請求項１乃至７のいずれかに記載のマイクロコンピュータ。
【請求項９】
判定部は、さらに、
前記第一形式に従って配置された管理情報を前記第二形式に並べ替える機能を停止するイネーブルフラグを備え、
前記判別部は、前記イネーブルフラグが前記機能を停止することを示している場合にはアドレス変換しない判別結果を前記アドレス変換部へ通知することを特徴とする請求項３記載のマイクロコンピュータ。
【請求項１０】
ＵＳＢ（Universal Serial Bus）通信における管理情報へアクセスするためのアドレス情報と第一形式に従って配置された前記管理情報とを入力し、
前記アドレス情報に基づいて、前記管理情報に関するアクセスであるかを判定し、
前記判定した結果に基づいて、前記アドレス情報を、メモリの領域を特定する実アドレスへ変換し、
前記第一形式に従って配置された前記管理情報に基づいて、前記第一形式に含まれるアドレス情報量を削減した第二形式へ前記管理情報を並べ替え、
前記実アドレスに基づいて前記第二形式で配置された管理情報を前記メモリへ書き込むマイクロコンピュータのメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに効率的にデータを書き込み、読み出しするマイクロコンピュータ及びメモリアクセス方法に関する。
【背景技術】
【０００２】
近年、音楽データ再生装置などの電子機器装置は、携帯型の製品開発が進んでおり、これらの分野では小型化が要求されている。このような電子機器装置などでは、ＵＳＢ（Universal Serial Bus）メモリが用いられる。このため、汎用のマイクロコンピュータにおいて、外部メモリを配置することなく一個の装置でＵＳＢメモリを制御するような小さいシステムにすることが求められてきた。
【０００３】
一方、ＵＳＢメモリは、パーソナルコンピュータなどに搭載されることを前提に開発されているため、ＵＳＢメモリのデータ転送に用いるディスクリプタ（送受信管理情報）は規格段階でＰＣＩ（Peripheral Components Interconnect）バスにあわせて３２ビットになっていた（非特許文献１）。このため、マイクロコンピュータ内部にＵＳＢメモリを制御するシステムを組み込む場合、物理メモリが確保できなかった。一方、内蔵メモリ空間で実現しようとすると、ディスクリプタ領域の圧縮が必要であった。
【０００４】
このため、メモリを効率的に利用するため、データの圧縮・伸張を利用する技術が考案されていた。例えば、特許文献1には、圧縮したデータを格納してメモリの効率的な利用を図る技術が開示されている。
【特許文献１】特開２００６−１８６４８０号公報
【非特許文献１】"OpenHCI Open Host Controller Interface Specification for USB", Release:1.0a, p.1-38
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ディスクリプタ領域のデータを圧縮・伸張することによってＵＳＢメモリを制御するシステムを組み込むことはかえって処理を煩雑することになっていた。また、既存のＵＳＢホストの機能、既存管理ソフトウェア等を利用するためには、ディスクリプタのデータ構造の変更は好ましくない。このため、マイクロコンピュータ内部においてディスクリプタ領域を低減する機構が望まれていた。
【０００６】
このように、データ転送を制御するマイクロコンピュータ内部において、データ転送に必要なディスクリプタ領域を低減することが必要であるという問題があった。
【課題を解決するための手段】
【０００７】
本発明に係るマイクロコンピュータの一態様は、ＵＳＢ通信における管理情報を記憶するメモリと、前記管理情報へアクセスするためのアドレス情報を入力し、前記アドレス情報に基づいて、前記管理情報に関するアクセスであるかを判定する判定部と、前記判定部が判定した結果に基づいて、前記アドレス情報を、前記メモリの領域を特定する実アドレスへ変換するアドレス変換部と、第一形式に従って配置された前記管理情報を入力し、前記第一形式に含まれるアドレス情報量を削減した第二形式へ前記管理情報を並べ替え、前記実アドレスに基づいて前記第二形式で配置された管理情報を前記メモリへ書き込むデータ変換部と、を備える。
【０００８】
また、本発明に係るマイクロコンピュータのメモリアクセス方法の一態様は、ＵＳＢ通信における管理情報へアクセスするためのアドレス情報と第一形式に従って配置された前記管理情報とを入力し、前記アドレス情報に基づいて、前記管理情報に関するアクセスであるかを判定し、前記判定した結果に基づいて、前記アドレス情報を、前記メモリの領域を特定する実アドレスへ変換し、前記第一形式に従って配置された前記管理情報に基づいて、前記第一形式に含まれるアドレス情報量を削減した第二形式へ前記管理情報を並べ替え、前記実アドレスに基づいて前記第二形式で配置された管理情報を前記メモリへ書き込む。
【発明の効果】
【０００９】
本発明の好適な実施形態によれば、データ転送を制御するマイクロコンピュータ内部において、データの複雑な圧縮・伸張処理を行うことなく、データ転送に必要なディスクリプタ領域を低減することが可能となる。これにより、データ転送を制御するマイクロコンピュータの小型化が図れる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
【００１１】
図１は、本発明に係るマイクロコンピュータを搭載するシステムの構成例を示す概略図である。図１では、マイクロコンピュータ１をオーディオシステム３に搭載し、マイクロコンピュータ１の制御によりプレイヤー２を操作する。また、オーディオシステム３は、ＵＳＢコネクタ４を備え、携帯型音楽プレイヤー５（ＵＳＢのインターフェースを備えるもの）を接続することができる。携帯型音楽プレイヤー５は、ＵＳＢデバイスの一例を示したものであり、これ以外のＵＳＢコネクタ４に接続する装置を利用することができる。
【００１２】
次に、本発明に関連するＯＨＣＩで定義されたディスクリプタについて説明する。図２は、ＯＨＣＩで定義されたエンドポイント・ディスクリプタ（以下、「ＥＤ」と記す）の構成を示す図である。また、図３は、ＯＨＣＩで定義されたジュネラル・トランスファー・ディスクリプタ（以下、「ＴＤ」と記す）の構成を示す図である。ここで、ディスクリプタは、ＯＨＣＩ特有のメモリ格納情報と、ＵＳＢデバイスのエンドポイントの属性情報を保持する管理情報の呼称である。エンドポイント・ディスクリプタ及びジェネラル・トランスファー・ディスクリプタの構成の詳細な説明、各要素の説明については、非特許文献１に説明されているため省略する。本発明は、マイクロコンピュータ１が、図２及び図３に示すディスクリプタで特定された情報を内部のメモリに格納する場合に情報量の削減を実現するものである。図２及び図３に示すディスクリプタは、ＵＳＢデバイスとマイクロコンピュータ１を搭載した装置との間で情報を送受信する場合に必要となる。従って、これらの情報でマイクロコンピュータ１にとって冗長な部分を削減してマイクロコンピュータ１内に格納することが必要とされる。
【００１３】
図４は、本発明に係るマイクロコンピュータのメモリに格納するディスクリプタの配置例を示す図である。図４では、ＴＤを配置した例を示しているが、ＥＤであっても同様に配置することができる。図４の左側は、マイクロコンピュータ内のメモリに格納するディスクリプタの配置例を示している。図４の右側は、左側の配置例に並べ替える前のＴＤの構成を示している。以降の説明では、ＯＨＣＩ規格で定義されているディスクリプタの形式を第一形式（図４の右側）とし、マイクロコンピュータ内のメモリに格納するディスクリプタの形式を第二形式（図４の左側）とする。図４の左側では、第二形式で４個のディスクリプタを１０個のＤｗｏｒｄの領域を用いて格納した例を示す。また、図４の右側では、第一形式で２個のディスクリプタを８個のＤｗｏｒｄの領域を用いて格納した例を示し、第二形式との対応（Ｄｗｏｒｄ０から４の領域）を矢印で示している。
【００１４】
第二形式は、第一形式に含まれるアドレス情報量を半分にし、８分の５の情報量に削減している。具体的には、例えば２個のディスクリプタを格納する場合に、第一形式で８個分のＤｗｏｒｄの領域へ格納していたものを第二形式では５個のＤｗｏｒｄの領域で格納している。従って、第二形式は、アドレス情報量を削減することによって第一形式より少ない情報量でディスクリプタを格納することを可能にする。また、ＯＨＣＩ規格においてＥＤとＴＤの形式は異なる。しかしながら、本発明において第一形式と第二形式との間で配置を変換する場合に、情報の配置は基本的に同様に取り扱うことができる。ＥＤとＴＤを識別する手法等については後述する。
【００１５】
具体的なアドレス情報量の削減方法について、二つのディスクリプタを格納する場合で説明する。まず、第一形式に含まれるアドレス情報（Ｄｗｏｒｄ１からＤｗｏｒｄ３、Ｄｗｏｒｄ５からＤｗｏｒｄ７）を半分の情報量に削減する。一つ目のディスクリプタにおいてアドレス情報の領域を半分に削減して生じた空き領域へ、二つ目のディスクリプタのアドレス情報を配置する。図４では、半分に削減した二つのディスクリプタのアドレス情報を第二形式のＤｗｏｒｄ１からＤｗｏｒｄ３の領域に配置している。図４の第二形式のＤｗｏｒｄ５以降のデータは、次の二組のディスクリプタが配置されている。ここで、アドレス情報量を半分に削減するのは次の理由による。第一形式では、規格上アドレスを３２ビットで表すことになっている。しかしながら、マイクロコンピュータでは、メモリ容量が小さいため１６ビットで表すことができる。このため、第一形式に含まれるアドレス情報の３２ビットのうち、１６ビットは保持しなくてもよいからである。以下に、本発明に係るマイクロコンピュータの実施形態を説明する。
【００１６】
図５は、本発明に係るマイクロコンピュータの構成例を示すブロック図である。マイクロコンピュータ１は、ＣＰＵコア１０、ＵＳＢホストコントローラ２０、内部バス３０、及びメモリ部４０を備える。
【００１７】
ＣＰＵコア１０は、マイクロコンピュータを制御する機能であり、ここでは制御するための機能を実行するプログラムを含む。ＵＳＢホストコントローラ２０が読み込むディスクリプタをメモリ部４０上に用意することによって、ＵＳＢホストコントローラ２０の転送スケジューリングを行う。
【００１８】
ＵＳＢホストコントローラ２０は、ＵＳＢインターフェースを制御するコントローラである。ＯＨＣＩ規格に定義されるレジスタを備え、ＵｓｂＯｐｅｎｒａｔｉｏｎｌモードへの移行で、ＣＰＵが用意したディスクリプタをバスマスタとして読み込み、１ｍｓ毎に周期的にディスクリプタをポーリング処理していく。
【００１９】
内部バス３０は、マイクロコンピュータ１内において、ＣＰＵコア１０、ＵＳＢホストコントローラ２０、及びメモリ部４０間で情報をやり取りする伝送路である。バス接続３１、３２は、内部バス３０とＣＰＵコア１０とＵＳＢホストコントローラ２０（バスマスタ）とを接続する。バス接続３３、３４は、内部バスとメモリ部４０（バススレーブ）とを接続し、バス接続３３は、アドレスを接続し、バス接続３４はデータを接続する。
【００２０】
メモリ部４０は、マイクロコンピュータ１内で使用する情報を記憶する機能を備える構成要素である。図２では、メモリ部４０は、物理メモリ４１（メモリ）、判定部５０、アドレス変換部６０、及びデータ変換部７０を備える。
【００２１】
物理メモリ４１は、情報を記憶する記憶領域である。物理メモリ４１は、ここでは１６ビットのアドレスで指定することを前提とする。
【００２２】
判定部５０は、内部バス３０から入力されたアドレスがディスクリプタ（管理情報）であるか否かを判定する。判定部５０は、判定した結果をアドレス変換部６０、データ変換部７０へ通知する。判定部５０は、判別アドレス設定レジスタ５１、判別部（ＥＤ／ＴＤ判別部）５２、及び変換イネーブルレジスタ５３を備える。
【００２３】
判別アドレス設定レジスタ５１は、ディスクリプタ（ここではＥＤとＴＤ）に関するアクセスであることを判別する判別アドレス（ＴＤ判別アドレス、ＥＤ判別アドレス）を設定する。判別部５２は、判別アドレスと、アドレス情報の一部分とを比較してディスクリプタに関するアクセスであることを判別する。判別アドレス設定レジスタ５１、判別部５２については、後述する。
変換イネーブルレジスタ５３は、物理メモリ４１に格納するディスクリプタを第一形式から第二形式に並び替える処理を実施することを停止させるフラグである。
【００２４】
アドレス変換部６０は、判定部５０（具体的には判別部５２）が判定した結果に基づいて、内部バス３０から入力されるアドレス情報を物理メモリ４１へ格納する物理アドレスへ変換する。判定部５０が、入力されたアドレス情報がディスクリプタのアドレス情報であると判断した場合にアドレスを変換する。この動作については後述する。
【００２５】
データ変換部７０は、判定部５０が判定した結果に基づいて、ディスクリプタのデータを第一形式から第二形式へ並び替える。データ変換部７０は、第二形式へ並び替えたディスクリプタを、アドレス変換部６０が変換したアドレスの物理メモリ４１へ格納する。あるいは、データ変換部７０は、第二形式で読み出したディスクリプタを、第一形式へ並べ替える。データ変換部７０の動作についても詳細は後述する。
【００２６】
続いて、マイクロコンピュータ１がディスクリプタをライトあるいはリードする場合の動作を説明する。図６は、データ書き込み手順の一例を示すフローチャートである。図７は、データ読み出し手順の一例を示すフローチャートである。
【００２７】
まず、ＵＳＢデバイスがＵＳＢコネクタ４に接続された場合に、マイクロコンピュータ１内で生じる動作を説明する。ＵＳＢコネクタ４にＵＳＢデバイスが接続されると、ＣＰＵコア１０は、接続されたＵＳＢデバイスに関するディスクリプタ（ＥＤなど）を生成する。ＣＰＵコア１０は、生成したＥＤを、ＵＳＢホストコントローラ２０に通知し、ＵＳＢホストコントローラ２０が管理する。ＵＳＢデバイスへのアクセスが要求されるとＥＤに基づいてＴＤが生成される。これらの詳細な説明は省略するが、これ以降、ＣＰＵコア１０及びＵＳＢホストコントローラ２０は、作成されたディスクリプタ（ＥＤ、ＴＤなど）に基づいてＵＳＢデバイスとのアクセスを行う。以降の説明では、ディスクリプタとして、ＥＤ、ＴＤに関する情報の削減を行う具体例を説明する。
【００２８】
まず、図６を用いて物理メモリ４１へデータを書き込む動作を説明する。始めにＥＤ、ＴＤを書き込む動作を説明し、後でその他のデータを書き込む動作を説明する。ＥＤ、ＴＤを書き込みは、例えば、ＣＰＵコア１０がディスクリプタ生成のプログラムを読み込みを実行し始める場合である。ＣＰＵコア１０は、バスマスタとして、バス接続３１と内部バス３０を通してアドレスをバス接続３３、データをバス接続３４へ転送する。
【００２９】
メモリ部４０は、内部バス３０とバス接続３３を介して、アドレス情報を入力する（Ｓ１１）。データは、バス接続３４を介してデータ変換部７０へ入力される。アドレス情報は、判定部５０（判別部５２）とアドレス変換部６０へ入力される。判別部５２は、入力されたアドレス情報を判定する（Ｓ１２）。具体的な動作を図８を用いて説明する。図８は、判定部の動作の一例を示す説明図である。図８の右側に、内部バス３０から入力されるアドレス情報の一例を示す。ここでは、アドレス情報は３２ビットであるものとする。
【００３０】
物理メモリ４１は、１６ビットのアドレスを用いて指定できる。このため、ＣＰＵ１０コアは、ディスクリプタを格納するアドレスについて、下位１６ビットと上位１６ビットへ次のようなアドレスを設定する。ＣＰＵコア１０は、下位１６ビットへ、物理メモリ４１の領域を指定するアドレスであるが、第一形式に沿って配置されたディスクリプタを想定して指定したアドレスを設定する。また、ＣＰＵ１０コアは、上位１６ビットへ、アドレスの特性を示すアドレス（具体的にはＴＤ判別アドレス、ＥＤ判別アドレスなど）を設定する。このため、下位１６ビットに設定されたアドレスは、物理メモリ４１の領域を直接指定する実アドレスとは異なる。以降の説明では、アドレス情報内に含まれる、物理メモリ４１の領域を間接的に指定するアドレス、すなわち、第一形式に従って設定されたアドレスを第一アドレスとする。第一アドレスは、図８の下位１６ビットの部分が相当する。また、アドレス変換部６０が第一アドレスを変換したアドレス、すなわち、第一アドレスに基づいて第二形式に従って設定するアドレスを第二アドレスとする。第二アドレスは、物理メモリ４１の領域を特定する実アドレス（物理アドレス）である。
【００３１】
このように、ＣＰＵコア１０は、ＴＤ領域、ＥＤ領域、及びその他領域を区別して、アドレス情報を生成する。図８の例では、上位１６ビットによって、下位１６ビットのアドレスが、ＴＤ、ＥＤ、及びその他のデータのどれを格納する領域を指定しているかを特定できるようにしている。このようなアドレスがＣＰＵコア１０によって生成されていることに基づいて、判定部５０は入力されたアドレス情報が、ＴＤ、ＥＤ、及びその他のデータのいずれかを判断する。具体的には、次のように行う。
【００３２】
判別アドレス設定レジスタ５１は、ＴＤであることを判別するＴＤ判別アドレス（１６ビット）と、ＥＤ判別アドレスとをレジスタに保持する。図８の例では、ＴＤ判別アドレスは、０ｘ０００２であり、ＥＤ判別アドレスは、０ｘ０００１である。判別部５２は、入力されたアドレス情報の上位１６ビットと、判別アドレス設定レジスタ５１に保持されるＴＤ判別アドレス及びＥＤ判別アドレスとを比較し、ＴＤまたはＥＤである場合を判別する。
【００３３】
図８に示すように、判別部５２は、アドレス情報に含まれるアドレス［３１：０］のうちのアドレス［３１：１５］の上位１６ビットの部分と、判別アドレス設定レジスタ５１に保持したアドレスとを比較器５２１、５２２によって比較する。判別部５２は、アドレス情報の上位１６ビットがＴＤ判別アドレスと一致した場合には、ＴＤアクセス判定（ＴＤへのアクセスを示す判定）とする。また、判別部５２は、アドレス情報の上位１６ビットがＥＤ判別アドレスと一致した場合には、ＥＤアクセス判定（ＥＤへのアクセスを示す判定）とする。判別部５２は、判別した結果を、アドレス変換部６０へ通知する。具体的には、判別部５２は、アドレス情報がＥＤ、ＴＤ、及びその他のどの領域をアクセス（ここではデータの格納）するかを通知する。
【００３４】
アドレス変換部６０は、入力されたアドレス情報がＥＤ、ＴＤの領域へのアクセスを指定する場合（Ｓ１２でＹｅｓ）、アドレス変換処理を行う（Ｓ１３）。アドレス変換部６０がアドレス情報からアドレス変換処理を行う動作（Ｓ１３）について、図９を用いて説明する。
【００３５】
図９は、アドレス変換部の内部構成の一例を示す図である。アドレス変換部６０は、入力したアドレス情報のうち、第一アドレスの部分（図８では、下位１６ビット）を用いて、第二アドレス（実アドレス）を算出する。また、第一アドレスの５ビット目が、０か１か（奇数か偶数か）によって、第一形式に含まれるアドレス情報をＬＳＢ（Least Significant Bit）側（０−１５ビット）に配置するか、ＭＳＢ（Most Significant Bit）側（１６−３１ビット）に配置するかが決定されることに着目して判断する。
【００３６】
アドレス算出部６１は、第一アドレスの５ビット目から１６ビット目までを用いてＤｗｏｒｄアドレスを算出する。Ｌ位置算出部６２は、第一アドレスの１ビット目から４ビット目までを用いてＬＳＢ側にアドレス情報が配置される場合のＬ位置オフセットを算出する。Ｍ位置算出部６３は、第一アドレスの１ビット目から４ビット目までを用いてＭＳＢ側にアドレス情報が配置される場合のＭ位置オフセットを算出する。判定フラグ６４は、第一アドレスの５ビット目を用いて、入力されたアドレス情報のディスクリプタがＬＳＢ側とＭＳＢ側のどちらに配置されるかを判定するフラグである。これは、第一アドレスの５ビット目の値が、ＬＳＢ側とＭＳＢ側との区別と一致することから用いられる。マルチプレクサ（ＭＵＸ）６５は、判定フラグ６４に基づいて、Ｌ位置オフセットとＭ位置オフセットのいずれかを選択する。選択されたオフセットは、アドレス算出部６１で算出されたＤｗｏｒｄ０のアドレスへ付加されて実アドレスが出力される。
【００３７】
図１０は、第一形式に従って設定された第一アドレスと第二形式に従って設定された第二アドレスとの対応を示す図である。図９の構成に基づいて第一アドレス（第一形式のＤｗｏｒｄ０のアドレス）から第二アドレスのＤｗｏｒｄ０からＤｗｏｒｄ３までのアドレスを算出した一例を示した。図１０の第二アドレスは、第一アドレスに基づいて算出できる。例えば、Ｄｗｏｒｄ０の第二アドレスは、
Ｄｗｏｒｄ０＝第一アドレス−ＩＮＴ（第一アドレス／３２）＊３＊４・・・（式１）
により算出することができる。ＩＮＴは、第一アドレスの値を３２で除算した値を整数値に切り捨て処理した値である。乗算する値３は、削減するアドレス情報の数であり、乗算する値４は、削減するアドレス情報の情報量である。また、Ｄｗｏｒｄ１から３の第二アドレスは、算出したＤｗｏｒｄ０の第二アドレスに基づいて算出できる。ＬＳＢ側かＭＳＢ側かで次のように計算できる。図１０のＬ／Ｍ判定の欄が"Ｌ"となっているものがＬＳＢ側、"Ｍ"となっているものがＭＳＢ側である。
【００３８】
ＬＳＢ側の場合
Ｄｗｏｒｄ１＝Ｄｗｏｒｄ０＋１＊４・・・（式２）
Ｄｗｏｒｄ２＝Ｄｗｏｒｄ０＋２＊４・・・（式３）
Ｄｗｏｒｄ２＝Ｄｗｏｒｄ０＋３＊４・・・（式４）
ＭＳＢ側の場合
Ｄｗｏｒｄ１＝Ｄｗｏｒｄ０−３＊４＋２・・・（式５）
Ｄｗｏｒｄ２＝Ｄｗｏｒｄ０−２＊４＋２・・・（式６）
Ｄｗｏｒｄ２＝Ｄｗｏｒｄ０−１＊４＋２・・・（式７）
【００３９】
このようにして、アドレス情報の第一アドレスから第二アドレスを算出することが可能になる。算出された第二アドレスは、データ変換部７０と物理メモリ４１との間で使用されるものであり、その他で用いられることはない。
【００４０】
アドレス変換部６０は、アドレス変換した第二アドレスまたは抽出した実アドレスを物理メモリ４１へ出力する。また、アドレス変換部６０は、変換した第二アドレスに基づいて、データを変換する変換方式情報をデータ変換部７０へ通知する。データ変換部７０は、データ変換方式として、ＥＤ、ＴＤのいずれかを示すフラグ（ＥＤフラグ、ＴＤフラグ）と、アドレス情報を格納する格納位置（ＬＳＢ側か、ＭＳＢ側か）を含む情報を生成する。
【００４１】
次に、データ変換部７０は、データ変換処理（Ｓ１４）を行う。データ変換部７０は、図２または図３に示した、第一形式で配置されたＥＤまたはＴＤのディスクリプタを入力する。また、アドレス変換部６０から変換方式情報が通知される。データ変換部７０は、ディスクリプタを、変換方式情報に基づいて第二形式に並べ替える。このとき、データ変換部７０は、第一形式で配置されたディスクリプタに含まれるアドレス情報のうち、第一アドレス（物理メモリ４１を間接的に指定するアドレス）以外の部分を削減する。図１１及び図１２に示す具体的な構成を用いて、データ変換処理を説明する。
【００４２】
図１１は、第一形式から第二形式のフォーマットに変換する状況を示す図である。図１１では、左側に二つのＥＤを第一形式に配置したデータを示し、右側に二つのＥＤを第二形式に並べ替えた状態を示している。図１１、１２（以降に説明する図１３、１４）では、変換方式情報に含まれる格納位置を、Ｄｗｏｒｄのオフセット位置と対応づけて説明する。ＣＰＵコア１０が設定したアドレスの下位１６ビットがＤｗｏｒｄオフセット０から３の場合、３２ビットから１６ビットに削減されるアドレスデータの格納場所は、ＬＳＢ側に寄せ、Ｄｗｏｒｄオフセット４から７の場合、アドレスデータの格納場所は、ＭＳＢ側に寄せられる。ＭＳＢ側に寄せられたデータは、データ変換部６０によって、Ｄｗｏｒｄオフセット１から３においてアドレスデータを削減して空いた位置に格納される。
【００４３】
データ変換部７０は、Ｄｗｏｒｄオフセット０または４のデータについては、データを欠損させずそのままとする。Ｄｗｏｒｄオフセット１から３のデータについては、上位１６ビットのデータを削除し、下位１６ビットのみにする。Ｄｗｏｒｄオフセット５から７のデータについては、上位１６ビットのデータを削除し、下位１６ビットをＭＳＢ側にシフトする。図１１右側に、二つのＥＤをデータ変換した結果を示している。
【００４４】
データ変換部７０は、変換したデータを物理メモリ４１へ書き込む（Ｓ１５）図１２に物理メモリ４１に書き込んだ第二形式に配置したＴＤの状態を示している。右側に第一形式で配置したＴＤを示し、対応するブロックを太枠で囲み矢印で対応を付けている。図１２に示すように、アドレス変換部６０で変換されたアドレスによって格納位置がＬＳＢ側とＭＳＢ側に分けられる。ここでは、Ｄｗｏｒｄオフセット０から７を用いて説明したが、図１０の第二アドレスは、次のように対応付けられる。図１０において、ＬＳＢ側となっている第二アドレスは、Ｄｗｏｒｄオフセット０から３、ＭＳＢ側となっている第二アドレスは、Ｄｗｏｒｄオフセット４から７と同様にデータ変換される。
【００４５】
次に、その他のデータを書き込む場合を説明する。これは、ＣＰＵ１０がストア命令を読み込み実行し始める場合などである。ＣＰＵ１０コア１０は、バス接続３１と内部バス３０を通して、アドレス情報をバス接続３３へ、データをバス接続３４へ転送する。ステップＳ１１の動作は上記と同様である。メモリ部４０では、アドレス変換部６０は、その他の領域をアクセスする場合（Ｓ１２でＮｏ）、３２ビットのアドレス情報から下位１６ビットの実アドレス（物理アドレス）を抽出して物理メモリ４１へ出力する（Ｓ１６）。また、データ変換部７０は、入力されたデータをそのまま物理メモリへ書き込む（Ｓ１５）。
【００４６】
以上のような手順により、ＣＰＵコア１０あるいはＵＳＢホストコントローラ２０からリクエストされたデータが物理メモリ４１へ書き込まれる。
【００４７】
次に、物理メモリ４１からデータを読み込む場合の動作について図７を用いて説明する。始めに、ＥＤ、ＴＤを読み出す動作を説明し、後でその他のデータを読み出す場合を説明する。ＥＤ、ＴＤを読み出す動作は、例えば、ＵＳＢホストコントローラ２０がＥＤ、ＴＤにリードリクエストを発行する場合である。ＵＳＢホストコントローラ２０は、アドレス情報の上位ビットがＥＤ、ＴＤを示す領域に対してバスマスタとして、バス接続３２と内部バス３０を通してリードリクエストを発行し、アドレス情報をバス接続３３へ伝達する。
【００４８】
メモリ部４０は、内部バス３０を介して、アドレス情報を入力する（Ｓ２１）。アドレス情報は、判定部５０（判別部５２）とアドレス変換部６０へ入力される。判別部５２は、入力されたアドレス情報を判定する（Ｓ２２）。具体的な動作は、書き込み時の動作と同様である。判別部５２は、判別した結果を、アドレス変換部６０へ通知する。
【００４９】
アドレス変換部６０は、入力されたアドレス情報がＥＤ、ＴＤの領域へのアクセスを指定する場合（Ｓ２２でＹｅｓ）、アドレス変換処理を行い（Ｓ２３）、アドレス情報に基づいて変換した実アドレスを物理メモリ４１へ出力する。アドレス変換部６０がアドレス情報からアドレス変換処理を行う動作は、書き込み時と同様である。また、アドレス変換部６０は、変換方式情報を作成し、データ変換部７０へ通知する。変換方式情報は、書き込み時と同様に、ＥＤ、ＴＤのいずれかを示すフラグ（ＥＤフラグ、ＴＤフラグ）と、アドレス情報を格納する格納位置（ＬＳＢ側か、ＭＳＢ側か）を含む。ここでも、格納位置は、Ｄｗｏｒｄオフセットを用いるものとする。
【００５０】
次に、データ変換部７０は、物理メモリ４１の実アドレスに格納されているデータを読み出し（Ｓ２４）、読み出したデータを変換する（Ｓ２５）。データ変換部７０は、第二形式で配置されたＥＤまたはＴＤのディスクリプタを入力する。また、アドレス変換部６０から変換方式情報が通知される。データ変換部７０は、ディスクリプタを、変換方式情報に基づいて第一形式に並べ替える。図１３、１４に示す具体的な構成を用いて、データ変換処理を説明する。図１３は、ＥＤを第二形式から第一形式のフォーマットに変換する状況を示す図である。また、図１４は、ＴＤを第二形式から第一形式のフォーマットに格納するデータの具体例を示す図である。図１３及び図１４ともに、図面の右側が物理メモリ４１から読み出した状態のディスクリプタを示し、左側にディスクリプタを第一形式に並べ替えた状態を示している。
【００５１】
データ変換部７０は、ＥＤフラグ、ＴＤフラグ、格納位置を示す変換方式情報に基づいて、読み出したデータを並べ替える。データ変換部７０のアドレス変換処理で変換された実アドレスを用いて読み出すデータは、格納位置に依存して図１３及び図１４の右側の状態になる。ＥＤを読み出す場合、データ変換部７０は、Ｄｗｏｒｄオフセットの位置に応じて次の（１）から（５）のいずれかの処理を行って各Ｄｗｏｒｄのデータを第一形式に並べ替える。なお、ＥＤ判別アドレス及びＴＤ判別アドレスは、判別アドレス設定レジスタ５１が保持するアドレスである。
【００５２】
（１）Ｄｗｏｒｄオフセット１または４のデータは、読み出したデータ（３２ビット）をそのままバス接続３４を介して内部バス３０へ出力する。
（２）Ｄｗｏｒｄオフセット１または２のデータは、読み出したデータ（１６ビットの第一アドレス）が下位１６ビット（ＬＳＢ側）に配置されているため、ＴＤ判別アドレスを上位１６ビットの位置へ補完する。
（３）Ｄｗｏｒｄオフセット３のデータは、読み出したデータ（１６ビットの第一アドレス）が下位１６ビットに配置されているため、ＥＤ判別アドレスを上位１６ビットへ補完する。
（４）Ｄｗｏｒｄオフセット５または６のデータは、読み出したデータ（１６ビットの第一アドレス）をＭＳＢ側からＬＳＢ側へシフトし、ＴＤ判別アドレスを上位１６ビットの位置へ保管する。
（５）Ｄｗｏｒｄオフセット７のデータは、読み出したデータ（１６ビットの第一アドレス）をＭＳＢ側からＬＳＢ側へシフトし、ＥＤ判別アドレスを上位１６ビットの位置へ保管する。
【００５３】
また、ＴＤを読み出す場合、データ変換部７０は、Ｄｗｏｒｄ１、３、５、７について、アドレスの補完を行わない（初期値０が設定されたままになる）点が異なるが、その他の動作は同様である。上記のように変換した結果は、図１３及び図１４の左側に示されている。
【００５４】
次に、その他のデータを読み出す場合を説明する。これは、例えば、ＵＳＢホストコントローラ２０がその他のデータへリードリクエストを発行する場合である。ＵＳＢホストコントローラ２０は、バスマスタとして、バス接続３２、内部バス３０を通してリードリクエストを発行し、アドレスをバス接続３３へ伝達する。ステップＳ２１は上記と同様である。判別部５２から通知された判別結果がその他の領域をアクセスすることを示す場合（Ｓ２２でＮｏ）、アドレス変換部６０は、３２ビットのアドレス情報から下位１６ビットの実アドレス（物理アドレス）を抽出して物理メモリ４１へ出力する（Ｓ２６）。データ変換部７０は、物理メモリ４１の実アドレスに格納されているデータを読み出し、読み出したデータをそのまま内部バス３０へ出力する（Ｓ２７）。
【００５５】
以上のような手順により読み出したデータが内部バス３０へ出力され、ＵＳＢホストコントローラ２０は、内部バス３０とバス接続３２を通して必要なデータを取得する。
【００５６】
なお、上記実施形態では、ディスクリプタとしてＥＤ、ＴＤ対象として説明したが、これ以外のディスクリプタであっても、第二形式に配置できるディスクリプタであれば、本発明の対象とすることが可能である。また、上記実施形態では、アドレス情報は３２ビット、物理メモリ４１のアドレスは、１６ビットで表される場合を用いて説明したがこれに限られるわけではない。物理メモリを表すアドレスが１６ビットより小さい場合であっても本実施形態を適用することは可能である。
【００５７】
また、変換イネーブルレジスタが変換停止を示している場合は、次のような動作になる。判別部５２は、判別結果としてＥＤ、ＴＤの領域ではなく、その他の領域へアクセスするという判別結果をアドレス変換部６０へ出力する。アドレス変換部６０及びデータ変換部７０は、ＥＤ、ＴＤの領域であっても、その他の領域へのアクセスと同様の動作をディスクリプタの配置を変換する。データ変換部７０は、第一形式で配置されたディスクリプタを物理メモリ４１へ格納し、物理メモリ４１から読み出したデータをそのまま内部バス３０へ出力する。例えば、接続するＵＳＢデバイスが少なく、物理メモリ４１の情報量で充分まかなえる場合は、ディスクリプタの情報量を削減する必要がない場合などに用いる。
さらに、図５では、判定部５０は、変換イネーブルレジスタ５３を備えている場合を示しているが、これがないマイクロコンピュータ１の構成であってもよい。
【００５８】
以上のように、本発明に係る好適な実施形態によれば、アドレス変換部６０が物理メモリ４１へアクセスするときにアドレス変換処理を実施することにより、ディスクリプタを格納するメモリ領域を削減することができる。これは、データ転送を制御するマイクロコンピュータにおいて、データの複雑な圧縮・伸張処理を行うことなく、データ転送に必要なディスクリプタ領域を削減することが可能となる。これにより、データ転送を制御するマイクロコンピュータの小型化が図れる。
また、第一形式から第二形式へディスクリプタを並べ替える処理は、計算により可能であり煩雑な処理を必要としない。このため、処理負荷が大きく増えることはない。さらに、データ自体の圧縮・伸張処理を必要としないため、データ自体を処理することによる誤りの発生を防止することができる。このように、処理負荷の増加を抑えつつ、ディスクリプタ領域を削減することができる。
さらに、マイクロコンピュータ１内でディスクリプタの配置を並び替え、メモリ部４０の外部とのアクセスはＯＨＣＩの規格に基づいた形式で行うため、ＣＰＵコア１０やＵＳＢホストコンピュータ２０へ影響することがない。このため従来から用いているデバイスを利用することが可能である。
【００５９】
また、本発明は、ＯＨＣＩ準拠ＵＳＢ  １．１／２．０（２．０はコンパニオンとして備える）ホストコントローラを備える組み込み用マイコンのように、パーソナルコンピュータと比較してシステムが備えるメモリが小さいマイクロコンピュータに適している。
【００６０】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【図面の簡単な説明】
【００６１】
【図１】本発明に係るマイクロコンピュータを搭載するシステムの構成例を示す概略図である。
【図２】ＯＨＣＩで定義されたＵＳＢのエンドポイント・ディスクリプタの構成を示す図である。
【図３】ＯＨＣＩで定義されたＵＳＢのジュネラル・トランスファー・ディスクリプタの構成を示す図である。
【図４】本発明に係るマイクロコンピュータ内の物理メモリに格納するディスクリプタの配置例を示す図である。
【図５】本発明に係るマイクロコンピュータの構成例を示すブロック図である。
【図６】データ書き込み手順の一例を示すフローチャートである。
【図７】データ読み出し手順の一例を示すフローチャートである。
【図８】判定部の動作の一例を示す説明図である。
【図９】アドレス変換部の内部構成の一例を示す図である。
【図１０】第一アドレスと第二アドレスとの対応を示すテーブルである。
【図１１】第一形式から第二形式のフォーマットに変換する状況を示す図である。
【図１２】第一形式から第二形式のフォーマットに格納したデータの構成例を示す図である。
【図１３】エンドポイント・ディスクリプタを第二形式から第一形式のフォーマットに変換する状況を示す図である。
【図１４】トランスファー・ディスクリプタを第二形式から第一形式のフォーマットに格納するデータの具体例を示す図である。
【符号の説明】
【００６２】
１  マイクロコンピュータ
２  プレイヤー
３  オーディオシステム
４  ＵＳＢコネクタ
５  携帯型音楽プレイヤー
１０  ＣＰＵコア
２０  ＵＳＢホストコントローラ
３０  内部バス
３１〜３４  バス接続
４０  メモリ部
４１  物理メモリ
５１  判別アドレス設定レジスタ
５２  判別部
５３  変換イネーブルレジスタ
６０  アドレス変換部
６１  アドレス算出部
６２  Ｌ位置算出部
６３  Ｍ位置算出部
６４  判定フラグ
６５  マルチプレクサ
７０  データ変換部
５２１、５２２  比較器
【図１】
2008242883.tif 000003
【図２】
2008242883.tif 000004
【図３】
2008242883.tif 000005
【図４】
2008242883.tif 000006
【図５】
2008242883.tif 000007
【図６】
2008242883.tif 000008
【図７】
2008242883.tif 000009
【図８】
2008242883.tif 000010
【図９】
2008242883.tif 000011
【図１０】
2008242883.tif 000012
【図１１】
2008242883.tif 000013
【図１２】
2008242883.tif 000014
【図１３】
2008242883.tif 000015
【図１４】
2008242883.tif 000016