AMD/Xilinx FPGA와 DDR 메모리 인터페이싱

Phil Salmony
|  작성 날짜: 칠월 18, 2023  |  업데이트 날짜: 오월 14, 2024
AMD/Xilinx FPGA와 DDR 메모리 인터페이싱

소개

이전 경험이 없는 상태에서 FPGA에 휘발성 메모리인 DDR을 연결하는 것은 처음에는 꽤 어려워 보일 수 있습니다. FPGA가 본질적으로 유연성을 가지고 있어 외부 DDR 메모리의 I/O를 어디에나 자유롭게 연결할 수 있다고 가정할 수 있지만, 여전히 많은 제약 사항을 고려해야 합니다.

예를 들어, 특정 DDR 메모리 핀 그룹을 어디에 배치할지, 은행을 운영할 전압은 얼마로 할지, 필요한 클록은 무엇이며 어디에 연결할지, 타이밍 위반을 어떻게 피할지 등을 고려해야 합니다.

단지 '스키마틱 레벨'의 인터페이싱뿐만 아니라, 전원 공급 및 전달, 디커플링, 종단, 트레이스 임피던스 및 길이, 지연 매칭 등과 같은 '실제 세계'의 인터페이스에 대해서도 우려해야 합니다.

이 글에서는 시스템 레벨과 스키마틱 관점에서 FPGA와 DDR 메모리의 인터페이싱을 살펴볼 것입니다. 실제 예로, DDR2 메모리와 인터페이스하는 AMD/Xilinx Spartan-7 기반 오디오 DSP 디자인(‘Xerxes’라 명명)을 살펴볼 것입니다.

AMD/Xilinx FPGA와 DDR 메모리 인터페이싱_Xerxes

Xerxes 오디오 DSP 하드웨어 (AMD/Xilinx Spartan-7 FPGA와 DDR2 메모리)

메모리 유형

사용하는 메모리 유형은 디자인에 따라 다릅니다. 메모리 용량과 메모리 대역폭 요구 사항, 그리고 선택한 FPGA의 가능성에 따라 달라집니다.

일반적으로 대부분의 현대 FPGA는 DDR2 및 DDR3 메모리(및 저전력, 저전압 변형)와 인터페이스할 수 있습니다. 물론, 더 빠른 DDR4 메모리 이상도 가능하지만, 보통 더 고급 FPGA에서만 가능합니다.

최대 가능 데이터 속도뿐만 아니라 전압 및 전력 요구 사항, 패키지 유형, 비용 및 가용성도 중요합니다. 이 모든 것은 설계 초기 단계에서 고려해야 합니다.

DDR 메모리 비교 (출처: synopsys.com)

DDR 메모리 비교 (출처: synopsys.com)

메모리 유형을 선택할 때는 메모리 장치의 속도 등급과 FPGA 내 메모리 컨트롤러의 속도 등급도 주의해야 합니다. 메모리나 컨트롤러를 ‘다운레이트’하여 전체 대역폭에서 운영하지 않음으로써 더 많은 타이밍 여유를 가질 수 있습니다.

전형적인 메모리 다운레이팅 표 (출처: AMD/Xilinx UG933)

전형적인 메모리 다운레이팅 표 (출처: AMD/Xilinx UG933)

특히 AMD/Xilinx FPGA의 경우, Vivado IDE를 다운로드하여 무료 Memory Interface Generator (MIG) IP를 사용해 보는 것이 좋습니다.

이것은 사용할 수 있는 메모리 유형, 속도 등급 및 호환 부품을 빠르게 보여줍니다.

Vivado MIG 호환 메모리 부품 예시

Vivado MIG 호환 메모리 부품 예시

왜 저는 Xerxes 보드에 DDR2 메모리를 선택했을까요?

비교적 오래된 표준이지만, DDR2 메모리를 사용함으로써 보드에 이미 있는 1.8V 레귤레이터(이것은 FPGA의 다른 부분을 구동함)를 사용할 수 있었고, 별도의 레귤레이터를 추가할 필요가 없었습니다.

또한, Xerxes 설계는 특별히 높은 메모리 대역폭 요구사항이 없으므로 DDR2 인터페이스가 충분했습니다.

게다가, 낮은 대역폭 인터페이스는 PCB, 종단, 타이밍 제약을 완화합니다.

 

DDR 메모리와 FPGA 인터페이스

적합한 메모리 장치를 선택한 후, 이를 스키마틱에서 FPGA에 연결할 시간입니다.

먼저, 적합한 뱅크를 선택해야 합니다. 16비트 너비(또는 그 이하) 데이터 인터페이스를 사용하는 경우, 대부분의 FPGA에서는 보통 하나의 뱅크에 맞을 수 있습니다. 그렇지 않다면, 메모리 인터페이스를 여러 뱅크에 걸쳐 분할해야 합니다.

간단함을 위해, Xerxes 보드의 경우와 같이 16비트 너비 메모리 인터페이스를 사용하겠습니다. DDR 메모리 자체와 동일한 전압에서 작동할 수 있는 무료 뱅크를 선택하십시오(Xerxes의 경우, DDR2 메모리를 사용하여 1.8V에서 작동하는 뱅크 34입니다).

