JP2008282128A - 外部に接続される電子機器の動作を制御するインタフェースコントローラ - Google Patents
外部に接続される電子機器の動作を制御するインタフェースコントローラ Download PDFInfo
- Publication number
- JP2008282128A JP2008282128A JP2007124309A JP2007124309A JP2008282128A JP 2008282128 A JP2008282128 A JP 2008282128A JP 2007124309 A JP2007124309 A JP 2007124309A JP 2007124309 A JP2007124309 A JP 2007124309A JP 2008282128 A JP2008282128 A JP 2008282128A
- Authority
- JP
- Japan
- Prior art keywords
- data
- clock
- unit
- side buffer
- fifo
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
【課題】インタフェースコントローラにおいて、ホスト装置内クロックと転送クロックとの周波数差を吸収する。
【解決手段】ブリッジ部は、データ送受部から第2のクロックに基づいて送信されたデータを第2のクロックに基づいて受信し、受信したデータを第1のクロックに基づいてデータ転送部に送信する。ブリッジ部は、データ転送部から第1のクロックに基づいて送信されたデータを第1のクロックに基づいて受信し、受信したデータを第2のクロックに基づいてデータ送受部へ送信する。
【選択図】図1
【解決手段】ブリッジ部は、データ送受部から第2のクロックに基づいて送信されたデータを第2のクロックに基づいて受信し、受信したデータを第1のクロックに基づいてデータ転送部に送信する。ブリッジ部は、データ転送部から第1のクロックに基づいて送信されたデータを第1のクロックに基づいて受信し、受信したデータを第2のクロックに基づいてデータ送受部へ送信する。
【選択図】図1
Description
本発明は、例えば、MMC(MutiMedia Card)、SD(Secure Digital)カード等のメモリカードや、SDカードのインタフェース仕様をベースとするSDI/Oに準拠したカード型のI/O機器(以下、「SDI/Oカード」と呼ぶ。)、MMCのインタフェース仕様をベースとするCE−ATAに準拠したHDDなどのドライブ装置(以下、「CE−ATAドライブ装置」と呼ぶ。)等の電子機器(以下、便宜上「外部機器」と呼ぶ。)に転送クロックを出力し、転送クロックを基準として規定される特定のインタフェースの仕様に従って、外部機器との間のデータ転送を制御するインタフェースコントローラ、特に、インタフェースコントローラを備える電子機器(以下、便宜上「ホスト装置」とも呼ぶ。)内の他のブロックとの間でデータを送受する速度と、外部機器との間でデータを送受する速度との差を吸収する技術に関する。
MMCやSDカードやなどの外部機器であるメモリカードは、通常、メモリカードへのアクセスを実行するホスト装置に備えられるインタフェースコントローラによって、それぞれのインタフェース仕様に従ってアクセスが制御され、データのリード/ライトが実行される。
SDカードやMMC等のメモリカードのインタフェース仕様において、コマンドラインを介するデータ(以下、「コマンドラインデータ」とも呼ぶ。)の送受やデータラインを介するデータ(以下、「データラインデータ」とも呼ぶ。)の送受は、インタフェースコントローラからメモリカードへ供給される転送クロックに基づいて実行される。また、SDI/OやCE−ATA等のインタフェース仕様においても、同様である。
上記のように、インタフェースコントローラは、これに接続される電子機器に対して、その動作の基準となる転送クロックを供給し、その動作を制御する。
ところで、インタフェースコントローラと外部機器との間のデータの送受、すなわちデータ転送速度の高速化のためには、転送クロックの周波数を、その外部機器が採用するインタフェースの仕様における最大周波数(例えば、SDカードの高速モードの場合は50MHzである。)とすることが好ましい。
一方、ホスト装置内の他のブロックから送信された外部機器へ送信するためのデータ(以下、「送信対象データ」とも呼ぶ。)のインタフェースコントローラにおける受信は、そのブロックで利用されるクロック(以下、説明の便宜上「ホスト装置内クロック」とも呼ぶ。)に基づいて実行される。また、インタフェースコントローラで受信した外部機器からのデータ(以下、「受信データ」とも呼ぶ。)のそのブロックへの送信も同様である。
ここで、上記ブロックとインタフェースコントローラとの間のデータの送受の基準となるホスト装置内クロックの周波数の転送クロックの周波数に対する比(周波数比)が整数、特に、2のべき乗で表される整数であるならば、インタフェースコントローラ内において新たな工夫を要することなく、ホスト装置内クロックに基づくデータの送受に同期して、転送クロックに基づくデータの送受を実行することができる。
しかしながら、例えば、ホスト装置内の他のブロックとして、USBコントローラのFIFOバッファを想定すると、ホスト装置内クロックとして、周波数が例えば60MHzのクロックの利用が想定される場合(USBの仕様がUSB2.0の場合)がある。
ホスト装置内クロックの周波数が60MHzで転送クロックの周波数が50MHzの場合、周波数比は整数とはならないため、ホスト装置内クロックに基づくデータの送受と、転送クロックに基づくデータの送受とは非同期となってしまう。
例えば、転送クロックの周波数を30MHzとして周波数比を整数(60/30=2)とすれば、非同期の問題は解決することができるが、外部機器との間のデータ送受の速度を最大にすることができないことになる。
従って、外部機器との間のデータ送受の速度を最大とするためには、ホスト装置内クロックと転送クロックとの周波数差を吸収して、インタフェースコントローラの外部からホスト装置内クロックに基づいて受信したデータを転送クロックに基づいて外部機器へ送信し、また、転送クロックに基づいて外部機器から受信したデータをホスト装置内クロックに基づいてインタフェースコントローラの外部へ送信可能としなければならない、という問題が発生する。
本発明は、上記した課題を解決するためになされたものであり、ホスト装置に備えられ、MMC、SDカード、SDI/Oカード、CE−ATAドライブ装置等の外部機器に転送クロックを出力し、転送クロックを基準として規定される特定のインタフェースの仕様に従って、ホスト装置と外部機器との間のデータ転送を制御するインタフェースコントローラにおいて、ホスト装置内クロックと転送クロックとの周波数差を吸収して、ホスト装置内クロックに基づいてインタフェースコントローラの外部から受信したデータを転送クロックに基づいて外部機器へ送信し、また、転送クロックに基づいて外部機器から受信したデータをホスト装置内クロックに基づいてインタフェースコントローラの外部へ送信可能とする技術を提供することを目的とする。
上記課題の少なくとも一部を解決するため、本発明は、次のようなインタフェースコントローラの態様とすることができる。すなわち、
ホスト装置に備えられ、前記ホスト装置の外部に接続される外部機器に第1のクロックを出力し、前記第1のクロックを基準として規定される特定のインタフェースの仕様に従って、前記ホスト装置と前記外部機器との間のデータ転送を制御するインタフェースコントローラであって、
前記第1のクロックに基づいて動作するデータ転送部と、
前記第1のクロックとは異なる周波数の第2のクロックに基づいて動作するデータ送受部と、
前記データ送受部と前記データ転送部との間に設けられ、前記第1のクロックおよび前記第2のクロックに基づいて動作するブリッジ部と、
を備え、
前記第1のクロックと前記第2のクロックとは、周波数が高い方のクロックの周波数が、周波数が低い方のクロックの周波数の整数倍とはならない関係を有しており、
前記データ送受部が、前記外部機器へ送信すべきデータを、前記第2のクロックに基づいて前記インタフェースコントローラの外部から受信した場合において、
前記データ送受部は、前記インフェースコントローラの外部から受信したデータを、前記第2のクロックに基づいて前記ブリッジ部へ送信し、
前記ブリッジ部は、前記データ送受部から送信されたデータを前記第2のクロックに基づいて受信し、受信したデータを前記第1のクロックに基づいて前記データ転送部に送信し、
前記データ転送部は、前記ブリッジ部から送信されたデータを前記第1のクロックに基づいて受信し、受信したデータを前記第1のクロックに基づいて前記外部機器へ送信し、
前記データ転送部が、前記外部機器から送信されたデータを、前記第1のクロックに基づいて受信した場合において、
前記データ転送部は、外部機器から受信したデータを前記第1のクロックに基づいて前記ブリッジ部へ送信し、
前記ブリッジ部は、前記データ転送部から送信されたデータを前記第1のクロックに基づいて受信し、受信したデータを前記第2のクロックに基づいて前記データ送受部へ送信し、
前記データ送受部は、前記ブリッジ部から送信されたデータを前記第2のクロックに基づいて受信し、受信したデータを前記第2のクロックに基づいて前記インタフェースコントローラの外部へ送信する、
ことを特徴とする。
ホスト装置に備えられ、前記ホスト装置の外部に接続される外部機器に第1のクロックを出力し、前記第1のクロックを基準として規定される特定のインタフェースの仕様に従って、前記ホスト装置と前記外部機器との間のデータ転送を制御するインタフェースコントローラであって、
前記第1のクロックに基づいて動作するデータ転送部と、
前記第1のクロックとは異なる周波数の第2のクロックに基づいて動作するデータ送受部と、
前記データ送受部と前記データ転送部との間に設けられ、前記第1のクロックおよび前記第2のクロックに基づいて動作するブリッジ部と、
を備え、
前記第1のクロックと前記第2のクロックとは、周波数が高い方のクロックの周波数が、周波数が低い方のクロックの周波数の整数倍とはならない関係を有しており、
前記データ送受部が、前記外部機器へ送信すべきデータを、前記第2のクロックに基づいて前記インタフェースコントローラの外部から受信した場合において、
前記データ送受部は、前記インフェースコントローラの外部から受信したデータを、前記第2のクロックに基づいて前記ブリッジ部へ送信し、
前記ブリッジ部は、前記データ送受部から送信されたデータを前記第2のクロックに基づいて受信し、受信したデータを前記第1のクロックに基づいて前記データ転送部に送信し、
前記データ転送部は、前記ブリッジ部から送信されたデータを前記第1のクロックに基づいて受信し、受信したデータを前記第1のクロックに基づいて前記外部機器へ送信し、
前記データ転送部が、前記外部機器から送信されたデータを、前記第1のクロックに基づいて受信した場合において、
前記データ転送部は、外部機器から受信したデータを前記第1のクロックに基づいて前記ブリッジ部へ送信し、
前記ブリッジ部は、前記データ転送部から送信されたデータを前記第1のクロックに基づいて受信し、受信したデータを前記第2のクロックに基づいて前記データ送受部へ送信し、
前記データ送受部は、前記ブリッジ部から送信されたデータを前記第2のクロックに基づいて受信し、受信したデータを前記第2のクロックに基づいて前記インタフェースコントローラの外部へ送信する、
ことを特徴とする。
上記インタフェースコントローラによれば、第1のクロックと第2のクロックとの周波数差を吸収して、第2のクロックに基づいてデータ送受部でインタフェースコントローラの外部から受信したデータを、第1のクロックに基づいてデータ転送部から外部機器へ送信し、また、第1のクロックに基づいてデータ転送部で受信した受信データを、ホスト装置内クロックに基づいてデータ送受部から送信することが可能である。
上記インタフェースコントローラにおいて、
前記ブリッジ部は、データ送受部側バッファ部およびデータ転送部側バッファ部を備えており、
前記ブリッジ部が前記データ送受部から送信されるデータを受信する場合には、
前記データ送受部側バッファ部は、前記データ送受部から前記第2のクロックに基づいて送信されるデータを受信して蓄積し、
前記データ転送部側バッファ部は、前記第1のクロックに基づいて、前記データ送受部側バッファ部に蓄積されたデータを取得して蓄積するとともに、前記データ転送部へ送信し、
前記ブリッジ部が前記データ転送部から送信されるデータを受信する場合には、
前記データ転送部側バッファ部は、前記データ転送部から前記第1のクロックに基づいて送信されるデータを受信して蓄積し、
前記データ送受部側バッファ部は、前記第2のクロックに基づいて、前記データ転送部側バッファ部に蓄積されたデータを取得して蓄積するとともに、前記データ送受部へ送信する、
構成とすることができる。
前記ブリッジ部は、データ送受部側バッファ部およびデータ転送部側バッファ部を備えており、
前記ブリッジ部が前記データ送受部から送信されるデータを受信する場合には、
前記データ送受部側バッファ部は、前記データ送受部から前記第2のクロックに基づいて送信されるデータを受信して蓄積し、
前記データ転送部側バッファ部は、前記第1のクロックに基づいて、前記データ送受部側バッファ部に蓄積されたデータを取得して蓄積するとともに、前記データ転送部へ送信し、
前記ブリッジ部が前記データ転送部から送信されるデータを受信する場合には、
前記データ転送部側バッファ部は、前記データ転送部から前記第1のクロックに基づいて送信されるデータを受信して蓄積し、
前記データ送受部側バッファ部は、前記第2のクロックに基づいて、前記データ転送部側バッファ部に蓄積されたデータを取得して蓄積するとともに、前記データ送受部へ送信する、
構成とすることができる。
上記のようにブリッジ部を構成することにより、ブリッジ部は、ブリッジ部がデータ送受部から送信されるデータを受信する場合には、データ送受部から送信されたデータを第2のクロックに基づいて受信し、受信したデータを第1のクロックに基づいて前記データ転送部に送信し、ブリッジ部がデータ転送部から送信されるデータを受信する場合には、データ転送部から送信されたデータを第1のクロックに基づいて受信し、受信したデータを第2のクロックに基づいてデータ送受部へ送信することが可能となる。
ここで、前記第2のクロックは前記第1のクロックよりも高い周波数のクロックであり、
前記ブリッジ部が前記データ転送部から送信されるデータを受信する場合には、
前記データ転送部側バッファ部は、前記第1のクロックに基づいて前記データ転送部からn(nは1以上の整数)バイト単位で送信されるデータを順次蓄積するとともに、蓄積したデータを2nバイト単位で前記データ送受部側バッファ部に出力し、
前記データ送受部側バッファ部は、前記データ転送部側バッファ部から出力されたデータを、前記第2のクロックに基づいて順次蓄積するとともに、蓄積したデータを、前記第2のクロックに基づいて、nバイト単位で前記データ送受部に送信する、
ことが好ましい。
前記ブリッジ部が前記データ転送部から送信されるデータを受信する場合には、
前記データ転送部側バッファ部は、前記第1のクロックに基づいて前記データ転送部からn(nは1以上の整数)バイト単位で送信されるデータを順次蓄積するとともに、蓄積したデータを2nバイト単位で前記データ送受部側バッファ部に出力し、
前記データ送受部側バッファ部は、前記データ転送部側バッファ部から出力されたデータを、前記第2のクロックに基づいて順次蓄積するとともに、蓄積したデータを、前記第2のクロックに基づいて、nバイト単位で前記データ送受部に送信する、
ことが好ましい。
上記のようにすれば、第2のクロックが第1のクロックよりも高い周波数のクロックで、ブリッジ部がデータ転送部から送信されるデータを受信する場合において、データ転送部から第1のクロックに基づいて送信されるデータを、データ送受部に第2のクロックに基づいて送信するブリッジ部の動作を容易に実現することが可能となる。
さらに、前記データ送受部側バッファ部は、あらかじめ定められているしきい値以上のデータが蓄積されたときに、前記データ転送部側バッファ部における前記データ転送部から送信されるデータの蓄積の停止の指示を実行し、
前記データ転送部側バッファ部は、前記停止の指示に従って前記データ転送部による前記外部機器からのデータの受信の停止を指示することにより、前記データ転送部からのデータの送信を停止させて、データの蓄積を停止する、
ことが好ましい。
前記データ転送部側バッファ部は、前記停止の指示に従って前記データ転送部による前記外部機器からのデータの受信の停止を指示することにより、前記データ転送部からのデータの送信を停止させて、データの蓄積を停止する、
ことが好ましい。
上記のようにすれば、ブリッジ部において外部機器から送信されるデータの受信が不可であるにもかかわらず、外部機器からデータの受信が実行されてしまうことを防止することが可能となる。
また、前記第2のクロックは前記第1のクロックよりも高い周波数のクロックであり、
前記ブリッジ部が前記データ送受部から送信されるデータを受信する場合には、
前記データ送受部側バッファ部は、前記第2のクロックに基づいて前記データ送受部からnバイト単位で送信されるデータを順次蓄積するとともに、蓄積したデータを4nバイト単位で前記データ転送部側バッファ部に出力し、
前記データ転送部側バッファ部は、前記データ送受部側バッファ部から出力されたデータを前記第1のクロックに基づいて蓄積するとともに、蓄積したデータを、前記第1のクロックに基づいて、nバイト単位で前記データ転送部に送信する、
ことが好ましい。
前記ブリッジ部が前記データ送受部から送信されるデータを受信する場合には、
前記データ送受部側バッファ部は、前記第2のクロックに基づいて前記データ送受部からnバイト単位で送信されるデータを順次蓄積するとともに、蓄積したデータを4nバイト単位で前記データ転送部側バッファ部に出力し、
前記データ転送部側バッファ部は、前記データ送受部側バッファ部から出力されたデータを前記第1のクロックに基づいて蓄積するとともに、蓄積したデータを、前記第1のクロックに基づいて、nバイト単位で前記データ転送部に送信する、
ことが好ましい。
上記のようにすれば、第2のクロックが第1のクロックよりも高い周波数のクロックで、ブリッジ部がデータ送受部から送信されるデータを受信する場合において、データ送受部から第2のクロックに基づいて送信されるデータを、データ転送部に第1のクロックに基づいて送信するブリッジ部の動作を容易に実現することが可能となる。
なお、本発明はインタフェースコントローラとしての態様だけでなく、インタフェースコントローラを集積化した集積化回路としての態様等、種々の態様で実現可能である。
以下、本発明の実施の形態を実施例に基づき以下の順序で説明する。
A.インタフェースコントローラの概要:
B.ライト動作時のブリッジ部の動作:
C.リード動作時のブリッジ部の動作:
D.効果:
E.変形例:
A.インタフェースコントローラの概要:
B.ライト動作時のブリッジ部の動作:
C.リード動作時のブリッジ部の動作:
D.効果:
E.変形例:
A.インタフェースコントローラの概要:
図1は、本発明の一実施例としてのインタフェースコントローラの構成を示すブロック図である。図1に示す本実施例のインタフェースコントローラとしてのSDMMCコントローラ10は、ホスト装置(不図示)に備えられ、SDMMCバスに接続されている外部機器としてのメモリカード(不図示)と、ホスト装置との間のコマンドやデータの転送を制御することにより、メモリカードのアクセス制御を実行する。SDMMCバスは、メモリカードの一例であるSDカードおよび他の一例であるMMCの両方のインタフェースに対応するバスとして共用されるバスであり、接続されるメモリカードとしては、SDカードまたはMMCカードのいずれかである。
図1は、本発明の一実施例としてのインタフェースコントローラの構成を示すブロック図である。図1に示す本実施例のインタフェースコントローラとしてのSDMMCコントローラ10は、ホスト装置(不図示)に備えられ、SDMMCバスに接続されている外部機器としてのメモリカード(不図示)と、ホスト装置との間のコマンドやデータの転送を制御することにより、メモリカードのアクセス制御を実行する。SDMMCバスは、メモリカードの一例であるSDカードおよび他の一例であるMMCの両方のインタフェースに対応するバスとして共用されるバスであり、接続されるメモリカードとしては、SDカードまたはMMCカードのいずれかである。
SDMMCコントローラ10は、SDMMCバスの1本のクロックラインを介して、転送クロックSDCLKをメモリカードに伝送する。また、SDMMCコントローラ10は、SDMMCバスの1本のコマンドラインを介して、コマンドデータやレスポンスデータをメモリカードとの間で送受する。さらにまた、SDMMCコントローラ10は、SDMMCバスの8本のデータラインを介して、リードデータやライトデータ、ステータスデータなどのデータをメモリカードとの間で送受する。ただし、メモリカードがSDカードの場合、規定されているデータラインは1ビットまたは4ビットであるので、8ビットのデータラインのうち、実際に有効なデータラインは変化する。なお、MMCの場合も、規定されているデータラインは1ビット、4ビット、8ビットのいずれかであり、同様に、8ビットのデータラインのうち、実際に有効なデータラインは変化する。
なお、以下では、コマンドラインを介して送受するコマンドデータやレスポンスデータを総称して「コマンドラインデータCMD」と呼び、コマンドラインデータを含む信号を「コマンドラインデータ信号CMD」と呼ぶ場合もある。データラインを介して送受するリードデータやライトデータ、ステータスデータなどを総称して「データラインデータDAT」と呼び、データラインデータを含む信号を「データラインデータ信号DAT」と呼ぶ場合もある。クロックラインを介して送信される転送クロックを含む信号を「転送クロック信号」と呼ぶ場合もある。
SDMMCコントローラ10は、転送コントロール部20と、転送クロック生成部30と、CPUI/F部40と、FIFOI/F部50と、ブリッジ部60と、を備える。このSDMMCコントローラ10は、1つの半導体基板上に形成された半導体集積回路である。
転送コントロール部20と転送クロック生成部30とブリッジ部60の一部とは、転送クロック生成部30で生成される転送クロックSDCLKに基づいて動作する転送クロック動作系に区分される。一方、CPUI/F部40とFIFOI/F部50とブリッジ部60の残りの部分とは、システムクロックSysClkに基づいて動作するシステムクロック動作系に区分される。システムクロックSysClkは、FIFOI/Fバスを介して接続されるホスト装置内のFIFOバッファ(不図示)の動作の基準となるクロックであり、FIFOバッファとFIFOI/F部50との間でFIFOI/Fバスを介して実行されるデータの送受の基準となるクロックである。このFIFOバッファは、例えば、USBコントローラに備えられるFIFOバッファが利用される。なお、転送クロック動作系の各ブロック内で利用される実際のクロックは、転送クロックに等価な内部クロック(後述する内部転送クロックISDCLK)やこの内部クロックに同期する種々のクロックであるが、内部クロックは転送クロックに等価であり、他のクロックも内部クロックに同期するクロックであるので、転送クロック動作系の各ブロックの動作は、転送クロックSDCLKに基づくとしても差し支えない。なお、転送クロックSDCLKが本発明の第1のクロックに相当し、システムクロックSysClkが本発明の第2のクロックに相当する。
以下の説明では、説明の便宜上、SDMMCバスに接続されているメモリカードとして高速モードに対応するSDカードを例とし、転送クロックSDCLKの周波数Fcは、SDカードのインタフェース仕様に規定されている最高値の50MHzであるとする。また、システムクロックSysClkの周波数Fsysは、USB2.0に規定されている60MHzであるとする。
CPUI/F部40は、図示しないCPUからCPUI/Fバスを介して供給されるコマンドデータ等の各種制御データを、内部に備えるレジスタに格納する。レジスタに格納された各種制御データは、転送コントロール部20に受け渡されて利用される。また、CPUI/F部40は、転送コントロール部20から受け渡されるレスポンスデータ等の各種制御データを格納し、CPUに受け渡す。
FIFOI/F部50は、図示しないFIFOバッファからFIFOI/Fバスを介して供給されるメモリカードへのライトデータを受信し、ブリッジ部60に受け渡す。また、FIFOI/F部50は、メモリカードからのリードデータをブリッジ部60から受け取り、FIFOI/Fバスを介してFIFOバッファへ送信する。このFIFOI/Fバスを介して実行されるデータの送受は、32ビット(4バイト)のデータ幅、すなわち、4バイト単位で行われる。また、FIFOI/F部50とブリッジ部60との間のデータの受け渡しは、8ビット(1バイト)のデータ幅、すなわち、1バイト単位で行われる。なお、このFIFOI/F部50が本発明のデータ送受部に相当する。
ブリッジ部60は、システムクロックSysClkに基づいて動作するFIFO側バッファ部61と、転送クロックSDCLK(厳密には、内部転送クロックISDCLKである)に基づいて動作するコントロール側バッファ部62とを備えている。FIFO側バッファ部61が本発明のデータ送受部側バッファ部に相当し、コントロール側バッファ部62が本発明のデータ転送部側バッファ部に相当する。このブリッジ部60は、システムクロックSysClkに基づいて動作するFIFOI/F部50と、システムクロックSysClkとは異なる周波数の転送クロックSDCLKに基づいて動作する転送コントロール部20との間のデータの受け渡しを、FIFO側バッファ部61およびコントロール側バッファ部62により中継する。なお、ブリッジ部60については、さらに後述する。
転送コントロール部20は、転送クロック生成部30で生成された内部転送クロックISDCLKを転送クロックSDCLKとしてメモリカードに伝送するとともに、CPUI/F部40から受け取ったコマンドデータからメモリカードに送信する出力コマンドデータ(コマンドラインデータ)を生成し、転送クロックSDCLKに基づいてメモリカードに送信する。また、転送コントロール部20は、転送クロックSDCLKをメモリカードに伝送するとともに、FIFOI/F部50からブリッジ部60を介して受け取ったライトデータ(データラインデータ)を転送クロックSDCLKに基づいてメモリカードに送信する。
また、転送コントロール部20は、メモリカードからSDMMCバスを介して受信するコマンドラインデータ信号を受け取って、これに含まれるレスポンスデータ(コマンドラインデータ)をCPUI/F部40に受け渡すとともに、メモリカードからSDMMCバスを介して受信するデータラインデータ信号を受け取って、これに含まれるリードデータ(データラインデータ)を、ブリッジ部60を中継してFIFOI/F部50に受け渡す。転送コントロール部20とブリッジ部60との間のデータの受け渡しは8ビット(1バイト)のデータ幅、すなわち、1バイト単位で行われる。
なお、この転送コントロール部20が、本発明のデータ転送部に相当する。
転送クロック生成部30は、ソースクロックSClkに基づいて転送クロックSDCLKを生成する。このソースクロックSClkは、接続されるメモリカードの最大転送速度に対応する周波数、例えば、ここでは、メモリカードとしてSDカードを例に説明しているので、高速モードにおける最大転送速度に対応する周波数に等しい周波数(Fs:50MHz)のクロックが利用される。ただし、ソースクロックSClkとしては、必ずしも転送クロックSDCLKの周波数と等しい周波数のクロックである必要はなく、転送クロックSDCLKと異なる周波数のクロックであってもよい。
以上説明した本発明のインタフェースコントローラであるSDMMCコントローラ10の特徴は、FIFOI/F部50と転送コントロール部20との間にブリッジ部60を備え、システムクロックSysClkに基づいて動作するFIFOI/F部50と、システムクロックSysClkとは非同期の転送クロックSDCLKに基づいて動作する転送コントロール部20との間のデータの受け渡しを中継する点にある。そこで、以下では、ブリッジ部60の動作について、ライト動作時およびリード動作時に分けて、さらに説明を加える。
B.ライト動作時のブリッジ部の動作:
メモリカードへデータを書き込む場合には、CPUI/F部40のレジスタにライト動作に対応して設定されている、ブリッジ部におけるデータの処理方向を示す処理方向データDIRが、ブリッジ部60に供給される。ブリッジ部60は、ライト動作に対応して供給された処理方向データDIRに応じて、FIFO側バッファ部61およびコントロール側バッファ部62を動作させる。
メモリカードへデータを書き込む場合には、CPUI/F部40のレジスタにライト動作に対応して設定されている、ブリッジ部におけるデータの処理方向を示す処理方向データDIRが、ブリッジ部60に供給される。ブリッジ部60は、ライト動作に対応して供給された処理方向データDIRに応じて、FIFO側バッファ部61およびコントロール側バッファ部62を動作させる。
図2は、ライト動作時におけるブリッジ部60のFIFO側バッファ部61およびコントロール側バッファ部62を機能的に示す説明図である。
ライト動作時においては、FIFO側バッファ部61は、FIFOI/F部50から送信されるライトデータを受信して蓄積しつつ、コントロール側バッファ部62に受け渡す。また、コントロール側バッファ部62は、FIFO側バッファ部61から受け渡されたライトデータを蓄積しつつ、転送コントロール部20に送信する。これにより、ブリッジ部60は、FIFOI/F部50から転送コントロール部20へのライトデータの受け渡しを中継する。
ここで、FIFO側バッファ部61は、FIFO側バッファ612と、このバッファの動作を制御するFIFO側バッファ制御部614と、で構成される。
FIFO側バッファ612は、10バイトのバッファ領域を有している。ただし、ライト動作時においては、FIFO側バッファ612は、10バイトのバッファ領域のうち8バイトのみを利用し、残りの2バイトは未使用領域とされる。また、有効に利用される8バイトのバッファ領域は4バイトを1組として、2組の領域に区分される。なお、後述するようにリード動作時においては、10バイト分全てのバッファ領域を利用する。
バッファ制御部614は、システムクロックSysClk(周波数Fsys:60MHz)の周期Tsys(=1/Fsys)を基準として、FIFOI/F部50から送信されてくるライトデータの受信およびFIFO側バッファ612への格納を制御するとともに、コントロール側バッファ部62への出力を制御する。
また、コントロール側バッファ部62は、FIFO側バッファ部61と同様に、コントロール側バッファ622と、このバッファの動作を制御するコントロール側バッファ制御部624と、で構成される。
コントロール側バッファ622は、4バイト、すなわち、FIFO側バッファ612の1組のバッファ領域に対応するバッファ領域を有している。
バッファ制御部624は、転送クロックSDCLK(厳密には等価なクロック,周波数Fc:50MHz)の周期Tc(=1/Fc)を基準として、FIFO側バッファ部61から出力されるライトデータの取り込みおよびコントロール側バッファ622への格納を制御するとともに、転送コントロール部20への送信を制御する。
ライト動作時において、FIFO側バッファ部61およびコントロール側バッファ部62は、以下のように動作して、FIFOI/F部50から転送コントロール部20へのライトデータの受け渡しの中継を実現する。
FIFO側バッファ部61のFIFO側バッファ制御部614は、FIFOI/F部50から送信レディS_TXReadyがアサートされると、システムクロックSysClkに基づいて送信バリッドS_TXValidをFIFOI/F部50に対してアサートする。
このとき、FIFO側バッファ制御部614は、FIFOI/F部50から送信レディS_TXReadyのアサートとともに、1バイト単位で送出されるライトデータS_TXData[7:0]を受け取り、FIFO側バッファ612に蓄積する。
ここで、FIFOI/F部50から送出される1バイト単位のライトデータの更新は、送信バリッドの変化に応じて実行される。また、送信バリッドの変化は、FIFO側バッファ612に複数バイトの空き領域がある場合には、連続してライトデータを蓄積することが可能であるので、転送クロックSDCLKの周期Tcごとに発生する。従って、FIFOI/F部50からのライトデータの送信は、通常、転送クロックSDCLKの周期Tcで、1バイト単位で順に実行される。なお、図は、5バイトのライトデータ[D−1]〜[D−5]が1バイトずつ順に蓄積された状態を示している。
そして、FIFO側バッファ制御部614は、FIFO側バッファ612の蓄積量を監視し、4バイト以上のライトデータが蓄積された状態になると、取り込みレディGetReadyをアサートするとともに、蓄積されたライトデータのうち、先に蓄積されたデータの順で4バイト分のライトデータをまとめて、コントロール側バッファ部62へ出力する。ただし、FIFO側バッファ612に蓄積されているライトデータが4バイト未満であっても、総データ転送数が4バイト未満の端数を有しているライトデータのうちの、最後の4バイト未満のライトデータである場合には、FIFO側バッファ制御部614は、これら4バイト未満のライトデータをコントロール側バッファ部62へ出力する。
コントロール側バッファ部62のコントロール側バッファ制御部624は、FIFO側バッファ部61から出力された4バイトのライトデータを受け取る毎に変化する取り込み通知RCVを出力するとともに、受け取ったライトデータをコントロール側バッファ622に蓄積する。
なお、FIFO側バッファ612から読み出されてFIFO側バッファ部61からコントロール側バッファ部62へ出力されるライトデータの更新は、コントロール側バッファ部62から出力される取り込み通知RCVの変化タイミングに基づいて、FIFO側バッファ制御部614によって実行される。具体的には、取り込み通知RCVの変化を、システムクロックSysClkに同期させることにより検出した変化タイミングに基づいて実行される。
そして、コントロール側バッファ部62のコントロール側バッファ制御部624は、FIFO側バッファ部61から出力された4バイト単位のライトデータをコントロール側バッファ622に蓄積すると、送信レディC_TXRadyを転送コントロール部20に対してアサートするとともに、蓄積したライトデータを1バイト単位で送信データC_TXData[7:0]として出力する。図は、FIFO側バッファ612に順に蓄積された4バイトのライトデータ[D−1]〜[D−4]が、4バイト単位でコントロール側バッファ622に蓄積された状態を示している。転送コントロール部20への出力は、[D−1],[D−2],[D−3],[D−4],・・・の順で実行される。
ここで、コントロール側バッファ制御部624は、転送コントロール部20によって、ライトデータが受信されたことを示す送信バリッドC_TXValidがアサートされると、送信データC_TXData[7:0]として出力するライトデータを、次のデータに更新する。これにより、コントロール側バッファ制御部624は、順次ライトデータを転送コントロール部20に送信する。従って、通常は、送信レディC_TXReadyがアサートされている状態において、送信バリッドC_TXValidが転送クロックSDCLKの周期Tcで変化して与えられることにより、転送クロックSDCLKの周期Tcで、送信データC_TXData[7:0]が転送コントロール部20に送信される。
また、コントロール側バッファ制御部624は、コントロール側バッファ622に蓄積された4バイト単位のライトデータの4バイト目のライトデータを、送信データC_TXData[7:0]として出力すると、これに応じて、上記した取り込み通知RCVを変化させる。このとき、コントロール側バッファ制御部624は、上記したように、FIFO側バッファ部61から既に出力されているライトデータを受け取ってコントロール側バッファ622に蓄積することができる。また、上記したように、FIFO側バッファ部61では、FIFO側バッファ部61が出力するライトデータが次の4バイト分のデータに更新されて出力される。ただし、この出力されたライトデータは、次の通知RCVの変化において、コントロール側バッファ622に蓄積される。
なお、連続してライト動作が実行される場合、取り込み通知RCVは、転送クロックSDCLKの周期Tcの4倍の間隔で反転するトグル信号となり、FIFO側バッファ部61からコントロール側バッファ部62へのライトデータの受け渡しは、転送クロックSDCLKの周期Tcの4倍の間隔で実行される。
また、FIFO側バッファ部61は周波数Fsys(60MHz)のシステムクロックSysClkに基づいて動作し、コントロール側バッファ部62はシステムクロックSysClkよりも低い周波数Fc(50MHz)の転送クロックSDCLKに基づいて動作する。従って、ライト動作時におけるFIFO側バッファ部61のFIFO側バッファ612は、基本的には満状態または満状態に近い状態で動作する。FIFO側バッファ612が満状態の場合には、FIFO側バッファ制御部614は、送信バリッドS_TXValidをネゲートすることにより、FIFOI/F部50からのライトデータの送信を停止することにより、容易にFIFO側バッファ612の状態を制御することができる。
以上のことから、FIFO側バッファ部61は、FIFOI/F部50からシステムクロックSysClkに基づいて1バイト単位で送信されるライトデータを順に蓄積する。そして、蓄積したライトデータを4バイト単位でコントロール側バッファ部62に出力する。そして、コントロール側バッファ部62は、4バイト単位でFIFO側バッファ部61から出力されるライトデータを蓄積し、蓄積した4バイト分のライトデータを1バイト単位で順に転送クロックSDCLKに基づいて転送コントロール部20へ送信することができる。すなわち、ライトデータの転送コントロール部20への送信は、通常、転送クロックSDCLKの周期Tcで、1バイト単位で順に実行することができる。
また、FIFO側バッファ部61から出力される4バイト単位のライトデータの、コントロール側バッファ部62における蓄積は、先に蓄積された4バイト分のライトデータが転送コントロール部20へ送信されるごとに実行することが可能となる。従って、4バイト単位のライトデータのFIFO側バッファ部61からの出力は、先に蓄積された4バイト分のライトデータが転送コントロール部20へ送信されるのに応じて実行することが可能である。
なお、上記したように、ライトデータの転送コントロール部20への送信は、通常は、転送クロックSDCLKの周期Tcで、1バイト単位で順に実行されるので、FIFO側バッファ部61からの4バイト単位のライトデータの出力は、転送クロックSDCLKの周期Tcの4倍の周期で実行すればよく、システムクロックSysClkの周期Tsys(約16.7ns)で4バイト分のライトデータがFIFO側バッファ612に蓄積される時間(約66.7ns)よりも、転送クロックSDCLKの周期Tc(20ns)の4倍の周期(80ns)のほうが、長くなる。
従って、ブリッジ部60では、ライト動作時において、FIFOI/F部50から、周波数Fsys(60MHz)のシステムクロックSysClkに基づいて1バイト単位で受信されるライトデータを、システムクロックSysClkに非同期である周波数Fc(50MHz)の転送クロックに基づいて、転送コントロール部20に1バイト単位で送信することが可能となる。
なお、SDMMCコントローラの機能として、SDMMCコントローラの動作に起因して、メモリカードへのライトデータの書き込みが中断されないことが要求される。本実施例のSDMMCコントローラ10は、以下で説明するように上記要求を満足することができる。
上記したように、FIFO側バッファ部61のFIFO側バッファ612に4バイト以上のライトデータが蓄積された状態、すなわち、コントロール側バッファ部62にライトデータを出力することができる状態では、FIFO側バッファ制御部614が取り込みレディGetReadyをコントロール側バッファ部62に対してアサートすることにより、コントロール側バッファ制御部624が転送コントロール部20に対して送信レディC_TXReadyをアサートし、転送コントロール部20はメモリカードに対して転送クロックを供給する。これにより、メモリカードへのライトデータの書き込みが実行される。
また、FIFO側バッファ612にライトデータが4バイト未満のライトデータしか蓄積されていない状態、あるいは、ライトデータの蓄積が終了した状態、すなわち、コントロール側バッファ部62にライトデータを出力することができない状態では、FIFO側バッファ制御部614が取り込みレディGetReadyをコントロール側バッファ部62に対してネゲートすることにより、コントロール側バッファ制御部624が転送コントロール部20に対して送信レディC_TXReadyをネゲートし、転送コントロール部20はメモリカードに対して転送クロックの供給を停止する。これにより、メモリカードへのライトデータの書き込みが中断あるいは停止される。ただし、FIFO側バッファ612に蓄積されているライトデータが4バイト未満であっても、蓄積終了後のライトデータである場合には、FIFO側バッファ制御部614は、これら4バイト未満のライトデータをコントロール側バッファ部62に出力し、出力したライトデータがコントロール側バッファ部62のコントロール側バッファ622に蓄積された後で、取り込みレディGetReadyをネゲートする。
従って、ブリッジ部60は、FIFOバッファからライトデータが供給されており、メモリカードへ書き込むライトデータがFIFO側バッファ612に蓄積されている状態では、蓄積されているライトデータを転送コントロール部20へ出力する。これにより、ブリッジ部60に起因してライトデータのメモリカードへの書き込みが停止されることはなく、SDMMCコントローラの動作に起因してメモリカードへのライトデータの書き込みが中断されないようにすることができる。
C.リード動作時のブリッジ部の動作:
メモリカードからデータを読み出す場合には、CPUI/F部40のレジスタにリード動作に対応して設定されている処理方向データDIRがブリッジ部60に供給される。ブリッジ部60は、リード動作に対応して供給された処理方向データDIRに応じて、FIFO側バッファ部61およびコントロール側バッファ部62を動作させる。
メモリカードからデータを読み出す場合には、CPUI/F部40のレジスタにリード動作に対応して設定されている処理方向データDIRがブリッジ部60に供給される。ブリッジ部60は、リード動作に対応して供給された処理方向データDIRに応じて、FIFO側バッファ部61およびコントロール側バッファ部62を動作させる。
図3は、リード動作時におけるブリッジ部60のFIFO側バッファ部61およびコントロール側バッファ部62を機能的に示す説明図である。
リード動作時においては、コントロール側バッファ部62は、転送コントロール部20から送信されるリードデータを受信して蓄積しつつ、FIFO側バッファ部61に受け渡す。また、FIFO側バッファ部61は、コントロール側バッファ部62から受け渡されたリードデータを蓄積しつつ、FIFOI/F部50に送信する。これにより、ブリッジ部60は、転送コントロール部20からFIFOI/F部50へのリードデータの受け渡しを中継する。
リード動作時においても、ライト動作時と同様に、FIFO側バッファ部61は、FIFO側バッファ612と、このバッファの動作を制御するFIFO側バッファ制御部614と、で構成される。また、コントロール側バッファ部62は、コントロール側バッファ622と、このバッファの動作を制御するコントロール側バッファ制御部624と、で構成される。
ただし、コントロール側バッファ部62において、コントロール側バッファ622は、ライト動作時の場合と違い、4バイトのバッファ領域が2バイトを1組として2組の領域に区分される。コントロール側バッファ制御部624も、ライト動作時の場合と違い、転送コントロール部20から送信されるリードデータの受信およびコントロール側バッファ622への格納を制御するとともに、FIFO側バッファ部61への出力を制御する。
また、FIFO側バッファ部61において、FIFO側バッファ612は、ライト動作時の場合と違い、2バイトの領域を未使用とせず、かつ、4バイトを1組とする2組の領域に区分せずに、10バイトのバッファ領域の全てが有効領域として利用される。FIFO側バッファ制御部614も、ライト動作時の場合と違い、コントロール側バッファ部62から出力されるリードデータの受け取りおよびFIFO側バッファ612への格納を制御するとともに、FIFOI/F部50への送信を制御する。
リード動作時において、FIFO側バッファ部61およびコントロール側バッファ部62は、以下のように動作して、転送コントロール部20からFIFOI/F部50へのリードデータの受け渡しの中継を実現する。
コントロール側バッファ部62のコントロール側バッファ制御部624は、コントロール側バッファ622が満状態でなく、リードデータの蓄積が可能である場合には、転送コントロール部20へ受信レディC_RXReadyをアサートする。このとき、コントロール側バッファ制御部624は、転送コントロール部20から転送クロックSDCLKに基づいて受信バリッドC_RXValidがアサートされると、転送コントロール部20から受信バリッドC_RXValidとともに1バイト単位で送出されるリードデータC_RXData[7:0]を受け取り、コントロール側バッファ622に蓄積する。図は、3バイトのリードデータ[D−1]〜[D−3]がコントロール側バッファ622に蓄積された状態を示している。
なお、転送コントロール部20から送出される1バイト単位のリードデータの変化は、受信レディC_RXReadyがアサートされている状態においては、転送クロックSDCLKに基づいて、具体的には、転送クロックSDCLKの周期Tcで変化する受信バリッドC_RXValidに基づいて実行される。
そして、バッファ制御部624は、コントロール側バッファ622に2バイト以上のリードデータが蓄積されると、取り込み指示GetDateを出力するとともに、蓄積されたリードデータのうち、先に蓄積されたデータの順で2バイト分のリードデータをまとめて、FIFO側バッファ部61へ出力する。この取り込み指示GetDataは、転送コントロール部20から2バイトのデータを受信して、コントロール側バッファ622に蓄積される度に変化する信号、すなわち、転送クロックSDCLKの周期Tcの2倍の周期で反転を繰り返すトグル信号である。また、出力するリードデータの更新は、この取り込み指示GetDataの変化に同期して実行される。ただし、コントロール側バッファ622に蓄積されているリードデータが2バイト未満であっても、総データ転送数が2バイト未満の端数を有しているライトデータのうちの、最後の2バイト未満のリードデータである場合には、コントロール側バッファ制御部624は、これら2バイト未満のリードデータをFIFO側バッファ部61へ出力する。
FIFO側バッファ部61のFIFO側バッファ制御部614は、コントロール側バッファ部62から出力される取り込み指示GetDataの変化を、システムクロックSysClkに同期させて検出し、検出した変化タイミングで、コントロール側バッファ部62から出力される2バイト単位のリードデータを受け取り、FIFO側バッファ612に蓄積する。
ここで、コントロール側バッファ部62からFIFO側バッファ部61へのリードデータの出力を2バイト単位とすることにより、取り込み指示GetDataの変化は、上記したように転送クロックSDCLKの周期Tcの2倍の間隔(40ns)とすることができる。この間隔は、システムクロックSysClkの周期Tsys(約16.7ns)の2倍以上の間隔であるため、取り込み指示GetDataの変化を、システムクロックSysClkに同期させて検出することが可能となり、転送クロックSDCLKとシステムクロックSysClkとの周波数の差を吸収することが可能となる。
そして、FIFO側バッファ制御部614は、FIFO側バッファ612にリードデータが蓄積された状態において、FIFOI/F部50から受信レディS_RXReadyがアサートされると、受信バリッドS_RXValidをアサートするとともに、FIFO側バッファ612に蓄積したリードデータを1バイト単位で受信データS_RXData[7:0]として出力する。なお、図は、コントロール側バッファ622に最初に蓄積された2バイトのリードデータ[D−1],[D−2]がFIFO側バッファ612に蓄積された状態を示している。FIFOI/F部50へは、[D−1],[D−2],・・・の順で出力される。
ここで、受信バリッドS_RXValidは、受信レディS_RXReadyのアサートが維持されている状態においては、通常、システムクロックSysClkに基づいて、具体的には、システムクロックSysClkの周期Tsysで、繰り返しアサートされる。これにより、FIFO側バッファ部61からFIFOI/F部50へのリードデータの送信は、システムクロックSysClkの周期Tsysで繰り返される。
ところで、FIFOI/F部50がリードデータを受信できない場合には、受信レディS_RXReadyがネゲートされ、FIFO側バッファ部61では、コントロール側バッファ部62から出力されるリードデータの蓄積のみが繰り返され、FIFOI/F部50への出力がされない。
ここで、FIFO側バッファ制御部614は、FIFO側バッファ612へのリードデータの蓄積量が、あらかじめ設定したしきい値Thfullを超えた場合には、満状態通知Fullをコントロール側バッファ部62のコントロール側バッファ制御部624に対してアサートする。このとき、コントロール側バッファ制御部624は、受信レディC_RXReadyを転送コントロール部20に対してネゲートする。このとき、転送コントロール部20は、転送クロックSDCLKのメモリカードへの伝送を停止し、メモリカードからのデータの読み出しを停止する。従って、コントロール側バッファ制御部624は、転送コントロール部20からのリードデータの送信を停止させることができる。この結果、コントロール側バッファ部62からブリッジ部60へのリードデータの出力が停止される。
なお、しきい値Thfullについては、以下の観点で設定される。すなわち、受信レディC_RXReadyがネゲートされた時点では、例えば、コントロール側バッファ622にリードデータが4バイト蓄積されており、タイムラグ等により、2バイトのリードデータがFIFO側バッファ部61へ出力され、新たに2バイト程度のリードデータが受信されてしまい、満状態通知Fullがアサートされた後に6バイトのリードデータがコントロール側バッファ部62からFIFO側バッファ部61へ出力される可能性もある。そこで、このタイムラグ等に起因してコントロール側バッファ部62から出力されるリードデータに対応する領域をマージンとして確保する必要がある。例えば、マージンを6バイトとすると、しきい値Thfullの値は、バッファ領域のサイズが10バイトの場合には、4バイトと設定される。
以上説明したように、ブリッジ部60は、リード動作時において、転送コントロール部20から、周波数Fc(50MHz)の転送クロックSDCLKに基づいて1バイト単位で送信されるリードデータを、転送クロックSDCLKに非同期である周波数Fsys(60MHz)のシステムクロックSysClkに基づいて、FIFOI/F部50に1バイト単位で送信することができる。
なお、SDMMCコントローラの機能として、SDMMCコントローラの動作に起因して、メモリカードからのリードデータの読み出しが中断されないことが要求される。本実施例のSDMMCコントローラ10は、以下で説明するように上記要求を満足することができる。
FIFO側バッファ部61は転送クロックSDCLKよりも周波数の高いシステムクロックSysClkに基づいて動作しているので、基本的には、FIFOバッファへのリードデータの送信が行われている間は、FIFO側バッファ612が満状態となることはなく、FIFOバッファへのリードデータの送信が停止した場合にFIFO側バッファ612が満状態となる可能性がある。
従って、ブリッジ部60に起因して転送コントロール部20からの転送クロックSDCLKの伝送が停止されることにより、メモリカードからのリードデータの読み出しが停止されることはなく、SDMMCコントローラの動作に起因してメモリカードからのリードデータの読み出しが中断されないようにすることができる。
D.効果:
本発明のインタフェースコントローラとしてのSDMMCコントローラ10は、FIFOI/F部50と転送コントロール部20との間に、上記したように動作するブリッジ部60を備えることにより、ホスト装置内において、周波数Fsys(60MHz)のシステムクロックSysClkに基づいて受信されるライトデータを、システムクロックSysClkとは異なるソースクロックSClk(周波数Fs:50MHz)に基づいて生成される非同期のクロックであり、システムクロックSysClkとは異なる周波数Fc(50MHz)の転送クロックSDCLKに基づいてメモリカードに送信することができる。また、メモリカードから転送クロックSDCLKに基づいて送信されたリードデータを、システムクロックSysClkに基づいてホスト装置内の他のブロックへ送信することができる。
本発明のインタフェースコントローラとしてのSDMMCコントローラ10は、FIFOI/F部50と転送コントロール部20との間に、上記したように動作するブリッジ部60を備えることにより、ホスト装置内において、周波数Fsys(60MHz)のシステムクロックSysClkに基づいて受信されるライトデータを、システムクロックSysClkとは異なるソースクロックSClk(周波数Fs:50MHz)に基づいて生成される非同期のクロックであり、システムクロックSysClkとは異なる周波数Fc(50MHz)の転送クロックSDCLKに基づいてメモリカードに送信することができる。また、メモリカードから転送クロックSDCLKに基づいて送信されたリードデータを、システムクロックSysClkに基づいてホスト装置内の他のブロックへ送信することができる。
ところで、単純には、ホスト装置内において、SDMMCコントローラのFIFOI/FとFIFOバッファとの間にブリッジ部を設けて、SDMMCコントローラは転送クロックに基づいて動作させることが考えられる。しかしながら、上記実施例で説明したように、FIFOI/Fバスを介して接続されるFIFOバッファとしては、例えば、USBコントローラのFIFOバッファが想定される。このUSBコントローラのFIFOバッファでは、その内部側でのデータの処理単位は、必ずしも固定ではなく、1バイト,2バイト,4バイト,7バイト等の種々の単位である場合があるのに対し、出力される単位は、例えば、4バイト固定である。このため、SDMMCコントローラのFIFOI/F部とFIFOバッファとの間に設けるブリッジ部では、FIFOバッファから出力される4バイトのデータを、上記処理単位に応じて正確に管理しなければならないため、その実現が非常に困難である。
一方、本発明のインタフェースコントローラであるSDMMCコントローラ10では、データの送受が1バイト単位で実行されるFIFOI/F部50と転送コントロール部20の間にブリッジ部60を設けているので、上記問題は発生しない。
また、SDMMCコントローラ10は、ブリッジ部60の動作に起因しては、メモリカードへのライトデータの書き込みやメモリカードからのリードデータの読み出しが中断されないようにすることができる。
E.変形例:
なお、この発明は上記実施例や実施の形態に限られるものではなく、その要旨を逸脱しない範囲において種々の形態において実施することが可能である。
なお、この発明は上記実施例や実施の形態に限られるものではなく、その要旨を逸脱しない範囲において種々の形態において実施することが可能である。
上記説明では、メモリカードとしてSDカードの場合を例に説明したが、MMCの場合にも適用可能である。また、SD−IOカードやCE−ATAドライブ装置のように、SDカードやMMCのインタフェース仕様をベースとするインタフェースに準拠した外部機器に対しても、同様に、適用可能である。
上記説明では、システムクロックSysClkを周波数Fsys(60MHz)のクロックとし、システムクロックSysClkとは異なるソースクロックSClk(周波数Fc:50MHz)に基づいて生成される非同期のクロックであり、システムクロックSysClkとは異なる周波数Fc(50MHz)のクロックを転送クロックSDCLKとした場合を例に説明しているが、これに限定されるものではなく、例えば、転送クロックSDCLKの周波数Fcを、MMCのインタフェースの仕様により規定される52MHzや26MHzの場合にも適用可能である。また、システムクロックSysClkの周波数Fsysも同様に種々の周波数とすることができる。すなわち、外部機器のインタフェースの仕様に従って決定される周波数のクロックを転送クロックとし、転送クロックの周波数とは異なる周波数のクロックをシステムクロックとし、転送クロックとシステムクロックとが、周波数が高い方のクロックの周波数が、周波数が低い方のクロックの周波数の整数倍とはならない関係を有している種々の場合にも適用可能である。なお、転送クロックとシステムクロックとが、周波数が高い方のクロックの周波数が、周波数が低い方のクロックの周波数の整数倍とはならない関係は、転送クロックとシステムクロックとが互いに異なる周波数で非同期であることを意味している。
上記説明では、FIFO側バッファ612のバッファ領域を10バイト、コントロール側バッファ622のバッファ領域を4バイトとして説明したが、これに限定されるものではなく、種々のサイズとすることができる。
上記説明では、リード動作時において、コントロール側バッファ部62では、転送コントロール部20から1バイト単位で受信するリードデータをコントロール側バッファ622で順次蓄積するとともに、FIFO側バッファ部61へ2バイト単位で出力している。また、FIFO側バッファ部61では、コントロール側バッファ部62から出力される2バイト単位のリードデータを順次蓄積するとともに、1バイト単位でFIFOI/F部50へ送信している。しかしながら、これに限定されるものではなく、以下のようにすることができる。すなわち、コントロール側バッファ部62では、転送コントロール部からnバイト単位(nは整数)で受信するリードデータをコントロール側バッファで順次蓄積するとともに、FIFO側バッファ部へ2nバイト単位で出力してもよい。そして、FIFO側バッファ部では、リードデータを2nバイト単位で蓄積するとともに、nバイト単位でFIFOI/F部へ送信してもよい。
上記説明では、ライト動作時において、FIFO側バッファ部61では、FIFOI/F部50から1バイト単位で受信するライトデータをFIFO側バッファ612で順次蓄積するとともに、コントロール側バッファ部62へ4バイト単位で出力している。また、コントロール側バッファ部62では、FIFO側バッファ部61から出力される4バイト単位のライトデータを順次蓄積するとともに、1バイト単位で転送コントロール部20へ順次送信している。しかしながら、これに限定されるものではなく、以下のようにすることができる。すなわち、FIFO側バッファ部では、FIFOI/F部からnバイト単位で受信するライトデータをFIFO側バッファで順次蓄積するとともに、コントロール側バッファ部へ4nバイト単位で出力してもよい。また、コントロール側バッファ部では、FIFOバッファ部から出力される4nバイト単位のライトデータを順次蓄積するとともに、nバイト単位で転送コントロール部へ順次送信してもよい。
上記説明では、リード動作時において、コントロール側バッファ部62からFIFO側バッファ部61へリードデータを2バイト単位で出力するようにしているが、2バイト以上の複数バイト単位で出力するようにしてもよい。同様に、上記説明では、ライト動作時において、FIFO側バッファ部61からコントロール側バッファ部62へライトデータを4バイト単位で出力するようにしているが、4バイト以上の複数バイト単位で出力するようにしてもよい。
10…SDMMCコントローラ
20…転送コントロール部
30…転送クロック生成部
40…CPUI/F部
50…FIFOI/F部
60…ブリッジ部
61…FIFO側バッファ部
62…コントロール側バッファ部
612…FIFO側バッファ
614…FIFO側バッファ制御部
622…コントロール側バッファ
624…コントロール側バッファ制御部
20…転送コントロール部
30…転送クロック生成部
40…CPUI/F部
50…FIFOI/F部
60…ブリッジ部
61…FIFO側バッファ部
62…コントロール側バッファ部
612…FIFO側バッファ
614…FIFO側バッファ制御部
622…コントロール側バッファ
624…コントロール側バッファ制御部
Claims (6)
- ホスト装置に備えられ、前記ホスト装置の外部に接続される外部機器に第1のクロックを出力し、前記第1のクロックを基準として規定される特定のインタフェースの仕様に従って、前記ホスト装置と前記外部機器との間のデータ転送を制御するインタフェースコントローラであって、
前記第1のクロックに基づいて動作するデータ転送部と、
前記第1のクロックとは異なる周波数の第2のクロックに基づいて動作するデータ送受部と、
前記データ送受部と前記データ転送部との間に設けられ、前記第1のクロックおよび前記第2のクロックに基づいて動作するブリッジ部と、
を備え、
前記第1のクロックと前記第2のクロックとは、周波数が高い方のクロックの周波数が、周波数が低い方のクロックの周波数の整数倍とはならない関係を有しており、
前記データ送受部が、前記外部機器へ送信すべきデータを、前記第2のクロックに基づいて前記インタフェースコントローラの外部から受信した場合において、
前記データ送受部は、前記インフェースコントローラの外部から受信したデータを、前記第2のクロックに基づいて前記ブリッジ部へ送信し、
前記ブリッジ部は、前記データ送受部から送信されたデータを前記第2のクロックに基づいて受信し、受信したデータを前記第1のクロックに基づいて前記データ転送部に送信し、
前記データ転送部は、前記ブリッジ部から送信されたデータを前記第1のクロックに基づいて受信し、受信したデータを前記第1のクロックに基づいて前記外部機器へ送信し、
前記データ転送部が、前記外部機器から送信されたデータを、前記第1のクロックに基づいて受信した場合において、
前記データ転送部は、前記外部機器から受信したデータを前記第1のクロックに基づいて前記ブリッジ部へ送信し、
前記ブリッジ部は、前記データ転送部から送信されたデータを前記第1のクロックに基づいて受信し、受信したデータを前記第2のクロックに基づいて前記データ送受部へ送信し、
前記データ送受部は、前記ブリッジ部から送信されたデータを前記第2のクロックに基づいて受信し、受信したデータを前記第2のクロックに基づいて前記インタフェースコントローラの外部へ送信する、
ことを特徴とするインタフェースコントローラ。 - 請求項1に記載のインタフェースコントローラであって、
前記ブリッジ部は、データ送受部側バッファ部およびデータ転送部側バッファ部を備えており、
前記ブリッジ部が前記データ送受部から送信されるデータを受信する場合には、
前記データ送受部側バッファ部は、前記データ送受部から前記第2のクロックに基づいて送信されるデータを受信して蓄積し、
前記データ転送部側バッファ部は、前記第1のクロックに基づいて、前記データ送受部側バッファ部に蓄積されたデータを取得して蓄積するとともに、前記データ転送部へ送信し、
前記ブリッジ部が前記データ転送部から送信されるデータを受信する場合には、
前記データ転送部側バッファ部は、前記データ転送部から前記第1のクロックに基づいて送信されるデータを受信して蓄積し、
前記データ送受部側バッファ部は、前記第2のクロックに基づいて、前記データ転送部側バッファ部に蓄積されたデータを取得して蓄積するとともに、前記データ送受部へ送信する、
ことを特徴とするインタフェースコントローラ。 - 請求項2に記載のインタフェースコントローラであって、
前記第2のクロックは前記第1のクロックよりも高い周波数のクロックであり、
前記ブリッジ部が前記データ転送部から送信されるデータを受信する場合には、
前記データ転送部側バッファ部は、前記第1のクロックに基づいて前記データ転送部からn(nは1以上の整数)バイト単位で送信されるデータを順次蓄積するとともに、蓄積したデータを2nバイト単位で前記データ送受部側バッファ部に出力し、
前記データ送受部側バッファ部は、前記データ転送部側バッファ部から出力されたデータを、前記第2のクロックに基づいて順次蓄積するとともに、蓄積したデータを、前記第2のクロックに基づいて、nバイト単位で前記データ送受部に送信する、
ことを特徴とするインタフェースコントローラ。 - 請求項3に記載のインタフェースコントローラであって、
前記データ送受部側バッファ部は、あらかじめ定められているしきい値以上のデータが蓄積されたときに、前記データ転送部側バッファ部における前記データ転送部から送信されるデータの蓄積の停止の指示を実行し、
前記データ転送部側バッファ部は、前記停止の指示に従って前記データ転送部による前記外部機器からのデータの受信の停止を指示することにより、前記データ転送部からのデータの送信を停止させて、データの蓄積を停止する、
ことを特徴とするインタフェースコントローラ。 - 請求項2ないし請求項4のいずれかに記載のインタフェースコントローラであって、
前記第2のクロックは前記第1のクロックよりも高い周波数のクロックであり、
前記ブリッジ部が前記データ送受部から送信されるデータを受信する場合には、
前記データ送受部側バッファ部は、前記第2のクロックに基づいて前記データ送受部からnバイト単位で送信されるデータを順次蓄積するとともに、蓄積したデータを4nバイト単位で前記データ転送部側バッファ部に出力し、
前記データ転送部側バッファ部は、前記データ送受部側バッファ部から出力されたデータを前記第1のクロックに基づいて蓄積するとともに、蓄積したデータを、前記第1のクロックに基づいて、nバイト単位で前記データ転送部に送信する、
ことを特徴とするインタフェースコントローラ。 - 請求項1ないし請求項4のいずれかに記載のインタフェースコントローラであって、
1つの半導体基板上に集積化された集積化回路であることを特徴とするインタフェースコントローラ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007124309A JP2008282128A (ja) | 2007-05-09 | 2007-05-09 | 外部に接続される電子機器の動作を制御するインタフェースコントローラ |
US12/117,277 US20080282000A1 (en) | 2007-05-09 | 2008-05-08 | Interface controller for controlling operation of externally coupled electronic apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007124309A JP2008282128A (ja) | 2007-05-09 | 2007-05-09 | 外部に接続される電子機器の動作を制御するインタフェースコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008282128A true JP2008282128A (ja) | 2008-11-20 |
Family
ID=39970562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007124309A Withdrawn JP2008282128A (ja) | 2007-05-09 | 2007-05-09 | 外部に接続される電子機器の動作を制御するインタフェースコントローラ |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080282000A1 (ja) |
JP (1) | JP2008282128A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8744602B2 (en) | 2011-01-18 | 2014-06-03 | Apple Inc. | Fabric limiter circuits |
US8861386B2 (en) * | 2011-01-18 | 2014-10-14 | Apple Inc. | Write traffic shaper circuits |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5546546A (en) * | 1994-05-20 | 1996-08-13 | Intel Corporation | Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge |
US5951635A (en) * | 1996-11-18 | 1999-09-14 | Vlsi Technology, Inc. | Asynchronous FIFO controller |
JP2002342256A (ja) * | 2001-05-14 | 2002-11-29 | Hitachi Ltd | データプロセッサ及びデータテーブルの更新方法 |
US7035983B1 (en) * | 2003-04-25 | 2006-04-25 | Advanced Micro Devices, Inc. | System and method for facilitating communication across an asynchronous clock boundary |
-
2007
- 2007-05-09 JP JP2007124309A patent/JP2008282128A/ja not_active Withdrawn
-
2008
- 2008-05-08 US US12/117,277 patent/US20080282000A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20080282000A1 (en) | 2008-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2263155B1 (en) | Direct data transfer between slave devices | |
JP5054818B2 (ja) | インターフェース装置、通信システム、不揮発性記憶装置、通信モード切換方法および集積回路 | |
US5987617A (en) | Low ICC enumeration scheme for bus powered USB device | |
JP4704050B2 (ja) | データ転送システム及び電子機器 | |
JP4681046B2 (ja) | 待ち時間に無感覚なfifoシグナリングプロトコル | |
WO2010011534A1 (en) | Reconfigurable memory controller | |
US8667195B2 (en) | Bus-system including an interconnector, a master device, a slave device, and an operating method thereof | |
US8332682B2 (en) | Interface control device | |
KR100845525B1 (ko) | 메모리 카드 시스템, 그것의 데이터 전송 방법, 그리고반도체 메모리 장치 | |
US8132036B2 (en) | Reducing latency in data transfer between asynchronous clock domains | |
TW201411482A (zh) | 環拓樸狀態指示 | |
JP2008009910A (ja) | Icカードおよびicカード読み取りシステム | |
US9747246B2 (en) | Electronic device for communicating between a microcontroller unit (MCU) and a host processor and related methods | |
JP2008282128A (ja) | 外部に接続される電子機器の動作を制御するインタフェースコントローラ | |
US20090063736A1 (en) | Low power digital interface | |
WO2002048849A1 (fr) | Carte circuit imprimé et système de carte circuit imprimé | |
JP4040654B2 (ja) | 通信制御回路および通信制御方法 | |
WO2009069094A1 (en) | Method and device for routing data between components | |
CN117009276B (zh) | 一种基于axi总线的信号压缩传输的方法、装置及系统 | |
CN115202257B (zh) | 一种lpc总线协议转换及设备并行控制装置及方法 | |
JP5902402B2 (ja) | データ出力調整装置、データ出力調整方法、rgmiiネットワークシステム、及び、rgmiiネットワーク通信路切替方法 | |
JP2005122303A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
US20100169698A1 (en) | Recording medium control element, recording medium control circuit board, and recording medium control device | |
JP2011191999A (ja) | Icカード | |
CN100504826C (zh) | 改进的接口 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090224 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090421 |