[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20210089773A - Skew Compensation Method for Physical Layer Interface of Multi-Chip Modules - Google Patents

Skew Compensation Method for Physical Layer Interface of Multi-Chip Modules Download PDF

Info

Publication number
KR20210089773A
KR20210089773A KR1020217018751A KR20217018751A KR20210089773A KR 20210089773 A KR20210089773 A KR 20210089773A KR 1020217018751 A KR1020217018751 A KR 1020217018751A KR 20217018751 A KR20217018751 A KR 20217018751A KR 20210089773 A KR20210089773 A KR 20210089773A
Authority
KR
South Korea
Prior art keywords
lanes
lane
clock
symbol
symbol alignment
Prior art date
Application number
KR1020217018751A
Other languages
Korean (ko)
Other versions
KR102502615B1 (en
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 KR1020237005747A priority Critical patent/KR102578608B1/en
Publication of KR20210089773A publication Critical patent/KR20210089773A/en
Application granted granted Critical
Publication of KR102502615B1 publication Critical patent/KR102502615B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/02Speed or phase control by the received code signals, the signals containing no special synchronisation information
    • H04L7/033Speed or phase control by the received code signals, the signals containing no special synchronisation information using the transitions of the received signal to control the phase of the synchronising-signal-generating means, e.g. using a phase-locked loop
    • H04L7/0337Selecting between two or more discretely delayed clocks or selecting between two or more discretely delayed received code signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/02Details ; arrangements for supplying electrical power along data transmission lines
    • H04L25/14Channel dividing arrangements, i.e. in which a single bit stream is divided between several baseband channels and reassembled at the receiver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0008Synchronisation information channels, e.g. clock distribution lines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/04Speed or phase control by synchronisation signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Information Transfer Systems (AREA)
  • Dc Digital Transmission (AREA)

Abstract

다중 칩 모듈에서 물리 계층 인터페이스를 위한 스큐 보정 방법을 구현하기 위한 시스템, 장치 및 방법이 개시된다. 복수의 통신 레인들에 연결된 회로는 타이밍 윈도우의 시작에서 레인의 로컬 클록을 대응되는 글로벌 클록과 동기화하도록 각 레인을 트레이닝시킨다. 다음으로, 회로는 복수의 레인들의 모든 레인들이 잘못된 심볼 정렬을 가지고 있다고 결정하는 것에 응답하여 단일 단계로 각 레인을 심볼 회전시킨다. 복수의 레인들의 전부가 아닌 일부 레인들이 올바른 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 회로는 잘못된 심볼 정렬을 갖는 레인들을 단일 단계에 의해 심볼 회전시킨다. 타이밍 윈도우의 종료에 도달하면, 회로는 올바른 심볼 정렬을 갖는 레인들을 심볼 회전시키고 누락된 심볼 회전을 보상하기 위해 대응되는 글로벌 클록의 위상을 조정한다.A system, apparatus and method for implementing a skew correction method for a physical layer interface in a multi-chip module are disclosed. Circuitry coupled to the plurality of communication lanes trains each lane to synchronize the lane's local clock with a corresponding global clock at the beginning of a timing window. Next, the circuitry symbol rotates each lane in a single step in response to determining that all lanes of the plurality of lanes have incorrect symbol alignment. In response to determining that some but not all of the plurality of lanes have the correct symbol alignment, the circuitry symbol rotates the lanes with the incorrect symbol alignment in a single step. When the end of the timing window is reached, the circuit symbol rotates lanes with correct symbol alignment and adjusts the phase of the corresponding global clock to compensate for the missing symbol rotation.

Description

다중 칩 모듈의 물리 계층 인터페이스를 위한 스큐 보정 방법Skew Compensation Method for Physical Layer Interface of Multi-Chip Modules

최신 반도체 칩에는 빠르고 효율적인 계산을 용이하게 하는 다양한 회로와 구성 요소가 포함되어 있다. 반도체 칩의 기능 블록들 사이에 정보를 전송할 때 전기 신호는 일반적으로 금속 트레이스(trace)로 전송된다. 제1 기능 블록의 송신기는 금속 트레이스를 통해 전기 신호를 보낸다. 제2 기능 블록의 수신기는 전기 신호를 수신한다. 경우에 따라, 두 기능 블록들이 동일한 다이 내에 있다. 다른 경우에는, 두 기능 블록들이 별도의 다이들에 있다.Modern semiconductor chips contain various circuits and components that facilitate fast and efficient calculations. When transferring information between functional blocks of a semiconductor chip, electrical signals are typically transmitted as metal traces. The transmitter of the first functional block sends an electrical signal through the metal trace. The receiver of the second functional block receives the electrical signal. In some cases, both functional blocks are in the same die. In other cases, the two functional blocks are on separate dies.

정보 처리 시스템 및 디바이스의 처리 속도는 새로운 시스템 및 디바이스가 개발됨에 따라 계속해서 증가한다. 데이터 신호와 대응되는 클록 신호가 기능 블록들 사이에 전송되면, 신호가 서로에 대해 잘못 정렬될 수 있다. 신호를 재정렬하려면 일반적으로 많은 양의 레이턴시(latency)가 발생한다.The processing speed of information processing systems and devices continues to increase as new systems and devices are developed. When a data signal and a corresponding clock signal are transmitted between functional blocks, the signals may be misaligned with respect to each other. Signal reordering usually introduces a large amount of latency.

본원에 설명된 방법 및 메커니즘의 장점은 첨부 도면과 함께 다음 설명을 참조하여 더 잘 이해될 수 있으며, 여기서:
도 1은 송신기 및 수신기를 포함하는 일반적인 컴퓨터 또는 통신 시스템의 일 구현의 블록도이다.
도 2는 컴퓨팅 시스템의 일 구현의 블록도이다.
도 3은 물리 계층 인터페이스 연결의 일 구현의 다이어그램이다.
도 4는 동기 클록 도메인 교차(synchronous clock-domain crossing)를 달성하기 위해 로컬 클록의 위상을 조정하기 위한 회로의 일 구현의 블록도이다.
도 5는 동기 클록-도메인 교차를 달성하기 위해 이용 가능한 타이밍 마진(timing margin)을 증가시키기 위한 선택적 FIFO 모드를 구현하기 위한 회로의 일 구현의 블록도이다.
도 6은 직병렬변환기(deserializer)에서 사용하기 위한 회로의 일 구현의 다이어그램이다.
도 7은 심볼 잠금(symbol locking)을 수행하기 위해 직병렬변환기에서 배럴 시프터(barrel shifter)를 사용하는 일 구현의 타이밍도이다.
도 8은 배럴 시프터가 클록 위상을 단일 단계로 시프트 한 후 시점의 일 구현의 타이밍 다이어그램이다.
도 9는 배럴 시프터가 클록 위상을 제2 단계로 시프트 한 후 시점의 일 구현의 타이밍 다이어그램이다.
도 10은 최소 레이턴시로 링크 폭 스큐 보정을 수행하는 일 구현의 상태도이다.
도 11은 직병렬변환기에서 사용하기 위한 회로의 일 구현의 다이어그램이다.
도 12는 클록 지터(clock jitter)를 설명하기 위해 타이밍 마진을 증가시키기 위한 2-딥 FIFO 회로의 일 구현의 다이어그램이다.
도 13은 로컬 클록을 글로벌 클록과 정렬하기 위해 트레이닝을 수행하는 방법의 일 구현을 예시하는 일반화된 흐름도이다.
도 14는 복수의 레인(lane)들에 대한 동기 교차 도메인 교차를 달성하기 위한 방법의 일 구현을 예시하는 일반화된 흐름도이다.
도 15는 감소된 레이턴시를 갖는 복수의 레인들에 걸쳐 스큐 보정을 위한 방법의 일 구현을 예시하는 일반화된 흐름도이다.
도 16은 회로 표현(circuit representation)을 저장하는 비 일시적 컴퓨터 판독 가능 저장 매체의 일 구현을 나타내는 블록도이다.
The advantages of the methods and mechanisms described herein may be better understood by reference to the following description in conjunction with the accompanying drawings, wherein:
1 is a block diagram of one implementation of a typical computer or communication system including a transmitter and a receiver;
2 is a block diagram of one implementation of a computing system.
3 is a diagram of one implementation of a physical layer interface connection.
4 is a block diagram of one implementation of a circuit for adjusting the phase of a local clock to achieve a synchronous clock-domain crossing.
5 is a block diagram of one implementation of a circuit for implementing an optional FIFO mode for increasing the available timing margin to achieve synchronous clock-domain crossing.
6 is a diagram of one implementation of a circuit for use in a deserializer.
7 is a timing diagram of one implementation using a barrel shifter in a deserializer to perform symbol locking.
8 is a timing diagram of one implementation at a point in time after the barrel shifter shifts the clock phase by a single step.
9 is a timing diagram of one implementation at a point in time after the barrel shifter shifts the clock phase to a second phase.
10 is a state diagram of one implementation for performing link width skew correction with minimal latency.
11 is a diagram of one implementation of a circuit for use in a deserializer.
12 is a diagram of one implementation of a two-dip FIFO circuit for increasing the timing margin to account for clock jitter.
13 is a generalized flow diagram illustrating one implementation of a method for performing training to align a local clock with a global clock.
14 is a generalized flow diagram illustrating one implementation of a method for achieving synchronous cross-domain crossing for a plurality of lanes.
15 is a generalized flow diagram illustrating one implementation of a method for skew correction across a plurality of lanes with reduced latency.
16 is a block diagram illustrating one implementation of a non-transitory computer-readable storage medium that stores a circuit representation.

다음 설명에서, 본원에 제시된 방법 및 메커니즘에 대한 철저한 이해를 제공하기 위해 수 많은 특정 세부 사항이 설명된다. 그러나, 당업자는 이러한 특정 세부 사항 없이 다양한 구현이 실행될 수 있음을 인식해야 한다. 일부 예에서, 잘 알려진 구조, 구성 요소, 신호, 컴퓨터 프로그램 명령어 및 기술은 본원에 설명된 접근 방식을 모호하게 하는 것을 피하기 위해 상세하게 표시되지 않았다. 예시의 단순성과 명료성을 위해, 도면에 도시된 요소가 반드시 일정한 비율로 그려진 것은 아니라는 것을 이해할 것이다. 예를 들어, 일부 요소의 치수는 다른 요소에 비해 과장 될 수 있다.In the following description, numerous specific details are set forth in order to provide a thorough understanding of the methods and mechanisms presented herein. However, one of ordinary skill in the art should recognize that various implementations may be practiced without these specific details. In some instances, well-known structures, components, signals, computer program instructions, and techniques have not been shown in detail in order to avoid obscuring the approaches described herein. It will be understood that, for simplicity and clarity of illustration, elements shown in the drawings have not necessarily been drawn to scale. For example, the dimensions of some elements may be exaggerated relative to others.

감소된 레이턴시를 갖는 동기 클록 도메인 교차(synchronous clock-domain crossing)를 구현하는 다중 칩 모듈의 물리 계층 인터페이스를 위한 스큐 보정(deskewing) 방법을 위한 다양한 시스템, 장치, 방법 및 컴퓨터 판독 가능 매체가 개시된다. 일 구현에서, 복수의 통신 레인(lane)들에 연결된 회로는 타이밍 윈도우(timing window)의 시작에서 레인의 로컬 클록(local clock)을 대응되는 글로벌 클록(global clock)과 동기화하도록 각 레인을 트레이닝한다. 다음으로, 회로 심볼(circuit symbol)은 복수의 레인들 모두가 잘못된 심볼 정렬을 가지고 있다고 결정하는 것에 응답하여 단일 단계(single step)로 각 레인을 회전시킨다. 복수의 레인들의 전부가 아닌 일부가 올바른 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 회로 심볼은 잘못된 심볼 정렬을 갖는 레인들을 단일 단계로 회전시킨다. 타이밍 윈도우의 끝에 도달하면, 회로 심볼이 올바른 심볼 정렬을 가진 레인들을 회전시키고 누락된 심볼 회전을 보상하기 위해 대응되는 글로벌 클록의 위상을 조정한다. 회로는 복수의 레인들 모두가 올바른 심볼 정렬을 갖는다고 결정하는 것에 응답하여 복수의 데이터 시퀀스들을 생성하기 위해 복수의 로컬 클록들을 사용하여 복수의 데이터 신호들을 샘플링한다.Various systems, apparatus, methods and computer readable media are disclosed for a method of deskewing for a physical layer interface of a multi-chip module implementing synchronous clock-domain crossing with reduced latency. . In one implementation, circuitry coupled to a plurality of communication lanes trains each lane to synchronize its local clock with a corresponding global clock at the beginning of a timing window. . A circuit symbol then rotates each lane in a single step in response to determining that all of the plurality of lanes have incorrect symbol alignment. In response to determining that some but not all of the plurality of lanes have the correct symbol alignment, the circuit symbol rotates the lanes with the incorrect symbol alignment in a single step. When the end of the timing window is reached, the circuit symbol rotates the lanes with correct symbol alignment and adjusts the phase of the corresponding global clock to compensate for the missing symbol rotation. The circuitry samples the plurality of data signals using the plurality of local clocks to generate a plurality of data sequences in response to determining that all of the plurality of lanes have correct symbol alignment.

다양한 구현에서, 감소된 레이턴시를 갖는 동기 클록 도메인 교차를 구현하기 위한 기술이 개시된다. 일 구현에서, 회로는 글로벌 클록 및 데이터 신호를 수신하면서 로컬 클록을 생성한다. 회로는 글로벌 클록으로 로컬 클록을 샘플링하는 레지스터를 포함한다. 회로는 도한 단일 단위 간격(unit interval, UI) 스텝 크기로 로컬 클록의 위상 시프트 버전(phase-shifted version)을 생성하는 배럴 시프터(barrel shifter)를 포함한다. 회로는 또한 배럴 시프터를 사용하여 에지 전환(edge transition)이 검출될 때까지 모든 위상들에 걸쳐 로컬 클록을 스위핑(sweeping)하는 제어 로직을 포함한다. 에지 전환이 검출되면, 이는 로컬 클록이 글로벌 클록과 정렬되었음을 나타낸다. 그런 다음, 제어 로직은 데이터 신호 샘플링을 설정을 충족하고 및 요구 사항을 유지하도록 로컬 클록의 위상을 조정한다. 다음으로, 데이터 신호는 데이터 시퀀스를 생성하기 위해 위상 조정 로컬 클록으로 샘플링된다.In various implementations, techniques for implementing synchronous clock domain crossings with reduced latency are disclosed. In one implementation, the circuit generates a local clock while receiving a global clock and data signal. The circuit includes a register that samples the local clock with the global clock. The circuit also includes a barrel shifter that generates a phase-shifted version of the local clock with a single unit interval (UI) step size. The circuit also includes control logic that sweeps the local clock through all phases until an edge transition is detected using a barrel shifter. When an edge transition is detected, it indicates that the local clock is aligned with the global clock. Then, the control logic adjusts the phase of the local clock to meet the data signal sampling settings and maintain the requirements. Next, the data signal is sampled with a phase-adjusted local clock to generate a data sequence.

이제 도 1을 참조하면, 송신기(105) 및 수신기(110)를 포함하는 일반적인 컴퓨터 또는 통신 시스템(100)의 일 구현의 블록도가 도시된다. 일 구현에서, 송신기(105)는 통신 채널(115)을 통해 수신기(110)로 데이터를 전송한다. 구현에 따라, 통신 채널(115)은 케이블, 백플레인(backplane), 하나 이상의 금속 트레이스(trace)들, 또는 다른 유형의 통신 채널이다. 예를 들어, 일 구현에서, 채널(115)은 다중 칩 모듈의 두 칩들 사이의 하나 이상의 금속 트레이스들이다. 물리 계층에서, 송신기(105)와 수신기 디바이스(110) 사이의 통신은 주어진 전송 프로토콜에 따라 단방향 또는 양방향 일 수 있다. 시스템(100)은 임의의 수 및 유형의 다른 디바이스들을 포함할 수 있다는 점에 유의한다. 추가로, 시스템(100)은 시스템 전체에 분산된 임의의 수의 송신기-수신기 쌍들을 포함할 수 있다.Referring now to FIG. 1 , a block diagram of one implementation of a typical computer or communication system 100 including a transmitter 105 and a receiver 110 is shown. In one implementation, the transmitter 105 transmits data to the receiver 110 over a communication channel 115 . Depending on the implementation, the communication channel 115 is a cable, a backplane, one or more metal traces, or another type of communication channel. For example, in one implementation, channel 115 is one or more metal traces between two chips of a multi-chip module. At the physical layer, communication between the transmitter 105 and the receiver device 110 may be unidirectional or bidirectional depending on a given transport protocol. It is noted that system 100 may include any number and type of other devices. Additionally, system 100 may include any number of transmitter-receiver pairs distributed throughout the system.

송신기(105) 및 수신기(110)는 구현에 따라 임의의 유형의 디바이스일 수 있다. 예를 들어, 일 구현에서, 송신기(105)는 처리 장치(예를 들어, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU))이고 수신기(110)는 메모리 디바이스이다. 메모리 디바이스는 동적 랜덤 액세스 메모리(DRAM), 동기식 DRAM(SDRAM), 더블 데이터 속도(DDR, DDR2, DDR3 등) SDRAM(mDDR3 등과 같은 모바일 버전의 SDRAM 및/또는 LPDDR2 등과 같은 저전력 버전의 SDRAM 포함), RAMBUS DRAM(RDRAM), 정적 RAM(SRAM) 등과 같은 모든 유형의 메모리가 될 수 있다. 하나 이상의 메모리 디바이스들을 회로 기판에 결합시켜 단일 인라인 메모리 모듈(SIMM), 듀얼 인라인 메모리 모듈(DIMM) 등과 같은 메모리 모듈을 형성할 수 있다. 또는 메모리 디바이스를 칩-온-칩 구성, 패키지-온-패키지 구성 또는 다중 칩 모듈(MCM) 구성의 시스템 온 칩(SoC) 또는 집적 회로(IC) 내에 장착될 수 있다.Transmitter 105 and receiver 110 may be any type of device depending on the implementation. For example, in one implementation, transmitter 105 is a processing unit (eg, central processing unit (CPU), graphics processing unit (GPU)) and receiver 110 is a memory device. Memory devices include dynamic random access memory (DRAM), synchronous DRAM (SDRAM), double data rate (DDR, DDR2, DDR3, etc.) SDRAM (including mobile versions of SDRAM such as mDDR3 and/or low-power versions of SDRAM such as LPDDR2); It can be any type of memory, such as RAMBUS DRAM (RDRAM), static RAM (SRAM), etc. One or more memory devices may be coupled to a circuit board to form a memory module, such as a single inline memory module (SIMM), a dual inline memory module (DIMM), or the like. Alternatively, the memory device may be mounted within a system-on-chip (SoC) or integrated circuit (IC) in a chip-on-chip configuration, package-on-package configuration, or multi-chip module (MCM) configuration.

다른 구현에서, 송신기(105)는 입력/출력(I/O) 패브릭(fabric)이고 수신기(110)는 주변 디바이스이다. 주변 디바이스는 와이파이, 블루투스, 셀룰러, 글로벌 포지셔닝 시스템 등과 같은 다양한 유형의 무선 통신을 위한 디바이스를 포함할 수 있다. 주변 디바이스는 RAM 스토리지, 솔리드 스테이트 스토리지 또는 디스크 스토리지를 포함한 추가 스토리지도 포함할 수 있다. 주변 디바이스는 또한 터치 디스플레이 스크린 또는 멀티터치 디스플레이 스크린과 같은 디스플레이 스크린, 키보드 또는 기타 입력 디바이스, 마이크, 스피커와 같은 사용자 인터페이스 디바이스들을 포함할 수 있다. 다른 구현에서, 송신기(105) 및 수신기(110)는 다른 유형의 디바이스이다. 시스템(100)은 IC, SoC, MCM 등과 같은 임의의 유형의 시스템 일 수 있다는 점에 유의한다.In another implementation, the transmitter 105 is an input/output (I/O) fabric and the receiver 110 is a peripheral device. Peripheral devices may include devices for various types of wireless communication, such as Wi-Fi, Bluetooth, cellular, global positioning systems, and the like. Peripheral devices may also include additional storage including RAM storage, solid state storage, or disk storage. Peripheral devices may also include display screens such as touch display screens or multi-touch display screens, keyboards or other input devices, user interface devices such as microphones, speakers. In other implementations, transmitter 105 and receiver 110 are different types of devices. Note that system 100 may be any type of system, such as an IC, SoC, MCM, or the like.

이제 도 2를 참조하면, 컴퓨팅 시스템(200)의 일 구현의 블록도가 도시된다. 도시된 바와 같이, 시스템(200)은 데스크탑 컴퓨터(210), 랩톱 컴퓨터(220), 서버(230), 모바일 디바이스(240) 또는 기타 장치의 칩, 회로, 구성 요소 등을 나타낸다. 다른 디바이스들이 가능하며 고려된다. 예시된 구현에서, 시스템(200)은 송신기들(202A-N) 및 수신기들(203A-N)의 임의의 수의 쌍들을 포함한다.Referring now to FIG. 2 , a block diagram of an implementation of a computing system 200 is shown. As shown, system 200 represents a chip, circuit, component, etc., of a desktop computer 210 , a laptop computer 220 , a server 230 , a mobile device 240 , or other device. Other devices are possible and contemplated. In the illustrated implementation, system 200 includes any number of pairs of transmitters 202A-N and receivers 203A-N.

이제 도 3을 참조하면, 물리 계층 인터페이스 연결의 일 구현에 대한 다이어그램이 도시된다. 도 3의 좌측에 도시된 마스터 물리 코딩 하위계층(physical coding sublayer, PCS)(305)은 채널(340)을 통해 도 3의 우측에 있는 슬레이브 PCS(380)에 연결된다. 일 구현에서, 마스터 PCS(305)는 다중 칩 모듈(MCM)의 제1 집적 회로(IC)(즉, 칩)에 위치하고 슬레이브 PCS(380)는 MCM의 제2 IC에 위치한다. 예를 들어, 일 구현에서, 마스터 PCS(305)는 입력/출력(I/O) 반도체 다이의 일부이고 슬레이브 PCS(380)는 코어 복합 반도체 다이(core complex semiconductor die)의 일부이다. 다른 구현에서, 마스터 PCS(305) 및 슬레이브 PCS(380)는 다른 유형의 구성 요소들 또는 기능 유닛들과 함께 포함된다.Referring now to FIG. 3 , a diagram of one implementation of a physical layer interface connection is shown. A master physical coding sublayer (PCS) 305 shown on the left side of FIG. 3 is connected to a slave PCS 380 on the right side of FIG. 3 through a channel 340 . In one implementation, the master PCS 305 is located in a first integrated circuit (IC) (ie, chip) of a multi-chip module (MCM) and the slave PCS 380 is located in a second IC of the MCM. For example, in one implementation, the master PCS 305 is part of an input/output (I/O) semiconductor die and the slave PCS 380 is part of a core complex semiconductor die. In other implementations, master PCS 305 and slave PCS 380 are included along with other types of components or functional units.

다양한 구현에서, 마스터 PCS(305)는 클록 송신 모듈(325) 및 마스터 PCS(305) 내의 다른 모듈에 결합되는 클록을 생성하기 위한 위상 고정 루프(phase-locked loop, PLL)(310)를 포함하거나 이에 결합된다. 마스터 PCS(305)는 N 개의 수신기들(315)의 어레이 및 M 개의 송신기들(335)의 어레이를 포함하며, 여기서 N 및 M은 양의 정수이고, 여기서 N 및 M의 값은 구현에 따라 변한다. 수신 클록 게이팅(RXCG) 모듈(320)은 수신기들(315)의 어레이에 결합되고 송신 클록 게이팅(TXCG) 모듈(330)은 송신기들(335)의 어레이에 결합된다. 일 구현에서, 클록은 마스터 PCS(305)로부터 포워딩되며, 이는 PLL(310)에 대한 기준 클록으로서 사용된다. PLL(310)에 의해 생성된 클록은 PLL(375)(슬레이브 PCS(380)의) 및 다운스트림 로직(downstream logic)에 대한 기준 클록으로서 사용되도록 채널(340)을 통해 포워딩된다. 일 구현에서, 하프 레이트 아키텍처(half rate architecture)가 마스터 PCS(305) 및 슬레이브 PCS(380)에 의해 사용되며, 여기서 클록은 데이터 레이트의 절반 주파수이고 데이터는 클록의 상승 및 하강 에지들에서 샘플링된다.In various implementations, the master PCS 305 includes a phase-locked loop (PLL) 310 for generating a clock coupled to a clock transmission module 325 and other modules within the master PCS 305 , or coupled to this The master PCS 305 includes an array of N receivers 315 and an array of M transmitters 335 , where N and M are positive integers, where the values of N and M vary from implementation to implementation. . A receive clock gating (RXCG) module 320 is coupled to the array of receivers 315 and a transmit clock gating (TXCG) module 330 is coupled to the array of transmitters 335 . In one implementation, the clock is forwarded from the master PCS 305 , which is used as the reference clock for the PLL 310 . The clock generated by PLL 310 is forwarded over channel 340 to be used as a reference clock for PLL 375 (of slave PCS 380 ) and downstream logic. In one implementation, a half rate architecture is used by the master PCS 305 and the slave PCS 380 , where the clock is half the frequency of the data rate and the data is sampled on the rising and falling edges of the clock. .

일 구현에서, 마스터(305)의 송신기들(335)의 어레이는 가장 먼 레인들 사이의 1000 마이크론(즉, 마이크로미터)보다 큰 폭을 갖는 채널(340)의 대응되는 레인들에 연결된다. 또한, 일 구현에서, 마스터(305)의 수신기들(315)의 어레이는 가장 먼 레인들 사이의 1000 마이크론 보다 큰 폭을 갖는 패키지 채널(340)의 대응되는 레인들에 연결된다. 이는 채널(340)의 레인들에서 전송된 다른 클록들의 클록 에지들 사이의 드리프트(drift)를 초래한다.In one implementation, the array of transmitters 335 of the master 305 is coupled to corresponding lanes of the channel 340 having a width greater than 1000 microns (ie, micrometers) between the furthest lanes. Also, in one implementation, the array of receivers 315 of the master 305 is coupled to corresponding lanes of the package channel 340 having a width greater than 1000 microns between the furthest lanes. This causes drift between the clock edges of the different clocks transmitted in the lanes of channel 340 .

일 구현에서, 동기 클록 도메인 교차는 본원에 설명된 방법들 및 메커니즘들 중 하나 이상을 사용하여 송신기들(335)의 어레이에 걸쳐 달성된다. 예를 들어, 송신기들(335)의 어레이의 레인들이 폭 1000 마이크론보다 큰 거리만큼 떨어져 있어도, 인터페이스에 상대적으로 적은 양의 레이턴시를 추가하면서(전통적인 접근 방식과 비교하여) 본원에 제시된 기술을 사용하여 동기 클록 도메인 교차가 달성된다. 일 구현에서, 동기 클록 도메인 교차를 달성하기 위해, 슬레이브 PCS(380)의 로컬 클록은 포워딩된 제어기 클록과 정렬되도록 트레이닝된다. 본원에서 사용되는 용어 "로컬 클록"은 비교적 빠른 PLL 클록의 분할된 버전으로 정의된다. 또한, 본원에서 사용되는 용어 "제어기 클록"은 채널(예를 들어, 채널(340))의 레인들에 걸쳐 분산되는 시스템 온 칩(SoC) 마스터 클록으로 정의된다.In one implementation, synchronous clock domain crossing is achieved across the array of transmitters 335 using one or more of the methods and mechanisms described herein. For example, even if the lanes of the array of transmitters 335 are separated by a distance greater than 1000 microns in width, using the technique presented herein (compared to the traditional approach) it adds a relatively small amount of latency to the interface. Synchronous clock domain crossing is achieved. In one implementation, to achieve synchronous clock domain crossing, the local clock of the slave PCS 380 is trained to align with the forwarded controller clock. As used herein, the term “local clock” is defined as a segmented version of the relatively fast PLL clock. Also, as used herein, the term “controller clock” is defined as a system-on-chip (SoC) master clock distributed across the lanes of a channel (eg, channel 340 ).

일 구현에서, 레인들 사이의 전송 채널 스큐(skew)를 최소화하기 위해 1 단위 간격(unit interval, UI) 입상(granularity)으로 지연이 추가된다. 일 구현에서, 선택적인 FIFO(first-in, first-out) 모드가 구현되어 동기 교차를 달성하기 위해 이용 가능한 타이밍 마진을 증가시킨다. FIFO 모드를 활성화하면, 더 많은 레이턴시를 희생하면서 더 많은 지연이 이용 가능하다. 그러나 이것은 전송 채널 스큐를 줄이기 위해 사용 가능한 추가 튜닝(tuning) 범위를 제공한다. 일 구현에서, 트레이닝 전에, 심볼 시작 포인트들은 채널(340)의 다양한 전송 레인들에 걸쳐 분산된다. 트레이닝 후, 채널(340)의 다양한 전송 레인들 상의 심볼 시작 포인트들은 서로의 1 UI 내에서 정렬된다.In one implementation, delay is added at 1 unit interval (UI) granularity to minimize transmission channel skew between lanes. In one implementation, an optional first-in, first-out (FIFO) mode is implemented to increase the available timing margin to achieve synchronous intersection. By enabling FIFO mode, more delay is available at the expense of more latency. However, this provides an additional tuning range that can be used to reduce transmission channel skew. In one implementation, prior to training, symbol start points are distributed across the various transmission lanes of channel 340 . After training, the symbol start points on the various transmission lanes of channel 340 are aligned within 1 UI of each other.

이제 도 4를 참조하면, 동기 클록 도메인 교차를 달성하기 위해 로컬 클록의 위상을 조정하기 위한 회로(400)의 일 구현의 블록도가 도시된다. 일 구현에서, 물리 계층(PHY) 인터페이스의 경우, 입력되는 제어기 클록은 위상이 고정되는 반면, 로컬 클록은 PLL(420)에 의해 생성된 고속 클록(fast clock)의 분할된 버전(분할기(422) 사용)이다. 로컬 클록은 클록 트레이닝 유닛(425)에 제공된다. 클록 트레이닝 유닛(425)의 일 예시가 블록(405) 내의 제어 로직으로서 도시된다. 블록(405)에 도시된 바와 같이, 로컬 클록은 배럴 시프터(415)를 사용하여 위상 시프트된다. 일 구현에서, 복수의 로컬 클록들이 대응되는 제어기 클록들과 정렬되도록 트레이닝된 다음, 트레이닝된 로컬 클록들이 블록(430)에 도시된 바와 같이 10/2 직렬변환기(serializer)들에 결합된다.Referring now to FIG. 4 , a block diagram of one implementation of a circuit 400 for adjusting the phase of a local clock to achieve synchronous clock domain crossing is shown. In one implementation, for the physical layer (PHY) interface, the input controller clock is phase-locked, while the local clock is a divided version of the fast clock generated by the PLL 420 (divider 422). is used). The local clock is provided to a clock training unit 425 . An example of a clock training unit 425 is shown as control logic in block 405 . As shown in block 405 , the local clock is phase shifted using a barrel shifter 415 . In one implementation, a plurality of local clocks are trained to align with corresponding controller clocks, and then the trained local clocks are coupled to 10/2 serializers as shown in block 430 .

