KR20200048607A - 모드 레지스터 쓰기 명령을 이용하여 쓰기 클럭의 듀티 사이클의 트레이닝을 수행하는 시스템 온 칩, 시스템 온 칩의 동작 방법, 및 시스템 온 칩을 포함하는 전자 장치 - Google Patents

모드 레지스터 쓰기 명령을 이용하여 쓰기 클럭의 듀티 사이클의 트레이닝을 수행하는 시스템 온 칩, 시스템 온 칩의 동작 방법, 및 시스템 온 칩을 포함하는 전자 장치 Download PDF

Info

Publication number
KR20200048607A
KR20200048607A KR1020180130845A KR20180130845A KR20200048607A KR 20200048607 A KR20200048607 A KR 20200048607A KR 1020180130845 A KR1020180130845 A KR 1020180130845A KR 20180130845 A KR20180130845 A KR 20180130845A KR 20200048607 A KR20200048607 A KR 20200048607A
Authority
KR
South Korea
Prior art keywords
memory device
clock
code
command
chip
Prior art date
Application number
KR1020180130845A
Other languages
English (en)
Other versions
KR102679157B1 (ko
Inventor
김용섭
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180130845A priority Critical patent/KR102679157B1/ko
Priority claimed from KR1020180130845A external-priority patent/KR102679157B1/ko
Priority to US16/460,291 priority patent/US11061577B2/en
Priority to DE102019118638.2A priority patent/DE102019118638A1/de
Priority to CN201911009364.5A priority patent/CN111124998B/zh
Publication of KR20200048607A publication Critical patent/KR20200048607A/ko
Application granted granted Critical
Publication of KR102679157B1 publication Critical patent/KR102679157B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1093Input synchronization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4076Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4096Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/023Detection or location of defective auxiliary circuits, e.g. defective refresh counters in clock generator or timing circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50012Marginal testing, e.g. race, voltage or current testing of timing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1045Read-write mode select circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2254Calibration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

본 발명의 실시 예에 따른 시스템 온 칩은 메모리 장치로 전송되는 제 1 클럭을 생성하는 제 1 클럭 생성기, 메모리 장치로 전송되는 제 2 클럭을 생성하는 제 2 클럭 생성기, 제 2 클럭에 기초하여 메모리 장치의 내부에서 생성되는 제 3 클럭의 듀티 사이클을 조정하는 코드를 생성하고 그리고 코드를 메모리 장치의 모드 레지스터들에 저장하기 위한 명령을 생성하되, 코드는 메모리 장치의 데이터 입출력에 사용되는 명령 및 어드레스 생성기, 제 1 클럭에 동기된 명령 및 코드를 수신한 메모리 장치로부터 출력되는 데이터 스트로브 신호 및 데이터 입출력 신호를 수신하는 데이터 수신기, 및 데이터 스트로브 신호 및 데이터 입출력 신호에 기초하여 코드에 대한 복수의 유효 윈도우 마진들을 계산하는 트레이닝 회로를 포함할 수 있다.

Description

모드 레지스터 쓰기 명령을 이용하여 쓰기 클럭의 듀티 사이클의 트레이닝을 수행하는 시스템 온 칩, 시스템 온 칩의 동작 방법, 및 시스템 온 칩을 포함하는 전자 장치{SYSTEM ON CHIP PERFORMING TRAINING OF DUTY CYCLE OF WRITE CLOCK USING MODE REGISTER WRITE COMMAND, OPERATING METHOD OF SYSTEM ON CHIP, ELECTRONIC DEVICE INCLUDING SYSTEM ON CHIP}
본 발명은 모드 레지스터 쓰기 명령을 이용하여 쓰기 클럭의 듀티 사이클의 트레이닝을 수행하는 시스템 온 칩, 시스템 온 칩의 동작 방법, 및 시스템 온 칩을 포함하는 전자 장치에 관한 것이다.
시스템 온 칩(System on Chip; 이하 SoC로 지칭)은 전자 시스템의 다수의 구성 요소들 또는 다수의 IP(intellectual property)들이 집적된 집적 회로이다. SoC는 SoC 외부의 메모리 장치와 통신할 수 있다. 최근, SoC 및 메모리 장치의 각각의 동작 속도들이 증가함에 따라, SoC는 메모리 장치와 고속으로 통신하기 전에 메모리 장치에 대한 다수의 트레이닝들을 수행해야 한다. SoC는 메모리 장치에 대한 고속의 데이터 입출력을 위해 클럭과 별도로 쓰기 클럭을 메모리 장치로 제공할 수 있다. 일반적으로 쓰기 클럭의 주파수는 클럭의 주파수보다 높기 때문에, 쓰기 클럭의 듀티 사이클을 정확하게 조정하는 것이 필요하다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 모드 레지스터 쓰기 명령을 이용하여 쓰기 클럭의 듀티 사이클의 트레이닝을 수행하는 시스템 온 칩, 시스템 온 칩의 동작 방법, 및 시스템 온 칩을 포함하는 전자 장치를 제공할 수 있다.
본 발명의 실시 예에 따른 시스템 온 칩은 메모리 장치로 전송되는 제 1 클럭을 생성하는 제 1 클럭 생성기, 메모리 장치로 전송되는 제 2 클럭을 생성하는 제 2 클럭 생성기, 제 2 클럭에 기초하여 메모리 장치의 내부에서 생성되고 메모리 장치의 데이터 입출력에 사용되는 제 3 클럭의 듀티 사이클을 조정하는 코드를 생성하고 그리고 코드를 메모리 장치의 모드 레지스터들에 저장하기 위한 명령을 생성하는 명령 및 어드레스 생성기, 제 1 클럭에 동기된 명령 및 코드를 수신한 메모리 장치로부터 출력되는 데이터 스트로브 신호 및 데이터 입출력 신호를 수신하는 데이터 수신기, 및 데이터 스트로브 신호 및 데이터 입출력 신호에 기초하여 코드에 대한 복수의 유효 윈도우 마진들을 계산하는 트레이닝 회로를 포함할 수 있다.
본 발명의 다른 실시 예에 따른 메모리 장치와 연결되는 시스템 온 칩의 동작 방법은 제 1 클럭에 동기되어 메모리 장치로 전송되는 코드를 변경하되, 코드는 제 2 클럭에 기초하여 메모리 장치의 내부에서 생성되고 메모리 장치의 데이터 입출력에 사용되는 제 3 클럭의 듀티 사이클을 조정하는 단계, 코드를 수신한 메모리 장치로부터 출력되는 데이터 스트로브 신호 및 데이터 입출력 신호에 기초하여 코드에 대한 복수의 유효 윈도우 마진들을 계산하는 단계, 및 복수의 유효 윈도우 마진들 중 최대의 유효 윈도우 마진에 대응하는 코드의 타깃 값을 메모리 장치로 전송하는 단계를 포함할 수 있다.
본 발명의 또 다른 실시 예에 따른 전자 장치는 제 1 클럭 및 제 1 클럭의 주파수보다 높은 주파수를 갖는 제 2 클럭을 생성하도록 구성되는 시스템 온 칩 및 시스템 온 칩으로부터 출력되는 제 1 클럭 및 제 2 클럭에 동기된 메모리 장치를 포함할 수 있고, 시스템 온 칩은 제 1 클럭에 동기된 명령 및 코드를 생성하고 그리고 명령 및 코드를 메모리 장치로 전송함으로써, 제 2 클럭에 기초하여 메모리 장치의 내부에서 생성되고 메모리 장치의 데이터 입출력에 사용되는 제 3 클럭의 듀티 사이클을 트레이닝하도록 더 구성될 수 있다.
본 발명의 실시 예에 따른 SoC는 모드 레지스터 쓰기 명령 및 코드를 메모리 장치로 전송함으로써 메모리 장치의 내부 쓰기 클럭의 듀티 사이클을 최적의 값으로 설정할 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 장치의 블록도를 예시적으로 도시한다.
도 2는 도 1의 SoC의 블록도를 예시적으로 도시한다.
도 3은 도 2의 트레이닝 회로에 의해 계산되는 VWM을 예시적으로 도시한다.
도 4는 도 1의 메모리 장치의 블록도를 예시적으로 도시한다.
도 5는 본 발명의 실시 예에 따라 SoC가 메모리 장치의 내부 쓰기 클럭의 듀티 사이클을 조정하기 위한 코드의 값들 중 최대의 VWM에 대응하는 값을 찾기 위한 순서도를 예시적으로 도시한다.
도 6은 도 5의 S160 단계에서 SoC가 메모리 장치로 모드 레지스터 쓰기 명령 및 코드를 전송하는 타이밍도를 예시적으로 도시한다.
도 7은 도 5의 S140 단계에서 SoC가 메모리 장치로 읽기 명령을 전송하는 타이밍도를 예시적으로 도시한다.
도 8은 도 5의 순서도에 따라 SoC 내부에 저장되는 VWM들을 예시적으로 도시한다.
도 9는 본 발명의 다른 실시 예에 따른 전자 장치의 블록도를 예시적으로 도시한다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 쉽게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 전자 장치의 블록도를 예시적으로 도시한다. 전자 장치(10)는 시스템 온 칩(system on-chip; 이하 SoC로 지칭, 100) 및 메모리 장치(200)를 포함할 수 있다. 전자 장치(10)는 전자 시스템으로도 지칭될 수 있다. 예를 들어, 전자 장치(10)는 데스크톱(desktop) 컴퓨터, 랩톱(laptop) 컴퓨터, 워크스테이션(workstation), 서버, 모바일 장치 등일 수 있다.
SoC(100)는 어플리케이션 프로세서(application processor; AP)로서 전자 장치(10)의 전반적인 동작을 제어할 수 있다. SoC(100)는 전자 장치(10)가 지원하는 어플리케이션에 따라 프로그램을 실행하고, 메모리 장치(200)로부터 프로그램 실행과 관련된 데이터를 수신하거나 또는 프로그램 실행의 결과를 메모리 장치(200)로 전송할 수 있다. SoC(100)는 다양한 IP(intellectual property)들을 포함할 수 있다. 예를 들어, SoC(100)는 메모리 컨트롤러(130) 및 DDR 물리 계층(double data rate physical layer; 이하 DDR PHY로 지칭, 140)을 포함할 수 있다.
메모리 컨트롤러(130)는 DDR PHY(140)를 통해 메모리 장치(200)를 제어할 수 있다. 메모리 컨트롤러(130)는 메모리 장치(200)를 접근하기 위한 명령들 및 어드레스들을 생성할 수 있다. 메모리 컨트롤러(130)는 메모리 장치(200)에 저장될 데이터를 생성할 수 있다. 메모리 컨트롤러(130)는 메모리 장치(200)에 저장된 데이터를 수신할 수 있다.
DDR PHY(140)는 DDR PHY 인터페이스로도 지칭될 수 있다. DDR PHY(140)는 메모리 컨트롤러(130)의 제어에 기초하여 클럭(CK), 쓰기 클럭(WCK), 그리고 명령 및 어드레스(CMD/ADD)를 메모리 장치(200)로 전송할 수 있다. DDR PHY(140)는 메모리 컨트롤러(130)의 제어에 기초하여 메모리 장치(200)로 데이터 스트로브 신호(이하; DQS로 지칭) 및 데이터 입출력 신호(이하; DQ로 지칭)를 전송할 수 있다. DQS는 DQ를 샘플링(sampling)하는데 사용될 수 있다. DDR PHY(140)는 메모리 장치(200)로부터 DQS 및 DQ를 수신할 수도 있다. DDR PHY(140)가 메모리 장치(200)로 DQS 및 DQ를 전송하는데 사용되는 경로들과 메모리 장치(200)가 DDR PHY(140)로 DQS 및 DQ를 전송하는데 사용되는 경로들은 서로 동일하고 공유될 수 있다. DQS 및 DQ는 각각 양방향 신호들이므로, SoC(100)에서 메모리 장치(200)로 출력되는 DQS 및 DQ는 쓰기 DQS 및 쓰기 DQ로 각각 지칭될 수 있고 그리고 메모리 장치(200)에서 SoC(100)로 출력되는 DQS 및 DQ는 읽기 DQS 및 읽기 DQ로 각각 지칭될 수 있다.
메모리 장치(200)는 SoC(100)의 요청에 따라 데이터를 저장하거나 저장된 데이터를 SoC(100)로 제공할 수 있다. 메모리 장치(200)는 DDR PHY(140)를 통해 SoC(100)와 통신할 수 있다. 예를 들어, 메모리 장치(200)는 DRAM(dynamic random access memory) 장치, SRAM(static random access memory) 장치, TRAM(thyristor random access memory) 장치, 낸드 플래시 메모리 장치, 노어 플래시 메모리 장치, RRAM(resistive random access memory) 장치, FRAM(ferroelectric random access memory) 장치, PRAM(phase change random access memory) 장치, MRAM(magnetic random access memory) 장치, 솔리드 스테이트 드라이브(SSD), 메모리 카드, 유니버설 플래시 기억장치(UFS) 등일 수 있다. 이하, 메모리 장치(200)는 SoC(100)로부터 출력되는 클럭(CK)에 동기된 DRAM 장치(즉, SDRAM(synchronous dynamic random access memory) 장치)인 것으로 설명될 것이다. 특히, 메모리 장치(200)는 LPDDR(low power double data rate 5) SDRAM일 수 있다.
SoC(100)는 메모리 장치(200)와 고속의 데이터 입출력을 위해 클럭(CK)에 더해 쓰기 클럭(WCK)을 메모리 장치(200)로 제공할 수 있다. 메모리 장치(200)는 클럭(CK)을 이용하여 명령 및 어드레스(CMD/ADD)를 샘플링할 수 있다. 메모리 장치(200)는 쓰기 클럭(WCK)을 이용하여 고속의 데이터 입출력을 수행할 수 있다. 즉, 메모리 장치(200)는 쓰기 클럭(WCK)을 이용하여 쓰기 DQS 및 쓰기 DQ를 수신할 수 있고 그리고 쓰기 클럭(WCK)을 이용하여 읽기 DQS 및 읽기 DQ를 SoC(100)로 출력할 수 있다.
쓰기 클럭(WCK)의 주파수는 클럭(CK)의 주파수보다 높을 수 있다(예를 들어, 클럭(CK)의 주파수의 정수 배). SoC(100)는 상대적으로 낮은 주파수를 갖는 클럭(CK)을 메모리 장치(200)로 항상 전송하지만, 상대적으로 높은 주파수를 갖는 쓰기 클럭(WCK)을 데이터 입출력의 구간 동안에만 메모리 장치(200)로 전송할 수 있다. 쓰기 클럭(WCK)의 주파수는 클럭(CK)의 주파수보다 높고 고속의 데이터 입출력에 사용되므로, 쓰기 클럭(WCK)의 듀티 사이클을 이상적인 값으로 조정(즉, 쓰기 클럭(WCK)의 듀티 사이클의 트레이닝(training))하는 것이 필요하다. 이상적인 값은 50%(즉, 클럭(CK)의 논리 1에 대응하는 구간과 클럭(CK)의 논리 0에 대응하는 구간이 서로 동일)일 수 있다.
좀 더 구체적으로, 제조 공정들을 통해 다수의 SoC들(100)이 제조될 수 있고 다른 제조 공정을 통해 다수의 메모리 장치들(200)이 제조될 수 있다. 다수의 SoC들(100)은 다양한 동작 특성들(동작 속도, 전력 소모 등)을 가질 수 있고 다수의 메모리 장치들(200)도 다양한 동작 특성들을 가질 수 있다. 다수의 SoC들(100) 중 하나와 다수의 메모리 장치들(200) 중 하나가 전자 장치(10)에 탑재되거나 사용될 수 있다. SoC(100)는 다양한 동작 특성들(Fast, Typical, Slow 등)을 가질 수 있고 메모리 장치(200)도 다양한 동작 특성들(Fast, Typical, Slow 등)을 가질 수 있으므로, SoC(100)에서 메모리 장치(200)로 제공되는 고속의 쓰기 클럭(WCK)의 듀티 사이클의 트레이닝이 필요하다(즉, on the fly 방식의 트레이닝). 특히, 쓰기 클럭(WCK)을 수신하는 메모리 장치(200) 내부에서 생성되는 내부 쓰기 클럭(IWCK)의 듀티 사이클의 트레이닝이 필요하다.
도 2는 도 1의 SoC의 블록도를 예시적으로 도시한다. SoC(100)는 메모리 컨트롤러(130) 및 DDR PHY(140)에 더해, 프로세서(110) 및 온 칩 메모리(120)를 더 포함할 수 있다.
프로세서(110)는 온 칩 메모리(120)에 로드된(loaded) 다양한 소프트웨어(응용 프로그램, 운영 체제, 파일 시스템, 장치 드라이버 등)을 실행할 수 있다. 도 2를 참조하면, 프로세서(110)는 온 칩 메모리(120)에 로드된 트레이닝 프로그램을 실행할 수 있다. 프로세서(110)는 동종 멀티-코어 프로세서(homogeneous multi-core processor)들 또는 이종 멀티-코어 프로세서(heterogeneous multi-core processor)들을 포함할 수 있다. 예를 들어, 프로세서(110)는 CPU(central processing unit), ISP(image signal processing unit), DSP(digital signal processing unit), GPU(graphics processing unit), VPU(vision processing unit), 및 NPU(neural processing unit) 중 적어도 하나를 포함할 수 있다.
온 칩 메모리(120)에는 전자 장치(10)를 구동하기 위한 응용 프로그램, 운영 체제, 파일 시스템, 장치 드라이버 등이 로드될 수 있다. 특히, 도 2를 참조하면, 온 칩 메모리(120)에는 트레이닝 프로그램이 로드될 수 있다. 예를 들어, 온 칩 메모리(120)는 SoC(100)의 내부에서 구현되고 메모리 장치(200)보다 빠른 데이터 입출력 속도를 갖는 SRAM 장치일 수 있다. 온 칩 메모리(120)는 버퍼 메모리로도 지칭될 수 있다.
메모리 컨트롤러(130)는 DMA(direct memory access) 방식으로 메모리 장치(200)에 접근할 수 있다. 메모리 컨트롤러(130)는 명령 큐(131), 명령 스케줄러(132), 읽기 데이터 큐(133), 및 쓰기 데이터 큐(134)를 포함할 수 있다.
명령 큐(131)는 프로세서(110)에 의해 발행된 명령들과 어드레스들을 저장할 수 있다. 명령 큐(131)에 저장된 명령과 어드레스는 명령 스케줄러(132)의 제어에 기초하여 DDR PHY(140)로 제공될 수 있다. 이 때, 명령 큐(131)에 저장된 하나 이상의 명령들과 하나 이상의 어드레스들이 병렬로 DDR PHY(140)로 제공될 수 있다. 명령 스케줄러(132)는 명령 큐(131)에 저장된 명령들과 어드레스들의 순서, 명령 큐(131)로 명령(들) 및 어드레스(들)이 입력되는 시점, 명령 큐(131)로부터 명령(들) 및 어드레스(들)이 출력되는 시점 등을 조정할 수 있다.
읽기 데이터 큐(133)는 SoC(100)의 메모리 장치(200)에 대한 읽기 요청에 의해 메모리 장치(200)로부터 DDR PHY(140)를 통해 전송되는 읽기 데이터를 저장할 수 있다. 읽기 데이터 큐(133)에 저장된 읽기 데이터는 온 칩 메모리(120)로 제공되고 프로세서(110)에 의해 처리될 수 있다. 쓰기 데이터 큐(134)는 메모리 장치(200)에 저장될 쓰기 데이터를 저장할 수 있다. SoC(100)의 메모리 장치(200)에 대한 쓰기 요청에 의해 쓰기 데이터 큐(134)에 저장된 쓰기 데이터는 DDR PHY(140)를 통해 메모리 장치(200)로 전송될 수 있다. 예를 들어, 메모리 컨트롤러(130)의 명령 큐(131), 명령 스케줄러(132), 읽기 데이터 큐(133), 및 쓰기 데이터 큐(134)는 SoC(100) 내에서 하드웨어 방식, 소프트웨어 방식, 또는 이들의 조합을 이용하여 구현될 수 있다.
DDR PHY(140)는 클럭 생성기(141), 쓰기 클럭 생성기(142), 명령 및 어드레스 생성기(143), 데이터 수신기(144), 데이터 송신기(145), 및 트레이닝 회로(146)를 포함할 수 있다. DDR PHY(140)의 클럭 생성기(141), 쓰기 클럭 생성기(142), 명령 및 어드레스 생성기(143), 데이터 수신기(144), 데이터 송신기(145), 및 트레이닝 회로(146)는 SoC(100) 내에서 하드웨어 방식, 소프트웨어 방식, 또는 이들의 조합을 이용하여 구현될 수 있다.
클럭 생성기(141)는 메모리 장치(200)로 출력되는 클럭(CK)을 생성할 수 있다. 도 2의 도시와 달리, 클럭 생성기(141)는 차동 방식으로 클럭들(CK_t, CK_c)을 생성하고 클럭들(CK_t, CK_c)을 메모리 장치(200)로 전송할 수도 있다. 쓰기 클럭 생성기(142)는 메모리 장치(200)로 출력되는 쓰기 클럭(WCK)을 생성할 수 있다. 도 2의 도시와 달리, 클럭 생성기(141)는 차동 방식으로 쓰기 클럭들(WCK_t, WCK_c)을 생성하고 쓰기 클럭들(WCK_t, WCK_c)을 메모리 장치(200)로 전송할 수 있다. 도 2에서 도시되진 않았으나, 클럭 생성기(141)는 클럭(CK)의 듀티 사이클을 조정하는 DCC(duty cycle corrector) 또는 DCA(duty cycle adjuster)를 포함할 수 있다. 쓰기 클럭 생성기(142)도 쓰기 클럭(WCK)의 듀티 사이클을 조정하는 DCC 또는 DCA를 포함할 수 있다. 쓰기 클럭 생성기(142)가 DCC를 포함하여도, 전술한대로 SoC(100)는 다양한 동작 특성들(Fast, Typical, Slow 등)을 가질 수 있고 메모리 장치(200)도 다양한 동작 특성들(Fast, Typical, Slow 등)을 가질 수 있으므로, 쓰기 클럭(WCK)의 듀티 사이클의 트레이닝이 필요하다.
명령 및 어드레스 생성기(143)는 명령 큐(131)로부터 명령 또는 어드레스를 수신하고 메모리 장치(200)로 명령 또는 어드레스를 전송할 수 있다. 예를 들어, 명령 및 어드레스 생성기(143)와 메모리 장치(200) 사이의 명령 및 어드레스 전송 경로들의 개수, 상술한 전송 경로들을 통해 전송되는 신호들의 논리 상태들, 전송 방법 등은 메모리 장치(200)의 JEDEC 표준에 정의될 수 있다.
데이터 수신기(144)는 메모리 장치(200)로부터 읽기 데이터를 수신할 수 있다. 데이터 수신기(144)는 수신된 읽기 데이터를 읽기 데이터 큐(133)에 제공할 수 있다. 데이터 수신기(144)는 읽기 DQS 및 읽기 DQ를 정렬하거나 또는 읽기 DQS 및 읽기 DQ 사이의 스큐를 조정하는 읽기 DQS/DQ 정렬기(144_1)를 포함할 수 있다. 읽기 DQS/DQ 정렬기(144_1)는 다수의 지연 셀들을 포함하는 DLL(delay locked loop)을 포함할 수 있다. 예를 들어, 읽기 DQS/DQ 정렬기(144_1)는 읽기 DQS 또는 읽기 DQ를 하나의 지연 셀에 의해 지연되는 시간 단위를 기반으로 지연시키면서, SoC(100)에서 읽기 DQ를 판별하기 위한 최적의 샘플링 포인트를 찾을 수 있다.
데이터 송신기(145)는 쓰기 데이터 큐(134)로부터 쓰기 데이터를 수신할 수 있다. 데이터 송신기(145)는 수신된 쓰기 데이터를 메모리 장치(200)로 전송할 수 있다. 데이터 송신기(145)는 쓰기 DQS 및 쓰기 DQ를 정렬하거나 또는 쓰기 DQS 및 쓰기 DQ 사이의 스큐를 조정하는 쓰기 DQS/DQ 정렬기(145_1)를 포함할 수 있다. 쓰기 DQS/DQ 정렬기(145_1)도 다수의 지연 셀들을 포함하는 DLL을 포함할 수 있다. 쓰기 DQS/DQ 정렬기(145_1)는 쓰기 DQS 또는 쓰기 DQ를 하나의 지연 셀에 의해 지연되는 시간 단위를 기반으로 지연시키면서, 메모리 장치(200)에서 쓰기 DQ를 판별하기 위한 최적의 샘플링 포인트를 찾을 수 있다.
트레이닝 회로(146)는 프로세서(110)에 의해 실행되고 온 칩 메모리(120)에 저장된 트레이닝 프로그램의 제어에 기초하여 동작할 수 있다. 트레이닝 회로(146)는 데이터 수신기(144)의 읽기 DQS/DQ 정렬기(144_1)로부터 정렬된 읽기 DQS 및 읽기 DQ를 수신하고 유효 윈도우 마진(valid window margin; 이하 VWM으로 지칭)을 계산할 수 있다. VWM은 데이터 수신기(144)가 메모리 장치(200)로부터 출력되는 읽기 DQS를 이용하여 메모리 장치(200)로부터 출력되는 읽기 DQ를 판별할 수 있는 최대의 구간을 의미할 수 있다. VWM은 읽기 DQS를 기준으로 읽기 DQ를 유효하게 샘플링할 수 있는 구간을 나타낼 수 있다. VWM은 도 3에서 후술한다. 트레이닝 회로(146)는 계산된 VWM을 온 칩 메모리(120)에 저장할 수 있다.
트레이닝 회로(146)는 트레이닝 프로그램의 제어에 기초하여 코드를 조정하거나, 변경하거나, 또는 보정할 수 있다. 트레이닝 회로(146)는 트레이닝 프로그램의 제어에 기초하여 명령 및 어드레스 생성기(143)를 제어할 수 있다. 예를 들어, 명령 및 어드레스 생성기(143)는 트레이닝 프로그램의 사전에 결정된 테스트 패턴에 따라 트레이닝을 위한 읽기 명령, 쓰기 명령, 테스트 데이터 등을 생성하고 메모리 장치(200)로 전송할 수 있다.
좀 더 구체적으로, 트레이닝 회로(146)는 명령 및 어드레스 생성기(143)가 모드 레지스터 쓰기 명령(MRW) 및 코드를 메모리 장치(200)로 출력하도록 명령 및 어드레스 생성기(143)를 제어할 수 있다. 트레이닝 회로(146)는 코드의 값을 명령 및 어드레스 생성기(143)에 제공할 수 있다. 모드 레지스터 쓰기 명령은 메모리 장치(200)의 모드 레지스터들(도 4에서 후술)에 코드를 쓰기 위한 명령일 수 있다. 트레이닝 회로(146)는 모드 레지스터 쓰기 명령을 통해 메모리 장치(200)의 모드 레지스터들에 저장되는 코드의 값을 변경함으로써 메모리 장치(200)의 동작 모드를 설정할 수 있다.
도 3은 도 2의 트레이닝 회로에 의해 계산되는 VWM을 예시적으로 도시한다. 도 3에서 가로 축은 시간(T)을 나타내고 세로 축은 읽기 DQ의 전압 레벨(V)을 나타낼 수 있다. 도 3의 음영은 읽기 DQ의 아이 다이어그램(eye diagram)을 나타낼 수 있다.
전술한대로, 트레이닝 회로(146)는 읽기 DQ의 VWM을 계산할 수 있다. 트레이닝 회로(146)는 읽기 DQS 또는 읽기 DQ를 지연시키면서 읽기 DQ를 판별하는 시점, 즉 샘플링 포인트를 변경할 수 있다. 트레이닝 회로(146)는 다수의 샘플링 포인트들 중에서 읽기 DQ를 유효하게 샘플링할 수 있는 유효 샘플링 포인트들을 찾고, 유효 샘플링 포인트들로부터 읽기 DQ의 VWM을 계산할 수 있다. 예를 들어, 도 3에서 도시된 샘플링 포인트들은 모두 유효 샘플링 포인트들일 수 있다. 트레이닝 회로(146)는 두 개의 유효 샘플링 포인트들 간의 차이 또는 그 차이보다 작은 값을 읽기 DQ의 VWM으로 계산할 수 있다.
도 4는 도 1의 메모리 장치의 블록도를 예시적으로 도시한다. 메모리 장치(200)는 CK 버퍼(201), WCK 버퍼(202), CA 버퍼(203), DQ 버퍼(204), DQS 버퍼(205), 뱅크(210), 로우 디코더(221), 컬럼 디코더(223), 명령 디코더(230), 어드레스 디멀티플렉서(240), 쓰기 드라이버(251), 입출력 센스 앰프(253), 쓰기 회로(261), 읽기 회로(263), 모드 레지스터들(270), 및 듀티 사이클 조정기(280; DCA)를 포함할 수 있다. 상술한 구성 요소들은 모두 메모리 장치(200) 내에서 하드웨어 방식으로 구현될 수 있다.
CK 버퍼(201)는 SoC(100)로부터 클럭(CK)을 수신할 수 있다. CK 버퍼(201)는 수신된 클럭(CK)을 메모리 장치(200)의 내부 구성 요소들로 제공할 수 있다. 전술한대로, SoC(100)는 차동 방식으로 클럭들(CK_t, CK_c)을 메모리 장치(200)로 전송할 수 있고 메모리 장치(200)는 클럭들(CK_t, CK_c)을 각각 수신하는 CK 버퍼들(201)을 포함할 수 있다.
WCK 버퍼(202)는 SoC(100)로부터 쓰기 클럭(WCK)을 수신할 수 있다. WCK 버퍼(202)는 수신된 쓰기 클럭(WCK)을 쓰기 회로(261) 및 읽기 회로(263)로 제공할 수 있다. 전술한대로, SoC(100)는 차동 방식으로 쓰기 클럭들(WCK_t, WCK_c)을 메모리 장치(200)로 전송할 수 있고 메모리 장치(200)는 쓰기 클럭들(WCK_t, WCK_c)을 각각 수신하는 WCK 버퍼들(202)을 포함할 수 있다.
CA 버퍼(203)는 CK 버퍼(201)를 통해 수신된 클럭(CK)에 기초하여 SoC(100)로부터 명령 및 어드레스(CMD/ADD)를 수신할 수 있다. CA 버퍼(203)는 클럭(CK)를 이용하여 명령 및 어드레스(CMD/ADD)를 샘플링할 수 있다. 즉, 메모리 장치(200)는 클럭(CK)에 동기될 수 있다. CA 버퍼(203)는 샘플링된 명령 및 어드레스(CMD/ADD)를 명령 디코더(230) 또는 어드레스 디멀티플렉서(240)로 제공할 수 있다.
DQ 버퍼(204)는 SoC(100)로부터 쓰기 DQ를 수신하거나 SoC(100)로 읽기 DQ를 출력할 수 있다. DQ는 양방향 신호이므로, DQ 버퍼(204)는 쓰기 DQ를 수신하는 수신기(미도시)와 읽기 DQ를 출력하는 송신기(미도시) 모두를 포함할 수 있다. DQS 버퍼(205)는 SoC(100)로부터 쓰기 DQS를 수신하거나 SoC(100)로 읽기 DQS를 출력할 수 있다. DQS는 양방향 신호이므로, DQS 버퍼(205)는 쓰기 DQS를 수신하는 수신기(미도시)와 읽기 DQS를 출력하는 송신기(미도시) 모두를 포함할 수 있다.
실시 예에 있어서, 메모리 장치(200)의 버퍼들(201~205)의 개수는 도 4에서 도시된 것으로 한정되지 않는다. 메모리 장치(200)의 용량, 동작 속도, 대역폭 등에 따라 버퍼들(201~205)의 개수가 결정될 수 있다.
뱅크(210)는 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 워드 라인들과 비트 라인들(미도시)에 연결되는 메모리 셀들을 포함할 수 있다. 뱅크(210)의 메모리 셀들의 개수는 뱅크(210)의 용량에 따라 결정될 수 있고 뱅크(210)의 개수는 메모리 장치(200)의 용량에 따라 결정될 수 있다.
로우 디코더(221)는 명령 디코더(230)의 제어에 기초하여 로우 어드레스를 디코딩할 수 있다. 로우 디코더(221)는 로우 어드레스에 대응하는 적어도 하나의 워드 라인을 선택하거나 활성화할 수 있다. 컬럼 디코더(223)는 명령 디코더(230)의 제어에 기초하여 컬럼 어드레스를 디코딩할 수 있다. 컬럼 디코더(223)는 컬럼 어드레스에 대응하는 적어도 하나의 컬럼 선택 라인을 선택하거나 활성화할 수 있다. 컬럼 선택 라인에는 적어도 하나 이상의 비트 라인들이 연결될 수 있다. 예를 들어, 로우 어드레스 및 컬럼 어드레스에 대응하는 메모리 셀들이 선택되고 선택된 메모리 셀들에 대한 데이터 입출력이 수행될 수 있다.
명령 디코더(230)는 SoC(100)의 DDR PHY(140)로부터 출력되는 명령을 디코딩할 수 있고 메모리 장치(200)의 내부 구성 요소들을 제어할 수 있다. 예를 들어, 명령 디코더(230)는 활성화 명령, 읽기 명령, 쓰기 명령, 프리차지 명령, 모드 레지스터 쓰기 명령, 다목적 명령(multi-purpose command; MPC) 등을 디코딩할 수 있다. 상술한 명령들은 모두 JEDEC 표준에서 사전에 결정될 수 있다.
어드레스 디멀티플렉서(240)는 명령 디코더(230)의 제어에 기초하여 명령과 함께 수신되는 어드레스(ADD)를 메모리 장치(200)의 내부 구성 요소들로 제공할 수 있다. 어드레스 디멀티플렉서(240)는 SoC(100)로부터 활성화 명령 또는 프리차지 명령과 함께 전송되는 어드레스를 로우 어드레스로서 로우 디코더(221)에 제공할 수 있다. 어드레스 디멀티플렉서(240)는 SoC(100)로부터 읽기 명령 또는 쓰기 명령과 함께 전송되는 어드레스를 컬럼 어드레스로서 컬럼 디코더(223)에 제공할 수 있다.
어드레스 디멀티플렉서(240)는 SoC(100)로부터 모드 레지스터 쓰기 명령과 함께 수신되는 어드레스를 코드로서 모드 레지스터들(270)로 제공할 수 있다. 여기서, 코드는 SoC(100)와 메모리 장치(200) 사이의 명령 및 어드레스 전송 경로들을 통해 전송될 수 있다. 코드는 모드 레지스터들(270)에 저장되므로, 연산 코드(OPCODE) 또는 피연산자(operand)로 지칭될 수도 있다.
어드레스 디멀티플렉서(240)는 다목적 명령과 함께 전송되는 어드레스를 메모리 장치(200)의 다목적 레지스터들(미도시), FIFO(262), 또는 FIFO(264)에 제공할 수 있다. 상술한 명령들과 어드레스는 메모리 장치(200)의 JEDEC 표준에 정의될 수 있다. 실시 예에 있어서, 명령과 함께 전송되는 어드레스는 메모리 장치(200)의 메모리 셀들의 어드레스를 포함하거나, 메모리 장치(200)의 동작 모드를 설정하는데 사용되는 코드를 포함하거나, 또는 트레이닝을 위해 뱅크(210)가 아닌 FIFO(262) 또는 FIFO(264)에 저장되는 테스트 데이터를 포함할 수 있다.
쓰기 드라이버(251)는 쓰기 회로(261)로부터 쓰기 데이터를 수신하고 명령 디코더(230)의 제어에 기초하여 입출력 라인(GIO)을 통해 선택된 메모리 셀들에 쓰기 데이터를 쓸 수 있다. 입출력 센스 앰프(253)는 선택된 메모리 셀들로부터 입출력 라인(GIO)를 통해 출력되는 읽기 데이터를 감지하고 읽기 데이터를 읽기 회로(263)로 제공할 수 있다.
쓰기 회로(261)는 SoC(100)로부터 DQS 버퍼(205) 및 DQ 버퍼(204)를 통해 쓰기 DQS 및 쓰기 DQ를 수신할 수 있다. 쓰기 회로(261)는 쓰기 DQS를 이용하여 쓰기 DQ를 샘플링하거나 병렬화하고 샘플링 결과를 FIFO(First-In First-Out; 262)에 저장할 수 있다. 쓰기 회로(261)는 FIFO(262)에 저장된 쓰기 데이터를 쓰기 드라이버(251)에 제공할 수 있다. 쓰기 회로(261)는 내부 쓰기 클럭(IWCK)에 기초하여 동작할 수 있다. 읽기 회로(263)는 입출력 센스 앰프(253)로부터 읽기 데이터를 수신할 수 있다. 읽기 회로(263)는 수신된 읽기 데이터를 FIFO(264)에 저장할 수 있다. 읽기 회로(263) 읽기 데이터를 직렬화하고 DQS 버퍼(205) 및 DQ 버퍼(204)를 통해 읽기 DQS 및 읽기 DQ를 SoC(100)로 전송할 수 있다. 읽기 회로(263)는 내부 쓰기 클럭(IWCK)에 기초하여 동작할 수 있다. 메모리 장치(200)는 쓰기 클럭(WCK) 또는 내부 쓰기 클럭(IWCK)에 동기되어 동작할 수 있다.
실시 예에 있어서, 읽기 회로(263)는 쓰기 명령, 다목적 명령 등을 디코딩한 명령 디코더(230)의 제어에 기초하여, SoC(100)로부터 쓰기 명령, 다목적 명령 등과 함께 전송되는 어드레스를 FIFO(264)에 저장할 수 있다. 이 때, FIFO(264)에 저장되는 어드레스는 데이터로서 SoC(100)로 출력될 수 있고 뱅크(210)에는 저장되지 않을 수 있다. 이후, 읽기 회로(263)는 읽기 명령을 디코딩한 명령 디코더(230)의 제어에 기초하여, FIFO(264)에 저장된 어드레스를 데이터로서 SoC(100)로 출력할 수 있다.
모드 레지스터들(270)은 어드레스 디멀티플렉서(240)로부터 제공되는 코드를 저장할 수 있다. 모드 레지스터들(270)의 개수, 어드레스, 코드의 크기 등은 JEDEC 표준에 정의될 수 있다. SoC(100)는 모드 레지스터 쓰기 명령과 코드를 발행함으로써 모드 레지스터들(270)에 저장된 값들을 변경하고 그리고 메모리 장치(200)의 동작 조건, 동작 모드 등을 설정할 수 있다.
듀티 사이클 조정기(280)는 WCK 버퍼(202)를 통해 쓰기 클럭(WCK)을 수신하고 내부 쓰기 클럭(IWCK)을 생성할 수 있다. 내부 쓰기 클럭(IWCK)은 메모리 장치(200)의 내부에서 쓰기 클럭(WCK)이 버퍼링되거나 증폭된 신호이고, 쓰기 클럭(WCK)과 실질적으로 동일할 수 있고, 그리고 메모리 장치(200)의 데이터 입출력에 사용될 수 있다. 내부 쓰기 클럭(IWCK)은 메모리 장치(200)의 WCK 버퍼(202)로부터 출력되는 신호이고 쓰기 클럭(WCK)은 메모리 장치(200)의 WCK 버퍼(202)로 입력된 신호이다. 듀티 사이클 조정기(280)는 모드 레지스터들(270)에 저장된 코드의 값에 따라 내부 쓰기 클럭(IWCK)의 듀티 사이클을 조정할 수 있다. 듀티 사이클 조정기(280)는 메모리 장치(200) 외부의 쓰기 클럭(WCK)이 아닌 내부 쓰기 클럭(IWCK)의 듀티 사이클을 조정할 수 있다.
표 1은 모드 레지스터들(270)에 저장되는 코드(OP[n:0], n은 자연수)의 값에 따라 듀티 사이클 조정기(280)가 내부 쓰기 클럭(IWCK)의 듀티 사이클을 조정하는 스텝을 예시적으로 나타낸다. 표 1에서 DCA의 유형(type)은 “W”이고 W는 모드 레지스터들(270)에 대한 쓰기를 나타낸다. 표 1에서 코드(OP[n:0])는 4비트로 구성될 수 있으나, 본 발명의 범위는 이에 한정되지 않는다.
Function Type OP Data
DCA W OP[3:0] 0000b: 0 Steps (Default)
0001b: -1 Steps
0010b: -2 Steps
0011b: -3 Steps
0100b: -4 Steps
0101b: -5 Steps
0110b: -6 Steps
0111b: -7 Steps
1000b: RFU
1001b: +1 Steps
1010b: +2 Steps
1011b: +3 Steps
1100b: +4 Steps
1101b: +5 Steps
1110b: +6 Steps
1111b: +7 Steps
모드 레지스터들(270)에 저장된 코드(OP[3:0])의 값이 '0000b'이면, 듀티 사이클 조정기(280)는 내부 쓰기 클럭(IWCK)의 듀티 사이클을 조정하지 않을 수 있다. 코드(OP[3:0])의 값이 '0001b'부터 '0111b'까지의 값들 중 하나로 변경되면, 듀티 사이클 조정기(280)는 내부 쓰기 클럭(IWCK)의 듀티 사이클을 코드(OP[3:0])의 값에 대응하는 스텝만큼 감소시킬 수 있다. 듀티 사이클 조정기(280)는 -1 스텝부터 -7 스텝까지 내부 쓰기 클럭(IWCK)의 듀티 사이클을 조정할 수 있다. 유사하게, 코드(OP[3:0])의 값이 '1001b'부터 '1111b'까지의 값들 중 하나로 변경되면, 듀티 사이클 조정기(280)는 내부 쓰기 클럭(IWCK)의 듀티 사이클을 코드(OP[3:0])의 값에 대응하는 스텝만큼 증가시킬 수 있다. 듀티 사이클 조정기(280)는 +1 스텝부터 +7 스텝까지 내부 쓰기 클럭(IWCK)의 듀티 사이클을 조정할 수 있다. 표 1의 단위 스텝의 크기는 사전에 결정될 수 있다.
도 5는 본 발명의 실시 예에 따라 SoC가 메모리 장치의 내부 쓰기 클럭의 듀티 사이클을 조정하기 위한 코드의 값들 중 최대의 VWM에 대응하는 값을 찾기 위한 순서도를 예시적으로 도시한다. 도 5는 도 1 내지 도 4를 참조하여 설명될 것이다.
S110 단계에서, SoC(100)는 모드 레지스터 쓰기 명령 및 메모리 장치(200)의 내부 쓰기 클럭(IWCK)의 듀티 사이클을 조정하기 위한 코드(OP[n:0])를 메모리 장치(200)로 전송할 수 있다. SoC(100)는 모드 레지스터들(270)의 DCA 값을 사전에 결정된 초기 값(예를 들어, 표 1의 경우, '0000b')으로 설정할 수 있다. 여기서, DCA 값은 모드 레지스터 쓰기 명령에 의해 모드 레지스터들(270)에 저장되는 값이고 듀티 사이클 조정기(280)에 제공될 수 있다. 내부 쓰기 클럭(IWCK)의 듀티 사이클은 초기 값을 갖는 코드(OP[n:0])에 따라 설정될 수 있다.
S120 단계에서, SoC(100)는 코드(OP[n:0])의 값이 끝 값을 초과하였는지 여부를 판별할 수 있다. 끝 값은 코드(OP[n:0])의 값들 중 임의의 값(예를 들어, 코드(OP[n:0])의 최대 값 또는 최소 값)으로 사전에 설정될 수 있다. S120 단계는 코드(OP[n:0])가 가질 수 있는 모든 값들에 대한 VWM들이 계산될 때까지 반복적으로 수행될 수 있다. 코드(OP[n:0])의 값이 끝 값을 초과하지 않았으면(Yes) S130 단계가 수행될 수 있고 그렇지 않으면(No) S170 단계가 수행될 수 있다. 도 5의 S120 단계의 부등호는 예시적인 것에 불과하다. 즉, 코드(OP[n:0])가 가질 수 있는 모든 값들에 대한 VWM들이 계산되지 않으면 S130 단계가 수행될 수 있고 그렇지 않으면 S170 단계가 수행될 수 있다.
S130 단계에서, SoC(100)는 테스트 패턴에 기초하여 쓰기 명령을 메모리 장치(200)로 전송할 수 있다. 테스트 패턴은 SoC(100)의 온 칩 메모리(120)에 저장된 테스트 프로그램에 기반하고 사전에 결정될 수 있다. 예를 들어, 테스트 패턴에 따라 SoC(100)로부터 쓰기 명령이 출력될 때 데이터 송신기(145)는 동작하지 않을 수 있다. 명령 및 어드레스 생성기(143)는 쓰기 명령과 사전에 결정된 테스트 데이터를 명령 및 어드레스의 전송 경로들을 통해 메모리 장치(200)로 전송할 수 있다. 메모리 장치(200)는 테스트 패턴에 따른 쓰기 명령을 디코딩하고 사전에 결정된 테스트 데이터를 뱅크(210)가 아닌 FIFO(264)에 곧바로 저장할 수 있다. 테스트 패턴의 쓰기 명령은 뱅크(210)에 데이터를 쓰기 위한 쓰기 명령과 상이할 수 있고 다목적 명령일 수 있다.
S140 단계에서, SoC(100)는 테스트 패턴에 기초하여 읽기 명령을 메모리 장치(200)로 전송할 수 있다. 메모리 장치(200)는 읽기 명령에 따라 FIFO(264)에 저장된 테스트 데이터를 SoC(100)로 출력할 수 있다. 메모리 장치(200)는 테스트 데이터에 기초하여 읽기 DQS 및 읽기 DQ를 SoC(100)로 출력할 수 있다. SoC(100)는 S160 단계에서 클럭(CK)에 동기된 모드 레지스터 쓰기 명령 및 코드(OP[n:0])가 메모리 장치(200)로 전송됨에 따라 읽기 DQS 및 읽기 DQ를 수신할 수 있다.
예를 들어, 읽기 DQS/DQ 정렬기(144_1)는 코드(OP[n:0])의 값이 변경되면, 샘플링을 위해, 읽기 DQS 및 읽기 DQ를 정렬할 수 있다. 도 5에서 도시되진 않았으나, 읽기 DQS 및 읽기 DQ가 정렬되지 않으면 S150 단계는 생략되고 S160 단계가 진행될 수 있다. 읽기 DQS 및 읽기 DQ가 정렬되면 S150 단계가 수행될 수 있다.
S150 단계에서, SoC(100)는 읽기 DQS/DQ 정렬기(144_1)에 의해 정렬된 읽기 DQS 및 읽기 DQ에 기초하여 코드(OP[n:0])의 값에 대한 VWM을 계산할 수 있다. 예를 들어, S150 단계가 최초로 수행되는 경우 코드(OP[n:0])의 값은 초기 값일 수 있다. 그 다음 S150 단계가 다시 수행되는 경우 코드(OP[n:0])의 값은 다음 값일 수 있다. 상술한 방식으로 코드(OP[n:0])에 대한 모든 값들에 대한 VWM들이 계산될 수 있다.
S160 단계에서, SoC(100)는 모드 레지스터 쓰기 명령 및 다음 값을 갖는 코드(OP[n:0])를 메모리 장치(200)로 전송할 수 있다. SoC(100)는 코드(OP[n:0])의 이전 값을 다음 값으로 설정하거나 변경할 수 있다. SoC(100)는 모드 레지스터들(270)의 DCA 값을 다음 값으로 설정할 수 있다. SoC(100)는 다양한 방식으로 코드(OP[n:0])의 값을 변경할 수 있다. 예를 들어, SoC(100)는 코드(OP[n:0])의 값을 순차적으로 증가시키거나 감소시킬 수 있다. 코드(OP[n:0])의 이전 값과 코드(OP[n:0])의 다음 값 사이의 차이는 코드(OP[n:0])의 LSB(least significant bit)에 대응하는 값일 수 있다. 메모리 장치(200)의 내부 쓰기 클럭(IWCK)의 듀티 사이클은 다음 값을 갖는 코드(OP[n:0])에 따라 설정될 수 있다. 표 1에서 전술한대로, 코드(OP[n:0])의 이전 값에 대응하는 메모리 장치(200)의 내부 쓰기 클럭(IWCK)의 듀티 사이클 그리고 코드(OP[n:0])의 다음 값에 대응하는 메모리 장치(200)의 내부 쓰기 클럭(IWCK)의 듀티 사이클 사이의 차이(또는 스텝)는 사전에 결정된 값일 수 있다.
S170 단계에서, SoC(100)는 S120 내지 S160 단계들을 반복적으로 수행함으로써 계산된 복수의 VWM들 중 최대의 VWM을 찾을 수 있다. 여기서, 복수의 VWM들은 모두 SoC(100)의 온 칩 메모리(120)에 저장될 수 있다.
S180 단계에서, SoC(100)는 모드 레지스터 쓰기 명령 및 최대의 VWM에 대응하는 코드(OP[n:0])의 타깃 값을 메모리 장치(200)로 전송할 수 있다 코드(OP[n:0])의 타깃 값은 모드 레지스터들(270)에 저장되고 듀티 사이클 조정기(280)에 제공될 수 있다. 따라서, 코드(OP[n:0])의 타깃 값에 따라 메모리 장치(200)의 내부 쓰기 클럭(IWCK)의 듀티 사이클이 설정되거나 조정될 수 있다. 실시 예에 있어서, 도시되진 않았으나, S180 단계 이후에, SoC(100)는 코드(OP[n:0])의 타깃 값에 대응하는 메모리 장치(200)의 내부 쓰기 클럭(IWCK)의 듀티 사이클에서 읽기 DQS 및 읽기 DQ를 다시 정렬할 수도 있다.
도 6은 도 5의 S160 단계에서 SoC가 메모리 장치로 모드 레지스터 쓰기 명령 및 코드를 전송하는 타이밍도를 예시적으로 도시한다. 표 2는 도 6의 T1, T2 시점들에서의 MRW-1 명령 및 MRW-2 명령의 예시를 나타낸다. 도 6과 표 2는 함께 설명될 것이다.
COMMAND CA[0] CA[1] CA[2] CA[3] CA[4] CA[5] CA[6] Edge
MRW-1 L L L H L L OP[7] Rising
OP[0] OP[1] OP[2] OP[3] OP[4] OP[5] OP[6] Falling
MRW-2 L L L H H L L Rising
MA[0] MA[1] MA[2] MA[3] MA[4] MA[5] MA[6] Falling
SoC(100)는 T1 시점에서 MRW-1 명령을 발행하고 T2 시점에서 MRW-2 명령을 발행함으로써 메모리 장치(200)로 모드 레지스터 쓰기 명령을 전송할 수 있다. MRW-1 명령은 코드(OP[7:0])의 값을 포함할 수 있고 MRW-2 명령은 MRW-1 명령에 포함된 코드(OP[7:0])의 값을 모드 레지스터들(270) 중 어느 레지스터들에 쓸 지를 나타내는 어드레스(MA[6:0])의 값을 포함할 수 있다. 도 6 및 표 2에서 SoC(100)와 메모리 장치(200) 사이의 명령 및 어드레스 전송 라인들의 개수는 7개이고(즉, CA[6:0]), 메모리 장치(200)의 내부 쓰기 클럭(IWCK)의 듀티 사이클을 조정하기 위한 코드(OP[n:0])의 비트 수는 7이고(즉, OP[7:0]), 그리고 코드(OP[7:0])가 저장되는 모드 레지스터들(270)의 어드레스는 MA[6:0]으로 가정한다. 예를 들어, MA[6:0]은 1EH일 수 있다(즉, MR30). 표 2에서 L은 논리 0을 H는 논리 1을 나타낸다.
SoC(100)가 표 2에서 정의된대로 MRW-1 명령을 발행하면, 명령 디코더(230)는 클럭(CK_t)의 상승 엣지에서의 CA[5:0]의 논리 상태들(L, L, H, L, L, L)을 디코딩할 수 있다. 어드레스 디멀티플렉서(240)는 명령 디코더(230)의 제어에 기초하여 클럭(CK_t)의 상승 엣지에서의 CA[6]의 논리 상태 그리고 클럭(CK_t)의 하강 엣지에서의 CA[6:0]의 논리 상태들을 코드(OP[7:0])의 값으로서 저장할 수 있다.
SoC(100)가 표 2에서 정의된대로 MRW-2 명령을 발행하면, 명령 디코더(230)는 클럭(CK_t)의 상승 엣지에서의 CA[6:0]의 논리 상태들(L, L, H, H, L, L, L)을 디코딩할 수 있다. 어드레스 디멀티플렉서(240)는 명령 디코더(230)의 제어에 기초하여 클럭(CK_t)의 하강 엣지에서의 CA[6:0]의 논리 상태들을 모드 레지스터들(270) 중 MRW-1 명령에 포함된 코드(OP[7:0])의 값이 저장될 모드 레지스터들의 어드레스(MA[6:0])로서 저장할 수 있다. 어드레스 디멀티플렉서(240)는 MRW-2 명령에 포함된 어드레스(MA[6:0])에 대응하는 모드 레지스터들에 MRW-1 명령에 포함된 코드(OP[7:0])의 값을 저장할 수 있다. 이후, 듀티 사이클 조정기(280)는 MRW-1 명령에 포함된 코드(OP[7:0])의 값(DCA의 값)에 따라 내부 쓰기 클럭(IWCK)의 듀티 사이클을 조정할 수 있다.
SoC(100)는 MRW-1 명령 및 MRW-2 명령을 발행한 후 tMOD만큼 시간이 경과하면 메모리 장치(200)로 임의의 명령을 더 전송할 수 있다. 예를 들어, 임의의 명령은 S130 및 S140 단계들의 쓰기 명령, 다목적 명령, 읽기 명령 등을 포함할 수 있다.
도 7은 도 5의 S140 단계에서 SoC가 메모리 장치로 읽기 명령을 전송하는 타이밍도를 예시적으로 도시한다. 도 7에서 SoC(100)와 메모리 장치(200) 사이의 명령 및 어드레스 전송 라인들의 개수는 7개인 것으로 가정한다(즉, CA[6:0]). 도 7에서 읽기 DQS는 RDQS_t 및 RDQS_c로 도시되었다.
SoC(100)는 읽기 명령을 발행하기 전에 T1 시점에서 쓰기 클럭(WCK)과 클럭(CK) 사이의 동기화를 위해 CAS(WS_RD) 명령을 발행할 수 있다. 예를 들어, CAS(WS_RD) 명령의 임의의 비트는 WCK2CK 동기화 비트일 수 있다. CAS(WS_RD=1)은 읽기 명령이 곧바로 뒤따르는 것을 의미한다. SoC(100)는 T1 시점 이후의 T2 시점에서 읽기 명령을 곧바로 발행할 수 있다. 쓰기 클럭(WCK)은 메모리 장치(200)의 데이터 입출력에 주로 사용되므로, SoC(100)는 메모리 장치(200)로 쓰기 명령 또는 읽기 명령을 전송한 후에만 쓰기 클럭(WCK)을 메모리 장치(200)로 제공하고, 데이터 입출력이 완료되면 더 이상 쓰기 클럭(WCK)을 메모리 장치(200)로 제공하지 않을 수 있다. 따라서, 쓰기 클럭(WCK)과 클럭(CK) 사이의 동기화가 필요하다.
도 7을 참조하면, SoC(100)는 T1 시점에서 tWCKEN_RD만큼 시간이 경과한 이후부터(즉, T3 시점부터) 쓰기 클럭들(WCK_t, WCK_c)의 논리 상태들을 논리 0 및 논리 1로서 구동하는 것을 시작할 수 있다. WCK2CK 동기화 동작은 T1 시점부터 tWCKEN_RD + tWCKPRE_static만큼 시간이 경과한 이후부터(즉, T4 시점부터) 시작할 수 있다. SoC(100)는 읽기 데이터가 출력되기 전에 tWCKPRE_static + tWCKPRE_Toggle_RD 동안(즉, T3 내지 T6 동안) 쓰기 클럭들(WCK_t, WCK_c)을 구동할 수 있다. SoC(100)는 tWCKPRE_static 동안 쓰기 클럭들(WCK_t, WCK_c)의 논리 상태들을 유지할 수 있고 tWCKPRE_Toggle_RD 동안 쓰기 클럭들(WCK_t, WCK_c)의 논리 상태들을 토글링할 수 있다.
SoC(100)는 읽기 데이터가 출력되는 동안에도 쓰기 클럭들(WCK_t, WCK_c)을 구동할 수 있다. SoC(100)는 읽기 데이터의 출력이 완료되어도 T7 시점부터 tWCKPST 동안 쓰기 클럭들(WCK_t, WCK_c)을 구동할 수 있다. SoC(100)는 읽기 데이터의 출력이 완료되고 tWCKPST 만큼 시간이 경과하면(T8 이후) 쓰기 클럭들(WCK_t, WCK_c)의 구동을 중지할 수 있다. 도 7에서 쓰기 클럭들(WCK_t, WCK_c)의 주파수는 클럭들(CK_t, CK_c)의 주파수의 약 4배인 것으로 예시적으로 도시되었다.
tWCK2CK는 쓰기 클럭(WCK)과 클럭(CK) 사이의 스큐(또는 위상 오프셋)를 나타낼 수 있다. tWCK2CK의 범위는 JEDEC 표준에 사전에 정의될 수 있다. tWCK2CK가 사전에 결정된 범위 이내로 조정되면, WCK2CK의 동기화 동작이 완료될 수 있다. 메모리 장치(200)는 WCK2CK 동기화 상태로 진입할 수 있고 이 상태는 메모리 장치(200)가 읽기 DQS 및 읽기 DQ를 출력하는 것을 완료할 때까지 유지될 수 있다.
SoC(100)가 T2 시점에서 읽기 명령을 발행하고 RL(read latency)만큼 경과된 후, 즉 T6 시점부터 T7 시점 동안 읽기 DQ가 출력될 수 있다. 여기서 BL은 버스트 랭스(예를 들어, 16, 32 등)를 나타내고 n은 4, 8 등과 같은 자연수일 수 있다. tWCKDQO는 쓰기 클럭(WCK)과 읽기 DQS 사이의 간격을 나타낸다. tRPRE는 읽기 DQ에 대한 프리-엠블(pre-amble) 구간을 나타내고 tRPST는 읽기 DQ에 대한 포스트-엠블(post-amble) 구간을 나타낸다. 메모리 장치(200)는 읽기 DQ를 출력하기 전에 tRPRE만큼 앞서서 읽기 DQS를 출력하고 읽기 DQ를 출력하고 난 다음에 tRPST 동안 읽기 DQS를 출력할 수 있다.
실시 예에 있어서, 메모리 장치(200)는 도 6의 T1 시점 및 T2 시점에서의 모드 레지스터 쓰기 명령을 반복적으로 수신할 수 있다(S160 단계 참조). 모드 레지스터들(270)에 저장되는 코드(OP[n:0])의 값이 변경되면 메모리 장치(200)의 내부 쓰기 클럭(IWCK)의 듀티 사이클도 변경될 수 있다. 그러나, 도 7의 T1 시점 및 T2 시점에서의 읽기 명령이 반복적으로 전송되어도, 도 7에서 도시된 SoC(100)와 메모리 장치(200) 사이의 쓰기 클럭들(WCK_t, WCK_c)의 듀티 사이클은 변경되지 않을 수 있다. 즉, 모드 레지스터들(270)에 저장되는 코드(OP[n:0])의 값이 변경되면 내부 쓰기 클럭(IWCK)의 듀티 사이클만 변경되고 SoC(100)와 메모리 장치(200) 사이의 쓰기 클럭(WCK)의 듀티 사이클은 변경되지 않을 수 있다.
도 8은 도 5의 순서도에 따라 SoC 내부에 저장되는 VWM들을 예시적으로 도시한다. 도시의 편의를 위해, 도 8에서 메모리 컨트롤러(130)의 구성 요소들과 DDR PHY(140)의 구성 요소들의 도시는 생략되었다.
온 칩 메모리(120)에 저장된 표 1은 도 5의 S150 단계의 수행 결과일 수 있다. 예를 들어, 코드(OP[n:0])는 값들(value[1], value[2], …, value[k]; k는 2 이상의 자연수)을 가질 수 있다. 도 8의 표를 참조하면, 코드(OP[n:0])의 모든 값들(value[1], value[2], …, value[k])에 대한 각각의 복수의 VWM들(VWM1~VWMk)이 프로세서(110)에 의해 실행되는 트레이닝 프로그램에 의해 계산될 수 있다.
예를 들어, 복수의 VWM들(VWM1~VWMk) 중에서 VWM2가 최대이면, 코드(OP[n:0])의 타깃 값은 value[2]일 수 있다(즉, 최적의 경우). 트레이닝 프로그램은 value[2]를 갖는 코드(OP[n:0])과 함께 모드 레지스터 쓰기 명령을 메모리 장치(200)로 전송하여 메모리 장치(200)의 내부 쓰기 클럭(IWCK)의 듀티 사이클의 조정을 완료할 수 있다.
도 9는 본 발명의 다른 실시 예에 따른 전자 장치의 블록도를 예시적으로 도시한다. 전자 장치(30)는 SoC(300) 및 메모리 장치(400)를 포함할 수 있다. SoC(300)는 메모리 컨트롤러(330) 및 DDR PHY(340)를 포함할 수 있다. 도 9의 SoC(300), 메모리 컨트롤러(330), DDR PHY(340), 및 메모리 장치(400)는 도 1의 SoC(100), 메모리 컨트롤러(330), DDR PHY(340), 및 메모리 장치(400)와 유사하게 구현될 수 있다.
다만, 도 9를 참조하면, SoC(300)의 DDR PHY(340)는 제 1 쓰기 클럭(WCK1) 및 제 2 쓰기 클럭(WCK2)을 메모리 장치(400)로 제공할 수 있다. 제 1 쓰기 클럭(WCK1)은 SoC(300)와 메모리 장치(400) 사이의 제 1 경로들에 따른 제 1 데이터 입출력을 위해 메모리 장치(400)로 제공될 수 있다. 제 2 쓰기 클럭(WCK2)은 SoC(300)와 메모리 장치(400) 사이의 제 2 경로들에 따른 제 2 데이터 입출력을 위해 메모리 장치(400)로 제공될 수 있다. 예를 들어, LDQS 및 DQ[7:0]는 제 1 경로를 통해 전송되는 신호들이다. UDQS 및 DQ[15:8])는 제 2 경로를 통해 전송되는 신호들이다.
SoC(300)는 도 5의 순서도와 유사하게, 제 1 쓰기 클럭(WCK1)에 기초하여 메모리 장치(400)의 내부에서 생성되고 제 1 데이터 입출력을 위해 사용되는 제 1 내부 쓰기 클럭(IWCK1)의 듀티 사이클을 조정하는 제 1 코드의 타깃 값을 찾을 수 있다. 또한, SoC(300)는 도 5의 순서도와 유사하게, 제 2 쓰기 클럭(WCK2)에 기초하여 메모리 장치(400)의 내부에서 생성되고 제 2 데이터 입출력을 위해 사용되는 제 2 내부 쓰기 클럭(IWCK2)의 듀티 사이클을 조정하는 제 2 코드의 타깃 값을 찾을 수 있다. 예를 들어, 제 1 코드는 표 1의 OP[3:0]이고 제 2 코드는 표 1의 OP[7:4]일 수 있다. 도 9에서 설명된 쓰기 클럭들의 개수, DQS들의 개수, DQ들의 개수, 코드의 비트 수는 모두 예시적인 값들에 불과하다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 쉽게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 쉽게 변형하여 실시할 수 있는 기술들도 포함될 것이다.

