KR102371549B1 - 송신기들을 위한 레인-레인-디-스큐 - Google Patents

송신기들을 위한 레인-레인-디-스큐 Download PDF

Info

Publication number
KR102371549B1
KR102371549B1 KR1020177010135A KR20177010135A KR102371549B1 KR 102371549 B1 KR102371549 B1 KR 102371549B1 KR 1020177010135 A KR1020177010135 A KR 1020177010135A KR 20177010135 A KR20177010135 A KR 20177010135A KR 102371549 B1 KR102371549 B1 KR 102371549B1
Authority
KR
South Korea
Prior art keywords
transmitters
data
clock signal
logic
read
Prior art date
Application number
KR1020177010135A
Other languages
English (en)
Other versions
KR20170055996A (ko
Inventor
파올로 노벨리니
지오반니 구스티
Original Assignee
자일링크스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 자일링크스 인코포레이티드 filed Critical 자일링크스 인코포레이티드
Publication of KR20170055996A publication Critical patent/KR20170055996A/ko
Application granted granted Critical
Publication of KR102371549B1 publication Critical patent/KR102371549B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/02Transmitters
    • H04B1/04Circuits
    • H04B1/0475Circuits with means for limiting noise, interference or distortion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • G06F13/423Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with synchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device
    • 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/05Electric or magnetic storage of signals before transmitting or retransmitting for changing the transmission rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Information Transfer Systems (AREA)

Abstract

복수의 송신기들(190)을 시동하는 것과 일반적으로 관련된 방법에서, 시퀀스는 대응 데이터 버퍼들(121)을 갖는 복수의 송신기들(190) 각각에 대해 개시된다. 이 시퀀스의 실행에 대한 응답으로 데이터 버퍼들(121) 각각에 대해 레이턴시가 설정된다. 시퀀스는: 판독 클록 신호(106)와 연관된 판독 어드레스(108)를 획득하는 단계(501); 기록 클록 신호(105)와 연관된 기록 어드레스(109)를 획득하는 단계(502); 판독 어드레스(108)와 기록 어드레스(109) 사이의 차이를 결정하는 단계(503); 그 차이(111)와 연관된 플래그 신호(113)를 어써팅하는 단계(504); 및 데이터 버퍼들(121) 중 하나의 데이터 버퍼(121)에 대한 레이턴시를 설정하기 위해 플래그 신호(113)에 대한 상태 위치의 변경을 로케이팅하도록 차이(111)를 변경하기 위해 판독 클록 신호(106)를 조정하는 단계(505)를 포함한다.

Description

송신기들을 위한 레인-레인-디-스큐{LANE-TO-LANE-DE-SKEW FOR TRANSMITTERS}
이하의 설명은 IC(integrated circuit) 디바이스들에 관한 것이다. 더욱 구체적으로는, 이하의 설명은 IC의 송신기들에 대한 레인-레인 디-스큐(lane-to-lane de-skew)에 관한 것이다.
일반적으로, 송신기, 이를테면, "SERDES(serializer-deserializer)”에 사용되는 송신기의 시동(startup) 또는 리셋(reset)시에, 버퍼 바이패스 모드가 사용되었다. 이러한 버퍼 바이패스 모드는, 예컨대, 송신기의 버퍼에 의해 도입되는 스큐(skew)를 회피하는데 사용되었다. 데이터가 다수의 레인들에 걸쳐 직렬화될 수 있기 때문에, 다수의 송신기들은 FIFO(first-in, first-out) 버퍼들과 같은 자신의 개별적인 버퍼들의 병렬 사용에 의해 레인-레인 스큐(lane-to-lane skew)를 도입할 수 있다. 그러나, 버퍼 바이패스 모드는 다른 제한들 중에서 중요한 회로 오버헤드를 갖는다.
게다가, H 클록 트리 또는 다른 클록 네트워크와 같은 클록 네트워크가 사용되어 다수의 송신기들에 대응하는 FIFO들에 기록 클록(write clock)을 제공할 수 있다. 클록 네트워크는 이러한 온도 변화에 따른 상당한 변동을 가질 수 있다. 이러한 변화에 대해 보상하기 위해, 지연 정렬기(delay aligner)가 사용되어 기록 클록을 이러한 클록 네트워크로 조정가능하게 구동시킬 수 있다. 지연 정렬기는 복잡한 아날로그 회로일 수 있으며, 이에 따라 지연 정렬기의 사용은 버퍼 바이패스 동작 모드의 회로 오버헤드를 추가할 수 있다. 부가적으로, 기록 클록과 판독 클록 사이의 위상 변화는 타이밍 마진으로 나뉘고(cut into), 집적 회로들이 더 조밀해지고 더 커지게 됨에 따라, 회로는 신호 전파 지연에서의 차이들에 더욱 민감할 수 있는데, 즉, 레인-레인 스큐에 더욱 민감할 수 있다.
그로 인해서, 앞서 설명된 제한들 중 하나 또는 그 초과의 것 없이 다수의 송신기들 사이에 스큐 균등화(skew equalization)를 제공하는 것이 바람직하다.
방법은 일반적으로 복수의 송신기들을 시동하는 것에 관한 것이다. 이러한 방법에서, 대응 데이터 버퍼들을 갖는 복수의 송신기들 각각에 대한 시퀀스가 개시된다. 이 시퀀스의 실행에 대한 응답으로 데이터 버퍼들 각각에 대해 레이턴시가 설정된다. 시퀀스는: 판독 클록 신호와 연관된 판독 어드레스를 획득하는 단계; 기록 클록 신호와 연관된 기록 어드레스를 획득하는 단계; 판독 어드레스와 기록 어드레스 사이의 차이를 결정하는 단계; 그 차이와 연관된 플래그 신호를 어써팅(asserting)하는 단계; 및 데이터 버퍼들 중의 데이터 버퍼에 대한 레이턴시를 설정하기 위해 플래그 신호에 대한 상태 위치의 변경을 로케이팅하여 차이를 변경하도록 판독 클록 신호를 조정하는 단계를 포함한다.
선택적으로, 복수의 송신기들의 데이터 버퍼들 각각은 적어도, 레이턴시에 대해 대략적으로 동일한 값으로 설정될 수 있다.
선택적으로, 복수의 송신기들은 복수의 레인들과 연관될 수 있고, 복수의 레인들은 직렬화를 위해 준비될 복수의 송신기들에 걸쳐 분산되는 병렬 데이터에 대한 최대 레인-레인 스큐를 가질 수 있다.
선택적으로, 데이터 버퍼들 각각은 시퀀스 이후에 중간지점에 설정될 수 있다.
선택적으로, 데이터 버퍼들은 데이터를 저장하기 위해 레지스터들을 갖는 선입-선출(first-in, first-out) 버퍼들일 수 있다.
선택적으로, 데이터 버퍼들은 데이터를 저장하기 위해 메모리 셀들을 갖는 선입-선출 버퍼들일 수 있다.
선택적으로, 복수의 송신기들은 대응하는 복수의 트랜시버들일 수 있다.
다른 방법은 일반적으로 복수의 송신기들을 시동하는 것에 관한 것이다. 이러한 방법에서, 대응 데이터 버퍼들을 갖는 복수의 송신기들 각각에 대한 시퀀스가 개시된다. 이 시퀀스의 실행에 대한 응답으로 데이터 버퍼들 각각에 대해 레이턴시가 설정된다. 시퀀스는: 판독 클록 신호와 연관된 판독 어드레스를 획득하는 단계; 기록 클록 신호와 연관된 기록 어드레스를 획득하는 단계; 판독 어드레스와 기록 어드레스 사이의 차이를 결정하는 단계; 그 차이와 연관된 플래그 신호를 어써팅하는 단계; 차이를 변경하기 위해 판독 클록 신호를 조정하는 단계; 및 플래그 신호의 상태 위치의 변경을 로케이팅하기 위해 시퀀스의 단계들을 반복하는 단계를 포함한다. 상태 위치의 변경은 판독 클록 신호의 판독 시간 도메인과 기록 클록 신호의 기록 시간 도메인 사이의 도메인 크로싱(domain crossing)을 위한 것이다. 데이터 버퍼들 중의 데이터 버퍼에 대한 레이턴시는 상태 위치의 변경으로 설정된다.
선택적으로, 데이터 버퍼들에 대응하는 플래그 신호들의 반복되는 어써션(assertion)은 플래그 신호들을 토글링하기 위한 것일 수 있다.
선택적으로, 차이가 데이터 버퍼들 중 그 하나의 데이터 버퍼의 버퍼 깊이의 부분과 동일하거나 또는 그 미만이면, 플래그 신호는 로직 0으로서 어써팅될 수 있고, 그 차이가 그 하나의 데이터 버퍼의 깊이의 부분보다 더 크면, 플래그 신호는 로직 1로서 어써팅될 수 있다.
선택적으로, 플래그 신호가 로직 1이면, 데이터 버퍼의 충진 레벨은 절반(half) 보다 클 수 있고, 플래그 신호가 로직 0이면, 데이터 버퍼의 충진 레벨은 절반과 동일하거나 또는 그 미만일 수 있다.
선택적으로, 시퀀스는 복수의 송신기들의 시동 또는 리셋시에 개시될 수 있고, 시퀀스에 대해 어써팅된 플래그 신호들은 데이터 버퍼들에 대응할 수 있으며 시퀀스의 초기 사이클에 대한 로직 0들 및 로직 1들 모두를 포함할 수 있다.
선택적으로, 판독 어드레스의 획득은, 판독 어드레스를 획득하기 위해 데이터 버퍼의 버퍼 깊이와 연관된 제수(divisor)에 의해 판독 클록 신호를 제산하는 단계를 포함할 수 있다.
선택적으로, 기록 어드레스의 획득은, 기록 어드레스를 획득하기 위해 데이터 버퍼의 버퍼 깊이와 연관된 제수에 의해 기록 클록 신호를 제산하는 단계를 포함할 수 있다.
선택적으로, 차이를 결정하는 것은, 그레이 코딩(Gray coding)을 포함할 수 있다.
선택적으로, 방법은, 제 1 플래그 신호의 상태 위치의 제 1 변경과 연관된 데이터 버퍼들의 제 1 선입, 선출 버퍼에 대한 제 1 레이턴시를 설정하는 단계, 제 2 플래그 신호의 상태 위치의 제 2 변경과 연관된 데이터 버퍼들의 제 2 선입, 선출 버퍼에 대한 제 2 레이턴시를 설정하는 단계, 데이터 버퍼들의 제 1 선입, 선출 버퍼에 의해 제 1 데이터를 수신하는 단계, 데이터 버퍼들의 제 2 선입, 선출 버퍼에 의해 제 2 데이터를 수신하는 단계를 더 포함할 수 있다. 제 1 선입, 선출 버퍼를 통과하는 제 1 데이터의 제 1 레이턴시는 허용가능한 레인-레인 스큐를 위해 제 2 선입, 선출 버퍼를 통과하는 제 2 데이터에 대한 제 2 레이턴시에 적어도 충분히 근접할 수 있다.
집적 회로 디바이스는 일반적으로 복수의 송신기들을 갖는 것에 관한 것이다. 이러한 집적 회로 디바이스에서, 복수의 송신기들 중 제 1 송신기는 제 1 데이터 버퍼 및 제 1 데이터 버퍼에 커플링된 제 1 입력/출력 제어 블록을 포함한다. 복수의 송신기들 중 제 2 송신기는 제 2 데이터 버퍼 및 제 2 데이터 버퍼에 커플링된 제 2 입력/출력 제어 블록을 포함한다. 제 1 데이터 버퍼는 제 1 지연를 갖는다. 제 2 데이터 버퍼는 제 2 지연를 갖는다. 제 1 입력/출력 제어 블록은, 기록 클록 신호 및 제 1 판독 클록 신호를 수신하도록 커플링되고, 그 각각에 대해 제 1 기록 어드레스 및 제 1 판독 어드레스를 생성하도록 구성된다. 제 1 입력/출력 제어 블록은, 제 1 기록 어드레스와 제 1 판독 어드레스 사이의 제 1 차이를 결정하고 그리고 그 제 1 차이에 연관된 제 1 플래그 신호를 어써팅하도록 구성된다. 제 1 입력/출력 제어 블록은, 제 1 데이터 버퍼 내의 제 1 포지션과 연관된 제 1 플래그 신호에 대한 상태 위치의 제 1 변경에 도달하기 위해, 제 1 차이를 조정하여 제 1 판독 클록 신호를 조정하도록 제 1 플래그 신호를 피드백하도록 커플링된다. 제 2 입력/출력 제어 블록은, 기록 클록 신호 및 제 2 판독 클록 신호를 수신하도록 커플링되고, 그 각각에 대해 제 2 기록 어드레스 및 제 2 판독 어드레스를 생성하도록 구성된다. 제 2 입력/출력 제어 블록은, 제 2 기록 어드레스와 제 2 판독 어드레스 사이의 제 2 차이를 결정하고 그리고 그 제 2 차이에 연관된 제 2 플래그 신호를 어써팅하도록 구성된다. 제 2 입력/출력 제어 블록은, 제 2 데이터 버퍼 내의 제 2 포지션과 연관된 제 2 플래그 신호에 대한 상태 위치의 제 2 변경에 도달하기 위해, 제 2 차이를 조정하여 제 2 판독 클록 신호를 조정하도록 제 2 플래그 신호를 피드백하도록 커플링된다.
선택적으로, 제 1 송신기 및 제 2 송신기 둘 다는 병렬 데이터를 수신하고 직렬 데이터로의 변환을 위해 제 1 레인 및 제 2 레인에 각각 병렬 데이터를 제공하도록 커플링된 직렬화기-비직렬화기 송신기이다.
선택적으로, 제 1 입력/출력 제어 블록 및 제 2 입력/출력 제어 블록 각각은 제 1 위상 보간기 및 제 2 위상 보간기를 포함한다. 제 1 위상 보간기는 제 1 판독 클록 신호를 조정하기 위해 피드백으로서 제 1 플래그 신호를 수신하도록 커플링될 수 있고, 제 2 위상 보간기는 제 2 판독 클록 신호를 조정하기 위해 피드백으로서 제 2 플래그 신호를 수신하도록 커플링될 수 있다.
선택적으로, 제 1 포지션 및 제 2 포지션은 제 1 위상 보간기의 유닛 인터벌에 내의 제 1 지점 및 제 2 위상 보간기의 유닛 인터벌 내의 제 2 지점에 대응한다. 제 1 지점은 제 1 지연과 연관될 수 있다. 제 2 지점은 제 2 지연과 연관될 수 있다. 제 1 위상 보간기는 제 1 판독 클록 신호의 제 1 판독 시간 도메인과 기록 클록 신호의 제 1 기록 도메인 사이에 제 1 도메인 크로싱을 로케이팅하기 위해 제 1 플래그 신호에 대한 응답으로 조정가능할 수 있다. 제 2 위상 보간기는 제 2 판독 클록 신호의 제 2 판독 시간 도메인 및 기록 클록 신호의 제 2 기록 도메인을 로케이팅하기 위해 제 2 플래그 신호에 대한 응답으로 조정가능할 수 있다. 제 1 위상 보간기 및 제 2 위상 보간기는 제 1 도메인 크로싱 및 제 2 도메인 크로싱과 각각 연관된 제 1 지연 및 제 2 지연의 균등화를 위해 조정가능할 수 있다.
후술하는 상세한 설명 및 청구범위들을 고려하여 다른 특징들이 인식될 것이다.
첨부 도면들은 예시적인 장치(들) 및/또는 방법(들)을 나타낸다. 그러나, 첨부 도면들은 청구항들의 범위를 제한하도록 취해지지 않아야만 하며, 그러나 오직 설명과 이해를 위한 것이다.
도 1은 송신기들을 갖는 예시적인 집적 회로 디바이스를 도시하는 블록도이다.
도 2 및 도 3은 도 1의 집적 회로 디바이스의 예시적인 송신기들을 도시하는 블록도들이다.
도 4는 도 1의 송신기들을 시동하기 위한 예시적인 레이턴시 조절 흐름을 도시하는 흐름도이다.
도 5는 도 4의 레이턴시 조절 흐름의 동작들을 위해 사용될 수 있는 예시적인 설정 시퀀스를 도시하는 흐름도이다.
도 6은 예시적인 원주형 FPGA(Field Programmable Gate Array) 아키텍처를 도시하는 간략화된 블록도이다.
이하의 설명에서, 본 명세서에 설명된 특정 예들의 더욱 완전한 설명을 제공하기 위해 수많은 특정 세부사항들이 설명된다. 그러나, 이러한 예들의 하나 또는 그 초과의 다른 예들 및/또는 변화들이 이하에 주어진 모든 특정 세부사항들 없이 실행될 수 있음이 명백해야 한다. 다른 예시들에서, 잘 알려진 특징들은 본원의 예들의 설명을 모호하게 하지 않기 위해 상세하게 설명되지 않았다. 예시의 용이함을 위해, 동일한 수치 라벨들이 상이한 다이어그램들에 사용되어 동일한 아이템들을 지칭할 수 있지만; 대안적인 예들에서 이 아이템들은 상이할 수 있다.
몇몇 도면들에 예시적으로 묘사된 예들을 설명하기 전에, 일반적인 소개가 더 나은 이해를 위해 제공된다.
데이터가 다수의 레인들에 걸쳐 직렬화될 수 있기 때문에, 다수의 송신기들은 FIFO(first-in, first-out) 버퍼들과 같은 자신의 개별적인 버퍼들의 병렬 사용에 의해 레인-레인 스큐(lane-to-lane skew)를 도입할 수 있다. 이하의 추가 세부사항에 설명되는 바와 같이, 각 송신기의 위상 보간기가 송신기의 FIFO의 데이터 출력을 판독하기 위해 이러한 위상 보간기로부터 제공된 판독 클록 신호(“판독 클록”)의 위상을 조정하는데 사용될 수 있다. 각 판독 클록은, 이에 따라, 전파 지연의 일부 차이들, 즉, 공통 기록 클록으로부터 소싱된 기록 클록들에 영향을 받지만, 송신기들의 각 FIFO에 제공되는 공통으로 소싱된 기록 클록 신호(“기록 클록”)에 위상 정렬될 수 있다.
통상적으로, FIFO는 데이터의 직렬화 이전에 송신기 데이터 경로에 있다. 일반적으로, FPGA 패브릭 또는 다른 회로로부터일 수 있는 데이터는 입력 또는 기록 클록 신호의 펄스 엣지 또는 엣지들에 대한 응답으로 FIFO에 입력 또는 기록된다. 이러한 데이터는, N이 1과 같거나 또는 그보다 큰 경우, N의 비트폭을 가질 수 있다. 이러한 FIFO는 메모리 및/또는 일 세트의 레지스터들일 수 있다. FIFO는 다수의 세트들의 입력들, 즉, 다수의 워드(word)들을 저장할 수 있다. 이러한 라인들을 따라, FIFO는 M개의 워드들까지 저장하기 위한, 깊이 M을 갖는 것으로서 설명될 수 있으며, 여기서 이러한 M개의 워드들 각각은 N개의 비트 폭일 수 있다. 따라서, N-비트 폭 워드들의 M개의 인스턴스들까지 한 번에 FIFO에 저장될 수 있다.
송신기 내의 FIFO는 클록 네트워크를 통해 제공된 입력 또는 기록 클록 신호의 전파 지연에 있어서의 차이들과 연관된 스큐를 흡수함으로써 데이터를 버퍼링하기 위해 적어도 부분적으로 사용될 수 있다. 입력 또는 기록 클록 신호를 다수의 송신기들에 분배하기 위한 클록 네트워크는 전파 지연들로 인해 상당한 FIFO-FIFO 스큐를 가질 수 있으며, 이 전파 지연들은 전압 및/또는 온도에 대해 민감할 수 있다. 대조적으로, 출력 또는 판독 클록 신호는 위상 보간기 또는 송신기 또는 트랜시버 내부의 다른 회로로부터 제공될 수 있고, 이에 따라 이러한 근접성으로 인해 상당한 FIFO-FIFO 스큐를 갖지 않을 수 있다. 따라서, 예컨대, FIFO의 입력측 또는 기록측을 클록킹하기 위해 클록 네트워크상으로 그리고 이러한 FIFO의 출력측 또는 판독측을 클록킹하기 위해 송신기의 위상 보간기로 판독 클록 신호를 구동하기 위한 지연 정렬기에 제공되는 동일한 기준 클록은 실질적으로 상이한 전파 지연들을 가질 수 있다. 이들 라인들을 따라, FIFO의 깊이는 통상적으로 가장 큰 전파 지연을 수용하는 것인데, 다시 말해서, FIFO들은 집적 회로 디바이스를 시동하거나 리셋할 목적으로 입력 또는 기록 클록 신호의 전파 지연에 따라 통상적으로 크기가 정해진다.
부가적으로, 송신기 FIFO는 알려지지 않은 상태로 리셋되거나 또는 시동될 수 있다. 예컨대, 송신기 FIFO 리셋은 SERDES에 대한 리셋 절차에서 마지막 동작일 수 있다. 송신기 FIFO의 리셋 이후에, 이러한 FIFO는 “대략” 절반 채워질 수 있다. 그러나, SERDES 송신기들의 다수의 FIFO들에서 송신될 데이터는 일반적으로 정렬되지 않았거나, 또는 “대략” 절반 채워진 상태에 의해 적어도 충분히 정렬되지는 않았다. 다시 말해서, 채널들은 3가지 상태, 즉, 비어있다기보다는 더 채워진 상태, 가득 채워졌다기보다는 더 비어있는 상태, 또는 그 중간에 있는 상태일 수 있으며, 채널들 간 이러한 편차는 일부 애플리케이션들에서는 충분하지 않을 수 있다.
과거에는, 판독 클록 신호들과 공통 소스 기록 클록 신호 사이의 위상 균등화는 SERDES를 형성하기 위해 FIFO들의 “바이패스”와 함께 사용되었다. “버퍼 바이패스 모드”에서, 지연 정렬기로 종종 지칭되는 복잡한 아날로그 위상 검출기 회로가 위상 정렬을 유지하기 위해 사용되었다. 각 송신기 지연 정렬기는, 각 송신기 위상 보간기로 하여금, 대응 판독 클록 신호를 공통 소스 기록 클록 신호와의 알려진 위상 관계로 유도하게 하는데 사용되었으며, 여기서 각 FIFO는 오직 하나의 워드의 깊이로 동작되었다. 그러나, 동작 동안, 공통 기록 클록 신호의 위상은 각 판독 클록 신호와 위상을 동일하게 유지하도록 조정되었는데, 이는 동작 동안의 송신기의 위상 보간기의 사용이 원치않는 지터(jitter)를 도입할 수 있기 때문이다. 동작 동안, 기록 클록 신호는 때때로 클록 트리, H-트리, 또는 다른 유형의 클록 네트워크로 지칭되는 클록 네트워크와 관련된 문제로 인해 판독 클록 신호에 대해 위상이 어긋날 수 있다. 예컨대, 클록 네트워크는 온도에 민감할 수 있으며, 이에 따라 온도 변화들은 상이한 송신기들에 제공된 공통 소스 기록 클록 신호의 전파 지연에 있어서의 차이를 야기할 수 있다. 다시, 개별적인 송신기 지연 정렬기들은, 이러한 차이들을 보상하여 공통 기록 클록 신호로부터 소싱된 대응 송신기 기록 클록 신호들을 그러한 송신기들의 대응 판독 클록 신호들과 동위상에 있도록 조정하는데 사용되었다. 따라서, 레인-레인 스큐는 한 번에 오직 하나의 벡터만을 저장하는 것으로 축소된 FIFO들을 갖는 송신기들 사이에서와 같이 위상 정렬 윈도우 내에 있을 수 있다. 그러나, 더 큰 클록 네트워크들, 더 넓은 데이터 버스들, 및/또는 더 좁은 위상 정렬 윈도우들의 경우, 복잡한 아날로그 지연 정렬기들을 사용하는데 수반되는 상당한 오버헤드와는 별도로, 버퍼 바이패스 모드의 사용은 더욱 문제가 되었다.
추가 세부사항에서 이하 설명된 바와 같이, SERDES의 모든 송신기 데이터 버퍼들은 PI 입도(granularity)에 따라, 절반 채워지고 “대략” 절반 채워지지 않도록 정확하게 설정될 수 있다. 이러한 설정은, SERDES 송신기의 모든 데이터 버퍼들 사이에서 레이턴시를 효율적으로 균등화하는데 사용될 수 있어, 레인-레인 스큐가 상당히 감소된다. 이러한 라인들을 따라, 데이터 버퍼의 상태를 나타내는 플래그 신호가 생성된다. 이 플래그 신호는 이러한 데이터 버퍼에 제공된 출력 클록 신호의 위상 조정을 위해 피드백된다. 이러한 조정은 반복적으로 증분 또는 감분되어, 이러한 플래그 신호의 상태가 로직 1에서 로직 0으로 또는 그 반대로 토글링하는 그 데이터 버퍼 내의 포지션을 찾을 수 있다. SERDES 송신기의 모든 데이터 버퍼들은 마찬가지로 이러한 위치로 설정되어 그 데이터 버퍼들에 걸친 레이턴시를 균등화할 수 있다.
위의 일반적인 이해를 염두에 두고, 복수의 송신기들을 갖는 집적 회로 디바이스에 대한 다양한 구성들이 아래에서 전반적으로 설명된다.
도 1은 복수의 송신기들(190)을 갖는 예시적인 집적 회로 디바이스(100)를 도시하는 블록도이다. 이 예에서, 오직 2개의 송신기들(190-1 및 190-2)이 예시적으로 도시되지만; 그러나, 다른 경우들에서는, 2개 초과의 송신기들이 사용될 수 있다. 게다가, 송신기들(190)은 대응 트랜시버들의 송신기들일 수 있거나 또는 별도의 송신기들일 수 있다. 송신기들(190-1 및 190-2)은 레인들(191-1 및 191-2)에 대응할 수 있다. 레인들(191-1 및 191-2)은 직렬화를 위해 준비될 송신기들(190-1 및 190-2)에 걸쳐 분산된 병렬 데이터에 대해 최대 레인-레인 스큐를 가질 수 있다.
송신기들(190)의 제 1 송신기(190-1)는 제 1 데이터 버퍼(121-1) 및 제 1 데이터 버퍼(121-1)에 커플링된 제 1 입력/출력 제어 블록(161-1)을 포함한다. 송신기들(190)의 제 2 송신기(190-2)는 제 2 데이터 버퍼(121-2) 및 제 2 데이터 버퍼(121-2)에 커플링된 제 2 입력/출력 제어 블록(161-2)을 포함한다.
제 1 데이터 버퍼(121-1)는 제 1 지연을 갖고, 제 2 데이터 버퍼(121-2)는 제 2 지연을 갖는다. 집적 회로 디바이스(100)의 시동 또는 리셋시를 포함하되 이에 제한 없이, 이러한 제 1 및 제 2 지연들은 서로 상이할 수 있다. 이러한 라인들을 따라, 입력 데이터(120-1)는 제 1 데이터 버퍼(121-1)로의 클록킹된 입력을 위해 제공될 수 있고, 입력 데이터(120-2)는 제 2 데이터 버퍼(121-2)로의 클록킹된 입력을 위해 제공될 수 있다. 출력 데이터(122-1)는 제 1 데이터 버퍼(121-1)로부터의 클록킹된 출력에 대한 응답으로 출력될 수 있고, 출력 데이터(122-2)는 제 2 데이터 버퍼(121-2)로부터의 클록킹된 출력에 대한 응답으로 출력될 수 있다.
이 예에서, 제 1 입력 데이터(120-1) 및 제 2 입력 데이터(120-2)는, 일반적으로 경계(150)로 나타낸 바와 같이, 집적 회로 프로그래머블 패브릭으로부터 직렬화기-비직렬화기(180)로 제공된다. 특히, 집적 회로 프로그래머블 패브릭은 필드 프로그래머블 게이트 어레이일 수 있다. 그러나, 제 1 입력 데이터(120-1) 및 제 2 입력 데이터(120-2)는 임의의 집적 회로 프로그래머블 패브릭 및/또는 애플리케이션 특정 리소스들로부터, 또는 심지어는 데이터를 통과하여, 집적 회로 디바이스(100)의 2개 또는 그 초과의 송신기들로 형성된 직렬화기-비직렬화기(“SERDES”)(180)로 올 수 있다.
이러한 라인들을 따라, 제 1 출력 데이터(122-1) 및 제 2 출력 데이터(122-2)는 PISO(Parallel-lnput-to-Serial-Output data converter)(192)에 입력되어 이러한 PISO로부터 출력되는 직렬 데이터(193)를 획득할 수 있다. 데이터 버퍼들(121-1 및 121-2) 각각의 제 1 지연과 제 2 지연 사이의 차이로 인해, 제 1 출력 데이터(122-1) 및 제 2 출력 데이터(122-2)에 대한 레인-레인 스큐가 존재할 수 있으며, 여기서 차이들은 아래에서 설명되는 바와 같이 다뤄질 수 있다. 다시 말해서, 제 1 송신기(190-1) 및 제 2 송신기(190-2)는 둘 다 입력 데이터(120-1 및 120-2)를 통해 N-비트 폭 워드들 또는 워드들의 일부분들로서 병렬 데이터를 수신하도록 커플링된 SERDES 송신기(180)일 수 있다. SERDES 송신기(180)는 PISO에 의한 직렬 데이터로의 변환을 위해 출력 데이터(122-1)에 대한 제 1 레인 및 출력 데이터(122-2)에 대한 제 2 레인에 각각 이러한 병렬 데이터를 제공하도록 커플링될 수 있다.
도 2는 집적 회로 디바이스(100)의 예시적인 송신기(190-1)를 도시하는 블록도이고, 도 3은 집적 회로 디바이스(100)의 예시적인 송신기(190-2)를 도시하는 블록도이다. 도 1-3을 동시에 참조하여, 집적 회로 디바이스(100)가 추가로 설명된다.
송신기들(190)의 기록 클록 신호들(105)은 공통으로 기준 클록 신호(101)로부터 소싱될 수 있다. 기준 클록 신호(101)는 집적 회로 디바이스(100)의 클록 네트워크뿐만 아니라 송신기들(190) 각각의 위상 보간기들(102)에 제공될 수 있다. 제한하지 않고 명료함을 목적으로, 클록 네트워크는 일반적으로 버퍼들(103)로서 도시된다. 따라서, 기준 클록 신호(101)는 로컬 기록 클록 신호들(105)을 송신기들(190)에 각각 분배하기 위해 버퍼들(103)에 입력될 수 있다. 이에 따라, 로컬 기록 클록 신호들(105)은 상이한 전파 지연들을 가질 수 있고, 이에 따라 모두 동시에 그들 각각의 송신기 목적지들에 전혀 도달하지 않을 수도 있는데, 즉, 이러한 로컬 기록 클록 신호들(105)은 서로에 대해 위상이 어긋날 뿐만 아니라 이러한 송신기들(190)의 대응 로컬 판독 클록 신호들(106)에 대해서도 위상이 어긋날 수 있다. 추가로, 상이한 SERDES에서 밸런스가 맞지 않는(unbalancing) 클록 트리는, 예컨대, 제산기(107)로부터 출력된 기록 어드레스(109)로부터 감산하고 기록 어드레스(109)에 가산하기 위한 오프셋 어드레스와 같은 밸런스가 맞지 않는 숫자들을 입력/출력 제어 블록(161)의 레지스터들에 임베딩함으로써 명시적으로 보상될 수 있다. 마지막으로, 판독 클록 신호들(106)은 대응 송신기들(190)과 연관된 것으로서 국부적으로 생성되며, 이에 따라 송신기들(190) 사이에서 판독 클록 신호들(106)은 일반적으로 서로에 대해 위상이 어긋난다.
제 1 입력/출력 제어 블록(161-1)은, 입력 데이터(120-1)를 제 1 데이터 버퍼(121-1)에 입력하는 것, 이를테면, 기록 또는 로딩하는 것을 제어하고, 그리고 제 1 데이터 버퍼(121-1)로부터 출력 데이터(122-1)를 출력하는 것, 이를테면, 판독 또는 언로딩하는 것을 제어하기 위한 것일 수 있다. 마찬가지로, 제 2 입력/출력 제어 블록(161-2)은, 입력 데이터(120-2)를 제 2 데이터 버퍼(121-2)에 입력하는 것, 이를테면, 기록 또는 로딩하는 것을 제어하고, 그리고 제 2 데이터 버퍼(121-2)로부터 출력 데이터(122-2)를 출력하는 것, 이를테면, 판독 또는 언로딩하는 것을 제어하기 위한 것일 수 있다.
제 1 및 제 2 송신기들(190)은 동일한 구성을 갖고, 일반적으로 송신기들(190) 중 오직 하나가 명료함을 위해 추가적으로 상세하게 이하에 설명된다. 추가적으로, 제한이 아닌 명료함을 목적으로, 데이터 버퍼들(121)은 FIFO(first-in-first-out) 데이터 버퍼들이라는 점이 가정될 수 있다. 이러한 FIFO들(121)은 메모리 셀들 및/또는 레지스터들의 세트들로 형성될 수 있다. 제한이 아닌 명료함을 목적으로, 기록 클록킹 및 판독 클록킹은 벡터들의 세트들을 생성하는데 사용될 수 있음이 가정될 수 있는데, 즉, FIFO들(121)이 명료함을 목적으로 순차적으로 액세스되는 메모리로 형성될 수 있음이 가정될 수 있다.
제 1 입력/출력 제어 블록(161-1)은, 분배기(107 및 104)에 기록 클록 신호(105) 및 제 1 판독 클록 신호(106)를 각각 수신하도록 커플링되어, 그 각각에 대해 제 1 기록 어드레스(109) 및 제 1 판독 어드레스(108)를 생성한다. 제 1 입력/출력 제어 블록(161-1)은 각각의 제 1 기록 어드레스(109)와 각각의 제 1 판독 어드레스(108) 사이의 제 1 차이(111)를 결정하도록 구성될 수 있다. 제 1 입력/출력 제어 블록(161-1)은 각각의 이러한 제 1 차이(111)와 연관된 제 1 플래그 신호(113)를 어써팅하도록 구성될 수 있다. 제 1 입력/출력 제어 블록(161-1)은 제 1 데이터 버퍼(121-1) 내의 포지션과 연관된 제 1 플래그 신호(113)에 대한 상태 위치의 제 1 변경에 도달하기 위해 제 1 판독 클록 신호(106)를 조정하여 제 1 차이(111)를 조정하기 위해 각각의 이러한 제 1 플래그 신호(113)를 피드백하도록 커플링될 수 있다.
제 2 입력/출력 제어 블록(161-2)은, 기록 클록 신호(105) 및 제 2 판독 클록 신호(106)를 수신할 수 있고, 그 각각에 대해 제 2 기록 어드레스(109) 및 제 2 판독 어드레스(108)를 생성하도록 구성될 수 있다. 제 2 입력/출력 제어 블록(161-2)은 각각의 제 2 기록 어드레스(109)와 각각의 제 2 판독 어드레스(108) 사이의 제 2 차이(111)를 결정하도록 구성될 수 있다. 제 2 입력/출력 제어 블록(161-2)은 각각의 이러한 제 2 차이(111)와 연관된 제 2 플래그 신호(113)를 어써팅하도록 구성될 수 있다. 제 2 입력/출력 제어 블록(161-2)은 제 2 데이터 버퍼(121-2) 내의 포지션과 연관된 이러한 제 2 플래그 신호(113)에 대한 상태 위치의 제 2 변경에 도달하기 위해 이러한 제 2 판독 클록 신호(106)를 조정하여 이러한 제 2 차이(111)를 조정하기 위해 각각의 이러한 제 2 플래그 신호(113)를 피드백하도록 커플링될 수 있다.
제 1 입력/출력 제어 블록(161-1)은 제 1 위상 보간기(PI; phase interpolator)(102)를 포함할 수 있다. 마찬가지로, 제 2 입력/출력 제어 블록(161-2)은 제 2 위상 보간기)(102)를 포함할 수 있다.
제 1 위상 보간기(102)는 제 1 판독 클록 신호(106)를 조정하기 위해 피드백으로서 제 1 플래그 신호(113)를 수신하도록 커플링될 수 있다. 더욱 구체적으로, 위상 보간기(102) 내에 통상적으로 포함되지만 명료함을 목적으로 본원에서는 별도로 예시적으로 도시된 제 1 증분/감분 제어 블록(114)은, 조정 신호(115)에 의해 선택되는 제 1 포지션을 증분할지, 감분할지, 또는 유지시킬지 여부를 결정하기 위해 제 1 플래그 신호(113)를 수신할 수 있으며, 여기서 이러한 제 1 포지션은 이러한 제 1 위상 보간기(102)로부터 출력된 이러한 제 1 판독 클록 신호(106)의 지연과 연관된다.
마찬가지로, 제 2 입력/출력 제어 블록(161-2)의 제 2 위상 보간기(102)는 제 2 판독 클록 신호(106)를 조정하기 위해 피드백으로서 제 2 플래그 신호(113)를 수신하도록 커플링될 수 있다. 이러한 제 2 위상 보간기(102)의 제 2 증분/감분 제어 블록(114)은 조정 신호(115)에 의해 선택되는 제 2 포지션을 증분할지, 감분할지, 또는 유지시킬지 여부를 결정하기 위해 이러한 제 2 플래그 신호(113)를 수신할 수 있고, 여기서 이러한 제 2 포지션은 이러한 제 2 위상 보간기(102)로부터 출력된 이러한 제 2 판독 클록 신호(106)의 지연과 연관된다.
이러한 제 1 포지션 및 제 2 포지션은 이러한 제 1 위상 보간기(102)의 “UI(unit interval)” 내의 제 1 위치 또는 지점 및 이러한 제 2 위상 보간기(102)의 유닛 인터벌 내의 제 2 위치 또는 지점에 대응한다. 예컨대, 시동시에, 이러한 제 1 지점은 FIFO(121-1)의 제 1 지연과 초기에 연관될 수 있고(여기서, 이러한 제 1 지연은 조정가능함), 이러한 제 2 지점은 FIFO(121-2)의 제 2 지연과 초기에 연관될 수 있다(여기서, 제 2 지연은 조정가능함).
제 1 위상 보간기(102)는 제 1 판독 클록 신호(106)의 제 1 판독 시간 도메인과 기록 클록 신호(105)의 제 1 기록 도메인 사이에 제 1 도메인 크로싱을 로케이팅하기 위해 제 1 플래그 신호(113)에 대한 응답으로 조정가능할 수 있다.
마찬가지로, 제 2 위상 보간기(102)는 제 2 판독 클록 신호(106)의 제 2 판독 시간 도메인 및 이러한 기록 클록 신호(105)의 제 2 기록 도메인을 로케이팅하기 위해 제 2 플래그 신호(113)에 대한 응답으로 조정가능할 수 있다.
오직 FIFO들(121)만이 데이터 흐름의 데이터 경로 내에 바로 있기 때문에, FIFO들(121) 각각의 깊이 M(123)은, 송신기들(190)의 시동 또는 리셋시를 포함하되 이에 제한 없이, 이러한 FIFO들 사이에서의 상이한 지연들을 초래할 수 있으며, 이는 2개 또는 그 초과의 FIFO들(121) 사이에서의 상이한 레이턴시들을 초래한다. 이 예에서, FIFO들(121) 각각은 N-비트들 각각의 M개의 워드들을 홀딩할 수 있으며, M은 1보다 큰 정수이다.
제 1 위상 보간기(102) 및 제 2 위상 보간기(102)는, 이러한 제 1 도메인 크로싱 및 이러한 제 2 도메인 크로싱과 각각 연관되는 FIFO(121-1)와 연관된 제 1 지연 및 FIFO(121-2)와 연관된 제 2 지연의 균등화를 위해 조정될 수 있다. 따라서, FIFO들(121-1 및 121-2)로부터의 각각의 출력 데이터(122-1 및 122-2)는 효율적으로 데이터 위상 정렬될 수 있다. 간략하게, FIFO들(121)은, 각각의 판독 클록 신호가 공통으로 소싱된 기록 클록 신호와 위상 정렬되지 않고도, 서로에 대해 데이터 위상 정렬될 수 있다. 따라서, 로컬 기록 클록 신호에 대한 로컬 판독 클록 신호의 위상 정렬을 유지하기 위해 송신기의 복잡한 아날로그 지연 정렬기 회로의 사용이 회피될 수 있다. 추가적으로, 입력/출력 제어 블록들(161)의 컴포넌트들은 디지털 회로들일 수 있고, 그리고 일부 송신기들에서의 이러한 디지털 회로들 중 일부는 일반적으로 대응하는 FIFO의 언더플로우(underflow) 및/또는 오버플로우(overflow)의 표시들을 제공하기 위해 이용가능할 수 있다. 따라서, 위에 설명된 바와 같이, 이러한 컴포넌트들에게 피드백 플래그 신호(113)를 제공하도록 임무를 줌으로써, SERDES의 각각의 송신기는 독립적으로 조정될 수 있고, 이러한 각각의 독립적인 조정 이후에, 이러한 SERDES의 이러한 송신기들 모두는 동일한 데이터 레이턴시를 적어도 실질적으로 가질 수 있는데, 즉, 레인-레인 스큐가 실질적으로 감소된다.
전술한 설명을 염두에 두고, 도 4는 복수의 송신기들(190)을 시동하기 위한 예시적인 레이턴시 조정 플로우(400)를 도시하는 흐름도이다. 도 4는 도 1-4를 동시에 참조하여 추가로 설명된다.
401에서, 집적 회로 디바이스(100)의 송신기들(190)은 시동 또는 리셋 시퀀스의 일부로서 시작된다. 402에서, 송신기(190-1)는 FIFO들(121)의 FIFO(121-1)에 대한 레이턴시를 갖도록 설정 또는 조정된다. 이 레이턴시는 송신기(190-1)의 플래그 신호(113)의 상태 위치의 변경과 연관될 수 있는데, 여기서 이러한 조정은 송신기(190-1)의 PI(102)의 증분 또는 감분을 위해 이러한 플래그 신호(113)의 피드백에 대해 응답하는 반복적인 조정일 수 있다.
402에서의 동작과 동시에, 403에서, 송신기(190-2)는 FIFO들(121)의 FIFO(121-2)에 대한 레이턴시를 갖도록 설정 또는 조정된다. 이 레이턴시는 송신기(190-2)의 플래그 신호(113)의 상태 위치의 변경과 연관될 수 있는데, 여기서 이러한 조정은 송신기(190-2)의 PI(102)의 증분 또는 감분을 위해 이러한 플래그 신호(113)의 피드백에 대해 응답하는 반복적인 조정일 수 있다.
404에서, 입력 데이터(120-1)는 FIFO(121-1)에 의해 수신될 수 있고, 이러한 입력 데이터(120-1)는 출력 데이터(122-1)로서 FIFO(121-1)로부터 출력될 수 있다. 404에서의 동작과 동시에, 405에서, 입력 데이터(120-2)는 FIFO(121-2)에 의해 수신될 수 있고, 이러한 입력 데이터(120-2)는 출력 데이터(122-2)로서 FIFO(121-2)로부터 출력될 수 있다. FIFO들(121-1 및 121-2)이 적어도 대략적으로 동일한 레이턴시를 갖도록 조정될 수 있기 때문에, 출력 데이터(122-1 및 122-2)에 대한 레인-레인 스큐는 이러한 병렬 출력 데이터(122-1 및 122-2)의 406에서의 직렬화를 위해, 만약 있다면, 충분히 작을 수 있다. 다시 말해서, FIFO(121-1)를 통과하는 입력 데이터(120-1)의 레이턴시는 직렬화를 위해 허용가능한 레인-레인 스큐를 위해 FIFO(121-2)를 통과하는 입력 데이터(120-2)의 레이턴시에 적어도 충분히 근접한다.
반복적으로 설명하면, 송신기들(190)을 시동하거나 또는 리셋하기 위해, 401에서, 시퀀스는 FIFO들(121)과 같은 대응 데이터 버퍼들을 갖는 이러한 송신기들(190) 각각에 대해 개시될 수 있다. 이러한 시퀀스는, 개시된 이러한 시퀀스의 실행에 대한 응답으로, 동작들(402 및 403)에서와 같이 동시에 이러한 데이터 버퍼들 각각에 대한 레이턴시를 설정하는데 사용될 수 있다. 그 이후에, 병렬 데이터는 후속 직렬화를 위해 이러한 데이터 버퍼들로부터 입력 및 출력될 수 있다.
도 5는 도 4의 402 및 403에서의 동작들에 대해 사용될 수 있는 예시적인 설정 시퀀스(500)를 도시하는 흐름도이다. 도 5는 도 2-5를 동시에 참조하여 추가로 설명된다.
501에서, 판독 클록 신호(106)와 연관된 판독 어드레스(108)가 획득될 수 있다. 각각의 판독 어드레스(108)는, 예컨대, 입력/출력 제어 블록(161-1)과 같은 입력/출력 제어 블록의 제산기(104)로의 판독 클록 신호(106)의 입력에 의해 획득될 수 있다. 제한이 아닌 예시에 의한 명료함을 위해, 오직 송신기(190-1)의 동작만이 설정 시퀀스(500)를 참조하여 추가로 설명되지만; 그러나, 예컨대, SERDES의 각각의 송신기(190)가 유사하게 설정될 수 있음이 이해되어야 한다. 일반적으로, 동시에 판독 클록 신호(106)가 제산기(104)에 제공되고, 이러한 판독 클록 신호(106)는 FIFO(121-1)와 같은 FIFO에 제공될 수 있어서, 예컨대, 이러한 FIFO로부터 출력 데이터(122-1)를 판독할 수 있다.
501에서 판독 어드레스를 획득하는 것과 동시에, 기록 클록 신호(105)와 연관된 기록 어드레스(109)가 502에서 획득될 수 있다.
501 및 502에서의 동작들은 동시에 수행될 수 있다. 각각의 기록 어드레스(109)는, 입력/출력 제어 블록(161-1)의 제산기(107)로의 기록 클록 신호(105)의 입력에 의해 획득될 수 있다. 일반적으로, 동시에 기록 클록 신호(105)가 제산기(107)에 제공되고, 이러한 기록 클록 신호(105)가 FIFO(121-1)에 제공되어 입력 데이터(120-1)를 이러한 FIFO에 기록할 수 있다.
판독 어드레스(108)를 획득하는 것은, 이러한 판독 어드레스(108)를 획득하기 위해 버퍼 깊이와 연관된 제수(divisor)에 의해 판독 클록 신호(106)를 제산하는 것을 포함할 수 있다. 마찬가지로, 기록 어드레스(109)를 획득하는 것은, 판독 어드레스를 획득하기 위해 사용되는 동일한 제수, 즉, 이러한 기록 어드레스(109)를 획득하기 위해, 그 버퍼 깊이와 연관된 제수에 의해 기록 클록 신호(105)를 제산하는 것을 포함할 수 있다.
이전에 설명된 바와 같이, 제산기들(104 및 107) 각각은 M 제산기들에 의해 제산되도록 구성될 수 있고, 여기서 M은 전술한 바와 같이 FIFO(121-1)의 깊이이다. 제산기들(104 및 107)은 프로그래밍가능할 수 있고, 제산기들(104 및 107) 각각은 리셋의 일부로서 M으로 제산하도록 사전설정될 수 있다. 그러나, 더욱 일반적으로, 리셋의 경우, 기록 어드레스(109)와 판독 어드레스(108) 사이에서와 같은 최대 위상차는 일반적으로 판독 또는 기록 클록 신호의 클록 기간의 적어도 1/2로서 제산기들(107 및 104) 사이의 차이로 사전설정되는데, 이는 판독 및 기록 클록들이 일반적으로 동일한 주파수를 갖기 때문이다. 이 차이는, 클록 신호(105)의 전파 지연으로 인해 FIFO(121-1)로의 대응 기록 이전에 FIFO(121-1)로부터의 판독이 발생하지 않음을 보장하는데 사용될 수 있다. 이 경우의 클록 기간은 PI(102)의 UI의 많은 배수들일 수 있고, 이러한 PI는 UI의 1/16, 1/32, 1/64 등의 분해능을 가질 수 있다. 이에 따라, 기록 및 판독 클록 신호들의 위상들의 정밀한 정렬이 획득될 수 있다.
제산기들(104 및 107)로부터 각각 출력되는 각각의 판독 어드레스(108) 및 각각의 기록 어드레스(109)는 차이(111)를 결정하기 위해 감산기(110)에 입력될 수 있다. 이러한 라인들을 따라, 503에서, 서로 연관될 수 있는 판독 어드레스(108)와 기록 어드레스(109) 사이의 차이(111)가 결정될 수 있다. 감산기(110)로부터 출력된 각각의 이러한 차이(111)는 비교기(112)에 제공될 수 있다. 각각의 이러한 차이(111)는 판독 클록 신호(106)와 대응 기록 클록 신호(105) 사이의 위상에 있어서의 차이를 나타낼 수 있다. 차이(111)는 도메인 크로싱을 결정하는데 사용될 수 있다. 이러한 도메인 크로싱은 그레이 코딩을 사용하여 식별될 수 있다. 이에 따라, 감산기(110)는 2개의 어드레스들 사이의 차이를 단순히 결정하는 것 보다 더 복잡한데, 이는 이러한 기록 어드레스(109) 및 판독 어드레스(108)가 서로 위상이 다를 수 있는 2개의 별도의 클록 신호들로부터 생성되기 때문이다. 다시 말해서, 레이턴시 측정들은, 판독 및 기록 어드레스들이 라인 레이트(line rate)보다 그 주파수가 훨씬 낮은 클록들에서 진화할 수 있으므로, 정밀하지 않을 수 있다(coarse). 판독 및 기록 어드레스들이 알려지지 않은 상대 위상 관계를 갖는 클록들에서 진화할 수 있기 때문에, 어드레스 값들에 대한 그레이 코딩을 사용하여 공통의 클록을 참조하여 판독 및 기록 어드레스들 둘 다를 이동시킴으로써 차이(111)가 획득될 수 있다. 따라서, 차이는 특정 방향으로 도메인을 크로싱하는 것과 연관될 수 있으며, 그래서 그레이 코딩은 그레이 코딩을 사용하도록 커플링된 감산기(110)에 카운터들(예컨대, 판독 어드레스 카운터 및 기록 어드레스 카운터(도시되지 않음))을 가짐으로써 이러한 차이를 생성하는 일 예이다. 그러나, 다른 타입들의 코딩이 사용될 수 있다.
비교기(112)는 차이(111)를 검사하여, 이러한 차이가 송신기(190-1)의 대응 FIFO(121-1)와 같은 송신기 데이터 버퍼들의 데이터 버퍼의 깊이의 일부와 동일하거나 또는 그보다 작은지를 결정한다. 이 예에서, 플래그 신호(113)는, 차이가 FIFO(121-1)의 깊이의 이러한 일부와 동일하거나 또는 그보다 작다면 로직 0으로 어써팅된다. 그러나, 이러한 차이(111)가 FIFO(121-1)의 깊이의 이러한 부분보다 더 크면, 플래그 신호(113)는 로직 1로 어써팅된다. 이 부분은 언더플로우 상태, 오버플로우 상태, 하프-풀 상태, 또는 FIFO의 몇몇 다른 충진 레벨일 수 있다.
이 예에서, 비교기(112)는 코딩된 것으로서 나타낸 각각의 차이(111)를 검사하여, 이러한 차이가 M/2, 즉, FIFO(121-1)의 깊이의 절반과 동일하거나 또는 그보다 작은지를 결정한다. 비교기(112)는 프로그래밍가능할 수 있고 M/2와 비교하여 사전설정될 수 있다. 다시 말해서, 비교기(112)는, 차이(111)가 FIFO(121-1)의 중간점에 있는지 또는 그 미만에 있는지를 결정하기 위해 사용될 수 있다. 504에서, 비교기(112)는 각각의 이러한 차이(111)와 연관된 플래그 신호(113), 즉, 차이(111)가 FIFO(121-1)의 중간점에 있는지 또는 그 미만에 있는지 여부를 어써팅할 수 있다. 이 예에서, 플래그 신호(113)가 로직 1이면, FIFO(121-1)의 충진 레벨은 1/2보다 더 크고; 이러한 플래그 신호가 로직 0이면, FIFO(121-1)의 충진 레벨은 1/2과 동일하거나 또는 그 미만이다.
다시 말해서, 각각의 연관 레인으로부터/각각의 연관 레인에 송신될 일부 병렬 데이터의 위상은, PI(102)를 사용함으로써 시간상 전방으로 시프트되어 PI(102)에서 지점 또는 탭까지 FIFO(121-1)가 점차적으로 더 텅 비도록 유도하고(여기서, 플래그 신호(113)는 모든 이러한 채널들에 대해 로직 0에서 로직 1로 천이함), 각각의 연관 레인으로부터/각각의 연관 레인에 송신될 이러한 병렬 데이터의 다른 위상은 PI(102)를 사용함으로써 시간상 후방으로 시프트되어 PI(102)에서 지점 또는 탭까지 FIFO(121-1)가 점차적으로 더 채워지게 되도록 유도한다(여기서, 플래그 신호(113)는 모든 이러한 채널들에 대해 로직 1에서 로직 0으로 천이한다). 이러한 천이 위치들 모두가 사용될 수 있지만; 그러나 이러한 모든 채널들 사이의 레이턴시들의 보다 더 큰 균등화를 위해, 로직 0 천이 위치 또는 로직 1 천이 위치가 설정될 수 있다. 다시 말해서, 플래그 신호(113)는 레이턴시들의 균등화 이후에 모든 채널들에 대한 로직 1 또는 로직 0일 수 있다. FIFO들(121)의 임의의 잔여 레인-레인 스큐는 PI(102) 분해능, 예컨대, 일부 PI들의 UI의 1/64로 제한될 수 있다.
이 예에서, 예컨대, 송신기들(190)의 각각의 데이터 버퍼, 이를테면, FIFO들(121)은 시동 또는 리셋 시퀀스 이후에 중간지점에 설정되도록 조정될 수 있다. 그러나, 중간지점 설정 이외의 데이터 버퍼들 내의 다른 설정 위치들이 사용될 수 있다. 게다가, 데이터 버퍼들은 서로에 대해 상이한 위치들로 설정될 수 있다. 요약하면, 이러한 설정들은 레인-레인 스큐를 최소화하거나 또는 그렇지 않으면 감소시키기 위해 애플리케이션 및/또는 집적 회로 디바이스에 맞춰질 수 있다(tailored).
505에서, 플래그 신호(113)는 증분/감분 제어 블록(114)에 제공되어 조정 신호(115)를 제공할 수 있다. 조정 신호(115)는, 데이터 버퍼들 중의 데이터 버퍼, 이를테면, 대응 송신기들(190)의 FIFO들(121) 중 FIFO(121-1)에 대한 레이턴시를 설정하기 위해, 플래그 신호(113)에 대한 상태 위치의 변경을 로케이팅하도록 차이(111)를 변경하도록 판독 클록 신호(106)를 조정하기 위해 PI(102)에 제공될 수 있다. 동작들(501 내지 505)은 플래그 신호(113)의 상태 위치의 변경을 로케이팅하기 위해, 커넥터(506)에 의해 나타낸 바와 같이, 반복될 수 있다.
PI(102)가 507에서 결정된 것처럼 일반적으로 나타낸 것으로서 상태 위치의 변경을 나타내는 조정 신호(115)를 수신하면, 상태 위치의 이러한 변경은, 판독 클록 신호(106)의 판독 시간 도메인 및 이러한 판독 클록 신호(106)에 대응하는 기록 클록 신호(105)의 기록 시간 도메인 사이의 도메인 크로싱을 위한 것일 수 있다. PI(102)는, FIFO(121-1)에 대한 레이턴시가 상태 위치의 이러한 변경으로 효율적으로 설정되기 때문에, 이러한 전류 조정 신호(115)를 무시할 수 있다. 따라서, PI(102)는 508에서 설정 시퀀스(500)를 효과적으로 종료할 수 있다. 상태 위치의 변경이 아직 발견되지 않았다면, PI(102)는 커넥터(510)에 의해 일반적으로 나타낸 바와 같이 설정 시퀀스(500)를 계속할 수 있다. 일반적으로, SERDES 송신기들(190)의 데이터 버퍼들이 동일한 레이턴시, 이를테면, FIFO들(121) 각각의 중간지점으로 모두 설정되면, 이러한 레이턴시 조정들은 송신기들(190)의 시동 시퀀스 또는 리셋 이후에 재조정되어야 할 필요가 없을 수도 있다. 다시 말해서, 송신기 SERDES의 다수의 채널들에서 레이턴시를 균일하게 하기 위해, 전압 및/또는 온도 변화들에 대해 일정한 레이턴시를 부과하는 회로를 갖는 것보다는 본원에 설명된 바와 같이 조정되는 FIFO들의 레이턴시들은 전압 및/또는 온도로 간단하게 변하여, 서로 적어도 충분히 동일하게 유지된다. 다시 말해서, 동작 동안, 온도 및/또는 공급 전압 변화로 인해, FIFO 레이턴시들은 심지어 크게 변경될 수 있지만, 모든 이러한 FIFO 레이턴시는 일반적으로 서로 동일하게 유지된다.
각각의 송신기(190)에서, PI(102)는, 플래그 신호(113)가 507에서 결정된 바와 같은 상태, 로직 1에서 로직 0으로 또는 로직 0에서 로직 1로 스위칭하자마자 중단된다.
로직 상태에서의 이러한 천이는 오직 대응 PI들(102)의 분해능에 의해서만 제한될 수 있는 매우 높은 정밀도로 모든 송신기들(190)에 대한 레이턴시를 균등화하는데 사용될 수 있는 조정 단계의 종료를 마킹한다. 따라서, 설정 시퀀스(500)의 완료된 실행 이후에, PI(102)가 연속적으로 구동하는 것을 회피하기 위해 이러한 시퀀스는 종료될 수 있다. 연속적으로 구동하는 PI를 갖는 것은, 이러한 연속적으로 구동하는 PI에 의해 도입되는 지터로 인해 출력 품질을 저하시킬 것이다.
대응 송신기들(190)의 데이터 버퍼들(121)의 각각의 데이터 버퍼는 적어도 대략적으로 동일한 레이턴시 값으로 설정될 수 있다. 더욱 구체적으로, 대응 송신기들(190)의 데이터 버퍼들(121)의 각각의 데이터 버퍼는 PI(102)의 입도에 따라 동일한 레이턴시 값을 갖도록 설정될 수 있다.
송신기들(190)의 대응 FIFO들(121)의 플래그 신호들(113)의 반복되는 어써션은 이러한 플래그 신호들의 토글링을 효과적으로 야기할 수 있다. 따라서, PI(102)는 연관 플래그 신호(113)가 토글링되도록, 즉, 천이 위치의 “엣지 상에 있도록” 제어될 수 있다. 이들 라인들을 따라, 데이터 버퍼들에 대응하는 시퀀스들에 대해 어써팅된 플래그 신호들(113)은 시동 또는 리셋시에 이러한 시퀀스들의 초기 사이클 동안 로직들 0들 및 로직들 1들 둘 다 포함할 수 있다. 이는, 2개 또는 그 초과의 동일한 송신기들이 상이한 충진 레벨들에 있기 때문에, 이들이 상이한 레이턴시들을 통해 리셋을 빠져나올 수 있음을 의미한다. 송신기들에서, 이는, 외부 FIFO 리셋 신호와 내부 판독 클록 신호들(106) 사이의 알려지지 않은 위상 관계에 의해 야기될 수 있다. FIFO들(121)이 N개의 비트 폭이면, 다수의 송신기들(190)은 레인-레인 스큐의 최대 N개의 비트들을 나타낼 수 있다. N이 16과 동일하거나 16 정도이면, 기존의 SERDES는 N보다 더 큰 병렬 입력 비트 폭을 갖게 될 것이다. 그러나, XAUI, PCI Express 및 SFI-5와 같은 프로토콜들은 16보다 훨신 적은 레인-레인 스큐 사양을 갖는다. 이러한 프로토콜들은 최소 레인-레인 스큐를 갖는 것을 수반할 수 있는 반면, 모든 레인들에 대해 동일해야만 할 수 있는 레이턴시는 동작 동안 변경될 수 있다.
전술한 바와 같이, 지연 정렬기를 사용하지 않고 데이터 트랜스퍼 동작들 동안 PI를 오프(off)상태로 유지시키면서 레인-레인 디-스큐가 제공될 수 있다.
게다가, 입력/출력 제어 블록은 전술한 바와 같이 플래그 신호(113)를 피드백하는 것과는 별도의 디지털 회로이며, 이러한 회로는 기존의 송신기들에 존재할 수 있다.
PI(102)는, 각 SERDES 송신기 상에서 독립적으로 송신될 데이터의 위상의 시프팅을 허용한다. 선택적으로, 고속 송신 제산기에서의 비트 스킵이 사용될 수 있지만; 그러나 PI(102)가 사용되어 잔여 레인-레인 스큐를 감소시키는데 있어 더 높은 정밀도를 획득하는데 사용될 수 있다. 그러나, 실제 어떠한 레이턴시 측정도 취해질 필요가 없는데, 더 정확히 말하면 특정 FIFO 충진 레벨로 트리거된 플래그가 사용될 수 있다. 이러한 플래그 생성은 레이턴시를 측정하는데 사용되었던 것 보다 훨씬 더 간단한 회로이다. 더욱이, 플래그 생성은 위상에 있어서의 차이들과 관련하여 높은 분해능으로 수행될 수 있다. 용어 “플래그”가 사용되었지만; 그러나, 오버플로우/언더플로우 레벨 신호가 이러한 플래그 신호를 위해 사용될 수 있다.
전술한-설명은 송신기 SERDES의 동작을 위한 것이었다. 그러나, 전술한 설명은 기준 모드에서 로킹되고 동일한 신호에 의해 구동될 때 수신기들에 사용될 수 있다. 이러한 라인들을 따라, 수신기들은 인입 데이터(incoming data)의 인터리빙된 수신기 오버샘플링을 제공하기 위해 균등화된 레인-레인 송신기 스큐를 갖는 직렬 루프백의 송신기들을 이러한 수신기들에 공급함으로써 기준 모드에 로킹될 때 균등화될 수 있다.
본원에서 설명된 하나 또는 그 초과의 예들이 FPGA에서 구현될 수 있기 때문에, 이러한 IC의 상세화된 설명이 제공된다. 그러나, 다른 타입들의 IC들이 본원에 설명된 기술로부터 이득을 얻을 수 있음을 이해해야 한다.
PLD(programmable logic device)들은 특정 로직 함수들을 수행하도록 프로그래밍될 수 있는 잘-알려진 타입의 집적 회로이다. 한 가지 타입의 PLD, FPGA(field programmable gate array)는 통상적으로 프로그래머블 타일들의 어레이를 포함한다. 이러한 프로그래머블 타일들은, 예컨대, "lOB(input/output block)들", "CLB(configurable logic block)들", "BRAM(dedicated random access memory block)들", "DSP(multipliers, digital signal processing block)들", 프로세서들, 클록 관리자(clock manager)들, "DLL(delay lock loop)들” 등을 포함할 수 있다. 본원에 사용되는 바와 같이, “포함하다(include)” 및 “포함하는(including)”은 제한하지 않고 포함하는 것을 의미한다.
각각의 프로그래머블 타일은 통상적으로 프로그래머블 인터커넥트 및 프로그래머블 로직 둘 다를 포함한다. 프로그래머블 인터커넥트는 통상적으로 “PIP(programmable interconnect point)들”에 의해 인터커넥팅된 다양한 길이들의 다수의 인터커넥트 라인들을 포함한다. 프로그래머블 로직은, 예컨대, 함수 발생기들, 레지스터들, 산술 로직 등을 포함할 수 있는 프로그래머블 엘리먼트들을 사용하여 사용자 디자인의 로직을 구현한다.
프로그래머블 인터커넥트 및 프로그래머블 로직은 통상적으로 프로그래머블 엘리먼트들이 구성되는 방법을 정의하는 내부 구성 메모리 셀들에 구성 데이터의 스트림을 로딩함으로써 프로그래밍된다. 구성 데이터는 메모리로부터(예컨대, 외부 PROM으로부터) 판독되거나 또는 외부 디바이스에 의해 FPGA에 기록될 수 있다. 그후, 개별적인 메모리 셀들의 집합적 상태들은 FPGA의 기능을 결정한다.
다른 타입의 PLD는 복잡한 프로그래머블 로직 디바이스, 또는 CPLD이다. CPLD는, 인터커넥트 스위치 매트릭스에 의해 입력/출력("I/O")에 함께 리소스들에 커넥팅된 2개 또는 그 초과의 “기능 블록들”을 포함한다. CPLD의 각각의 기능 블록은 "PLA(Programmable Logic Array)들” 및 "PAL(Programmable Array Logic)” 디바이스들에 사용되는 것들과 유사한 2-레벨 AND/OR 구조를 포함한다. CPLD들에서, 구성 데이터는 통상적으로 비-휘발성 메모리에 온-칩으로 저장된다. 일부 CPLD에서, 구성 데이터는 비-휘발성 메모리에 온-칩으로 저장되고, 그후 휘발성 메모리에 초기 구성(프로그래밍) 시퀀스의 일부로서 다운로딩된다.
모든 이러한 “PLD(programmable logic device)들”의 경우, 디바이스의 기능성은 그 목적을 위해 디바이스에 제공되는 데이터 비트들에 의해 제어된다. 데이터 비트들이 휘발성 메모리(예컨대, FPGA들 및 일부 CPLD들에서와 같은, 정적 메모리 셀들)에, 비-휘발성 메모리(예컨대, 일부 CPLD들에서와 같은, FLASH 메모리)에, 또는 임의의 다른 타입의 메모리 셀에 저장될 수 있다.
다른 PLD들은 디바이스 상의 다양한 엘리먼트들을 프로그래밍가능하게 인터커넥팅하는 프로세싱 층, 이를테면, 금속 층을 적용함으로써 프로그래밍된다. 이러한 PLD들은 마스크 프로그래머블 디바이스들로서 알려져 있다. PLD들은 또한, 다른 방식들로, 예컨대, 퓨즈(fuse) 또는 안티퓨즈(antifuse) 기술을 사용하여 구현될 수 있다. 용어들 “PLD” 및 “프로그래머블 로직 디바이스”는, 이러한 예시적인 디바이스들뿐만 아니라, 오직 부분적으로 프로그래밍가능한 포괄적인 디바이스들을 포함한다(그러나, 이에 제한되지 않는다). 예컨대, 한가지 타입의 PLD는 하드-코딩된 트랜지스터 로직과, 하드-코딩된 트랜지스터 로직을 프로그래밍가능하게 인터커넥팅하는 프로그래머블 스위치 패브릭의 조합을 포함한다.
위에 언급된 바와 같이, 진보된 FPGA들은 어레이 내에 몇몇 상이한 타입들의 프로그래머블 로직 블록들을 포함할 수 있다. 예컨대, 도 6은, "MGT(multi-gigabit transceiver)들"(601), "CLB(configurable logic block)들"(602), "BRAM(random access memory block)들"(603), "lOB(input/output block)들"(604), "CONFIG/CLOCKS(configuration and clocking logic)"(605), "DSP(digital signal processing block)들"(606), 특수화된 "I/O(input/output)" 블록들(607)(예컨대, 구성 포트들 및 클록 포트들), 및 다른 프로그래머블 로직(608), 이를테면, 디지털 클록 관리자들, 아날로그-디지털 컨버터들, 시스템 모니터링 로직 등을 포함하는 다수의 상이한 프로그래머블 타일들을 포함하는 FPGA 아키텍쳐(600)를 도시한다. 일부 FPGA들은 또한 전용 “PROC(processor block)들”(610)을 포함한다.
일부 FPGA들에서, 각각의 프로그래머블 타일은, 각각의 인접 타일의 대응 인터커넥트 엘리먼트에 그리고 그로부터 표준화된 연결들을 갖는 프로그래머블 “INT(interconnect element)”(611)를 포함한다. 따라서, 함께 취해진 프로그래머블 인터커넥트 엘리먼트들은 도시된 FPGA에 대한 프로그래머블 인터커넥트 구조를 구현한다. 프로그래머블 인터커넥트 엘리먼트(611)는 또한, 도 6의 상단에 포함된 예들에 의해 도시된 바와 같이, 동일한 타일 내 프로그래머블 로직 엘리먼트로의 그리고 그로부터의 연결들을 포함한다.
예컨대, CLB(602)는 사용자 로직 + 단일 프로그래머블 “INT(interconnect element)”(611)를 구현하도록 프로그래밍될 수 있는 “CLE(configurable logic element)”(612)를 포함할 수 있다. BRAM(603)은 하나 또는 그 초과의 프로그래머블 인터커넥트 엘리먼트들에 더해 “BRL(BRAM logic element)”(613)을 포함할 수 있다. 통상적으로, 타일에 포함된 인터커넥트 엘리먼트들의 수는 타일의 높이에 의존한다. 도시된 실시예에서, BRAM 타일은 5개의 CLB들과 동일한 높이를 갖지만, 다른 수들(예컨대, 4개)이 또한 사용될 수 있다. DSP 타일(606)은 적절한 수의 프로그래머블 인터커넥트 엘리먼트들에 더해 “DSPL(DSP logic element)”(614)을 포함할 수 있다. IOB(604)는, 예컨대, 프로그래머블 인터커넥트 엘리먼트(611)의 일 경우에 더해 “IOL(input/output logic element)”(615)의 2개의 인스턴스들을 포함할 수 있다. 당업자들에게 명백한 바와 같이, 예컨대, I/O 로직 엘리먼트(615)에 연결된 실제 I/O 패드들은 통상적으로 입력/출력 로직 엘리먼트(615)의 영역으로 한정되지 않는다.
도시된 실시예에서, (도 6에 도시된) 다이의 중심 가까이의 수평 영역은 구성, 클록, 및 다른 제어 로직에 사용된다. 이러한 수평 영역 또는 컬럼(column)으로부터 연장되는 수직 컬럼들(609)은 FPGA의 폭에 걸쳐 클록들 및 구성 신호들을 분배하는데 사용된다.
도 6에 예시된 아키텍쳐를 활용하는 일부 FPGA들은 그 FPGA의 대부분을 형성하는 규칙적인 컬럼 구조를 방해하는 추가적인 로직 블록들을 포함한다. 추가적인 로직 블록들은 프로그래머블 블록들 및/또는 전용 로직일 수 있다. 예컨대, 프로세서 블록(610)은 몇몇 컬럼들의 CLB들 및 BRAM들에 걸쳐있다.
도 6이 오직 예시적인 FPGA 아키텍쳐만을 예시하도록 의도되었음에 유의한다. 예컨대, 로우(row)의 논리 블록들의 수들, 로우들의 상대 폭, 로우들의 수 및 순서, 로우들에 포함된 로직 블록들의 타입들, 로직 블록들의 상대적 크기들, 및 도 6의 상단에 포함된 인터커넥트/로직 구현들은 순전히 예시적인 것이다. 예컨대, 실제 FPGA에서, CLB들의 1개 초과의 인접 로우는 통상적으로, CLB들이 나타나는 어디든 포함되어, 사용자 로직의 효율적인 구현을 용이하게 하지만, 인접한 CLB 로우들의 수는 FPGA의 전체 크기에 따라 다르다.
전술한 사항은 예시적인 장치(들) 및/또는 방법(들)을 설명하였지만, 본원에 설명된 하나 또는 그 초과의 양상들에 따른 다른 그리고 추가적인 예들이 후술하는 청구항들 및 그 등가물들에 의해 결정되는 본 발명의 범위를 벗어나지 않고 고안될 수 있다. 단계들을 열거하는 청구항들은 단계들의 임의의 순서를 함축하지 않는다. 상표들은 그들 각각의 소유자들의 재산이다.