1.8V 공급에서 적절한 디커플링을 가진 FPGA 뱅크 34

1.8V 공급에서 적절한 디커플링을 가진 FPGA 뱅크 34

AMD/Xilinx FPGA를 사용하는 경우, Vivado 및 MIG 도구를 사용하면 DDR 메모리의 핀 배치를 매우 간단하게 얻을 수 있습니다. 도구는 해당 뱅크에 적합한 핀 배치를 제안하거나, 우리는 핀을 수동으로 할당하고 핀 배치를 검증할 수 있습니다.

Vivado MIG 핀 배치 도구

Vivado MIG 핀 배치 도구

핀 배치를 수동으로 구성하는 경우, 개별 DDR 바이트 레인이 동일한 뱅크 바이트 번호를 가지고 있고, 차동 스트로브가 차동 FPGA DQS-능력 핀에 있는지 확인해야 합니다.

핀 배치는 PCB 레이아웃 및 라우팅 단계에서 조정될 가능성이 높습니다. FPGA의 유연성 덕분에, PCB 설계 과정에서 핀을 교환하면 라우팅을 단순화하고 레이어 전환을 최소화할 수 있습니다.

이 예에서는 단일 뱅크에서 실행되므로 내부 VREF를 사용해야 하며, 이는 최대 메모리 대역폭을 제한합니다.

또한, 클로킹에 주의해야 합니다. 이상적으로는 클록 소스가 클로킹 가능한 핀(또는 차동 클록 소스를 사용하는 경우 핀들)에 연결된 동일한 뱅크에 있어야 합니다.

마지막으로, 설계와 타이밍을 검증하기 위해 벤더 도구를 사용해야 합니다. 그런 다음 초기 핀 배치가 완료되면, 스키마틱에서 넷 클래스, 차동 쌍, 규칙을 정의하고 색상 코딩을 사용하여 PCB 설계 생활을 더 쉽게 만드세요.

FPGA Bank 34 DDR2 연결 및 클록 소스

FPGA Bank 34 DDR2 연결 및 클록 소스

단일 장치의 경우, DDR 메모리 컴포넌트에서 포인트 투 포인트 연결만 하면 됩니다.

주소/명령/제어 신호(ACC)에는 종단이 있어야 하지만, 낮은 데이터 속도의 경우 종종 이를 생략할 수 있습니다. 저는 항상 차동 클록 쌍에 종단을 추가합니다. 데이터 바이트 레인은 양쪽 끝에서 내부적으로 종단됩니다.

CKE, ODT 및 선택적으로 CS# 라인에는 4.7k 풀다운 저항을 배치하는 것이 좋습니다.

DDR2 메모리 모듈 신호 및 전원 연결

DDR2 메모리 모듈 신호 및 전원 연결

마지막으로, 메모리 모듈은 물론 전원이 필요합니다. Xerxes 보드의 경우, DDR2 모듈은 FPGA bank 34와 동일한 1.8V 레귤레이터에 연결됩니다. 적절한 디커플링이 필요합니다 - 데이터시트나 애플리케이션 노트에 다르게 명시되어 있지 않는 한, 원칙적으로 VDD 핀 두 개당 작은 (~100nF) 커패시터 하나와 VDD 핀 열 개당 큰 벌크 커패시터 하나를 사용하는 것을 목표로 합니다.

VREF 핀 전압은 위 이미지에 표시된 것처럼 간단한 포텐셜 분배기와 필터링 커패시터를 통해 생성할 수 있습니다.

맺음말

이 글에서는 시스템 수준 및 스키마틱 수준에서 FPGA 기반 설계에 외부 비휘발성 DDR 메모리를 통합하는 기본 전략을 개요했습니다.

이것들은 기본적인 사항이며, 시스템 요구 사항에 따라 설계는 훨씬 더 복잡해질 것입니다. 특히, 더 빠른 메모리 부품과 인터페이스, 그리고 여러 모듈을 사용할 계획이라면 더욱 그렇습니다.

고급 FPGA 및 DDR 기반 시스템을 설계할 때는 Altium Designer와 같은 세계적 수준의 ECAD 도구에 포함된 도구와 기능을 활용하는 것이 중요합니다. 여기에서 Altium Designer 및 Altium 365의 무료 체험을 확보하세요.

작성자 정보

작성자 정보

Phil Salmony is a professional hardware design engineer and educational engineering content creator. After graduating from the University of Cambridge with a master's degree in electrical and control systems engineering, he began his engineering career at a large German aerospace company. Later on, he co-founded a drone startup in Denmark, where he was the lead electronics and PCB design engineer, with a particular focus on mixed-signal, embedded systems. He currently runs his own engineering consultancy in Germany, focusing predominantly on digital electronics and PCB design.

Aside from his consulting work, Phil runs his own YouTube Channel (Phil's Lab), where he creates educational engineering videos on topics such as PCB design, digital signal processing, and mixed-signal electronics.

관련 자료

관련 기술 문서

홈으로 돌아가기
Thank you, you are now subscribed to updates.