Claims (20)

  1. 메모리 장치로 전송되는 제 1 클럭을 생성하는 제 1 클럭 생성기;
    상기 메모리 장치로 전송되는 제 2 클럭을 생성하는 제 2 클럭 생성기;
    상기 제 2 클럭에 기초하여 상기 메모리 장치의 내부에서 생성되는 제 3 클럭의 듀티 사이클을 조정하는 코드를 생성하고 그리고 상기 코드를 상기 메모리 장치의 모드 레지스터들에 저장하기 위한 명령을 생성하되, 상기 제 3 클럭은 상기 메모리 장치의 데이터 입출력에 사용되는 명령 및 어드레스 생성기;
    상기 제 1 클럭에 동기된 상기 명령 및 상기 코드를 수신한 상기 메모리 장치로부터 출력되는 데이터 스트로브 신호 및 데이터 입출력 신호를 수신하는 데이터 수신기; 및
    상기 데이터 스트로브 신호 및 상기 데이터 입출력 신호에 기초하여 상기 코드에 대한 복수의 유효 윈도우 마진들을 계산하는 트레이닝 회로를 포함하는 시스템 온 칩.
  2. 제 1 항에 있어서,
    상기 명령 및 어드레스 생성기는 상기 명령 및 상기 코드를 반복적으로 생성하고, 그리고
    상기 명령 및 어드레스 생성기에 의해 반복적으로 생성되는 상기 코드의 복수의 값들은 상기 복수의 유효 윈도우 마진들에 각각 대응하는 시스템 온 칩.
  3. 제 1 항에 있어서,
    상기 명령 및 어드레스 생성기는 상기 메모리 장치의 상기 모드 레지스터들을 나타내는 어드레스를 더 생성하고 그리고 상기 제 1 클럭에 동기된 상기 어드레스를 상기 메모리 장치로 전송하는 시스템 온 칩.
  4. 제 1 항에 있어서,
    상기 메모리 장치의 듀티 사이클 조정기는 상기 모드 레지스터들에 저장된 상기 코드의 값에 따라 상기 제 3 클럭의 상기 듀티 사이클을 조정하는 시스템 온 칩.
  5. 제 1 항에 있어서,
    상기 트레이닝 회로는 상기 코드의 복수의 값들 중 상기 복수의 유효 윈도우 마진들 중 최대의 유효 윈도우 마진에 대응하는 타깃 값을 찾고, 그리고
    상기 명령 및 어드레스 생성기는 상기 코드의 상기 타깃 값을 상기 메모리 장치의 상기 모드 레지스터들에 저장하기 위한 명령 및 상기 코드의 상기 타깃 값을 상기 메모리 장치로 전송하는 시스템 온 칩.
  6. 제 1 항에 있어서,
    상기 제 2 클럭의 주파수는 상기 제 1 클럭의 주파수보다 높은 시스템 온 칩.
  7. 제 1 항에 있어서,
    상기 명령 및 어드레스 생성기에 의해 상기 코드의 제 1 값이 제 2 값으로 변경되고,
    상기 코드의 상기 제 1 값이 상기 메모리 장치로 전송되는 경우의 상기 제 2 클럭의 듀티 사이클과 상기 코드의 상기 제 2 값이 상기 메모리 장치로 전송되는 경우의 상기 제 2 클럭의 듀티 사이클은 서로 동일하고, 그리고
    상기 코드의 상기 제 1 값에 따라 조정된 상기 제 3 클럭의 제 1 듀티 사이클과 상기 코드의 상기 제 2 값에 따라 조정된 상기 제 3 클럭의 제 2 듀티 사이클은 서로 다른 시스템 온 칩.
  8. 제 1 항에 있어서,
    상기 명령 및 어드레스 생성기는 상기 코드의 값이 변경되면 상기 메모리 장치로 쓰기 명령 및 테스트 데이터를 전송하는 시스템 온 칩.
  9. 제 1 항에 있어서,
    상기 제 2 클럭 생성기는 상기 메모리 장치로 출력되는 상기 제 2 클럭의 듀티 사이클을 조정하는 듀티 사이클 조정기를 포함하는 시스템 온 칩.
  10. 제 1 항에 있어서,
    상기 메모리 장치는 LPDDR5 SDRAM(low power double data rate 5 synchronous dynamic random access memory) 장치이고, 그리고
    상기 명령은 모드 레지스터 쓰기 명령인 시스템 온 칩.
  11. 메모리 장치와 연결되는 시스템 온 칩의 동작 방법에 있어서:
    제 1 클럭에 동기되어 상기 메모리 장치로 전송되는 코드를 변경하되, 상기 코드는 제 2 클럭에 기초하여 상기 메모리 장치의 내부에서 생성되고 상기 메모리 장치의 데이터 입출력에 사용되는 제 3 클럭의 듀티 사이클을 조정하는 단계;
    상기 코드를 수신하는 상기 메모리 장치로부터 출력되는 데이터 스트로브 신호 및 데이터 입출력 신호에 기초하여 상기 코드에 대한 복수의 유효 윈도우 마진들을 계산하는 단계; 및
    상기 복수의 유효 윈도우 마진들 중 최대의 유효 윈도우 마진에 대응하는 상기 코드의 타깃 값을 상기 메모리 장치로 전송하는 단계를 포함하는 시스템 온 칩의 동작 방법.
  12. 제 11 항에 있어서,
    상기 코드를 변경하는 단계는:
    상기 코드의 값을 상기 메모리 장치의 모드 레지스터들에 쓰기 위한 명령을 생성하는 단계;
    상기 코드의 상기 값이 저장되는 상기 모드 레지스터들을 나타내는 어드레스를 생성하는 단계; 및
    상기 제 1 클럭에 동기된 상기 명령, 상기 어드레스, 및 상기 코드의 상기 값을 상기 메모리 장치로 전송하는 단계를 포함하는 시스템 온 칩의 동작 방법.
  13. 제 11 항에 있어서,
    상기 코드에 대한 상기 복수의 유효 윈도우 마진들을 계산하는 단계는:
    상기 메모리 장치에 테스트 데이터를 쓰기 위한 쓰기 명령을 생성하고 상기 메모리 장치로 상기 쓰기 명령을 전송하는 단계; 및
    상기 쓰기 명령에 의해 상기 메모리 장치에 저장된 상기 테스트 데이터를 읽기 위한 읽기 명령을 생성하고 상기 메모리 장치로 상기 읽기 명령을 전송하는 단계를 포함하는 시스템 온 칩의 동작 방법.
  14. 제 13 항에 있어서,
    상기 데이터 스트로브 신호 및 상기 데이터 입출력 신호는 상기 제 3 클럭에 기초하여 동작하는 상기 메모리 장치로부터 출력되는 시스템 온 칩의 동작 방법.
  15. 제 14 항에 있어서,
    상기 쓰기 명령을 상기 메모리 장치로 전송하는 단계는:
    상기 테스트 데이터를, 명령 및 어드레스의 전송 경로들을 통해 상기 메모리 장치로 전송하는 단계를 포함하는 시스템 온 칩의 동작 방법.
  16. 제 1 클럭 및 상기 제 1 클럭의 주파수보다 높은 주파수를 갖는 제 2 클럭을 생성하도록 구성되는 시스템 온 칩; 및
    상기 시스템 온 칩으로부터 출력되는 상기 제 1 클럭 및 상기 제 2 클럭에 동기된 메모리 장치를 포함하되,
    상기 시스템 온 칩은:
    상기 제 1 클럭에 동기된 명령 및 코드를 생성하고, 그리고
    상기 명령 및 상기 코드를 상기 메모리 장치로 전송함으로써, 상기 제 2 클럭에 기초하여 상기 메모리 장치의 내부에서 생성되고 상기 메모리 장치의 데이터 입출력에 사용되는 제 3 클럭의 듀티 사이클을 트레이닝하도록 더 구성되는 전자 장치.
  17. 제 16 항에 있어서,
    상기 데이터 입출력인 제 1 데이터 입출력은 상기 시스템 온 칩과 상기 메모리 장치 사이의 제 1 경로들을 통해 수행되고,
    상기 메모리 장치의 제 2 데이터 입출력은 상기 시스템 온 칩과 상기 메모리 장치 사이의 제 2 경로들을 통해 수행되고, 그리고
    상기 시스템 온 칩은:
    상기 제 2 클럭의 상기 주파수와 동일한 주파수를 갖는 제 4 클럭을 더 생성하고, 그리고
    상기 명령 및 상기 코드를 상기 메모리 장치로 전송함으로써, 상기 제 4 클럭에 기초하여 상기 메모리 장치의 내부에서 생성되고 그리고 상기 메모리 장치의 상기 제 2 데이터 입출력에 사용되는 제 5 클럭의 듀티 사이클을 트레이닝하도록 더 구성되는 전자 장치.
  18. 제 16 항에 있어서,
    상기 시스템 온 칩은:
    상기 메모리 장치로부터 출력되는 데이터 스트로브 신호 및 데이터 입출력 신호에 기초하여 상기 코드에 대한 복수의 유효 윈도우 마진들을 계산하고, 그리고
    상기 복수의 유효 윈도우 마진들 중 최대의 유효 윈도우 마진에 대응하는 상기 코드의 타깃 값 및 상기 명령을 상기 메모리 장치로 전송하도록 더 구성되는 전자 장치.
  19. 제 18 항에 있어서,
    상기 명령은 모드 레지스터 쓰기 명령이고, 그리고
    상기 시스템 온 칩은:
    상기 코드를 상기 메모리 장치로 전송한 다음에 상기 제 1 클럭에 동기된 쓰기 명령 및 읽기 명령을 상기 메모리 장치로 더 전송하고, 그리고
    상기 읽기 명령에 기초하여 상기 메모리 장치로부터 상기 데이터 스트로브 신호 및 상기 데이터 입출력 신호를 수신하는 전자 장치.
  20. 제 19 항에 있어서,
    상기 메모리 장치는 LPDDR5 SDRAM(low power double data rate 5 synchronous dynamic random access memory) 장치이고, 그리고
    상기 코드의 타깃 값은 상기 메모리 장치의 모드 레지스터들에 저장되는 전자 장치.
