[FPGA]

FPGA와 DDR3 SDRAM간 인터페이스 열쇠는 레벨링

Neo Park 2012. 11. 2. 18:22

 

DDR3 SDRAM 아키텍처는 버스 속도 600Mbps~1.6Gbps(300~800MHz)를 갖는 보다 높은 대역폭과 저전력 소모를 위한 1.5V 동작,

그리고 90nm 공정에서 2기가비트의 보다 높은 집적밀도를 지원한다. 이 아키텍처가 보다 빠르고 크며 비트당 소모 전력도 더 적다는 데는

의문의 여지가 없다. 그러나 DDR3 SDRAM DIMM과 FPGA 간의 인터페이스는 어떻게 이루어지는 것일까?


그 열쇠는 레벨링에 있다.


레벨링 피처를 FPGA I/O 구조에 직접 설계해 넣지 않았다면 DDR3 SDRAM DIMM에 어떠한 것을 인터페이스 시키려면 복
잡하고 비용이 많이 들며, 지연 라인과 관련 제어 장치들을 포함한 수많은 외부 부품들을 필요로 했을 것이다.


레벨링의 중요성
보다 높은 주파수들을 지원할 때 신호 무결성을 향상시키기 위해 JEDEC 위원회에서는 클럭 및 명령어/주소 버스 신호들과 함께

사용되는 플라이바이(fly-by) 터미네이션 방식을 정의했다. 이것은 전반적인 신호 무결성을 향상시켜 보다 고성능을 지원한다.

 

플라이바이 토폴로지는 클럭과 주소/명령 신호들이 DIMM을 지나갈 때 모든 DRAM에서 클럭과 데이터/스트로브 사이에 일부러

신호 도착시간 오차를 야기함으로써 동시 스위칭 잡음(SSN)을 줄여준다. 신호 도착시간 오차는 최대 0.8tCK에 이를 수있는데,

이러한 확산은 두 클럭 사이클 가운데 어느 것에서 데이터가 돌아올 지 알 수 없을 정도로 넓다.

 

따라서 “레벨링” 피처는 컨트롤러들이 바이트 레인당 타이밍을 조정함으로써 이러한 오차를 보상할 수 있도록 해준다.

현 세대의 FPGA들은 광범위한 어플리케이션들을 위한 DDR SDRAM 메모리들과 인터페이스 되는 많은 기능들을 제공하고 있다.

그러나 최신 DDR3 SDRAM 기술에 사용할 수 있으려면 강력한 레벨링 방식이 필요하다.

 

FPGA는 최고 400MHz (800Mbit/s)의 속도를 낼 수 있으며, 기존은 물론 DDR3와 같이 새로이 떠오르는 외부 메모리 표준들도

지원할 수 있는 유연성을 갖는 I/O를 제공한다.

 


판독/기록 레벨링

판독 동작시에 메모리 컨트롤러 측은 플라이바이 메모리 토폴로지에 의해 야기되는 지연들을 보상하지 않으면 안 된다.

이러한 지연들은 판독 사이클에 영향을 미치기 때문이다. 레벨링을 그저 데이터 경로에 나타나는 I/O 지연 정도로만 생각해서는 안 된다.

각각의 DQS는 재동기화 클럭 포지션의 별도 위상변이(프로세스, 전압 및 온도 [PVT] 보상된)를 필요로 한다.

 

그림은 동일한 판독 명령에 대해 DIMM으로부터 돌아오는 두 개의 DQS 그룹들을 보여준다.

처음에는 각각의 별도 DQS마다 90도씩 위상변이 되고 그 그룹과 연관된 DQ 데이터는 캡쳐 된다.

 

그리고 나서는 자유롭게 동작하는 재동기화 클럭(DQS와 동일한 주파수와 위상의)을 사용하여 데이터를 캡쳐 도메인으로부터 레벨링 회로(분홍색 및 오렌지색 링크로 나타낸)로 옮긴다.

 

이 단계에서 각각의 DQS 그룹은 별도의 재동기화 클럭을 갖게 된다. 그 다음에는 DQ 데이터가 1T 레지스터들로 건네진다.

 

 

이 예에서 1T 레지스터는 그 특정 DQS 그룹의 DQ 데이터 비트들을 지연시키기 위해 상부 채널에 필요하다. 1T 레지스터들은 하부 채널에는 필요치 않다는 데 주목하자. 이 프로세스는 상부 채널을 하부 채널과 정렬시키기 시작한다. 임의의 주어진 채널에 대해 1T 레지스터들이 필요한지 필요치 않은지의 여부는 자유로운 PHY IP 코어의 보정 방식의 일부로서 자동적으로 결정된다. 그리고는 두 DQS 그룹이 모두 네가티브 에지 레지스터들에 건네진다. 이때 필요하다면 가동시에 자동 보정 프로세스에 의해 옵션인 레지스터들이 또 다시 스위치 인 되거나 스위치 아웃 된다.