일 구현에서, 두 단계들의 트레이닝 방법은 대응되는 제어기 클록과 매칭되도록 로컬 클록의 위상을 트레이닝시키기 위해 수행된다. 제1 단계에서 로컬 클록과 제어기 클록 사이의 위상 관계를 알 수 없는 경우, 제어기 클록에 대한 각 레인의 로컬 클록을 위한 위상 관계를 설정하기 위해 트레이닝 단계가 수행된다. 트레이닝 방법의 제2 단계에서 각 로컬 클록의 위상은 설정 및 유지 요구 사항을 충족하기 위해 제어기 클록과 관련하여 조정된다.In one implementation, a two-step training method is performed to train the phase of the local clock to match the corresponding controller clock. If the phase relationship between the local clock and the controller clock is not known in the first step, a training step is performed to establish the phase relationship for the local clock of each lane to the controller clock. In the second step of the training method, the phase of each local clock is adjusted with respect to the controller clock to meet the setup and maintenance requirements.

일 구현에서, 제어기 클록은 동기 레지스터(417)에서 로컬 클록을 샘플링하는 데 사용되고 동기 레지스터(417)의 출력은 클록 트레인 FSM(finite state machine)(410)으로 제공된다. 배럴 시프터(415)를 사용하여, 샘플러 출력(즉, 동기 레지스터(417)의 출력)이 0에서 1로 이동하는 것이 검출될 때까지 로컬 클록이 모든 위상들에 걸쳐 스위핑된다. 샘플러 출력이 0에서 1로 이동하는 것이 검출되면, 로컬 클록이 제어기 클록의 +/- 1 단위 간격(UI) 내에 정렬되었음을 나타낸다. 일 구현에서, 1 UI는 1x 클록의 1/10th이고, 1 UI는 클록 스위핑을 위한 최소 해상도(resolution)이다. 일 구현에서, 저주파 위상 오프셋으로 인한 델타(delta)를 설명하기 위해 클록 트레인 FSM(410)에서 추가적인 평균화가 수행된다. 로컬 클록이 제어기 클록에 정렬되면, 설정 및 유지 타이밍 요구 사항을 충족하도록 로컬 클록의 위상이 조정된다. 이 방법은 모든 레인들에 대해 반복되므로 서로 다른 레인들에서 오는 데이터가 상대적으로 낮은 레이턴시로 제어기 클록에 동기화된다. 추가적으로, 일 구현에서, 송신기와 채널로 인해 야기되는 스큐를 최소화하기 위해 레인들 사이에 지연이 추가된다.In one implementation, the controller clock is used to sample the local clock in the sync register 417 and the output of the sync register 417 is provided to a clock train finite state machine (FSM) 410 . Using the barrel shifter 415, the local clock is swept across all phases until a shift of the sampler output (ie, the output of the sync register 417) from 0 to 1 is detected. When the sampler output detects a shift from 0 to 1, it indicates that the local clock is aligned within +/- 1 unit interval (UI) of the controller clock. In one implementation, 1 UI is 1/10th of a 1x clock, and 1 UI is the minimum resolution for clock sweeping. In one implementation, additional averaging is performed in the clock train FSM 410 to account for the delta due to the low frequency phase offset. Once the local clock is aligned with the controller clock, the phase of the local clock is adjusted to meet the setup and hold timing requirements. This method repeats for all lanes, so data coming from different lanes is synchronized to the controller clock with relatively low latency. Additionally, in one implementation, a delay is added between the lanes to minimize skew caused by the transmitter and the channel.