KR1020180130845A 2018-10-30 2018-10-30 모드 레지스터 쓰기 명령을 이용하여 쓰기 클럭의 듀티 사이클의 트레이닝을 수행하는 시스템 온 칩, 시스템 온 칩의 동작 방법, 및 시스템 온 칩을 포함하는 전자 장치 KR102679157B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180130845A KR102679157B1 (ko) 2018-10-30 모드 레지스터 쓰기 명령을 이용하여 쓰기 클럭의 듀티 사이클의 트레이닝을 수행하는 시스템 온 칩, 시스템 온 칩의 동작 방법, 및 시스템 온 칩을 포함하는 전자 장치
US16/460,291 US11061577B2 (en) 2018-10-30 2019-07-02 System on chip performing training of duty cycle of write clock using mode register write command, operating method of system on chip, electronic device including system on chip
DE102019118638.2A DE102019118638A1 (de) 2018-10-30 2019-07-10 Ein-Chip-System, das ein Training des Tastgrades des Schreibtakts unter Verwendung eines Modus-Register-Schreibbefehls durchführt, Betriebsverfahren des Ein-Chip-Systems, elektronische Vorrichtung mit dem Ein-Chip-System
CN201911009364.5A CN111124998B (zh) 2018-10-30 2019-10-23 片上系统、其操作方法及包括该片上系统的电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180130845A KR102679157B1 (ko) 2018-10-30 모드 레지스터 쓰기 명령을 이용하여 쓰기 클럭의 듀티 사이클의 트레이닝을 수행하는 시스템 온 칩, 시스템 온 칩의 동작 방법, 및 시스템 온 칩을 포함하는 전자 장치