Claims (15)

  1. 복수의 송신기들을 시작하기 위한 방법으로서,
    상기 복수의 송신기들 각각에 대해 시동 또는 리셋 시퀀스를 개시하는 단계 ― 상기 복수의 송신기들은 대응하는 데이터 버퍼들을 가짐 ―; 및
    상기 송신기들 각각에 의한 상기 시동 또는 리셋 시퀀스의 실행에 대한 응답으로, 상기 데이터 버퍼들에서 레이턴시를 균등화하는(equalizing) 단계
    를 포함하고,
    상기 시퀀스는:
    판독 클록 신호를 제산(dividing)함으로써 판독 어드레스 값을 획득하는 것;
    기록 클록 신호를 제산함으로써 기록 어드레스 값을 획득하는 것;
    상기 판독 어드레스 값과 상기 기록 어드레스 값 간의 차이를 감산기 회로에 의해 결정하는 것;
    상기 데이터 버퍼들 중 하나의 데이터 버퍼의 깊이보다 작은 미리규정된 깊이와 상기 차이를 비교하여, 상기 비교가 상기 차이가 상기 미리규정된 깊이보다 작거나 같음을 나타내는 것에 대한 응답으로, 비교기 회로에 의해 플래그 신호를 제1 로직 상태로 어써팅(asserting)하는 것;
    상기 비교가 상기 차이가 상기 미리규정된 깊이보다 큼을 나타내는 것에 대한 응답으로, 상기 비교기 회로에 의해 상기 플래그 신호를 제2 로직 상태로 어써팅하는 것; 및
    상기 플래그 신호에 대해 상태 변경이 발생할 때까지, 위상 보간기 회로에 의해 상기 판독 클록 신호의 위상을 조정하는 것
    을 포함하는,
    복수의 송신기들을 시작하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 시퀀스의 실행 이후에 상기 데이터 버퍼들 각각을 참조하는 위치가 중간지점(midpoint)에 설정되는,
    복수의 송신기들을 시작하기 위한 방법.
  3. 제 2 항에 있어서,
    상기 데이터 버퍼들은 데이터를 저장하기 위한 레지스터들을 갖는 선입, 선출 버퍼(first-in, first-out buffer)들인,
    복수의 송신기들을 시동하기 위한 방법.
  4. 제 2 항에 있어서,
    상기 데이터 버퍼들은 데이터를 저장하기 위한 메모리 셀들을 갖는 선입, 선출 버퍼들인,
    복수의 송신기들을 시작하기 위한 방법.
  5. 제 2 항에 있어서,
    상기 복수의 송신기들은 대응하는 복수의 트랜시버들의 회로들인,
    복수의 송신기들을 시작하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 플래그 신호의 상태 위치의 상태 변경은, 상기 대응하는 데이터 버퍼의 상기 판독 클록 신호의 판독 시간 도메인과 상기 기록 클록 신호의 기록 시간 도메인 사이의 도메인 크로싱(domain crossing)을 위한 그리고 상기 데이터 버퍼들 중 상기 대응하는 데이터 버퍼를 참조하는 위치를 상태 위치의 변경으로 설정하기 위한, 상기 대응하는 데이터 버퍼 내의 포지션과 관련된 상태 위치의 변경을 나타내는,
    복수의 송신기들을 시동하기 위한 방법.
  7. 제 6 항에 있어서,
    상기 차이가 상기 데이터 버퍼들 중 상기 데이터 버퍼의 버퍼 깊이의 일부보다 작거나 같으면, 상기 플래그 신호는 로직 0으로서 어써팅되고;
    상기 차이가 상기 데이터 버퍼의 버퍼 깊이의 상기 일부보다 크면, 상기 플래그 신호는 로직 1로서 어써팅되는,
    복수의 송신기들을 시작하기 위한 방법.
  8. 제 7 항에 있어서,
    상기 플래그 신호가 상기 로직 1이면, 상기 데이터 버퍼의 충진 레벨(fill level)은 절반(half) 보다 크고;
    상기 플래그 신호가 상기 로직 0이면, 상기 데이터 버퍼의 충진 레벨은 절반보다 작거나 같은,
    복수의 송신기들을 시작하기 위한 방법.
  9. 제 7 항에 있어서,
    상기 시퀀스에 대해 어써팅된 플래그 신호들은 상기 데이터 버퍼들에 대응하며 그리고 상기 시퀀스의 초기 사이클 동안 로직 0들 및 로직 1들 모두를 포함하는,
    복수의 송신기들을 시작하기 위한 방법.
  10. 제 6 항에 있어서,
    상기 판독 어드레스 값을 획득하는 것은, 상기 판독 어드레스 값을 획득하기 위해 상기 데이터 버퍼의 버퍼 깊이와 관련된 제수(divisor)로 상기 판독 클록 신호를 제산하는 것을 포함하는,
    복수의 송신기들을 시작하기 위한 방법.
  11. 제 10 항에 있어서,
    상기 기록 어드레스 값을 획득하는 것은, 상기 기록 어드레스 값을 획득하기 위해 상기 데이터 버퍼의 버퍼 깊이와 관련된 제수로 상기 기록 클록 신호를 제산하는 것을 포함하는,
    복수의 송신기들을 시작하기 위한 방법.
  12. 제 6 항에 있어서,
    상기 차이를 결정하는 것은 그레이 코딩(Gray coding)을 포함하는,
    복수의 송신기들을 시작하기 위한 방법.
  13. 삭제
  14. 삭제
  15. 삭제