도 4에 예시된 접근 방식을 사용하면, 데이터가 플롭-투-플롭(flop to flop) 타이밍으로 제어기 클록 도메인에서 로컬 클록 도메인으로 전달되어 기존 설계에 존재하는 레이턴시가 줄어 든다. 타이밍 다이어그램(440)은 제어기 클록에 대한 로컬 클록의 트레이닝 전 타이밍의 일례를 나타낸다. 타이밍 다이어그램(450)은 트레이닝 이후 및 설정 및 유지 요구 사항을 충족시키기 위해 제어기 클록에 대해 로컬 클록이 조정 된 이후에 로컬 클록과 제어기 클록 사이에 달성된 타이밍의 일 예시를 도시한다.Using the approach illustrated in Figure 4, data is transferred from the controller clock domain to the local clock domain in flop-to-flop timing, reducing the latency present in existing designs. Timing diagram 440 represents an example of the pre-training timing of the local clock relative to the controller clock. Timing diagram 450 shows an example of timing achieved between a local clock and a controller clock after training and after the local clock has been adjusted relative to the controller clock to meet setup and maintenance requirements.

이제 도 5를 참조하면, 동기 클록 도메인 교차를 달성하기 위해 이용 가능한 타이밍 마진을 증가시키기 위한 선택적 FIFO 모드를 구현하기 위한 회로(500)의 일 구현의 블록도가 도시된다. 일 구현에서, 컴퓨팅 시스템은 잠재적으로 높은-지터 제어기 클록(high-jitter controller clock)과 레인 생성 로컬 클록(lane-generated local clock) 사이에서 교차하는(crossing) 클록 도메인을 갖는다. 제어기 클록은 마스터 PCS으로부터 병렬 데이터 런치 클록(parallel data launch clock)으로 사용되며 레인 생성 로컬 클록(즉, 워드 클록)은 PHY 인터페이스에서 병렬 데이터 캡처에 사용된다. 일 구현에서, 제어기 클록으로부터 레인 생성 로컬 클록으로 교차하는 동기 클록 도메인은 선택적 FIFO 버퍼로 클록 트레이닝 알고리즘을 통해 달성된다. 예상되는 제어기 클록 지터가 트레이닝된 인터페이스로도 타이밍을 충족 할 수 없을 만큼 충분히 높으면 일 구현에서 FIFO를 사용하여 지터 허용치(jitter tolerance)를 증가시킨다. 일 구현에서, 지터 허용치를 두 배로 늘리기 위해 2-엔트리 FIFO가 사용된다.Referring now to FIG. 5 , shown is a block diagram of one implementation of a circuit 500 for implementing an optional FIFO mode for increasing the available timing margin to achieve synchronous clock domain crossing. In one implementation, the computing system potentially has a clock domain that crosses between a high-jitter controller clock and a lane-generated local clock. The controller clock is used as the parallel data launch clock from the master PCS and the lane-generated local clock (ie word clock) is used for parallel data capture at the PHY interface. In one implementation, the synchronous clock domain crossing from the controller clock to the lane-generated local clock is achieved via a clock training algorithm with an optional FIFO buffer. If the expected controller clock jitter is high enough that even the trained interface cannot meet the timing, one implementation uses a FIFO to increase jitter tolerance. In one implementation, a two-entry FIFO is used to double the jitter tolerance.

일 구현에서, 디폴트 모드(default mode)에서, 예상되는 제어기 클록 지터에 대한 적절한 타이밍 마진을 보장하기 위해 로컬 클록은 제어기 클록과 로컬 클록 사이의 초기 평균 차이를 기초로 1 UI 해상도로 조정된다. 일 구현에서, 선택적 FIFO 모드에서, 제어기 클록의 하프 레이트 버전은 기록 포인터로 작동하는 반면 로컬 클록의 하프 레이트 버전은 판독 포인터로 사용된다. 클록 트레이닝 알고리즘은 판독 포인터의 프로그래밍 가능한 배치(programmable placement)에 대한 초기 평균 기록/판독 포인터 분리(separation)를 결정한다. 일 구현에서, 판독 포인터 배치는 예상되는 제어기 클록 지터 크기에 기초하여 병렬 데이터 캡처 인터페이스에서 레이턴시를 최소화하면서 적절한 타이밍 마진을 보장하기 위해 1 UI 해상도로 조정된다. 일 구현에서, 포인터 분리에 적절한 마진이 있는 경우, 판독 포인터는 레인-대-레인 스큐를 줄이기 위해 1 UI 단계 크기로 초기 클록 트레이닝 후에 추가로 조정된다. 데이터가 로컬 클록 도메인으로 교차되면, 데이터가 직렬화되어 송신 레인들을 통해 채널에 제공된다.In one implementation, in the default mode, the local clock is adjusted to 1 UI resolution based on the initial average difference between the controller clock and the local clock to ensure an adequate timing margin for expected controller clock jitter. In one implementation, in the selective FIFO mode, the half rate version of the controller clock acts as the write pointer while the half rate version of the local clock is used as the read pointer. The clock training algorithm determines the initial average write/read pointer separation for the programmable placement of the read pointer. In one implementation, the read pointer placement is adjusted to 1 UI resolution to ensure proper timing margin while minimizing latency in the parallel data capture interface based on the expected controller clock jitter magnitude. In one implementation, if there is an adequate margin for pointer separation, the read pointer is further adjusted after initial clock training in 1 UI step size to reduce lane-to-lane skew. When the data is crossed into the local clock domain, the data is serialized and provided to the channel through the transmit lanes.

일 구현에서, 입력 데이터는 물리적 코딩 하위계층(PCS)(505) 도메인의 플롭들(510)을 통해 공급된다. 제어기 클록은 플롭들(510)의 클록 입력들에 제공된다. 일 구현에서, 입력 데이터는 10 비트 폭이다. 그러나, 다른 구현에서는, 입력 데이터가 다른 비트 폭을 가질 수 있다. 유사하게, 회로(500)의 다른 경로의 비트 폭은 다른 구현에서 변할 수 있다. 플롭들(510)의 출력은 송신 매크로 도메인(transmit macro domain)(507)의 플롭들(515 및 520)에 병렬로 제공된다. 하프 레이트 제어기 클록은 플롭들(515 및 520)의 클록 입력들에 클록으로서 제공된다. 플롭들(515 및 520)의 출력들은 멀티플렉서(525)의 입력에 제공된다. 멀티플렉서(525)의 출력들은 플롭들(535)의 입력들에 연결된다. 1x 레이트 로컬 클록은 플롭들(535)의 클록 입력들에 결합된다. 플롭들(535)의 출력들은 직렬변환기(미도시)에 제공된다.In one implementation, the input data is supplied via flops 510 in the Physical Coding Sublayer (PCS) 505 domain. A controller clock is provided to the clock inputs of flops 510 . In one implementation, the input data is 10 bits wide. However, in other implementations, the input data may have different bit widths. Similarly, the bit widths of different paths of circuit 500 may vary in different implementations. The output of flops 510 is provided in parallel to flops 515 and 520 of transmit macro domain 507 . The half rate controller clock is provided as a clock to the clock inputs of flops 515 and 520 . The outputs of flops 515 and 520 are provided to the input of multiplexer 525 . The outputs of multiplexer 525 are coupled to inputs of flops 535 . A 1x rate local clock is coupled to the clock inputs of flops 535 . The outputs of the flops 535 are provided to a serializer (not shown).

일 구현에서, 고속 5x 레이트 클록이 워드 클록 배럴 시프터(540)에 대한 입력으로서 제공된다. 일 구현에서, 워드 클록 배럴 시프터(540)는 로컬 1x 레이트 클록의 10 개의 고유한 위상들을 생성한다. 워드 클록 배럴 시프터(540)의 위상 조정 출력은 반전된 다음 플롭(530)의 클록 포트에 연결된다. 플롭(530)의 출력은 반전된 다음 다시 플롭(530)의 입력에 연결되어 위상 조정, 하프 레이트 로컬 클록을 생성한다. 위상 조정, 하프 레이트 로컬 클록은 멀티플렉서(525)의 선택 입력에 연결된다. 1x 제어기 클록은 반전되고 플롭(545)의 클록 입력에 연결된다. 플롭(545)의 출력은 반전된 다음 다시 플롭(545)의 입력에 연결되어 하프 레이트 제어기 클록을 생성한다. 회로(500)(도 5의)에 도시된 플롭들은 임의의 유형의 적절한 레지스터들(예를 들어, D 형 플립 플롭들)을 사용하여 구현될 수 있다는 점에 유의한다.In one implementation, a high speed 5x rate clock is provided as input to the word clock barrel shifter 540 . In one implementation, word clock barrel shifter 540 generates ten distinct phases of the local 1x rate clock. The phase adjustment output of word clock barrel shifter 540 is then inverted and connected to the clock port of flop 530 . The output of flop 530 is inverted and then connected back to the input of flop 530 to generate a phased, half-rate local clock. A phase-adjusted, half-rate local clock is coupled to the select input of a multiplexer 525 . The 1x controller clock is inverted and coupled to the clock input of flop 545 . The output of flop 545 is inverted and then connected back to the input of flop 545 to generate a half rate controller clock. Note that the flops shown in circuit 500 (FIG. 5) may be implemented using any type of suitable registers (eg, type D flip-flops).

이제 도 6을 참조하면, 직병렬변환기(deserializer)에서 사용하기 위한 회로(600)의 일 구현의 다이어그램이 도시된다. 일 구현에서, 회로(600)는 2-투-10 직병렬변환기의 일부로서 구현된다. 2-투-10 직병렬변환기는 입력 클록 사이클 당 2 개의 입력 비트를 수신하고 출력 클록 사이클 당 10 개의 출력 비트를 생성한다. 그러나, 다른 구현에서는, 회로(600)는 사이클 당 다른 수의 입력 비트를 수신하고 및/또는 사이클 당 다른 수의 출력 비트를 생성하는 다른 유형의 직병렬변환기와 함께 사용하도록 변형될 수 있다. 일 구현에서, 회로(600)는 2 개의 UI 클록 위상들의 1 개의 UI 입도(granularity)를 갖는 2-투-10 직병렬변환기의 일부로서 심볼 잠금(symbol locking)을 수행한다. 일 구현에서, 심볼 잠금은 2 개의 개별 기능 유닛들 사이의 링크에 대한 링크 트레이닝의 일부로서 수행된다. 이 기술을 사용하면, 입력되는 직병렬화 데이터(deserialized data)가 상대적으로 낮은 레이턴시의 올바른 심볼로 재정렬된다. 일 구현에서, 이 심볼 잠금 기술의 사용과 관련된 두 가지 양태들이 있다. 제1 양태는 배럴 시프트 클록 위상들을 사용하여 직병렬화된 입력되는 직렬 데이터를 갖는 것이다. 제2 양태는 올바른 심볼을 얻기 위해 입력되는 직렬화된 데이터를 다르게 채우는 것이다.Referring now to FIG. 6 , a diagram of one implementation of a circuit 600 for use in a deserializer is shown. In one implementation, circuit 600 is implemented as part of a 2-to-10 deserializer. A 2-to-10 deserializer receives two input bits per input clock cycle and generates 10 output bits per output clock cycle. However, in other implementations, circuit 600 may be modified for use with other types of deserializers that receive other numbers of input bits per cycle and/or produce other numbers of output bits per cycle. In one implementation, circuit 600 performs symbol locking as part of a 2-to-10 deserializer with 1 UI granularity of 2 UI clock phases. In one implementation, symbol locking is performed as part of link training on a link between two separate functional units. Using this technique, incoming deserialized data is reordered into correct symbols with relatively low latency. In one implementation, there are two aspects associated with the use of this symbol locking technique. A first aspect is to have incoming serial data serialized using barrel shift clock phases. A second aspect is to differently pad the incoming serialized data to get the correct symbols.

