(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態にかかる半導体集積回路を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0008】
(第1の実施形態)
第1の実施形態に係る半導体集積回路100を含むDLL回路1について説明する。DLL回路1は、外部(例えば、ホスト)から基準クロックを受け、基準クロックに付加する遅延量が所定の遅延量になった状態でロックし、基準クロックに所定の遅延量が付加された出力クロックを後段の回路(例えば、内部回路)へ出力する。DLL回路1は、NAND型フラッシュメモリにおけるホストI/F回路などの高速I/F回路に使用され得るために、高速にロックすることが要求されている。
【0009】
例えば、DLL回路1は、
図1に示すように構成される。
図1は、DLL回路1の構成を示すブロック図である。DLL回路1は、TDC(Time to Digital Converter)技術をベースとして高速にロック可能なDLL回路である。DLL回路1は、遅延時間検出回路2及び制御回路3を有する。遅延時間検出回路2は、クロックジェネレータ4及び半導体集積回路100を有する。半導体集積回路100は、ディレイチェーン30を有する。ディレイチェーン30は、複数の遅延素子を有し、複数の遅延素子が接続されて構成される。制御回路3は、ロジック回路5及びディレイブロック6を有する。ディレイブロック6は、ディレイチェーン(第2のディレイチェーン)60を有する。ディレイチェーン60は、半導体集積回路100におけるディレイチェーン30と等価な構成を有し、複数の遅延素子が接続された構成を有する。
【0010】
クロックジェネレータ4は、基準クロックclk_refを受け、基準クロックclk_refを用いて、
図2に示すような内部動作用のクロックclk_in,clk_detectを生成する。
図2は、クロックジェネレータ4の動作を示す波形図である。例えば、クロックジェネレータ4は、基準クロックclk_refの立ち上がりエッジに同期して、基準クロックclk_refを4分周してクロックclk_inを生成する。クロックジェネレータ4は、基準クロックclk_refの立ち上がりエッジに同期して、クロックclk_inを基準クロックclk_refの1周期分遅延させてクロックclk_detectを生成する。クロックclk_detectは、1周期分の遅延を検出するためのクロックとみなすことができる。クロックジェネレータ4は、クロックclk_in及びクロックclk_detectを半導体集積回路100へ供給する。
【0011】
例えば、半導体集積回路100を、ディレイチェーン30における遅延素子ごとに位相比較器を設け、遅延素子の出力と所定の遅延量に対応した基準クロックclk_refとの位相比較を各位相比較器で行うよう構成した場合を考える。この場合、基準クロックclk_refの最初の立ち上がりエッジが複数の遅延素子を順に通過し、2回目の立ち上がりエッジで各位相比較器の出力を取り込む。複数の位相比較器の出力結果がHレベル/Lレベルで切り替わる個数が、1周期相当の遅延素子段数となる。この結果を元に、任意の位相角(90°や180°)の遅延素子段数を算出し、出力することが可能である。この構成では、遅延素子1つについて、位相比較器が1つずつ必要であり、DLL回路1の回路規模が大きくなりやすい。これにより、DLL回路1のリーク電流・消費電力が大きくなりやすく、DLL回路1のレイアウト面積が増大しやすい。
【0012】
そこで、第1の実施形態では、ディレイチェーン30に含まれる複数の遅延素子をグループ化し、半導体集積回路100における遅延素子段数の検出をグループの特定とグループ内の素子の特定との2段階にすることで、検出に必要な位相比較器数の低減を図る。
【0013】
具体的には、半導体集積回路100は、
図3に示すように構成され得る。
図3は、半導体集積回路100の構成を示す回路図である。半導体集積回路100は、ディレイチェーン30、検出回路(第1の検出回路)10、及び検出回路(第2の検出回路)20を有する。
【0014】
ディレイチェーン30は、複数の遅延素子が行列状に配列され、複数の遅延素子が複数のグループにグループ化されている。m,nをそれぞれ2以上の任意の整数とすると、ディレイチェーン30は、m行n列の遅延素子31(1,1)〜31(m,n)を含むことができる。
図3では、mが偶数の場合の構成が例示されている。各遅延素子31(1,1)〜31(m,n)は、互いに均等な遅延特性(例えば、均等な所定の遅延量D)を有している。基準クロックclk_refの伝播方向は、奇数行では1列目→n列目の方向であり、偶数行ではn列目→1列目の方向である。奇数行のn列目の遅延素子の出力ノードは行番号をインクリメントした偶数行のn列目の遅延素子の入力ノードに接続されている。偶数行の1列目の遅延素子の出力ノードは行番号をインクリメントした奇数行の1列目の遅延素子の入力ノードに接続されている。これにより、各遅延素子31(1,1)〜31(m,n)は、基準クロックclk_refに対して互いに異なる遅延量のクロックを発生させる。
【0015】
複数のグループGR_1〜GR_mは、ディレイチェーン30内が行単位に分割されて得られる。ディレイチェーン30において、複数のグループGR_1〜GR_mは、ライン状に直列に接続されているとともに、列に沿った方向に配列されている。複数のグループGR_1〜GR_mは、遅延素子31(1,1)〜31(m,n)の配列における1〜m行に対応している。各グループGR_1〜GR_mは、対応する行に含まれた複数の遅延素子を有する。
【0016】
ディレイチェーン30は、複数の遅延素子31(1,1)〜31(m,n)に加えて複数のスイッチ32(1,1)〜32(m,n−1)を有する。複数のスイッチ32(1,1)〜32(m,n−1)は、行列状に配列され、複数の遅延素子に対応している。
【0017】
kを任意の1以上の整数とすると、奇数行の複数のスイッチ32(2k−1,1)〜32(2k−1,n−1)は、奇数行のグループGR_(2k−1)におけるn列目の遅延素子を除いた複数の遅延素子31(2k−1,1)〜31(2k−1,n−1)に対応している。同一の奇数行の複数のスイッチ32(2k−1,1)〜32(2k−1,n−1)は、共通の制御信号rsw(2k−2)でオン・オフ制御される。
【0018】
制御信号rsw(2k−2)は、
図4(a)に示すrsw生成ロジック回路40で生成される。
図4(a)〜
図4(c)は、rsw生成ロジック回路40の構成を示す図である。rsw生成ロジック回路40は、奇数行のスイッチ32(2k−1,1)〜32(2k−1,n−1)に対する制御信号rsw(2k−2)を、
図4(b)に示すロジック回路で生成する。例えば、アンドゲートAND0は、ハイレベル固定“H”の信号と1行目の最終段の遅延素子31(1,n)の出力r0を論理反転させた信号との論理積を演算し、演算結果をrsw0として出力する。アンドゲートAND2は、1行目の最終段の遅延素子31(1,n)の出力r0と3行目の最終段の遅延素子31(3,n)の出力r2を論理反転させた信号との論理積を演算し、演算結果をrsw2として出力する。・・・アンドゲートAND(m−2)は、(m−3)行目の最終段の遅延素子31(m−3,n)の出力r(m−4)と(m−1)行目の最終段の遅延素子31(m−1,n)の出力r(m−2)を論理反転させた信号との論理積を演算し、演算結果をrsw(m−2)として出力する。
【0019】
図3に示す偶数行の複数のスイッチ32(2k,1)〜32(2k,n−1)は、偶数行のグループGR_2kにおける1列目の遅延素子を除いた複数の遅延素子31(2k,2)〜31(2k,n)に対応している。同一の偶数行の複数のスイッチ32(2k,1)〜32(2k,n−1)は、共通の制御信号rsw(2k−1)でオン・オフ制御される。
【0020】
制御信号rsw(2k−1)は、
図4(a)に示すrsw生成ロジック回路40で生成される。rsw生成ロジック回路40は、偶数行のスイッチ32(2k,1)〜32(2k,n−1)に対する制御信号rsw(2k−1)を、
図4(c)に示すロジック回路で生成する。例えば、アンドゲートAND1は、ハイレベル固定“H”の信号と2行目の最終段の遅延素子31(2,1)の出力r1を論理反転させた信号との論理積を演算し、演算結果をrsw1として出力する。アンドゲートAND3は、2行目の最終段の遅延素子31(2,1)の出力r1と4行目の最終段の遅延素子31(4,1)の出力r3を論理反転させた信号との論理積を演算し、演算結果をrsw3として出力する。・・・アンドゲートAND(m−1)は、(m−2)行目の最終段の遅延素子31(m−2,1)の出力r(m−3)とm行目の最終段の遅延素子31(m,1)の出力r(m−1)を論理反転させた信号との論理積を演算し、演算結果をrsw(m−1)として出力する。
【0021】
図3に示す検出回路10は、複数のグループGR_1〜GR_mのうち所定の遅延量(例えば、基準クロックclk_refの1周期)に対応するグループを検出する。検出回路10は、複数のグループGR_1〜GR_mに対応した複数の位相比較器(複数の第1の位相比較器)11−1〜11−mを有する。複数の位相比較器11−1〜11−mは、遅延素子31(1,1)〜31(m,n)の配列における1〜m行に対応している。
【0022】
奇数行に対応した各位相比較器11−(2k−1)(kは任意の1以上の整数)は、対応する行のグループGR_(2k−1)におけるn列目の遅延素子で発生されたクロックの位相をクロックclk_detectと比較し、比較結果qr(2k−2)を制御回路3(
図1参照)へ出力する。
【0023】
偶数行に対応した各位相比較器11−2k(kは任意の1以上の整数)は、対応する行のグループGR_2kにおける1列目の遅延素子で発生されたクロックの位相をクロックclk_detectと比較し、比較結果qr(2k−1)を制御回路3(
図1参照)へ出力する。
【0024】
各比較結果qr(2k−1),qr(2k−2)は、0、1の2値を取り得る。0の比較結果は、遅延素子で発生されたクロックの位相がクロックclk_detectの位相に対して遅れていることを示し得る。1の比較結果は、遅延素子で発生されたクロックの位相がクロックclk_detectの位相に対して同期している又は進んでいることを示し得る。
【0025】
検出回路20は、検出回路10で検出されたグループに含まれる複数の遅延素子のうち所定の遅延量(例えば、基準クロックclk_refの1周期)に対応する遅延素子を検出する。検出回路20は、各行に含まれた複数列の遅延素子に対応した複数の位相比較器を有する。検出回路20は、複数の位相比較器(複数の第2の位相比較器)21−1〜21−(n−1)、複数の位相比較器(複数の第2の位相比較器)22−2〜22−n、複数のセレクタ23−1〜23−(n−1)、及びロジック回路24を有する。
【0026】
複数の位相比較器21−1〜21−(n−1)は、奇数行における複数列の遅延素子に対応し、その入力ノードが、奇数行の複数のスイッチ32(2k−1,1)〜32(2k−1,n−1)を介して、奇数行のグループGR_(2k−1)における複数の遅延素子31(2k−1,1)〜31(2k−1,n−1)の出力ノードに電気的に接続され得る。位相比較器21−1の入力ノードは、各奇数行における1列目の遅延素子31の出力ノードがスイッチ32を介して共通に接続されている。・・・位相比較器21−(n−1)の入力ノードは、各奇数行における(n−1)列目の遅延素子31の出力ノードがスイッチ32を介して共通に接続されている。
【0027】
複数の位相比較器22−2〜22−nは、偶数行における複数列の遅延素子に対応し、その入力ノードが、偶数行の複数のスイッチ32(2k,1)〜32(2k,n−1)を介して、偶数行のグループGR_2kにおける複数の遅延素子31(2k,2)〜31(2k,n)の出力ノードに電気的に接続され得る。位相比較器22−2の入力ノードは、各奇数行における2列目の遅延素子31の出力ノードがスイッチ32を介して共通に接続されている。・・・位相比較器22−nの入力ノードは、各奇数行におけるn列目の遅延素子31の出力ノードがスイッチ32を介して共通に接続されている。
【0028】
複数のセレクタ23−1〜23−(n−1)は、複数の位相比較器21−1〜21−(n−1)の比較結果と複数の位相比較器22−2〜22−nの比較結果とのいずれかを選択して検出結果qc1〜qc(n−1)として出力する。kを任意の1以上の整数とすると、セレクタ23−kは、ロジック回路24から受けるセレクト信号selcに応じて、位相比較器21−kの比較結果と位相比較器22−(n−k+1)の比較結果とのいずれかを選択して検出結果qc(k)として出力する。
【0029】
ロジック回路24は、複数の位相比較器11−1〜11−mの比較結果qr<m−1:0>を受け、比較結果qr<m−1:0>に応じて、セレクト信号selcを生成して各セレクタ23−1〜23−(n−1)へ供給する。ロジック回路24は、比較結果qr<m−1:0>に応じて、クロックclk_inの立ち上がりエッジが通過している行が奇数行である場合(
図6(a)参照)、位相比較器21−1〜21−(n−1)の比較結果(奇数行の比較結果qce1〜qce(n−1))を選択させるセレクト信号selcを生成して各セレクタ23−1〜23−(n−1)へ供給する。ロジック回路24は、比較結果qr<m−1:0>に応じて、クロックclk_inの立ち上がりエッジが通過している行が偶数行である場合(
図6(a)参照)、位相比較器22−2〜22−nの比較結果(偶数行の比較結果qco1〜qco(n−1))を選択させるセレクト信号selcを生成して各セレクタ23−1〜23−(n−1)へ供給する。このように、同一列に並ぶ複数の遅延素子の出力をスイッチで切り替えて位相比較器21−1〜21−(n−1),22−2〜22−nに接続することで、位相比較器を列ごとに共用化でき使用数を削減できる。
【0030】
図3に示す回路によれば、遅延素子の個数はn(横方向の数:列数)×m(縦方向の数:行数)となる。遅延素子ごとに位相比較器を設ける場合、n×m個の位相比較器が必要であるが、
図3に示す回路では、2n+m個ですんでいる。例えば、n=16、m=16とすると、遅延素子ごとに位相比較器を設ける場合の位相比較器の個数n×m=256に比較して、
図3に示す回路では、位相比較器の個数が2n+m=48個と約1/5に削減され得る。
【0031】
次に、半導体集積回路100による遅延素子段数の検出動作(遅延時間検出動作)について
図5を用いて説明する。
図5は、半導体集積回路100の動作を示す波形図である。
【0032】
半導体集積回路100は、クロックジェネレータ4から供給されたクロックclk_in及びクロックclk_detectを用いて、所定の遅延量に相当する遅延素子段数を検出する。
図5では、所定の遅延量が基準クロックclk_refの1周期分の遅延時間である場合について例示されている。
【0033】
例えば、クロックclk_inがディレイチェーン30へ入力されると、ディレイチェーン30における遅延素子を順にクロックclk_inの立ち上がりエッジが通過し、1行目の最終段以外の遅延素子31(1,1)〜31(1,n−1)の出力ce1,ce2,・・・,ce(n−1)の波形が順次に立ち上がる。その後、1行目の最終段の遅延素子31(1,n)の出力r0の波形が立ち上がる。
【0034】
1行目の遅延素子31(1,1)〜31(1,n)をこの順にクロックclk_inの立ち上がりエッジが通過する間は、制御信号rsw0がアクティブレベルで1行目のスイッチ32(1,1)〜32(1,n−1)がオン状態に維持され、1行目の各遅延素子31(1,1)〜31(1,n−1)の出力ce1,ce2,・・・,ce(n−1)が対応する位相比較器21−1〜21−(n−1)に供給される。位相比較器21−1〜21−(n−1)は、クロックclk_detectの立ち上がりエッジが供給されていないので、まだ位相比較を行わない。このとき、1行目→2行目の切換をスムーズに行うために2行目のスイッチの制御信号rsw1がアクティブレベルになっているが、3行目以降のスイッチの制御信号rsw2〜rsw(m−1)はノンアクティブレベルである。
【0035】
2行目の遅延素子31(2,1)〜31(2,n)をこの逆順にクロックclk_inの立ち上がりエッジが通過する間は、制御信号rsw1がアクティブレベルで2行目のスイッチ32(2,1)〜32(2,n−1)がオン状態に維持され、2行目の各遅延素子31(2,1)〜31(2,n−1)の出力co1,co2,・・・,co(n−1)が対応する位相比較器22−1〜22−nに供給される。位相比較器22−1〜22−nは、クロックclk_detectの立ち上がりエッジが供給されていないので、まだ位相比較を行わない。このとき、1行目のスイッチの制御信号rsw0は、1行目の最終段の遅延素子31(1,n)の出力r0の波形が立ち上がったことに応じてノンアクティブレベルになり、2行目→3行目の切換をスムーズに行うために3行目のスイッチの制御信号rsw2がノンアクティブレベルからアクティブレベルになるが、4行目以降のスイッチの制御信号rsw3〜rsw(m−1)はノンアクティブレベルである。
【0036】
3行目の遅延素子31(3,1)〜31(3,n)をこの順にクロックclk_inの立ち上がりエッジが通過する間は、制御信号rsw2がアクティブレベルで3行目のスイッチ32(3,1)〜32(3,n−1)がオン状態に維持され、3行目の各遅延素子31(3,1)〜31(3,n−1)の出力ce1,ce2,・・・,ce(n−1)が対応する位相比較器21−1〜21−(n−1)に供給される。位相比較器21−1〜21−(n−1)は、クロックclk_detectの立ち上がりエッジが供給されるまでは、位相比較を行わない。このとき、3行目→4行目の切換をスムーズに行うために4行目のスイッチの制御信号rsw3がアクティブレベルになるが、5行目以降のスイッチの制御信号rsw4〜rsw(m−1)はノンアクティブレベルである。
【0037】
例えば、3行目の遅延素子31(3,1)〜31(3,n)をクロックclk_inの立ち上がりエッジが通過する間においてクロックclk_detectの立ち上がりエッジが供給されると、位相比較器11−1〜11−m、位相比較器21−1〜21−(n−1)、位相比較器22−2〜22−nは、それぞれ、位相比較を行い、比較結果を出力する。位相比較器11−1〜11−mは、比較結果qr<m−1:0>を遅延時間検出回路2(
図1参照)の検出結果qrとして制御回路3へ出力する。位相比較器21−1〜21−(n−1)の比較結果qce1〜qce(n−1)と位相比較器22−2〜22−nの比較結果qco1〜qco(n−1)とがセレクタ23−1〜23−(n−1)へ供給される。現在、クロックclk_detectの立ち上がりエッジが通過している行が奇数行(3行目)であることに応じて、セレクタ23−1〜23−(n−1)は、奇数行の比較結果qce1〜qce(n−1)を選択して遅延時間検出回路2(
図1参照)の検出結果qcとして制御回路3へ出力する。
【0038】
これにより、遅延時間検出回路2は、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子段数を示す検出結果qr,qcを制御回路3へ出力できる。検出結果qr,qcの内容は、例えば、
図6に示すようになる。
図6(a)は、遅延時間検出回路2の検出結果qrを示す図であり、
図6(b)は、遅延時間検出回路2の検出結果qcを示す図である。検出結果qrは、mビット(例えば、m=8の場合に8ビット)のビットパターンであり、
図6(a)に示すどのビットパターンであるのかに応じて、基準クロックclk_refの1周期分の遅延時間に相当するグループが何行目のグループであるのかを示す。検出結果qcは、n−1ビット(n=8の場合に7ビット)のビットパターンであり、
図6(b)に示すどのビットパターンであるのかに応じて、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子がグループ内の何番目の遅延素子(何列目の遅延素子)であるのかを示す。
【0039】
すなわち、半導体集積回路100は、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子段数の検出をグループの特定(何行目かの特定)とグループ内の素子の特定(その行内の何列目かの特定)との2段階で行い、その検出結果qr,qcを出力できる。
【0040】
図6に示すような検出結果qr,qcを受けて、制御回路3のロジック回路5(
図1参照)は、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子段数を求める。ロジック回路5は、遅延素子の伝搬の順番31(1,1)〜31(1,n)(列番号が昇順)→31(2,n)〜31(2,1)(列番号が降順)→31(3,1)〜31(3,n)(列番号が昇順)→・・・→31(m−1,1)〜31(m−1,n)(列番号が昇順)→31(m,n)〜31(m,1)(列番号が降順)において、検出結果qr,qcに示す(行番号,列番号)に対応する遅延素子の先頭からの段数をカウントし、カウント結果を基準クロックclk_refの1周期分の遅延時間に相当する遅延素子段数とする。ロジック回路5は、求められた遅延素子段数に応じて、出力クロックclk_outに採用する遅延素子の出力を選択するセレクト信号selを生成してディレイブロック6へ出力する。
【0041】
ディレイブロック6は、例えば、
図7に示すように構成される。
図7は、ディレイブロック6の構成を示す図である。ディレイブロック6は、ディレイチェーン60及びセレクタ70を有する。ディレイチェーン60は、複数の遅延素子61−1〜61−p(pは1以上m×n以下の任意の整数)が直列に接続された構成を有する。各遅延素子61−1〜61−pは、半導体集積回路100のディレイチェーン30における各遅延素子31(1,1)〜31(m,n)と等価な遅延特性(例えば、均等な遅延量D)を有する。
【0042】
ディレイチェーン60における各遅延素子61−1〜61−pは、基準クロックclk_refに対して先頭からの段数に応じて遅延されたクロックclk0〜clk(p−1)をセレクタ70へ出力する。例えば、先頭からk番目(kは任意の1以上p以下の整数)の遅延素子61−kは、基準クロックclk_refに対して遅延量D×kで遅延させたクロックclk(k−1)をセレクタ70へ出力する。
【0043】
セレクタ70は、
図8に示すように、セレクト信号selが供給されるまでは動作せず、出力クロックclk_outを出力しない。セレクタ70は、ロジック回路5から供給されたセレクト信号selに応じて、複数の遅延素子61−1〜61−pからの複数のクロックclk0〜clk(p−1)のうちの1つを選択して、
図8に示すような所望の遅延量Δtを有する出力クロックclk_outとして出力する。
図8は、DLL回路1におけるディレイブロック6の動作を示す波形図である。所望の遅延量Δtは、要求される遅延量(遅延時間)に対応している。
【0044】
例えば、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子段数が4×M段であり、基準クロックclk_refを1/4周期で遅延させたクロックを生成させることが要求されている場合、ロジック回路5は、複数の遅延素子61−1〜61−pのうちの遅延素子61−Mを選択するセレクト信号selをセレクタ70へ供給する。これにより、セレクタ70は、遅延素子61−Mから出力されたclk(M−1)を出力クロックclk_outとして出力する。
【0045】
あるいは、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子段数が4×M段であり、基準クロックclk_refを1/2周期で遅延させたクロックを生成させることが要求されている場合、ロジック回路5は、複数の遅延素子61−1〜61−pのうちの遅延素子61−2×Mを選択するセレクト信号selをセレクタ70へ供給する。これにより、セレクタ70は、遅延素子61−2×Mから出力されたclk(2×M−1)を出力クロックclk_outとして出力する。
【0046】
なお、DLL回路1は、遅延時間検出動作に用いるディレイチェーン30とは別にディレイチェーン60を設けて、出力クロックclk_outの生成を行う。出力クロック生成用のディレイチェーン60を別に設ける場合の利点は、各遅延素子出力につける素子を少なくすることで負荷容量が軽くなることにより、遅延素子1段あたりの遅延が小さくなることで分解能が高くなり、より精度の高い遅延が生成できることである。このとき、ディレイチェーン30及びディレイチェーン60の間で遅延生成回路に用いる遅延素子は同じ遅延を再現するよう回路・レイアウトをそろえることが有効である。
【0047】
以上のように、第1の実施形態では、半導体集積回路100において、ディレイチェーン30に含まれる複数の遅延素子をグループ化し、半導体集積回路100における所定の遅延量(基準クロックclk_refの1周期分の遅延量)に対応する遅延素子段数の検出をグループの特定とグループ内の素子の特定との2段階で行う。これにより、所定の遅延量の検出に必要な位相比較器数を低減できるので、半導体集積回路100を含むDLL回路1のリーク電流・消費電力を抑制でき、DLL回路1のレイアウト面積を低減できる。
【0048】
また、第1の実施形態では、半導体集積回路100を含むDLL回路1において、基準クロックclk_refの1周期で所定の遅延量の遅延段数を検出して所望の遅延量にロックできる。これにより、高速にロックして出力クロックclk_outを生成できるので、DLL回路1が使用される高速I/F回路の動作の高速化に寄与できる。
【0049】
なお、ディレイチェーン30の配列は、複数の遅延素子をグループ化できれば行列状以外の形態(例えば、ディレイチェーン60と同様の形態)であってもよい。
【0050】
(第2の実施形態)
次に、第2の実施形態に係る半導体集積回路200について説明する。以下では、第1の実施形態と異なる部分を中心に説明する。
【0051】
第1の実施形態では、複数のグループGR_1〜GR_mがライン状に接続されてディレイチェーン30が構成されているが、第2の実施形態では、複数のグループGR_201,GR_202がループ状に接続されてディレイチェーン230が構成される。
【0052】
具体的には、半導体集積回路200は、ディレイチェーン230、検出回路(第1の検出回路)210、及び検出回路(第2の検出回路)220を有する。
【0053】
ディレイチェーン230は、複数の遅延素子を有し、複数の遅延素子が行列状に配列され、複数の遅延素子が複数のグループ(例えば、2行のグループ)にグループ化されている。nを2以上の任意の整数とすると、ディレイチェーン230は、2行n列の遅延素子231(1,1)〜231(2,n)を含むことができる。
【0054】
複数のグループGR_201,GR_202は、ディレイチェーン230内が行単位に分割されて得られる。ディレイチェーン230において、複数のグループGR_201,GR_202は、ループ状に接続されているとともに、列に沿った方向に配列されている。1行目のグループGR_201におけるn列目の遅延素子231(1,n)の出力ノードは、2行目のグループGR_202におけるn列目の遅延素子231(2,n)の入力ノードに接続されている。2行目のグループGR_202における1列目の遅延素子231(2,1)の出力ノードは、1行目のグループGR_201における1列目の遅延素子231(1,1)の入力ノードに接続されている。
【0055】
ディレイチェーン230は、セレクト信号生成回路232をさらに有する。グループGR_201における1列目の遅延素子231(1,1)は、遅延素子として機能するとともに、セレクト信号生成回路232からのセレクト信号slに応じて選択動作を行うセレクタとしても機能する。これにより、1列目の遅延素子231(1,1)は、クロックclk_inの立ち上がりエッジが供給されたタイミングでクロックclk_inを受け、そのタイミングから若干遅延したタイミング以降の期間に遅延素子231(2,1)の出力を遅延させて次段の遅延素子231(1,2)へ出力する。すなわち、ディレイチェーン230は、初回にクロックclk_inの立ち上がりエッジ(L→H)を受けた後に選択する信号を遅延素子231(2,1)の出力co0(Lレベル)に切り替えるのでパルスを生成でき、生成されたパルスをディレイチェーン230内で複数回ループ状に伝搬させることができる。
【0056】
なお、セレクタとして機能し得る遅延素子231(1,1)と他の遅延素子231(1,2)〜231(2,n)は等価な構成とすることができる。例えば、両者ともNAND2段で構成することで、等価な構成で遅延素子・セレクタの機能を有することができる。
【0057】
検出回路210は、複数の位相比較器211−1,211−2を有する。各位相比較器211−1,211−2は、ラッチ回路213−1,213−2及びカウンタ212−1,212−2を有する。各ラッチ回路213−1,213−2は、例えばLowイネーブルのラッチ回路(Dラッチ回路)であり、クロックclk_detectがLレベルの期間に入力を出力に伝播し、クロックclk_detectがHレベルになると出力信号を固定する。各カウンタ212−1,212−2は、ディレイチェーン230に対して信号がループ状に伝播されたループ回数をカウントする。
【0058】
1行目に対応した位相比較器211−1において、ラッチ回路213−1は、1行目のグループGR_201におけるn列目の遅延素子231(1,n)で発生されたクロックce(n)のパルスをクロックclk_detectがLレベルの期間には通過させ、通過したクロックce(n)のパルスをカウンタ212−1へ出力する。カウンタ212−1は、パルスがラッチ回路213−1から供給されたタイミングでカウント値qrcnt0をインクリメントして出力する。
【0059】
2行目に対応した位相比較器211−2において、ラッチ回路213−2は、2行目のグループGR_202における1列目の遅延素子231(2,1)で発生されたクロックco1のパルスをクロックclk_detectがLレベルの期間は通過させ、通過したクロックco1のパルスをカウンタ212−1へ出力する。カウンタ212−2は、パルスがラッチ回路213−2から供給されたタイミングでカウント値qrcnt1をインクリメントして出力する。
【0060】
検出回路220は、ロジック回路24(
図3参照)に代えてロジック回路224を有する。ロジック回路224は、カウンタ212−1,212−2のカウント値qrcnt0,qrcnt1を受け、カウント値qrcnt0,qrcnt1に応じて、セレクト信号selcを生成して各セレクタ23−1〜23−(n−1)へ供給する。ロジック回路224は、カウント値qrcnt0,qrcnt1に応じて、クロックclk_inの立ち上がりエッジが通過している行が1行目である場合(例えば、qrcnt0>qrcnt1である場合)、位相比較器21−1〜21−(n−1)の比較結果(1行目の比較結果qce1〜qce(n−1))を選択させるセレクト信号selcを生成して各セレクタ23−1〜23−(n−1)へ供給する。ロジック回路224は、カウント値qrcnt0,qrcnt1に応じて、クロックclk_inの立ち上がりエッジが通過している行が2行目である場合(例えば、qrcnt0=qrcnt1である場合)、位相比較器22−2〜22−nの比較結果(2行目の比較結果qco1〜qco(n−1))を選択させるセレクト信号selcを生成して各セレクタ23−1〜23−(n−1)へ供給する。
【0061】
図9に示す回路によれば、第1の実施形態に比べて、奇数行のグループを1行目のグループGR_201に共通化し、偶数行のグループを2行目のグループGR_202に共通化することで、遅延時間検出動作に使用する遅延素子の数及び位相比較器の数を削減できる。すなわち、第1の実施形態に比べて、ディレイチェーン230における遅延素子の数と検出回路210における位相比較器の数を低減できる。なお、
図9は、半導体集積回路200の構成を示す回路図である。
【0062】
また、半導体集積回路200による遅延素子段数の検出動作(遅延時間検出動作)が
図10に示すように、次の点で第1の実施形態と異なる。
図10は、半導体集積回路200の動作を示す波形図である。
【0063】
クロックclk_inの立ち上がりエッジが供給されたタイミングにおいて、セレクト信号生成回路232は、“0”のセレクト信号slを遅延素子231(1,1)に供給している。遅延素子231(1,1)は、クロックclk_inの供給側(0側)を選択し、遅延量Dで遅延させて次段の遅延素子231(1,2)に出力する。セレクト信号生成回路232は、クロックclk_inの立ち上がりエッジに対して若干遅延したタイミングでセレクト信号slを“0”→“1”に遷移させ、遅延素子231(1,1)は、選択する信号を遅延素子231(2,1)の出力co0(Lレベル)に切り替える。遅延素子231(1,1)の出力ce1の波形がパルス状の波形になる。その後、セレクト信号生成回路232は、セレクト信号slを“1”に維持し、遅延素子231(1,1)は、遅延素子231(2,1)の出力側(1側)を選択した状態を維持する。これにより、ce1〜ce(n),co(n−1)〜co0の波形に示されるように、複数のグループGR_201,GR_202がループ状に接続されたディレイチェーン230内でパルスを循環させる。
【0064】
クロックclk_detectがLレベルの間、循環するパルスは、ディレイチェーン230の両端のカウンタ212−1,212−2のカウント値qrcnt0,qrcnt1をすすめる。
【0065】
クロックclk_detectがHレベルになったとき、すなわち、クロックclk_detectの立ち上がりエッジが供給されたとき、カウンタ212−1,212−2のカウント値qrcnt0,qrcnt1の更新は停止する。このとき、カウンタ212−1,212−2は、カウント値qrcnt0,qrcnt1を遅延時間検出回路2(
図1参照)の検出結果として制御回路3へ出力している。
【0066】
それとともに、位相比較器21−1〜21−(n−1)、位相比較器22−2〜22−nは、それぞれ、位相比較を行い、比較結果を出力する。位相比較器21−1〜21−(n−1)の比較結果qce1〜qce(n−1)と位相比較器22−2〜22−nの比較結果qco1〜qco(n−1)とがセレクタ23−1〜23−(n−1)へ供給される。
図10の場合、qrcnt0>qrcnt1であり、現在、パルスが通過している行が1行目であることに応じて、セレクタ23−1〜23−(n−1)は、1行目の比較結果qce1〜qce(n−1)を選択して遅延時間検出回路2(
図1参照)の検出結果qcとして制御回路3へ出力する。
【0067】
これにより、遅延時間検出回路2は、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子段数を示す検出結果qrcnt0,qrcnt1,qcを制御回路3へ出力できる。検出結果qrcnt0,qrcnt1,qcの内容は、例えば、
図11に示すようになる。
図11(a)は、遅延時間検出回路2の検出結果qrcnt0,qrcnt1を示す図であり、
図11(b)は、遅延時間検出回路2の検出結果qcを示す図である。検出結果qrcnt0,qrcnt1は、2つのカウンタのカウント値であり、両者のカウント値の組み合わせに応じて、基準クロックclk_refの1周期分の遅延時間に相当するグループが共通化する前のグループに換算した場合に何行目のグループであるのかを示す。検出結果qcは、n−1ビット(n=8の場合に7ビット)のビットパターンであり、
図11(b)に示すどのビットパターンであるのかに応じて、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子がグループ内の何番目の遅延素子(何列目の遅延素子)であるのかを示す。例えば、qcでは、qcの上位ビット側から検索し、0→1に変化するビットで列番号を判定できる。
【0068】
すなわち、半導体集積回路200は、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子段数の検出をグループの特定(共通化する前のグループに換算した場合に何行目かの特定)とグループ内の素子の特定(その行内の何列目かの特定)との2段階で行い、その検出結果qrcnt0,qrcnt1,qcを出力できる。
【0069】
以上のように、第2の実施形態では、複数のグループGR_201,GR_202がループ状に接続されてディレイチェーン230が構成される。所定の遅延量に対応するグループの特定がディレイチェーン230の両端に設けられた位相比較器及びカウンタ(リップルカウンタ)で行われる。これにより、遅延時間検出動作に使用される位相比較器の個数を2(n+1)個に削減でき、ディレイチェーン230における遅延素子の数も大幅に削減ができる。したがって、リーク削減効果・面積削減効果を大きくすることができる。
【0070】
(第3の実施形態)
次に、第3の実施形態に係る半導体集積回路100について説明する。以下では、第1の実施形態と異なる点を中心に説明する。
【0071】
第1の実施形態では、半導体集積回路100がDLL回路1に適用される場合について例示しているが、第3の実施形態では、半導体集積回路100がデューティ調整回路(DCC)301に適用される場合について例示する。
【0072】
具体的には、デューティ調整回路301は、
図12に示すように構成され得る。
図12は、デューティ調整回路301の構成を示す図である。デューティ調整回路301は、遅延時間検出回路2に加えてパルス幅検出回路307を有し、制御回路3(
図1参照)に代えて制御回路303を有する。パルス幅検出回路307は、基本的に遅延時間検出回路2と同様に構成されるが、クロックジェネレータ308が異なる。
【0073】
クロックジェネレータ308は、
図13に示すように、内部動作用のクロックpls_detectを生成する。
図13は、クロックジェネレータ308の動作を示す波形図である。クロックジェネレータ308は、基準クロックclk_refの立ち下がりエッジに同期して、クロックpls_detectを基準クロックclk_refのパルス幅分遅延させて生成する。クロックpls_detectは、パルス幅(Hレベルの時間幅)を検出するためのクロックとみなすことができる。クロックジェネレータ308は、クロックclk_in及びクロックpls_detectをパルス幅検出回路307における半導体集積回路100へ供給する。
【0074】
パルス幅検出回路307における半導体集積回路100は、第1の実施形態の説明におけるクロックclk_detectをクロックpls_detectに置き換えた説明に示す動作を行い、基準クロックclk_refのパルス幅分の遅延時間に相当する遅延素子段数を示す検出結果qrb,qcbを制御回路303へ出力できる。検出結果qrb,qcbの内容は、
図6(a)、
図6(b)に示す内容と同様である。
【0075】
なお、遅延時間検出回路2は、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子段数を示す検出結果qra,qca(検出結果qr,qcと同様)を制御回路303へ出力できる点は、第1の実施形態と同様である。
【0076】
検出結果qra,qca,qrb,qcbを受けて、制御回路303のロジック回路305(
図12参照)は、基準クロックclk_refの1周期分の遅延時間に相当する遅延素子段数を求めるとともに、その遅延素子段数に基づきデューティ比の目標値(例えば、50%)からのずれを補正するための遅延素子段数を求める。ロジック回路305は、求められた遅延素子段数に応じて、出力クロックclk_outに採用する遅延素子の出力を選択するセレクト信号selを生成して調整回路309へ出力する。
【0077】
調整回路309は、例えば
図14に示すように構成される。
図14は、調整回路309の構成を示す図である。調整回路309は、ディレイブロック6(
図7参照)に加えて、セレクタ3091、ANDゲート3092、ORゲート3093を有する。セレクト信号selは、ディレイブロック6及びセレクタ3091にそれぞれ供給される。ANDゲート3092は、基準クロックclk_refとディレイブロック6の出力との論理積を演算して、演算結果をセレクタ3091へ出力する。ORゲート3093は、基準クロックclk_refとディレイブロック6の出力と論理和を演算し、演算結果をセレクタ3091へ出力する。
【0078】
セレクタ3091は、
図15に示すように、セレクト信号selが供給されるまでには動作せず、出力クロックclk_outを出力しない。セレクタ3091は、ロジック回路305から供給されたセレクト信号selに応じて、デューティ比調整のために基準クロックclk_refの立ち上がりエッジを選択的に遅延させる場合にANDゲート3092の演算結果を選択し、デューティ比調整のために基準クロックclk_refの立ち下がりエッジを選択的に遅延させる場合にORゲート3093の演算結果を選択する。
図15では、セレクタ3091がデューティ比調整のために基準クロックclk_refの立ち上がりエッジを選択的に遅延量Δt’で遅延させて出力クロックclk_outを生成する場合が例示されている。
【0079】
以上のように、第3の実施形態では、基準クロックclk_refの1周期で所定の遅延量の遅延段数を検出するとともにパルス幅に対応する遅延段数を検出してクロックのデューティ比を所望のデューティ比に調整できる。これにより、高速にクロックのデューティ比を調整できる。
【0080】
なお、デューティ調整回路301は、さらにデューティ検出回路を有していてもよい。例えば、調整回路309から出力された出力クロックclk_outをデューティ検出回路にフィードバックしてデューティ比を検出すれば、デューティ比の目標値に対する大小判定が可能である。ロジック回路305は、その検出結果も加味して調整すべき遅延量を決めてもよい。これにより、基準クロックclk_refの動的なデューティ比の変動に応じてデューティ比を調整できる。
【0081】
あるいは、デューティ調整回路301において、遅延時間検出回路2及びパルス幅検出回路307の少なくとも一方における半導体集積回路100が半導体集積回路200に置き換えられてもよい。
【0082】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。