최종 단계는 상부 채널과 하부 채널들을 모두 동일한 재동기화 클럭에 정렬시킴으로써 소스 동기 인터페이스를 생성하는 것이다.

이 것은 완전 정렬되거나 레벨링 된 SDR(single data rate) 데이터를 FPGA 패브릭으로 전달한다. DQS 그룹들은 판독 레벨링과 유사하면서도 반대로 이루어져 서로 다른 시간에 론칭 되어 DIMM 상의 디바이스들에 도달하는 클럭과 일치하게 되며, ±0.25tCK의 tDQSS 파라미터들을 충족시켜야만 한다. 컨트롤러는 피드백 루프를 생성함으로써 DQS와 CK 간의 관계를 조정하지 않으면 안 된다. 컨트롤러는 이 피드백 루프를 통해 DRAM에 기록하며, 기록 윈도의 엔트포인트를 찾아낼 때까지 순차적 단계들을 훑고 지나가면서 판독해 나간다. 그리고 나서 데이터 론칭 포인트는 최상의 셋업 및 홀드 마진을 위해 양호한 윈도의 중간 지점에 놓인다.


기타 혁신 사항들
Stratix III FPGA는 OCT(on-chip termination), 가변 I/O 지연, 그리고 HDR(half data rate) 능력과 같은 일련의 메모리 인터페이스들에

간단하면서도 강력하게 인터페이스 할 수 있도록 해주는 다른 혁신적 I/O 피처들을 다수 갖고 있다. 병렬 및 직렬 OCT는 판독 버스와

기록 버스 양쪽을 위해 적절한 라인 터미네이션과 임피던스 정합을 제공한다. 이는 FPGA에 외부 저항기들을 갖출 필요를 없애주며,

외부 부품 비용과 보드 공간, 배선의 복잡성을 줄여준다. 또한 전력 소모도 크게 줄여주는데, 이는 병렬 터미네이션이 기록 동작시

사실상 회로 밖에서 이루어지기 때문이다.

가변 I/O 지연은 트레이스 길이의 부정합과 전기적 디스큐(deskew)에 사용된다.
미세한 I/O 지연 해상도(즉, 50ps 단계들)가 (레벨링 기능과는 별도로) 보다 미세한 DQS간 디스큐에 사용되는데, 이는 보드 길이의

불일치나 혹은 FPGA 및 메모리 디바이스들의 I/O 버퍼 변화에 의해 야기된다. 궁극적으로 이는 각 DQS 그룹의 캡쳐 마진을 증가시킨다.


지연 요소들에는 실행시에 FPGA 패브릭으로부터 도달하여 자동 DDR3 디스큐 알고리즘들을 가동시 보정 프로세스의 일환으로서

구현하게 된다. 출력 지연도 적은 양의 스큐를 출력 경로에 삽입하여 동시에 스위칭 되고 있는 I/O의 수를 의도적으로 줄이는 데

사용할 수 있다.

DQS 신호들은 입력 스트로브 역할을 하며, 판독 트랜잭션을 캡쳐 하기 위해서는 최적의 위치로 옮겨야만 한다. 위상 변이 회로는

인입 DQS 신호들을 DLL 주파수 모드에 따라 0°, 22.5°, 30°, 36°, 45°, 60°, 67.5°, 72°, 90°, 108°, 120°, 135°, 144° 또는 180° 만큼

이동시킬 수 있다. 이렇게 이동된 DQS 신호들은 I/O 요소 입력 레지스터들에서 클럭으로 사용된다.

 

DLL은 주파수 레퍼런스를 이용하여 DQS 핀들 각각의 지연 체인들을 위한 제어 신호들을 동적으로 생성한다. 이렇게 함으로써

PVT 변화에 대해 보상할 수 있도록 해주는 것이다.

 

 

Stratix III FPGA에는 네 개의 DLL들이 있는데, 이들 각각은 디바이스의 모서리에 자리잡고 있기 때문에 각 DLL이 디바이스의 양 사이드에

도달할 수 있어서 디바이스의 모든 사이드에 있는 다수의 DDR3 SDRAM 메모리 인터페이스들을 지원할 수 있도록 해준다.

DDR 캡쳐 레지스터와 HDR 레지스터들은 데이터를 DDR 도메인(클럭의 양 에지에 해당하는 데이터)으로부터 SDR 도메인

(동일한 주파수에서 클럭의 단일 포지티브 에지에 있는 데이터, 데이터 폭은 두 배), 그리고 HDR 도메인(클럭의 포지티브에지에

있는 데이터, 그러나 이 경우 주파수는 이제 SDR의 경우의 절반이 되며, 데이터 폭은 또 다시 배가된다)으로 안전하게 전송할 수

있도록 해준다.

따라서 내부 디자인 타이밍을 달성하기가 훨씬 더 쉬워진다.