회로(600)에 대해 도시된 바와 같이, 입력되는 직렬 데이터는 플롭들(615A-B)에 의해 하프 레이트 클록의 양쪽 에지들에서 샘플링되어 2 비트의 데이터를 얻고, 이는 멀티플렉서들(620 및 622)를 통해 플롭들(645)로 전달된다. 일 구현에서, 직병렬변환 후, 데이터는 로컬 클록 도메인에 있고 제어기 클록 도메인으로 다시 이동될 것이다. 이는 도 4의 논의에서 앞서 설명된 바와 같이 동기 클록 도메인 교차에 의해 수행된다. 일 구현에서, 슬레이브의 제어기 클록은 마스터로부터 포워딩된 기준 클록을 갖는 로컬 PLL로부터 유도된다.As shown for circuit 600, the incoming serial data is sampled at both edges of the half-rate clock by flops 615A-B to obtain two bits of data, which are multiplexers 620 and 622. is transmitted to the flops 645 through In one implementation, after deserialization, the data is in the local clock domain and will be moved back to the controller clock domain. This is done by synchronous clock domain crossing as previously described in the discussion of FIG. 4 . In one implementation, the slave's controller clock is derived from a local PLL with a reference clock forwarded from the master.

회로(600)의 동작을 위해, 입력 데이터는 채널(605)로부터 수신되고 플롭들(615A-B)의 두 세트들에 결합된다. 클록 생성 유닛(610)은 플롭(615A)의 입력에 결합된 0도의 위상을 갖는 제1 클록을 생성한다. 클록 생성 유닛(610)은 또한 플롭(615B)의 입력에 결합된 180도의 위상을 갖는 제2 클록을 생성한다. 플롭(615B)의 입력에 결합된 180도 위상 제2 클록은 플롭(615A)의 입력에 결합된 0도 위상 제1 클록에 대해 180도 위상차이다. 플롭(615A)의 출력은 데이터1(Data1)로 표시되고 멀티플렉서들(620 및 622)의 "1" 입력들에 연결된다. 플롭(615B)의 출력은 테이터0(Data0)으로 표시되고 멀티플렉서들(620 및 622)의 "0" 입력들에 연결된다. 멀티플렉서들(620 및 622)에 대한 선택 신호들은 홀수 카운트에서 플립되는 시프트 데이터 카운터(625)에 의해 생성된다.For operation of circuit 600 , input data is received from channel 605 and coupled to two sets of flops 615A-B. The clock generation unit 610 generates a first clock having a phase of 0 degrees coupled to the input of the flop 615A. Clock generation unit 610 also generates a second clock having 180 degrees of phase coupled to the input of flop 615B. The 180 degree phase second clock coupled to the input of flop 615B is 180 degrees out of phase with the 0 degree phase first clock coupled to the input of flop 615A. The output of flop 615A is denoted as Data1 and is coupled to the “1” inputs of multiplexers 620 and 622 . The output of flop 615B is denoted as Data0 and is coupled to the “0” inputs of multiplexers 620 and 622 . Select signals for multiplexers 620 and 622 are generated by shift data counter 625 that is flipped at odd counts.

심볼 회전이 필요한지 확인하기 위한 로직(630)은 클록들을 회전시키기 위한 시프트 데이터(shift data)를 생성한다. 로직(630)으로부터의 출력은 시프트 데이터 카운터(625) 및 배럴 시프터(635)에 결합된다. 5x 레이트 클록은 또한 배럴 시프터(635)에 결합된다. 배럴 시프터(635)는 5x 레이트 클록 입력에 기초하여 상이한 위상들을 갖는 복수의 1x 레이트 클록들을 생성한다. 배럴 시프터(635)에 의해 생성된 상이한 위상들을 갖는 복수의 1x 클록들은 플롭들(645) 사이에서 상이한 플롭들에 제공된다. 플롭들(645)의 출력은 플롭들(650)의 입력들에 연결된다. 플롭들(650)은 로컬 클록으로 클록킹되고, 플롭들(650)의 출력들은 플롭(655)에 결합되고, 이는 제어기 클록으로 클록킹된다. 홀수 시프트의 경우, "0" 플롭(645)의 샘플이 지연되므로 데이터가 입력되는 비트에 의해 덮어 쓰기되지 않도록 보장하기 위해 추가 플롭(640)이 존재한다.Logic 630 to determine if a symbol rotation is necessary generates shift data to rotate the clocks. The output from logic 630 is coupled to a shift data counter 625 and a barrel shifter 635 . The 5x rate clock is also coupled to a barrel shifter 635 . Barrel shifter 635 generates a plurality of 1x rate clocks with different phases based on the 5x rate clock input. A plurality of 1x clocks with different phases generated by barrel shifter 635 are provided to different flops between flops 645 . The output of the flops 645 is coupled to the inputs of the flops 650 . Flops 650 are clocked with the local clock, and the outputs of flops 650 are coupled to flop 655 , which is clocked with the controller clock. For odd shifts, the samples of the “0” flop 645 are delayed, so an additional flop 640 is present to ensure that the data is not overwritten by the incoming bits.

이제 도 7을 참조하면, 심볼 잠금을 수행하기 위해 직병렬변환기의 배럴 시프터를 사용하는 타이밍 다이어그램(700)이 도시된다. 타이밍 다이어그램(700)은 회로(600)(도 6의)를 사용하여 샘플링되는 입력되는 직렬 데이터의 타이밍의 일례를 나타내기 위한 것이다. 일 구현에서, 샘플기(sampler)들부터의 데이터는 타이밍 다이어그램(700)에 도시된 바와 같이 멀티플렉서 선택에 0/1 UI 지연을 달성하기 위해 2 비트의 데이터로서 멀티플렉싱된다. 2 비트의 데이터는 엇갈린 클록 위상들(staggered clock phases)로 순차적으로 10 비트 레지스터에 채워진다. 10 비트 레지스터로부터, 출력은 로컬 클록으로 샘플링된다. 그런 다음 직병렬화된 데이터가 분석되어 올바른 심볼 타이밍을 달성하기 위해 데이터를 회전시켜야 하는지 여부를 추론한다. 타이밍 다이어그램(700)의 예시에 대해 로우(710)에 도시된 바와 같이, 입력되는 데이터는, 원래의, 위상 조정되지 않은 클록 타이밍으로, a7:0 비트 및 x9:8 비트로 샘플링되며, "a"는 현재 심볼이고 "x"는 이전 심볼이다. 올바른 심볼을 갖기 위해, 입력되는 데이터를 a9:0 비트로 샘플링하는 것이 목표이다. 로우(710)에 도시된 바와 같이, 다음 심볼은 b7:0 비트 및 a9:8 비트로 샘플링된다.Referring now to FIG. 7 , a timing diagram 700 using the deserializer's barrel shifter to perform symbol locking is shown. Timing diagram 700 is intended to show an example of the timing of input serial data sampled using circuit 600 (FIG. 6). In one implementation, data from samplers is multiplexed as 2 bits of data to achieve a 0/1 UI delay in multiplexer selection as shown in timing diagram 700 . Two bits of data are sequentially filled into a 10-bit register with staggered clock phases. From the 10-bit register, the output is sampled with a local clock. The deserialized data is then analyzed to infer whether the data needs to be rotated to achieve correct symbol timing. As shown in row 710 for an illustration of timing diagram 700, the incoming data is sampled at a7:0 bits and x9:8 bits with the original, unphased clock timing, and "a" is the current symbol and "x" is the previous symbol. In order to have the correct symbol, the goal is to sample the input data with a9:0 bits. As shown in row 710, the next symbol is sampled with b7:0 bits and a9:8 bits.

이제 도 8을 참조하면, 배럴 시프터가 단일 단계의 심볼 회전을 수행 한 후 시점의 타이밍 다이어그램(800)이 도시된다. 타이밍 다이어그램(800)은 단일 심볼 회전 단계가 수행된 후 일 특정 구현에 대한 회로(600)(도 6의)의 타이밍을 나타내도록 의도된다. 타이밍 다이어그램(800)과 타이밍 다이어그램(700)(도 7의) 사이의 차이는 심볼 회전을 수행하는 효과를 나타낸다. 타이밍 다이어그램(800)에서, 위상은 홀수 레지스터들의 클록들에 대해 시프트되었다. 레지스터 9는 이전 레지스터 0로부터 위상 타이밍을 얻고 레지스터 1은 이전 레지스터 2의 위상 타이밍을 얻고 레지스터 3은 이전 레지스터 4의 위상 타이밍을 얻는다. 따라서, 레지스터들의 절반은 2 UI만큼 오른쪽으로 시프트된 클록들을 갖는다. 레지스터의 클록들의 절반이 오른쪽으로 시프트되는 동안 로컬 클록은 여전히 동일하게 유지된다. 2 UI 위상 시프트 이 후, a8:0 및 x9는 로우(810)에 도시된 바와 같이 샘플링된 데이터이다. 홀수 시프트의 경우, 플롭 0으로부터의 샘플이 지연되므로 추가 플롭 0_지연이 있으므로 데이터가 최근 들어오는 비트 a9로 덮어 쓰기 되지 않는다.Referring now to FIG. 8 , a timing diagram 800 is shown at a point in time after the barrel shifter has performed a single step of symbol rotation. Timing diagram 800 is intended to represent the timing of circuit 600 (of FIG. 6 ) for one particular implementation after a single symbol rotation step has been performed. The difference between timing diagram 800 and timing diagram 700 (of FIG. 7 ) represents the effect of performing symbol rotation. In the timing diagram 800, the phase has been shifted relative to the clocks of the odd registers. Register 9 gets the phase timing from previous register 0, register 1 gets the phase timing from previous register 2, and register 3 gets the phase timing from previous register 4. Thus, half of the registers have clocks shifted right by 2 UI. The local clock still remains the same while half of the clocks in the register are shifted right. After the 2 UI phase shift, a8:0 and x9 are the sampled data as shown in row 810 . For odd shifts, the sample from flop 0 is delayed, so there is an additional flop 0_delay so the data is not overwritten with the latest incoming bit a9.

이제 도 9를 참조하면, 배럴 시프터가 제2 단계에 의해 심볼 회전을 수행 한 후 시점의 타이밍 다이어그램(900)이 도시된다. 타이밍 다이어그램(900)은 클록 위상이 일 특정 구현에 대해 제2 심볼 회전 단계에 의해 시프트된 후의 회로(600)(도 6의)를 나타내도록 의도된다. 타이밍 다이어그램(900)과 타이밍 다이어그램(800)(도 8의) 사이의 차이는 제2 심볼 회전 단계를 수행하는 효과를 예시한다. 타이밍 다이어그램(700)(도 7의)에 초기에 도시된 예에서, 올바른 심볼들을 샘플링하기 위해 두 개의 심볼 회전 단계들이 필요하다. 따라서, 레지스터들의 절반의 제1 단계 클록 위상들은 올바른 심볼을 얻기 위해 배럴 시프터에 의해 두 번 회전된다. 또한, 모든 이븐 회전(even rotation)은 로컬 클록이 2 개의 UI 단계들에 의해 이동하게 한다. 다이어그램(900)의 경우, 사실상 2 UI 시프트가 발생하고 데이터는 a9:0이되고 멀티플렉서들(620 및 622)이 뒤로 시프트 백(shifted back)된다. 이 기술을 사용하면, 레이턴시 없이 올바른 UI 단계들의 수만큼 심볼 윈도우를 이동하여 심볼을 잠근다. 다이어그램들(800 및 900)에서 볼 수 있듯이, 2 UI씩 다른 클록을 움직여 위상이 1 UI로 이동하고 있다.Referring now to FIG. 9 , a timing diagram 900 is shown at a point in time after the barrel shifter has performed symbol rotation by a second step. Timing diagram 900 is intended to represent circuit 600 (of FIG. 6 ) after the clock phase has been shifted by a second symbol rotation step for one particular implementation. The difference between timing diagram 900 and timing diagram 800 (of FIG. 8 ) illustrates the effect of performing the second symbol rotation step. In the example initially shown in timing diagram 700 (of FIG. 7 ), two symbol rotation steps are needed to sample the correct symbols. Thus, the first phase clock phases of half of the registers are rotated twice by the barrel shifter to get the correct symbol. Also, every even rotation causes the local clock to move by two UI steps. For diagram 900, in effect 2 UI shifts occur and the data becomes a9:0 and multiplexers 620 and 622 are shifted back. With this technique, the symbol is locked by moving the symbol window by the correct number of UI steps without latency. As can be seen in diagrams 800 and 900, the phase is shifting to 1 UI by moving the other clock by 2 UIs.

이제 도 10을 참조하면, 최소 레이턴시로 링크 폭(link wide) 스큐 보정을 수행하는 일 구현의 상태 다이어그램(1000)이 도시된다. 일 구현에서, 수신 물리 계층(PHY) 인터페이스의 링크 트레이닝을 위한 상태 다이어그램(1000)에 따라 방법이 구현된다. 이 방법은 다수의 레인들의 각 레인에 대한 심볼 아이(symbol eye)의 위치를 결정하여 레인들에 심볼을 정렬하는 동시에 이들을 스큐 보정하여 동기 데이터 전송을 달성하기 위해 수행된다. "심볼 아이"는 링크의 데이터 레인 상의 비트 전환을 기초로 심볼에 대한 데이터 유효 기간(data valid period)을 의미한다. 전통적인 접근 방식에서, 스큐 보정을 위한 소스 동기 클록 방식은 추가 단계들을 사용하여 올바른 심볼을 캡처하는 타이밍을 단순화하고, 추가 단계들은 상대적으로 높은 레이턴시를 발생시킨다. 그러나 상태 다이어그램(1000)과 관련된 방법을 사용하면, 레이턴시가 기존 접근 방식에 비해 상당히 감소된다. 일 구현에서, 상태 다이어그램(1000)과 관련된 접근 방식은 이전에 설명된 동기 클록 도메인 교차 방식뿐만 아니라 2 UI 클록 위상들의 1 UI 입도의 2-투-10 직병렬변환기로 심볼 잠금 방식을 사용한다.Referring now to FIG. 10 , a state diagram 1000 of one implementation for performing link wide skew correction with minimal latency is shown. In one implementation, a method is implemented according to a state diagram 1000 for link training of a receive physical layer (PHY) interface. This method is performed to achieve synchronous data transmission by determining the position of a symbol eye for each lane of a plurality of lanes, aligning symbols to the lanes, and correcting them skew at the same time. "Symbol Eye" means the data valid period for a symbol based on bit transitions on the data lanes of the link. In the traditional approach, the source-locked clock scheme for skew correction uses additional steps to simplify the timing of capturing the correct symbol, and the additional steps result in relatively high latency. However, using the method associated with the state diagram 1000, the latency is significantly reduced compared to the existing approach. In one implementation, the approach associated with state diagram 1000 uses a symbol locking scheme with a 2-to-10 deserializer of 1 UI granularity of 2 UI clock phases as well as the previously described synchronous clock domain crossing scheme.