Publications (2)

Publication Number Publication Date
KR20200048607A true KR20200048607A (ko) 2020-05-08
KR102679157B1 KR102679157B1 (ko) 2024-06-27

Family

ID=

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11776617B2 (en) 2021-02-25 2023-10-03 Samsung Electronics Co., Ltd. Application processors and electronic devices including the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11776617B2 (en) 2021-02-25 2023-10-03 Samsung Electronics Co., Ltd. Application processors and electronic devices including the same

Also Published As

Publication number Publication date
CN111124998B (zh) 2023-08-11
US20200133505A1 (en) 2020-04-30
DE102019118638A1 (de) 2020-04-30
CN111124998A (zh) 2020-05-08
US11061577B2 (en) 2021-07-13

Similar Documents

Publication Publication Date Title
US11061577B2 (en) System on chip performing training of duty cycle of write clock using mode register write command, operating method of system on chip, electronic device including system on chip
US11003370B2 (en) System on chip performing a plurality of trainings at the same time, operating method of system on chip, electronic device including system on chip
US11423971B2 (en) Memory device adjusting duty cycle and memory system having the same
US10163485B2 (en) Memory module, memory controller and associated control method for read training technique
TWI765932B (zh) 半導體記憶體裝置之資料對齊電路以及其資料對齊之方法
US20140237177A1 (en) Memory module and memory system having the same
KR102473661B1 (ko) 듀티 사이클을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템
JP2010541075A (ja) 高速dram中の信号を処理するためのシステムおよび方法
US11372591B2 (en) Memory apparatus, a semiconductor system including the same and an operating method thereof
US11670359B2 (en) Semiconductor memory device capable of operating at high speed, low power environment by optimizing latency of read command and write command depending on various operation modes
KR102679157B1 (ko) 모드 레지스터 쓰기 명령을 이용하여 쓰기 클럭의 듀티 사이클의 트레이닝을 수행하는 시스템 온 칩, 시스템 온 칩의 동작 방법, 및 시스템 온 칩을 포함하는 전자 장치
US20230377621A1 (en) Semiconductor device
KR102679215B1 (ko) 복수의 트레이닝들을 동시에 수행하는 시스템 온 칩, 시스템 온 칩의 동작 방법, 및 시스템 온 칩을 포함하는 전자 장치
US20230377667A1 (en) Semiconductor device
US12033686B2 (en) Memory device adjusting duty cycle and memory system having the same
JP2014220025A (ja) 半導体装置
KR20230163271A (ko) 반도체 장치
US11328756B1 (en) Semiconductor device and semiconductor system performing auto-precharge operation
US20230147016A1 (en) Apparatus, memory device, and method for multi-phase clock training
KR20230161314A (ko) 반도체 장치
CN117116314A (zh) 半导体装置、用于操作半导体装置的方法和计算系统
CN117095712A (zh) 半导体装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right