KR1020177010135A 2014-09-15 2015-04-27 송신기들을 위한 레인-레인-디-스큐 KR102371549B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/486,820 2014-09-15
US14/486,820 US9331724B2 (en) 2014-09-15 2014-09-15 Lane-to-lane de-skew for transmitters
PCT/US2015/027823 WO2016043816A1 (en) 2014-09-15 2015-04-27 Lane-to-lane-de-skew for transmitters

Publications (2)

Publication Number Publication Date
KR20170055996A KR20170055996A (ko) 2017-05-22
KR102371549B1 true KR102371549B1 (ko) 2022-03-04

Family

ID=53274788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177010135A KR102371549B1 (ko) 2014-09-15 2015-04-27 송신기들을 위한 레인-레인-디-스큐

Country Status (6)

Country Link
US (1) US9331724B2 (ko)
EP (1) EP3195133A1 (ko)
JP (2) JP6991063B2 (ko)
KR (1) KR102371549B1 (ko)
CN (1) CN107077445B (ko)
WO (1) WO2016043816A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9543934B1 (en) * 2015-04-09 2017-01-10 Xilinx, Inc. Determination of configuration values and configuration of frequency multiplier and frequency divider circuitry
US9940288B1 (en) * 2015-11-23 2018-04-10 Cadence Design Systems, Inc. SerDes alignment process
US10146249B2 (en) 2016-09-23 2018-12-04 Altera Corporation Adaptive rate-matching first-in first-out (FIFO) system
US10419203B1 (en) 2017-02-27 2019-09-17 Xilinx, Inc. Self-measurement of phase interpolator non-linearity in a transceiver
CN108932208A (zh) * 2017-05-25 2018-12-04 中兴通讯股份有限公司 一种数据处理的方法和设备
US10033523B1 (en) 2017-08-14 2018-07-24 Xilinx, Inc. Circuit for and method of measuring latency in an integrated circuit
US10291501B1 (en) 2018-02-01 2019-05-14 Xilinx, Inc. Systems and methods for measuring latency of data buffers
US10348312B1 (en) 2018-05-30 2019-07-09 Xilinx, Inc. Circuit for and method of implementing a bursty clock and data recovery circuit using an eyescan detection circuit
US10832757B1 (en) 2019-02-19 2020-11-10 Xilinx, Inc. Receiver for and method of implementing a receiver in an integrated circuit device
CN112699145B (zh) * 2019-10-23 2024-05-03 苏州华兴源创科技股份有限公司 一种数据处理系统
CN111209233A (zh) * 2019-12-27 2020-05-29 重庆秦嵩科技有限公司 一种离散接口发送数据方法
US11637645B1 (en) 2020-09-18 2023-04-25 Xilinx, Inc. Method for time stamping with increased accuracy
CN112637102B (zh) * 2021-02-07 2021-06-25 深圳市创成微电子有限公司 音频接口电路及其控制方法、音频设备
US11705910B1 (en) 2022-01-05 2023-07-18 Xilinx, Inc. Fast line rate switching in peripheral component interconnect express (PCIe) analyzers

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140089718A1 (en) * 2012-09-24 2014-03-27 Xilinx, Inc. Clock domain boundary crossing using an asynchronous buffer

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01124024A (ja) * 1987-11-10 1989-05-16 Nec Corp Fifoの初期状態における制御回路
JP2001103491A (ja) * 1999-07-16 2001-04-13 Sony Corp 送信装置、受信装置、およびこれらを用いた信号伝送システム
JP2003244085A (ja) * 2002-02-19 2003-08-29 Fujitsu Ltd 複数系統伝送路における位相合致制御システム及び位相合致制御方法
US7631118B2 (en) * 2003-12-31 2009-12-08 Intel Corporation Lane to lane deskewing via non-data symbol processing for a serial point to point link
US7454537B1 (en) 2004-04-22 2008-11-18 Altera Corporation Synchronization and channel deskewing circuitry for multi-channel serial links
US7571338B2 (en) * 2004-05-24 2009-08-04 Telefonaktiebolaget Lm Ericsson (Publ) Determining a time difference between first and second clock domains
DE102005013482B4 (de) * 2005-03-23 2007-04-05 Texas Instruments Deutschland Gmbh Verfahren zur Rückgewinnung digitaler Daten aus einem getakteten seriellen Eingangssignal und getaktete Datenrückgewinnungsschaltung
US7461284B2 (en) * 2005-06-20 2008-12-02 Lsi Corporation Adaptive elasticity FIFO
US20080141063A1 (en) * 2006-12-12 2008-06-12 Ridgeway Curtis A Real time elastic FIFO latency optimization
US8285944B1 (en) * 2007-01-12 2012-10-09 Xilinx, Inc. Read-write control of a FIFO memory with packet discard
US7594048B1 (en) 2007-08-14 2009-09-22 Xilinx, Inc. Determining transit time across an asynchronous FIFO memory by measuring fractional occupancy
US20090086874A1 (en) * 2007-09-28 2009-04-02 Junning Wang Apparatus and method of elastic buffer control
US8386828B1 (en) 2010-06-16 2013-02-26 Xilinx, Inc. Circuit for estimating latency through a FIFO buffer
JP2012238992A (ja) * 2011-05-11 2012-12-06 Sony Corp クロック乗せ換え回路およびクロック乗せ換え方法
US8760325B2 (en) 2012-03-23 2014-06-24 Analog Devices, Inc. Scheme for balancing skew between lanes of high-speed serial digital interface
GB2505002B (en) 2012-08-17 2014-09-24 Broadcom Corp Method and apparatus for transferring data from a first domain to a second domain
CN103795521B (zh) * 2014-01-27 2017-01-25 科大智能(合肥)科技有限公司 一种基于以太网传送e1信号的时钟恢复方法及装置
CN104022775A (zh) * 2014-06-02 2014-09-03 复旦大学 一种面向SerDes技术中基于FIFO协议的数字接口电路

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140089718A1 (en) * 2012-09-24 2014-03-27 Xilinx, Inc. Clock domain boundary crossing using an asynchronous buffer