링크 트레이닝 전에, 동기 클록 도메인 교차 방식을 사용하여 각 레인을 트레이닝시켜 제어기 클록에 대한 로컬 클록 타이밍이 타이밍 윈도우의 시작 부분에 있도록 한다(즉, 최대 유지, 최소 설정 시간 충족하기 위해). 이 단계는 링크가 설정 될 때까지 반복된다. 본원에서 사용되는 용어 "타이밍 윈도우(timing window)"는 대응되는 데이터가 유효한 기간으로 정의된다. 타이밍 윈도우는 데이터 신호의 선행(leading) 및 후행(trailing) 에지들로 정의된다. 그런 다음, 링크가 설정된 후, 각 레인이 확인되고 다음 옵션들 중 하나가 사용된다. 모든 레인들이 올바른 심볼을 갖지 않으면, 상태 다이어그램(1000)은 리셋 상태(1005)에서 아웃-아이(out-eye) 상태(1015)로 이동한다. 아웃-아이(1015)에서, 각 레인은 배럴 시프터를 사용하여 1 단계에 의해 심볼 회전되며, 설정된 타이밍 관계를 유지하기 위해 제어기 클록도 1 단계에 의해 회전된다. 그런 다음 모든 레인들이 확인된다. 일부 레인들이 심볼 잠기면, 상태 다이어그램이 상태(1010)으로 이동한다. 상태(1010)에서 심볼 잠기지 않은 레인들에 대한 로컬 클록들은 1 UI만큼 시프트된다. 일 구현에서, 심볼 잠기지 않은 레인들은 배럴 시프터를 사용하여 1 UI로 시프트된다. 제어기 클록이 정적이기 때문에 제어기 클록과 로컬 클록 사이의 타이밍 관계에 대해 설정 시간이 1UI 증가하고 유지 시간이 1UI 증가한다. 이는 모든 레인들이 심볼 잠길때까지 타이밍 마진 윈도우까지 계속된다. 일부 레인들이 타이밍 마진 윈도우에 도달 할 때까지 여전히 심볼 잠기지 않은 경우, 상태 다이어그램(1000)은 리셋 상태(1005)로 다시 이동한다. 그렇지 않고, 모든 레인이 심볼 잠기는 경우, 상태 다이어그램(1000)은 잠금 상태(1030)로 이동한다.Prior to link training, each lane is trained using a synchronous clock domain crossing scheme so that the local clock timing to the controller clock is at the beginning of the timing window (ie, to meet the maximum hold, minimum set time). This step is repeated until the link is established. As used herein, the term “timing window” is defined as the period during which the corresponding data is valid. A timing window is defined by the leading and trailing edges of the data signal. Then, after the link is established, each lane is checked and one of the following options is used. If all lanes do not have the correct symbol, state diagram 1000 moves from reset state 1005 to out-eye state 1015 . At out-eye 1015, each lane is symbol rotated by one step using a barrel shifter, and the controller clock is also rotated by one step to maintain the established timing relationship. Then all lanes are checked. When some lanes are symbol locked, the state diagram moves to state 1010 . The local clocks for the symbol unlocked lanes in state 1010 are shifted by 1 UI. In one implementation, symbol unlocked lanes are shifted by 1 UI using a barrel shifter. Because the controller clock is static, the setup time increases by 1 UI and the hold time increases by 1 UI for the timing relationship between the controller clock and the local clock. This continues until the timing margin window until all lanes are symbol locked. If some lanes are still not symbol locked until the timing margin window is reached, the state diagram 1000 moves back to the reset state 1005 . Otherwise, if all lanes are symbol locked, state diagram 1000 moves to locked state 1030 .

리셋 상태(1005)에서 일부 레인들이 심볼 잠기면, 상태 다이어그램(1000)은 상태(1010)로 이동한다. 상태(1010)로부터, 상태 다이어그램(1000)은 분석 상태(1025)로 이동한다. 그 후, 상태 다이어그램(1000)은 심볼 정렬된 레인들에 대해 로컬 클록이 시프트되는 시작_종료_아이(begin_end_eye) 상태(1020)로 이동한다. 이 방법은 타이밍 윈도우(즉, 최소 유지 시간, 최대 설정 시간)가 끝날 때까지 사용된다. 타이밍 윈도우가 끝나면, 모든 잠긴 레인들과 제어기 클록이 회전되어 누락된 회전들을 보상한다. 새로운 잠긴 레인이 스큐 보정된 심볼에 대해 잠긴 경우, 가장 최근에 잠긴 레인을 제외한 기존 잠긴 레인들과 제어기 클록이 회전되어 누락된 회전들을 보상한다.If some lanes are symbol locked in reset state 1005 , state diagram 1000 moves to state 1010 . From state 1010 , state diagram 1000 moves to analysis state 1025 . The state diagram 1000 then moves to a begin_end_eye state 1020 where the local clock is shifted for the symbol aligned lanes. This method is used until the end of the timing window (ie, minimum hold time, maximum set time). At the end of the timing window, all locked lanes and the controller clock are rotated to compensate for the missing rotations. When a new locked lane is locked for a skew corrected symbol, the existing locked lanes and the controller clock except for the most recently locked lane are rotated to compensate for the missing rotations.

이제 도 11을 참조하면, 4 개의 통신 레인들(1105A-D)에 걸친 심볼 아이 시작 포인트들의 일 구현의 다이어그램(1100)이 도시된다. 레인들(1105A-D)은 통신 채널의 일부로 포함된 임의의 수의 레인들을 나타낸다. 4 개의 레인들이 도 11에 도시되어 있지만, 이 수는 설명을 위한 하나의 예를 제공하기 위한 것임을 이해해야 한다. 다른 구현은 다른 수의 레인들을 가질 수 있으며 다중 레인들에 걸쳐 심볼 아이를 정렬하기 위해 본원에 설명된 기술을 계속 사용할 수 있다. 레인들(1105A-D)에 대한 심볼 아이들은 레인들(1105A-D) 내의 음영 사각형들로 표시된다.Referring now to FIG. 11 , a diagram 1100 of one implementation of symbol eye start points across four communication lanes 1105A-D is shown. Lanes 1105A-D represent any number of lanes included as part of a communication channel. Although four lanes are shown in FIG. 11 , it should be understood that this number is to provide one example for illustration. Other implementations may have other numbers of lanes and may continue to use the techniques described herein to align the symbol eye across multiple lanes. Symbol idles for lanes 1105A-D are indicated by shaded rectangles within lanes 1105A-D.

레인들(1105A-D)에 연결된 트레이스들의 매칭되지 않은 길이들 및/또는 다른 요인들로 인해, 각 레인에 대한 심볼 아이는 일반적으로 트레이닝 전에 다른 레인들(1105A-D)에 대해 다를 것이다. 리셋을 위한 인_아이(IN_EYE) 시작 포인트는 상태 다이어그램(1000)(도 10의)과 연관된 방법을 수행하는 제어 로직의 구현의 일 예시를 나타내기 위해 다이어그램(1100)의 상단에 예시되어 있다. 제어 로직은 정렬되지 않은 레인들에 대한 로컬 클록을 회전시킴으로써 각 레인(1105A-D)에 대한 심볼 아이에 대한 잠금을 시도 할 것이다. 제어 로직이 모든 레인들의 심볼 아이에 대한 잠금 전에 레인들의 엔드_아이(END_EYE) 포인트에 도달하면 제어 로직은 리셋하고 레인들(1105A-D)에서 다음 심볼이 수신될 때 다시 시작한다. 트레이닝의 목표는 각 레인의 심볼 아이가 다른 레인들의 심볼 아이들과 정렬되도록 레인들(1105A-D)의 로컬 클록들의 위상들을 조정하는 것이다.Due to mismatched lengths of the traces connected to lanes 1105A-D and/or other factors, the symbol eye for each lane will generally be different for other lanes 1105A-D prior to training. An IN_EYE starting point for reset is illustrated at the top of diagram 1100 to represent an example of an implementation of control logic that performs the method associated with state diagram 1000 (of FIG. 10 ). Control logic will attempt to lock the symbol eye for each lane 1105A-D by rotating the local clock for the unaligned lanes. If the control logic reaches the END_EYE point of the lanes before locking on the symbol eye of all lanes, the control logic resets and starts again when the next symbol is received in lanes 1105A-D. The goal of training is to adjust the phases of the local clocks of lanes 1105A-D so that the symbol eye of each lane is aligned with the symbol eyes of the other lanes.

이제 도 12를 참조하면, 클록 지터를 설명하기 위해 타이밍 마진을 증가시키기 위한 2-엔트리(entry) FIFO 회로(1200)의 일 구현의 다이어그램이 도시된다. 일 구현에서, 데이터는 채널로부터 수신되어 샘플기에 제공되며, 샘플기 클록은 빠른 PLL 클록이다(워드 클록과 비교하여). 데이터가 올바르게 샘플링되는 것을 보장하기 위해, 입력되는 직렬 비트 스트림과 빠른 PLL 클록 사이에 잠금을 설정하는 클록 데이터 복구(clock data recovery, CDR)부터 다양한 알고리즘이 실행된다. 일 구현에서, 잠금을 설정 한 후, 입력 비트 스트림은 병렬 데이터로 직병렬화된다. 일 구현에서, 입력 직렬 비트 스트림은 10 비트 병렬 데이터로 직병렬화된다. 그러나 다른 구현에서는 다른 수의 병렬 데이터 비트가 생성된다.Referring now to FIG. 12 , a diagram of one implementation of a two-entry FIFO circuit 1200 for increasing a timing margin to account for clock jitter is shown. In one implementation, data is received from the channel and provided to a sampler, where the sampler clock is a fast PLL clock (as compared to a word clock). To ensure that the data is sampled correctly, various algorithms are run, from clock data recovery (CDR) that establishes a lock between the incoming serial bit stream and the fast PLL clock. In one implementation, after establishing the lock, the input bitstream is deserialized into parallel data. In one implementation, the input serial bit stream is serialized into 10-bit parallel data. However, in other implementations a different number of parallel data bits are generated.

일 구현에서, 직병렬화 후, 데이터는 로컬 클록 도메인에 있고 제어기 클록 도메인으로 이동되어야 한다. 일 구현에서, 이것은 이전에 설명된 동기 클록 도메인 교차 기술을 사용하고 뿐만 아니라 회로(1200)의 사용을 통해 달성된다. 일 구현에서, 로컬 클록(즉, 워드 클록)과 잠재적으로 높은 지터 제어기 클록 사이의 클록 도메인 교차는 2-엔트리 FIFO 회로(1200)로 달성된다. 하프 레이트 로컬 클록이 기록 포인터로 사용되고 제어기 클록의 하프 레이트 버전이 판독 포인터 역할을 한다. 기록 포인터와 로컬 클록은 모두 공통 고속 클록으로부터 생성된다. 일 구현에서, 기록 포인터 배치는 1 UI 해상도로 조정된다.In one implementation, after deserialization, the data is in the local clock domain and must be moved to the controller clock domain. In one implementation, this is accomplished through the use of circuitry 1200 as well as using the synchronous clock domain crossing technique described previously. In one implementation, the clock domain crossing between the local clock (ie, word clock) and the potentially high jitter controller clock is achieved with the two-entry FIFO circuit 1200 . A half-rate local clock is used as the write pointer and a half-rate version of the controller clock serves as the read pointer. Both the write pointer and the local clock are generated from a common high-speed clock. In one implementation, the write pointer placement is adjusted to 1 UI resolution.

일 구현에서, 입력 직렬 데이터는 플롭들(1205A-N)의 입력들에 연결된다. 일 구현에서, 입력 데이터는 10 개의 입력 레인들을 포함한다. 그러나, 다른 구현에서, 플롭들(1205A-N)의 수 및 회로(1200)의 다른 구성 요소의 비트 폭을 조정함으로써 회로(1200)에 의해 다른 수의 입력 레인들이 지원될 수 있음을 이해해야 한다. 일 구현에서, 워드 클록 배럴 시프터(1207)는 워드 클록 배럴 시프터(1207)가 5 개의 고유한 위상들 및 2 UI 해상도를 갖는 1x 레이트 클록 출력을 생성하기 위해 사용하는 고속 5x 레이트 클록을 수신한다. 서로 다른 위상들을 가진 이러한 1x 레이트 클록은 플롭들(1205A-N)의 클록 포트에 연결된다. 플롭들(1205A-N)에 대한 데이터 입력들은 위상 시프트 클록을 사용하여 샘플링된다.In one implementation, the input serial data is coupled to the inputs of flops 1205A-N. In one implementation, the input data includes 10 input lanes. However, it should be understood that other numbers of input lanes may be supported by circuit 1200 by adjusting the number of flops 1205A-N and the bit width of other components of circuit 1200 in other implementations. In one implementation, the word clock barrel shifter 1207 receives the high speed 5x rate clock that the word clock barrel shifter 1207 uses to generate a 1x rate clock output with 5 distinct phases and 2 UI resolution. This 1x rate clock with different phases is coupled to the clock port of flops 1205A-N. Data inputs to flops 1205A-N are sampled using a phase shift clock.

일 구현에서, 플롭들(1205A-N)으로부터의 출력들은 플롭들(1210)의 입력 포트들에 연결된다. 워드 클록 배럴 시프터(1207)는 또한 플롭들(1210)의 클록 포트들에 결합된 로컬 1x 레이트 클록을 생성한다. 플롭들(1210)의 출력들은 플롭들(1215 및 1220)의 입력 포트들에 연결된다. 고속 5x 레이트 클록은 또한 기록 포인터 생성기(1240)에 연결된다. 기록 포인터 생성기(1240)는 플롭들(1215)의 클록 포트들에 결합되는 하프 레이트 로컬 클록을 생성한다. 기록 포인터 생성기(1240)의 하프 레이트 로컬 클록은 무효화되고(negated) 플롭들(1220)의 클록 포트들에 결합된다. 플롭들(1215)의 출력들은 멀티플렉서(1225)의 "0" 입력에 연결되는 반면, 플롭들(1220)의 출력들은 멀티플렉서(1225)의 "1" 입력에 연결된다. 플롭들(1245)에 의해 생성된 하프 레이트 제어기 클록은 멀티플렉서(1225)의 선택 포트에 연결된다. 멀티플렉서(1225)의 출력 레인들은 플롭들(1235)의 입력 포트들에 연결된다. 1x 레이트 제어기 클록은 플롭들(1235)의 클록 포트들에 연결된다. 플롭들(1235)로부터의 병렬 데이터 출력들은 추가 처리를 위해 제어기(도시되지 않음) 또는 다른 구성 요소에 제공된다.In one implementation, outputs from flops 1205A-N are coupled to input ports of flops 1210 . The word clock barrel shifter 1207 also generates a local lx rate clock coupled to the clock ports of the flops 1210 . The outputs of flops 1210 are coupled to input ports of flops 1215 and 1220 . A high speed 5x rate clock is also coupled to the write pointer generator 1240 . Write pointer generator 1240 generates a half rate local clock that is coupled to the clock ports of flops 1215 . The half rate local clock of write pointer generator 1240 is negated and coupled to the clock ports of flops 1220 . The outputs of flops 1215 are coupled to the “0” input of multiplexer 1225 , while the outputs of flops 1220 are coupled to the “1” input of multiplexer 1225 . The half rate controller clock generated by flops 1245 is coupled to the select port of multiplexer 1225 . The output lanes of multiplexer 1225 are coupled to input ports of flops 1235 . The 1x rate controller clock is coupled to the clock ports of flops 1235 . Parallel data outputs from flops 1235 are provided to a controller (not shown) or other component for further processing.

이제 도 13을 참조하면, 로컬 클록을 글로벌 클록과 정렬하기 위해 트레이닝을 수행하는 방법(1300)의 일 구현이 도시된다. 논의의 목적으로, 이 구현의 단계들과 도 14의 단계들은 순차적으로 도시된다. 그러나, 설명된 방법의 다양한 구현들에서, 설명된 요소들 중 하나 이상이 도시된 것과 다른 순서로 동시에 수행되거나 완전히 생략된다는 점에 유의한다. 다른 추가 요소도 원하는 대로 수행된다. 본원에 설명된 임의의 다양한 시스템 또는 장치는 방법(1300)을 구현하도록 구성된다.Referring now to FIG. 13 , shown is an implementation of a method 1300 of performing training to align a local clock with a global clock. For discussion purposes, the steps of this implementation and the steps of FIG. 14 are shown sequentially. It is noted, however, that in various implementations of the described method, one or more of the described elements are simultaneously performed in a different order than shown or are omitted entirely. Other additional elements are done as desired. Any of the various systems or apparatus described herein are configured to implement method 1300 .

회로는 글로벌 클록 신호 및 데이터 신호를 수신한다(블록 1305). 글로벌 클록은 본원에서 "제어기 클록"으로도 지칭될 수 있다는 점에 유의한다. 일부 구현에서, 회로는 복수의 글로벌 클록들 및 복수의 데이터 신호들을 수신한다. 일 구현에서, 글로벌 클록 및 데이터 신호는 수신 기능 유닛과 별개의 기능 유닛에서 생성된다. 회로는 또한 로컬 클록 신호를 생성한다(블록 1310). 예를 들어, 일 구현에서, 회로는 로컬 PLL을 사용하여 로컬 클록 신호를 생성한다.The circuitry receives a global clock signal and a data signal (block 1305). Note that the global clock may also be referred to herein as a “controller clock”. In some implementations, the circuitry receives a plurality of global clocks and a plurality of data signals. In one implementation, the global clock and data signals are generated in a functional unit separate from the receive functional unit. The circuitry also generates a local clock signal (block 1310). For example, in one implementation, the circuit generates a local clock signal using a local PLL.

회로는 에지 전환을 검출하기 위해 글로벌 클록에 의해 클록킹된 레지스터로 로컬 클록을 샘플링하는 동안 배럴 시프터로 1 UI 단계들에서 위상들에 걸쳐 로컬 클록을 스위핑(sweeping)한다(블록 1315). 일 구현에서, 레지스터의 출력은 에지 전환을 검출하는 제어 로직에 결합된다. 일 구현에서, 제어 로직은 유한 상태 머신(FSM)을 포함한다. 일 구현에서, 에지 전환은 상승 에지 전환(즉, 저 전압에서 고 전압으로)이다. 다음으로, 제어 로직은 에지 전환을 검출하는 것에 응답하여 로컬 클록이 글로벌 클록과 정렬된다고 결정한다(블록 1320). 그 후, 로컬 클록의 위상이 글로벌 클록에 대해 조정되어 설정 및 유지 타이밍 요건을 충족시킨다(블록 1325). 다음으로, 데이터 신호는 위상 조정 로컬 클록을 사용하여 샘플링된다(블록 1330). 그 후, 샘플링된 데이터는 추가 처리 및/또는 저장을 위해 후속 단계에 제공된다(블록 1335). 일 구현에서, 샘플링된 데이터는 직병렬화기에 제공된다. 블록(1335) 이후, 방법(1300)이 종료된다.The circuit sweeps the local clock across phases in 1 UI steps with a barrel shifter while sampling the local clock into a register clocked by the global clock to detect an edge transition (block 1315). In one implementation, the output of the register is coupled to control logic that detects an edge transition. In one implementation, the control logic includes a finite state machine (FSM). In one implementation, the edge transition is a rising edge transition (ie, from low voltage to high voltage). Next, control logic determines that the local clock is aligned with the global clock in response to detecting the edge transition (block 1320). The phase of the local clock is then adjusted relative to the global clock to meet the setup and hold timing requirements (block 1325). Next, the data signal is sampled using a phased local clock (block 1330). The sampled data is then provided to a subsequent step for further processing and/or storage (block 1335). In one implementation, the sampled data is provided to a deserializer. After block 1335 , method 1300 ends.

이제 도 14를 참조하면, 복수의 레인들에 대한 동기 교차 도메인 교차를 달성하기 위한 방법의 일 구현이 도시된다. 회로는 복수의 데이터 신호들 및 복수의 대응되는 글로벌 클록 신호들을 수신한다(블록 1405). 회로는 또한 복수의 로컬 클록 신호들을 생성한다(블록 1410). 예를 들어, 일 구현에서, 회로는 다른 로컬 PLL을 사용하여 각 로컬 클록 신호를 생성한다. 회로는 에지 전환을 검출하기 위해 대응되는 글로벌 클록에 의해 클록킹된 레지스터로 로컬 클록을 샘플링하는 동안 배럴 시프터로 1 UI 단계들의 위상들에 걸쳐 각 로컬 클록을 스위핑한다(블록 1415). 일 구현에서, 레지스터의 출력은 에지 전환을 검출하는 제어 로직에 결합된다. 일 구현에서, 제어 로직은 유한 상태 머신(FSM)을 포함한다. 일 구현에서, 에지 전환은 상승 에지 전환(즉, 로직 "0"에서 로직 "1"로)이다.Referring now to FIG. 14 , an implementation of a method for achieving synchronous cross-domain crossing for a plurality of lanes is shown. The circuitry receives a plurality of data signals and a plurality of corresponding global clock signals (block 1405). The circuitry also generates a plurality of local clock signals (block 1410). For example, in one implementation, the circuit uses a different local PLL to generate each local clock signal. The circuit sweeps each local clock over phases of 1 UI steps with a barrel shifter while sampling the local clock into a register clocked by the corresponding global clock to detect an edge transition (block 1415). In one implementation, the output of the register is coupled to control logic that detects an edge transition. In one implementation, the control logic includes a finite state machine (FSM). In one implementation, the edge transition is a rising edge transition (ie, a logic “0” to a logic “1”).

다음으로, 제어 로직은 에지 전환을 검출하는 것에 응답하여 각각의 로컬 클록이 대응되는 글로벌 클록과 정렬된다고 결정한다(블록 1420). 그 다음, 각각의 로컬 클록의 위상이 대응되는 글로벌 클록에 대해 조정되어 설정 및 홀드 타이밍 요건을 충족시킨다(블록 1425). 다음으로, 각각의 데이터 신호는 대응되는 위상 조정된 로컬 클록을 사용하여 샘플링된다(블록 1430). 그 후, 샘플링된 데이터는 추가 처리 및/또는 저장을 위해 후속 단계에 제공된다(블록 1435). 일 구현에서, 샘플링된 데이터는 직병렬변환기 제공된다. 블록(1435) 이후, 방법(1400)이 종료된다.Next, control logic determines that each local clock is aligned with a corresponding global clock in response to detecting the edge transition (block 1420). The phase of each local clock is then adjusted relative to the corresponding global clock to meet the set and hold timing requirements (block 1425). Next, each data signal is sampled using a corresponding phase-adjusted local clock (block 1430). The sampled data is then provided to a subsequent step for further processing and/or storage (block 1435). In one implementation, the sampled data is provided to a deserializer. After block 1435 , method 1400 ends.

이제 도 15를 참조하면, 감소된 레이턴시의 복수의 레인들에 걸쳐 스큐 보정을 위한 방법(1500)의 일 구현이 도시된다. 복수의 레인들의 각 레인은 타이밍 윈도우의 시작에서 각 로컬 클록을 글로벌 클록과 동기화하도록 트레이닝된다(즉, 최대 유지, 최소 설정 시간)(블록 1505). 일 구현에서, 방법(1400)(도 14의)은 블록(1505)을 구현하기 위해 수행된다. 다음으로, 각 레인의 심볼 타이밍이 확인된다(블록 1510). 올바른 심볼 정렬을 갖는 레인들이 없는 경우(조건부 블록(1515), "레인 없음" 다리), 각 레인은 단일 스텝에 의해 회전되는 심볼이다(블록 1520). 일 구현에서, 각 레인을 단일 단계로 회전시키는 심볼은 단일 단위 간격만큼 다른 모든 클록(엇갈린 위상들의 레인들의 배럴 시프터 생성 클록들의)을 시프팅하는 것을 포함한다. 엇갈린 위상들의 배럴 시프터 생성 클록들은 레인에서 캡처된 데이터 샘플들을 직병렬화하는 플롭들의 제1 컬럼에 제공된다. 블록(1520) 이후, 방법(1500)은 블록(1510)으로 돌아간다.Referring now to FIG. 15 , an implementation of a method 1500 for skew correction across a plurality of lanes of reduced latency is shown. Each lane of the plurality of lanes is trained (ie, maximum hold, minimum set time) to synchronize each local clock with a global clock at the beginning of a timing window (block 1505). In one implementation, method 1400 (of FIG. 14 ) is performed to implement block 1505 . Next, the symbol timing of each lane is ascertained (block 1510). If no lanes have the correct symbol alignment (conditional block 1515, “no lane” bridge), then each lane is a symbol rotated by a single step (block 1520). In one implementation, the symbol for rotating each lane in a single step involves shifting all other clocks (of the barrel shifter generated clocks of lanes of staggered phases) by a single unit interval. Barrel shifter generated clocks of staggered phases are provided to a first column of flops that deserialize the captured data samples in the lane. After block 1520 , the method 1500 returns to block 1510 .

레인들의 일부가 올바른 심볼 정렬을 갖는 경우(조건부 블록(1515), "일부 레인들" 다리), 다음 잠기지 않은 레인들은 단일 단계로 심볼 회전된다(블록 1525). 일 구현에서, 블록들(1520 및 1525)은 회로(600)(도 6의)를 사용하여 수행된다. 블록(1525) 이후, 타이밍 윈도우의 종료에 도달하면(조건부 블록(1530), "예" 다리), 모든 잠긴 레인들과 글로벌 클록은 누락된 회전을 보상하기 위해 회전된다(블록 1535). 블록(1535) 이후, 방법(1500)은 블록(1510)으로 돌아간다. 타이밍 윈도우의 종료에 도달하지 않은 경우(조건부 블록(1530), "아니오" 다리), 방법(1500)은 블록(1525)로 돌아간다. 모든 레인들이 올바른 심볼 정렬을 갖는 경우(조건부 블록(1515), "모든 레인들"), 방법(1500)이 종료된다.If some of the lanes have the correct symbol alignment (conditional block 1515, “some lanes” bridge), then the unlocked lanes are symbol rotated in a single step (block 1525). In one implementation, blocks 1520 and 1525 are performed using circuit 600 (of FIG. 6 ). After block 1525, when the end of the timing window is reached (conditional block 1530, “Yes” leg), all locked lanes and the global clock are rotated to compensate for the missed rotation (block 1535). After block 1535 , the method 1500 returns to block 1510 . If the end of the timing window has not been reached (conditional block 1530 , a “No” leg), the method 1500 returns to block 1525 . If all lanes have the correct symbol alignment (conditional block 1515, “all lanes”), the method 1500 ends.

이제 도 16을 참조하면, 회로 표현(1605)을 저장하는 비 일시적 컴퓨터 판독 가능 저장 매체(1600)의 일 구현을 예시하는 블록도가 도시된다. 일 구현에서, 회로 제조 시스템(1610)은 비 일시적 컴퓨터 판독 가능 저장 매체(1600)에 저장된 회로 표현(1605)을 처리하고 회로 표현(1605)에 기초하여 임의의 수의 집적 회로들(1615A-N)을 제조한다.Referring now to FIG. 16 , a block diagram illustrating one implementation of a non-transitory computer-readable storage medium 1600 that stores a circuit representation 1605 is shown. In one implementation, circuit manufacturing system 1610 processes circuit representation 1605 stored in non-transitory computer-readable storage medium 1600 and based on circuit representation 1605 any number of integrated circuits 1615A-N. ) is manufactured.

비 일시적 컴퓨터 판독 가능 저장 매체(1600)는 임의의 다양한 적절한 유형의 메모리 디바이스들 또는 저장 디바이스들을 포함할 수 있다. 매체(1600)는 설치 매체(예를 들어, 썸 드라이브(thumb drive), CD-ROM), 컴퓨터 시스템 메모리 또는 랜덤 액세스 메모리(예를 들어, DRAM, DDR RAM, SRAM, EDO RAM, 램버스(Rambus) RAM), 비 휘발성 메모리(예를 들어, 플래시, 자기 매체, 하드 드라이브, 광학 스토리지), 레지스터 또는 기타 유형의 메모리 요소가 될 수 있다. 매체(1600)는 다른 유형의 비 일시적 메모리뿐만 아니라 이들의 임의의 조합을 포함할 수 있다. 매체(1600)는 상이한 위치들에(예를 들어, 네트워크를 통해 연결된 다른 컴퓨터 시스템들에) 상주하는 둘 이상의 메모리 매체들을 포함할 수 있다.The non-transitory computer-readable storage medium 1600 may include any of a variety of suitable types of memory devices or storage devices. Media 1600 may be an installation medium (eg, a thumb drive, CD-ROM), computer system memory, or random access memory (eg, DRAM, DDR RAM, SRAM, EDO RAM, Rambus). RAM), non-volatile memory (eg, flash, magnetic media, hard drive, optical storage), registers, or other type of memory element. Media 1600 may include other types of non-transitory memory, as well as any combination thereof. Media 1600 may include two or more memory media residing in different locations (eg, on other computer systems coupled through a network).

다양한 구현에서, 회로 표현(1605)은 제한없이, VHDL, 베리로그(Verilog), 시스템C(SystemC), 시스템베리로그(SystemVerilog), RHDL 등과 같은 하드웨어 기술 언어를 포함하는 다양한 적절한 컴퓨터 언어들 중 임의의 것을 사용하여 지정된다. 회로 표현(1605)은 집적 회로들(1615A-N) 중 하나 이상의 적어도 일부를 제조하기 위해 회로 제조 시스템(1610)에 의해 사용 가능하다. 회로 표현(1605)의 포맷은 적어도 하나의 회로 제조 시스템(1610)에 의해 인식될 수 있다. 일부 구현에서, 회로 표현(1605)은 집적 회로들(1615A-N)의 합성 및/또는 레이아웃을 지정하는 하나 이상의 셀 라이브러리들을 포함한다.In various implementations, circuit representation 1605 may be configured in any of a variety of suitable computer languages including, but not limited to, hardware description languages such as VHDL, Verilog, SystemC, SystemVerilog, RHDL, and the like. is specified using Circuit representation 1605 is usable by circuit manufacturing system 1610 to fabricate at least a portion of one or more of integrated circuits 1615A-N. The format of the circuit representation 1605 may be recognized by the at least one circuit manufacturing system 1610 . In some implementations, circuit representation 1605 includes one or more cell libraries that specify the composition and/or layout of integrated circuits 1615A-N.

회로 제조 시스템(1610)은 집적 회로를 제조하도록 구성된 임의의 다양한 적절한 요소들을 포함한다. 이는 예를 들어 반도체 재료를 증착하기 위한 요소(예를 들어, 마스킹을 포함할 수 있는 웨이퍼), 재료를 제거하기 위한 요소, 증착된 재료의 형상을 변경하기 위한 요소, 재료를 변경하기 위한 요소(예를 들어, 재료 도핑 또는 자외선 처리를 사용하여 유전 상수 변경) 등을 포함할 수 있다. 회로 제조 시스템(1610)은 또한 올바른 동작을 위해 제조된 회로의 테스트를 수행할 수 있다.Circuit fabrication system 1610 includes any of a variety of suitable elements configured to fabricate integrated circuits. This may include, for example, an element for depositing a semiconductor material (eg, a wafer that may include a masking), an element for removing material, an element for changing the shape of the deposited material, an element for changing the material ( for example, using material doping or UV treatment to change the dielectric constant), and the like. The circuit manufacturing system 1610 may also perform testing of the manufactured circuit for correct operation.

다양한 구현에서, 집적 회로들(1615A-N)는 회로 표현(1605)에 의해 지정된 회로 설계에 따라 동작하며, 이는 본원에 설명된 기능을 수행하는 것을 포함할 수 있다. 예를 들어, 집적 회로들(1615A-N)은 본원에 예시된 회로들에 도시된 임의의 다양한 요소들 및/또는 본원에 예시된 회로의 다수의 인스턴스들을 포함할 수 있다. 또한, 집적 회로들(1615A-N)은 다른 구성 요소와 함께 본원에 설명된 다양한 기능들을 수행할 수 있다. 예를 들어, 집적 회로들(1615A-N)는 공급 전압을 제공하도록 구성된 전압 공급 회로에 결합될 수 있다(예를 들어, 전압 공급 장치 자체를 포함하는 것과 반대). 또한, 본원에 설명된 기능은 여러 개의 연결된 집적 회로들에 의해 수행될 수 있다.In various implementations, the integrated circuits 1615A-N operate according to the circuit design specified by the circuit representation 1605 , which may include performing the functions described herein. For example, the integrated circuits 1615A-N may include any of the various elements shown in the circuits illustrated herein and/or multiple instances of the circuit illustrated herein. In addition, the integrated circuits 1615A-N, along with other components, may perform various functions described herein. For example, the integrated circuits 1615A-N may be coupled to a voltage supply circuit configured to provide a supply voltage (eg, as opposed to including the voltage supply itself). Also, the functions described herein may be performed by multiple connected integrated circuits.

