以下に添付図面を参照して、開示のパラレル−シリアル変換器の好適な実施の形態を詳細に説明する。開示のパラレル−シリアル変換器は、シリアルデータに同期したレプリカデータのサンプリング結果を位相が異なる複数のクロック信号でサンプリングすることで、非最適点を最適点と誤判定することを回避し、シリアルデータを精度よく整形する。
(実施の形態1)
<パラレル−シリアル変換器の構成>
図1は、実施の形態1にかかるパラレル−シリアル変換器を示す図である。図1に示すように、実施の形態1にかかるパラレル−シリアル変換器100は、変換回路110と、第一サンプリング回路120と、生成回路130と、第二サンプリング回路140と、第三サンプリング回路150と、制御回路160と、を備えている。
<変換回路>
変換回路110は、パラレルデータとして入力されたデータdata0,data1をシリアルデータdaに変換する。たとえば、変換回路110は、データdata0,data1を交互に選択して出力することによってシリアルデータdaに変換する。変換回路110は、変換したシリアルデータdaを第一サンプリング回路120へ出力する。
<第一サンプリング回路>
第一サンプリング回路120は、変換回路110から出力されたシリアルデータdaを、クロック信号FF−clk(第一クロック信号)に基づいてサンプリングによるリタイミングと波形整形を行う。たとえば、第一サンプリング回路120は、クロック信号FF−clkの立ち上がりタイミングでシリアルデータdaをサンプリングする。第一サンプリング回路120は、サンプリングしたデータodataを後段へ出力する。
<生成回路>
生成回路130は、シリアルデータdaに同期したレプリカデータrepdaを生成する。具体的には、生成回路130は、シリアルデータdaに同期した固定パターン(たとえば「0」と「1」の交番)のレプリカデータrepdaを生成する。生成回路130は、生成したレプリカデータrepdaを第二サンプリング回路140へ出力する。
<第二サンプリング回路>
第二サンプリング回路140は、生成回路130から出力されたレプリカデータをクロック信号FFrep−clk(第二クロック信号)に基づいてサンプリングする。クロック信号FFrep−clkは、クロック信号FF−clkを反転した信号である。たとえば、第二サンプリング回路140は、クロック信号FFrep−clkの立ち上がりタイミングでレプリカデータrepdaをサンプリングする。第二サンプリング回路140は、サンプリング結果を出力repoutとして第三サンプリング回路150へ出力する。
<第三サンプリング回路>
第三サンプリング回路150は、第二サンプリング回路140からの出力repoutを、位相が異なる複数のクロック信号(第三クロック信号)に基づいてサンプリングする。たとえば、第三サンプリング回路150は、入力されたクロック信号div−0,div−90の立ち上がりタイミングで出力repoutをサンプリングする。
クロック信号div−0,div−90は、たとえば互いに位相が90度異なるクロック信号である。クロック信号div−0,div−90の周期は、たとえばクロック信号FF−clkの周期の偶数倍である。第三サンプリング回路150は、クロック信号div−0による出力repoutのサンプリング結果を出力ph0として制御回路160へ出力する。また、第三サンプリング回路150は、クロック信号div−90による出力repoutのサンプリング結果を出力ph90として制御回路160へ出力する。
<制御回路>
制御回路160は、第三サンプリング回路150から出力された各出力(出力ph0,ph90)に基づいて第一サンプリング回路120におけるシリアルデータとサンプリングクロックのタイミング関係を制御する。たとえば、制御回路160は、第一サンプリング回路120へ入力されるシリアルデータdaの位相とそれに同期したレプリカデータrepdaの位相を変化させることによって第一サンプリング回路120によるサンプリングのタイミングを制御する。または、制御回路160は、第一サンプリング回路120へ入力されるクロック信号FF−clkの位相とそれに同期した第二サンプリング回路140へ入力されるクロック信号FFrep−clkの位相を変化させることによって第一サンプリング回路120によるサンプリングのタイミングを制御してもよい。
<位相ずれの検出>
以上の構成において、第三サンプリング回路150によって出力repoutをサンプリングすることで、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの立ち上がりの位相ずれを検出することができる。たとえば、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの位相ずれがない場合は第三サンプリング回路150によるサンプリング結果が不定値になる。具体的には、第三サンプリング回路150によるサンプリング結果が、レプリカデータrepdaのハイレベル(たとえば「1」)とローレベル(たとえば「0」)の中間レベルになる。
また、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの位相ずれがある場合は、第三サンプリング回路150によるサンプリング結果が一定値になる。具体的には、第三サンプリング回路150によるサンプリング結果がレプリカデータrepdaのハイレベルないしローレベルの一定値になる。また、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの位相ずれの方向によって、第三サンプリング回路150によるサンプリング結果の出力レベルが異なる。
そして、レプリカデータrepdaはシリアルデータdaと同期しており、クロック信号FFrep−clkはクロック信号FF−clkの反転信号である。このため、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの位相ずれは、第一サンプリング回路120におけるシリアルデータdaの最適点に対するクロック信号FF−clkの位相ずれの立ち上がりを示している。
シリアルデータdaの最適点は、たとえばシリアルデータdaの切り替わり点と切り替わり点の間の中央点である。したがって、第三サンプリング回路150によって出力repoutをサンプリングすることで、第一サンプリング回路120におけるシリアルデータdaの最適点に対するクロック信号FF−clkの位相ずれを検出することができる。
<誤判定の回避>
ここで、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの位相ずれがあり、出力repoutがハイレベルとローレベルを繰り返す信号となっている場合について説明する。この場合に、第三サンプリング回路150においてクロック信号の立ち上がりが出力repoutのハイレベルとローレベルとの切り替わり点と重なることがある。この場合は、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの位相ずれがあるにも関わらず、第三サンプリング回路150によるサンプリング結果が中間レベルになる。
これに対して、第三サンプリング回路150は、出力repoutを位相が異なる複数のクロック信号div−0,div−90でサンプリングする。これにより、一つのクロック信号が出力repoutの切り替わり点と重なっても、他方のクロック信号は出力repoutの切り替わり点と重ならないようにすることができる。
このため、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの位相ずれがある場合は、出力ph0,ph90の少なくとも一方はハイレベルまたはローレベルになる。また、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの位相ずれがない場合は、出力ph0,ph90はともにハイレベルとローレベルの中間レベルになる。
したがって、たとえば、制御回路160は、出力ph0,ph90のすべてが中間レベルである場合は、第一サンプリング回路120によるサンプリングのタイミングを変化させず維持する。また、制御回路160は、出力ph0,ph90の少なくともいずれかがハイレベルまたはローレベルである場合は、第一サンプリング回路120によるサンプリングのタイミングを変化させる。この場合は、制御回路160は、出力ph0,ph90のうちのハイレベルまたはローレベルである出力のレベルに基づいて第一サンプリング回路120によるサンプリングのタイミングを変化させる。
または、制御回路160は、クロック信号div−0,div−90の少なくともいずれかのクロック信号(たとえばクロック信号div−0)がハイレベルとローレベルの中間レベルとなるようにクロック信号div−0,div−90の各位相を制御してもよい。これにより、クロック信号div−0,div−90の他のクロック信号(たとえばクロック信号div−90)の立ち上がりが出力repoutの切り替わり点と重ならないようにすることができる。制御回路160は、出力ph90のレベルに基づいて第一サンプリング回路120によるサンプリングのタイミングを制御する。
これにより、制御回路160は、第一サンプリング回路120によるサンプリングにおけるタイミングの非最適点を最適点と誤判定することを回避することができる。このため、シリアルデータdaの最適点に対するクロック信号FF−clkの位相ずれを確実に補償し、シリアルデータdaを精度よく整形することができる。
ここではクロック信号div−0,div−90がたとえば互いに位相が90度異なるクロック信号である場合について説明したが、クロック信号div−0,div−90の位相差は90度に限らない。たとえば、クロック信号div−0,div−90の位相差は0度より大きく180度より小さい範囲である。
すなわち、クロック信号div−0,div−90の位相差は、クロック信号div−0,div−90の一方の立ち上がりが出力repoutの切り替わり点と重なる場合に、他方の立ち上がりが出力repoutの切り替わり点と重ならないように設定する。
このように、実施の形態1にかかるパラレル−シリアル変換器100は、第二サンプリング回路140の出力repoutを、互いに位相が異なるクロック信号div−0,div−90でサンプリングする。これにより、第一サンプリング回路120によるサンプリングにおけるタイミングの非最適点を最適点と誤判定することを回避し、第一サンプリング回路120におけるサンプリングの最適点からの位相ずれを精度よく検出することができる。このため、シリアルデータdaを精度よく整形することができる。
(実施の形態2)
<パラレル−シリアル変換器の構成>
図2は、実施の形態2にかかるパラレル−シリアル変換器を示す図である。図2に示すように、パラレル−シリアル変換器200は、入力端子211と、反転回路212と、分周回路213(Divider)と、任意位相生成回路214と、入力端子221,222と、変換回路230と、フリップフロップ241(FF)と、出力端子242と、レプリカ回路250と、位相設定回路260と、を備えている。
パラレル−シリアル変換器200は、入力端子221および入力端子222からパラレルデータとして入力されるデータdata0およびデータdata1を、データレートが2倍のデータodata(シリアルデータ)に変換して出力する。データodataは、たとえばパラレル−シリアル変換器200の後段の送信回路(不図示)に供給され、パラレル−シリアル変換器200と送信回路とを含むデータ送信システムが構成される。
入力端子211にはクロック信号clkが入力される。入力端子211は、入力されたクロック信号clkを、反転回路212、分周回路213およびフリップフロップ241レプリカ回路250へ出力する。反転回路212は、入力端子211から出力されたクロック信号clkを反転させる。反転回路212は、反転させたクロック信号をクロック信号FFrep−clkとしてレプリカ回路250へ出力する。
分周回路213は、入力端子211から出力されたクロック信号clkを1/2の周波数に分周(周期を偶数倍)したクロック信号div−0およびクロック信号div−90を生成する。クロック信号div−0とクロック信号div−90は、互いに位相が90度異なるクロック信号である。分周回路213は、生成したクロック信号div−0,div−90を任意位相生成回路214およびレプリカ回路250のそれぞれへ出力する。
任意位相生成回路214は、分周回路213から出力され、互いに位相が異なるクロック信号div−0,div−90から、任意の位相の分周クロック信号を生成する位相補間回路である。任意位相生成回路214は、位相設定回路260によって設定される位相になるように、生成する分周クロック信号の位相を変化させる。任意位相生成回路214は、生成した分周クロック信号をクロック信号MUX−clkとして変換回路230およびレプリカ回路250の選択回路251へ出力する。
入力端子221にはデータdata0が入力される。入力端子221は入力されたデータdata0を変換回路230へ出力する。入力端子222にはデータdata1が入力される。入力端子222は入力されたデータdata1を変換回路230へ出力する。
変換回路230は、図1に示した変換回路110に対応する構成である。変換回路230は、入力端子221,222から出力されたデータdata0,data1のいずれかを選択して出力する。また、変換回路230は、任意位相生成回路214から出力されたクロック信号MUX−clkに同期してデータの選択を切り替える。
たとえば、変換回路230は、クロック信号MUX−clkの立ち下がりに同期してデータdata0を選択し、クロック信号MUX−clkの立ち上がりに同期してデータdata1を選択する。変換回路230は、選択したデータをシリアルデータdaとしてフリップフロップ241へ出力する。これにより、パラレルデータであるデータdata0,data1が、シリアルデータdaに変換される。
フリップフロップ241は、図1に示した第一サンプリング回路120に対応する構成である。フリップフロップ241には、入力端子221から出力されたクロック信号clkが供給される(クロック信号FF−clkとする)。フリップフロップ241は、クロック信号FF−clkの立ち上がりに同期して、変換回路230から出力されたシリアルデータdaをサンプリングによるリタイミングと波形整形を行う。フリップフロップ241は、サンプリングしたデータをデータodataとして出力端子242へ出力する。出力端子242は、フリップフロップ241から出力されたデータodataを後段へ出力する。
レプリカ回路250は、選択回路251と、フリップフロップ252(Flip flop)と、フリップフロップ253(ph−ff0)と、フリップフロップ254(ph−ff90)と、カウンタ回路255と、を備えている。
選択回路251は、図1に示した生成回路130に対応する構成である。選択回路251には、固定データ「0」(const0)と固定データ「1」(const1)とが入力される。選択回路251は、入力される複数の固定データのいずれかを選択して出力する。また、選択回路251は、変換回路230のデータ選択の切り替えに同期して固定データの選択を切り替える。
たとえば、変換回路230へ供給されるクロック信号MUX−clkが選択回路251にも供給される。選択回路251は、供給されたクロック信号MUX−clkに同期して固定データの選択を切り替える。具体的には、選択回路251は、クロック信号MUX−clkの立ち下がりに同期して固定データ「0」を選択し、クロック信号MUX−clkの立ち上がりに同期して固定データ「1」を選択する。選択回路251は、選択した固定データをレプリカデータrepdaとしてフリップフロップ252へ出力する。
フリップフロップ252は、図1に示した第二サンプリング回路140に対応する構成である。フリップフロップ252は、反転回路212から出力されたクロック信号FFrep−clkの立ち上がりに同期して、選択回路251から出力されたレプリカデータrepdaをサンプリングする。フリップフロップ252は、サンプリング結果を出力repoutとしてフリップフロップ253,254のそれぞれへ出力する。
フリップフロップ253は、分周回路213から出力されたクロック信号div−0の立ち上がりに同期して、フリップフロップ252からの出力repoutをサンプリングする。フリップフロップ253は、サンプリング結果を出力ph0としてカウンタ回路255へ出力する。フリップフロップ254は、分周回路213から出力されたクロック信号div−90の立ち上がりに同期して、フリップフロップ252からの出力repoutをサンプリングする。フリップフロップ254は、サンプリング結果を出力ph90としてカウンタ回路255へ出力する。
出力ph0,ph90のそれぞれは、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの立ち上がりの位相ずれを示している。たとえば、クロック信号FF−clkの立ち上がりがシリアルデータdaの最適点に対して遅れている場合は、クロック信号FFrep−clkの立ち上がりがレプリカデータrepdaの切り替わり点に対して遅れる。この場合は、出力ph0,ph90が「1」となる。また、クロック信号FF−clkの立ち上がりがシリアルデータdaの最適点に対して早い場合は、クロック信号FFrep−clkの立ち上がりがレプリカデータrepdaの切り替わり点に対して早くなる。この場合は、出力ph0,ph90が「0」となる。
ただし、出力ph0,ph90のいずれかは、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの立ち上がりの位相ずれがあるにも関わらず、位相ずれがない旨を示す場合がある。たとえば、クロック信号div−0の立ち上がりが出力repoutの切り替わり点と重なると、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの立ち上がりの位相ずれがあるにも関わらず出力ph0が中間レベルとなる。
また、クロック信号div−90の立ち上がりが出力repoutの切り替わり点と重なると、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの立ち上がりの位相ずれがあるにも関わらず出力ph90が中間レベルとなる。ただし、クロック信号div−0,div−90は互いに位相が90度異なる信号であるため、クロック信号div−0,div−90の各立ち上がりがともに出力repoutの切り替わり点と重なることを回避することができる。
カウンタ回路255および位相設定回路260は、たとえば図1に示した制御回路160に対応する構成である。カウンタ回路255は、フリップフロップ253からの出力ph0と、フリップフロップ254からの出力ph90と、をカウントする。カウンタ回路255は、カウント結果を示すカウント値を位相設定回路260へ出力する。
位相設定回路260は、カウンタ回路255から出力されたカウント値に基づいて、任意位相生成回路214が生成するクロック信号MUX−clkの位相を設定する。たとえば、位相設定回路260は、カウンタ回路255から出力されたカウント値がダウンした場合はクロック信号MUX−clkの位相を進めるように設定する。また、位相設定回路260は、カウンタ回路255から出力されたカウント値がアップした場合はクロック信号MUX−clkの位相を遅らせるように設定する。
このように、カウンタ回路255および位相設定回路260は、レプリカデータrepdaの切り替わり点に対するクロック信号FFrep−clkの位相ずれが小さくなる方向にクロック信号MUX−clkの位相を制御する。また、カウンタ回路255および位相設定回路260は、クロック信号FF−clkおよびそれに同期したクロック信号FFrep−clkの位相を制御することによってシリアルデータdaとクロック信号FF−clkの相対的な位相を制御してもよい。
<クロック信号div−0によるサンプリング>
図3−1は、シリアルデータに対してクロック信号の位相が遅い場合のタイミングチャートを示す図である。図3−1において、符号301は、任意位相生成回路214から変換回路230へ出力されるクロック信号MUX−clkを示している。符号302は、変換回路230からフリップフロップ241へ出力されるシリアルデータdaを示している。符号303は、フリップフロップ241へ入力されるクロック信号FF−clkを示している。
符号304は、選択回路251からフリップフロップ252へ出力されるレプリカデータrepdaを示している。符号305は、フリップフロップ252へ入力されるクロック信号FFrep−clkを示している。符号306は、フリップフロップ252からの出力repoutを示している。符号307は、フリップフロップ253へ入力されるクロック信号div−0を示している。符号308は、フリップフロップ253からカウンタ回路255への出力ph0を示している。
ここでは、符号302,303に示すように、シリアルデータdaの最適点(たとえば切り替わり点と切り替わり点の中央点)に対してクロック信号FF−clkの立ち上がりの位相が遅い場合について説明する。この場合は、符号304,305に示すように、レプリカデータrepdaの切り替わり点に対してクロック信号FFrep−clkの立ち上がりが遅くなる。
このため、符号306に示すように、出力repoutはハイレベルとローレベルを交互に繰り返す。この場合は、符号308に示すように、出力ph0は常にハイレベル(all=1)になる。これに対して、カウンタ回路255および位相設定回路260は、シリアルデータdaに対してクロック信号FF−clkの位相が遅い(late)と判定し、クロック信号MUX−clkの位相を遅くする(符号311)。これにより、シリアルデータdaに対するクロック信号FF−clkの位相が最適点に近づく。
図3−2は、シリアルデータに対してクロック信号の位相が早い場合のタイミングチャートを示す図である。図3−2において、図3−1に示した部分と同様の部分については同一の符号を付して説明を省略する。
ここでは、符号302,303に示すように、シリアルデータdaの最適点に対してクロック信号FF−clkの立ち上がりの位相が早い場合について説明する。この場合は、符号304,305に示すように、レプリカデータrepdaの切り替わり点に対してクロック信号FFrep−clkの立ち上がりが早くなる。
このため、符号306に示すように、出力repoutはハイレベルとローレベルを交互に繰り返す。ただし、図3−1に示した場合と比べると、出力repoutは180度位相が異なる。したがって、符号308に示すように、出力ph0は常にローレベル(all=0)になる。これに対して、カウンタ回路255および位相設定回路260は、シリアルデータdaに対してクロック信号FF−clkの位相が早い(early)と判定し、クロック信号MUX−clkを早くする(符号321)。これにより、シリアルデータdaに対するクロック信号FF−clkの位相が最適点に近づく。
図3−3は、シリアルデータに対してクロック信号の位相が最適点となっている場合のタイミングチャートを示す図である。図3−3において、図3−1に示した部分と同様の部分については同一の符号を付して説明を省略する。
ここでは、符号302,303に示すように、シリアルデータdaの最適点に対してクロック信号FF−clkの立ち上がりが一致している場合について説明する。この場合は、符号304,305に示すように、レプリカデータrepdaの切り替わり点に対してクロック信号FFrep−clkの立ち上がりが一致する。
このため、符号306に示すように、出力repoutはハイレベルとローレベルの中間レベルで不定値になる。したがって、符号308に示すように、出力ph0は常に中間レベルになる。これに対して、カウンタ回路255および位相設定回路260は、シリアルデータdaに対してクロック信号FF−clkの位相が最適点になっていると判定し、クロック信号MUX−clkの位相を維持する(符号331)。これにより、シリアルデータdaに対するクロック信号FF−clkの位相が最適点で安定する。
図4は、フリップフロップの出力が電源電圧に依存する場合のタイミングチャートを示す図である。図4において、図3−1に示した部分と同様の部分については同一の符号を付して説明を省略する。ここでは、符号302,303に示すように、シリアルデータdaの最適点に対してクロック信号FF−clkの立ち上がりが遅い場合について説明する。図4の符号306に示すように、フリップフロップ252の出力repoutは、電源条件1〜5によって位相が変動する。
たとえば、電源条件3の場合は、出力repoutの切り替わり点とクロック信号div−0の立ち上がりが重なっている。このため、符号308に示すように、シリアルデータdaの最適点に対してクロック信号FF−clkの立ち上がりがずれているにも関わらず出力ph0が中間レベルになる(準安定)。この場合は、シリアルデータdaの最適点に対してクロック信号FF−clkの立ち上がりが一致している場合と同じ状態になる。また、出力repoutの位相は、温度などの他の環境条件によっても変動する。
<クロック信号div−0,div−90によるサンプリング>
図5−1は、位相が異なる複数のクロック信号による誤判定の回避を示す図(その1)である。図5−1において、図3−1に示した部分と同様の部分については同一の符号を付して説明を省略する。ここでは、符号302,303に示すように、シリアルデータdaの最適点に対してクロック信号FF−clkの立ち上がりの位相が遅れている場合について説明する。図5−1の符号501に示すように、パラレル−シリアル変換器200においては、クロック信号div−0に加えてクロック信号div−90を用いたサンプリングを行う。ここでは、図4の電源条件3のように、クロック信号div−0の立ち上がりが出力repoutの切り替わり点に重なり、出力ph0が中間レベルとなっている。
これに対して、クロック信号div−90はクロック信号div−0とは位相が90度異なるため、クロック信号div−90の立ち上がりは出力repoutの切り替わり点と重ならない。したがって、符号502に示すように、出力ph90は常にローレベル(all=0)となる。これにより、カウンタ回路255および位相設定回路260は、シリアルデータdaの最適点に対してクロック信号FF−clkが遅れていると判定し、クロック信号MUX−clkを遅延させる。
図5−2は、位相が異なる複数のクロック信号による誤判定の回避を示す図(その2)である。図5−2において、図5−1に示した部分と同様の部分については同一の符号を付して説明を省略する。ここでは、符号302,303に示すように、シリアルデータdaの最適点に対してクロック信号FF−clkの立ち上がりが一致している場合について説明する。この場合は、図5−2の符号308,502に示すように、出力ph0,ph90がともに中間レベルとなる。これにより、カウンタ回路255および位相設定回路260は、シリアルデータdaの最適点に対してクロック信号FF−clkの位相が最適点であると判定し、クロック信号MUX−clkの位相を維持する。
<変換回路の具体例>
図6は、図2に示した変換回路の具体例を示す図である。図6において、図2に示した構成と同様の構成については同一の符号を付して説明を省略する。図6に示すように、変換回路230は、入力端子601と、遅延バッファ602と、ラッチ回路603〜607と、選択回路608と、出力端子609と、を備えている。
入力端子601には、任意位相生成回路214から出力されたクロック信号MUX−clkが入力される。入力端子601は、入力されたクロック信号MUX−clkを遅延バッファ602および選択回路608へ出力する。遅延バッファ602は、入力端子601から出力されたクロック信号MUX−clkを遅延させ、遅延させたクロック信号をクロック信号lat−clkとしてラッチ回路603〜607へ出力する。
ラッチ回路604,607には、遅延バッファ602から出力されたクロック信号lat−clkが入力される。ラッチ回路603,605,606には、遅延バッファ602から出力されたクロック信号lat−clkが反転して入力される。
入力端子221は、入力されたデータdata0をラッチ回路603へ出力する。ラッチ回路603へ入力されたデータdata0は、ラッチ回路603〜605によって、クロック信号lat−clkに基づいて順次ラッチされる。ラッチ回路603〜605によって順次ラッチされたデータdata0は、クロック信号MUX−clkの1周期分遅延し、データd0aとして選択回路608へ出力される。
入力端子222は、入力されたデータdata1をラッチ回路606へ出力する。ラッチ回路606へ入力されたデータdata1は、ラッチ回路606,607によって、クロック信号lat−clkに基づいて順次ラッチされる。ラッチ回路606,607によって順次ラッチされたデータdata1は、クロック信号MUX−clkの半周期分遅延し、データd1aとして選択回路608へ出力される。したがって、選択回路608へ入力されるデータd0aとデータd1aとは、位相が互いに180度ずれることになる。
選択回路608には、入力端子601から出力されたクロック信号MUX−clkがクロック信号sel−clkとして入力される。選択回路608は、クロック信号sel−clkの立ち下がりに同期してデータd0aを出力端子609へ出力し、クロック信号sel−clkの立ち上がりに同期してデータd1aを出力端子609へ出力する。出力端子609は、選択回路608から交互に出力されたデータd0aおよびデータd1aをシリアルデータdaとしてフリップフロップ241へ出力する。
図7は、図6に示した変換回路のタイムチャートを示す図である。図7において、符号701は、入力端子221,222へ入力されるデータdata0,data1を示している。符号702は、ラッチ回路603〜607へ出力されるクロック信号lat−clkを示している。符号703は、選択回路608へ入力されるデータd0aを示している。符号704は、選択回路608へ入力されるデータd1aを示している。データd0aの「1」、「3」、「5」…は、データd0aの各区間を示している。データd1aの「0」、「2」、「4」…は、データd1aの各区間を示している。
符号705は、選択回路608へ入力されるクロック信号sel−clkを示している。符号706は、出力端子609から出力されるシリアルデータdaを示している。符号701〜704に示すように、データdata0,data1は、互いに180度ずれたデータd0a,d1aとして選択回路608へ入力される。そして、符号705,706に示すように、クロック信号sel−clkの立ち下がり区間はデータd0aが出力され、クロック信号sel−clkの立ち上がり区間はデータd1aが出力される。
したがって、シリアルデータdaは、データd0aの区間「1」、データd1aの区間「0」、データd0aの区間「3」、データd1aの区間「2」、データd0aの区間「5」、データd1aの区間「4」の順に並んだシリアルデータとなる。
<カウンタ回路の具体例>
図8は、図2に示したカウンタ回路の具体例を示す図である。図8に示すように、カウンタ回路255は、レベル検出回路811と、反転回路812と、排他的論理和回路813と、反転回路814と、スイッチ815と、スイッチ816と、反転回路817と、レベル検出回路821と、反転回路822と、排他的論理和回路823と、反転回路824と、スイッチ825と、スイッチ826と、スイッチ827と、スイッチ828と、カウンタ830と、を備えている。
レベル検出回路811には、フリップフロップ253からの出力ph0が入力される。レベル検出回路811は、入力された出力ph0がハイレベル、ローレベルおよび中間レベルのいずれであるかを判定する。レベル検出回路811は、出力ph0 VHおよび出力ph0 VLを有する。レベル検出回路811の出力ph0 VHは、反転回路812およびスイッチ816へ入力される。レベル検出回路811の出力ph0 VLは、排他的論理和回路813および反転回路814へ入力される。
レベル検出回路811は、出力ph0がハイレベルである場合は出力ph0 VH,ph0 VLを「high」とする。また、レベル検出回路811は、出力ph0がローレベルである場合は出力ph0 VH,ph0 VLを「low」とする。また、レベル検出回路811は、出力ph0が中間レベルである場合は出力ph0 VHを「low」とし、出力ph0 VLを「high」とする。
反転回路812は、レベル検出回路811からの出力ph0 VHを反転させて排他的論理和回路813へ出力する。排他的論理和回路813は、レベル検出回路811からの出力ph0 VLと、反転回路812の出力と、の排他的論理和を出力する。排他的論理和回路813の出力ph0 ud enableは、スイッチ816、スイッチ815および反転回路817へ入力される。
反転回路814は、レベル検出回路811からの出力ph0 VLを反転させてスイッチ815へ出力する。スイッチ815は、反転回路814からの出力を、排他的論理和回路813からの出力ph0 ud enableに応じてオン/オフする。スイッチ815の出力ph0 downは、カウンタ830へ出力される。反転回路817は、排他的論理和回路813からの出力ph0 ud enableを反転させ、出力ph90 ud enable2としてスイッチ827およびスイッチ828へ出力する。
スイッチ816は、レベル検出回路811からの出力ph0 VHを、排他的論理和回路813からの出力ph0 ud enableに応じてオン/オフする。スイッチ816の出力ph0 upは、スイッチ827とカウンタ830との間に接続される。
レベル検出回路821には、フリップフロップ254からの出力ph90が入力される。レベル検出回路821は、入力された出力ph90がハイレベル、ローレベルおよび中間レベルのいずれであるかを判定する。レベル検出回路821は、出力ph90 VHおよび出力ph90 VLを有する。出力ph90 VHは反転回路822およびスイッチ826へ入力される。出力ph90 VLは排他的論理和回路823および反転回路824へ入力される。
レベル検出回路821は、出力ph90がハイレベルである場合は出力ph90 VH,ph90 VLを「high」とする。また、レベル検出回路821は、出力ph90がローレベルである場合は出力ph90 VH,ph90 VLを「low」とする。また、レベル検出回路821は、出力ph90が中間レベルである場合は出力ph90 VHを「low」とし、出力ph90 VLを「high」とする。
反転回路822は、レベル検出回路821からの出力ph90 VHを反転させて排他的論理和回路823へ出力する。排他的論理和回路823は、レベル検出回路821からの出力ph90 VLと、反転回路822の出力と、の排他的論理和を出力する。排他的論理和回路823の出力ph90 ud enableは、スイッチ826およびスイッチ825へ入力される。
反転回路824は、レベル検出回路821からの出力ph90 VLを反転させてスイッチ825へ出力する。スイッチ825は、反転回路824からの出力を、排他的論理和回路823からの出力ph90 ud enableに応じてオン/オフする。スイッチ825の出力ph90 downは、スイッチ828へ入力される。
スイッチ826は、レベル検出回路821からの出力ph90 VHを、排他的論理和回路823からの出力ph90 ud enableに応じてオン/オフする。スイッチ826の出力ph90 upは、スイッチ827へ入力される。
スイッチ827は、スイッチ826からの出力ph90 upを、反転回路817からの出力ph90 ud enable2に応じてオン/オフする。カウンタ830には、スイッチ816からの出力ph0 upと、スイッチ827からの出力ph90 upと、のph90 ud enable2による選択信号がカウントアップ信号code upとして入力される。
スイッチ828は、スイッチ825からの出力ph90 downを、反転回路817からの出力ph90 ud enable2に応じてオン/オフする。カウンタ830には、スイッチ815からの出力ph0 downと、スイッチ825からの出力ph90 downと、のph90 ud enable2による選択信号がカウントダウン信号code downとして入力される。
カウンタ830は、カウントアップ信号code upが入力されるとカウント値をアップさせ、カウントダウン信号code downが入力されるとカウント値をダウンさせる。また、カウンタ830は、カウントアップ信号code upもカウントダウン信号code downも入力されない場合はカウント値を維持する。カウンタ830は、カウント値を示すコードph codeを位相設定回路260へ出力する。位相設定回路260は、カウンタ830から出力されたコードph codeに基づいて、任意位相生成回路214が生成するクロック信号MUX−clkの位相を設定する。
図9は、図8に示したカウンタ回路の動作を示す図である。図9のテーブル900は、図8に示したカウンタ回路255の動作を示す真理値表を示している。テーブル900に示すように、排他的論理和回路813の出力ph0 ud enableは、出力ph0がハイレベル(High)またはローレベル(Low)の場合は「1」となり、出力ph0が中間レベルの場合は「0」となる。
スイッチ816の出力ph0 upは、出力ph0がローレベルの場合は「0」となり、出力ph0がハイレベルの場合は「1」となり、出力ph0が中間レベルの場合はオフ(off)となる。スイッチ815の出力ph0 downは、出力ph0がローレベルの場合は「1」となり、出力ph0がハイレベルの場合は「0」となり、出力ph0が中間レベルの場合はオフ(off)となる。
排他的論理和回路823の出力ph90 ud enableは、出力ph90がハイレベルまたはローレベルの場合は「1」となり、出力ph90が中間レベルの場合は「0」となる。スイッチ826の出力ph90 upは、出力ph90がローレベルの場合は「0」となり、出力ph90がハイレベルの場合は「1」となり、出力ph90が中間レベルの場合はオフ(off)となる。スイッチ825の出力ph90 downは、出力ph90がローレベルの場合は「1」となり、出力ph90がハイレベルの場合は「0」となり、出力ph90が中間レベルの場合はオフ(off)となる。
反転回路817からの出力ph90 ud enable2は、出力ph0がハイレベル(High)またはローレベル(Low)の場合は「0」となり、出力ph0が中間レベルの場合は「1」となる。カウンタ830への入力Code up−downは、出力ph0がローレベルであり出力ph90が中間レベルである場合はcode down(down)となる。また、入力Code up−downは、出力ph0がハイレベルであり出力ph90が中間レベルである場合はcode up(up)となる。
また、入力Code up−downは、出力ph0が中間レベルであり出力ph90がローレベルである場合はcode down(down)となる。また、入力Code up−downは、出力ph0が中間レベルであり出力ph90がハイレベルである場合はcode up(up)となる。また、入力Code up−downは、出力ph0および出力ph90がともに中間レベルの場合は最適固定となる。
このように、カウンタ回路255は、出力ph0,ph90がともに中間レベルである場合はカウント値を維持する。また、カウンタ830は、出力ph0がローレベルである場合はカウント値をダウンさせる。また、カウンタ830は、出力ph0がハイレベルである場合はカウント値をアップさせる。また、出力ph0が中間レベルであり、出力ph90がローレベルである場合はカウント値をダウンさせる。また、出力ph0が中間レベルであり、出力ph90がハイレベルである場合はカウント値をアップさせる。
これにより、出力ph0,ph90のすべてが中間レベルである場合は、フリップフロップ252によるサンプリングのタイミングを変化させず維持することができる。また、出力ph0,ph90の少なくともいずれかがハイレベルまたはローレベルである場合は、フリップフロップ252によるサンプリングのタイミングを変化させることができる。具体的には、出力ph0,ph90のうちのハイレベルまたはローレベルである出力のレベルに基づいてフリップフロップ252によるサンプリングのタイミングを変化させる。
ただし、出力ph0,ph90の一方がハイレベルであり他方がローレベルである場合のフリップフロップ252によるサンプリングのタイミングの変化方向は、出力ph0,ph90のうちのあらかじめ定められた優先順位が高い方に基づいて決定する。テーブル900に示した例では、出力ph0を出力ph90よりも優先順位を高くして、出力ph0を優先的に用いてカウント値を決定している。
<レベル検出回路の具体例>
図10は、図9に示したレベル検出回路の具体例を示す図である。図10に示すように、レベル検出回路811は、比較器1011および比較器1012を備えている。比較器1011には、レベル検出回路811へ入力された出力ph0と閾値VThighが入力される。比較器1011は、出力ph0が閾値VThighより高い場合は「high」を出力VHoutとして出力する。また、比較器1011は、出力ph0が閾値VThigh以下である場合は「low」を出力VHoutとして出力する。
比較器1012には、レベル検出回路811へ入力された出力ph0と閾値VTlowが入力される。比較器1012は、出力ph0が閾値VTlow以上である場合は「high」を出力VLoutとして出力する。また、比較器1012は、出力ph0が閾値VTlowより低い場合は「low」を出力VLoutとして出力する。比較器1011からの出力VHoutは、出力ph0 VHとして後段へ出力される。比較器1011からの出力VLoutは、出力ph0 VLとして後段へ出力される。
ここではレベル検出回路811の具体例について説明したが、レベル検出回路821についても同様である。この場合は、比較器1011および比較器1012には出力ph0に代えて出力ph90が入力される。また、レベル検出回路821からの出力VHoutは、出力ph90 VHとして後段へ出力される。また、比較器1012からの出力VLoutは、出力ph90 VLとして後段へ出力される。
図11は、図10に示したレベル検出回路の閾値の設定例を示す図である。符号1101は、たとえばレプリカデータrepdaに対してクロック信号FFrep−clkが遅れている場合の出力ph0を示している。符号1102は、たとえばレプリカデータrepdaに対してクロック信号FFrep−clkが早い場合の出力ph0を示している。符号1103は、レプリカデータrepdaに対してクロック信号FFrep−clkの位相が最適点となっている場合の出力ph0を示している。
レベル検出回路811における閾値VThighは、符号1101に示す出力ph0(レプリカデータrepdaのハイレベル)より低く、符号1103に示す出力ph0の最大値より高く設定する。レベル検出回路811における閾値VTlowは、符号1102に示す出力ph0(レプリカデータrepdaのローレベル)より高く、符号1103に示す出力ph0の最小値より低く設定する。ここではレベル検出回路811の具体例について説明したが、レベル検出回路821についても同様である。
図12は、図10に示したレベル検出回路によるレベルの判定例を示す図である。図12に示すテーブル1200は、レベル検出回路811からの出力VHoutおよび出力VLoutに基づく出力ph0のレベルの判定基準を示している。
具体的には、出力VHoutが「high」であり出力VLoutが「high」である場合は、出力ph0のレベルはハイレベル(high)と判定される。出力VHoutが「low」であり出力VLoutが「high」である場合は、出力ph0のレベルは中間レベルと判定される。出力VHoutが「low」であり出力VLoutが「low」である場合は、出力ph0のレベルはローレベル(low)と判定される。
このように、レベル検出回路811は、入力された出力ph0がハイレベル、ローレベルおよび中間レベルのいずれであるかを判定することができる。ここではレベル検出回路811の具体例について説明したが、レベル検出回路821についても同様である。
このように、実施の形態2にかかるパラレル−シリアル変換器200は、フリップフロップ252の出力repoutを、互いに位相が異なるクロック信号div−0,div−90でサンプリングする。そして、パラレル−シリアル変換器200は、出力ph0,ph90のすべてが中間レベルである場合は、フリップフロップ241によるサンプリングのタイミングを変化させず維持する。
また、パラレル−シリアル変換器200は、出力ph0,ph90の少なくともいずれかがハイレベルまたはローレベルである場合は、フリップフロップ241によるサンプリングのタイミングを変化させる。これにより、フリップフロップ241によるサンプリングにおけるタイミングの非最適点を最適点と誤判定することを回避することができる。このため、シリアルデータdaの最適点に対するクロック信号FF−clkの位相ずれを確実に補償し、シリアルデータdaを精度よく整形することができる。
(実施の形態3)
<パラレル−シリアル変換器の構成>
図13は、実施の形態3にかかるパラレル−シリアル変換器を示す図である。図13において、図2に示した構成と同様の構成については同一の符号を付して説明を省略する。図13に示すように、パラレル−シリアル変換器200は、入力端子211と、反転回路212と、分周回路213と、任意位相生成回路214と、入力端子221,222と、変換回路230と、フリップフロップ241と、出力端子242と、レプリカ回路250と、カウンタ1321と、位相設定回路260と、を備えている。
レプリカ回路250はCDR回路1310(Clock Data Recovery)を備えている。ここでは、図2に示したカウンタ回路255を省いた構成にしてもよい。CDR回路1310は、フリップフロップ253,254と、任意位相生成回路1311と、レベル検出回路1312と、を備えている。分周回路213から出力されたクロック信号div−0,div−90は任意位相生成回路1311へ入力される。
任意位相生成回路1311は、入力されたクロック信号div−0,div−90の位相を変化させたクロック信号div−0,div−90を生成する。任意位相生成回路1311が生成するクロック信号div−0,div−90は、たとえば互いに位相が90度異なるクロック信号である。
任意位相生成回路1311は、たとえばレベル検出回路1312から出力される出力ph0のレベルが中間レベルになるように、生成するクロック信号div−0の位相を変化させる。任意位相生成回路1311は、生成したクロック信号div−0をフリップフロップ253へ出力し、クロック信号div−90をフリップフロップ254へ出力する。
レベル検出回路1312は、フリップフロップ253からの出力ph0のレベルを検出して任意位相生成回路1311へ出力する。また、レベル検出回路1312は、フリップフロップ254からの出力ph90のレベルを検出してカウンタ1321へ出力する。カウンタ1321は、レベル検出回路1312からハイレベルが出力されるとカウント値をアップさせ、ローレベルが出力されるとカウント値をダウンさせ、中間レベルが出力された場合はカウント値を維持する。
なお、ここではレベル検出回路1312が出力ph0のレベルを任意位相生成回路1311へ出力する構成について説明したが、レベル検出回路1312が出力ph90のレベルを任意位相生成回路1311へ出力する構成としてもよい。この場合は、レベル検出回路1312は、出力ph0のレベルをカウンタ1321へ出力する。また、任意位相生成回路1311は、レベル検出回路1312から出力される出力ph90のレベルが中間レベルになるように、生成するクロック信号div−90の位相を変化させる。
また、ここでは出力repoutをクロック信号div−0,div−90の2つのクロック信号によってサンプリングする構成について説明したが、出力repoutを互いに位相が異なる3つ以上のクロック信号によってサンプリングする構成としてもよい。この場合は、任意位相生成回路1311は、3つ以上のクロック信号の少なくともいずれかによってサンプリングされた出力が中間レベルになるように、生成するクロック信号div−90の位相を変化させる。
<クロック信号div−0によるサンプリング>
図14−1は、位相が異なる複数のクロック信号による誤判定の回避を示す図(その1)である。図14−1において、図5−1に示した部分と同様の部分については同一の符号を付して説明を省略する。ここでは、符号302,303に示すように、シリアルデータdaの最適点に対してクロック信号FF−clkの立ち上がりの位相が遅い場合について説明する。
符号308に示すように、任意位相生成回路1311は、出力ph0のレベルが中間レベルになるように、生成するクロック信号div−0の位相を変化させる(符号1401)。これにより、符号306,501に示すように、クロック信号div−90の立ち上がりが、出力repoutの切り替わり点と重ならないようにすることができる。このため、出力ph90は常にローレベル(all=0)となる。これに対して、カウンタ回路255および位相設定回路260は、シリアルデータdaの最適点に対してクロック信号FF−clkが遅いと判定し、クロック信号MUX−clkの位相を遅くする。
図14−2は、位相が異なる複数のクロック信号による誤判定の回避を示す図(その2)である。図14−2において、図14−1に示した部分と同様の部分については同一の符号を付して説明を省略する。ここでは、符号302,303に示すように、シリアルデータdaの最適点に対してクロック信号FF−clkの立ち上がりが一致している場合について説明する。
この場合は、図14−2の符号308,502に示すように、出力ph0,ph90がともに中間レベルとなる。これにより、カウンタ回路255および位相設定回路260は、シリアルデータdaの最適点に対してクロック信号FF−clkの位相が最適点であると判定し、クロック信号MUX−clkの位相を維持する。
このように、実施の形態3にかかるパラレル−シリアル変換器200は、フリップフロップ252の出力repoutを、互いに位相が異なるクロック信号div−0,div−90でサンプリングする。そして、パラレル−シリアル変換器200は、サンプリング信号 ph0 がハイレベルとローレベルの中間レベルとなるようにクロック信号div−0,div−90の位相を制御する。これにより、クロック信号div−90の立ち上がりが出力repoutの切り替わり点と重ならないようにすることができる。
そして、パラレル−シリアル変換器200は、出力ph90のレベルに基づいてフリップフロップ241によるサンプリングのタイミングを制御する。これにより、サンプリングにおけるタイミングの非最適点を最適点と誤判定することを回避し、シリアルデータdaの最適点に対するクロック信号FF−clkの位相ずれを確実に補償することができる。このため、シリアルデータdaを精度よく整形することができる。
以上説明したように、パラレル−シリアル変換器によれば、シリアルデータを精度よく整形することができる。