이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
(제1 실시예)
도 2는 본 발명의 제1 실시예에 따른 레지스터 제어형 지연고정루프(DLL)회로를 도시한 블록 다이어그램이다.
도 2를 참조하면, 외부에서 인가되는 클록(CLK, CLK#)을 버퍼링하기 위한 클록 버퍼링부(280)와, 클록 인에이블 신호(CKE)에 응답하여 클록 버퍼링부(280)의 출력클록(BUF_CLK)을 구동하여 소스 클록(REFCLK)으로서 출력하기 위한 소스 클록 구동부(260)와, 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상을 비교하고, 비교결과에 대응하여 지연고정신호(DELAY_LOCK_CTRL)를 생성하기 위한 위상비교부(200)와, 지연고정을 이루기 위해 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로써 출력하되, 한계 지연량에 도달하는 것에 응답하여 지연종료신호(DELAY_END_CTRL)를 생성하기 위한 클록지연부(220)와, 지연고정클록(DLLCLK)에 소스 클록(REFCLK)의 실제 출력 경로의 지연시간을 반영하여 피드백 클록(FBCLK)으로서 출력하기 위한 지연복제모델부(240)와, 지연고정신호(DELAY_LOCK_CTRL) 및 지연종료신호(DELAY_END_CTRL)에 응답하여 지연고정 동작을 종료시키기 위한 지연고정동작 제어부(250)를 구비한다.
여기서, 클록 버퍼링부(280)는, 외부에서 인가되는 클록(CLK, CLK#)을 버퍼링하여 내부에서 사용되는 클록(BUF_CLK)을 생성하는 동작을 수행한다.
그리고, 소스 클록 구동부(260)는, 클록 인에이블 신호(CKE)가 활성화된 구간에서 버퍼링된 클록(BUF_CLK)을 소스 클록(REFCLK)으로서 출력하는 동작을 수행하고, 클록 인에이블 신호(CKE)가 비활성화된 구간에서 버퍼링된 클록(BUF_CLK)을 소스 클록(REFCLK)으로서 출력하는 동작을 수행하지 않는다. 즉, 클록 인에이블 신호(CKE)가 활성화된 구간에서는 소스 클록(REFCLK)이 버퍼링된 클록(BUF_CLK)과 동일하게 토글링하는 상태가 되지만, 클록 인에이블 신호(CKE)가 비활성화된 구간에서는 버퍼링된 클록(BUF_CLK)의 토글링과 상관없이 소스 클록(REFCLK)은 토글링하지 않는다.
참고로, 클록 인에이블 신호(CKE)의 경우, 반도체 메모리 장치의 노말한 동작에서 항상 활성화된 상태를 유지하다가 반도체 메모리 장치의 파워 소모를 줄이기 위해 진입할 수 있는 파워 다운 모드(Power Down Mode)와 같은 특수한 동작모드에서 비활성화될 수 있다.
그리고, 위상비교부(200)는, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점에서 소스 클록(REFCLK)의 기준에지 - 일반적으로 상승에지(rising edge)를 의미하며, 하강에지(falling edge)가 되어도 상관없음 - 보다 피드백 클록(FBCLK)의 기준에지가 뒤쪽에 위치한 경우 지연고정신호(DELAY_LOCK_CTRL)를 로직'하이'(High)로 활성화시켜 출력하고, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점에서 소스 클록(REFCLK)의 기준에지보다 피드백 클록(FBCLK)의 기준에지가 앞쪽에 위치한 경우 지연고정신호(DELAY_LOCK_CTRL)를 로직'로우'(Low)로 비활성화시켜 출력한다.
그리고, 지연고정동작 제어부(250)는, 클록지연부(220)에 구비된 지연라인(220)에서 출력되는 지연종료신호(DELAY_END_CTRL)가 로직'로우'(Low)로 비활성화되는 경우, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점이 예정된 횟수만큼 반복될 동안 지연고정신호(DELAY_LOCK_CTRL)가 반복적으로 로직'하이'(High)의 활성화상태와 로직'로우'(Low)의 비활성화상태를 천이하는 것에 응답하여 출력되는 신호(DELAY_LOCK_END)를 로직'하이'(High)로 활성화시킴으로써 클록지연부(220)의 지연량을 고정시켜 지연고정 동작을 종료시킨다.
즉, 지연고정동작 제어부(250)는, 클록지연부(220)에 구비된 지연라인(220)에서 출력되는 지연종료신호(DELAY_END_CTRL)가 로직'로우'(Low)로 비활성화되는 경우, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점이 예정된 횟수만큼 반복될 동안 지연고정신호(DELAY_LOCK_CTRL)가 로직'하이'(High) 또는 로직'로우'(Low) 중 어느 하나의 논리레벨로 고정되어 변동하지 않는 것에 응답하여 출력되는 신호(DELAY_LOCK_END)를 로직'로우'(Low)로 비활성화시킴으로써 지연고정 동작이 계속 수행되어 클록지연부(220)의 지연량이 변동할 수 있도록 한다.
또한, 지연고정동작 제어부(250)는, 클록지연부(220)에 구비된 지연라인(220)에서 출력되는 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 경우, 지연고정신호(DELAY_LOCK_CTRL)의 논리레벨과 상관없이 출력되는 신호(DELAY_LOCK_END)를 로직'하이'(High)로 활성화시킴으로써 클록지연부(220)의 지연량을 고정시켜 지연고정 동작을 종료시킨다.
그리고, 클록지연부(220)는, 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 다수의 비트로 이루어진 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동하되, 지연고정동작 제어부(250)의 출력신호(DELAY_LOCK_END)에 응답하여 지연고정코 드(DELAY_LOCK_CODE<0:N>)의 값을 고정하는 지연제어부(222), 및 지연고정코드(DELAY_LOCK_CODE<0:N>) 값에 대응하는 지연량만큼 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하되, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 한계 지연량에 대응하는 값보다 클 경우 지연종료신호(DELAY_END_CTRL)를 활성화시키는 지연라인(224)을 구비한다.
여기서, 클록지연부(220)의 구성요소 중 지연제어부(222)는, 지연고정 동작이 수행되는 중이고 지연고정동작 제어부(250)의 출력신호(DELAY_LOCK_END)가 로직'로우'(Low)로 비활성화된 상태에서는, 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키고. 지연고정 동작이 수행되는 중이고 지연고정동작 제어부(250)의 출력신호(DELAY_LOCK_END)가 로직'하이'(High)로 활성화된 상태에서는, 업데이트 시점 및 지연고정신호(DELAY_LOCK_CTRL)의 값과 상관없이 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키지 않으며, 지연고정 동작이 종료된 이후에는 업데이트 시점 및 지연고정신호(DELAY_LOCK_CTRL)의 값과 상관없이 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키지 않는다.
즉, 클록지연부(220)의 구성요소 중 지연제어부(222)는, 지연고정 동작이 수행되는 중이고 지연고정동작 제어부(250)의 출력신호(DELAY_LOCK_END)가 로직'로우'(Low)로 비활성화된 상태에서는, 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 증가시키고, 예정된 주기로 반복되는 업 데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)가 로직'로우'(Low)로 비활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 감소시키게 된다.
그리고, 클록지연부(220)의 구성요소 중 지연라인(224)은, 소스 클록(REFCLK)을 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량만큼 지연시켜 지연고정클록(DLLCLK)으로서 출력하는 동작을 수행하며, 이때, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량은 상대적인 값으로 미리 설정되어 있어야 한다.
예를 들어, 지연고정코드(DELAY_LOCK_CODE<0:N>)가 4비트로 이루어진 신호라고 가정하면, 그 값이 '0 0 0 0'일 때는 그에 대응하여 소스 클록(REFCLK)을 전혀 지연시키지 않고 그대로 지연고정클록(DLLCLK)으로서 출력되도록 설정하고, 그 값이 '0 0 0 1', '0 0 1 0', '0 0 1 1', '0 1 0 0', … 식으로 증가하면 증가할수록 소스 클록(REFCLK)을 더 많이 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정할 수 있다. 이때, 지연고정코드(DELAY_LOCK_CODE<0:N>)는 지연고정 동작의 시작시점에서 미리 설정되는 초기값을 가질 수 있으며, 일반적으로 초기값은 '0 0 0 0'과 같이 가장 작은 값을 선택하지 않고 '0 1 1 0' 과 같이 중간에 위치하는 값을 선택하게 된다.
또한, 도면에 직접적으로 도시되지는 않았지만 지연라인(224)에 다수의 단위지연소자(unit delay)들이 구비되도록 구성하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 증가하면 증가할수록 더 많은 개수의 단위지연소자(unit delay)를 사용하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으 로서 출력되도록 설정하고, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 감소하면 감소할수록 더 적은 개수의 단위지연소자(unit delay)를 사용하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정할 수 있다.
그런데, 지연라인(224)에 구비되는 단위지연소자(unit delay)의 개수는 설계자에 의해 미리 설정될 수 있는 값이며, 설계과정에서 한 번 그 값이 설정된 이후에는 다시 변경시키기 용이한 값이 아니다. 또한, 단위지연소자(unit delay)의 개수가 늘어난다는 것은 곧 면적의 증가를 의미하는 것이므로 모든 경우의 수를 모두 가정하여 그 개수를 마냥 늘려놓는 것은 매우 비효율적이다.
때문에, 지연라인(224)을 통해 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하기까지 선택 가능한 한계 지연량이 존재할 수밖에 없으며, 종래기술에서와 같이 한계 지연량에 도달한 이후에도 소스 클록(REFLCK)과 피드백 클록(FBCLK)의 위상이 동기화되지 않은 상태가 되어 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 계속 증가한다면, 정상적으로 지연고정 동작이 종료되지 못하는 문제가 발생하게 된다.
따라서, 본원발명의 제1 실시예에 따른 지연라인(224)에서 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되기까지 할 수 있는 한계 지연량에 도달하게 되면, 지연종료신호(DELAY_END_CTRL)를 로직'하이'(High)로 활성화시켜 출력한다.
동시에, 지연고정동작 제어부(250)에서는 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 출력되는 신호(DELAY_LOCK_END)를 로직'하이'(High)로 활성화시켜 출력하고, 지연제어부(222)에서는 지연고정동작 제어부(250)에서 출력되는 신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 고정시킴으로써, 지연고정 동작이 강제로 종료되도록 할 수 있다.
이렇게, 본원발명의 제1 실시예를 레지스터 제어형 지연고정루프(DLL)회로에 적용하게 되면, 지연고정 동작이 수행되는 중에 소스 클록(REFCLK)과 출력되는 지연고정클록(DLLCLK)간의 위상차이가 최대 값에 도달하는지를 감지한 결과에 따라 레지스터 제어형 지연고정루프회로의 지연고정동작을 강제로 종료함으로써, 레지스터 제어형 지연고정루프(DLL)회로의 지연고정동작이 무한대로 반복되는 것을 방지할 수 있다.
이때, 본원발명의 제1 실시예에서 지연라인(224)이 한계 지연량에 도달하여 지연종료신호(DELAY_END_CTRL) 및 지연고정동작 제어부(250)의 출력신호(DELAY_LOCK_END)가 로직'하이'(High)로 활성화된다고 하여도 지연고정 동작이 종료되는 것일 뿐 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상이 동기화된 상태가 아니기 때문에 내부 데이터 출력부(290)에서 출력되는 데이터(DQ DATA)의 위상이 외부 클록(CLK, CLK#)에 완전히 동기된 상태가 될 수 없다. 그럼에도 불구하고 본원발명의 제1 실시예에 따른 지연고정 동작이 효과적인 이유는 지연고정루프(DLL)회로의 동작이 일반적으로 도 7에 도시된 바와 같기 때문이다.
구체적으로 도 7을 참조하면, 도 7은 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK) - 실제로는 외부 클록(CLK, CLK#)과 소 스 클록(REFCLK)의 위상이 약간 차이가 있을 수 있음 - 의 주파수가 상대적으로 높은 주파수(High frequency)를 갖는 경우(A)와, 상대적으로 낮은 주파수(Low frequency)를 갖는 경우(B)로 나뉘어져 있는 것을 알 수 있다.
그 중, 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 주파수(High frequency)를 갖는 경우(A)를 먼저 살펴보면, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 상태이기 때문에 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)도 상대적으로 짧은 상태인 것을 알 수 있다.
이때, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 피드백 클록(FBCLK)의 기준에지의 위상 차이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어설 수 없으므로, 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어서지 못하는 상태가 되는 것을 알 수 있다.
즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 상태에서는 피드백 클록(FBCLK)을 상대적으로 조금만 지연시켜도 지연고정 동작이 종료될 수 있으므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하지 않고도 지연고정 동작이 종료되는 것이 가능하다는 것을 알 수 있다.
반대로, 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 주파수(Low frequency)를 갖는 경우(B) 를 살펴보면, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태이기 때문에 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)도 상대적으로 긴 상태인 것을 알 수 있다.
이때, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 피드백 클록(FBCLK)의 기준에지의 위상 차이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어설 수 없으므로, 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어서지 못하는 상태가 되는 것을 알 수 있다.
때문에, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)가 매우 긴 상태이므로 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이도 매우 길어져야 하는 것을 알 수 있다.
즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태에서는 피드백 클록(FBCLK)을 상대적으로 매우 많이 지연시켜야만 지연고정 동작이 종료될 수 있으므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하고도 지연고정 동작이 종료될 수 없는 상태가 존재할 수 있다는 것을 알 수 있다.
이렇게, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태에서는 피드백 클록(FBCLK)의 기준에지와 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지가 완전히 동기화되는 것이 불가능한 상태가 존재하지만, 본원발명의 제1 실시예에 따른 지연고정루프(DLL)회로에서는 이를 감지하여, 강제로 지연고정 동작을 종료시키며, 비록, 지연고정 동작이 종료된 상태이지만, 피드백 클록(FBCLK)의 기준에지와 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지가 크게 차이나지 않는 지점까지 진행되어 있는 상태라는 것을 알 수 있다.
즉, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하고도 지연고정 동작이 종료될 수 없는 상태라는 것은 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태라는 것과 동일한 상태이며, 이는, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 출력 주파수 또한 상대적으로 낮은 상태라는 것을 의미하므로, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 스큐(skew)가 약간 차이가 난다고 해도 그 값을 인식하는 데에는 큰 문제가 없는 상태라는 것을 의미한다.
따라서, 본원발명의 제1 실시예에 따른 지연고정 동작이 적용된 지연고정루프(DLL)회로에서 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되어 지연고정 동작이 강제로 종료되는 경우는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)이 상대적으로 낮은 주파수를 갖는 상태, 즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)가 매우 긴 상태가 되는 경우뿐이므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용한 상태에서 소스 클록(REFCLK)과 피드백 클록(FBCLK)간에 발생하는 위상차이에 대응하는 길이정도는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)의 길이에 대비하면 매우 짧은 길이에 불과하므로, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 값을 인 식하는 부분에서는 아무런 영향을 끼치지 않는다.
(제2 실시예)
도 3은 본 발명의 제2 실시예에 따른 레지스터 제어형 지연고정루프(DLL)회로를 도시한 블록 다이어그램이다.
도 3을 참조하면, 외부에서 인가되는 클록(CLK, CLK#)을 버퍼링하기 위한 클록 버퍼링부(380)와, 클록 인에이블 신호(CKE)에 응답하여 클록 버퍼링부(380)의 출력클록(BUF_CLK)을 구동하여 소스 클록(REFCLK)으로서 출력하기 위한 소스 클록 구동부(360)와, 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상을 비교하고, 비교결과에 대응하여 지연고정신호(DELAY_LOCK_CTRL)를 생성하기 위한 위상비교부(300)와, 지연고정을 이루기 위해 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로써 출력하되, 한계 지연량에 도달하는 것에 응답하여 지연종료신호(DELAY_END_CTRL)를 생성하기 위한 클록지연부(320)와, 지연고정클록(DLLCLK)에 소스 클록(REFCLK)의 실제 출력 경로의 지연시간을 반영하여 피드백 클록(FBCLK)으로서 출력하기 위한 지연복제모델부(340)와, 내부데이터(DATA BUS)를 지연고정클록(DLLCLK)에 동기화시켜 외부로 출력(DQ DATA)하되, 지연고정신호(DELAY_LOCK_CTRL) 및 지연종료신호(DELAY_END_CTRL)에 응답하여 그 동작이 온/오프 제어되는 내부데이터 출력부(390)를 구비한다.
여기서, 클록 버퍼링부(380)는, 외부에서 인가되는 클록(CLK, CLK#)을 버퍼링하여 내부에서 사용되는 클록(BUF_CLK)을 생성하는 동작을 수행한다.
그리고, 소스 클록 구동부(360)는, 클록 인에이블 신호(CKE)가 활성화된 구간에서 버퍼링된 클록(BUF_CLK)을 소스 클록(REFCLK)으로서 출력하는 동작을 수행하고, 클록 인에이블 신호(CKE)가 비활성화된 구간에서 버퍼링된 클록(BUF_CLK)을 소스 클록(REFCLK)으로서 출력하는 동작을 수행하지 않는다. 즉, 클록 인에이블 신호(CKE)가 활성화된 구간에서는 소스 클록(REFCLK)이 버퍼링된 클록(BUF_CLK)과 동일하게 토글링하는 상태가 되지만, 클록 인에이블 신호(CKE)가 비활성화된 구간에서는 버퍼링된 클록(BUF_CLK)의 토글링과 상관없이 소스 클록(REFCLK)은 토글링하지 않는다.
참고로, 클록 인에이블 신호(CKE)의 경우, 반도체 메모리 장치의 노말한 동작에서 항상 활성화된 상태를 유지하다가 반도체 메모리 장치의 파워 소모를 줄이기 위해 진입할 수 있는 파워 다운 모드(Power Down Mode)와 같은 특수한 동작모드에서 비활성화될 수 있다.
그리고, 위상비교부(300)는, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점에서 소스 클록(REFCLK)의 기준에지 - 일반적으로 상승에지(rising edge)를 의미하며, 하강에지(falling edge)가 되어도 상관없음 - 보다 피드백 클록(FBCLK)의 기준에지가 뒤쪽에 위치한 경우 지연고정신호(DELAY_LOCK_CTRL)를 로직'하이'(High)로 활성화시켜 출력하고, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점에서 소스 클록(REFCLK)의 기준에지보다 피드백 클록(FBCLK)의 기준에지가 앞쪽에 위치한 경우 지연고정신호(DELAY_LOCK_CTRL)를 로직'로우'(Low)로 비활성화시켜 출력한다.
그리고, 내부 데이터 출력부(390)는, 클록지연부(320)에 구비된 지연라인(320)에서 출력되는 지연종료신호(DELAY_END_CTRL)가 로직'로우'(Low)로 비활성화되는 경우, 지연고정신호(DELAY_LOCK_CTRL)에 대응하는 지연고정 동작이 수행되는 것에 응답하여 오프(Off)되어 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)시키지 않고, 지연고정신호(DELAY_LOCK_CTRL)에 대응하는 지연고정 동작이 수행되는지 않는 것에 응답하여 온(On)되어 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)시킨다.
즉, 내부 데이터 출력부(390)는, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점이 예정된 횟수만큼 반복될 동안 지연고정신호(DELAY_LOCK_CTRL)가 로직'하이'(High) 또는 로직'로우'(Low) 중 어느 하나의 논리레벨로 고정되어 변동하지 않는 것에 응답하여 오프(Off)되어 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)시키지 않고, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점이 예정된 횟수만큼 반복될 동안 지연고정신호(DELAY_LOCK_CTRL)가 반복적으로 로직'하이'(High)의 활성화상태와 로직'로우'(Low)의 비활성화상태를 천이하는 것에 응답하여 온(On)되어 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)시킨다.
또한, 내부 데이터 출력부(390)는, 클록지연부(320)에 구비된 지연라인(320)에서 출력되는 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 경우, 지연고정신호(DELAY_LOCK_CTRL)에 대응하는 지연고정 동작의 수행유무와 상관없이 온(On)되어 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)시킨다.
전술한 내부 데이터 출력부(390)의 동작 중 지연고정 동작 중에는 오프(Off)되어 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)시키지 않고, 지연고정 동작이 종료된 이후에는 온(On)되어 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)시킨다는 동작이 필요한 이유는, 지연고정 동작 중이라서 아직 외부 클록(CLK, CLK#)과 지연고정클록(DLLCLK)이 완전히 동기화되지 못한 상태에서 지연고정클록(DLLCLK)에 내부 데이터(DATA BUS)를 동기화시켜 출력해봤자 외부에서 그 값을 인식하기에 어려움이 있으므로 실제로 사용하지 못할 가능성이 높기 때문에 정확한 값을 갖지 못하는 데이터를 출력함으로 인해 소모되는 전류를 방지하기 위함이다.
따라서, 내부 데이터(DATA BUS)가 외부로 출력(DQ DATA)가 출력되기 위해서는 지연고정 동작이 완전히 종료된 이후에만 가능하게 되었는데, 그로 인해 다음과 같은 상황에서는 클록지연부(320)에서 지연고정 동작을 완전히 종료하지 못하게 되어 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)로 출력시키지 못하는 문제가 발생하였다.
먼저, 클록지연부(320)의 구성을 살펴보면, 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 다수의 비트로 이루어진 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동하는 지연제어부(322), 및 지연고정코드(DELAY_LOCK_CODE<0:N>) 값에 대응하는 지연량만큼 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하되, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 한계 지연량에 대응하는 값보다 클 경우 지연종료신호(DELAY_END_CTRL)를 활성화시키는 지연라인(324)을 구비한다.
여기서, 클록지연부(320)의 구성요소 중 지연제어부(322)는, 지연고정 동작 이 수행되는 상태에서는 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키고. 지연고정 동작이 종료된 이후에는 업데이트 시점 및 지연고정신호(DELAY_LOCK_CTRL)의 값과 상관없이 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키지 않는다.
즉, 클록지연부(320)의 구성요소 중 지연제어부(322)는, 지연고정 동작이 수행되는 상태에서는, 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 증가시키고, 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)가 로직'로우'(Low)로 비활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 감소시키게 된다.
그리고, 클록지연부(320)의 구성요소 중 지연라인(324)은, 소스 클록(REFCLK)을 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량만큼 지연시켜 지연고정클록(DLLCLK)으로서 출력하는 동작을 수행하며, 이때, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량은 상대적인 값으로 미리 설정되어 있어야 한다.
예를 들어, 지연고정코드(DELAY_LOCK_CODE<0:N>)가 4비트로 이루어진 신호라고 가정하면, 그 값이 '0 0 0 0'일 때는 그에 대응하여 소스 클록(REFCLK)을 전혀 지연시키지 않고 그대로 지연고정클록(DLLCLK)으로서 출력되도록 설정하고, 그 값이 '0 0 0 1', '0 0 1 0', '0 0 1 1', '0 1 0 0', … 식으로 증가하면 증가할수록 소스 클록(REFCLK)을 더 많이 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정할 수 있다. 이때, 지연고정코드(DELAY_LOCK_CODE<0:N>)는 지연고정 동작의 시작시점에서 미리 설정되는 초기값을 가질 수 있으며, 일반적으로 초기값은 '0 0 0 0'과 같이 가장 작은 값을 선택하지 않고 '0 1 1 0' 과 같이 중간에 위치하는 값을 선택하게 된다.
또한, 도면에 직접적으로 도시되지는 않았지만 지연라인(324)에 다수의 단위지연소자(unit delay)들이 구비되도록 구성하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 증가하면 증가할수록 더 많은 개수의 단위지연소자(unit delay)를 사용하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정하고, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 감소하면 감소할수록 더 적은 개수의 단위지연소자(unit delay)를 사용하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정할 수 있다.
그런데, 지연라인(324)에 구비되는 단위지연소자(unit delay)의 개수는 설계자에 의해 미리 설정될 수 있는 값이며, 설계과정에서 한 번 그 값이 설정된 이후에는 다시 변경시키기 용이한 값이 아니다. 또한, 단위지연소자(unit delay)의 개수가 늘어난다는 것은 곧 면적의 증가를 의미하는 것이므로 모든 경우의 수를 모두 가정하여 그 개수를 마냥 늘려놓는 것은 매우 비효율적이다.
때문에, 지연라인(324)을 통해 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하기까지 선택 가능한 한계 지연량이 존재할 수밖에 없으며, 종래기술에서와 같이 한계 지연량에 도달한 이후에도 소스 클록(REFLCK)과 피드백 클록(FBCLK)의 위상이 동기화되지 않은 상태가 되어 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 계속 증가한다면, 정상적으로 지연고정 동작이 종료되지 못하는 문제가 발생하게 된다.
이렇게, 정상적으로 지연고정 동작이 종료되지 못하게 되면, 내부 데이터 출력부(390)에서도 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)시키지 못하게 되므로, 반도체 메모리 장치의 리드 동작이 이루어질 수 없는 문제가 발생한다.
따라서, 본원발명의 제2 실시예에 따른 지연라인(324)에서는 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되기까지 할 수 있는 한계 지연량에 도달하게 되면, 지연종료신호(DELAY_END_CTRL)를 로직'하이'(High)로 활성화시켜 출력한다.
동시에, 내부 데이터 출력부(390)에서는 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)시킴으로써, 특정 조건에서 내부 데이터 출력부(390)의 동작이 지연고정 동작의 수행유무와 상관없이 발생할 수 있도록 한다.
이렇게, 본원발명의 제2 실시예를 레지스터 제어형 지연고정루프(DLL)회로에 적용하게 되면, 지연고정 동작이 수행되는 중에 소스 클록(REFCLK)과 출력되는 지연고정클록(DLLCLK)간의 위상차이가 최대 값에 도달하는지를 감지한 결과에 따라 반도체 메모리 장치의 코어영역에서 출력되는 내부데이터(DATA BUS)를 외부로 구동(DQ DATA)시켜줌으로써, 레지스터 제어형 지연고정루프회로 동작의 신뢰성을 향상시킬 수 있다.
이때, 본원발명의 제2 실시예에서 지연라인(324)이 한계 지연량에 도달하여 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화된다고 하여도 내부 데이터 출력부(390)를 통해 내부 데이터(DATA BUS)가 외부로 출력(DQ DATA)되는 것일 뿐 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상이 동기화된 상태가 아니기 때문에 내부 데이터 출력부(390)에서 출력되는 데이터(DQ DATA)의 위상이 외부 클록(CLK, CLK#)에 완전히 동기된 상태가 될 수 없다. 그럼에도 불구하고 본원발명의 제2 실시예에 따른 지연고정 동작이 효과적인 이유는 지연고정루프(DLL)회로의 동작이 일반적으로 도 7에 도시된 바와 같기 때문이다.
구체적으로 도 7을 참조하면, 도 7은 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK) - 실제로는 외부 클록(CLK, CLK#)과 소스 클록(REFCLK)의 위상이 약간 차이가 있을 수 있음 - 의 주파수가 상대적으로 높은 주파수(High frequency)를 갖는 경우(A)와, 상대적으로 낮은 주파수(Low frequency)를 갖는 경우(B)로 나뉘어져 있는 것을 알 수 있다.
그 중, 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 주파수(High frequency)를 갖는 경우(A)를 먼저 살펴보면, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 상태이기 때문에 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)도 상대적으로 짧은 상태인 것을 알 수 있다.
이때, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 피드백 클록(FBCLK)의 기준에지의 위상 차이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK) 의 한 주기(tck)를 넘어설 수 없으므로, 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어서지 못하는 상태가 되는 것을 알 수 있다.
즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 상태에서는 피드백 클록(FBCLK)을 상대적으로 조금만 지연시켜도 지연고정 동작이 종료될 수 있으므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하지 않고도 지연고정 동작이 종료되는 것이 가능하다는 것을 알 수 있다.
반대로, 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 주파수(Low frequency)를 갖는 경우(B)를 살펴보면, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태이기 때문에 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)도 상대적으로 긴 상태인 것을 알 수 있다.
이때, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 피드백 클록(FBCLK)의 기준에지의 위상 차이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어설 수 없으므로, 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어서지 못하는 상태가 되는 것을 알 수 있다.
때문에, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)가 매우 긴 상태이므로 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이도 매우 길어져야 하는 것을 알 수 있다.
즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태에서는 피드백 클록(FBCLK)을 상대적으로 매우 많이 지연시켜야만 지연고정 동작이 종료될 수 있으므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하고도 지연고정 동작이 종료될 수 없는 상태가 존재할 수 있다는 것을 알 수 있다.
이렇게, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태에서는 피드백 클록(FBCLK)의 기준에지와 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지가 완전히 동기화되는 것이 불가능한 상태가 존재하지만, 본원발명의 제2 실시예에 따른 지연고정루프(DLL)회로에서는 이를 감지하여, 강제로 지연고정 동작을 종료시키며, 비록, 지연고정 동작이 종료된 상태이지만, 피드백 클록(FBCLK)의 기준에지와 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지가 크게 차이나지 않는 지점까지 진행되어 있는 상태라는 것을 알 수 있다.
즉, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하고도 지연고정 동작이 종료될 수 없는 상태라는 것은 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태라는 것과 동일한 상태이며, 이는, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 출력 주파수 또한 상대적으로 낮은 상태라는 것을 의미하므로, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 스큐(skew)가 약간 차이가 난다고 해도 그 값을 인식하는 데에는 큰 문제가 없는 상태라는 것을 의미한다.
따라서, 본원발명의 제2 실시예에 따른 지연고정 동작이 적용된 지연고정루프(DLL)회로에서 지연종료신호(DELAY_LOCK_END)가 로직'하이'(High)로 활성화되어 내부 데이터(DATA BUS)를 외부로 출력(DQ DATA)하는 경우에는, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)이 상대적으로 낮은 주파수를 갖는 상태, 즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)가 매우 긴 상태가 되는 경우뿐이므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용한 상태에서 소스 클록(REFCLK)과 피드백 클록(FBCLK)간에 발생하는 위상차이에 대응하는 길이정도는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)의 길이에 대비하면 매우 짧은 길이에 불과하므로, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 값을 인식하는 부분에서는 아무런 영향을 끼치지 않는다.
(제3 실시예)
도 4는 본 발명의 제3 실시예에 따른 레지스터 제어형 지연고정루프(DLL)회로를 도시한 블록 다이어그램이다.
도 4를 참조하면, 지연고정신호(DELAY_LOCK_CTRL) 및 지연종료신호(DELAY_END_CTRL)에 응답하여 외부전원전압(VDD) 또는 내부전원전압(IN_VDD) - 외부전원전압(VDD)보다 낮은 전압레벨을 가짐 - 을 선택적으로 공급(SEL_VDD)하기 위한 전원전압 선택부(410)와, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하며 외부에서 인가되는 클록(CLK, CLK#)을 버퍼링하 기 위한 클록 버퍼링부(480)와, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하며 클록 인에이블 신호(CKE)에 응답하여 클록 버퍼링부(480)의 출력클록(BUF_CLK)을 구동하여 소스 클록(REFCLK)으로서 출력하기 위한 소스 클록 구동부(460)와, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하며 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상을 비교하고, 비교결과에 대응하여 지연고정신호(DELAY_LOCK_CTRL)를 생성하기 위한 위상비교부(400)와, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하며 지연고정을 이루기 위해 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로써 출력하되, 한계 지연량에 도달하는 것에 응답하여 지연종료신호(DELAY_END_CTRL)를 생성하기 위한 클록지연부(420), 및 지연고정클록(DLLCLK)에 소스 클록(REFCLK)의 실제 출력 경로의 지연시간을 반영하여 피드백 클록(FBCLK)으로서 출력하기 위한 지연복제모델부(440)를 구비한다.
여기서, 전원전압 선택부(410)는, 외부전원전압(VDD)의 전압레벨을 설정된 비율로 분배하여 외부전원전압(VDD)의 전압레벨보다 낮은 전압레벨을 갖는 내부전원전압(IN_VDD)을 생성하기 위한 내부전원전압 생성부(412), 및 지연고정신호(DELAY_LOCK_CTRL) 및 지연종료신호(DELAY_END_CTRL)에 응답하여 외부전원전압(VDD)과 내부전원전압(IN_VDD) 중 어느 하나의 전압을 선택하여 출력(SEL_VDD)하기 위한 전압선택부(414)를 구비한다.
또한, 전원전압 선택부(410)는, 클록지연부(420)에 구비된 지연라인(420)에 서 출력되는 지연종료신호(DELAY_END_CTRL)가 로직'로우'(Low)로 비활성화되는 경우, 지연고정신호(DELAY_LOCK_CTRL)에 대응하는 지연고정 동작이 수행되는 것에 응답하여 외부전원전압(VDD)을 선택전압(SEL_VDD)으로서 출력하고, 지연고정신호(DELAY_LOCK_CTRL)에 대응하는 지연고정 동작이 수행되는지 않는 것에 응답하여 내부전원전압(IN_VDD)을 선택전압(SEL_VDD)으로서 출력한다.
즉, 전원전압 선택부(410)는, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점이 예정된 횟수만큼 반복될 동안 지연고정신호(DELAY_LOCK_CTRL)가 로직'하이'(High) 또는 로직'로우'(Low) 중 어느 하나의 논리레벨로 고정되어 변동하지 않는 것에 응답하여 외부전원전압(VDD)을 선택전압(SEL_VDD)으로서 출력하고, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점이 예정된 횟수만큼 반복될 동안 지연고정신호(DELAY_LOCK_CTRL)가 반복적으로 로직'하이'(High)의 활성화상태와 로직'로우'(Low)의 비활성화상태를 천이하는 것에 응답하여 내부전원전압(IN_VDD)을 선택전압(SEL_VDD)으로서 출력한다.
또한, 전원전압 선택부(410)는, 클록지연부(420)에 구비된 지연라인(420)에서 출력되는 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 경우, 지연고정신호(DELAY_LOCK_CTRL)에 대응하는 지연고정 동작의 수행유무와 상관없이 내부전원전압(IN_VDD)을 선택전압(SEL_VDD)으로서 출력한다.
그리고, 클록 버퍼링부(480)는, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하고 외부에서 인가되는 클록(CLK, CLK#)을 버퍼링 하여 내부에서 사용되는 클록(BUF_CLK)을 생성하는 동작을 수행한다.
이때, 전원전압 선택부(410)를 통해 클록 버퍼링부(480)으로 공급되는 전원전압(SEL_VDD)은, 외부에서 공급되는 외부전원전압(VDD) 또는 전원전압 선택부(410) 내부의 내부전압 생성부(412)에서 생성되는 내부전원전압(IN_VDD)으로써, 클록 버퍼링부(480)의 동작에서는 외부전원전압(VDD)이 전원으로 공급되든 내부전압전압(IN_VDD)이 전원으로 공급되든 상관없이 동일한 동작이 수행된다. 하지만, 외부전원전압(VDD)의 전압레벨이 내부전원전압(IN_VDD)의 전압레벨보다 높은 전압레벨을 갖는 상태이므로, 내부전원전압(IN_VDD)을 전원으로 사용하였을 때 버퍼링되어 출력되는 클록(BUF_CLK)의 스윙레벨 폭이 외부전원전압(VDD)을 전원으로 사용하였을 때 버퍼링되어 출력되는 클록(BUF_CLK)의 스윙레벨 폭보다 작은 상태가 된다. 즉, 외부전원전압(VDD)이 전원으로 공급되는 것보다는 내부전압전압(IN_VDD)이 전원으로 공급될 때, 상대적으로 더 적은양의 전류를 소모하게 된다.
그리고, 소스 클록 구동부(460)는, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하고 클록 인에이블 신호(CKE)가 활성화된 구간에서 버퍼링된 클록(BUF_CLK)을 소스 클록(REFCLK)으로서 출력하는 동작을 수행하고, 클록 인에이블 신호(CKE)가 비활성화된 구간에서 버퍼링된 클록(BUF_CLK)을 소스 클록(REFCLK)으로서 출력하는 동작을 수행하지 않는다. 즉, 클록 인에이블 신호(CKE)가 활성화된 구간에서는 소스 클록(REFCLK)이 버퍼링된 클록(BUF_CLK)과 동일하게 토글링하는 상태가 되지만, 클록 인에이블 신호(CKE)가 비활성화된 구간에서는 버퍼링된 클록(BUF_CLK)의 토글링과 상관없이 소스 클록(REFCLK)은 토글링하 지 않는다.
이때, 전원전압 선택부(410)를 통해 소스 클록 구동부(460)으로 공급되는 전원전압(SEL_VDD)은, 외부에서 공급되는 외부전원전압(VDD) 또는 전원전압 선택부(410) 내부의 내부전압 생성부(412)에서 생성되는 내부전원전압(IN_VDD)으로써, 소스 클록 구동부(460)의 동작에서는 외부전원전압(VDD)이 전원으로 공급되든 내부전압전압(IN_VDD)이 전원으로 공급되든 상관없이 동일한 동작이 수행된다. 하지만, 외부전원전압(VDD)의 전압레벨이 내부전원전압(IN_VDD)의 전압레벨보다 높은 전압레벨을 갖는 상태이므로, 내부전원전압(IN_VDD)을 전원으로 사용하였을 때 출력되는 소스 클록(REFCLK)의 스윙레벨 폭이 외부전원전압(VDD)을 전원으로 사용하였을 때 출력되는 소스 클록(REFCLK)의 스윙레벨 폭보다 작은 상태가 된다. 즉, 외부전원전압(VDD)이 전원으로 공급되는 것보다는 내부전압전압(IN_VDD)이 전원으로 공급될 때, 상대적으로 더 적은양의 전류를 소모하게 된다.
참고로, 클록 인에이블 신호(CKE)의 경우, 반도체 메모리 장치의 노말한 동작에서 항상 활성화된 상태를 유지하다가 반도체 메모리 장치의 파워 소모를 줄이기 위해 진입할 수 있는 파워 다운 모드(Power Down Mode)와 같은 특수한 동작모드에서 비활성화될 수 있다.
그리고, 위상비교부(400)는, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하고 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점에서 소스 클록(REFCLK)의 기준에지 - 일반적으로 상승에지(rising edge)를 의미하며, 하강에지(falling edge)가 되어도 상관없음 - 보다 피드백 클록(FBCLK)의 기준에지가 뒤쪽에 위치한 경우 지연고정신호(DELAY_LOCK_CTRL)를 로직'하이'(High)로 활성화시켜 출력하고, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점에서 소스 클록(REFCLK)의 기준에지보다 피드백 클록(FBCLK)의 기준에지가 앞쪽에 위치한 경우 지연고정신호(DELAY_LOCK_CTRL)를 로직'로우'(Low)로 비활성화시켜 출력한다.
이때, 전원전압 선택부(410)를 통해 위상비교부(400)로 공급되는 전원전압(SEL_VDD)은, 외부에서 공급되는 외부전원전압(VDD) 또는 전원전압 선택부(410) 내부의 내부전압 생성부(412)에서 생성되는 내부전원전압(IN_VDD)으로써, 위상비교부(400)의 동작에서는 외부전원전압(VDD)이 전원으로 공급되든 내부전압전압(IN_VDD)이 전원으로 공급되든 상관없이 동일한 동작이 수행된다. 하지만, 외부전원전압(VDD)의 전압레벨이 내부전원전압(IN_VDD)의 전압레벨보다 높은 전압레벨을 갖는 상태이므로, 외부전원전압(VDD)을 전원으로 사용하였을 때는 상대적으로 빠른 속도로 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상차이를 비교하고 비교결과에 대응하여 출력되는 지연고정신호(DELAY_LOCK_CTRL)의 스윙레벨 폭도 상대적으로 커지게 되는 반면, 내부전원전압(IN_VDD)을 전원으로 사용하였을 때는 상대적으로 느린 속도로 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상차이를 비교하고 비교결과에 대응하여 출력되는 지연고정신호(DELAY_LOCK_CTRL)의 스윙레벨 폭도 상대적으로 작아지게 된다. 즉, 외부전원전압(VDD)이 전원으로 공급되는 것보다는 내부전압전압(IN_VDD)이 전원으로 공급될 때, 상대적으로 더 적은양의 전류를 소모하게 된다.
그리고, 클록지연부(420)는, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하고 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 다수의 비트로 이루어진 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동하는 지연제어부(422), 및 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하고 지연고정코드(DELAY_LOCK_CODE<0:N>) 값에 대응하는 지연량만큼 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하되, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 한계 지연량에 대응하는 값보다 클 경우 지연종료신호(DELAY_END_CTRL)를 활성화시키는 지연라인(424)을 구비한다.
여기서, 클록지연부(420)의 구성요소 중 지연제어부(422)는, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하여 지연고정 동작이 수행되는 도중 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키고. 지연고정 동작이 종료된 이후에는 업데이트 시점 및 지연고정신호(DELAY_LOCK_CTRL)의 값과 상관없이 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키지 않는다.
즉, 클록지연부(420)의 구성요소 중 지연제어부(422)는, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하여 지연고정 동작이 수행되는 도중 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 증가시키고, 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)가 로직'로우'(Low)로 비활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 감소시키게 된다.
이때, 전원전압 선택부(410)를 통해 지연제어부(422)로 공급되는 전원전압(SEL_VDD)은, 외부에서 공급되는 외부전원전압(VDD) 또는 전원전압 선택부(410) 내부의 내부전압 생성부(412)에서 생성되는 내부전원전압(IN_VDD)으로써, 지연제어부(422)의 동작에서는 외부전원전압(VDD)이 전원으로 공급되든 내부전압전압(IN_VDD)이 전원으로 공급되든 상관없이 동일한 동작이 수행된다. 하지만, 외부전원전압(VDD)의 전압레벨이 내부전원전압(IN_VDD)의 전압레벨보다 높은 전압레벨을 갖는 상태이므로, 외부전원전압(VDD)을 전원으로 사용하였을 때는 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변화시키는 속도가 상대적으로 빨라지는 반면, 내부전원전압(IN_VDD)을 전원으로 사용하였을 때는 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변화시키는 속도가 상대적으로 느려지게 된다. 즉, 외부전원전압(VDD)이 전원으로 공급되는 것보다는 내부전압전압(IN_VDD)이 전원으로 공급될 때, 상대적으로 더 적은양의 전류를 소모하게 된다.
그리고, 클록지연부(420)의 구성요소 중 지연라인(424)은, 전원전압 선택부(410)를 통해 공급되는 전원전압(SEL_VDD)을 전원으로 사용하고 소스 클록(REFCLK)을 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량만큼 지연시켜 지연고정클록(DLLCLK)으로서 출력하는 동작을 수행한다.
이때, 전원전압 선택부(410)를 통해 지연라인(424)로 공급되는 전원전 압(SEL_VDD)은, 외부에서 공급되는 외부전원전압(VDD) 또는 전원전압 선택부(410) 내부의 내부전압 생성부(412)에서 생성되는 내부전원전압(IN_VDD)으로써, 지연라인(424)의 동작에서는 외부전원전압(VDD)이 전원으로 공급되든 내부전압전압(IN_VDD)이 전원으로 공급되든 상관없이 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량만큼 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하는 동작이 수행되도록 지연라인(424)의 내부회로가 구성되어 있게 되며, 이는, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량은 상대적인 값으로 미리 설정되어 있어야 한다.
예를 들어, 지연고정코드(DELAY_LOCK_CODE<0:N>)가 4비트로 이루어진 신호라고 가정하면, 그 값이 '0 0 0 0'일 때는 그에 대응하여 소스 클록(REFCLK)을 전혀 지연시키지 않고 그대로 지연고정클록(DLLCLK)으로서 출력되도록 설정하고, 그 값이 '0 0 0 1', '0 0 1 0', '0 0 1 1', '0 1 0 0', … 식으로 증가하면 증가할수록 소스 클록(REFCLK)을 더 많이 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정할 수 있다. 이때, 지연고정코드(DELAY_LOCK_CODE<0:N>)는 지연고정 동작의 시작시점에서 미리 설정되는 초기값을 가질 수 있으며, 일반적으로 초기값은 '0 0 0 0'과 같이 가장 작은 값을 선택하지 않고 '0 1 1 0' 과 같이 중간에 위치하는 값을 선택하게 된다.
또한, 도면에 직접적으로 도시되지는 않았지만 지연라인(424)에 다수의 단위지연소자(unit delay)들이 구비되도록 구성하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 증가하면 증가할수록 더 많은 개수의 단위지연소 자(unit delay)를 사용하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정하고, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 감소하면 감소할수록 더 적은 개수의 단위지연소자(unit delay)를 사용하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정할 수 있으며, 이때, 각각의 단위지연소자(unit delay)들은 외부전원전압(VDD)이 전원으로 공급되든 내부전원전압(IN_VDD)이 전원으로 공급되든 상관없이 동일한 지연량을 갖도록 설계된다.
전술한 바와 같이 지연고정루프(DLL)회로 내부의 구성요소들에게 상대적으로 높은 전압레벨을 갖는 외부전원전압(VDD)을 전원으로 공급하면, 그 동작 속도 측면에서는 이익이지만 상대적으로 많은 양의 전류를 소모한다는 것을 알 수 있다. 반면, 지연고정루프(DLL)회로 내부의 구성요소들에게 상대적으로 낮은 전압레벨을 갖는 내부전원전압(VDD)을 전원으로 공급하면, 그 동작 속도 측면에서는 손해이지만 상대적으로 적은 양의 전류를 소모한다는 것을 알 수 있다.
따라서, 지연고정루프(DLL)회로에서 소모되는 전류량을 최소한으로 유지하기 위해서는 지연고정 동작이 최대한 짧은 시간이내에서 종료되도록 제어하여야만 하게 되었는데, 다음과 같은 상황에서 클록지연부(420)에서 지연고정 동작을 완전히 종료하지 못하게 되어 지연고정 동작이 무한 루프에 빠지게 되고, 설사 지연고정 동작이 종료된다고 하더라도 매우 오랜 시간이 걸리게 되어 지연고정 동작으로 인해 소모되는 전류의 크기가 매우 늘어나는 문제가 발생하게 되었다.
먼저, 지연라인(424)에 구비되는 단위지연소자(unit delay)의 개수는 설계자 에 의해 미리 설정될 수 있는 값이며, 설계과정에서 한 번 그 값이 설정된 이후에는 다시 변경시키기 용이한 값이 아니다. 또한, 단위지연소자(unit delay)의 개수가 늘어난다는 것은 곧 면적의 증가를 의미하는 것이므로 모든 경우의 수를 모두 가정하여 그 개수를 마냥 늘려놓는 것은 매우 비효율적이다.
때문에, 지연라인(424)을 통해 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하기까지 선택 가능한 한계 지연량이 존재할 수밖에 없으며, 종래기술에서와 같이 한계 지연량에 도달한 이후에도 소스 클록(REFLCK)과 피드백 클록(FBCLK)의 위상이 동기화되지 않은 상태가 되어 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 계속 증가한다면, 정상적으로 지연고정 동작이 종료되지 못하는 문제가 발생하게 된다.
따라서, 본원발명의 제3 실시예에 따른 지연라인(424)에서 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되기까지 할 수 있는 한계 지연량에 도달하게 되면, 지연종료신호(DELAY_END_CTRL)를 로직'하이'(High)로 활성화시켜 출력한다.
동시에, 지연고정동작 제어부(450)에서는 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 출력되는 신호(DELAY_LOCK_END)를 로직'하이'(High)로 활성화시켜 출력하고, 지연제어부(422)에서는 지연고정동작 제어부(450)에서 출력되는 신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 고정시킴으로써, 지연고정 동작이 강제로 종료되도록 할 수 있다.
이렇게, 본원발명의 제3 실시예를 레지스터 제어형 지연고정루프(DLL)회로에 적용하게 되면, 지연고정 동작이 수행되는 중에 소스 클록(REFCLK)과 출력되는 지연고정클록(DLLCLK)간의 위상차이가 최대 값에 도달하는지를 감지한 결과에 따라 레지스터 제어형 지연고정루프회로로 공급되는 전원전압의 전압레벨을 조절함으로써, 레지스터 제어형 지연고정루프회로의 지연고정루프 동작으로 인해 소모되는 전류의 크기를 최소한으로 유지할 수 있다.
이때, 본원발명의 제3 실시예에서 지연라인(424)이 한계 지연량에 도달하여 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화된다고 하여도 전원전압 선택부(410)에 의해 지연고정루프(DLL)회로로 공급되는 전원전압이 외부전원전압(VDD)에서 내부전원전압(IN_VDD)로 바뀌는 것일 뿐, 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상이 동기화된 상태가 아니기 때문에 내부 데이터 출력부(490)에서 출력되는 데이터(DQ DATA)의 위상이 외부 클록(CLK, CLK#)에 완전히 동기된 상태가 될 수 없다. 즉, 지연고정 동작이 완전히 종료된 상태라고 보기 힘들다. 그럼에도 불구하고 본원발명의 제3 실시예에 따라 지연고정루프(DLL)회로에 외부전원전압(VDD) 대신 내부전원전압(IN_VDD)을 제공하는 동작이 효과적인 이유는 지연고정루프(DLL)회로의 동작이 일반적으로 도 7에 도시된 바와 같기 때문이다.
구체적으로 도 7을 참조하면, 도 7은 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK) - 실제로는 외부 클록(CLK, CLK#)과 소스 클록(REFCLK)의 위상이 약간 차이가 있을 수 있음 - 의 주파수가 상대적으로 높 은 주파수(High frequency)를 갖는 경우(A)와, 상대적으로 낮은 주파수(Low frequency)를 갖는 경우(B)로 나뉘어져 있는 것을 알 수 있다.
그 중, 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 주파수(High frequency)를 갖는 경우(A)를 먼저 살펴보면, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 상태이기 때문에 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)도 상대적으로 짧은 상태인 것을 알 수 있다.
이때, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 피드백 클록(FBCLK)의 기준에지의 위상 차이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어설 수 없으므로, 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어서지 못하는 상태가 되는 것을 알 수 있다.
즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 상태에서는 피드백 클록(FBCLK)을 상대적으로 조금만 지연시켜도 지연고정 동작이 종료될 수 있으므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하지 않고도 지연고정 동작이 종료되는 것이 가능하다는 것을 알 수 있다.
반대로, 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 주파수(Low frequency)를 갖는 경우(B)를 살펴보면, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태이기 때문에 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)도 상대적으로 긴 상태인 것을 알 수 있다.
이때, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 피드백 클록(FBCLK)의 기준에지의 위상 차이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어설 수 없으므로, 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어서지 못하는 상태가 되는 것을 알 수 있다.
때문에, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)가 매우 긴 상태이므로 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이도 매우 길어져야 하는 것을 알 수 있다.
즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태에서는 피드백 클록(FBCLK)을 상대적으로 매우 많이 지연시켜야만 지연고정 동작이 종료될 수 있으므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하고도 지연고정 동작이 종료될 수 없는 상태가 존재할 수 있다는 것을 알 수 있다.
이렇게, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태에서는 피드백 클록(FBCLK)의 기준에지와 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지가 완전히 동기화되는 것이 불가능한 상태가 존재하지만, 본원발명의 제3 실시예에 따른 지연고정루프(DLL)회로에서는 이를 감지하여, 외부 전원전압(VDD) 대신 내부전원전압(IN_VDD)을 공급함으로써 더 이상의 지연고정 동작으로 인해 전류가 소모되는 것을 방지하며, 이때, 지연고정 동작이 완전히 종료된 상태는 아니지만, 피드백 클록(FBCLK)의 기준에지와 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지가 크게 차이나지 않는 지점까지 진행되어 있는 상태라는 것을 알 수 있다.
즉, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하고도 지연고정 동작이 종료될 수 없는 상태라는 것은 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태라는 것과 동일한 상태이며, 이는, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 출력 주파수 또한 상대적으로 낮은 상태라는 것을 의미하므로, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 스큐(skew)가 약간 차이가 난다고 해도 그 값을 인식하는 데에는 큰 문제가 없는 상태라는 것을 의미한다.
따라서, 본원발명의 제3 실시예에 따른 지연고정 동작이 적용된 지연고정루프(DLL)회로에서 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되어 외부전원전압(VDD) 대신 내부전원전압(IN_VDD)을 공급하는 경우에는, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)이 상대적으로 낮은 주파수를 갖는 상태, 즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)가 매우 긴 상태가 되는 경우뿐이므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용한 상태에서 소스 클록(REFCLK)과 피드백 클록(FBCLK)간에 발생하는 위상차이에 대응하는 길이정도는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)의 길이에 대비하 면 매우 짧은 길이에 불과하므로, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 값을 인식하는 부분에서는 아무런 영향을 끼치지 않는 상태가 되며, 이때, 본원발명의 제3 실시예에 따른 동작에 의해 전류소모는 최소한으로 유지할 수 있는 상태가 됨을 알 수 있다.
(제4 실시예)
도 5는 본 발명의 제4 실시예에 따른 레지스터 제어형 지연고정루프(DLL)회로를 도시한 블록 다이어그램이다.
도 5를 참조하면, 외부에서 인가되는 클록(CLK, CLK#)을 버퍼링하기 위한 클록 버퍼링부(580)와, 지연종료신호(DELAY_END_CTRL)에 대응하는 지연고정 인에이블 구간에서 클록 버퍼링부(580)에서 출력되는 클록(BUF_CLK) - 클록 버퍼링부(580)에서 출력되는 클록은 실질적으로 외부에서 인가되는 클록(CLK, CLK#)과 동일하다고 볼 수 있음 - 을 구동하여 소스 클록(REFCLK)으로서 출력하고, 지연종료신호(DELAY_END_CTRL)에 대응하는 지연고정 디스에이블 구간에서 클록 버퍼링부(580)에서 출력되는 클록(BUF_CLK)을 구동하여 지연고정클록(DLLCLK)으로서 출력하기 위한 클록 구동부(530)와, 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상을 비교하고, 비교결과에 대응하여 지연고정신호(DELAY_LOCK_CTRL)를 생성하기 위한 위상비교부(500)와, 지연고정을 이루기 위해 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로써 출력하되, 한계 지연량에 도달하는 것에 응답하여 지연종료신호(DELAY_END_CTRL)를 생성하기 위한 클록지 연부(520), 및 지연고정클록(DLLCLK)에 소스 클록(REFCLK)의 실제 출력 경로의 지연시간을 반영하여 피드백 클록(FBCLK)으로서 출력하기 위한 지연복제모델부(540)를 구비한다.
여기서, 클록 버퍼링부(580)는, 외부에서 인가되는 클록(CLK, CLK#)을 버퍼링하여 내부에서 사용되는 클록(BUF_CLK)을 생성하는 동작을 수행한다.
그리고, 클록 구동부(530)는, 지연종료신호(DELAY_END_CTRL) 및 클록 인에이블 신호(CKE)에 응답하여 클록 버퍼링부(580)의 출력클록(BUF_CLK)을 구동하여 소스 클록(REFCLK)으로서 출력하기 위한 소스 클록 구동부(532), 및 지연종료신호(DELAY_END_CTRL)에 응답하여 클록 버퍼링부(580)의 출력클록(BUF_CLK)을 구동하여 지연고정클록(DLLCLK)으로써 출력하기 위한 지연고정클록 구동부(534)를 구비한다.
여기서, 소스 클록 구동부(532)는, 클록 인에이블 신호(CKE)가 로직'하이'(High)로 활성화된 상태에서 지연종료신호(DELAY_END_CTRL)가 로직'로우'(Low)로 비활성화되는 것에 응답하여 클록 버퍼링부(580)의 출력클록(BUF_CLK)을 구동하여 소스 클록(REFCLK)으로서 출력하는 동작을 수행한다.
또한, 소스 클록 구동부(532)는, 클록 인에이블 신호(CKE)가 로직'하이'(High)로 활성화된 상태에서 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 클록 버퍼링부(580)의 출력클록(BUF_CLK)을 구동하지 않음으로써 소스 클록(REFCLK)이 토글링하지 않도록 한다.
또한, 소스 클록 구동부(532)는, 클록 인에이블 신호(CKE)가 로직'로 우'(Low)로 비활성화된 상태에서 지연종료신호(DELAY_END_CTRL)의 논리레벨과 상관없이 클록 버퍼링부(580)의 출력클록(BUF_CLK)을 구동하지 않음으로써 소스 클록(REFCLK)이 토글링하지 않도록 한다.
즉, 소스 클록 구동부(532)는, 클록 인에이블 신호(CKE)가 로직'하이'(High)로 활성화된 상태에서는 지연종료신호(DELAY_END_CTRL)의 논리레벨에 따라 클록 버퍼링부(580)의 출력클록(BUF_CLK)이 소스 클록(REFCLK)으로서 출력될지 출력 안 될지를 결정하게 되지만, 클록 인에이블 신호(CKE)가 로직'로우'(Low)로 비활성화된 상태에서는 지연종료신호(DELAY_END_CTRL)의 논리레벨과 상관없이 클록 버퍼링부(580)의 출력클록(BUF_CLK)이 소스 클록(REFCLK)으로서 출력되지 않도록 함으로써 소스 클록(REFCLK)이 토글링하지 않도록 한다.
참고로, 클록 인에이블 신호(CKE)의 경우, 반도체 메모리 장치의 노말한 동작에서 항상 활성화된 상태를 유지하다가 반도체 메모리 장치의 파워 소모를 줄이기 위해 진입할 수 있는 파워 다운 모드(Power Down Mode)와 같은 특수한 동작모드에서 비활성화될 수 있다.
그리고, 지연고정클록 구동부(534)는, 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 클록 버퍼링부(580)의 출력클록(BUF_CLK)을 구동하여 지연고정클록(DLLCLK)으로써 출력하고, 지연종료신호(DELAY_END_CTRL)가 로직'로우'(Low)로 비활성화되는 것에 응답하여 클록 버퍼링부(580)의 출력클록(BUF_CLK)을 구동하지 않음으로써 지연고정클록(DLLCLK)로서 출력하지 않는다.
이때, 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화될 때 지연고정클록 구동부(534)에서 출력되는 지연고정클록(DLLCLK)은, 클록 버퍼링부(580)의 출력클록(BUF_CLK)에 비해 예정된 시간만큼 더 지연된 상태이며, 이때, 예정된 시간은 설계자에 의해 임의로 설정될 수 있지만, 지연고정루프(DLL)회로의 한계 지연량과 동일한 지연량을 갖도록 하는 것이 바람직하다.
그리고, 위상비교부(500)는, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점에서 소스 클록(REFCLK)의 기준에지 - 일반적으로 상승에지(rising edge)를 의미하며, 하강에지(falling edge)가 되어도 상관없음 - 보다 피드백 클록(FBCLK)의 기준에지가 뒤쪽에 위치한 경우 지연고정신호(DELAY_LOCK_CTRL)를 로직'하이'(High)로 활성화시켜 출력하고, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점에서 소스 클록(REFCLK)의 기준에지보다 피드백 클록(FBCLK)의 기준에지가 앞쪽에 위치한 경우 지연고정신호(DELAY_LOCK_CTRL)를 로직'로우'(Low)로 비활성화시켜 출력한다.
그리고, 클록지연부(520)는, 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 다수의 비트로 이루어진 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동하는 지연제어부(522), 및 지연고정코드(DELAY_LOCK_CODE<0:N>) 값에 대응하는 지연량만큼 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하되, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 한계 지연량에 대응하는 값보다 클 경우 지연종료신호(DELAY_END_CTRL)를 활성화시키는 지연라인(524)을 구비한다.
여기서, 클록지연부(520)의 구성요소 중 지연제어부(522)는, 지연고정 동작 이 수행되는 도중에는 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키고. 지연고정 동작이 종료된 이후에는 업데이트 시점 및 지연고정신호(DELAY_LOCK_CTRL)의 값과 상관없이 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키지 않는다.
즉, 클록지연부(520)의 구성요소 중 지연제어부(522)는, 지연고정 동작이 수행되는 도중에는, 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 증가시키고, 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)가 로직'로우'(Low)로 비활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 감소시키게 된다.
그리고, 클록지연부(520)의 구성요소 중 지연라인(524)은, 소스 클록(REFCLK)을 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량만큼 지연시켜 지연고정클록(DLLCLK)으로서 출력하는 동작을 수행하며, 이때, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량은 상대적인 값으로 미리 설정되어 있어야 한다.
예를 들어, 지연고정코드(DELAY_LOCK_CODE<0:N>)가 4비트로 이루어진 신호라고 가정하면, 그 값이 '0 0 0 0'일 때는 그에 대응하여 소스 클록(REFCLK)을 전혀 지연시키지 않고 그대로 지연고정클록(DLLCLK)으로서 출력되도록 설정하고, 그 값이 '0 0 0 1', '0 0 1 0', '0 0 1 1', '0 1 0 0', … 식으로 증가하면 증가할수록 소스 클록(REFCLK)을 더 많이 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정할 수 있다. 이때, 지연고정코드(DELAY_LOCK_CODE<0:N>)는 지연고정 동작의 시작시점에서 미리 설정되는 초기값을 가질 수 있으며, 일반적으로 초기값은 '0 0 0 0'과 같이 가장 작은 값을 선택하지 않고 '0 1 1 0' 과 같이 중간에 위치하는 값을 선택하게 된다.
또한, 도면에 직접적으로 도시되지는 않았지만 지연라인(524)에 다수의 단위지연소자(unit delay)들이 구비되도록 구성하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 증가하면 증가할수록 더 많은 개수의 단위지연소자(unit delay)를 사용하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정하고, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 감소하면 감소할수록 더 적은 개수의 단위지연소자(unit delay)를 사용하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정할 수 있다.
그런데, 지연라인(524)에 구비되는 단위지연소자(unit delay)의 개수는 설계자에 의해 미리 설정될 수 있는 값이며, 설계과정에서 한 번 그 값이 설정된 이후에는 다시 변경시키기 용이한 값이 아니다. 또한, 단위지연소자(unit delay)의 개수가 늘어난다는 것은 곧 면적의 증가를 의미하는 것이므로 모든 경우의 수를 모두 가정하여 그 개수를 마냥 늘려놓는 것은 매우 비효율적이다.
때문에, 지연라인(524)을 통해 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하기까지 선택 가능한 한계 지연량이 존재할 수밖에 없으며, 종래기술에서와 같이 한계 지연량에 도달한 이후에도 소스 클록(REFLCK)과 피드백 클록(FBCLK)의 위상이 동기화되지 않은 상태가 되어 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 계속 증가한다면, 정상적으로 지연고정 동작이 종료되지 못하는 문제가 발생하게 된다.
따라서, 본원발명의 제4 실시예에 따른 지연라인(524)에서 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되기까지 할 수 있는 한계 지연량에 도달하게 되면, 지연종료신호(DELAY_END_CTRL)를 로직'하이'(High)로 활성화시켜 출력한다.
동시에, 클록 구동부(530)에서는, 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 클록 버퍼링부(580)에서 출력되는 클록(BUF_CLK)을 소스 클록(REFCLK)으로서 구동하지 않음으로써 소스 클록(REFCLK)을 더 이상 토글링 시키지 않고, 동시에, 클록 버퍼링부(580)에서 출력되는 클록(BUF_CLK)이 지연고정클록(DLLCLK)으로서 직접 구동되도록 함으로써, 한계 지연량에 도달하여 필요가 없어진 지연고정루프(DLL)회로의 나머지 구성요소들 - 위상비교부(500), 클록지연부(520), 지연복제모델부(540) - 이 동작하지 않는 상태에서도 정상적으로 토글링하는 지연고정클록(DLLCLK)이 출력되도록 할 수 있다. 즉, 특정조건에서 클록 버퍼링부(580)에서 출력되는 클록(BUF_CLK)을 지연고정클록(DLLCLK)으로 직접 구동함으로써 지연고정 동작으로 인해 소모되는 전류량을 완전히 제거할 수 있다.
이렇게, 본원발명의 제4 실시예를 레지스터 제어형 지연고정루프(DLL)회로에 적용하게 되면, 지연고정 동작이 수행되는 중에 소스 클록(REFCLK)과 출력되는 지 연고정클록(DLLCLK)간의 위상차이가 최대 값에 도달하는지를 감지한 결과에 따라 레지스터 제어형 지연고정루프회로의 동작을 온/오프 제어함으로써, 레지스터 제어형 지연고정루프회로의 동작으로 인해 발생하는 전류의 소모를 완전히 제거할 수 있다.
이때, 본원발명의 제4 실시예에서 지연라인(524)이 한계 지연량에 도달하여 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화된다고 하여도 클록 버퍼링부(580)에서 출력되는 클록(BUF_CLK)을 지연고정클록(DLLCLK)으로 직접 구동하는 것일 뿐, 출력되는 지연고정클록(DLLCLK)과 외부클록(CLK, CLK#)의 위상이 동기화된 상태가 아니기 때문에 내부 데이터 출력부(590)에서 출력되는 데이터(DQ DATA)의 위상이 외부 클록(CLK, CLK#)에 완전히 동기된 상태가 될 수 없다. 그럼에도 불구하고 본원발명의 제4 실시예에 따른 지연고정 동작이 효과적인 이유는 지연고정루프(DLL)회로의 동작이 일반적으로 도 7에 도시된 바와 같기 때문이다.
구체적으로 도 7을 참조하면, 도 7은 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK) - 실제로는 외부 클록(CLK, CLK#)과 소스 클록(REFCLK)의 위상이 약간 차이가 있을 수 있음 - 의 주파수가 상대적으로 높은 주파수(High frequency)를 갖는 경우(A)와, 상대적으로 낮은 주파수(Low frequency)를 갖는 경우(B)로 나뉘어져 있는 것을 알 수 있다.
그 중, 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 주파수(High frequency)를 갖는 경우(A)를 먼저 살펴보면, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으 로 높은 상태이기 때문에 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)도 상대적으로 짧은 상태인 것을 알 수 있다.
이때, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 피드백 클록(FBCLK)의 기준에지의 위상 차이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어설 수 없으므로, 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어서지 못하는 상태가 되는 것을 알 수 있다.
즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 상태에서는 피드백 클록(FBCLK)을 상대적으로 조금만 지연시켜도 지연고정 동작이 종료될 수 있으므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하지 않고도 지연고정 동작이 종료되는 것이 가능하다는 것을 알 수 있다.
반대로, 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 주파수(Low frequency)를 갖는 경우(B)를 살펴보면, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태이기 때문에 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)도 상대적으로 긴 상태인 것을 알 수 있다.
이때, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 피드백 클록(FBCLK)의 기준에지의 위상 차이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어설 수 없으므로, 피드백 클록(FBCLK)의 기준에지가 외부 클 록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어서지 못하는 상태가 되는 것을 알 수 있다.
때문에, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)가 매우 긴 상태이므로 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이도 매우 길어져야 하는 것을 알 수 있다.
즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태에서는 피드백 클록(FBCLK)을 상대적으로 매우 많이 지연시켜야만 지연고정 동작이 종료될 수 있으므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하고도 지연고정 동작이 종료될 수 없는 상태가 존재할 수 있다는 것을 알 수 있다.
이렇게, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태에서는 피드백 클록(FBCLK)의 기준에지와 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지가 완전히 동기화되는 것이 불가능한 상태가 존재하지만, 본원발명의 제4 실시예에 따른 지연고정루프(DLL)회로에서는 이를 감지하여, 클록 버퍼링부(580)에서 출력되는 클록(BUF_CLK)을 지연고정클록(DLLCLK)으로 직접 구동함으로써, 지연고정클록(DLLCLK)이 클록 버퍼링부(580)에서 출력되는 클록(BUF_CLK)에 대비하여 지연고정루프(DLL)회로의 한계 지연량만큼 지연된 상태로 출력되도록 하게 되면, 피드백 클록(FBCLK)의 기준에지와 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지가 크게 차이나지 않는 지점까지 진행되어 있는 상태 와 마찬가지로, 외부클록(CLK, CLK#)의 기준에지와 지연고정클록(DLLCLK)의 기준에지가 크게 차이나지 않는 지점까지 진행된 상태가 되도록 할 수 있다.
즉, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하고도 지연고정 동작이 종료될 수 없는 상태라는 것은 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태라는 것과 동일한 상태이며, 이는, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 출력 주파수 또한 상대적으로 낮은 상태라는 것을 의미하므로, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 스큐(skew)가 약간 차이가 난다고 해도 그 값을 인식하는 데에는 큰 문제가 없는 상태라는 것을 의미한다.
따라서, 본원발명의 제4 실시예에 따른 지연고정 동작이 적용된 지연고정루프(DLL)회로에서 지연종료신호(DELAY_END_CTRL)가 로직'하이'(High)로 활성화되어 클록 버퍼링부(580)에서 출력되는 클록(BUF_CLK)을 지연고정클록(DLLCLK)으로 직접 구동하는 동작이 발생하는 경우는, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)이 상대적으로 낮은 주파수를 갖는 상태, 즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)가 매우 긴 상태가 되는 경우뿐이므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용한 상태에서 소스 클록(REFCLK)과 피드백 클록(FBCLK)간에 발생하는 위상차이에 대응하는 길이정도는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)의 길이에 대비하면 매우 짧은 길이에 불과하므로, 클록 구동부(530)에 의해 외부클록(CLK, CLK#)을 지연고정루프(DLL)회로의 한계 지연량만큼 지연된 지연고정클록(DLLCLK)을 사용하여 내부 데이터 출력부(590) 에서 데이터(DQ DATA)를 출력한다고 하여도 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 값을 인식하는 부분에서는 아무런 영향을 끼치지 않는다.
(제5 실시예)
도 6은 본 발명의 제5 실시예에 따른 레지스터 제어형 지연고정루프(DLL)회로를 도시한 블록 다이어그램이다.
도 6을 참조하면, 외부에서 인가되는 클록(CLK, CLK#)을 버퍼링하기 위한 클록 버퍼링부(680)와, 클록 인에이블 신호(CKE)에 응답하여 클록 버퍼링부(680)의 출력클록(BUF_CLK)을 구동하여 소스 클록(REFCLK)으로서 출력하기 위한 소스 클록 구동부(660)와, 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상을 비교하고, 비교결과에 대응하여 지연고정신호(DELAY_LOCK_CTRL) 및 제1 지연종료신호(DELAY_END_1)를 생성하기 위한 위상비교부(600)와, 지연고정을 이루기 위해 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로써 출력하되, 한계 지연량에 도달하는 것에 응답하여 제2 지연종료신호(DELAY_END_2)를 생성하기 위한 클록지연부(620)와, 지연고정클록(DLLCLK)에 소스 클록(REFCLK)의 실제 출력 경로의 지연시간을 반영하여 피드백 클록(FBCLK)으로서 출력하기 위한 지연복제모델부(640)와, 제1 지연종료신호(DELAY_END_1) 및 제2 지연종료신호(DELAY_END_2)에 응답하여 지연고정 동작을 종료시키기 위한 지연고정동작 제어부(650)를 구비한다.
여기서, 클록 버퍼링부(680)는, 외부에서 인가되는 클록(CLK, CLK#)을 버퍼링하여 내부에서 사용되는 클록(BUF_CLK)을 생성하는 동작을 수행한다.
그리고, 소스 클록 구동부(660)는, 클록 인에이블 신호(CKE)가 활성화된 구간에서 버퍼링된 클록(BUF_CLK)을 소스 클록(REFCLK)으로서 출력하는 동작을 수행하고, 클록 인에이블 신호(CKE)가 비활성화된 구간에서 버퍼링된 클록(BUF_CLK)을 소스 클록(REFCLK)으로서 출력하는 동작을 수행하지 않는다. 즉, 클록 인에이블 신호(CKE)가 활성화된 구간에서는 소스 클록(REFCLK)이 버퍼링된 클록(BUF_CLK)과 동일하게 토글링하는 상태가 되지만, 클록 인에이블 신호(CKE)가 비활성화된 구간에서는 버퍼링된 클록(BUF_CLK)의 토글링과 상관없이 소스 클록(REFCLK)은 토글링하지 않는다.
참고로, 클록 인에이블 신호(CKE)의 경우, 반도체 메모리 장치의 노말한 동작에서 항상 활성화된 상태를 유지하다가 반도체 메모리 장치의 파워 소모를 줄이기 위해 진입할 수 있는 파워 다운 모드(Power Down Mode)와 같은 특수한 동작모드에서 비활성화될 수 있다.
그리고, 위상비교부(600)는, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점에서 소스 클록(REFCLK)의 기준에지 - 일반적으로 상승에지(rising edge)를 의미하며, 하강에지(falling edge)가 되어도 상관없음 - 보다 피드백 클록(FBCLK)의 기준에지가 뒤쪽에 위치한 경우 지연고정신호(DELAY_LOCK_CTRL)를 로직'하이'(High)로 활성화시켜 출력하고, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점에서 소스 클록(REFCLK)의 기준에지보다 피드백 클록(FBCLK)의 기준에지가 앞쪽에 위치한 경우 지연고정신호(DELAY_LOCK_CTRL)를 로직'로우'(Low)로 비활성화시켜 출력한다.
또한, 위상비교부(600)는, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점이 예정된 횟수만큼 반복될 동안 지연고정신호(DELAY_LOCK_CTRL)가 반복적으로 로직'하이'(High)의 활성화상태와 로직'로우'(Low)의 비활성화상태 사이를 천이할 때, 제1 지연종료신호(DELAY_END_1)를 로직'하이'(High)로 활성화시킨다.
또한, 위상비교부(600)는, 지연고정 동작이 수행되는 중일 때 예정된 주기로 반복되는 업데이트 시점이 예정된 횟수만큼 반복될 동안 지연고정신호(DELAY_LOCK_CTRL)가 로직'하이'(High)의 활성화 상태 또는 로직'로우'(Low)의 비활성화상태를 유지할 때, 제1 지연종료신호(DELAY_END_1)를 로직'로우'(Low)로 비활성화시킨다.
그리고, 지연고정동작 제어부(650)는, 제1 지연종료신호(DELAY_END_1)와 제2 지연종료신호(DELAY_END_2) 중 적어도 어느 하나의 신호가 로직'하이'(High)로 활성화되는 것에 응답하여 출력되는 글로벌 지연종료신호(GLOBAL_DELAY_END)를 로직'하이'(High)로 활성화시킴으로써 클록지연부(620)의 지연량을 고정시켜 지연고정 동작을 종료시킨다.
즉, 지연고정동작 제어부(650)는, 제1 지연종료신호(DELAY_END_1)와 제2 지연종료신호(DELAY_END_2)가 모두 로직'로우'(Low)로 비활성화될 때에만 글로벌 지연종료신호(GLOBAL_DELAY_END)가 로직'로우'(Low)로 비활성화시킴으로써 지연고정 동작이 계속 수행되어 클록지연부(620)의 지연량이 변동할 수 있도록 한다.
참고로, 도면에 직접적으로 도시되어 있지 않지만, 지연고정동작 제어부(650)의 상세회로는, 제1 지연종료신호(DELAY_END_1)와 제2 지연종료신호(DELAY_END_2)를 입력받기 위한 노아 게이트, 및 노아게이트의 출력신호를 입력받아 글로벌 지연종료신호(GLOBAL_DELAY_END)로서 출력하기 위한 인버터를 구비한다.
그리고, 클록지연부(620)는, 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 다수의 비트로 이루어진 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동하되, 지연고정동작 제어부(650)의 출력신호(GLOBAL_DELAY_END)에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 고정하는 지연제어부(622), 및 지연고정코드(DELAY_LOCK_CODE<0:N>) 값에 대응하는 지연량만큼 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하되, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 한계 지연량에 대응하는 값보다 클 경우 제2 지연종료신호(DELAY_END_2)를 활성화시키는 지연라인(624)을 구비한다.
여기서, 클록지연부(620)의 구성요소 중 지연제어부(622)는, 지연고정 동작이 수행되는 중이고 지연고정동작 제어부(650)의 출력신호(GLOBAL_DELAY_END)가 로직'로우'(Low)로 비활성화된 상태에서는, 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키고. 지연고정 동작이 수행되는 중이고 지연고정동작 제어부(650)의 출력신호(GLOBAL_DELAY_END)가 로직'하이'(High)로 활 성화된 상태에서는, 업데이트 시점 및 지연고정신호(DELAY_LOCK_CTRL)의 값과 상관없이 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키지 않으며, 지연고정 동작이 종료된 이후에는 업데이트 시점 및 지연고정신호(DELAY_LOCK_CTRL)의 값과 상관없이 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 변동시키지 않는다.
즉, 클록지연부(620)의 구성요소 중 지연제어부(622)는, 지연고정 동작이 수행되는 중이고 지연고정동작 제어부(650)의 출력신호(GLOBAL_DELAY_END)가 로직'로우'(Low)로 비활성화된 상태에서는, 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)가 로직'하이'(High)로 활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 증가시키고, 예정된 주기로 반복되는 업데이트 시점마다 지연고정신호(DELAY_LOCK_CTRL)가 로직'로우'(Low)로 비활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 감소시키게 된다.
그리고, 클록지연부(620)의 구성요소 중 지연라인(624)은, 소스 클록(REFCLK)을 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량만큼 지연시켜 지연고정클록(DLLCLK)으로서 출력하는 동작을 수행하며, 이때, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값에 대응하는 지연량은 상대적인 값으로 미리 설정되어 있어야 한다.
예를 들어, 지연고정코드(DELAY_LOCK_CODE<0:N>)가 4비트로 이루어진 신호라고 가정하면, 그 값이 '0 0 0 0'일 때는 그에 대응하여 소스 클록(REFCLK)을 전혀 지연시키지 않고 그대로 지연고정클록(DLLCLK)으로서 출력되도록 설정하고, 그 값이 '0 0 0 1', '0 0 1 0', '0 0 1 1', '0 1 0 0', … 식으로 증가하면 증가할수록 소스 클록(REFCLK)을 더 많이 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정할 수 있다. 이때, 지연고정코드(DELAY_LOCK_CODE<0:N>)는 지연고정 동작의 시작시점에서 미리 설정되는 초기값을 가질 수 있으며, 일반적으로 초기값은 '0 0 0 0'과 같이 가장 작은 값을 선택하지 않고 '0 1 1 0' 과 같이 중간에 위치하는 값을 선택하게 된다.
또한, 도면에 직접적으로 도시되지는 않았지만 지연라인(624)에 다수의 단위지연소자(unit delay)들이 구비되도록 구성하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 증가하면 증가할수록 더 많은 개수의 단위지연소자(unit delay)를 사용하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정하고, 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 감소하면 감소할수록 더 적은 개수의 단위지연소자(unit delay)를 사용하여 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되도록 설정할 수 있다.
그런데, 지연라인(624)에 구비되는 단위지연소자(unit delay)의 개수는 설계자에 의해 미리 설정될 수 있는 값이며, 설계과정에서 한 번 그 값이 설정된 이후에는 다시 변경시키기 용이한 값이 아니다. 또한, 단위지연소자(unit delay)의 개수가 늘어난다는 것은 곧 면적의 증가를 의미하는 것이므로 모든 경우의 수를 모두 가정하여 그 개수를 마냥 늘려놓는 것은 매우 비효율적이다.
때문에, 지연라인(624)을 통해 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력하기까지 선택 가능한 한계 지연량이 존재할 수밖에 없으며, 종래기술에서와 같이 한계 지연량에 도달한 이후에도 소스 클록(REFLCK)과 피드백 클록(FBCLK)의 위상이 동기화되지 않은 상태가 되어 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값이 계속 증가한다면, 정상적으로 지연고정 동작이 종료되지 못하는 문제가 발생하게 된다.
따라서, 본원발명의 제5 실시예에 따른 지연라인(624)에서 소스 클록(REFCLK)을 지연시켜 지연고정클록(DLLCLK)으로서 출력되기까지 할 수 있는 한계 지연량에 도달하게 되면, 제2 지연종료신호(DELAY_END_2)를 로직'하이'(High)로 활성화시켜 출력한다.
동시에, 지연고정동작 제어부(650)에서는 제2 지연종료신호(DELAY_END_2)가 로직'하이'(High)로 활성화되는 것에 응답하여 출력되는 신호(DELAY_LOCK_END)를 로직'하이'(High)로 활성화시켜 출력하고, 지연제어부(622)에서는 지연고정동작 제어부(650)의 출력신호(GLOBAL_DELAY_END)가 로직'하이'(High)로 활성화되는 것에 응답하여 지연고정코드(DELAY_LOCK_CODE<0:N>)의 값을 고정시킴으로써, 지연고정 동작이 강제로 종료되도록 할 수 있다.
이렇게, 본원발명의 제5 실시예를 레지스터 제어형 지연고정루프(DLL)회로에 적용하게 되면, 지연고정 동작이 수행되는 중에 소스 클록(REFCLK)과 출력되는 지연고정클록(DLLCLK)간의 위상차이가 최대 값에 도달하는지를 감지한 결과에 따라 레지스터 제어형 지연고정루프회로의 지연고정동작을 강제로 종료함으로써, 레지스터 제어형 지연고정루프(DLL)회로의 지연고정동작이 무한대로 반복되는 것을 방지할 수 있다.
이때, 본원발명의 제5 실시예에서 지연라인(624)이 한계 지연량에 도달하여 지연고정동작 제어부(650)의 출력신호(GLOBAL_DELAY_END)가 로직'하이'(High)로 활성화된다고 하여도 지연고정 동작이 종료되는 것일 뿐 소스 클록(REFCLK)과 피드백 클록(FBCLK)의 위상이 동기화된 상태가 아니기 때문에 내부 데이터 출력부(690)에서 출력되는 데이터(DQ DATA)의 위상이 외부 클록(CLK, CLK#)에 완전히 동기된 상태가 될 수 없다. 그럼에도 불구하고 본원발명의 제5 실시예에 따른 지연고정 동작이 효과적인 이유는 지연고정루프(DLL)회로의 동작이 일반적으로 도 7에 도시된 바와 같기 때문이다.
구체적으로 도 7을 참조하면, 도 7은 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK) - 실제로는 외부 클록(CLK, CLK#)과 소스 클록(REFCLK)의 위상이 약간 차이가 있을 수 있음 - 의 주파수가 상대적으로 높은 주파수(High frequency)를 갖는 경우(A)와, 상대적으로 낮은 주파수(Low frequency)를 갖는 경우(B)로 나뉘어져 있는 것을 알 수 있다.
그 중, 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 주파수(High frequency)를 갖는 경우(A)를 먼저 살펴보면, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 상태이기 때문에 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)도 상대적으로 짧은 상태인 것을 알 수 있다.
이때, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 피드백 클록(FBCLK)의 기준에지의 위상 차이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어설 수 없으므로, 피드백 클록(FBCLK)의 기준에지가 외부 클 록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어서지 못하는 상태가 되는 것을 알 수 있다.
즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 높은 상태에서는 피드백 클록(FBCLK)을 상대적으로 조금만 지연시켜도 지연고정 동작이 종료될 수 있으므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하지 않고도 지연고정 동작이 종료되는 것이 가능하다는 것을 알 수 있다.
반대로, 지연고정루프(DLL)회로로 입력되는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 주파수(Low frequency)를 갖는 경우(B)를 살펴보면, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태이기 때문에 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)도 상대적으로 긴 상태인 것을 알 수 있다.
이때, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 피드백 클록(FBCLK)의 기준에지의 위상 차이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어설 수 없으므로, 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)를 넘어서지 못하는 상태가 되는 것을 알 수 있다.
때문에, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)가 매우 긴 상태이므로 피드백 클록(FBCLK)의 기준에지가 외부 클록(CLK, CLK#) 및 소스 클 록(REFCLK)의 기준에지와 동기화되기 위해서 피드백 클록(FBCLK)을 지연시킨 지연량의 길이도 매우 길어져야 하는 것을 알 수 있다.
즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태에서는 피드백 클록(FBCLK)을 상대적으로 매우 많이 지연시켜야만 지연고정 동작이 종료될 수 있으므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하고도 지연고정 동작이 종료될 수 없는 상태가 존재할 수 있다는 것을 알 수 있다.
이렇게, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태에서는 피드백 클록(FBCLK)의 기준에지와 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지가 완전히 동기화되는 것이 불가능한 상태가 존재하지만, 본원발명의 제5 실시예에 따른 지연고정루프(DLL)회로에서는 이를 감지하여, 강제로 지연고정 동작을 종료시키며, 비록, 지연고정 동작이 종료된 상태이지만, 피드백 클록(FBCLK)의 기준에지와 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 기준에지가 크게 차이나지 않는 지점까지 진행되어 있는 상태라는 것을 알 수 있다.
즉, 지연고정루프(DLL)회로의 한계 지연량을 다 사용하고도 지연고정 동작이 종료될 수 없는 상태라는 것은 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 주파수가 상대적으로 낮은 상태라는 것과 동일한 상태이며, 이는, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 출력 주파수 또한 상대적으로 낮은 상태라는 것을 의미하므로, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 스큐(skew)가 약간 차이가 난다고 해도 그 값을 인식하는 데에는 큰 문제가 없는 상태라는 것을 의미한다.
따라서, 본원발명의 제5 실시예에 따른 지연고정 동작이 적용된 지연고정루프(DLL)회로에서 제2 지연종료신호(DELAY_END_2)가 로직'하이'(High)로 활성화되어 지연고정 동작이 강제로 종료되는 경우는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)이 상대적으로 낮은 주파수를 갖는 상태, 즉, 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)가 매우 긴 상태가 되는 경우뿐이므로, 지연고정루프(DLL)회로의 한계 지연량을 다 사용한 상태에서 소스 클록(REFCLK)과 피드백 클록(FBCLK)간에 발생하는 위상차이에 대응하는 길이정도는 외부 클록(CLK, CLK#) 및 소스 클록(REFCLK)의 한 주기(tck)의 길이에 대비하면 매우 짧은 길이에 불과하므로, 지연고정루프(DLL)회로의 동작에 의해 출력되는 데이터(DQ DATA)의 값을 인식하는 부분에서는 아무런 영향을 끼치지 않는다.
이상에서 살펴본 바와 같이 본 발명의 실시예를 적용하면, 레지스터 제어형 지연고정루프회로로 입력되는 소스 클록(REFCLK)과 출력되는 지연고정클록(DLLCLK)간의 위상차이가 최대 값에 도달하는지를 감지한 결과에 따라 레지스터 제어형 지연고정루프회로의 지연고정동작을 강제로 종료함으로써, 레지스터 제어형 지연고정루프회로의 지연고정동작이 무한대로 반복되는 것을 방지할 수 있다.
또한, 감지한 결과에 따라 레지스터 제어형 지연고정루프회로로 공급되는 전원전압의 전압레벨을 조절함으로써, 레지스터 제어형 지연고정루프회로의 지연고정루프 동작으로 인해 소모되는 전류의 크기를 최소한으로 유지할 수 있다.
또한, 감지한 결과에 따라 반도체 메모리 장치의 코어영역에서 출력되는 내 부데이터를 외부로 구동시켜줌으로써, 레지스터 제어형 지연고정루프회로 동작의 신뢰성을 향상시킬 수 있다.
또한, 감지한 결과에 따라 레지스터 제어형 지연고정루프회로의 동작을 온/오프 제어함으로써, 레지스터 제어형 지연고정루프회로의 동작으로 인해 발생하는 전류의 소모를 완전히 제거할 수 있다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속한 기술분야에서 통상의 지식을 가진자에게 있어 명백할 것이다.
예컨대, 전술한 실시예에서 예시한 논리 게이트 및 트랜지스터는 입력되는 신호의 극성에 따라 그 위치 및 종류가 다르게 구현되어야 할 것이다.