본원에서 사용된 "회로의 설계를 지정하는 회로 표현??" 형태의 문구는 해당 회로가 요소를 충족하기 위해 제작되어야 함을 의미하지 않는다. 오히려, 이 문구는 회로 표현이 제조 시 표시된 동작을 수행하도록 구성되거나 지정된 구성 요소를 포함하는 회로를 설명함을 나타낸다.As used herein, "a circuit representation specifying the design of a circuit??" The phrase in the form does not imply that the circuit in question must be built to fulfill the element. Rather, this phrase indicates that the circuit representation describes a circuit that, when manufactured, includes components configured or designated to perform the indicated operations.

다양한 구현에서, 프로그램 명령어는 본원에 설명된 방법 및/또는 메커니즘을 구현하는 데 사용된다. 예를 들어, 하드웨어의 동작 또는 설계를 설명하는 프로그램 명령어가 작성된다. 일 구현에서, 이러한 프로그램 명령은 베리로그(Verilog)와 같은 하드웨어 설계 언어(HDL)로 표현된다. 다양한 구현에서, 프로그램 명령어는 임의의 다양한 비 일시적 컴퓨터 판독 가능 저장 매체에 저장된다. 저장 매체는 회로 제조, 프로그램 실행 또는 기타를 위해 컴퓨팅 시스템에 프로그램 명령어를 제공하기 위해 사용 중에 컴퓨팅 시스템에 의해 액세스 가능하다. 일반적으로 말해서, 그러한 컴퓨팅 시스템은 프로그램 명령어를 실행하도록 구성된 적어도 하나 이상의 메모리 및 하나 이상의 프로세서를 포함한다.In various implementations, program instructions are used to implement the methods and/or mechanisms described herein. For example, program instructions that describe the operation or design of hardware are written. In one implementation, these program instructions are expressed in a hardware design language (HDL), such as Verilog. In various implementations, the program instructions are stored in any of a variety of non-transitory computer-readable storage media. The storage medium is accessible by the computing system during use to provide program instructions to the computing system for circuit manufacturing, program execution, or the like. Generally speaking, such a computing system includes at least one memory and one or more processors configured to execute program instructions.

전술한 구현은 구현의 비 제한적인 예시일 뿐이라는 것이 강조되어야 한다. 상기 개시 내용이 완전히 이해되면 당업자에게 수 많은 변형 및 수정이 명백해질 것이다. 다음의 청구 범위는 그러한 모든 변형 및 수정을 포함하도록 해석되도록 의도된다.It should be emphasized that the foregoing implementations are merely non-limiting examples of implementations. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully understood. The following claims are intended to be construed to cover all such variations and modifications.

Claims (20)

회로에 있어서,
복수의 통신 레인(lane)들; 및
제어 로직(control logic)을 포함하고, 상기 제어 로직은:
상기 복수의 통신 레인들의 각 레인이 올바른 심볼 정렬(correct symbol alignmen)을 갖는지 여부를 결정하고;
상기 복수의 통신 레인들의 모든 레인들이 잘못된 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 단일 단계에 의해 각 레인을 심볼 회전시키고;
상기 복수의 통신 레인들 중 전부가 아닌 일부 레인들이 올바른 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 단일 단계에 의해 잘못된 심볼 정렬을 갖는 레인들을 심볼 회전시키고; 그리고
상기 복수의 통신 레인들의 모든 레인들이 올바른 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 복수의 데이터 시퀀스(data sequence)들을 생성하기 위해 복수의 로컬 클록들을 사용하여 복수의 데이터 신호들을 샘플링하도록 구성되는, 회로.
in the circuit,
a plurality of communication lanes; and
a control logic comprising:
determine whether each lane of the plurality of communication lanes has correct symbol alignment;
in response to determining that all lanes of the plurality of communication lanes have incorrect symbol alignment, symbol rotate each lane in a single step;
in response to determining that some but not all of the plurality of communication lanes have correct symbol alignment, symbol rotate lanes with incorrect symbol alignment in a single step; And
in response to determining that all lanes of the plurality of communication lanes have correct symbol alignment, sample the plurality of data signals using the plurality of local clocks to generate a plurality of data sequences; Circuit.
제1항에 있어서, 상기 복수의 통신 레인들의 모든 레인들이 올바른 심볼 정렬을 갖기 전에 제1 타이밍 윈도우(timing window)의 종료에 도달했다고 결정하는 것에 응답하여, 상기 제어 로직은:
올바른 심볼 정렬을 갖는 레인들을 심볼 회전시키고 누락된 심볼 회전을 보상하기 위해 대응되는 글로벌 클록의 위상을 조정하고; 그리고
제2 타이밍 윈도우의 시작에서, 상기 복수의 통신 레인들의 각 레인이 올바른 심볼 정렬을 갖는지 여부를 결정하도록 구성되는, 회로.
The control logic of claim 1 , wherein in response to determining that an end of a first timing window has been reached before all lanes of the plurality of communication lanes have correct symbol alignment:
symbol rotate lanes with correct symbol alignment and adjust the phase of the corresponding global clock to compensate for missing symbol rotation; And
and determine, at the beginning of a second timing window, whether each lane of the plurality of communication lanes has correct symbol alignment.
제1항에 있어서, 상기 회로는:
상기 복수의 통신 레인들의 각 레인에 대한 배럴 시프터(barrel shifter)-여기서 각 배럴 시프터는 입력 데이터 샘플들을 직병렬화하기 위해 엇갈린 위상들(staggered phases)을 갖는 복수의 클록들을 생성하도록 구성 됨-; 및
각 레인에 대한 레지스터들의 복수의 컬럼들을 더 포함하고, 엇갈린 위상들을 갖는 상기 복수의 클록들은 상기 입력 데이터 샘플들을 샘플링하기 위해 레지스터들의 제1 컬럼에 결합되는, 회로.
The method of claim 1 , wherein the circuit comprises:
a barrel shifter for each lane of the plurality of communication lanes, wherein each barrel shifter is configured to generate a plurality of clocks having staggered phases to serialize input data samples; and
and a plurality of columns of registers for each lane, wherein the plurality of clocks having staggered phases are coupled to a first column of registers to sample the input data samples.
제3항에 있어서, 상기 레지스터들의 제1 컬럼으로부터의 출력들은 레지스터들의 제2 컬럼의 입력들에 연결되고, 상기 레지스터들의 제2 컬럼의 각 레지스터는 상기 레인의 대응되는 로컬 클록에 의해 클록킹되는, 회로.4. The method of claim 3, wherein outputs from the first column of registers are coupled to inputs of a second column of registers, each register of the second column of registers clocked by a corresponding local clock of the lane. , Circuit. 제3항에 있어서, 상기 단일 단계에 의해 상기 레인을 심볼 회전시키는 것은 엇갈린 위상들을 갖는 상기 복수의 클록들 중 모든 다른 클록의 위상을 단일 단위 간격(single unit interval)만큼 시프팅시키는 것을 포함하는, 회로.4. The method of claim 3, wherein symbol rotating the lane by the single step comprises shifting the phase of all other ones of the plurality of clocks having staggered phases by a single unit interval. Circuit. 제1항에 있어서, 상기 복수의 레인들의 각 레인이 올바른 심볼 정렬을 갖는지 여부를 결정하기 전에, 상기 제어 로직은 타이밍 윈도우의 시작에서 상기 레인의 로컬 클록을 대응되는 글로벌 클록과 동기화하도록 각 레인을 트레이닝시키도록 구성되는, 회로.2. The method of claim 1, wherein, prior to determining whether each lane of the plurality of lanes has correct symbol alignment, the control logic synchronizes each lane to synchronize its local clock with a corresponding global clock at the beginning of a timing window. A circuit configured to train. 제6항에 있어서, 상기 타이밍 윈도우의 시작에서 상기 레인의 상기 로컬 클록을 상기 대응되는 글로벌 클록과 동기화하도록 각 레인을 트레이닝시키는 것은:
주어진 레지스터로, 상기 대응되는 글로벌 클록으로 상기 로컬 클록을 샘플링하는 것;
주어진 배럴 시프터를 사용하여, 에지 전환(edge transition)이 검출될 때까지 위상들에 걸쳐 상기 로컬 클록을 스위핑하는 것(sweeping);
상기 에지 전환을 검출하는 것에 응답하여 상기 로컬 클록이 상기 대응되는 글로벌 클록과 정렬된다고 결정하는 것; 및
상기 레인 상의 데이터 신호를 샘플링하기 위한 설정 및 유지 타이밍 요구 사항을 충족하기 위해 상기 로컬 클록의 위상을 조정하는 것을 포함하는, 회로.
7. The method of claim 6, wherein training each lane to synchronize the local clock of the lane with the corresponding global clock at the beginning of the timing window comprises:
sampling, with a given register, the local clock with the corresponding global clock;
using a given barrel shifter, sweeping the local clock across phases until an edge transition is detected;
determining that the local clock is aligned with the corresponding global clock in response to detecting the edge transition; and
and adjusting the phase of the local clock to meet setup and maintenance timing requirements for sampling a data signal on the lane.
방법에 있어서,
복수의 통신 레인들의 각 레인이 올바른 심볼 정렬을 갖는지 여부를 결정하는 단계;
상기 복수의 통신 레인들의 모든 레인들이 잘못된 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 단일 단계에 의해 각 레인을 심볼 회전시키는 단계;
상기 복수의 통신 레인들 중 전부가 아닌 일부 레인들이 올바른 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 단일 단계에 의해 잘못된 심볼 정렬을 갖는 레인들을 심볼 회전시키는 단계; 및
상기 복수의 통신 레인들의 모든 레인들이 올바른 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 복수의 데이터 시퀀스들을 생성하기 위해 복수의 로컬 클록들을 사용하여 복수의 데이터 신호들을 샘플링하는 단계를 포함하는, 방법.
In the method,
determining whether each lane of the plurality of communication lanes has correct symbol alignment;
symbol rotation of each lane in a single step in response to determining that all lanes of the plurality of communication lanes have incorrect symbol alignment;
in response to determining that some but not all of the plurality of communication lanes have correct symbol alignment, symbol rotating lanes with incorrect symbol alignment in a single step; and
in response to determining that all lanes of the plurality of communication lanes have correct symbol alignment, sampling a plurality of data signals using a plurality of local clocks to generate a plurality of data sequences.
제8항에 있어서, 상기 복수의 통신 레인들의 모든 레인들이 올바른 심볼 정렬을 갖기 전에 제1 타이밍 윈도우의 종료에 도달했다고 결정하는 것에 응답하여, 상기 방법은:
올바른 심볼 정렬을 갖는 레인들을 심볼 회전시키고 누락된 심볼 회전을 보상하기 위해 대응되는 글로벌 클록의 위상을 조정하는 단계; 및
제2 타이밍 윈도우의 시작에서, 상기 복수의 통신 레인들의 각 레인이 올바른 심볼 정렬을 갖는지 여부를 결정하는 단계를 더 포함하는, 방법.
9. The method of claim 8, wherein in response to determining that an end of a first timing window has been reached before all lanes of the plurality of communication lanes have correct symbol alignment:
symbol rotation of lanes with correct symbol alignment and adjusting phase of a corresponding global clock to compensate for missing symbol rotation; and
at the beginning of a second timing window, determining whether each lane of the plurality of communication lanes has correct symbol alignment.
제8항에 있어서,
상기 복수의 통신 레인들의 각 레인에 대한 배럴 시프터로, 입력 데이터 샘플들을 직병렬화하기 위해 엇갈린 위상들을 갖는 복수의 클록들을 생성하는 단계; 및
상기 입력 데이터 샘플들을 샘플링하기 위해 각 레인에 대한 레지스터들의 제1 컬럼에 의해, 상기 엇갈린 위상들을 갖는 복수의 클록들을 수신하는 단계를 더 포함하는, 방법.
9. The method of claim 8,
generating, with a barrel shifter for each lane of the plurality of communication lanes, a plurality of clocks having staggered phases to deserialize input data samples; and
receiving, by a first column of registers for each lane, a plurality of clocks having the staggered phases to sample the input data samples.
제10항에 있어서, 레지스터들의 제2 컬럼의 입력들에서, 상기 레지스터들의 제1 컬럼으로부터의 출력들을 수신하는 단계를 더 포함하고, 상기 레지스터들의 제2 컬럼의 각 레지스터는 상기 레인의 대응되는 로컬 클록에 의해 클록킹되는, 방법.11. The method of claim 10, further comprising receiving, at inputs of a second column of registers, outputs from a first column of registers, each register in the second column of registers having a corresponding local in the lane. clocked by a clock. 제10항에 있어서, 상기 단일 단계에 의해 상기 레인을 심볼 회전시키는 단계는 엇갈린 위상들을 갖는 상기 복수의 클록들 중 모든 다른 클록의 위상을 단일 단위 간격만큼 시프팅시키는 단계를 포함하는, 방법.11. The method of claim 10, wherein symbol rotating the lane in a single step comprises shifting the phase of all other ones of the plurality of clocks having staggered phases by a single unit interval. 제8항에 있어서, 상기 복수의 레인들의 각 레인이 올바른 심볼 정렬을 갖는지 여부를 결정하기 전에, 상기 방법은 타이밍 윈도우의 시작에서 상기 레인의 로컬 클록을 대응되는 글로벌 클록과 동기화하도록 각 레인을 트레이닝시키는 단계를 포함하는, 방법.9. The method of claim 8, wherein before determining whether each lane of the plurality of lanes has correct symbol alignment, the method trains each lane to synchronize its local clock with a corresponding global clock at the beginning of a timing window. A method comprising the step of 제13항에 있어서, 상기 타이밍 윈도우의 시작에서 상기 레인의 상기 로컬 클록을 상기 대응되는 글로벌 클록과 동기화하도록 각 레인을 트레이닝시키는 단계는:
주어진 레지스터로, 상기 대응되는 글로벌 클록으로 상기 로컬 클록을 샘플링하는 단계;
주어진 배럴 시프터를 사용하여, 에지 전환이 검출될 때까지 위상들에 걸쳐 상기 로컬 클록을 스위핑하는 단계;
상기 에지 전환을 검출하는 것에 응답하여 상기 로컬 클록이 상기 대응되는 글로벌 클록과 정렬된다고 결정하는 단계; 및
상기 레인 상의 데이터 신호를 샘플링하기 위한 설정 및 유지 타이밍 요구 사항을 충족하기 위해 상기 로컬 클록의 위상을 조정하는 단계를 포함하는, 방법.
14. The method of claim 13, wherein training each lane to synchronize the local clock of the lane with the corresponding global clock at the beginning of the timing window comprises:
sampling the local clock with the corresponding global clock with a given register;
using a given barrel shifter, sweeping the local clock across phases until an edge transition is detected;
determining that the local clock is aligned with the corresponding global clock in response to detecting the edge transition; and
adjusting the phase of the local clock to meet setup and maintenance timing requirements for sampling a data signal on the lane.
시스템에 있어서,
제1 기능 유닛(functional unit);
복수의 통신 레인들을 갖는 채널;
상기 채널을 통해 상기 제1 기능 유닛에 결합된 제2 기능 유닛을 포함하고;
상기 제1 기능 유닛은:
상기 복수의 통신 레인들의 각 레인이 올바른 심볼 정렬을 갖는지 여부를 결정하고;
상기 복수의 통신 레인들의 모든 레인들이 잘못된 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 단일 단계에 의해 각 레인을 심볼 회전시키고;
상기 복수의 통신 레인들 중 전부가 아닌 일부 레인들이 올바른 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 단일 단계에 의해 잘못된 심볼 정렬을 갖는 레인들을 심볼 회전시키고; 그리고
상기 복수의 통신 레인들의 모든 레인들이 올바른 심볼 정렬을 갖는다고 결정하는 것에 응답하여, 복수의 데이터 시퀀스들을 생성하기 위해 복수의 로컬 클록들을 사용하여 복수의 데이터 신호들을 샘플링하도록 구성되는, 시스템.
In the system,
a first functional unit;
a channel having a plurality of communication lanes;
a second functional unit coupled to the first functional unit via the channel;
The first functional unit comprises:
determine whether each lane of the plurality of communication lanes has correct symbol alignment;
in response to determining that all lanes of the plurality of communication lanes have incorrect symbol alignment, symbol rotate each lane in a single step;
in response to determining that some but not all of the plurality of communication lanes have correct symbol alignment, symbol rotate lanes with incorrect symbol alignment in a single step; And
and in response to determining that all lanes of the plurality of communication lanes have correct symbol alignment, sample the plurality of data signals using the plurality of local clocks to generate the plurality of data sequences.
제15항에 있어서, 상기 복수의 통신 레인들의 모든 레인들이 올바른 심볼 정렬을 갖기 전에 제1 타이밍 윈도우의 종료에 도달했다고 결정하는 것에 응답하여, 상기 제1 기능 유닛은:
올바른 심볼 정렬을 갖는 레인들을 심볼 회전시키고 누락된 심볼 회전을 보상하기 위해 대응되는 글로벌 클록의 위상을 조정하고; 그리고
제2 타이밍 윈도우의 시작에서, 상기 복수의 통신 레인들의 각 레인이 올바른 심볼 정렬을 갖는지 여부를 결정하도록 구성되는, 시스템.
16. The method of claim 15, wherein in response to determining that an end of a first timing window has been reached before all lanes of the plurality of communication lanes have correct symbol alignment, the first functional unit comprises:
symbol rotate lanes with correct symbol alignment and adjust the phase of the corresponding global clock to compensate for missing symbol rotation; And
and determine, at the beginning of a second timing window, whether each lane of the plurality of communication lanes has correct symbol alignment.
제15항에 있어서, 상기 제1 기능 유닛은:
상기 복수의 통신 레인들의 각 레인에 대한 배럴 시프터-여기서 각 배럴 시프터는 입력 데이터 샘플들을 직병렬화하기 위해 엇갈린 위상들을 갖는 복수의 클록들을 생성하도록 구성 됨-; 및
각 레인에 대한 레지스터들의 복수의 컬럼들을 더 포함하고, 엇갈린 위상들을 갖는 상기 복수의 클록들은 상기 입력 데이터 샘플들을 샘플링하기 위해 레지스터들의 제1 컬럼에 결합되는, 시스템.
16. The method of claim 15, wherein the first functional unit comprises:
a barrel shifter for each lane of the plurality of communication lanes, wherein each barrel shifter is configured to generate a plurality of clocks having staggered phases to serialize input data samples; and
further comprising a plurality of columns of registers for each lane, wherein the plurality of clocks having staggered phases are coupled to a first column of registers to sample the input data samples.
제17항에 있어서, 상기 레지스터들의 제1 컬럼으로부터의 출력들은 레지스터들의 제2 컬럼의 입력들에 연결되고, 상기 레지스터들의 제2 컬럼의 각 레지스터는 상기 레인의 대응되는 로컬 클록에 의해 클록킹되는, 시스템.18. The method of claim 17, wherein outputs from the first column of registers are coupled to inputs of a second column of registers, wherein each register in the second column of registers is clocked by a corresponding local clock of the lane. , system. 제17항에 있어서, 상기 단일 단계에 의해 상기 레인을 심볼 회전시키는 것은 엇갈린 위상을 갖는 상기 복수의 클록들 중 모든 다른 클록의 위상을 단일 단위 간격(single unit interval)만큼 시프팅시키는 것을 포함하는, 시스템.18. The method of claim 17, wherein symbol rotating the lane by the single step comprises shifting the phase of all other clocks of the plurality of clocks having staggered phase by a single unit interval. system. 제15항에 있어서, 상기 복수의 레인들의 각 레인이 올바른 심볼 정렬을 갖는지 여부를 결정하기 전에, 상기 제1 기능 유닛은 타이밍 윈도우의 시작에서 상기 레인의 로컬 클록을 대응되는 글로벌 클록과 동기화하도록 각 레인을 트레이닝시키도록 구성되는, 시스템.16. The method of claim 15, wherein, prior to determining whether each lane of the plurality of lanes has correct symbol alignment, the first functional unit is configured to synchronize each lane's local clock with a corresponding global clock at the beginning of a timing window. A system configured to train a lane.
KR1020217018751A 2019-04-29 2020-04-27 Skew Compensation Method for Physical Layer Interface of Multi-Chip Module KR102502615B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237005747A KR102578608B1 (en) 2019-04-29 2020-04-27 Deskewing method for a physical layer interface on a multi-chip module

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/397,848 US10581587B1 (en) 2019-04-29 2019-04-29 Deskewing method for a physical layer interface on a multi-chip module
US16/397,848 2019-04-29
PCT/US2020/030086 WO2020223159A2 (en) 2019-04-29 2020-04-27 Deskewing method for a physical layer interface on a multi-chip module

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237005747A Division KR102578608B1 (en) 2019-04-29 2020-04-27 Deskewing method for a physical layer interface on a multi-chip module