Also Published As

Publication number Publication date
JP2017528838A (ja) 2017-09-28
JP2021073572A (ja) 2021-05-13
US9331724B2 (en) 2016-05-03
US20160080008A1 (en) 2016-03-17
CN107077445B (zh) 2020-11-24
KR20170055996A (ko) 2017-05-22
EP3195133A1 (en) 2017-07-26
JP6991063B2 (ja) 2022-01-12
CN107077445A (zh) 2017-08-18
WO2016043816A1 (en) 2016-03-24

Similar Documents

Publication Publication Date Title
KR102371549B1 (ko) 송신기들을 위한 레인-레인-디-스큐
US9509640B2 (en) Latency control in a transmitter/receiver buffer
US8650429B1 (en) Clock phase alignment
US6177844B1 (en) Phase-locked loop or delay-locked loop circuitry for programmable logic devices
US8587337B1 (en) Method and apparatus for capturing and synchronizing data
JP6250188B2 (ja) Serdes受信機オーバーサンプリングレート
US7346794B1 (en) Method and apparatus for providing clocking phase alignment in a transceiver system
US7746134B1 (en) Digitally controlled delay-locked loops
US9148192B1 (en) Transceiver for providing a clock signal
JP6598969B2 (ja) 位相補間器ベースの送受信機システムにおけるクロックデータリカバリ(cdr)の位相ウォーク方式
JP6141985B2 (ja) 非同期バッファを用いたクロック領域境界交差
US10871796B1 (en) Global clock and a leaf clock divider
KR102001692B1 (ko) 멀티 채널 지연 고정 루프
US9843332B1 (en) Clock grid for integrated circuit
US10291501B1 (en) Systems and methods for measuring latency of data buffers
US8816743B1 (en) Clock structure with calibration circuitry
US9658822B1 (en) Rate controlled buffer for output at either a first or second rate responsive to a fill level
US10832757B1 (en) Receiver for and method of implementing a receiver in an integrated circuit device
JP2022540562A (ja) 低遅延レシーバ
US9331701B1 (en) Receivers and methods of enabling the calibration of circuits receiving input data
US8847626B1 (en) Circuits and methods for providing clock signals
US6995590B1 (en) Hybrid phase/delay locked loop circuits and methods
US7119593B2 (en) Delayed signal generation circuits and methods

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant