상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 데이터 트레이닝 방법은, (a)소정의 데이터 패턴으로부터 제1 에러 검출 코드를 생성하는 단 계, (b)상기 데이터 패턴을 상기 메모리 장치로 전송하는 단계, (c)상기 전송된 데이터 패턴으로부터 제2 에러 검출 코드를 생성하는 단계, (d)상기 제1 에러 검출 코드와 상기 제2 에러 검출 코드를 비교하는 단계, (e)상기 데이터 패턴을 소정 시간 동안 지연시킨 후, 상기 (a) 내지 (d) 단계를 반복하는 단계, 및 (f)상기 비교 결과에 근거하여 스큐를 최소화시킬 수 있는 데이터 지연 시간을 결정하는 단계를 구비하는 것을 특징으로 한다.
바람직하게는, 상기 (b) 단계는, (b1)AC(Alternating Current) 데이터 패턴을 하나의 데이터 전송 라인을 통해 전송하는 단계; 및 (b2)DC(Direct Current) 데이터 패턴을 나머지 데이터 전송 라인을 통해 전송하는 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 제1 에러 검출 코드 및 상기 제2 에러 검출 코드는, CRC(Cyclic Redundancy Check) 코드인 것을 특징으로 한다.
바람직하게는, (g)상기 비교 결과에 근거하여 에러 발생 빈도를 계산하는 단계; 및 (h)상기 계산된 에러 발생 빈도에 상응하게 상기 데이터 트레이닝의 실행 주기를 조절하는 단계가 부가되는 것을 특징으로 한다.
바람직하게는, 상기 메모리 장치로 전송된 데이터 패턴은, 상기 메모리 장치의 내부에 구비된 메모리 셀에 저장되지 않는 것을 특징으로 한다.
바람직하게는, 상기 (e) 단계는 상기 데이터 패턴을 상기 메모리 장치의 내부 클록 신호 주기의 1/N 단위로 순차적으로 지연시키는 것을 특징으로 한다.
본 발명의 다른 실시예에 따른 데이터 트레이닝 방법은, (a)에러 검출 코드 가 포함된 소정의 데이터 패턴을 메모리 컨트롤러로부터 상기 메모리 장치로 전송하는 단계, (b)상기 메모리 장치 내에서 상기 전송된 데이터 패턴의 에러 발생 여부를 검출하는 단계, (c)상기 에러 발생 여부를 나타내는 에러 검출 비트를 상기 메모리 컨트롤러로 전송하는 단계, (d)상기 에러 검출 코드가 포함된 소정의 데이터 패턴을 소정 시간 동안 지연시킨 후, 상기 (a) 내지 (c) 단계를 반복하는 단계, 및 (e)상기 오류 검출 비트에 근거하여 스큐를 최소화시킬 수 있는 데이터 지연 시간을 결정하는 단계를 포함하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 시스템은, 소정의 데이터 패턴으로부터 제1 에러 검출 코드를 검출하고, 상기 데이터 패턴을 메모리 장치로 전송하는 메모리 컨트롤러, 및 상기 전송된 데이터 패턴으로부터 제2 에러 검출 코드를 검출하고, 상기 제2 에러 검출 코드를 상기 메모리 컨트롤러로 전송하는 메모리 장치를 구비하며, 상기 메모리 컨트롤러는, 상기 데이터 패턴을 소정 시간 동안 지연시켜 상기 메모리 장치로 전송하며, 상기 제1 에러 검출 코드 및 상기 제2 에러 검출 코드의 비교 결과에 근거하여 스큐를 최소화시킬 수 있는 데이터 지연 시간을 결정하는 것을 특징으로 한다.
바람직하게는, 상기 메모리 컨트롤러는, 상기 메모리 컨트롤러는, 상기 데이터 패턴의 지연 시간을 제어하기 위한 제어 신호를 생성하고, 상기 제1 에러 검출 코드 및 상기 제2 에러 검출 코드의 일치 여부를 비교하며, 그 비교 결과에 근거하여 상기 스큐를 최소화시킬 수 있는 데이터 지연 시간을 결정하는 데이터 트레이닝 컨트롤러, 상기 제어 신호에 응답하여 클록 신호를 소정 시간 동안 지연시켜 지연 된 클록 신호를 생성하는 타이밍 컨트롤러, 상기 데이터 패턴을 상기 지연된 클록 신호에 동기시켜 출력함으로써, 지연된 데이터 패턴을 생성하는 데이터 지연부, 및 상기 지연된 데이터 패턴으로부터 상기 제1 에러 검출 코드를 생성하는 제1 에러 검출 코드 생성부를 구비하는 것을 특징으로 한다.
바람직하게는, 상기 메모리 컨트롤러는, 상기 메모리 컨트롤러는, 상기 비교 결과에 근거하여 에러 발생 빈도를 계산하는 에러 발생 빈도 계산부를 더 구비하며, 상기 데이터 트레이닝 컨트롤러는, 상기 계산된 에러 발생 빈도에 상응하게 상기 데이터 트레이닝의 실행 주기를 조절하는 것을 특징으로 한다.
본 발명의 다른 실시예에 따른 시스템은, 에러 검출 코드가 포함된 소정의 데이터 패턴을 출력하는 메모리 컨트롤러, 및 상기 데이터 패턴을 입력받아 에러 발생 여부를 검출하고, 상기 에러 발생 여부를 나타내는 에러 검출 비트를 상기 메모리 컨트롤러로 전송하는 메모리 장치를 구비하며, 상기 메모리 컨트롤러는, 상기 데이터 패턴을 소정 시간 동안 지연시켜 상기 메모리 장치로 전송하며, 상기 에러 검출 비트에 근거하여 스큐를 최소화시킬 수 있는 데이터 지연 시간을 결정하는 것을 특징으로 한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는, 본 발명의 바람직한 실시예를 나타내는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지의 구성 또는 기능에 대한 구체적인 설 명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
도 2는 본 발명의 일 실시예에 따른 데이터 트레이닝 방법을 나타내는 플로우챠트이다.
데이터 트레이닝을 수행할 하나의 데이터 핀을 선택한다. 그 후 데이터 지연 시간(j)을 최소로 설정한다(S1100). 바람직한 최소 지연 시간(t_min)은 0이다. 상기 데이터 지연 시간(j)은 제어 신호에 의해 제어되는 버퍼를 통해 조절할 수 있다. 그 후 소정의 데이터 패턴으로부터 제1 EDC(Error Detection Code)를 생성한다(S1110). 상기 데이터 패턴은 메모리 장치로 전송되기 전의 데이터 패턴이다.
상기 제1 EDC는 CRC(Cyclic Redundancy Check) 방식에서 사용되는 CRC 코드인 것이 바람직하다. 상기 CRC 방식은 신뢰도가 높고 에러 검출을 위한 오버헤드가 적으며, 랜덤 에러나 버스트 에러를 포함한 에러의 검출에 매우 좋은 성능을 가지므로 통신 분야에서 널리 사용된다. CRC 코드의 생성 방법에 대해서는 후술한다.
그 후, 상기 데이터 패턴을 상기 선택된 데이터 핀을 통해 상기 메모리 장치로 전송한다(S1120). 상기 메모리 장치는 상기 전송된 데이터 패턴으로부터 제2 EDC를 생성한다(S1130). 마찬가지로, 상기 제2 EDC는 CRC 코드인 것이 바람직하다. 여기서, 상기 전송된 데이터 패턴은 상기 메모리 장치의 내부에 구비된 메모리 셀에 저장되지 않도록 제어된다.
그 후, 상기 제1 EDC와 제2 EDC를 비교하여 일치 여부를 판단한다(S1140,S1150). 상기 단계들은 하나의 사이클(Cycle)을 구성한다.
일치하는 경우, 상기 데이터 지연 시간(j)을 한 단계 증가시킨 후(S1160), 다음 사이클을 진행한다. 일치하지 않는 경우, 그때의 지연 시간(t_err)을 저장한다(S1170). 상기 저장된 지연 시간(t_err)은 상기 데이터 패턴의 전송 과정에서 스큐로 인한 에러가 발생했을 때의 지연 시간을 나타낸다.
그 후, 상기 지연 시간(j)이 최대에 도달했는지를 판단한다(S1180). 다시 말해, 상기 사이클이 미리 정해진 횟수에 도달했는지를 판단한다. 상기 최대 지연 시간(t_max)은 사용자에 의해 설정되며, 최소 지연 시간(t_min)과 최대 지연 시간(t_max)의 차이가 클록 신호 주기와 동일한 것이 바람직하다.
최대 지연 시간(t_max)에 도달하지 않은 경우, 도달할 때까지 상기 단계들을 반복한다. 최대 지연 시간(t_max)에 도달한 경우, 상기 저장된 지연 시간(t_err)에 근거하여 스큐를 최소화시킬 수 있는 최적화된 지연 시간(t_opt)을 결정한다(S1190). 그 후 최적화된 지연 시간(t_opt)을 선택된 데이터 핀에 대한 기본 세팅 값으로 설정한다. 여기서, 최적화된 지연 시간(t_opt)은 각각의 데이터와 클록 신호 사이의 시간 마진이 최대가 되는 시간을 의미한다.
도 3은 본 발명의 다른 실시예에 따른 데이터 트레이닝 방법을 나타내는 플로우챠트이다.
데이터 트레이닝을 수행할 하나의 데이터 핀을 선택한다. 그 후 소정의 데이터 패턴으로부터 에러 검출 코드(EDC:Error Detection Code)를 생성한다. 그 후 상기 데이터 패턴에 에러 검출 코드를 부가한다(S1200). 상기 에러 검출 코드는 CRC(Cyclic Redundancy Check) 코드인 것이 바람직하다. 상기 CRC 코드를 생성하는 방법을 설명하면 다음과 같다.
생성 다항식(Generator polynomial) G(x)를 선택한다. 상기 생성 다항식 G(x)은 CRC 표준안인 CRC-16, CRC-CCITT, CRC-32 중에서 선택될 수 있다. 상기 데이터 패턴에 상기 CRC 코드 비트 수만큼 차수를 곱하여 다항식 M(x)를 생성한다. 상기 생성된 다항식 M(x)를 상기 선택된 생성 다항식 G(x)로 나누어 나머지를 구한다. 여기서, 나머지가 CRC 코드가 된다.
그 후, 데이터 지연 시간(j)을 최소로 설정한다(S1210). 바람직한 최소 지연 시간(t_min)은 0이다. 상기 데이터 지연 시간(j)은 제어 신호에 의해 제어되는 버퍼를 통해 조절할 수 있다.
그 후, 상기 에러 검출 코드가 포함된 데이터 패턴(이하, 코드워드)을 상기 선택된 데이터 핀을 통해 상기 메모리 장치로 전송한다(S1220). 상기 메모리 장치는 상기 전송된 코드워드로부터 신드롬(Syndrome)을 생성한다. 상기 신드롬은 상기 코드워드를 상기 생성 다항식 G(x)로 나눈 나머지 값을 의미한다.
상기 신드롬이 0이면 에러가 발생하지 않는 것으로 판단한다. 반면, 상기 신드롬이 0이 아니면 에러가 발생한 것으로 판단한다. 상기 신드롬에 근거하여 에러 발생 유무를 나타내는 에러 검출 비트를 생성한다(S1230). 상기 에러 검출 비트는 1비트인 것이 바람직하다.
그 후, 생성된 에러 검출 비트를 메모리 컨트롤러로 전송한다(S1240). 상기 메모리 컨트롤러는 상기 전송된 에러 검출 비트를 통해 에러 발생 유무를 판단한다(S1250). 상기 단계들은 하나의 사이클(Cycle)을 구성한다.
에러가 발생하지 않은 경우, 상기 데이터 지연 시간(j)을 한 단계 증가시킨 후(S1260), 다음 사이클을 진행한다. 에러가 발생한 경우, 그때의 지연 시간(t_err)을 저장한다. 상기 저장된 지연 시간(t_error)은 상기 코드워드의 전송 과정에서 스큐로 인한 에러가 발생했을 때의 지연 시간을 나타낸다.
그 후, 상기 지연 시간(j)이 최대에 도달했는지를 판단한다(S1280). 다시 말해, 상기 사이클이 미리 정해진 횟수에 도달했는지를 판단한다. 상기 최대 지연 시간(t_max)은 사용자에 의해 설정되며, 최소 지연 시간(t_min)과 최대 지연 시간(t_max)의 차이가 클록 신호 주기와 동일한 것이 바람직하다.
최대 지연 시간(t_max)에 도달하지 않은 경우, 도달할 때까지 상기 단계들을 반복한다. 최대 지연 시간(t_max)에 도달한 경우, 상기 저장된 지연 시간(t_err)에 근거하여 스큐를 최소화시킬 수 있는 최적화된 지연 시간(t_opt)을 결정한다(S1290). 그 후 최적화된 지연 시간(t_opt)을 선택된 데이터 핀에 대한 기본 세팅 값으로 설정한다. 여기서, 최적화된 지연 시간(t_opt)은 각각의 데이터와 클록 신호 사이의 시간 마진이 최대가 되는 시간을 나타낸다.
도 4는 본 발명의 또 다른 실시예에 따른 데이터 트레이닝 방법을 나타내는 플로우챠트이다.
데이터 트레이닝을 수행할 하나의 데이터 핀을 선택한다(S1300). 선택된 데이터 핀에 AC(Alternating Current) 데이터 패턴을 인가한다(S1310). 상기 AC 데이터 패턴은 토글링(Toggling)이 존재하는 데이터 패턴이다. 또한 전송 과정에서 왜곡 또는 지연이 발생할 수 있는 데이터 패턴이다.
그 후 나머지 데이터 핀에 DC(Direct Current) 데이터 패턴을 인가한다(S1320). 상기 DC 데이터 패턴은 토글링이 존재하지 않는 데이터 패턴이다. 또한 전송 과정에서 왜곡 또는 지연이 발생할 수 없는 데이터 패턴이다. 예를 들면, 상기 DC 데이터 패턴은 논리 "H"의 데이터가 연속적으로 배열되거나, 논리 "L"인 데이터가 연속적으로 배열된 데이터 패턴이다.
상술한 방법으로 에러 발생 유무를 판단한다. 즉, 메모리 컨트롤러 및 메모리 장치에서 각각 에러 검출 코드를 생성하여 서로 비교하는 방식을 이용하거나, 메모리 장치에서 에러 검출 비트를 생성한 후 메모리 컨트롤러로 전송하는 방식을 이용하여 에러 발생 유무를 판단한다.
한편, 상술한 바와 같이 DC 데이터 패턴은 전송 과정에서 에러가 발생하지 않는다. 그러므로, 에러가 발생한 경우 AC 데이터 패턴에 에러가 발생한 것으로 판단할 수 있다. 따라서, 에러 발생 시점을 기준으로 선택된 데이터 핀에 대한 데이터 지연 시간을 조절하면 상기 선택된 데이터 핀에 대한 데이터 트레이닝을 할 수 있다. 이와 같은 방식을 이용하면, 병렬 데이터에 대해서만 에러 발생 유무를 판단할 수 있는 종래의 EDC 회로를 통해 직렬 데이터에 대한 데이터 트레이닝을 할 수 있다.
도 5는 본 발명의 일 실시예에 따른 복수의 데이터 핀에 인가되는 데이터 패턴을 나타내는 도면이다.
데이터 트레이닝을 수행할 하나의 데이터 핀으로 제1 데이터 핀(DQ0)을 선택 한다. 그 후 상기 제1 데이터 핀(DQ0)에 AC 데이터 패턴을 인가한다. 상기 AC 데이터 패턴은 사용자에 의해 설정되는 랜덤 데이터 패턴이다. 그리고 나머지 데이터 핀(DQ2 ~ DQn)에는 DC 데이터 패턴을 인가한다. 상기 DC 데이터 패턴은 논리 "H"로만 이루어진 데이터 패턴일 수 있다.
상기 제1 데이터 핀(DQ0)에 대한 데이터 트레이닝이 완료되면, 제2 데이터 핀(DQ0)에 AC 데이터 패턴을 인가한다. 그리고 나머지 데이터 핀(DQ0, DQ2 ~ DQn)에는 DC 데이터 패턴을 인가한다. 이와 같은 방식으로 전체 데이터 핀(DQ0 ~ DQn)에 대한 데이터 트레이닝을 수행한다.
도 6a는 복수의 데이터 핀에 대한 데이터 트레이닝을 나타내는 타이밍도이고, 도 6b는 각각의 데이터 핀에 대한 데이터 트레이닝을 나타내는 타이밍도이다.
데이터가 데이터 버스 등을 통해 전송될 때 스큐가 발생할 수 있다. 또한, 상기 스큐의 양은 데이터가 전송되는 전송 라인의 환경에 따라 달라질 수 있다. 따라서 메모리 컨트롤러에서 복수 개의 데이터 핀을 통해 데이터를 동시에 출력할지라도, 메모리 장치의 데이터 핀에 입력되는 시간은 서로 달라질 수 있다.
도 6a의 왼쪽 도면을 참조하면, 스큐로 인해 클록 신호의 라이징 에지에서 유효 데이터가 입력되지 않은 경우, 메모리 장치는 상기 데이터를 정상적으로 판독할 수 없음을 알 수 있다. 이는 셋업 타임(tS)과 홀드 타임(tH)의 마진이 매우 작은 경우에도 마찬가지다.
도 6b의 오른쪽 도면을 참조하면, 전체 데이터 핀에 대한 동일한 지연 시간을 설정함으로써 전체 데이터가 유효하게 판독될 수 있음을 알 수 있다. 그러나 이와 같은 방식을 이용하면, 셋업 타임(tS)과 홀드 타임(tH)의 마진이 줄어들기 때문에 에러가 발생할 가능성은 여전히 남아있게 된다.
도 6b를 오른쪽 도면을 참조하면, 각각의 데이터 핀에 대해 서로 다른 지연 시간을 설정한 경우, 모든 입력 데이터가 클록 신호의 라이징 에지에 정렬됨을 알 수 있다. 이 경우 셋업 타임(tS)과 홀드 타임(tH)의 마진은 최대로 된다. 따라서, 각각의 데이터 핀에 대해 최적화된 지연 시간을 설정하면, 에러가 발생할 가능성이 확연히 줄일 수 있음을 알 수 있다.
도 7은 본 발명의 일 실시예에 따른 메모리 컨트롤러(1)를 나타내는 블럭도이다.
본 발명의 일 실시예에 따른 메모리 컨트롤러(1)는 데이터 트레이닝 컨트롤러(100), 타이밍 컨트롤러(110), 데이터 지연부(120), 클록 발생부(130), 데이터 패턴 생성부(140) 및 제1 CRC 회로(150)를 포함한다.
데이터 트레이닝 컨트롤러(100)는 소정의 제어 신호(CRL)를 생성하여 타이밍 컨트롤러(110)로 출력한다. 타이밍 컨트롤러(110)는 상기 제어 신호(CRL) 및 클록 신호(CLK)를 입력받고, 상기 제어 신호(CRL)에 응답하여 지연된 클록 신호(DCLK)를 생성한다.
데이터 지연부(120)는 소정의 데이터 패턴(DP) 및 지연된 클록 신호(DCLK)를 입력받고, 상기 데이터 패턴(DP)을 상기 지연된 클록 신호(DCLK)에 동기하여 출력 함으로써, 지연된 데이터 패턴(DDP)을 생성한다. 상기 지연된 데이터 패턴(DDP)의 지연 시간은 데이터 트레이닝 컨트롤러(100)에 의해서 제어되며, 디폴트는 0으로 설정된다.
제1 CRC 회로(150)는 상기 지연된 데이터 패턴(DDP)을 입력받고, 상기 지연된 데이터 패턴(DDP)으로부터 제1 CRC(Cyclic Redundancy Check) 코드를 생성한다. 상기 제1 CRC 코드를 생성하는 방법은 상술한 바와 같다. 데이터 지연부(120)는 상기 지연된 데이터 패턴(DDP)을 데이터 핀(미도시)을 통해 메모리 장치(미도시)로 전송한다.
메모리 장치(미도시)는 메모리 컨트롤러(1)로부터 전송된 데이터 패턴(DDP)을 입력받고, 상기 전송된 데이터 패턴(DDP)으로부터 제2 CRC 코드를 생성한다. 그 후 상기 메모리 장치(미도시)는 상기 제2 CRC 코드를 메모리 컨트롤러(1)로 전송한다.
메모리 컨트롤러(100)는 상기 메모리 장치로 전송된 데이터 패턴이 상기 메모리 장치의 내부에 구비된 메모리 셀에 저장되지 않도록 제어 신호(미도시)를 출력한다. 이로 인해, 본 발명에 따르면, 데이터 기록 동작만으로 데이터 트레이닝을 수행할 수 있게 된다..
데이터 트레이닝 컨트롤러(100)는 상기 제1 CRC 코드 및 상기 제2 CRC 코드를 입력받아 비교한다. 이를 위해, 데이터 트레이닝 컨트롤러(100)는 비교기를 구비한다. 상기 데이터 트레이닝 컨트롤러(100)는, 제1 CRC 코드와 상기 제2 CRC 코드가 일치하는 경우 그때의 지연 시간을 저장한다.
데이터 트레이닝 컨트롤러(100)는 소정의 설정 시간(t_set)에 도달할 때까지 상기 지연된 데이터 패턴(DDP)의 지연량을 단계적으로 증가시키며, 각각의 단계마다 상기 제1 CRC 코드 및 상기 제2 CRC 코드의 일치 여부를 비교한다.
데이터 트레이닝 컨트롤러(100)는 지연 시간이 상기 설정 시간(t_set)에 도달하면 상기 제어 신호의 생성을 중지하고, 상기 저장된 지연 시간(t_err)을 바탕으로 최적화된 지연 시간(t_opt)을 결정한다.
도 8은 본 발명의 다른 실시예에 따른 메모리 컨트롤러(2)를 나타내는 블럭도이다.
본 발명의 다른 실시예에 따른 메모리 컨트롤러(2)는 데이터 트레이닝 컨트롤러(200), 타이밍 컨트롤러(210), 데이터 지연부(220), 멀티플렉싱부(230), 제1 CRC 회로(240) 및 에러 발생 빈도 검출부(250)를 구비한다.
멀티플렉싱부(230)는 기록 데이터(WD), AC 데이터 패턴(PRBS) 및 DC 데이터 패턴(VDDQ)을 입력받고, 데이터 트레이닝 컨트롤러(200)로부터 출력되는 선택 신호(SEL)에 응답하여 기록 데이터(WD), AC 데이터 패턴(PRBS) 또는 DC 데이터 패턴(VDDQ) 중 하나를 출력한다.
노말 모드에서, 데이터 트레이닝 컨트롤러(200)는 기록 데이터(WD)를 선택하기 위한 선택 신호(SEL)를 출력한다. 데이터 트레이닝 모드에서, 데이터 트레이닝 컨트롤러(200)는 AC 데이터 패턴(PRBS) 또는 DC 데이터 패턴(VDDQ) 중 하나를 선택하기 위한 선택 신호(SEL)를 출력한다.
데이터 트레이닝 모드에서, 데이터 지연부(220)는 타이밍 컨트롤러(210)로부 터 출력되는 지연된 클록 신호(DCLK)에 응답하여 AC 데이터 패턴(PRBS) 또는 DC 데이터 패턴(VDDQ) 중 하나를 소정 시간 동안 지연시킨 후 출력한다.
에러 발생 빈도 검출부(250)는 메모리 컨트롤러(2)의 내부에 위치하는 제1 CRC 회로(240)로부터 제1 CRC 코드를 입력받고, 메모리 장치(미도시)의 내부에 위치하는 제2 CRC 회로(미도시)로부터 제2 CRC 코드를 입력받는다.
에러 발생 빈도 검출부(250)는 상기 제1 CRC 코드 및 상기 제2 CRC 코드의 일치 여부를 판단하고, 이를 바탕으로 에러 발생 빈도를 검출한다. 이를 위해 에러 발생 빈도 검출부(250)는 비교기(미도시)를 구비한다.
에러 발생 빈도 검출부(250)는 에러 발생 빈도가 소정 값 이상인 경우 데이터 트레이닝의 실행 주기를 증가시키고, 에러 발생 빈도가 소정 값 미만인 경우 데이터 트레이닝의 실행 주기를 감소시킨다. 이를 위해, 에러 발생 빈도 검출부(250)는 데이터 트레이닝 실행 주기와 관련된 레지스터(미도시)의 설정 값을 변경시키기 위한 제어 신호(EPC)를 출력한다.
도 9는 도 8에 도시된 멀티플렉싱부(230)와 데이터 지연부(220)를 보다 구체적으로 나타내는 도면이다.
본 발명에 따른 멀티플렉싱부(230)는 제1 MUX(230-1) 내지 제N MUX(230-N)를 구비하고, 본 발명에 따른 데이터 지연부(220)는 제1 플립플롭(220-1) 내지 제N 플립플롭(220-N)을 구비한다.
제1 MUX(231)는 제1 기록 데이터(WD1), AC 데이터 패턴(PRBS) 및 DC 데이터 패턴(VDDQ)를 입력받고, 제1 선택 신호(SEL1)에 응답하여, 제1 기록 데이터(WD1), AC 데이터 패턴(PRBS) 또는 DC 데이터 패턴(VDDQ) 중 하나를 데이터 지연부(220)로 출력한다. 마찬가지로, 제N MUX(230-N)는 제N 선택 신호(SELn)에 응답하여, 제N 기록 데이터(WDn), DC 데이터 패턴(PRBS) 또는 DC 데이터 패턴(VDDQ) 중 하나를 데이터 지연부(220)로 출력한다.
제1 플립플롭(220-1)은 제1 MUX(230-1)로부터 출력되는 AC 데이터 패턴(PRBS) 또는 DC 데이터 패턴(VDDQ) 중 하나를 임시 저장한 후, 제1 지연된 클록 신호(DCLK1)에 응답하여 출력한다. 마찬가지로, 제N 플립플롭(220-N)은 제N MUX(230-N)로부터 출력되는 AC 데이터 패턴(PRBS) 또는 DC 데이터 패턴(VDDQ) 중 하나를 임시 저장한 후, 제N 지연된 클록 신호(DCLKn)에 응답하여 출력한다.
제1 선택 신호(SEL1)가 AC 데이터 패턴(PRBS)을 선택하기 위한 신호인 경우, 제2 선택 신호 내지 제N 선택 신호(SEL2 ~ SELn)는 DC 데이터 패턴(VDDQ)을 선택하기 위한 신호인 것이 바람직하다. 다시 말해, 하나의 데이터 핀에는 AC 데이터 패턴(PRBS)을 인가하고, 나머지 데이터 핀에는 DC 데이터 패턴(VDDQ)을 인가하여, 각각의 데이터 핀 별로 독립적으로 데이터 트레이닝을 수행하는 것이 바람직하다.
도 10은 본 발명의 또 다른 실시예에 따른 메모리 컨트롤러(3)를 나타내는 블럭도이다.
본 발명의 또 다른 실시예에 따른 메모리 컨트롤러(3)는 데이터 트레이닝 컨트롤러(300), 타이밍 컨트롤러(310), 데이터 지연부(320), 클록 발생부(330), 데이터 패턴 생성부(340) 및 코드워드 생성부(350)를 구비한다. 또한 도 8에 도시된 멀티플렉싱부(230) 및 에러 발생 빈도 검출부(250)를 더 구비할 수 있다.
데이터 트레이닝 컨트롤러(300)는 소정의 제어 신호(CRL)를 생성하여 타이밍 컨트롤러(310)로 출력한다. 타이밍 컨트롤러(310)는 상기 제어 신호(CRL) 및 클록 신호(CLK)를 입력받고, 상기 제어 신호(CRL)에 응답하여 지연된 클록 신호(DCLK)를 생성한다. 상기 클록 신호(CRL)를 생성하기 위한 클록 생성부(330)로 PLL(Phased Locked Loop)가 사용될 수 있다.
코드워드 생성부(350)는 데이터 패턴 생성부(340)로부터 소정의 데이터 패턴(DP)을 입력받고, 상기 데이터 패턴(DP)에 CRC 코드를 부가하여 코드워드(CW)를 생성한다. 상기 코드워드(CW)를 생성하는 방법에 대해서는 상술하였다. 상기 데이터 패턴(DP)은 AC 데이터 패턴 또는 DC 데이터 패턴일 수 있다.
데이터 지연부(320)는 상기 코드워드(CW) 및 지연된 클록 신호(DCLK)를 입력받고, 상기 코드워드(CW)를 상기 지연된 클록 신호(DCLK)에 동기하여 출력함으로써 지연된 코드워드(DCW)를 생성한다. 상기 지연된 코드워드(DCW)는 데이터 핀(미도시)을 통해 메모리 장치(미도시)로 전송한다.
메모리 장치(미도시)는 메모리 컨트롤러(3)로부터 전송된 코드워드(TDCW)를 입력받고, 상기 전송된 코드워드(TDCW)를 상기 메모리 장치(미도시) 내부에 구비된 에러 검출 회로(미도시)로 전송한다.
상기 에러 검출 회로(미도시)는 상기 전송된 코드워드(TDCW)로부터 신드롬(Syndrome)을 생성한다. 상기 신드롬은 상기 전송된 코드워드(TDCW)를 생성 다항식 G(x)로 나눈 나머지 값을 의미한다.
상기 신드롬이 0이면 에러가 발생하지 않은 것으로 판단한다. 반면, 상기 신드롬이 0이 아니면 에러가 발생한 것으로 판단한다. 상기 신드롬에 근거하여 에러 발생 유무를 나타내는 에러 검출 비트(EDB)를 생성한다. 상기 에러 검출 비트(EDB)는 1인 것이 바람직하다.
에러 검출 회로(미도시)는 생성된 에러 검출 비트(EDB)를 메모리 컨트롤러(3)로 전송한다. 정확하게는, 데이터 트레이닝 컨트롤러(300)로 전송한다. 데이터 트레이닝 컨트롤러(300)는 상기 전송된 에러 검출 비트(EDB)를 통해 에러 발생 유무를 판단한다. 데이터 트레이닝 컨트롤러(300)는 에러가 발생한 경우 그때의 지연 시간(t_err)을 저장한다.
데이터 트레이닝 컨트롤러(300)는 소정의 설정 시간(t_set)에 도달할 때까지 상기 지연된 코드워드(DCW)의 지연량을 단계적으로 증가시키며, 각각의 단계마다 상기 에러 발생 유무를 판단한다.
데이터 트레이닝 컨트롤러(300)는 지연 시간이 미리 정해진 설정 시간(t_set)에 도달하면 상기 제어 신호(CRL)의 생성을 중지하고, 상기 저장된 지연 시간(t_err)을 바탕으로 최적화된 지연 시간(t_opt)을 결정한다.
도 11은 본 발명의 일 실시예에 따른 시스템을 나타내는 블럭도이다.
본 발명의 일 실시예에 따른 시스템은 메모리 컨트롤러(4)와 메모리 장치(5) 를 구비한다.
메모리 컨트롤러(4)는 데이터 트레이닝 컨트롤러(400), 타이밍 컨트롤러(410), 데이터 지연부(420), PLL(430), 제1 CRC 회로(440) 및 복수 개의 출력 버퍼들(Tx_C1 ~ Tx_Cn), 제2 CRC 코드 입력 버퍼(Rx_C1)를 구비한다. 또한 복수 개의 입력 버퍼들(미도시)을 더 구비할 수 있다.
메모리 장치(5)는 복수 개의 입력 버퍼들(Rx_D1 ~ Rx_Dn), 제2 CRC 회로(500) 및 제2 CRC 코드 출력 버퍼(Tx_Dn+1)를 구비한다. 또한 복수 개의 출력 버퍼들(Tx_D1 ~ Tx_Dn)을 더 구비할 수 있다.
데이터 기록 모드에서, 데이터 지연부(420)는 기록 데이터(WD0 ~ WDn)를 출력하고, 출력된 기록 데이터(WD0 ~ WDn)는 출력 버퍼들(Tx_C1 ~ Tx_Cn)을 통해 메모리 장치(5)로 전송된다. 전송된 기록 데이터(WD0 ~ WDn)는 각각의 입력 버퍼들(Rx_D1 ~ Rx_Dn)을 통해 메모리 셀 어레이(미도시)로 전달된다.
데이터 판독 모드에서, 메모리 셀 어레이(미도시)로부터 출력되는 판독 데이터(RD0 ~ RDn)는 플립플롭(511,512,513)에 임시 저장된 후, 출력 버퍼(Tx_D1 ~ Tx_Dn)를 통해 메모리 컨트롤러(4)로 전송된다.
데이터 트레이닝 모드에서, 데이터 지연부(420)는 소정의 데이터 패턴(DP0 ~ DPn)을 상기 지연된 클록 신호(DCLK)에 동기하여 출력하고, 데이터 지연부(420)로부터 출력되는 지연된 데이터 패턴(DDP0 ~ DDPn)은 출력 버퍼들(Tx_C1 ~ Tx_Cn)을 통 해 메모리 장치(5)로 전송된다.
상기 지연된 데이터 패턴(DDP0 ~ DDPn)은 메모리 장치(5)로 전송되기 전에 제1 CRC 회로(440)로 입력된다. 제1 CRC 회로(440)는 상기 지연된 데이터 패턴(DDP0 ~ DDPn)으로부터 제1 CRC 코드를 생성한 후, 생성된 제1 CRC 코드를 데이터 트레이닝 컨트롤러(400)로 출력한다.
메모리 장치(5)로 전송된 데이터 패턴(TDDP0 ~ TDDPn)은 입력 버퍼(Rx_D1 ~ Rx_Dn)을 통해 제2 CRC 회로(500)로 출력된다. 제2 CRC 회로(500)는 상기 출력된 데이터 패턴(TDDP0 ~ TTDPn)로부터 제2 CRC 코드를 생성한다.
상기 생성된 제2 CRC 코드는 플립플롭(514)에 임시 저장된 후 제2 CRC 코드 출력 버퍼(Tx_Dn+1)를 통해 메모리 컨트롤러(4)로 전송된다. 메모리 컨트롤러(4)는 상기 생성된 제2 CRC 코드를 제2 CRC 코드 입력 버퍼(Rx_C1)를 통해 입력받아 데이터 트레이닝 컨트롤러(400)로 전달한다.
데이터 트레이닝 컨트롤러(400)는 제1 CRC 코드와 제2 CRC 코드를 입력받아, 그 일치 여부를 비교한다. 그 후 데이터 트레이닝 컨트롤러(400)는 상기 비교 결과에 근거하여 스큐를 최소화시킬 수 있는 데이터 지연 시간을 결정한다.
데이터 트레이닝 모드시, 상기 입력 버퍼들(Rx_D1 ~ Rx_Dn)을 통해 입력된 데이터 패턴은 메모리 장치(5)의 내부에 구비된 메모리 셀(미도시)에 저장되지 않는다. 이로 인해, 메모리 셀로부터 데이터를 판독하지 않고도 데이터 트레이닝을 수행할 수 있다.
도 12는 본 발명의 다른 실시예에 따른 시스템을 나타내는 블럭도이다.
본 발명의 다른 실시예에 따른 시스템은 메모리 컨트롤러(6)와 메모리 장치(7)를 구비한다.
메모리 컨트롤러(6)는 데이터 트레이닝 컨트롤러(600), 타이밍 컨트롤러(610), 데이터 지연부(620), 코드워드 생성부(630), 멀티플렉싱부(640), PLL(650), 제1 송신부(660), 제1 수신부(670) 및 에러 발생 빈도 검출부(680)를 구비한다.
메모리 장치(7)는 제2 수신부(710), 에러 검출 회로(720), 제2 송신부(730)를 구비한다.
코드 워드 생성부(630)는 AC 데이터 패턴(PRBS) 및 DC 데이터 패턴(VDDQ)을 입력받고, 상기 AC 데이터 패턴(PRBS) 및 상기 DC 데이터 패턴(VDDQ)에 에러 검출 코드를 부가하여 제1 코드워드(CW1) 및 제2 코드워드(CW2)를 생성한다. 바람직한 에러 검출 코드는 CRC 코드이다.
멀티플렉싱부(640)는 상기 제1 코드워드(CW1) 및 상기 제2 코드워드(CW2)를 입력받고, 데이터 트레이닝 컨트롤러(600)로부터 출력되는 선택 신호(SEL)에 응답하여, 상기 제1 코드워드(CW1) 또는 상기 제2 코드워드(CW2) 중 하나를 출력한다.
데이터 트레이닝 컨트롤러(600)는 상기 코드워드(CW)의 지연 시간을 조절하기 위한 소정의 제어 신호(CRL)와 상기 선택 신호(SEL)를 출력한다. 타이밍 컨트롤러(610)는 PLL(650)로부터 클록 신호(CLK)를 입력받고, 상기 제어 신호(CRL)에 응 답하여 지연된 클록 신호(DCLK)를 출력한다.
데이터 지연부(620)는 상기 코드워드(CW)와 지연된 클록 신호(DCLK)를 입력받고, 상기 코드워드(CW)를 소정 시간 동안 지연시켜 출력한다.
제1 송신부(660)는 상기 데이터 지연부(620)로부터 출력되는 지연된 코드워드(DCW)를 데이터 핀(미도시)을 통해 메모리 장치(7)로 전송한다. 제2 수신부(710)는 상기 전송된 코드워드(TDCW)를 에러 검출 회로(720)로 출력한다.
에러 검출 회로(720)는 상기 전송된 코드워드(TDCW)의 에러 발생 유무를 검출한다. 에러가 발생한 경우, 논리 "H"인 에러 검출 비트(EDB)를 출력하고, 에러가 발생하지 않은 경우, 논리 "L"인 에러 검출 비트(EDB)를 출력한다. 상기 에러 검출 비트(EDB)는 제2 송신부(730)를 통해 메모리 컨트롤러(6)로 전송된다.
제1 수신부(670)는 전송된 에러 검출 비트(EDB)를 입력받아 데이터 트레이닝 컨트롤러(600)와 에러 발생 빈도 검출부(680)로 출력한다. 데이터 트레이닝 컨트롤러(600)는 상기 에러 검출 비트(EDB)를 이용하여 에러 발생 시점을 판단하고, 상기 판단된 에러 발생 시점을 근거로 최적화된 데이터 지연 시간을 결정한다.
에러 발생 빈도 검출부(680)는 상기 에러 검출 비트(EDB)를 입력받아, 에러 발생 빈도를 검출하고, 에러 발생 빈도에 따라 상기 데이터 트레이닝의 실행 주기를 조정하기 위한 제어신호(EPC)를 데이터 트레이닝 컨트롤러(600)로 출력한다.
이상 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적으로 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야에서 통상의 지식을 가지는 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.