(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-05
(45)【発行日】2024-08-14
(54)【発明の名称】制御回路及び半導体記憶装置
(51)【国際特許分類】
H03L 7/08 20060101AFI20240806BHJP
G11C 11/4096 20060101ALI20240806BHJP
G11C 7/10 20060101ALI20240806BHJP
G11C 7/22 20060101ALI20240806BHJP
【FI】
H03L7/08
G11C11/4096 550
G11C7/10 460
G11C7/22 100
(21)【出願番号】P 2023001473
(22)【出願日】2023-01-10
【審査請求日】2023-01-10
(73)【特許権者】
【識別番号】512167426
【氏名又は名称】華邦電子股▲ふん▼有限公司
【氏名又は名称原語表記】Winbond Electronics Corp.
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】奥野 晋也
【審査官】竹内 亨
(56)【参考文献】
【文献】特開2014-212365(JP,A)
【文献】特開2005-339597(JP,A)
【文献】特開2013-222997(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H03L 7/00-7/26
G11C 11/4096
G11C 7/10
G11C 7/22
(57)【特許請求の範囲】
【請求項1】
遅延量を設定する制御部と、
前記遅延量に基づいて入力クロック信号を遅延させて出力クロック信号を生成する遅延ライン部と、
前記入力クロック信号から前記出力クロック信号までの遅延クロックサイクル数を検出する検出動作を行う検出部と、を備え、
前記制御部は、遅延動作時には、前記遅延量を変化させて、前記入力クロック信号と前記出力クロック信号とが同期するように前記遅延ライン部を制御する制御回路であって、
前記検出部が、前記遅延動作が行われる前に前記検出動作を複数回行って複数の前記遅延クロックサイクル数を検出し、
前記制御部は、複数回の前記検出動作が行われる度に、当該検出動作における遅延量を設定し、検出された複数の前記遅延クロックサイクル数に応じて前記遅延動作における前記遅延量を設定
し、複数の前記遅延クロックサイクル数が小さいほど、前記遅延量を大きく設定することを特徴とする制御回路。
【請求項2】
前記制御部は、複数の前記遅延クロックサイクル数に応じて前記遅延動作の開始時の初期遅延量を変化させることを特徴とする請求項1記載の制御回路。
【請求項3】
前記制御部は、前記検出動作が行われる度に、前回行われた前記検出動作において検出された前記遅延クロックサイクル数に応じて前記遅延量を設定することを特徴とする請求項1記載の制御回路。
【請求項4】
前記制御部は、前記検出動作を行う度に、前記
検出動作における遅延量をより大きく設定することを特徴とする請求項1記載の制御回路。
【請求項5】
前記遅延クロックサイクル数に応じた前記遅延量が、前記遅延クロックサイクル数における、前記入力クロック信号に対する前記出力クロック信号の遅延を解消するために必要だと予測される最大遅延量よりも小さい値で、予め前記制御部において決定されていることを特徴とする請求項1記載の制御回路。
【請求項6】
前記制御部は、前記検出動作が行われる度に検出された複数の前記遅延クロックサイクル数がすべて同一であるかどうかを判定し、すべて同一である場合には、最後の前記検出動作における前記遅延クロックサイクル数に応じて、前記遅延動作における前記遅延量を設定することを特徴とする請求項1記載の制御回路。
【請求項7】
前記制御部は、前記検出動作が行われる度に検出された複数の前記遅延クロックサイクル数のいずれかが異なる場合、複数の前記検出動作のうち、最後の前記検出動作の一回前の前記検出動作で検出した前記遅延クロックサイクル数に応じて前記遅延動作における前記遅延量を設定することを特徴とする請求項1記載の制御回路。
【請求項8】
前記制御部は、前記検出動作を所定の回数行い、すべての前記検出動作において同一の前記遅延クロックサイクル数が検出された場合には、さらにもう一回前記検出動作を行い、最後の前記検出動作で検出した前記遅延クロックサイクル数も、前記遅延クロックサイクル数と同一であれば、最後の前記検出動作で検出した前記遅延クロックサイクル数に応じて前記遅延動作における前記遅延量を設定することを特徴とする請求項1記載の制御回路。
【請求項9】
前記検出部は、
前記遅延クロックサイクル数をレイテンシーカウンタに送信することを特徴とする請求項1記載の制御回路。
【請求項10】
前記検出部は、前記検出動作が行われる度に検出された前記遅延クロックサイクル数に応じて設定された前記遅延量に基づいて検出された複数の前記遅延クロックサイクル数がすべて同一であれば、複数の前記検出動作のうち、最後の検出動作で検出した前記遅延クロックサイクル数よりも1多い遅延クロックサイクル数を前記レイテンシーカウンタに入力することを特徴とする請求項
9記載の制御回路
【請求項11】
前記検出部は、前記検出動作が行われる度に前記遅延クロックサイクル数に応じて設定された前記遅延量に基づいて検出された複数の前記遅延クロックサイクル数のいずれかが異なる場合、複数の前記検出動作のうち、最後の検出動作で検出した前記遅延クロックサイクル数を前記レイテンシーカウンタに入力することを特徴とする請求項
9記載の制御回路。
【請求項12】
前記制御回路は、前記遅延動作後には前記検出動作を行わないことを特徴とする請求項1記載の制御回路
【請求項13】
請求項1記載の制御回路を備えることを特徴とする半導体記憶装置。
【請求項14】
前記半導体記憶装置はダイナミックランダムアクセスメモリであることを特徴とする請求項
13記載の半導体記憶装置。
【請求項15】
遅延量を設定する制御部と、
前記遅延量に基づいて入力クロック信号を遅延させて出力クロック信号を生成する遅延ライン部と、
前記入力クロック信号から前記出力クロック信号までの遅延クロックサイクル数を検出する検出動作を行う検出部と、を備え、
前記制御部は、遅延動作時には、前記遅延量を変化させて、前記入力クロック信号と前記出力クロック信号とが同期するように前記遅延ライン部を制御する制御回路であって、
前記検出部が、前記遅延動作が行われる前に前記検出動作を複数回行って複数の前記遅延クロックサイクル数を検出し、
前記制御部は、複数回の前記検出動作が行われる度に、当該検出動作における遅延量を設定し、検出された複数の前記遅延クロックサイクル数に応じて前記遅延動作における前記遅延量を設定し、
前記遅延クロックサイクル数に応じた前記遅延量が、前記遅延クロックサイクル数における、前記入力クロック信号に対する前記出力クロック信号の遅延を解消するために必要だと予測される最大遅延量よりも小さい値で、予め前記制御部において決定されていることを特徴とする制御回路。
【請求項16】
遅延量を設定する制御部と、
前記遅延量に基づいて入力クロック信号を遅延させて出力クロック信号を生成する遅延ライン部と、
前記入力クロック信号から前記出力クロック信号までの遅延クロックサイクル数を検出する検出動作を行う検出部と、を備え、
前記制御部は、遅延動作時には、前記遅延量を変化させて、前記入力クロック信号と前記出力クロック信号とが同期するように前記遅延ライン部を制御する制御回路であって、
前記検出部が、前記遅延動作が行われる前に前記検出動作を複数回行って複数の前記遅延クロックサイクル数を検出し、
前記制御部は、複数回の前記検出動作が行われる度に、当該検出動作における遅延量を設定し、検出された複数の前記遅延クロックサイクル数に応じて前記遅延動作における前記遅延量を設定し、
前記制御部は、前記検出動作が行われる度に検出された複数の前記遅延クロックサイクル数がすべて同一であるかどうかを判定し、すべて同一である場合には、最後の前記検出動作における前記遅延クロックサイクル数に応じて、前記遅延動作における前記遅延量を設定することを特徴とする制御回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御回路及び半導体記憶装置に関する。
【背景技術】
【0002】
半導体記憶装置の一種であるDRAM(Dynamic Random Access Memory)は、キャパシタ(コンデンサ)に電荷を蓄えることによって情報を記憶し、電源が供給されなくなると、記憶された情報が失われる揮発性メモリである。DRAMには、位相同期回路として遅延ロックループ(DLL:Delay locked Loop)回路が設けられている。DRAMは、DLL回路を用いて、データ信号を出力するための内部クロック信号を、外部から入力された入力クロック信号に同期させて生成している(例えば特許文献1参照)
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、DLL回路を用いて内部クロック信号の遅延の調整を行う場合、例えば、DLL回路のリセット動作と、DLL回路の遅延(ロック)動作(例えば、遅延線を1本ずつ活性化させながら外部クロックと内部クロックとを同期させる動作)と、入力クロック信号と内部クロック信号との間の遅延クロックサイクル数を示すN値の検出動作と、を含むシーケンスが実行される。
【0005】
ここで、DLL回路の遅延動作によるロック時間Tdllは、下記の式で表すことができる。
【0006】
Tint+Tdll=N×tCK
【0007】
上記式において、TintはDLL回路における固有遅延時間を示し、tCKがクロックサイクルを示す。例えば半導体記憶装置内の温度等によってクロックサイクル(tCK)が固有遅延時間(Tint)よりも長くなる場合、上記の式で示すようにDLL回路の遅延動作によるロック時間(Tdll)も長期化してしまう。このようにロック時間が長期化すると、上記のシーケンス全体の実行時間が長くなってしまい、次のシーケンスの実行が遅延する虞や、事前に定められたシーケンスの実行期間(tDLLK)を超える虞がある。
【0008】
本発明は上記課題に鑑みてなされたものであり、遅延動作の長期化を抑制し、DLL回路を用いて内部クロック信号の遅延の調整を行うシーケンスを所定の実行期間内に完了することができる制御回路、半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の制御回路は、遅延量を設定する制御部と、前記遅延量に基づいて入力クロック信号を遅延させて出力クロック信号を生成する遅延ライン部と、前記入力クロック信号から前記出力クロック信号までの遅延クロックサイクル数を検出する検出動作を行う検出部と、を備え、前記制御部は、遅延動作時には、前記遅延量を変化させて、前記入力クロック信号と前記出力クロック信号とが同期するように前記遅延ライン部を制御する制御回路であって、前記検出部が、前記遅延動作が行われる前に前記検出動作を複数回行って複数の前記遅延クロックサイクル数を検出し、前記制御部は、複数回の前記検出動作が行われる度に、当該検出動作における遅延量を設定し、検出された複数の前記遅延クロックサイクル数に応じて前記遅延動作における前記遅延量を設定することを特徴とする。
【0010】
本発明においては、検出部が、前記遅延動作が行われる前に前記検出動作を複数回行って複数の前記遅延クロックサイクル数を検出し、前記制御部は、複数の前記遅延クロックサイクル数に応じて前記遅延動作における前記遅延量を変化させることで、遅延動作の長期化を抑制し、DLL回路を用いて内部クロック信号の遅延の調整を行うシーケンスを所定の実行期間内に完了することができる。即ち、遅延動作前に検出動作を行うことで、遅延動作を行う前に遅延動作にかかる時間を予想し、遅延動作における遅延量を変化させて遅延動作の長期化を抑制している。この場合に、検出動作を複数回行い、複数回の前記検出動作が行われる度に、当該検出動作における遅延量を設定して複数の遅延量でN値を検出することで、遅延を適切に予測し、必要な遅延量を適切に設定することが可能である。
【0011】
前記制御部は、複数の前記遅延クロックサイクル数に応じて前記遅延動作開始時の初期遅延量を変化させることが好ましい。初期遅延量を変化させることで、簡易に遅延量を適切に設定しつつ、遅延動作の長期化を効率的に抑制することが可能である。
【0012】
前記制御部は、前記検出動作が行われる度に、前回行われた前記検出動作において検出された前記遅延クロックサイクル数に応じて前記遅延量を設定することが好ましい。検出動作においても、前記遅延クロックサイクル数に応じて検出動作における前記遅延量を設定することで、より適切に遅延クロックサイクル数を予測することができ、これにより遅延動作において必要な遅延量をより適切に予測することができる。
【0013】
前記制御部は、複数の前記遅延クロックサイクル数が小さいほど、前記遅延動作開始時の初期遅延量を大きく設定することが好ましい。遅延クロックサイクル数が小さいほど、クロックサイクルが長いと考えられ、遅延動作が長期化すると考えられるので、この場合に前記遅延動作開始時の初期遅延量を大きくなるように変化させることで、遅延動作の長期化を抑制している。
【0014】
前記制御部は、前記検出動作を行う度に、前記遅延量をより大きく設定することが好ましい。前記検出動作を行う度に前記遅延量をだんだん大きく設定することで、適切な遅延量を予測することが可能である。
【0015】
前記遅延クロックサイクル数に応じた前記遅延量が、前記遅延クロックサイクル数における、前記入力クロック信号に対する前記出力クロック信号の遅延を解消するために必要だと予測される最大遅延量よりも小さい値で、予め前記制御部において決定されていることが好ましい。最大遅延量よりも遅延量が大きいと遅延クロックサイクル数を適切に予測することができないが、本発明においては前記入力クロック信号に対する前記出力クロック信号の遅延を解消するために必要だと予測される最大遅延量よりも小さい値で遅延量があらかじめ設定されていることで、制御部が簡易に適切な遅延量を設定することができる。
【0016】
前記制御部は、前記検出動作が行われる度に検出された複数の前記遅延クロックサイクル数がすべて同一であるかどうかを判定し、すべて同一である場合には、最後の前記検出動作における前記遅延クロックサイクル数に応じて、前記遅延動作における前記遅延量を設定することが好ましい。
【0017】
前記制御部は、前記検出動作が行われる度に検出された複数の前記遅延クロックサイクル数のいずれかが異なる場合、複数の前記検出動作のうち、最後の前記検出動作の一回前の前記検出動作で検出した前記遅延クロックサイクル数に応じて前記遅延動作における前記遅延量を設定することが好ましい。
【0018】
前記制御部は、前記検出動作を所定の回数行い、すべての前記検出動作において同一の前記遅延クロックサイクル数が検出された場合には、さらにもう一回前記検出動作を行い、最後の前記検出動作で検出した前記遅延クロックサイクル数も、前記遅延クロックサイクル数と同一であれば、最後の前記検出動作で検出した前記遅延クロックサイクル数に応じて前記遅延動作における前記遅延量を設定することが好ましい。
【0019】
前記検出部は、前記遅延クロックサイクル数をレイテンシーカウンタに送信することが好ましい。レイテンシーカウンタに遅延クロックサイクル数を送信することで、レイテンシ制御を適切に行うことが可能である。
【0020】
前記検出部は、前記検出部は、前記検出動作が行われる度に検出された前記遅延クロックサイクル数に応じて設定された前記遅延量に基づいて検出された複数の前記遅延クロックサイクル数がすべて同一であれば、複数の前記検出動作のうち、最後の検出動作で検出した前記遅延クロックサイクル数よりも1多い遅延クロックサイクル数を前記レイテンシーカウンタに入力することが好ましい。複数の前記遅延クロックサイクル数がすべて同一であれば、検出動作における遅延クロックサイクル数は、必要な遅延クロックサイクル数よりも1少なくなっていると考えられる。そこで、複数の前記遅延クロックサイクル数がすべて同一であれば、最後の前記遅延クロックサイクル数よりも1多い遅延クロックサイクル数を前記レイテンシーカウンタに入力することで、遅延動作後に検出動作を行うことなく、所望の遅延クロックサイクル数を得ることができる。
【0021】
前記検出部は、前記検出動作が行われる度に前記遅延クロックサイクル数に応じて設定された前記遅延量に基づいて検出された複数の前記遅延クロックサイクル数のいずれかが異なる場合、複数の前記検出動作のうち、最後の検出動作で検出した前記遅延クロックサイクル数を前記レイテンシーカウンタに入力することが好ましい。複数の前記遅延クロックサイクル数がすべて同一でない場合には、検出動作における遅延クロックサイクル数は、必要な遅延クロックサイクル数と同一であると考えられるので、最後の前記遅延クロックサイクル数を前記レイテンシーカウンタに入力することで、遅延動作後に検出動作を行うことなく、所望の遅延クロックサイクル数を得ることができる。
【0022】
本発明の好ましい実施形態としては、前記制御回路は、前記遅延動作後には前記検出動作を行わないことが挙げられる。
【0023】
本発明の半導体記憶装置は、前述したいずれかの制御回路を備えることを特徴とする。
【0024】
本発明の好ましい実施形態としては、前記半導体記憶装置はダイナミックランダムアクセスメモリであることが挙げられる。
【発明の効果】
【0025】
本発明の制御回路、半導体記憶装置及び半導体記憶装置の制御方法によれば、遅延動作の長期化を抑制し、DLL回路を用いて内部クロック信号の遅延の調整を行うシーケンスを所定の実行期間内に完了することができる。
【図面の簡単な説明】
【0026】
【
図1】実施形態1に係る制御回路の構成例を示すブロック図である。
【
図2】実施形態1における入力クロック信号と遅延時間との関係を示す図である。
【
図3】実施形態1における制御部が有するテーブルデータを示す図である。
【
図4】実施形態1における本シーケンスと従来のシーケンスとの各状態を示す図である。
【
図5】実施形態1におけるN値検出部の構成例を示す図である。
【
図6】実施形態1における制御回路内の各部の信号の電圧の推移を示すタイムチャートである。
【
図7】実施形態2における入力クロック信号と遅延時間との関係を示す図である。
【
図8】実施形態2における本シーケンスと従来のシーケンスとの各状態を示す図である。
【
図9】実施形態2における制御部が有するテーブルデータを示す図である。
【
図10】実施形態2におけるN値検出部の構成例を示す図である。
【発明を実施するための形態】
【0027】
以下、本発明の実施形態に係る制御回路、半導体記憶装置及び半導体記憶装置の制御方法について添付図面を参照して詳細に説明する。ただし、この実施形態は例示であり、本発明はこれに限定されるものではない。
【0028】
また、本明細書等における「第1」、「第2」、「第3」等の表記は、或る構成要素を他の構成要素と区別するために使用されるものであって、当該構成要素の数、順序又は優先度等を限定するためのものではない。例えば、「第1要素」及び「第2要素」との記載が存在する場合、「第1要素」及び「第2要素」という2つの要素のみが採用されることを意味するものではないし、「第1要素」が「第2要素」に先行しなければならないことを意味するものでもない。
【0029】
(実施形態1)
【0030】
図1に、本発明の実施形態に係る制御回路の構成例を示す。本実施形態において、制御回路1は、DLL回路10と、N値検出部20と、レイテンシーカウンタ30を備える。また、本実施形態において、制御回路1は、例えばDRAM等の半導体記憶装置に設けられている。
【0031】
なお、本実施形態では、説明を簡略化するために、DRAM等の半導体記憶装置に設けられている周知の構成(例えば、コマンドデコーダ、メモリセルアレイ、入出力用のインタフェース部等)が示されていない。
【0032】
DLL回路10は、入力バッファ11と、位相検出部12と、DLL制御部13と、遅延ライン部14と、レプリカ部15と、出力バッファ16と、マルチプレクサ17とを備えている。
【0033】
入力バッファ11は、入力バッファ11に入力される外部クロック信号CKをバッファリングして入力クロック信号clkを生成する。生成された入力クロック信号clkは、N値検出部20と、位相検出部12と、マルチプレクサ17を介して遅延ライン部14とに送信される。詳しくは後述するが、遅延ライン部14は、入力された入力クロック信号clk又は信号n_clkを遅延させた遅延信号dll_clkを生成して、出力バッファ16及びレプリカ部15へ送信する。ここで、信号n_clkは、N値検出動作において生成される信号であり、入力クロック信号clkと信号n_clkとは同期している。レプリカ部15は、入力された遅延信号dll_clkからフィードバック信号fb_clkを生成し、N値検出部20及び位相検出部12へ出力する。
【0034】
位相検出部12は、入力クロック信号clkとフィードバック信号fb_clkとの間の位相差を検出する。位相検出部12には、入力クロック信号clkが入力されるとともに、フィードバック信号fb_clkが入力される。位相検出部12では、入力クロック信号clkに対するフィードバック信号fb_clkの位相の進み又は遅れを示す位相信号up/downが生成され、DLL制御部13に入力される。
【0035】
DLL制御部13は、遅延量を決定し、遅延量を示す信号として、複数のビットで構成された制御信号dll_codeを生成し、遅延ライン部14へ入力する。また、DLL制御部13は、位相信号up/downの位相差が所定の範囲に収束した場合、つまり、入力クロック信号clkと、遅延信号dll_clkに対応するフィードバック信号fb_clkとが同期した場合には、ロック動作を終了する。なお、DLL制御部13は、本発明の「制御部」の一例である。
【0036】
また、遅延ライン部14は、DLL制御部13によって遅延量が設定される毎に、遅延量に基づいて遅延線を活性化することで、入力クロック信号clkを遅延させて遅延信号dll_clkを生成する可変遅延部である。具体的に説明すると、遅延ライン部14は、遅延量を示す制御信号dll_codeに応じて遅延線を活性化することにより、入力クロック信号clkを遅延させて遅延信号dll_clkを生成する。詳しくは後述する。
【0037】
ここで、遅延量とは、本実施形態では、遅延ライン部14の1つ以上の遅延線のうち活性化される遅延線の数に対応しており、遅延量が大きいほど、制御信号dll_code中のハイレベルを示すビット数が多く(活性化させる遅延線が多い)、入力クロック信号clkに対する遅延信号dll_clkの遅延時間が長くなる。
【0038】
以下、DLL制御部13、遅延ライン部14及びN値検出部20について詳述する。制御信号n_enableがハイレベルでマルチプレクサ17に入力されている場合、遅延ライン部14には信号n_clkが入力され、それ以外の場合には入力クロック信号clkが遅延ライン部14に入力される。即ち、遅延ライン部14は、N値検出時には、信号n_clkに対して、DLL制御部13からの制御信号dll_codeに応じた遅延を実行して、遅延信号dll_clkを生成する。なお、信号n_clkは、入力クロック信号clkに対応しているので、本実施形態の説明においては発明の理解を助けるために信号n_clkを入力クロック信号clkともいう。
【0039】
DLL制御部13は、図示されていないリセット信号(ロック動作の開始のための信号)が所定の回路(図示省略)等からDLL回路10に入力されることによってDLLリセット状態となり、このDLLリセット状態が終了すると、制御信号dll_reset_nをハイレベルで生成してN値検出部20へ入力する。ハイレベルで制御信号dll_reset_nが入力されることにより、N値検出部20は、後述するN値検出動作を実行する。
【0040】
N値検出部20は、入力クロック信号clkとフィードバック信号fb_clkとからN値を検出するN値検出動作を行う。なお、N値検出部20は、本発明の「検出部」の一例である。
【0041】
ここで、N値は、Tint(DLL回路における固有遅延時間)+Tdll(DLL回路のロック動作によるロック(遅延)時間)=N×tCKで表される値であり、DLL回路10のロック動作における入力クロック信号clkから遅延信号dll_clkに基づいて生成されるフィードバック信号fb_clk(出力クロック信号)までの遅延クロックサイクル数(したがって整数である)を意味する。N値検出部20は、従来はロック動作後におけるN値を検出していたが、本実施形態では、N値検出部20は、ロック動作後にN値検出を行わずに、N値検出動作をロック動作前に複数回行う。DLL制御部13は、このロック動作前の複数回のN値検出動作により得られた複数の仮のN値(以下、仮N値という)に基づいて遅延ライン部14の制御を行う。即ち、本実施形態のN値検出動作によって得られる仮N値は、いずれもロック動作前のN値検出動作実行時の入力クロック信号clkから遅延信号dll_clkに基づいて生成されるフィードバック信号fb_clkまでの遅延クロックサイクル数である。
【0042】
具体的には、本実施形態では、N値検出部20は、ロック動作を行う前に二回N値検出動作を行い、第1仮N値及び第2仮N値を検出する。リセット動作が終了したことを示すアサート(ハイレベル)された制御信号dll_reset_nが入力されると、N値検出部20は、N値検出動作として、信号n_clkからフィードバック信号fb_clkまでの遅延クロックサイクル数を仮N値として検出し、1回目の検出動作で検出された第1仮N値を示す第1仮N値信号N1st、及び2回目の検出動作で検出された第2仮N値を示す第2仮N値信号N2ndをDLL制御部13へ入力する。
【0043】
第1仮N値及び第2仮N値は、N値そのものではないものの、N値検出動作時における信号n_clkからフィードバック信号fb_clkまでの遅延クロックサイクル数までの遅延クロックサイクル数であることから、クロックサイクルtCKが長い場合には、仮N値もN値と同様に小さくなる。このため、仮N値が小さい場合には、ロック時間であるTdllが長期化すると考えられる。そこで、本実施形態では、DLL回路10は、ロック動作前に検出した第1仮N値及び第2仮N値から、このままロック動作を行うとロック時間Tdllが長期化するかどうかを予測し、ロック時間Tdllが長期化すると予測される場合には、ロック動作における遅延ライン部14の初期遅延量を大きく設定することで、ロック時間Tdllを短縮できるように構成されている。ここで、初期遅延量とは、ロック動作(遅延動作)開始時の遅延量を意味する。
【0044】
図2を用いて具体的に説明する。
図2(1)に示す場合は、従来は、入力クロック信号clkのクロックサイクルtCKが長いため、ロック動作が長期化する可能性がある場合である。
【0045】
本実施形態では、まず、N値検出部20がロック動作前に1回目のN値検出動作により第1仮N値を検出して、DLL制御部13がその値に応じて次のN値検出動作時の遅延量を設定する。具体的には、1回目のN値検出動作においては、DLL制御部13は、遅延量を基準遅延量(本実施形態では「4」)に設定し、遅延ライン部14は、当該遅延量に基づいて遅延線を活性化させて、入力クロック信号clkを遅延して遅延信号dll_clkを生成する。ここで、基準遅延量とは、DLL制御部13がN値検出動作前にあらかじめ設定している遅延量であり、本実施形態では最小の基準遅延量として「4」が設定されている。N値検出部20は、この時の入力クロック信号と遅延量「4」に基づいて生成された遅延信号dll_clkとの間の遅延クロックサイクル数を第1仮N値として検出する。
【0046】
DLL制御部13によるこの第1仮N値に基づいた遅延量の設定は、本実施形態では
図3(1)のテーブルデータに基づいて行う。
図3(1)のテーブルデータは、第1仮N値に対応する遅延量をそれぞれ示したものである。
図3(1)に示すように、本実施形態では、第1仮N値が小さいほど、2回目のN値検出動作における遅延量を基準遅延量よりも大きくする。例えば、第1仮N値が0である場合には、遅延量を、基準となる基準遅延量である「4」よりも十分に大きい「34」とし、第1仮N値が4以上である場合には、遅延量を基準遅延量「4」よりも少し大きい「14」としている。ここで、仮N値に対応して設定された遅延量は、各仮N値の場合に予測される遅延を解消するために必要な最大遅延量よりも小さくなるようにあらかじめ設定されている。仮N値に対応して設定された遅延量が、各仮N値の場合に予想される必要な最大遅延量以上であると、本実施形態のようなロック動作時における初期遅延量を適切に設定することができないためである。
【0047】
遅延ライン部14は、DLL制御部13によりこのようにして設定された遅延量に基づいて遅延線を活性化させる。
図2(1)に示す場合では、第1仮N値は1回目のN値検出時には0であるので、DLL制御部13は、2回目のN値検出動作の際の遅延量として「34」を設定する。
【0048】
次に、N値検出部20は2回目のN値検出動作を行う。この時には、DLL制御部13により遅延量として「34」が設定されていることから、遅延信号dll_clkは、1回目のN値検出動作のときよりも遅延量「34」に対応してより遅れている。N値検出部20は、この状態で、入力クロック信号clkと出力クロック信号dll_clkとの間の遅延クロックサイクル数を第2仮N値として検出する。
【0049】
ロック時間が長くなるような場合、即ちtCKが十分に大きく、かつ、遅延量が大きいとすれば、第1仮N値に応じて設定された遅延量で遅延している出力クロック信号に応じて得られた第2仮N値も、第1仮N値と同一となると考えられる。そこで、N値検出部20は、第2仮N値が第1仮N値と同一かどうか判断する。
【0050】
第2仮N値が第1仮N値と同一である場合には、DLL制御部13は、ロック動作の初期遅延量を、第2仮N値を検出する際に設定された遅延量とする。このように設定されたロック動作を行う場合、初期遅延量が基準遅延量よりも大きいので、遅延を解消するための必要な遅延量に早期に到達することができ、ロック動作を短期間で終了させることができる。これにより、所定の期間(tDLLK)内にシーケンスを終了することができる。そして、シーケンスにおいては、別途N値検出動作を行うことなく、DLL制御部13は、第2仮N値に1を付加したものをN値としてレイテンシコントローラに入力する。このようなDLL制御部13の判断は、
図3(2)に示すテーブルデータに示されている。
【0051】
図2も用いて具体的に説明すると、
図2(1)の場合は、第1仮N値は1回目のN値検出時には0であり、N値検出部20が検出した第2仮N値も0の場合である。そうすると、第1仮N値と第2仮N値とは同一となる。したがって、DLL制御部13は、
図3(2)に示すテーブルデータから、ロック動作の初期遅延量を、第2仮N値を検出する際に設定された遅延量である「34」に設定する。そうすると、遅延量は「34」から「44」までの「10」だけ増加させればよいので、ロック動作は従来の場合よりも短くなる。
【0052】
即ち、本来であれば、ロック時間Tdllは、1回目のN値検出動作時の遅延信号dll_clkの立ち上がりエッジの時間t03から入力クロック信号clkの立ち上がりエッジまでの時間t05までであったが、ロック動作開始時には、初期遅延量が基準遅延量よりも大きいため遅延信号dll_clkが遅延していたので、実際のロック時間Tdllは2回目のN値検出動作時の出力クロック信号dll_clkの立ち上がりエッジの時間t04から入力クロック信号clkの立ち上がりエッジの時間t05までとなり、ロック時間Tdllが短縮されている。
【0053】
他方で、第2仮N値が第1仮N値と同一ではない場合には、DLL制御部13は、1回目のN値検出動作における遅延量である基準遅延量をロック動作時の遅延量としてロック動作を行う。このような場合は、例えば、クロックサイクルtCKは十分に長いものの、もともと遅延が大きくなくロック動作は長期化しない場合であるので、ロック動作における初期遅延量を大きくする必要がない。このような場合には、基準遅延量からロック動作を開始しても本実施形態のDLL回路10は、所定の期間(tDLLK)内にシーケンスを終了することができる。なお、この場合も、別途N値検出動作を行うことなく、DLL制御部13は、第2仮N値をN値としてレイテンシコントローラに入力する。
【0054】
図2(2)は、上述のようなクロックサイクルtCKは十分に長いものの、もともと遅延が大きくなくロック動作は長期化しない場合を示している。
図2(2)の場合、N値検出部20は、1回目のN値検出動作時における第1仮N値を0として検出している。DLL制御部13は、
図3(1)のテーブルデータより、この場合の第1仮N値に応じて、遅延量を基準遅延量「4」から「34」と設定し、遅延ライン部14は、この設定された遅延量「34」に基づいて遅延線を活性化させる。しかし、N値検出部20が、2回目のN値検出動作を行うと、この設定された遅延量で遅延された出力クロック信号dll_clkは、位相が進み、入力クロック信号clkとの間の遅延クロックサイクル数が「1」であるので、第2仮N値は「1」となる。そうすると、
図2(2)の場合には、第1仮N値と第2仮N値とは異なる。従って、DLL制御部はロック動作の初期遅延量を「4」として設定する。この場合には、ロック時間Tdllは、1回目のN値検出動作時の出力クロック信号dll_clkの立ち上がりエッジの時間t12から入力クロック信号clkの立ち上がりエッジの時間t14まででとなり、従来とは変わらない制御を行うことができる。
【0055】
これらの場合を、
図4を用いてシーケンス全体として詳細に説明する。
図4(1)は、入力クロック信号clkのクロックサイクルtCKが長く、遅延量も大きい
図2(1)の場合を示している。このような場合において、従来は、DLLリセットを行った後にロック動作を行い、最後にN値検出動作を行っていた。そして、この場合にロック動作における初期遅延量を基準遅延量である「4」に設定していたので、遅延量が大きいにもかかわらず、ロック動作は基準遅延量から遅延量が「44」となるまで「1」ずつ遅延量を増加させてロック動作を継続していたためロック時間は遅延量「40」に相当する時間がかかり、ロック動作が長期化していた。
【0056】
これに対し、本実施形態では、DLLリセット後において、N値検出動作を二回行い、第1仮N値及び第2仮N値を検出して、上述のようにロック動作の初期遅延量を「34」としている。この場合に、ロック動作を遅延量が「44」となるまで継続したとしても、ロック時間は遅延量「10」に相当する時間だけであるので、ロック動作にかかる時間は従来の場合と比べて四分の一となり、短縮される。したがって、本実施形態では、シーケンス全体の時間tDLLKも短縮することが可能である。
【0057】
図4(2)は、入力クロック信号clkのクロックサイクルtCKが長く、遅延量は小さい
図2(2)の場合を示している。この場合も、従来は、DLLリセットを行った後にロック動作を行い、最後にN値検出動作を行っていたが、遅延量が小さいので、ロック動作は遅延量が「4」から「24」となるまでの遅延量「20」に相当する時間で短かった。これに対し、本実施形態では、N値検出動作を2回繰り返し、第1仮N値及び第2仮N値を検出した後に、ロック動作を、初期遅延量として基準遅延量の「4」から「24」となるまで継続した。この場合も、ロック時間は遅延量「20」に相当する時間であり、従来とロック動作にかかる時間は変わらない。なお、シーケンス全体としては、本実施形態では、N値検出動作を二回行ったことにより二回目のN値検出動作の分だけ従来よりも所要期間が長くなったが、ロック動作にかかる時間が短いので、シーケンス全体としては所定の期間(tDLLK)を超えるおそれがなく問題がない。
【0058】
このように、本実施形態では、N値検出部20が、ロック動作が行われる前にN値検出動作を複数回行って複数の仮N値を検出し、DLL制御部13が、複数の仮N値に応じてロック動作における初期遅延量を予め適切に大きく設定することができるので、ロック時間を短縮することが可能である。
【0059】
以下、N値検出部20の構成について
図5を参照して詳細に説明する。
【0060】
N値検出部20は、n_clk信号生成部21と、N値カウント部22と、N値決定部23と、開始信号生成部24と、を含む。初めに開始信号生成部24について説明する。
【0061】
開始信号生成部24は、フリップフロップ(D-FF)回路241及び242とからなる第1開始信号生成部243と、ラッチ回路244並びにフリップフロップ(D-FF)回路245~247からなる第2開始信号生成部248とからなる。第1開始信号生成部243は、ネゲート(ローレベル)からアサ―ト(ハイレベル)になる立ち上がりエッジで1回目のN値検出動作を開始するタイミングを示す開始信号n_1st_startを生成する。第2開始信号生成部248は、ネゲート(ローレベル)からアサ―ト(ハイレベル)になる立ち上がりエッジで2回目のN値検出動作を開始するタイミングを示す開始信号n_2nd_startを生成する。
【0062】
第1開始信号生成部243では、各D-FF回路241及び242には、クロック信号として入力クロック信号clkが入力される。D-FF回路241は、入力信号として、制御信号dll_reset_nが入力され、D-FF回路242には、入力信号として上流側のD-FF回路241からの出力信号が入力される。また、制御信号dll_reset_nは、D-FF回路241及び242にもそれぞれ入力される。第1開始信号生成部243では、制御信号dll_reset_nがハイレベルで入力されると、D-FF回路241及び242により入力クロック信号clkに同期して開始信号n_1st_startがハイレベルで生成される。
【0063】
また、第2開始信号生成部248では、ラッチ回路244に、開始信号n_1st_startが入力されるとともに信号n_endが入力される。信号n_endは、アサ―トであるときにフィードバック信号fb_clkが出力されたこと、即ちN値検出動作が終わることを意味する。ラッチ回路244の出力信号は、D-FF回路245に入力される。D-FF回路245~247には、それぞれクロック信号として入力クロック信号clkが入力される。なお、D-FF回路245~247は複数のD-FF回路が直列に接続されているものであるが、
図5においては、その一部を省略してD-FF回路244~247のみを図示している。また、D-FF回路246及び247には、それぞれ上流側のD-FF回路245及び246からの出力が入力される。
【0064】
第2開始信号生成部248では、信号n_endがハイレベルとなった時に、保持されていた開始信号n_1st_startがラッチ回路244から出力され、D-FF回路245~247に順次入力され、入力クロック信号clkに同期して所定時間後に開始信号n_2nd_startとして出力される。即ち、開始信号n_2nd_startは、信号n_endがハイレベルで入力された場合に、所定時間後に2回目のN値検出動作を開始するタイミングであることを意味するハイレベルとなるここで、所定時間後としているのは、制御信号dll_codeを変更し遅延ライン部14において遅延ラインが変更されるまで2回目のN値検出動作が始まらないようにするためである。
【0065】
n_clk信号生成部21は、第1~第3ワンショット回路211~213と、NOR回路214と、フリップフロップ回路215と、第1ラッチ回路216と、第1AND回路217と、を含む。N値カウント部22は、2つのD-フリップフロップ(D-FF)回路221,222と、第2AND回路223と、第2ラッチ回路224と、第3AND回路225と、第4AND回路226と、第1の4ビットカウンタ227と、第5AND回路228と、第2の4ビットカウンタ229とを含む。
【0066】
n_clk信号生成部21は、N値検出動作時のみ入力クロック信号clkに対応したパルスを有する信号n_clkを生成する。n_clk信号生成部21では、開始信号n_1st_startが第1ワンショット回路211に入力され、また、開始信号n_2nd_startが、第2ワンショット回路212に入力され、それぞれの出力がNOR回路214に入力される。
【0067】
NOR回路214から出力された信号と、信号n_endが第3ワンショット回路213を経て出力された信号とが、フリップフロップ回路215に入力されて制御信号n_enableが生成される。制御信号n_enableがハイレベルである場合は、N値の検出動作が可能であることを意味する。生成された制御信号n_enableが第1ラッチ回路216に入力され、また、入力クロック信号clkがクロック信号として第1ラッチ回路216に入力される。また、第1ラッチ回路216から出力された信号が入力クロック信号clkとともに第1AND回路217に入力されて、第1AND回路217から信号n_clkが出力される。
【0068】
N値カウント部22は、N値検出動作時に、入力クロック信号clkが入力されてからフィードバック信号fb_clkが生成されるまでの入力クロック信号clkのクロックサイクル数をカウントすることによって、仮N値を検出する。N値カウント部22では、信号n_clkと制御信号n_enableとが第1D-FF221に入力され、信号n_startが生成される。また、遅延信号dll_clkに対応したフィードバック信号fb_clkと制御信号n_enableとが第2D-FF222に入力され、信号n_endが生成される。信号n_startは、N値検出動作が開始されるとハイレベルとなり、信号n_endは、N値検出動作が終わるとハイレベルで生成される。
【0069】
信号n_startと、信号n_endとは、第2AND回路223に入力され、その出力が第2ラッチ回路224に入力される。第2ラッチ回路224には、さらに信号n_clkがクロック信号として入力される。この第2ラッチ回路224からの出力と、信号n_clkとが第3AND回路225に入力されて、第3AND回路225は、N値のカウント用信号である信号count_clkを出力する。信号count_clkに含まれるパルス数が仮N値に相当する。信号count_clkは、第4AND回路226に入力される。第4AND回路226には、開始信号n_1st_startも入力され、AND演算が行われる。これにより、1回目のN値検出動作における仮N値に相当するパルスを有するクロック信号が第4AND回路226から第1の4ビットカウンタ227に入力される。第1の4ビットカウンタ227は、入力された信号のパルスをカウントして、1回目のN値検出動作における仮N値を検出する。第1の4ビットカウンタ227は、1回目のN値検出動作における仮N値である第1仮N値を示す第1仮N値信号N1stを出力する。
【0070】
また、信号count_clkは、第5AND回路228に入力される。第5AND回路228には、さらに開始信号n_2nd_startも入力され、AND演算が行われる。これにより、2回目のN値検出動作における仮N値に相当するパルスを有するクロック信号が第2の4ビットカウンタ229に入力される。第2の4ビットカウンタ229は、入力された信号のパルスをカウントして、2回目のN値検出動作における仮N値を検出する。第2の4ビットカウンタ229は、2回目のN値検出動作における仮N値である第2仮N値を示す第2仮N値信号N2ndを出力する。
【0071】
これらの第1仮N値信号N1st及び第2仮N値信号N2ndは、それぞれDLL制御部13へ入力される。なお、第1の4ビットカウンタ227、第2の4ビットカウンタ229は、制御信号dll_reset_nがローレベルで入力されるとその値が初期値(例えば0)にリセットされ、制御信号dll_reset_nがハイレベルで入力された状態において新たにカウントを始めるように構成されていてもよい。
【0072】
このようにして、N値カウント部22は、入力クロック信号clkに対応する信号n_clkが入力されてから、遅延信号dll_clkに対応するフィードバック信号fb_clkが入力されるまでの間の信号count_clkのクロックサイクル数(パルス数)を遅延クロックサイクル数としてカウントすることによって、N値検出動作を行う。
【0073】
また、第1仮N値信号N1st及び第2仮N値信号N2ndは、N値決定部23にも入力される。N値決定部23は、比較器231と、加算器232とを備え、第1仮N値信号N1st及び第2仮N値信号N2ndは、比較器231に入力される。比較器231では、第1仮N値信号N1st及び第2仮N値信号N2ndが同一であれば比較器231から出力される信号comp_outはハイレベルとなり、入力されたこれらの信号が異なる場合には、比較器231から出力される信号comp_outはローレベルとなる。信号comp_outは、加算器232に入力される。加算器232には、さらに第2仮N値信号N2ndも入力され、信号comp_outに第2仮N値信号N2ndが加算されて、N値信号Nfinを出力する。即ち、N値決定部23では、第2仮N値信号N2ndに対して、第1仮N値と第2仮N値とが等しい場合には第2仮N値に「1」を加算してN値とし、第1仮N値と第2仮N値とが異なる場合には、第2仮N値をN値として出力する。出力されたN値信号Nfinは、レイテンシーカウンタ30へ入力される。
【0074】
このようにして、N値決定部23は、DLL回路10がN値を検出する必要なく、第1仮N値と第2仮N値とによりN値を決定して出力することができる。この場合に、本実施形態では、N値検出動作を複数回行って、それぞれのN値検出動作において検出された複数の仮N値に基づいて遅延量を変更し、この変更した遅延量でN値検出動作を複数回行うことで、好ましい遅延量を設定することが可能である。また、複数のN値検出動作により検出されたN値が等しい場合には、最後のN値検出動作で検出した仮N値に応じてロック動作における初期遅延量を設定することで、より好ましい遅延量を設定することが可能である。さらに、、複数のN値検出動作により検出されたN値が異なる場合には、最後のN値検出動作で検出した仮N値に応じてロック動作における初期遅延量を設定することで、より好ましい遅延量を設定することが可能である。
【0075】
図1に戻り、レイテンシーカウンタ30は、DLL回路10によって生成された内部クロックに同期してレイテンシのカウントを行う。また、レイテンシーカウンタ30は、N値検出部20で検出されたN値を示すN値信号Nfinを用いて、レイテンシのカウントを実行する。例えば、CAS(Column Address Strobe)レイテンシの場合、設定されたレイテンシは、コマンド(例えば、リードコマンド)が半導体記憶装置(ここでは、DRAM)に入力されてからデータ(例えば、読み出しデータ)が半導体記憶装置から出力されるまでの期間を示すクロックサイクル数である。この場合、レイテンシーカウンタ30は、DLL回路10にリセット信号が入力されると、例えばモードレジスタ(図示省略)に設定されたCASレイテンシの値から、N値分を減じた分だけカウントする。具体例を挙げると、レイテンシーカウンタ30は、例えばCASレイテンシの値が10で、N値が1である場合には、減算結果となる9クロックサイクル分だけカウントする。なお、N値検出部は、レイテンシーカウンタ30にN値信号Nfinを常時出力してもよいし、N値検出状態が終了した時点でN値信号Nfinをレイテンシーカウンタ30に出力してもよい。レイテンシーカウンタ30は、所定の期間(tDLLK)が経過した後に、N値信号Nfinを用いてレイテンシのカウントを実行するので、所定の期間(tDLLK)が経過するまでにN値検出部20からN値が入力されていれば、レイテンシのカウントを適切に実行することができる。
【0076】
本実施形態の制御回路による制御を、
図6に示すタイミングチャートも含めて説明する。
図6に示すタイミングチャートでは、時間t21で、図示されていないリセット開始信号が入力されてDLLリセット状態が開始され、時間t22でDLLリセット状態が終了する。これにより、N値検出部20は1回目のN値検出動作を開始する。この時に、DLL制御部13は、制御信号dll_codeを基準遅延量の「4」に設定する。
【0077】
時間t22では、リセット信号dll_reset_nがアサ―ト(ハイレベル)となり、すぐに(時間t23で)N値検出部20において開始信号n_1st_startがハイレベルで生成される。なお、実質的には時間t23から1回目のN値検出動作が始まることになるが、実際には時間t23は時間t22の直後であるので、本実施形態では、時間t22からN値検出動作が始まっているものとする。
【0078】
このハイレベルで生成された開始信号n_1st_startは、n_clk信号生成部21の第1ワンショット回路211に入力される。また、第2ワンショット回路212には開始信号n_2nd_startがローレベルで入力される。また、信号n_endがローレベルで第3ワンショット回路213に入力される。これにより、時間t23から、フリップフロップ回路215から出力される制御信号n_enableは、ハイレベルで生成される。制御信号n_enableがハイレベルで生成されたことで、時間t24から、N値検出動作中のみ生成されるクロック信号である信号n_clkが生成される。
【0079】
N値カウント部22では、時間t23で制御信号n_enableがハイレベルで入力されるので、時間t24以降の信号n_clkの入力に応じて信号n_start(
図6中図示せず)がハイレベルで生成される。他方で、時間t23の時点では、フィードバックされたクロック信号であるフィードバック信号fb_clkがローレベルで第2D-FF222に入力されているので、信号n_endもローレベルで生成される。このようにハイレベルである信号n_startと、ローレベルである信号n_endとがN値カウント部22で生成されることにより、時間t25において、N値に相当するパルスを有するクロック信号である信号count_clkのパルスが出力される。
【0080】
信号count_clkは、第4AND回路226と第5AND回路228に入力される。第4AND回路226では、開始信号n_1st_startもハイレベルで入力されているので、信号count_clkは、AND演算によりパルスも通過して第1の4ビットカウンタ227に入力される。第1の4ビットカウンタ227では、信号count_clkのパルスが入力される毎に、第1仮N値信号N1stの値をインクリメントして第1仮N値信号N1stを出力する。
図6の本実施形態では、1回目のN値検出動作において、第1仮N値信号N1stは「1」となる。
【0081】
他方で、第5AND回路228では、開始信号n_2nd_startがローレベルで入力されたままであるので、第2仮N値信号N2ndは「0」を維持する。これらの第1仮N値信号N1stと第2仮N値信号N2ndとは、DLL制御部13に入力される。
【0082】
DLL制御部13は、第1仮N値信号N1stが「1」が入力されたことから、制御信号dll_codeを
図3(1)に示すテーブルに従い、遅延量の「34」での設定を開始する。制御信号dll_codeは、時間t28おいて遅延量「34」で設定される。
【0083】
他方で、時間t26から信号n_clkを遅延したフィードバック信号fb_clkのパルスが出力されることで、時間t26でN値カウント部22において信号n_endがローレベルからハイレベルとなり、これにより時間t26から制御信号n_enableがn_clk信号生成部21においてネゲート(ローレベル)となる。信号n_endがローレベルからハイレベルとなることで、この信号n_endの立ち上がりエッジから所定時間後である時間t29で、第2開始信号生成部248において開始信号n_2nd_startがアサ―トとなる。また制御信号n_enableが時間t26でローレベルとなったことで、第2D-FF222において信号n_endも時間t27でローレベルとなる。これにより、N値検出部20は、時間t29以降において2回目のN値検出動作を開始する。
【0084】
開始信号n_2nd_startがハイレベルで入力された点以外は1回目のN値検出動作と同様にN値検出動作が行われ、第1仮N値信号N1stは「1」が維持される。また、第2仮N値信号N2ndも「1」が検出される。これらの第1仮N値信号N1stと第2仮N値信号N2ndとは、DLL制御部13に入力される。
【0085】
DLL制御部13は、第1仮N値信号N1stと第2仮N値信号N2ndとから、
図3(2)に示すテーブルデータを用いて、ロック動作時の初期遅延量を「34」に設定する。
【0086】
第1仮N値信号N1stと第2仮N値信号N2ndとは、N値決定部23にも入力され、比較器231においてこれらの値が同一であるので、信号comp_outは1を出力する。そして、加算器232において、「1」を示す信号comp_outと「1」を示す第2仮N値信号N2ndとが入力され、加算されて、N値信号Nfinは「2」となる。
【0087】
時間t30から信号lock_startがアサ―ト(ハイレベル)で入力されてロック動作が開始されると、DLL制御部13は、ロック動作時の初期遅延量を「34」に設定した制御信号dll_codeを遅延ライン部14へ入力する。これにより、遅延ライン部14は、遅延量を基準遅延量の「4」からではなく「34」から開始する。DLL制御部13は、フィードバック信号fb_clkに従ってフィードバック制御をしながらロック動作を行い、ロック動作時が遅延量が「44」となった時点で、入力クロック信号clk(
図6中図示せず)とフィードバック信号fb_clkとが同期して、ロック動作が終了する。
【0088】
このように、本実施形態では、クロックサイクルtCKに応じてロック動作の初期遅延量を大きく設定することができるので、従来よりもロック動作の実行時間が短縮される。このようにしてロック動作の長期化を抑制することによって、シーケンス全体の実行期間の長期化を抑制することが可能になるので、シーケンスを所定の期間(tDLLK)内に完了させることができる。これにより、DLL回路10は、本シーケンス後にDLL制御に直ぐに復帰することが可能である。
【0089】
(実施形態2)
【0090】
上述した実施形態1では、N値検出動作を2回行ったが、実施形態2では、DLLリセット後、ロック動作前のN値検出動作を2回行い、第1仮N値と第2仮N値とが同一である場合には、さらに3回目のN値検出動作を行う点で上述した実施形態1とは異なる。以下、主に実施形態1とは異なる点について説明する。
【0091】
具体的に、
図7~9を用いて説明する。
図9は、DLL制御部13が有するテーブルデータである。
図9(1)に示すように、実施形態1と同様に、仮N値が小さいほど遅延量は大きく、また、N値検出動作が2回目、3回目と増えるにつれて遅延量がより大きくなるように設定されている。また、N値としては、第1仮N値と第2仮N値とが同一である場合には、
図9(3)に示すように第2仮N値及び第3仮N値に基づき、これらの値が小さいほど大きな初期遅延量が設定される。また、第1仮N値と第2仮N値とが異なる場合には
図9(2)に示すようにN値は基準遅延量が初期遅延量として設定される。この点は実施形態1と同様である。
【0092】
図7、
図8に示すように、初めに、本実施形態においても、1回目のN値検出動作における遅延ライン部14の遅延量は基準遅延量の「4」である。この状態で、N値検出部20はN値検出動作を行い、第1仮N値が「0」であるので、DLL制御部13は、
図9(1)に示すテーブルデータから2回目のN値検出動作における遅延量を「34」に設定する。この遅延量に基づいて、2回目のN値検出動作が行われる。N値検出部20の2回目のN値検出動作においても、第2仮N値が「0」であるので、DLL制御部13は3回目のN値検出動作を行うことを決定する。そして、DLL制御部13は、
図9(1)に示すテーブルデータから3回目のN値検出動作における遅延量を「64」に設定する。
【0093】
本実施形態では、この遅延量「64」に基づいて、3回目のN値検出動作が行われる。N値検出部20の3回目のN値検出動作で、第三仮N値は「0」である。N値検出部20は、これらの第1仮N値~第三仮N値から、N値信号Nfinとして「1」をレイテンシーカウンタ30へ入力する。また、DLL制御部13は、第1仮N値と第2仮N値とが等しいので、
図9(3)に示すテーブルデータに基づいて第2仮N値、第三仮N値から初期遅延量を「64」に設定する。ロック動作は、初期遅延量「64」から開始され、遅延量が「74」となったときに入力クロック信号と出力クロック信号とが同期して、ロック動作が終了する。
【0094】
従来の場合では、ロック時間Tdllは、1回目のN値検出動作時の出力クロック信号の時間t41における立ち上がりエッジと、入力クロック信号clkの時間t44の立ち上がりエッジとの間の期間であったが、本実施形態では、ロック時間Tdllは、3回目のN値検出動作時の出力クロック信号の時間t43の立ち上がりエッジと、入力クロック信号clkの時間t44の立ち上がりエッジとの間の期間との期間である。したがって、ロック時間は大幅に短縮化されている。また、実施形態1の場合には、ロック時間Tdllは、2回目のN値検出動作時の時間t42の遅延信号dll_clkの立ち上がりエッジと、入力クロック信号clkの時間t44の立ち上がりエッジとの間の期間であったので、本実施形態では、実施形態1よりもロック時間を短縮化することができる。
【0095】
また、本実施形態では、第1仮N値と第2仮N値とが異なる場合には、3回目のN値検出動作を行わない。この場合には、DLL制御部13は実施形態1と同様に、初期遅延量を基準遅延量に設定する。即ち、この場合には、DLL制御部13は、
図9(2)に示すようなテーブルデータに基づいて遅延量を設定している、
【0096】
なお、
図9(3)に示すように、第1仮N値及び第2仮N値が同一であるが、第2仮N値と第3仮N値とは異なる場合、ロック動作時における遅延量としては2回目のN値検出動作における遅延量が設定される。
【0097】
また、本実施形態においては、N値検出部20は、3回目のN値検出動作を行うことができるように、N値カウント部22が第3仮N値信号N3rdを生成できるように構成され、また、開始信号生成部24が第3開始信号生成部を有している。そして、N値検出部20は、N値決定部23の代わりに
図10に示すようなN値決定部40を有する。N値決定部40は、比較器401、402と、加算器403と、マルチプレクサ404を備えたN値決定部40によりN値を決定する。第1仮N値信号N1st及び第2仮N値信号N2ndが、比較器401に入力される。比較器401では、これらの信号が同一であれは比較器401から出力される信号comp_out1はハイレベルとなり、入力された信号が異なる場合には、比較器401から出力される信号comp_out1はローレベルとなる。信号comp_out1は、マルチプレクサ404に入力される。
【0098】
また、第2仮N値信号N2nd及び第3仮N値信号N3rdが、比較器402に入力される。比較器402では、これらの信号が同一であれは比較器402から出力される信号comp_out2はハイレベルとなり、入力された信号が異なる場合には、比較器402から出力される信号comp_out2はローレベルとなる。信号comp_out2は加算器403に入力される。加算器403には、さらに第3仮N値信号N3rdも入力され、信号comp_out2に第3仮N値信号N3rdが加算され、マルチプレクサ404に入力される。即ち、加算器403は、第2仮N値と第3仮N値とが等しい場合には第3仮N値に1を加算して出力し、第2仮N値と第3仮N値とが異なる場合には、第3仮N値を出力する。マルチプレクサ404には、この加算器403からの出力と、第2仮N値信号N2ndが入力される。信号comp_out1が1を示している時には、マルチプレクサ404は、加算器403からの出力をN値信号Nfinとして出力する。また、信号comp_out1が0を示している時には、マルチプレクサ404は、第2仮N値信号N2ndをN値信号Nfinとして出力する。N値信号Nfinは、レイテンシーカウンタ30へ入力される。
【0099】
つまり、本実施形態では、すべての仮N値が同一であれば、最後に検出された仮N値である第3仮N値に1を加算したものをN値としている。そして、いずれかの仮N値が異なる場合には、最後に検出された仮N値をN値としている。即ち、第1仮N値と第2仮N値とが異なる場合には、第2仮N値をN値とし、第1仮N値と第2仮N値とは同一であるが、第2仮N値と第3仮N値が異なる場合には、第3仮N値をN値としている。
【0100】
このように構成することで、本実施形態においても、ロック動作後にN値を検出することなく、ロック動作前に仮N値を検出することで、ロック動作の長期化を抑制しつつ、N値を得ることが可能である。さらに、本実施形態では、第1仮N値及び第2仮N値が同一である場合には、3回のN値検出動作を行うことで、遅延量が大きい場合にもより適切に初期遅延量を設定することが可能であり、かつ、遅延量がそれほど大きくない場合であっても、適切に初期遅延量を設定することが可能である。
【0101】
なお、本実施形態においては、第1仮N値と第2仮N値とが異なる場合には、3回目のN値検出動作を行わなかったが、これに限定されず、第1仮N値と第2仮N値とが異なる場合であっても3回目のN値検出動作を行ってもよい。ただし、この場合には、この3回目のN値検出動作により検出された第3仮N値はN値の決定にもロック動作時における遅延量の決定にも用いる必要はない。
【0102】
上述した実施形態では、N値検出動作としては2回又は3回行ったが、これに限定されない。なお、より多くN値検出動作を行うほうが細かく遅延量を設定することができるために好ましい一方で、N値検出動作を多数回行うことでシーケンス全体としては時間が長くなってしまうことにより、N値検出動作は2回又は3回行うことが好ましいと言える。
【0103】
上述した実施形態では、基準遅延量が小さく、仮N値に応じて、基準遅延量よりも大きい遅延量を設定したが、これに限定されない。複数の仮N値に応じて遅延量を変化させて設定することができればよい。例えば、基準遅延量を大きく設定し、仮N値に応じて、基準遅延量から遅延量を減じるように構成してもよい。また、DLL制御部13が設定するのは初期遅延量ではなくてもよく、例えばロック動作の途中で遅延量を変更するように構成してもよいが、初期遅延量を変化させることが最も効率よくロック動作の長期化を抑制できる。
【0104】
上述した実施形態では、制御回路を備える半導体記録装置がDRAMである場合を一例として説明したが、本発明は、この場合に限定されない。例えば、半導体記憶装置は、SRAM(Static Random Access Memory)や、フラッシュメモリや、他の半導体記憶装置であってもよい。
【0105】
以上説明した各実施形態は、本発明の理解を容易にするために記載されたものであって、本発明を限定するために記載されたものではない。したがって、上記各実施形態に開示された各要素は、本発明の技術的範囲に属する全ての設計変更や均等物をも含む趣旨である。
【0106】
例えば、上述した実施形態におけるDLL回路10の構成は一例であり、適宜変更されてもよいし、他の様々な構成が採用されてもよい。また、N値検出部20の構成として
図5を示したが、これらの構成も一例であり、適宜変更されてもよいし、他の様々な構成が採用されてもよい。
【符号の説明】
【0107】
10…DLL回路
11…入力バッファ
12…位相検出部
13…DLL制御部
14…遅延ライン部
15…レプリカ部
16…出力バッファ
17…マルチプレクサ
20…N値検出部
21…n_clk信号生成部
22…N値カウント部
23…N値決定部
24…開始信号生成部
30…レイテンシーカウンタ