説明

データ同期化回路、通信インタフェース回路及び通信装置

【課題】データを同期化させるクロック信号の許容される周波数の範囲を広げる。
【解決手段】実施形態によれば、データ同期化回路SYNC0は、データホールド回路BLC0と、受信タイミング生成回路BLB0と、更新タイミング調整回路BLE0とを備えている。データホールド回路BLC0は、クロック信号CLK_A0に同期したデータDOUT0を受信して、当該データDOUT0がクロック信号CLK_Bに同期化されたデータSYNC_DATA0を出力する。更新タイミング調整回路BLE0は、受信タイミング生成回路BLB0内のDフリップフロップ230_0,230_1及び230_2の値の更新のタイミングを、クロック信号CLK_Bに同期した更新イネーブル信号UE0に基づいて制限する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、データ同期化回路、通信インタフェース回路及び通信装置に関する。
【背景技術】
【0002】
ホストの周辺デバイスは、一般に当該ホストと接続して用いられる。周辺デバイスは、ホストとの間でデータを送受信する通信インタフェース回路を備えている。通信インタフェース回路は、第1のクロック信号に同期したデータを当該第1のクロック信号とは異なる第2のクロック信号に同期化させるデータ同期化回路を備えている。
【0003】
もし、周辺デバイスが、複数のホストと接続して用いられる場合、当該周辺デバイスの通信インタフェース回路として、マルチポートインタフェース回路を用いる必要がある。ここで、マルチポートインタフェース回路が第1のポート及び第2のポートを備えており、当該第1のポート及び第2のポートを介して、それぞれ第1のホスト及び第2のホストと接続されているものとする。このようなマルチポートインタフェース回路は、第1のポートの後述する第1のリンク層で適用される第1のデータ同期化回路と第2のポートの後述する第2のリンク層で適用される第2のデータ同期化回路とを備えている。
【0004】
第1のポートは、第1のリンク層及び第1のトランスポート層から構成され、第2のポートは、第2のリンク層及び第2のトランスポート層から構成される。またアプリケーション層は、マルチポートインタフェース回路に1つだけ存在する。その理由は、各ポート(第1及び第2のポートの各々)で受信されたコマンドを1つのアプリケーション層で一括して管理するためである。したがって、アプリケーション層に入力されるクロック信号は、1系統であることが好ましい。さもないとアプリケーション層内で、上述の第1及び第2のデータ同期化回路に相当する同期化回路が必要となる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許第3798292号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
第1のリンク層には第1のクロック信号CLK_A0及び第2のクロック信号CLK_B0が入力され、第2のリンク層には第1のクロック信号CLK_A1及び第2のクロック信号CLK_B1が入力されるものとする。ここで、第1のクロック信号CLK_A0及びCLK_A1の周波数が同一であるとは限らない。同様に、第2のクロック信号CLK_B0及びCLK_B1の周波数も同一であるとは限らない。
【0007】
そのため、第1及び第2のポートに共通の1つのアプリケーション層には、第2のクロック信号CLK_B0及びCLK_B1のいずれとも周波数を異にする第3のクロック信号CLK_Cが入力される。この場合、アプリケーション層には、第2のクロック信号CLK_B0と第3のクロック信号CLK_Cとを同期化するための同期化回路と、第2のクロック信号CLK_B1と第3のクロック信号CLK_Cとを同期化するための同期化回路とが必要となる。
【0008】
もし、第2のクロック信号CLK_B0及びCLK_B1の許容される周波数範囲を広げることができるならば、第1及び第2のリンク層(第1及び第2のデータ同期回路)において、第2のクロック信号CLK_B0及びCLK_B1に代えて、単一の第2のクロック信号CLK_Bを共通に使用することが可能となる。この場合、第1及び第2のポートに共通の1つのアプリケーション層に、第2のクロック信号CLK_Bを使用することが可能となり、新たに同期化回路を必要とする第3のクロック信号CLK_Cを適用しなくて済む。
【0009】
このため、データ同期化回路、通信インタフェース回路及び通信装置において、データを同期化させるクロック信号の許容される周波数範囲を広げることが望まれている。
【課題を解決するための手段】
【0010】
実施形態によれば、データ同期化回路は、データホールド手段と、受信タイミング生成手段と、更新タイミング調整手段とを具備する。前記データホールド手段は、第1のクロック信号に同期した第1のデータを第2のタイミング信号に基づいて受信して、当該受信された第1のデータが前記第1のクロック信号とは異なる周波数の第2のクロック信号に同期化された第2のデータを出力する。前記受信タイミング生成手段は、前記第1のデータに対応し、前記第1のクロック信号に同期した第1のタイミング信号から、前記第2のクロック信号に同期したタイミング信号を前記第2のタイミング信号として生成するための複数段のフリップフロップを備えている。前記更新タイミング調整手段は、前記複数段のフリップフロップの値の更新のタイミングを、前記第2のクロック信号に同期した更新イネーブル信号に基づいて制限する。
【図面の簡単な説明】
【0011】
【図1】実施形態に係るマルチポートインタフェース回路を備えたシステムの構成を示す図。
【図2】同実施形態で適用されるデータ同期化回路の構成を示すブロック図。
【図3】図2に示されるデータ同期化回路の動作を説明するためのタイミングチャート。
【図4】図1に示されるマルチポートインタフェース回路の構成を示すブロック図。
【図5】図1に示されるマルチポートインタフェース回路が有する2つの通信ポートの通信プロトコル階層構造とアプリケーション層との関係の一例を、各階層で適用されるクロック信号と対応付けて示す図。
【図6】同実施形態で適用される更新イネーブル信号生成器の構成を示すブロック図。
【図7】図6に示される更新イネーブル信号生成器の動作を説明するためのタイミングチャート。
【図8】同実施形態の変形例で適用されるマルチポートインタフェース回路が有する2つの通信ポートの通信プロトコル階層構造とアプリケーション層との関係の一例を、各階層で適用されるクロック信号と対応付けて示す図。
【図9】同変形例で適用されるクロック生成器の構成を示すブロック図。
【発明を実施するための形態】
【0012】
以下、実施の形態につき図面を参照して説明する。
図1は一つの実施形態に係るマルチポートインタフェース回路を備えたシステムの構成を示す。
図1において、ホストH0及びH1は、それぞれ通信回線CL0及びCL1を介して、当該ホストH0及びH1の周辺デバイスとしての、例えばストレージデバイス10と接続されている。ストレージデバイス10は、例えば磁気ディスク(ハードディスク)ドライブ(HDD)、或いはソリッドステートドライブ(SSD)である。
【0013】
本実施形態において、ホストH0は1.5Gbps(ギガビット/秒)のインタフェース速度をサポートし、ホストH1は6Gbpsのインタフェース速度をサポートしているものとする。ホストH0及びH1はそれぞれストレージデバイス10に対してコマンドを発行し、当該ストレージデバイス10との間で当該コマンドの指定するデータを送受信する。
【0014】
ストレージデバイス10は、当該ストレージデバイス10内の各部を制御するコントローラ11を備えている。コントローラ11は、複数の通信ポートを有する通信インタフェース回路(以下、マルチポートインタフェース回路と称する)110を備えている。本実施形態において、マルチポートインタフェース回路110は、SAS(Serial Attached SCSI)インタフェースをサポートしており、ホストH0及びH1とマルチポートインタフェース回路110との間では、シリアルデータが転送されるものとする。マルチポートインタフェース回路110は、ホストH0及びH1から転送されるシリアルデータを、それぞれ、クロック信号CLK_A0及びCLK_A1に同期したn+1(nは自然数)ビットのバスデータ[n:0]に変換するシリアル/パラレル変換器(図示せず)を備えている。なお、ホストH0及びH1とマルチポートインタフェース回路110との間で、例えばp+1(pは自然数)ビットのパラレルデータ[p:0]が転送されても構わない。もし、p+1がn+1に等しくないならば、マルチポートインタフェース回路110に、p+1ビットのパラレルデータ[p:0]をn+1ビットのバスデータ[n:0]に変換するデータ幅変換器を備えればよい。なお、以下の説明では、バスデータを単にデータと称する場合もある。
【0015】
マルチポートインタフェース回路110は、第1の通信ポート及び第2の通信ポートを有している。図5を参照して後述するように、第1の通信ポートはリンク層500(Link0)及びトランスポート層510(Trs0)から構成され、第2の通信ポートはリンク層501(Link1)及びトランスポート層511(Trs1)から構成されている。
【0016】
マルチポートインタフェース回路110は、第1の通信ポートの一部をなすデータ同期化回路SYNC0と、第2の通信ポートの一部をなすデータ同期化回路SYNC1を備えている。データ同期化回路SYNC0及びSYNC1は、それぞれ、リンク層Link0及びLink1に存在する。なお、マルチポートインタフェース回路110が2つを超える通信ポートを有していてもよい。つまりマルチポートインタフェース回路110が、2つを超えるホストと接続可能な構成であってもよい。
【0017】
データ同期化回路(第1のデータ同期化回路)SYNC0は、クロック信号(第1のクロック信号)CLK_A0に同期したn+1ビットのデータ(第1のデータ)DATA0[n:0]をクロック信号(第2のクロック信号)CLK_Bに同期化させるように構成されている。データ同期化回路(第2のデータ同期化回路)SYNC1は、クロック信号(第3のクロック信号)CLK_A1に同期したn+1ビットのデータ(第3のデータ)DATA1[n:0]をクロック信号(第4のクロック信号=第2のクロック信号)CLK_Bに同期化させるように構成されている。
【0018】
図2は、図1に示されるデータ同期化回路SYNC0の構成の一例を示すブロック図である。データ同期化回路SYNC0は、ラッチタイミング生成回路BLA0、受信タイミング生成回路BLB0、データホールド回路BLC0、データホールド回路BLD0及び更新タイミング調整回路BLE0から構成される。ラッチタイミング生成回路BLA0及びデータホールド回路BLD0は、データ同期化回路SYNC0(リンク層Link0)内でのデータ送受信に関して送信側を構成しており、クロック信号CLK_A0に同期して動作する。受信タイミング生成回路BLB0及びデータホールド回路BLC0は、データ同期化回路SYNC0(リンク層Link0)内でのデータ送受信に関して受信側を構成しており、クロック信号CLK_Bに同期して動作する。送信側及び受信側が、データ同期化回路SYNC0(リンク層Link0)と外部との間のデータ送受信の関係を示すものでないことに注意されたい。
【0019】
ラッチタイミング生成回路BLA0は、クロック信号CLK_A0に同期し、且つデータDATA0[n:0]の入力タイミングに対応した、第1のタイミング信号としてのラッチトリガ信号(ラッチタイミング信号)LT0を生成する。ラッチタイミング生成回路BLA0は、Dフリップフロップ(以下、DFFと称する)210及び排他的論理和ゲート(以下、EXORと称する)220とから構成される。EXOR220は、データDATA0[n:0]の入力タイミングに対応したラッチ信号LATCH0とDFF210の出力との排他的論理和を演算する。DFF210は、EXOR220の出力をクロック信号CLK_A0に応じてラッチする。DFF210の出力はラッチトリガ信号LT0として用いられる。
【0020】
受信タイミング生成回路BLB0は、ラッチタイミング生成回路BLA0(DFF210)から出力されるラッチトリガ信号LT0に基づいて、クロック信号CLK_Bに同期した第2のタイミング信号としての受信タイミング信号DG0を生成する。受信タイミング信号DG0は、クロック信号CLK_A0とクロック信号CLK_Bとの周波数の違い(速度差)を吸収して、データホールド回路BLC0がデータホールド回路BLD0から送信されたデータDOUT0[n:0]を受信する(取り込む)ためのタイミング信号として用いられる。
【0021】
受信タイミング生成回路BLB0は、複数段のDFF、例えば3段のDFF230_0,230_1及び230_2と、EXOR240と、アンドゲート(以下、ANDと称する)250とから構成される。DFF230_0,230_1及び230_2の各々は、入力信号をクロック信号CLK_Bに応じてラッチする。本実施形態では、ラッチタイミング生成回路BLA0(DFF210)の出力と1段目(先頭段)のDFF230_0の入力との間、1段目のDFF230_0の出力と2段目のDFF230_1の入力との間、及び2段目のDFF230_1の出力と3段目(最終段)のDFF230_2の入力との間には、それぞれ、後述するセレクタ310_0,310_1及び310_2が設けられている。つまり、セレクタ310_0,310_1及び310_2からの出力信号が、それぞれDFF310_0,310_1及び310_2の入力信号として用いられる。
【0022】
データホールド回路BLC0は、データホールド回路BLD0から出力(送信)される、データDATA0[n:0]に対応したデータDOUT0[n:0]を取り込んでホールドする。データホールド回路BLC0は、データDATA0[n:0]の各ビットに対応した、DFF260及びセレクタ270とを備えている。つまり図2には、作図の都合で1対のDFF260及びセレクタ270のみが示されているが、データホールド回路BLC0は、データDATA0[n:0]のビット数n+1に一致する数の、DFF260及びセレクタ270の対を備えている。以下の説明では便宜的に、DFF260及びセレクタ270が、データDATA0[n:0]に対応しているものとして説明する。
【0023】
セレクタ270は、データホールド回路BLD0に入力されるデータDATA0[n:0]またはDFF260の出力のいずれか一方を、受信タイミング生成回路BLB0から出力される受信タイミング信号DG0に応じて選択する。DFF260は、セレクタ270の出力をクロック信号CLK_Bに応じてラッチする。つまりDFF260は、データホールド回路BLD0から出力されるデータDOUT0[n:0]を受信タイミング信号DG0に応じて取り込み(受信し)、クロック信号CLK_Bの次のタイミング(クロック)でデータSYNC_DATA0[n:0]として出力する。
【0024】
データホールド回路BLC0はまた、受信タイミング信号DG0をクロック信号CLK_Bに応じてラッチするDFF280を備えている。DFF280の出力信号は、データSYNC_DATA0が有効となったことを示すタイミング信号VALID0として用いられる。
【0025】
データホールド回路BLD0は、ラッチ信号LATCH0の示すタイミングで当該データホールド回路BLD0に入力されるデータDATA0[n:0]を取り込んでホールドする。データホールド回路BLD0は、データDATA0[n:0]の各ビットに対応した、DFF290及びセレクタ300とを備えている。つまり図2には、作図の都合で1対のDFF290及びセレクタ300のみが示されているが、データホールド回路BLD0は、データDATA0[n:0]のビット数n+1に一致する数の、DFF290及びセレクタ300の対を備えている。以下の説明では便宜的に、DFF290及びセレクタ300が、データDATA0[n:0]に対応しているものとして説明する。
【0026】
セレクタ300は、データホールド回路BLD0に入力されるデータDATA0[n:0]またはDFF290の出力のいずれか一方を、データ選択信号DATA_SEL0に応じて選択する。本実施形態において、セレクタ300は、データ選択信号DATA_SEL0が高レベル(“1”)の場合に、データDATA0[n:0]を選択する。データ選択信号DATA_SEL0はクロック信号CLK_A0に同期しており、ラッチ信号LATCH0よりもクロック信号CLK_A0の1サイクル後のタイミングを示す。DFF290は、セレクタ300の出力をクロック信号CLK_A0に応じてラッチする。つまりDFF290は、データDATA0[n:0]をデータ選択信号DATA_SEL0に応じて取り込み、クロック信号CLK_A0の次のタイミング(クロック)でデータDOUTとして出力する。
【0027】
更新タイミング調整回路BLE0は、受信タイミング生成回路BLB0内のDFF230_0,230_1及び230_2が保持する値を更新するタイミングを、更新イネーブル信号UE0に応じてクロック信号CLK_BのN(Nは自然数)サイクルに1回に調整する。本実施形態において、Nは4である。更新タイミング調整回路BLE0は、セレクタ310_0,310_1及び310_2から構成される。
【0028】
セレクタ310_0は、ラッチタイミング生成回路BLA0(DFF210)から受信タイミング生成回路BLB0に出力されるラッチタイミングを示すラッチトリガ信号LT0またはDFF230_0の出力GQ0_0のいずれか一方を、更新イネーブル信号UE0に応じて選択する。本実施形態において、セレクタセレクタ310_0は、更新イネーブル信号UE0が高レベル(“1”)の場合に、ラッチトリガ信号LT0を選択する。DFF230_0は、セレクタ310_0の出力をクロック信号CLK_Bに応じてラッチする。
【0029】
セレクタ310_1は、DFF230_0の出力GQ0_0またはDFF230_1の出力GQ0_1のいずれか一方を、更新イネーブル信号UE0に応じて選択する。DFF230_1は、セレクタ310_1の出力をクロック信号CLK_Bに応じてラッチする。セレクタ310_2は、DFF230_1の出力GQ0_1またはDFF230_2の出力GQ0_2のいずれか一方を、更新イネーブル信号UE0に応じて選択する。DFF230_2は、セレクタ310_2の出力をクロック信号CLK_Bに応じてラッチする。本実施形態において、セレクタセレクタ310_1及び310_2は、それぞれ、更新イネーブル信号UE0が高レベルである(アサートされている)場合に、DFF230_1及び230_2の出力を選択する。
【0030】
このように、DFF230_0,230_1及び230_2の値が更新されるタイミングは、クロック信号CLK_Bの示すタイミングのうち、更新イネーブル信号UE0が高レベルの期間のタイミングに制限される。つまり、DFF230_0,230_1及び230_2の値が更新されるタイミングが、更新タイミング調整回路BLE0によって制限(調整)される。
【0031】
データ同期化回路SYNC1も、図2に示したデータ同期化回路SYNC0と同様の構成を有している(図4参照)。必要ならば、上述のデータ同期化回路SYNC0の構成についての説明において、SYNC0をSYNC1に、BLA0,BLB0,BLC0,BLD0及びBLE0を、それぞれBLA1,BLB1,BLC1,BLD1及びBLE1に読み替えられたい。同様に、DFF210,230_0,230_1,230_2,260,280及び290を、それぞれDFF211,231_0,231_1,231_2,261,281及び291に、EXOR220及び240を、それぞれEXOR221及び241に、AND250をAND251に、そしてセレクタ270,300,310_0,310_1及び310_2を、それぞれセレクタ271,301,311_0,311_1及び311_2に読み替えられたい。同様に、LATCH0,CLK_A0,DATA0,DATA_SEL0,LT0,GQ0_0,GQ0_1,GQ0_2,DG0,UE0,DOUT0,SYNC_DATA0及びVALID0を、それぞれ、LATCH1,CLK_A1,DATA1,DATA_SEL1,LT1,GQ1_0,GQ1_1,GQ1_2,DG1,UE1,DOUT1,SYNC_DATA1及びVALID1に読み替えられたい。
【0032】
次に、図2に示されるデータ同期化回路SYNC0の動作について、図3のタイミングチャートを参照して説明する。
まず、クロック信号CLK_A0で動作するデータホールド回路BLD0に、例えばクロック信号CLK_A0のサイクル(タイミング)T02で、データDATA0[n:0]としてのデータData_Aが入力されたものとする。するとデータData_Aは、データ選択信号DATA_SEL0に応じて、データホールド回路BLD0内のDFF290に取り込まれる。DFF290に取り込まれたデータData_Aは、次のサイクルT03で、DOUT0[n:0]としてDFF210から出力される。
【0033】
また、データホールド回路BLD0と同様にクロック信号CLK_A0で動作するラッチタイミング生成回路BLA0には、ラッチ信号LATCH0が入力される。ラッチ信号LATCH0は、クロック信号CLK_A0に同期しており、データ選択信号DATA_SEL0よりもクロック信号CLK_A0の1サイクル(周期)前に高レベル(有効)となる。ここでは、ラッチ信号LATCH0が、サイクルT02よりも1サイクル前のサイクルT01で高レベルとなったものとする。つまり、有効なラッチ信号LATCH0が、サイクルT01でラッチタイミング生成回路BLA0に入力されたものとする。
【0034】
するとDFF210は、ラッチ信号LATCH0をクロック信号CLK_A0に応じてラッチし、当該ラッチした信号を次のサイクルT02でラッチトリガ信号LT0として出力する。このラッチトリガ信号LT0は、次にラッチ信号LATCH0が有効となるまでクロック信号CLK_A0に応じてDFF210にラッチされる。本実施形態において、データDATA0[n:0]は8ビット(n=7)であり、4つのデータDATA0[n:0]を組み合わせて32ビットデータが構成される。このためデータホールド回路BLD0には、クロック信号CLK_A0の4サイクル毎にデータDATA0[n:0]が入力され、ラッチ信号LATCH0もその入力タイミングに同期して、クロック信号CLK_A0の4サイクルに1回の割合で有効となる(つまりアサートされる)。この場合、DFF210の出力、つまりラッチトリガ信号LT0は、クロック信号CLK_A0の4サイクルの期間毎に、高レベルと低レベルとを繰り返す。
【0035】
一方、クロック信号CLK_Bで動作する受信タイミング生成回路BLB0において、DFF230_0は、有効なラッチタイミング信号LT0が当該受信タイミング生成回路BLB0に入力されるサイクルT02の開始時から最初に到来するクロック信号CLK_BのサイクルT12で、信号GQ0_0を出力する。クロック信号CLK_Bの周波数は、後述するように360MHz≦CLK_B≦1200MHzの範囲にあるものとする。
【0036】
ここで、更新タイミング調整回路BLE0が存在せず、受信タイミング生成回路BLB0内のDFF230_0,230_1及び230_2の値の更新タイミングが調整(制限)されない場合を想定する。つまり、受信タイミング生成回路BLB0内のDFF230_0,230_1,230_2の入力側に、それぞれ、セレクタ310_0,310_1及び310_2が設けられていない従来技術を想定する。この場合、DFF230_1は、図3のタイミングチャートと異なり、サイクルT12の次のクロック信号CLK_BのサイクルT13で、信号GQ0_1を出力する。同様にDFF230_2は、図3のタイミングチャートと異なり、サイクルT13の次のクロック信号CLK_BのサイクルT14で、信号GQ0_2を出力する。EXOR240は、DFF230_1の出力とDFF230_2の出力との排他的論理和を演算する。更新タイミング調整回路BLE0が存在しない場合、このEXOR240の排他的論理和演算結果が、受信タイミング信号DG0としてデータホールド回路BLC0で用いられることになる。
【0037】
(a)次に更新タイミング調整回路BLE0が存在しない状態で、クロック信号CLK_A0よりクロック信号CLK_Bの周波数が低いものとする。この場合、データホールド回路BLD0でデータDATA0[n:0]としてのデータData_A、Data_B、…をホールドしている期間(ホールド期間H)に、受信タイミング信号DG0により、データホールド回路BLC0(つまり、クロック信号CLK_Bで動作するデータホールド回路BLC0)にデータを取り込む必要がある。ホールド期間Hとは、データDATA0[n:0]がデータホールド回路BLC0に入力されてから、当該データホールド回路BLC0から出力し終えるまでの期間である。
【0038】
受信タイミング信号DG0を生成するためには、受信タイミング生成回路BLB0内のDFFの個数(段数)がmの場合、クロック信号CLK_Bのmクロック(サイクル)の期間を必要とする。したがって、クロック信号CLK_Bの周波数は、クロック信号CLK_A0の周波数に対して、
CLK_B≧CLK_A0×m/H (1)
を満たす必要がある。
【0039】
(b)これに対し、更新タイミング調整回路BLE0が存在しない状態で、クロック信号CLK_A0よりクロック信号CLK_Bの周波数が高いものとする。このような場合、受信タイミング信号DG0は、データがデータホールド回路BLC0に入力されたタイミングから、クロック信号CLK_A0の1サイクル経過後に出力される必要がある。受信タイミング信号DG0は、受信タイミング生成回路BLB0おける複数(m)段のDFFにおける(m−1)段目のDFFからの出力信号の出力タイミング、すなわち、データがデータホールド回路BLC0に入力されたタイミングから、クロック信号CLK_Bの(m−1)サイクル経過後に出力される。したがって、クロック信号CLK_Bの周波数は、クロック信号CLK_A0の周波数に対して、
CLK_B≦CLK_A0×(m−1) (2)
を満たす必要がある。
【0040】
つまり更新タイミング調整回路BLE0が存在しない場合、クロック信号CLK_Bの周波数は、クロック信号CLK_A0の周波数に対して
CLK_A0×m/H≦CLK_B≦CLK_A0×(m−1) (3)
を満たす必要がある。
【0041】
このことは、クロック信号CLK_B及びクロック信号CLK_A1の周波数についても同様である。つまり、更新タイミング調整回路BLE1が存在しない場合、クロック信号CLK_Bの周波数は、クロック信号CLK_A1の周波数に対して
CLK_A1×m/H≦CLK_B≦CLK_A1×(m−1) (4)
を満たす必要がある。
【0042】
ここで、m=3、H=5、CLK_A0=150MHz、A1=600MHzであるとする。
更新タイミング調整回路BLE0が存在しない場合に、データ同期化回路SYNC0で必要なクロック信号CLK_Bの周波数条件は、
90MHz≦CLK_B≦300MHz
for CLK_A0=150MHz (5)
である。
【0043】
一方、更新タイミング調整回路BLE1が存在しない場合に、データ同期化回路SYNC1で必要なクロック信号CLK_Bの周波数条件は、
360MHz≦CLK_B≦1200MHz
for CLK_A0=600MHz (6)
である。
【0044】
以上のクロック信号CLK_Bの周波数条件から明らかなように、データ同期化回路SYNC0及びSYNC1に、それぞれ、更新タイミング調整回路BLE0及びBLE1が存在しないならば、m=3、H=5、CLK_A0=150MHz、A1=600MHzの場合、データ同期化回路SYNC0とデータ同期化回路SYNC1とで、クロック信号CLK_Bの周波数範囲が全く異なる。このため、データ同期化回路SYNC0に適合する周波数のクロック信号CLK_B0と、データ同期化回路SYNC1に適合する周波数のクロック信号CLK_B1とが必要となる。したがって、データ同期化回路SYNC0及びSYNC1に共通のアプリケーション層では、クロック信号CLK_B0及びCLK_B1のいずれとも周波数を異にするクロック信号CLK_Cを必要とする。この場合、アプリケーション層には、クロック信号CLK_B0とクロック信号CLK_Cとを同期化するための同期化回路と、クロック信号CLK_B1とクロック信号CLK_Cとを同期化するための同期化回路とが必要となる。
【0045】
これに対して、更新タイミング調整回路BLE0及びBLE1が、それぞれ、データ同期化回路SYNC0及びSYNC1に備えられている本実施形態では、以下に詳述するように、データ同期化回路SYNC0及びSYNC1において共通のクロック信号CLK_Bを適用できる。
【0046】
本実施形態において、ラッチタイミング生成回路BLA0内のDFF210から出力されるラッチトリガ信号LT0は、更新イネーブル信号UE0がアサートされている期間だけ、更新タイミング調整回路BLE0内のセレクタ310_0によって、受信タイミング生成回路BLB0内の1段目のDFF230_0に出力される。更新イネーブル信号UE0は、クロック信号CLK_Bの4サイクルに1回アサートされる。即ち更新イネーブル信号UE0は、図3に示すように、例えばサイクルT11,T15及びT19などにおいてアサートされる。
【0047】
DFF230_0は、更新イネーブル信号UE0がアサートされている期間のクロック信号CLK_Bに応じて、ラッチトリガ信号LT0(より詳細には、ラッチトリガ信号LT0の2値レベル)をラッチする。即ちDFF230_0は、更新イネーブル信号UE0がアサートされている期間のクロック信号CLK_B、例えばサイクルT11の期間のクロック信号CLK_Bに応じて、自身がラッチしている値を、その時点のラッチトリガ信号LT0の2値レベルに更新する。DFF230_0は、サイクルT11の次のクロック信号CLK_BのサイクルT12で、自身がラッチしている値を、図3に示すように信号GQ0_0として出力する。
【0048】
更新イネーブル信号UE0がアサートされていない期間、つまりクロック信号CLK_Bの4サイクルのうちの3サイクルの期間、例えばサイクルT12〜T14の期間は、セレクタ310_0は、DFF230_0から出力される信号GQ0_0を、当該DFF230_0に出力する。DFF230_0は、当該DFF230_0自身が出力する信号GQ0_0を、サイクルT12〜T14におけるクロック信号CLK_Bに応じてラッチする。このため、DFF230_0にラッチされている値は、サイクルT11に後続するサイクルT12〜T14の期間更新されない。つまり、DFF230_0は、サイクルT11〜T14の4サイクルの期間、同一の値を保持する。
【0049】
一方、ラッチタイミング生成回路BLA0内のDFF210は、前述したように、クロック信号CLK_A0の4サイクルの期間毎に状態遷移する。換言するならば、DFF210の出力であるラッチトリガ信号LT0は、クロック信号CLK_A0の4サイクルの期間、同一の状態を示す。このため、クロック信号CLK_A0のサイクルT02〜T05の期間において、サイクルT11以外に、更新イネーブル信号UE0がアサートされるクロック信号CLK_Bのサイクル、つまりサイクルT15,T19及びT113で、DFF230_0にラッチされている値が更新されても、その値自体は変化しない。このDFF230_0の状態は、クロック信号CLK_Bの16サイクルの期間保持される。
【0050】
DFF230_0から出力される信号GQ0_0は、更新イネーブル信号UE0がアサートされている期間だけ、更新タイミング調整回路BLE0内のセレクタ310_1によって、受信タイミング生成回路BLB0内の2段目のDFF230_1に出力される。DFF230_1は、更新イネーブル信号UE0がアサートされている期間のクロック信号CLK_Bに応じて、信号GQ0_0をラッチする。即ちDFF230_1は、更新イネーブル信号UE0がアサートされている期間のクロック信号CLK_B、例えばサイクルT15の期間のクロック信号CLK_Bに応じて、自身がラッチしている値を、その時点の信号GQ0_0の2値レベルに更新する。DFF230_1は、サイクルT15の次のクロック信号CLK_BのサイクルT16で、自身がラッチしている値を、図3に示すように信号GQ0_1として出力する。
【0051】
DFF230_1から出力される信号GQ0_1は、更新イネーブル信号UE0がアサートされている期間だけ、更新タイミング調整回路BLE0内のセレクタ310_2によって、受信タイミング生成回路BLB0内の3段目のDFF230_2に出力される。DFF230_2は、更新イネーブル信号UE0がアサートされている期間のクロック信号CLK_Bに応じて、信号GQ0_1をラッチする。即ちDFF230_2は、更新イネーブル信号UE0がアサートされている期間のクロック信号CLK_B、例えばサイクルT19の期間のクロック信号CLK_Bに応じて、自身がラッチしている値を、その時点の信号GQ0_1の2値レベルに更新する。DFF230_2は、サイクルT19の次のクロック信号CLK_BのサイクルT110で、自身がラッチしている値を、図3に示すように信号GQ0_2として出力する。
【0052】
EXOR240(第1の論理ゲート)は、DFF230_1から出力される信号GQ0_1とDFF230_2から出力される信号GQ0_2との排他的論理和を演算する。EXOR240は、排他的論理和演算により、信号GQ0_1(DFF230_1の出力)及び信号GQ0_2(DFF230_2の出力)の値が異なる状態(ここでは、上記両出力の値がラッチタイミング信号LT0の示すタイミングの後で最初に異なる状態)を検出する。なお、このような状態を検出する論理ゲートであれば、EXOR以外の論理ゲートを用いてもよい。
【0053】
AND250(第2の論理ゲート)は、EXOR240の出力信号(排他的論理和演算結果)を、更新イネーブル信号UE0がアサートされている期間だけ、受信タイミング信号DG0として出力する。これにより、更新イネーブル信号UE0がクロック信号CLK_Bの4サイクルに1回の割合でアサートされるにも拘わらず、受信タイミング信号DG0を、クロック信号CLK_Bの16サイクルに1回の割合でアサートさせることができる。しかも、受信タイミング信号DG0は、ラッチトリガ信号LT0がアサートされた後で、且つデータDOUT0が切り替えられた後のタイミングでアサートされる。
【0054】
ここで、図3に示されるように、無効なデータXXXから一連のデータData_A,Data_B,…のうちの先頭のデータData_Aに切り替えられるものとする。この場合、受信タイミング信号DG0は、ラッチトリガ信号LT0がアサートされた後で、且つデータDOUT0が無効なデータXXXからデータData_Aに切り替えられた後のタイミング(具体的には、ラッチトリガ信号LT0がアサートされたクロック信号CLK_A0のサイクルT01からクロック信号CLK_Bの7サイクルが経過したタイミング)でアサートされる。このため、クロック信号CLK_Bの周波数がクロック信号CLK_A0の周波数(CLK_A0=150MHz)よりも高くても(360MHz≦CLK_B≦1200MHz)、データホールド回路BLC0において、無効なデータXXXがDFF260からデータSYNC_DATA0[n:0]として出力されおそれはない。
【0055】
これに対して従来技術では、受信タイミング生成回路BLB0内のDFFの段数が本実施形態と同様に3(m=3)の場合、ラッチトリガ信号LT0がアサートされたクロック信号CLK_A0のサイクルT01からクロック信号CLK_Bの2サイクルが経過した後に、受信タイミング信号DG0がアサートされる。このため、クロック信号CLK_Bの周波数が上述のようにクロック信号CLK_A0の周波数の2倍を超えている場合、データDOUT0が無効なデータXXXからデータData_Aに切り替えられる前に、受信タイミング信号DG0がアサートされる。すると、データホールド回路BLC0において、無効なデータXXXがデータSYNC_DATA0[n:0]として出力されてしまう。なお、本実施形態においては、仮にAND250を用いず、EXOR240の出力を受信タイミング信号DG0として用いたとしても、受信タイミング信号DG0がアサートされるタイミングを、従来技術よりもクロック信号CLK_Bの3サイクルの期間遅らせることができる。
【0056】
さて、データホールド回路BLC0内のDFF280は、受信タイミング信号DG0をクロック信号CLK_Bに応じてラッチして、当該クロック信号CLK_Bの次のサイクルでタイミング信号VALID0として出力する。つまり、DFF280は図3に示すように、受信タイミング信号DG0がアサートされたクロック信号CLK_Bのサイクル(例えばT19)の次のサイクル(例えばT20)で、タイミング信号VALID0をアサートする。このようにタイミング信号VALID0がアサートされることにより、データホールド回路BLC0(DFF260)から出力されるデータSYNC_DATA0が有効となったことが示される。よって、データ同期化回路SYNC0(データホールド回路BLC0)の後段のモジュールは、タイミング信号VALID0がアサートされるタイミングのみで、データSYNC_DATA0を認識すればよい。
【0057】
上述したように、本実施形態では、データ同期化回路SYNC0内の更新タイミング調整回路BLE0で用いられる更新イネーブル信号UE0が、クロック信号CLK_Bの4サイクルに1回アサートされる。したがって、受信タイミング生成回路BLB0内のDFF230_0,230_1及び230_2の実質的なラッチ(値更新)のためのクロック信号CLK_B’は、クロック信号CLK_Bではなくて、当該クロック信号CLK_Bが4分周されたのと等価となる。
【0058】
このため、データ同期化回路SYNC0及びSYNC1に共通に用いられるクロック信号CLK_Bの周波数条件が360MHz≦CLK_B≦1200MHzであるものとすると、クロック信号CLK_B’の周波数条件は、90MHz≦CLK_B’≦300MHzであるとみなすことができる。このことはデータ同期化回路SYNC0において、データホールド回路BLD0からデータホールド回路BLC0に送信される、周波数が150MHzのクロック信号CLK_A0に同期したデータDOUT0を、受信タイミング生成回路BLB0から出力される受信タイミング信号DG0に応じて、当該データホールド回路BLC0において、360MHz≦CLK_B≦1200MHzの範囲の周波数のクロック信号CLK_Bに同期化できることを示す。
【0059】
図4は、図1に示すマルチポートインタフェース回路110の詳細な構成を示すブロック図である。図4には、マルチポートインタフェース回路110が、図2に示される構成のデータ同期化回路SYNC0と、当該データ同期化回路SYNC0と同様の構成のデータ同期化回路SYNC1とを備えている様子が示されている。
【0060】
本実施形態において、データ同期化回路SYNC0で適用されるクロック信号CLK_A0の周波数は150MHz(CLK_A0=150MHz)であり、データ同期化回路SYNC1で適用されるクロック信号CLK_A1の周波数は600MHz(CLK_A1=600MHz)であるものとする。また、データ同期化回路SYNC0及びSYNC1で共通に適用されるクロック信号CLK_Bの周波数は、前述したように360MHz以上で且つ1200MHz以下の範囲(360MHz≦CLK_B≦1200MHz)にあるものとする。図4では、煩雑さを避けるために、データ同期化回路SYNC0及びSYNC1のそれぞれに、クロック信号CLK_Bが表記されている。しかし本実施形態では、1つのクロック信号CLK_Bが、データ同期化回路SYNC0及びSYNC1の双方に入力される。
【0061】
本実施形態において、データ同期化回路SYNC0(つまりリンク層Link0側)で適用される更新イネーブル信号(第1の更新イネーブル信号)UE0は、前述したように、クロック信号CLK_Bの4サイクルに1回アサートされる。これに対し、データ同期化回路SYNC1(つまりリンク層Link1側)で適用される更新イネーブル信号(第2の更新イネーブル信号)UE1は、クロック信号CLK_Bの全サイクルでアサートされる。
【0062】
このため、データ同期化回路SYNC0では、受信タイミング生成回路BLB0内のDFF230_0,230_1及び230_2のそれぞれが自身の保持している値を更新するタイミングを、前述したように、クロック信号CLK_Bの4サイクルに1回に調整(制限)することができる。これに対し、データ同期化回路SYNC1では、受信タイミング生成回路BLB1内のDFF231_0,231_1及び231_2のそれぞれは、クロック信号CLK_Bのサイクル毎に自身の保持している値を更新する。
【0063】
これにより、データ同期化回路SYNC0及びSYNC1では、それぞれ、クロック信号CLK_A0及びCLK_A1の周波数がCLK_A0=150MHz,CLK_A1=600MHzのように異なっているにも拘わらずに、データDOUT0及びDOUT1を、360MHz≦CLK_B≦1200MHzの範囲の周波数のクロック信号CLK_Bに同期化できる。
【0064】
図5は、図1に示されるマルチポートインタフェース回路110が有する第1及び第2の通信ポートの通信プロトコル階層構造とアプリケーション層との関係を、各階層で適用されるクロック信号と対応付けて示す。
【0065】
第1の通信ポートは、リンク層500(Link0)及びトランスポート層510(Trs0)から構成され、第2の通信ポートはリンク層501(Link1)及びトランスポート層511(Trs1)から構成されている。データ同期化回路SYNC0及びSYNC1は、それぞれ、リンク層Link0及びLink1に存在する。
【0066】
リンク層Link0及びLink1の送信側、つまり図3に示すデータDOUT0及びDOUT1を送信する側(データホールド回路BLD0及びBLD1)では、それぞれ、周波数が異なるクロック信号CLK_A0及びCLK_A1が用いられる。ここでは、CLK_A0=150MHz、CLK_A1=600MHzである。これに対して、リンク層Link0及びLink1の受信側、つまりクロック信号CLK_A0及びCLK_A1に同期したデータDOUT0及びDOUT1を受信する側(データホールド回路BLC0及びBLC1)では、いずれもクロック信号CLK_Bが共通に用いられる。クロック信号CLK_Bの周波数は、360MHz≦CLK_B≦1200MHzの範囲にある。また、トランスポート層Trs0及びTrs1と、アプリケーション層Appliにおいても、クロック信号CLK_Bが共通に用いられる。
【0067】
リンク層Link0及びLink1の受信側で受信された、それぞれ、クロック信号CLK_A0及びCLK_A1に同期したデータDOUT0(第1のデータ)及びDOUT1(第3のデータ)は、図3を参照しての前述したデータ同期化回路SYNC0の動作から明らかなように、当該受信側でいずれもクロック信号CLK_Bに同期化される。クロック信号CLK_Bに同期化されたデータDOUT0及びDOUT1は、データSYNC_DATA0(第2のデータ)及びSYNC_DATA1(第4のデータ)として出力される。
【0068】
クロック信号CLK_Bに同期化されたデータSYNC_DATA0及びSYNC_DATA1は、それぞれ、クロック信号CLK_Bで動作するトランスポート層Trs0及びTrs1を介して、クロック信号CLK_Bで動作するアプリケーション層Appliに集められる。これにより、データSYNC_DATA0及びSYNC_DATA1は、アプリケーション層Appliで処理される。
【0069】
本実施形態においては、リンク層Link0及びLink1の送信側から送られた、クロック信号CLK_A0及びCLK_A1(CLK_A0=150MHz、CLK_A1=600MHz)に同期したデータDOUT0及びDOUT1を、当該リンク層Link0及びLink1の受信側でクロック信号CLK_Bに360MHz≦CLK_B≦1200MHzの範囲で同期化できる。つまり、クロック信号CLK_A0からクロック信号CLK_Bへの同期化、及びクロック信号CLK_A1からクロック信号CLK_Bへの同期化が可能である。
【0070】
このため、トランスポート層Trs0及びTrs1、並びに各通信ポートに共通のアプリケーション層Appliにおいても、クロック信号CLK_Bを共通に用いることができる。これにより従来技術とは異なり、アプリケーション層Appli内に、データ同期化回路SYNC0及びSYNC1にそれぞれ相当する同期化回路を用意する必要がなくなる。
【0071】
図6は、本実施形態で適用される、更新イネーブル信号を生成する更新イネーブル信号生成器の構成を示すブロック図である。図6に示すように、更新イネーブル信号生成器600は、カウンタ610及びデコーダ620から構成される。カウンタ610は例えば2ビットカウンタであり、クロック信号CLK_Bのクロック数をカウントする。デコーダ620は、カウンタ610のカウント値CNTをデコードする。デコーダ620は、カウント値CNTのデコード結果に基づいて、更新イネーブル信号UEi_1,UEi_2またはUEi_4をアサートする。
【0072】
次、図6に示される更新イネーブル信号生成器600の動作について、図7のタイミングチャートを参照して説明する。
カウンタ610は、クロック信号CLK_Bに同期してカウント動作を行う。カウンタ610が2ビットのカウンタである本実施形態では、当該カウンタ610のカウント値CNTはクロック信号CLK_Bに同期して、「0」、「1」、「2」、「3」を繰り返す。
【0073】
デコーダ620は、カウンタ610のカウント値CNTが「0」である期間(サイクル)、有効な更新イネーブル信号UEi_4を出力する。つまり、デコーダ620(更新イネーブル信号生成器600)から出力される更新イネーブル信号UEi_4は、クロック信号CLK_Bの4サイクルに1回アサートされる。したがって、更新イネーブル信号UEi_4を前記更新イネーブル信号UE0として、データ同期化回路SYNC0(リンク層Link0側)で用いればよい。
【0074】
デコーダ620は、カウンタ610のカウント値CNTに無関係に常時有効な更新イネーブル信号UEi_1を出力する。つまり、デコーダ620から出力される更新イネーブル信号UEi_1は、クロック信号CLK_Bの全サイクルに亘ってアサートされる。したがって、更新イネーブル信号UEi_1を前記更新イネーブル信号UE1として、データ同期化回路SYNC1(リンク層Link1側)で用いればよい。
【0075】
デコーダ620は、カウンタ610のカウント値CNTが「0」である期間と「2」である期間、即ちカウント値CNTの最下位ビットが「0」である期間、有効な更新イネーブル信号UEi_2を出力する。つまり、デコーダ620から出力される更新イネーブル信号UEi_2は、クロック信号CLK_Bの2サイクルに1回アサートされる。もし、この更新イネーブル信号UEi_2を、更新イネーブル信号UE0に代えてデータ同期化回路SYNC0で適用した場合、クロック信号CLK_Bの2サイクルに1回、DFF230_0,230_1及び230_2の各々が保持する値が更新される。このため、例えばクロック信号CLK_A0の周波数が、上記実施形態とは異なって300MHzであり、この300MHzのクロック信号CLK_A0に同期化したデータを、上述した360MHz≦CLK_B≦1200MHzの範囲のクロック信号CLK_Bに同期化するには、更新イネーブル信号UE0に代えて更新イネーブル信号UEi_2を用いればよい。
【0076】
なお、更新イネーブル信号生成器600は、データ同期化回路SYNC0及びSYNC1に共通に設けられても、データ同期化回路SYNC0及びSYNC1の各々に設けられても構わない。後者の場合、更新イネーブル信号生成器600が、対応するデータ同期化回路で用いられる更新イネーブル信号のみを生成可能な構成であっても構わない。
【0077】
[変形例]
次に上記実施形態の変形例について図面を参照して説明する。
図8は、上記実施形態の変形例で適用されるマルチポートインタフェース回路が有する第1及び第2の通信ポートの通信プロトコル階層構造とアプリケーション層との関係を、各階層で適用されるクロック信号と対応付けて示す。
【0078】
第1の通信ポートは、リンク層800(Link0)及びトランスポート層810(Trs0)から構成され、第2の通信ポートはリンク層801(Link1)及びトランスポート層811(Trs1)から構成されている。マルチポートインタフェース回路には、1つのアプリケーション層820(Appli)が存在する。リンク層800及びトランスポート層810は、図5に示すリンク層500及びトランスポート層510に相当し、リンク層801及びトランスポート層811は、図5に示すリンク層501及びトランスポート層511に相当する。アプリケーション層820は、図5に示すアプリケーション層520に相当する。
【0079】
本変形例の第1の特徴は、リンク層800及びトランスポート層810において、前記クロック信号CLK_Bに代えてクロック信号(第2のクロック信号)CLK_B0が用いられる点にある。本変形例の第2の特徴は、リンク層801及びトランスポート層811において、クロック信号CLK_Bに代えてクロック信号(第4のクロック信号)CLK_B1が用いられる点にある。本変形例の第3の特徴は、アプリケーション層820において、クロック信号CLK_Bに代えてクロック信号CLK_B2が用いられる点にある。本変形例の第4の特徴は、クロック信号CLK_B0,CLK_B1及びCLK_B2が、前記クロック信号CLK_Bと同一周波数で且つ同一位相であり、それぞれ独立にディセーブル可能な点にある。
【0080】
このように、クロック信号CLK_B0,CLK_B1及びCLK_B2は、前記クロック信号CLK_Bと同一周波数で且つ同一位相である。このため、クロック信号CLK_B0,CLK_B1及びCLK_B2に基づく動作は、クロック信号CLK_Bに基づく上記実施形態の動作と同様である。
【0081】
本変形例が上記実施形態と相違する点は、クロック信号CLK_B0,CLK_B1及びCLK_B2が独立にディセーブル可能であることから、例えば、リンク層800(Link0)が使用されていない状態において、クロック信号CLK_A0だけでなく、クロック信号CLK_B0を選択的にディセーブル(停止)することができることにある。これにより、他の使用状態にあるリンク層801(Link1)及びトランスポート層811(Trs1)等に影響を及ぼすことなく、マルチポートインタフェース回路(を含むデバイス)全体の消費電力を低減できる。本実施形態において、リンク層800(Link0)が使用されていない状態とは、例えば、Link0側がホストH0と接続されていない状態、或いは、接続されていても、Link0側がパワーセーブモードに設定されている状態である。
【0082】
図9は、本変形例で適用される、図8に示されるクロック信号CLK_B0,CLK_B1及びCLK_B2を独立に生成するためのクロック生成器の構成を示すブロック図である。図9に示すように、クロック生成器900は、セレクタ910及びプログラマブル分周器920と、AND930,931及び932とから構成される。
【0083】
セレクタ910は、例えば2つのソースクロック信号SCLK0及びSCLK1のいずれか一方を、ソース選択信号SSELに応じてソースクロック信号SCLKとして選択する。プログラマブル分周器920は、セレクタ910によって選択されたソースクロック信号SCLKを分周することにより、上記実施形態で適用されたようなクロック信号CLK_Bを生成する。上記実施形態では、このクロック信号CLK_B、即ちプログラマブル分周器920から出力されたクロック信号CLK_Bを、図5に示すように、リンク層500及び501と、トランスポート層510及び511と、アプリケーション層520とで、共通に使用すればよい。
【0084】
これに対して本変形例では、プログラマブル分周器920から出力されたクロック信号CLK_Bは、AND930,931及び932にそれぞれ入力される。AND930,931及び932は、クロック信号CLK_Bを、それぞれ有効なクロック信号CLK_B0,CLK_B1及びCLK_B2として出力するかを、ディセーブル信号DIS_0,DIS_0及びDIS_2に応じて互いに独立して決定する。これにより本変形例においては、クロック信号CLK_Bと同一周波数で且つ同一位相のクロック信号CLK_B0,CLK_B1及びCLK_B2を、それぞれ独立して停止させることができる。
【0085】
上記実施形態及びその変形例においては、第1のクロック信号に同期したデータを当該第1のクロック信号とは異なる周波数の第2のクロック信号に同期化させるデータ同期化回路において、第2のクロック信号の許容される周波数範囲を広げることができる。
【0086】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【符号の説明】
【0087】
H0,H1…ホスト、SYNC0…データ同期化回路(第1のデータ同期化回路)、SYNC1…データ同期化回路(第2のデータ同期化回路)、BLA0,BLA1…ラッチタイミング生成回路、BLB0…受信タイミング生成回路(第1の受信タイミング生成手段)、BLB1…受信タイミング生成回路(第2の受信タイミング生成手段)、BLC0…データホールド回路(第1のデータホールド手段)、BLC1…データホールド回路(第2のデータホールド手段)、BLD0,BLD1…データホールド回路、BLE0…更新タイミング調整回路(第1の更新タイミング調整手段)、BLE1…更新タイミング調整回路(第2の更新タイミング調整手段)、10…ストレージデバイス、11…コントローラ、110…マルチポートインタフェース回路(通信インタフェース回路)、230_0〜230_2……DFF(Dフリップフロップ、第1のフリップフロップ)、231_0〜231_2…DFF(Dフリップフロップ、第2のフリップフロップ)、310_0〜310_2,311_0〜311_2…セレクタ、240,241…EXOR(排他的論理和ゲート、第1の論理ゲート)、250,251…AND(アンドゲート、第2の論理ゲート),500,501,800,801…リンク層、510,511,810,811…トランスポート層、520,820…アプリケーション層、600…更新イネーブル信号生成器、900…クロック生成器、930〜932…AND(アンドゲート、出力ゲート)。

