(57)【特許請求の範囲】
【請求項１】
自身が出力した単一の基準クロック信号に同期してデータの送信を行う送信部と、前記基準クロック信号に同期してデータの受信を行う受信部と、を備えたインタフェース回路において、
前記受信部が、前記基準クロック信号から１／（ｎ＋１）周期（ｎは１以上の整数）ずつ順次位相をずらした第１クロック信号から第ｎクロック信号までのｎ個のクロック信号を生成し、前記基準クロック信号も含めた（ｎ＋１）個のクロック信号を出力するクロック信号生成回路と、
前記（ｎ＋１）個のクロック信号にそれぞれ同期してデータを受信する第１受信データポートから第（ｎ＋１）受信データポートの（ｎ＋１）個の受信データポートと、
前記（ｎ＋１）個の受信データポートの中で最適なタイミングでデータを受信した受信データポートを選択する受信データポート選択回路と、
前記（ｎ＋１）個の受信データポートの後段に設けられた前記受信データポート選択回路で選択された前記受信データポートから出力されるデータが書き込まれるＦＩＦＯ回路と、
を備え、
前記第１受信データポートから前記第（ｎ＋１）受信データポートは、それぞれ前記基準クロックおよび前記第１クロック信号から前記第ｎクロック信号に同期してデータを受信し、さらに、前記第１受信データポートから前記第（ｎ＋１）受信データポートは、それぞれ前記基準クロックおよび前記第１クロック信号から前記第ｎクロック信号のうち対応する前記クロック信号でデータを取り込むＤ型フリップフロップが直列に２段接続され、
受信データポート選択回路は、前記第１受信データポートから前記第（ｎ＋１）受信データポートのうち、番号が連続する（ｎ＋１）／２個の前記受信データポートの直列接続された２段のＤ型フリップフロップのうち前段の前記Ｄ型フリップフロップが、所定のデータ群の先頭を示すスタートビットの受信が成功した場合に、前記番号が連続する（ｎ＋１）／２個の前記受信データポートの最後の番号の前記受信データポートを選択し、
前記ＦＩＦＯ回路は、前記受信データポート選択回路が選択した前記受信データポートと同じ位相の前記クロック信号でデータが書き込まれる、
ことを特徴とするインタフェース回路。
【請求項２】
請求項１に記載のインタフェース回路を備えていることを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
自身が出力した単一クロック信号に同期してデータの送受信を行うインタフェース回路及びそのインタフェース回路を備えた半導体装置に関する。
【背景技術】
【０００２】
半導体装置のデバイス間のデータインタフェース手法としては、データを送信するデバイスがストローブ信号とデータとを出力し、データを受信するデバイスが受け取ったストローブ信号とデータとを用いて内部に取り込む手法（例えば、特許文献１を参照）や、デバイス間で位相制御された単一のクロックを用い、そのクロックに同期してデータを送受信する手法（例えば、ＰＣＩ（Peripheral Component Interconnect）インタフェース、ＰＣカードやＳＤカード及びメモリースティックのインタフェースなどに採用されている）がある。
【０００３】
図７に、従来のデバイス間で位相制御された単一のクロックを用い、そのクロックに同期してデータを送受信する手法を用いたインタフェース回路の構成例を示す。
【０００４】
図７において、ホストデバイス１００はインタフェース回路１１０を備えている。インタフェース回路１１０は、ＩＯセル１０１、１０２と、Ｄ型フリップフロップ１０３、１０４と、Ｄｅｌａｙ素子１０５と、を備えている。
【０００５】
ＩＯセル１０１は、基準クロック信号としてＣＬＫ＿ＢＡＳＥが入力され、対向デバイス２００にＣＬＫ＿ＩＯとして出力する。ＩＯセル１０２は、送信データが対向デバイス２００に対して出力されるとともに、対向デバイス２００から入力された受信データをＤ型フリップフロップ１０３に対して出力する。Ｄ型フリップフロップ１０３は、ＩＯセル１０２から入力された受信データをＣＬＫ＿ＢＡＳＥからＤｅｌａｙ素子１０５によって遅延されたクロック信号によって取り込みＤ型フリップフロップ１０４に出力する。Ｄ型フリップフロップ１０４は、Ｄ型フリップフロップ１０３から入力されたデータをＣＬＫ＿ＢＡＳＥによって取り込み出力する。
【０００６】
図７に示した回路において、ホストデバイス１００は、送信時はクロック信号とデータが同一方向（出力）のため、ＡＣ特性におけるタイミング条件を満足するのはそれほど難しくないが、受信時はクロック信号とデータが逆方向になるため（クロック信号は出力、データは入力）、取り込み初段のＤ型フリップフロップ１０３ではホストデバイス１００と対向デバイス２００間の基板上の配線遅延及びＩＯセル１０２の遅延を考慮する必要があるために、初段のＤ型フリップフロップ１０３のクロック端子の前段にＤｅｌａｙ素子１０５を挿入することでセットアップタイムやホールドタイムを確保している。しかし、図７に示した回路では、半導体装置を開発する前に予めＩＯセル遅延と基板上の配線遅延を計算しなければいけないという問題があった。ＩＯセル遅延は温度変化や基板上の容量により遅延値が変動するので正確な値を見積もるのはほとんど不可能であり、高温になるとタイミングマージンが少なくなる傾向にある。
【０００７】
このような問題を解決するために図８に示す回路が提案されている。図８に示した回路では、取り込み初段のＤ型フリップフロップ１０３のクロック端子に、ＩＯセル１０１を介したクロック信号を用いている。この回路ではＩＯセル遅延を計算する必要がない分、図７に示した回路よりタイミング条件を満足することが容易となっている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、図８に示した回路は、基板上でのインピーダンスコントロールを正確にしなければ、クロック信号に反射が発生し、誤動作の原因となってしまうという問題があった。このような問題があるために、従来は、クロック信号（ＣＬＫ＿ＢＡＳＥ）の周波数が高い場合、タイミングマージンが十分にある回路を設計することが困難であった。
【０００９】
また、図７、図８の回路の双方とも基板上の配線遅延とＩＯセル遅延の合計がクロック信号の１周期分を超えると、初段のＤ型フリップフロップ１０３と２段目のＤ型フリップフロップ１０４との間でタイミングバイオレーションが発生してしまうという問題があった。
【００１０】
本発明はかかる問題を解決することを目的としている。
【００１１】
即ち、本発明は、単一のクロック信号に同期してデータの送受信を行う際に、クロック信号を出力する回路が配線遅延・ＩＯセル遅延によらずに受信データを正しく受信することができるインタフェース回路及びそのインタフェース回路を備えた半導体装置を提供することを目的としている。
【課題を解決するための手段】
【００１２】
請求項１に記載された発明は、自身が出力した単一の基準クロック信号に同期してデータの送信を行う送信部と、前記基準クロック信号に同期してデータの受信を行う受信部と、を備えたインタフェース回路において、前記受信部が、前記基準クロック信号から１／（ｎ＋１）周期（ｎは１以上の整数）ずつ順次位相をずらした第１クロック信号から第ｎクロック信号までのｎ個のクロック信号を生成し、前記基準クロック信号も含めた（ｎ＋１）個のクロック信号を出力するクロック信号生成回路と、前記（ｎ＋１）個のクロック信号にそれぞれ同期してデータを受信する第１受信データポートから第（ｎ＋１）受信データポートの（ｎ＋１）個の受信データポートと、前記（ｎ＋１）個の受信データポートの中で最適なタイミングでデータを受信した受信データポートを選択する受信データポート選択回路と、前記（ｎ＋１）個の受信データポートの後段に設けられた前記受信データポート選択回路で選択された前記受信データポートから出力されるデータが書き込まれるＦＩＦＯ回路と、を備え、前記第１受信データポートから前記第（ｎ＋１）受信データポートは、それぞれ前記基準クロックおよび前記第１クロック信号から前記第ｎクロック信号に同期してデータを受信し、さらに、前記第１受信データポートから前記第（ｎ＋１）受信データポートは、それぞれ前記基準クロックおよび前記第１クロック信号から前記第ｎクロック信号のうち対応する前記クロック信号でデータを取り込むＤ型フリップフロップが直列に２段接続され、受信データポート選択回路は、前記第１受信データポートから前記第（ｎ＋１）受信データポートのうち、番号が連続する（ｎ＋１）／２個の前記受信データポートの直列接続された２段のＤ型フリップフロップのうち前段の前記Ｄ型フリップフロップが、所定のデータ群の先頭を示すスタートビットの受信が成功した場合に、前記番号が連続する（ｎ＋１）／２個の前記受信データポートの最後の番号の前記受信データポートを選択し、前記ＦＩＦＯ回路は、前記受信データポート選択回路が選択した前記受信データポートと同じ位相の前記クロック信号でデータが書き込まれる、ことを特徴とするインタフェース回路である。
【００１６】
請求項２に記載された発明は、請求項１に記載のインタフェース回路を備えたことを特徴とする半導体装置である。
【発明の効果】
【００１７】
請求項１に記載の発明によれば、受信したデータを最適なタイミングで取り込むことができるために、基板の配線遅延、ＩＯセルの遅延を考慮せずに基板設計を行うことが可能となる。また、温度ドリフトによらずタイミングマージンを確保することができる。また、クロック信号の周波数が高い場合でも動作可能なインタフェース回路を設計することが可能となる。また、ＦＩＦＯの書き込みクロックと読み出しクロックとを異なるクロック信号とすることで、受信データと内部クロック信号とのずれを吸収することができる。また、先頭を示すデータが現れるごと、即ち、所定のデータ群ごとに受信データポート選択を行うことができ、長時間動作時に発生する温度変化にも追従して動作することが可能となる。
【００２１】
請求項２に記載の発明によれば、ＰＣＩインタフェース、ＰＣカード、ＳＤカードやメモリースティックなどに用いられる半導体装置において配線遅延・ＩＯセル遅延によらずに受信データを正しく受信することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態にかかるインタフェース回路の回路図である。
【図２】図１に示した受信データ調整回路の回路図である。
【図３】図２に示した受信データ調整回路のタイミングチャートである。
【図４】図２に示した非同期吸収ＦＩＦＯの書き込み時のタイミングチャートである。
【図５】図２に示した非同期吸収ＦＩＦＯの読み出し時のタイミングチャートである。
【図６】本発明の他の実施形態にかかるインタフェース回路の回路図である。
【図７】従来のインタフェース回路の回路図である。
【図８】従来のインタフェース回路の回路図である。
【発明を実施するための形態】
【００２３】
以下、本発明の一実施形態を、図１乃至図５を参照して説明する。図１は、本発明の一実施形態にかかるインタフェース回路の回路図である。図２は、図１に示した受信データ調整回路の回路図である。図３は、図２に示した受信データ調整回路のタイミングチャートである。図４は、図２に示した非同期吸収ＦＩＦＯの書き込み時のタイミングチャートである。図５は、図２に示した非同期吸収ＦＩＦＯの読み出し時のタイミングチャートである。
【００２４】
図１に示したインタフェース回路２は、本発明の一実施形態にかかる半導体装置としてのホストデバイス１内に設けられており、ＩＯセル３、４と、受信データ調整回路５と、を備えている。即ち、ホストデバイス１は、ＩＣ（Integrated Circuit）やＬＳＩ（Large Scale Integration）といった半導体装置として構成されている。なお、本実施形態は一例としてＳＤカードのインタフェースに沿った回路としている。勿論本発明はＳＤカードに限らず、デバイス間で位相制御された単一のクロックを用い、そのクロックに同期してデータを送受信するインタフェースであれば適用可能である。
【００２５】
ＩＯセル３は、基準クロック信号としてＣＬＫ＿ＢＡＳＥが入力され、基板上の配線を介して接続された対向デバイス２０のＣＬＫ＿ＩＯ端子に対して出力する。ＩＯセル４は、図示しない送信部から出力された送信データが対向デバイス２０のＤＡＴ＿ＩＯ端子に対して出力されるとともに、対向デバイス２０のＤＡＴ＿ＩＯ端子から入力された受信データを受信データ調整回路５のＤＡＴ＿ＡＳＹＮＣ端子に対して出力する。
【００２６】
受信部としての受信データ調整回路５は、図２に示したように、入力端子としてＤＡＴ＿ＡＳＹＮＣとＣＬＫ＿ＡＳＹＮＣとＣＬＫ＿ＳＹＮＣとを備え、出力端子としてＤＡＴ＿ＳＹＮＣを備えている。受信データ調整回路５は、受信データポート６と、第１選択回路７と、クロック生成回路８と、第２選択回路９と、受信データポート選択回路１０と、非同期吸収ＦＩＦＯ１１と、を備えている。
【００２７】
受信データポート６は、第１受信データポート６０〜第（ｎ＋１）受信データポート６ｎまでのｎ（ｎは１以上の整数）＋１個のデータポートから構成されている。第１受信データポート６０は、図２に示したように、Ｄ型フリップフロップＦＦ０とＤ型フリップフロップＦＦ０＿２が直列に接続されている。Ｄ型フリップフロップＦＦ０の入力にはＤＡＴ＿ＡＳＹＮＣ端子が接続されている。さらに、Ｄ型フリップフロップＦＦ０の出力は後述する受信データポート選択回路１０へも接続されている。Ｄ型フリップフロップＦＦ０＿２の出力は第１選択回路６へ接続されている。また、Ｄ型フリップフロップＦＦ０とＤ型フリップフロップＦＦ０＿２には後述するクロック生成回路８で生成されたクロック信号ＣＬＫ０が接続されている。第２受信データポート６１〜第（ｎ＋１）受信データポート６ｎも対応するＤ型フリップフロップとクロック信号を用いて同様の構成となっている。
【００２８】
第１選択回路７は、Ｄ型フリップフロップＦＦ０＿２〜Ｄ型フリップフロップＦＦｎ＿２の出力を、後述する受信データポート選択回路１０が出力する選択信号ＳＥＬによって選択して非同期吸収ＦＩＦＯ１１のＤＩＮ端子に出力する。
【００２９】
クロック生成回路８は、ＣＬＫ＿ＡＳＹＮＣ端子から入力されたクロック信号をクロック信号ＣＬＫ０とし、ＣＬＫ０に対してバッファ回路などを１段挿入して位相をずらしたクロック信号をＣＬＫ１とし、ＣＬＫ０に対してバッファ回路などを２段挿入して位相をずらしたクロック信号をＣＬＫ２とし、ＣＬＫ０に対してバッファ回路などをｎ段挿入して位相をずらしたクロック信号をＣＬＫｎとして、それぞれ生成し、第２選択回路９に出力する。なお、クロック生成回路８は、バッファ回路１段あたり、ＣＬＫ＿ＡＳＹＮＣ端子から入力されたクロック信号の１／(ｎ＋１)周期だけ位相をずらしたクロック信号を生成している。つまり、クロック信号ＣＬＫ１は、クロック信号ＣＬＫ０に対して１／(ｎ＋１)周期だけ位相がずれ、クロック信号ＣＬＫ２は、クロック信号ＣＬＫ０に対して２／(ｎ＋１)周期だけ位相がずれ、クロック信号ＣＬＫｎは、クロック信号ＣＬＫ０に対してｎ／(ｎ＋１)周期だけ位相がずれている。
【００３０】
第２選択回路９は、クロック生成回路８から入力された位相をずらしたクロック信号を後述する受信データポート選択回路１０が出力する選択信号ＳＥＬによって選択して非同期吸収ＦＩＦＯ１１のＷＣＬＫ端子に出力する。
【００３１】
受信データポート選択回路１０は、Ｄ型フリップフロップＦＦ０〜ＦＦｎの出力（ＦＦ０＿ｏｕｔ〜ＦＦｎ＿ｏｕｔ）とＣＬＫ＿ＡＳＹＮＣ端子から入力されたクロック信号が入力されて、所定のデータ群の先頭を示すデータとしてのスタートビットを検出し、Ｄ型フリップフロップＦＦ０〜ＦＦｎの出力の中でＤＡＴ＿ＡＳＹＮＣ端子から入力されたデータ中のスタートビットを最適なタイミングで受信したＤ型フリップフロップのポインタ（０〜ｎ）を選択信号ＳＥＬとして出力する。
【００３２】
非同期吸収回路としての非同期吸収ＦＩＦＯ１１は、ＦＩＦＯ（First In, First Out）として構成された所定数のデータを記憶することができる回路であり、書き込みクロック端子ｗｃｌｋから入力されるクロック信号に同期してデータ入力端子Ｄ＿ＩＮから入力されるデータが書き込まれる。また、読み出しクロック端子ｒｃｌｋから入力されるクロック信号に同期してデータ出力端子Ｄ＿ＯＵＴから読み出される。書き込みクロック端子ｗｃｌｋは第２選択回路９で選択されたクロック信号が入力され、データ入力端子Ｄ＿ＩＮは第１選択回路７で選択された受信データポートのデータが入力されている。読み出しクロック端子ｒｃｌｋは基準クロック信号ＣＬＫ＿ＢＡＳＥが入力され、データ出力端子Ｄ＿ＯＵＴはＤＡＴ＿ＳＹＮＣ端子へ出力されている。
【００３３】
次に、上述した構成のインタフェース回路２の動作を説明する。インタフェース回路２は、受信データ調整回路５で対向デバイス２０からの受信データを非同期信号としてＤＡＴ＿ＡＳＹＮＣ端子から内部に取り込み、ＣＬＫ＿ＳＹＮＣ端子から入力されるクロック信号に同期してＤＡＴ＿ＳＹＮＣ端子からデータを出力する。
【００３４】
インタフェース回路２は、まず、受信データ調整回路５においてＤＡＴ＿ＡＳＹＮＣ端子よりスタートビット（ｓｔａｒｔ（０））を受信すると、それぞれのデータポート（Ｄ型フリップフロップＦＦ０〜ＦＦｎ）にスタートビットが取り込まれる。
【００３５】
スタートビットの受信後、受信データポート選択回路１０においてデータポート選択シーケンスが開始される（図３にタイミングチャートを示す）。データポート選択シーケンスでは、Ｄ型フリップフロップＦＦ０〜ＦＦｎまで順番に、正常にスタートビットが受信することができたかどうかチェックを行う。Ｍ回連続でスタートビットの受信に成功した時点で、データポート選択シーケンスは終了し、終了時のポインタが選択信号ＳＥＬとして出力される。つまり、Ｍ回連続でスタートビットの受信に成功した時点を最適なタイミングとしている。図３の例では、Ｍ＝４の場合であり、Ｄ型フリップフロップＦＦ１〜ＦＦ４まで４回連続でスタートビットの受信に成功したので、その４回目に成功したＤ型フリップフロップＦＦ４のポインタである“４”を選択信号ＳＥＬとして出力している。
【００３６】
ここで、Ｍ回の設定基準は、クロック生成回路８から出力されるクロック信号の位相がｍ個であった場合、Ｍ＝ｍ／２と設定している。これは、１回目の受信成功からｍ／２回目のクロックではクロックが半位相ずれているため、ＤＡＴ＿ＡＳＹＮＣに対して最もセットアップタイムとホールドタイムのマージンが大きくなるからである。
【００３７】
データポート選択シーケンスが終了し選択信号ＳＥＬが決定されると、図４に示したように、受信データポートから非同期吸収ＦＩＦＯ１１への書き込みが開始される。非同期吸収ＦＩＦＯ１１への書き込みクロック信号には受信データポート選択回路１０にて選択された第１〜第ｎ受信データポートのうちの１つと同一のクロック信号を使用する。図４の場合は選択信号ＳＥＬが“４”なのでＣＬＫ４を使用している。ここで、スタートビットが非同期吸収ＦＩＦＯ１１に到達する前に書き込みクロック信号を確定する必要がある為、受信データポートは２段以上（本実施形態では２段）のＤ型フリップフロップで受けてから、非同期吸収ＦＩＦＯ１１へデータを渡す必要がある。
【００３８】
非同期吸収ＦＩＦＯ１１へ書き込まれた受信データは、図５に示したように、書き込みクロック端子ｗｃｌｋから入力されるクロック信号（書き込みクロック）に同期して読み込みが行われる。この時、読み出し開始のタイミングは、書き込みクロックと読み出しクロック端子ｒｃｌｋから入力されるクロック信号（読み出しクロック）の位相ずれがないとした場合の２クロック後とする。これにより、ＩＯセル遅延や基板上の配線遅延による位相の遅れを吸収することができる。なお、図５中のｗ＿ｐｏｉｎｔｅｒはＦＩＦＯ回路の書き込み側のポインタ、ｒ＿ｐｏｉｎｔｅｒはＦＩＦＯ回路の読み出し側のポインタをそれぞれ示している。つまり、本実施形態では４ワードが記憶できるＦＩＦＯとしているが、ＦＩＦＯに記憶できるワード数は適用するインタフェースの種類や回路に合わせて適宜設定すればよい。
【００３９】
本実施形態によれば、インタフェース回路２に受信データ調整回路５を設け、受信データ調整回路５では、第１受信データポート〜第ｎ受信データポートのうち最適なタイミングでスタートビットが取り込まれた受信データポートを選択して、そのポインタを選択信号ＳＥＬとして、受信データポートを選択する第１選択回路７と、位相をずらした複数のクロック信号を選択する第２選択回路と、に出力しているので、受信データに最適なタイミングのクロック信号により取り込まれることができるために、基板の配線遅延、ＩＯセルの遅延を考慮せずに基板設計を行うことが可能となる。また、温度ドリフトによらずタイミングマージンを確保することができる。
【００４０】
また、非同期吸収ＦＩＦＯ１１を受信データポート６の後段に設け、選択信号ＳＥＬで選択された受信データポートからデータを入力し、同様に選択信号ＳＥＬで選択されたクロック信号を書き込みクロックとして入力し、さらに読み出しクロックとしてホストデバイス１から出力するクロックであるＣＬＫ＿ＢＡＳＥを入力しているので、受信データと内部クロック信号とのずれを吸収して、クロック周波数が高い場合でも動作可能なインタフェース回路を設計することができる。
【００４１】
また、受信データポート選択回路１０においてスタートビットの検出時に、受信データポートを選択しているので、スタートビットを検出するごとに受信データポート選択を行うことができ、長時間動作時に発生する温度変化にも追従して動作することが可能となる。
【００４２】
なお、図６に示したように、外部に出力するクロック信号（ＣＬＫ＿ＩＯ）と、非同期吸収ＦＩＦＯ１１の書き込みクロック信号（ＣＬＫ＿ＡＳＹＮＣ）と、を基準クロック信号（ＣＬＫ＿ＢＡＳＥ）から分周回路１２で生成した１／Ｎ分周クロックとしてもよい。この場合、基本的な動作は上述した実施形態と同様で、非同期吸収ＦＩＦＯ１１からデータを読み出すタイミングを毎クロック行うのではなく、Ｎクロックごとにデータを切り替えればよい。
【００４３】
また、上述した実施形態ではスタートビットがＭ回連続して受信に成功したことで第１データポート６１〜第（ｎ＋１）データポート６ｎの選択を行っていたが、スタートビットに限らず、所定のデータ群の先頭を示す情報（ビット）であればよい。
【００４４】
また、上述した実施形態では非同期吸収回路としてＦＩＦＯを用いていたが、ＦＩＦＯに代えてハンドシェイク回路や、マルチプレクサを用いる方法、或いは受信側（ＤＡＴ＿ＳＹＮＣ側）で取り込み可能な幅のパルスを送信側（受信データ調整回路５内など）で生成する方法など、ホストデバイス１内のクロック（ＣＬＫ＿ＢＡＳＥ）とは非同期なＤＡＴ＿ＩＯとのずれを吸収（同期化）して取り込める回路であればよい。
【００４５】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【００４６】
１          ホストデバイス（半導体装置）
２          インタフェース回路
３、４      ＩＯセル
５          受信データ調整回路（受信部）
６          受信データポート
１０        受信データポート選択回路
１１        非同期吸収ＦＩＦＯ（非同期吸収回路）
【先行技術文献】
【特許文献】
【００４７】
【特許文献１】特開２００８−０７０３１７号公報
【図１】
0005532724.tif 000002
【図２】
0005532724.tif 000003
【図３】
0005532724.tif 000004
【図４】
0005532724.tif 000005
【図５】
0005532724.tif 000006
【図６】
0005532724.tif 000007
【図７】
0005532724.tif 000008
【図８】
0005532724.tif 000009