Publications (2)

Publication Number Publication Date
KR20210089773A true KR20210089773A (en) 2021-07-16
KR102502615B1 KR102502615B1 (en) 2023-02-23

Family

ID=69645793

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217018751A KR102502615B1 (en) 2019-04-29 2020-04-27 Skew Compensation Method for Physical Layer Interface of Multi-Chip Module
KR1020237005747A KR102578608B1 (en) 2019-04-29 2020-04-27 Deskewing method for a physical layer interface on a multi-chip module

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237005747A KR102578608B1 (en) 2019-04-29 2020-04-27 Deskewing method for a physical layer interface on a multi-chip module

Country Status (6)

Country Link
US (3) US10581587B1 (en)
EP (1) EP3963846A2 (en)
JP (2) JP7359854B2 (en)
KR (2) KR102502615B1 (en)
CN (1) CN113228554B (en)
WO (1) WO2020223159A2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10581587B1 (en) * 2019-04-29 2020-03-03 Advanced Micro Devices, Inc. Deskewing method for a physical layer interface on a multi-chip module
KR20230162239A (en) 2022-05-20 2023-11-28 삼성전자주식회사 semiconductor device and its operating method

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6288656B1 (en) * 1999-12-21 2001-09-11 Lsi Logic Corporation Receive deserializer for regenerating parallel data serially transmitted over multiple channels
JP2002300031A (en) * 2001-04-02 2002-10-11 Fujitsu Ltd Sampling circuit
KR20140074938A (en) * 2011-09-12 2014-06-18 인텔 코포레이션 Wireless network re-entry systems and processes
US20140218221A1 (en) * 2013-02-05 2014-08-07 Altera Corporation Techniques For Alignment of Parallel Signals
KR20160098096A (en) * 2015-02-09 2016-08-18 베드락 오토메이션 플렛폼즈 인크. Input/output module with multi-channel switching capability
EP3170262A1 (en) * 2014-07-18 2017-05-24 Qualcomm Incorporated Clock synchronization
KR20180041257A (en) * 2013-10-30 2018-04-23 인텔 코포레이션 A method, apparatus and system for measuring latency in a physical unit of a circuit

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684794A (en) * 1996-01-25 1997-11-04 Hazeltine Corporation Validation of subscriber signals in a cellular radio network
US6212246B1 (en) * 1996-11-21 2001-04-03 Dsp Group, Inc. Symbol-quality evaluation in a digital communications receiver
US6105144A (en) 1998-03-02 2000-08-15 International Business Machines Corporation System and method for alleviating skew in a bus
WO2001078337A1 (en) * 2000-04-11 2001-10-18 Parthus Technologies Plc Method and apparatus for multi-lane communication channel with deskewing capability
US6819683B2 (en) * 2001-01-19 2004-11-16 Lucent Technologies Inc. Communications system and associated deskewing and word framing methods
US6654824B1 (en) * 2001-08-28 2003-11-25 Crossroads Systems, Inc. High-speed dynamic multi-lane deskewer
EP1365555A1 (en) * 2002-05-20 2003-11-26 Texas Instruments Limited Circular buffer for delay compensation in parallel transmission
TWI249681B (en) 2003-07-02 2006-02-21 Via Tech Inc Circuit and method for aligning data transmitting timing of a plurality of lanes
DE10356127A1 (en) * 2003-12-02 2005-07-07 Robert Bosch Gmbh Device for controlling a memory
KR100602872B1 (en) * 2004-11-29 2006-07-28 한국전자통신연구원 Multi channel skew removal device for pci express protocol
US8867683B2 (en) 2006-01-27 2014-10-21 Ati Technologies Ulc Receiver and method for synchronizing and aligning serial streams
JP4917901B2 (en) 2007-01-15 2012-04-18 川崎マイクロエレクトロニクス株式会社 Receiver
US7995695B2 (en) * 2008-01-04 2011-08-09 Agere Systems Inc. Data alignment method for arbitrary input with programmable content deskewing info
JP2014140090A (en) 2011-05-12 2014-07-31 Sharp Corp Signal transmission system and signal transmission device
JP2013055502A (en) 2011-09-05 2013-03-21 Ricoh Co Ltd Serial communication circuit
GB2498937A (en) * 2012-01-31 2013-08-07 Texas Instruments Ltd A high data rate SerDes receiver arranged to receive input from a low data rate SerDes transmitter
WO2013137863A1 (en) 2012-03-13 2013-09-19 Rambus Inc. Clock and data recovery having shared clock generator
US9059850B2 (en) * 2012-03-29 2015-06-16 Broadcom Corporation Data alignment over multiple physical lanes
CN108924593B (en) * 2013-01-18 2021-07-06 弗劳恩霍夫应用研究促进协会 Forward error correction data generator, forward error correction decoder, forward error correction data generation method, forward error correction decoding method, and storage medium
US9313058B2 (en) * 2013-03-07 2016-04-12 Qualcomm Incorporated Compact and fast N-factorial single data rate clock and data recovery circuits
US20140270024A1 (en) * 2013-03-14 2014-09-18 Nokia Corporation Apparatus and method for detection of time tracking failure
JP6221328B2 (en) 2013-04-30 2017-11-01 富士通株式会社 Receiving device, information processing device, and data receiving method
US9735948B2 (en) * 2013-10-03 2017-08-15 Qualcomm Incorporated Multi-lane N-factorial (N!) and other multi-wire communication systems
US9203599B2 (en) * 2014-04-10 2015-12-01 Qualcomm Incorporated Multi-lane N-factorial (N!) and other multi-wire communication systems
US9755818B2 (en) * 2013-10-03 2017-09-05 Qualcomm Incorporated Method to enhance MIPI D-PHY link rate with minimal PHY changes and no protocol changes
EP2903199B1 (en) * 2014-01-31 2019-03-06 Stichting IMEC Nederland Circuit for symbol timing synchronization
TWI516946B (en) 2014-04-10 2016-01-11 智原科技股份有限公司 Method and apparatus for performing de-skew control
US9602271B2 (en) * 2015-06-01 2017-03-21 Globalfoundries Inc. Sub-nanosecond distributed clock synchronization using alignment marker in ethernet IEEE 1588 protocol
US9496879B1 (en) * 2015-09-01 2016-11-15 Qualcomm Incorporated Multiphase clock data recovery for a 3-phase interface
US9485080B1 (en) * 2015-09-01 2016-11-01 Qualcomm Incorporated Multiphase clock data recovery circuit calibration
KR101906149B1 (en) * 2015-12-30 2018-10-10 어보브반도체 주식회사 Bluetooth signal receiving method and device using improved symbol timing offset compensation
CN108702358B (en) * 2016-02-01 2020-12-08 高通股份有限公司 Scalable efficient high-speed serialized interconnect
US9832006B1 (en) * 2016-05-24 2017-11-28 Intel Corporation Method, apparatus and system for deskewing parallel interface links
US10742390B2 (en) * 2016-07-13 2020-08-11 Novatek Microelectronics Corp. Method of improving clock recovery and related device
US10419246B2 (en) * 2016-08-31 2019-09-17 Qualcomm Incorporated C-PHY training pattern for adaptive equalization, adaptive edge tracking and delay calibration
US10581587B1 (en) * 2019-04-29 2020-03-03 Advanced Micro Devices, Inc. Deskewing method for a physical layer interface on a multi-chip module

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6288656B1 (en) * 1999-12-21 2001-09-11 Lsi Logic Corporation Receive deserializer for regenerating parallel data serially transmitted over multiple channels
JP2002300031A (en) * 2001-04-02 2002-10-11 Fujitsu Ltd Sampling circuit
KR20140074938A (en) * 2011-09-12 2014-06-18 인텔 코포레이션 Wireless network re-entry systems and processes
US20140218221A1 (en) * 2013-02-05 2014-08-07 Altera Corporation Techniques For Alignment of Parallel Signals
KR20180041257A (en) * 2013-10-30 2018-04-23 인텔 코포레이션 A method, apparatus and system for measuring latency in a physical unit of a circuit
EP3170262A1 (en) * 2014-07-18 2017-05-24 Qualcomm Incorporated Clock synchronization
KR20160098096A (en) * 2015-02-09 2016-08-18 베드락 오토메이션 플렛폼즈 인크. Input/output module with multi-channel switching capability

Also Published As

Publication number Publication date
JP2023171864A (en) 2023-12-05
EP3963846A2 (en) 2022-03-09
US11283589B2 (en) 2022-03-22
KR102578608B1 (en) 2023-09-14
CN113228554A (en) 2021-08-06
JP7359854B2 (en) 2023-10-11
KR102502615B1 (en) 2023-02-23
WO2020223159A3 (en) 2020-12-10
US10873445B2 (en) 2020-12-22
US20210111861A1 (en) 2021-04-15
US20200344039A1 (en) 2020-10-29
JP2022530591A (en) 2022-06-30
US10581587B1 (en) 2020-03-03
KR20230030028A (en) 2023-03-03
CN113228554B (en) 2024-10-01
WO2020223159A2 (en) 2020-11-05

Similar Documents

Publication Publication Date Title
US8832336B2 (en) Reducing latency in serializer-deserializer links
US7796652B2 (en) Programmable asynchronous first-in-first-out (FIFO) structure with merging capability
US10033520B2 (en) Multilane serdes clock and data skew alignment for multi-standard support
US8942333B2 (en) Apparatus and methods for clock alignment for high speed interfaces
JP2023171864A (en) Deskewing method for physical layer interface on multi-chip module
TW201104682A (en) Apparatus and method for data strobe and timing variation detection of an SDRAM interface
US20040084537A1 (en) Method and apparatus for data acquisition
US10623174B1 (en) Low latency data transfer technique for mesochronous divided clocks
US7109756B1 (en) Synchronization of programmable multiplexers and demultiplexers
EP1813039A2 (en) Method and apparatus for aligning data in a wide, high-speed, source synchronous parallel link
US7593498B2 (en) Method and apparatus for automatic rate identification and channel synchronization in a master-slave setting for high data throughput applications
KR102685395B1 (en) Semiconductor device, semiconductor system and operating method of semiconductor device
WO2011130007A1 (en) Levelization of memory interface for communicating with multiple memory devices
US8718215B2 (en) Method and apparatus for deskewing data transmissions
US9721627B2 (en) Method and apparatus for aligning signals
US20230305979A1 (en) Periodic receiver clock data recovery with dynamic data edge
US20060146967A1 (en) Keep-out asynchronous clock alignment scheme

Legal Events

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