【特許請求の範囲】
【請求項1】
第1のクロック信号に同期した第1のデータを第2のタイミング信号に基づいて受信して、当該受信された第1のデータが前記第1のクロック信号とは異なる周波数の第2のクロック信号に同期化された第2のデータを出力するデータホールド手段と、
前記第1のデータに対応し、前記第1のクロック信号に同期した第1のタイミング信号から、前記第2のクロック信号に同期したタイミング信号を前記第2のタイミング信号として生成するための複数段のフリップフロップを備えた受信タイミング生成手段と、
前記複数段のフリップフロップの値の更新のタイミングを、前記第2のクロック信号に同期した更新イネーブル信号に基づいて制限する更新タイミング調整手段と
を具備するデータ同期回路。
【請求項2】
前記更新イネーブル信号は、前記第2のクロック信号の複数サイクルに1回の割合で周期的にアサートされ、
前記更新タイミング調整手段は、前記更新イネーブル信号がアサートされる前記第2のクロック信号のサイクルにおいて、前記複数段のフリップフロップの値の更新を許可する
請求項1記載のデータ同期回路。
【請求項3】
前記受信タイミング生成手段は、
前記複数段のフリップフロップのうちの最終段のフリップフロップ及び前記最終段の前段のフリップフロップの両出力の値が前記第1のタイミング信号の示すタイミングの後で最初に異なる状態を検出する第1の論理ゲートと、
前記更新イネーブル信号がアサートされている期間、前記第1の論理ゲートの出力信号を前記第2のタイミング信号として出力する第2の論理ゲートと
を更に備えている請求項2記載のデータ同期化回路。
【請求項4】
前記更新タイミング調整手段は前記複数段のフリップフロップにそれぞれ対応する複数のセレクタから構成されており、
前記複数のセレクタの各々は、前記更新イネーブル信号がアサートされている期間、前記複数段のフリップフロップのうちの対応するフリップフロップの値の更新に用いられる信号を選択して当該対応するフリップフロップに出力する
請求項3記載のデータ同期化回路。
【請求項5】
第1のクロック信号に同期した第1のデータを当該第1のクロック信号とは異なる周波数の第2のクロック信号に同期化させる第1のデータ同期化回路と、
第3のクロック信号に同期した第3のデータを、当該第3のクロック信号とは異なり前記第2のクロック信号とは一致する周波数及び位相の第4のクロック信号に同期化させる第2のデータ同期化回路とを具備し、
前記第1のデータ同期化回路は、
前記第1のデータを第2のタイミング信号に基づいて受信して、当該受信された第1のデータが前記第2のクロック信号に同期化された第2のデータを出力する第1のデータホールド手段と、
前記第1のデータに対応し、前記第1のクロック信号に同期した第1のタイミング信号から、前記第2のクロック信号に同期したタイミング信号を前記第2のタイミング信号として生成するための複数段の第1のフリップフロップを備えた第1の受信タイミング生成手段と、
前記複数段の第1のフリップフロップの値の更新のタイミングを、前記第2のクロック信号に同期した第1の更新イネーブル信号に基づいて制限する第1の更新タイミング調整手段とを備え、
前記第2のデータ同期化回路は、
前記第3のデータを第4のタイミング信号に基づいて受信して、当該受信された第3のデータが前記第4のクロック信号に同期化された第4のデータを出力する第2のデータホールド手段と、
前記第3のデータに対応し、前記第3のクロック信号に同期した第3のタイミング信号から、前記第4のクロック信号に同期したタイミング信号を前記第4のタイミング信号として生成するための複数段の第2のフリップフロップを備えた第2の受信タイミング生成手段と、
前記複数段の第2のフリップフロップの値の更新のタイミングを、前記第4のクロック信号に同期した第2の更新イネーブル信号に基づいて制限する第2の更新タイミング調整手段とを備えている
通信インタフェース回路。
【請求項6】
前記第2のクロック信号及び前記第4のクロック信号を独立に生成するクロック生成器を更に具備する請求項5記載の通信インタフェース回路。
【請求項7】
前記第2のクロック信号が前記第4のクロック信号として用いられる請求項5記載の通信インタフェース回路。
【請求項8】
ホストとの間でデータを送受信するコントローラを具備する通信装置であって、
前記コントローラは、
第1のクロック信号に同期した第1のデータを第2のタイミング信号に基づいて受信して、当該受信された第1のデータが前記第1のクロック信号とは異なる周波数の第2のクロック信号に同期化された第2のデータを出力するデータホールド手段と、
前記第1のデータに対応し、前記第1のクロック信号に同期した第1のタイミング信号から、前記第2のクロック信号に同期したタイミング信号を前記第2のタイミング信号として生成するための複数段のフリップフロップを備えた受信タイミング生成手段と、
前記複数段のフリップフロップの値の更新のタイミングを、前記第2のクロック信号に同期した更新イネーブル信号に基づいて制限する更新タイミング調整手段と
を具備する通信装置。
【請求項9】
前記更新イネーブル信号は、前記第2のクロック信号の複数サイクルに1回の割合で周期的にアサートされ、
前記更新タイミング調整手段は、前記更新イネーブル信号がアサートされる前記第2のクロック信号のサイクルにおいて、前記複数段のフリップフロップの値の更新を許可する
請求項8記載の通信装置。
【請求項10】
第1のクロック信号に同期した第1のデータを受信する受信手段と、
前記第1のクロック信号に同期した第1のタイミング信号と、前記第1のクロック信号とは異なる周波数の第2のクロック信号に同期し、且つ前記第1のクロック信号に対応するイネーブル信号とに基づいて、前記第2のクロック信号に同期した第2のタイミング信号を生成する生成手段と、
前記受信した第1のデータから、前記第2のクロック信号及び前記生成された第2のタイミング信号に同期した第2のデータを出力する出力手段と
を具備するデータ同期回路。
【請求項11】
ホストとの間でデータを送受信するコントローラを具備する通信装置であって、
前記コントローラは、
第1のクロック信号に同期した第1のデータを受信する受信手段と、
前記第1のクロック信号に同期した第1のタイミング信号と、前記第1のクロック信号とは異なる周波数の第2のクロック信号に同期し、且つ前記第1のクロック信号に対応するイネーブル信号とに基づいて、前記第2のクロック信号に同期した第2のタイミング信号を生成する生成手段と、
前記受信した第1のデータから、前記第2のクロック信号及び前記生成された第2のタイミング信号に同期した第2のデータを出力する出力手段と
を具備する通信装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−233152(P2011−233152A)
【公開日】平成23年11月17日(2011.11.17)
【国際特許分類】
【出願番号】特願2011−130184(P2011−130184)
【出願日】平成23年6月10日(2011.6.10)
【分割の表示】特願2010−102571(P2010−102571)の分割
【原出願日】平成22年4月27日(2010.4.27)
【特許番号】特許第4799707号(P4799707)
【特許公報発行日】平成23年10月26日(2011.10.26)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】