스파르탄-3A FPGA를 이용한 저가격 DDR2인터페이스 구현하기 스파르탄-3A FPGA를 이용한 저가격 DDR2인터페이스 구현하기
전체관리자 2008-05-01 00:00:00

스파르탄-3A FPGA를 이용한 저가격 DDR2 인터페이스 구현하기

 

글│애드리안 코소로바, 마케팅 매니저, 자일링스

 

 애플리케이션 분야는 일반적으로 고성능과 저가격이라는 2가지 카테고리로 분류할 수 있다. 고성능 애플리케이션은 최상의 대역폭이 가장 중요한 요소가 되고, 저가격 애플리케이션은 시스템 비용이 가장 중요한 요소가 된다. 하이 엔드 애플리케이션을 위해 자일링스는 최상의 대역폭 요구조건을 만족시킬 수 있는 버텍스-5(VirtexTM-5) FPGA를 제공하고 있다.

그러나 모든 시스템이 최고의 메모리 성능을 요구하는 것은 아니다. 핀 당 400Mbps 이하에서 동작하는 데이터 속도의 DDR SDRAM 및 DDR2 SDRAM은 대부분의 저가격 시스템에 적합하다. 이러한 애플리케이션을 위해 자일링스는 스파르탄-3(SpartanTM-3), 스파르탄-3E, 스파르탄-3A, 스파르탄-3AN FPGA로 구성된 스파르탄-3 제너레이션을 제공하고 있다. 이 글에서는 스파르탄-3 제너레이션 FPGA을 이용한 DDR2 SDRAM 메모리 인터페이스 구현 아키텍처를 비롯해 어떻게 자일링스 툴과 검증된 하드웨어 레퍼런스 디자인을 통해 어떻게 메모리 인터페이스를 구현할 수 있는지를 설명하고자 한다.

 

메모리 컨트롤러와 DDR2 인터페이스

 

 읽기 및 쓰기 데이터 인터페이스를 위한 FPGA 기반 디자인용 메모리 인터페이스와 컨트롤러인 빌딩 블록이 있다. 즉, 읽기 및 쓰기 데이터 인터페이스, 메모리 컨트롤러 스테이트 머신, 그리고 FPGA 디자인 의 나머지 부분과 메모리 인터페이스 디자인을 브릿지 해주는 유저 인터페이스 등으로 구성된 세 개의 기본 빌딩 블록이 있다(그림 1).

 

그림 1. 스파르탄-3 제너레이션 FPGA를 위한 DDR2 SDRAM 인터페이스 구현

 


 스파르탄-3 제너레이션 FPGA에서 유저 인터페이스는 신호변경(Hand-shaking) 타입의 인터페이스이다. 쓰기를 위해 어드레스 및 데이터와 함께 명령(읽기나 쓰기)을 보낼 때 유저 인터페이스 로직은 다음 명령이 수행될 수 있을 때 "user_cmd-ack" 신호에 응답한다. 패브릭에 구현된 기능 블록은 DCM(Digital Clock Manager) 출력을 통해 클럭킹되며, DCM은 또한 LUT(Look-Up Table) 딜레이 캘리브레이션 모니터를 구동한다. 이 캘리브레이션 회로는 FPGA 내부 캡처를 통해 적절한 정렬을 수행하기 위해, 데이터 판독(DQ)과 관련된 데이터 스트로브 판독(DQS)을 지연시키는데 필요한 LUT 기반 엘리먼트 수를 선택하기 위해 사용된다.

 읽기 트랜잭션이 이루어지는 동안, DDR2 SDRAM 디바이스는 DQS와 관련 데이터를 DQ의 에지에 정렬되게 FPGA 에지에 전송한다. DQ를 캡처하는 작업은 어려운 일이다. 그 이유는 프리러닝하지 않는 DQS 스트로브의 모든 에지에서 데이터가 변경되기 때문이다. DQ 캡처는 CLB(Configurable Logic Block) 안의 LUT를 사용해 구현되며, DQ 캡처 구현은 LUT를 기반으로 한 탭-딜레이 매커니즘을 이용한다. DQS 클럭킹 신호는 충분한 타이밍 마진을 제공하기 위해 지연된다. DQ의 캡처는 듀얼 포트 LUT 기반 RAM에서 구현된다(그림 2) .

 

그림 2. 스파르탄-3 제너레이션 FPGA를 위한 DQ 캡처 FIFO 구현

 


 LUT RAM은 한 쌍의 FIFO로 컨피규레이션되며, 각 데이터 비트는 라이징-에지(FIFO_0)와 폴링-에지(FIFO_1) FIFO로 입력된다. 이러한 16-엔트리-딥 FIFO는 비동기식이며, 독립적인 읽기 및 쓰기 포트를 갖추고 있다. DQS 클럭 도메인에서 메모리 컨트롤러 클럭 도메인으로의 DQ 트랜스퍼는 이러한 비동기식 FIFO를 통해 이루어진다. 데이터는 메모리 컨트롤러 클럭 도메인의 FIFO_0 및 FIFO_1에서 모두 동시에 판독될 수 있다. FIFO 리드 포인터는 FPGA 내부 클럭 도메인에서 생성된다. 쓰기 인에이블 신호(FIFO_0 WE와 FIFO1_WE)의 생성은 DQS와 외부 루프-백 혹은 표준화 신호를 이용해 이루어진다.
 외부 표준화 신호는 IOB(Input/Out-put Block)에서 출력으로 구동된 다음, 입력 버퍼를 통해 입력으로 들어온다. 이러한 기법은 IOB, 디바이스, FPGA와 메모리 디바이스 사이의 트레이스 딜레이 등을 보상하게 된다. 쓰기 데이터 인터페이스는 쓰기 데이터 명령과 타이밍을 생성하고 제어한다. 쓰기 데이터 인터페이스는 IOB 플립-플롭(Flip-Flop)과 DCM의 90-, 180-, 270-도 출력을 사용해 DDR과 DDR2 SDRAM 타이밍 요구조건과 명령 및 데이터 비트에 적절하게 정렬된 DQS 스트로브를 전송한다. 전반적인 컨트롤러 스테이트 머신 로직 생성과 유저 인터페이스 등을 비롯해 디자인 상의 다른 형태들 또한 존재한다. 자일링스는 설계자들이 보다 쉽게 완벽한 솔루션을 구현할 수 있도록 MIG(Memory Interface Generator) 툴을 개발했다.

 

컨트롤러 설계와 MIG 소프트웨어 툴의 통합

 

 메모리 컨트롤러 스테이트 머신를 포함해 모든 빌딩 블록을 통합하는 것은 디자인을 완성하는데 있어 필수적이다. 컨트롤러 스테이트 머신은 메모리 아키텍처와 시스템 파라미터에 따라 달라진다. 스테이트 머신 코드는 복잡해질 수도 있으며, 매우 많은 변수의 함수들이 존재한다. 이는 다음과 같다.

- 아키텍처(DDR, DDR2)
- 뱅크 수(외부 및 내부 메모리 디바이스용)
- 데이터 버스 폭
- 메모리 디바이스 폭 및 깊이
- 뱅크 및 로우 액세스 알고리즘

 마지막으로, DQ/DQS(Data-to-Strobe Ratios)와 같은 파라미터는 설계의 복잡성을 더욱 가중시킬 수 있다. 컨트롤러 스테이트 머신은 정확한 순서로 커맨드를 처리해야 하며, 동시에 메모리 디바이스의 타이밍 요구조건도 고려해야 한다.

 완전한 디자인은 자일링스로부터 레퍼런스 디자인과 IP를 생성하는 ISETM 소프트웨어의 일부인 Core GeneratorTM 수트에 포함되어 무료로 제공되는 MIG 소프트웨어툴을 통해 생성될 수 있다. MIG 설계 플로우는 기존의 FPGA 설계 플로우와 매우 유사하다. 이 소프트웨어 툴을 통해 설계자들이 얻을 수 있는 장점은 물리층 인터페이스나 메모리 컨트롤러를 위해 RTL 코드를 생성할 필요가 없다는 점이다. 시스템과 메모리 파라미터를 설정하기 위해 MIG의 GUI(Graphical User Interface)를 사용하면 된다. FPGA 디바이스와 패키지, 속도 등급 등을 선택한 다음, 메모리 아키텍처를 선택할 수 있으며, 실제 메모리 디바이스나 DIMM(Dual Inline Memory Module)을 선택할 수도 있다. 동일한 GUI를 통해 버스 폭과 클럭 주파수를 선택할 수 있다.

 다른 옵션으로는 CAS(Column Access Strobe) 레이턴시 제어, 버스트 길이, 핀 할당 제어 등을 제공한다. 불과 몇 분안에 MIG 툴은 RTL과 UCF 파일(각각의 HDL 코드 및 조건파일)을 생성한다. 이러한 파일들은 입력 데이터를 기반으로 수정한 검증된 하드웨어 기반 레퍼런스 디자인의 라이브러리를 통해 생성된다. 출력 파일들은 유저 인터페이스, 물리층, 컨트롤러 스테이트 머신 등과 같은 디자인 상의 서로 다른 빌딩 블록에 적용하는 모듈 단위로 분류된다.

 또한 추가로 RTL 코드를 수정할 수 있는 완벽한 유연성이 제공된다. "블랙-박스" 형태로 제공되는 다른 솔루션들과는 다르게 이 코드는 암호화 되지 않기 때문에 설계를 변경하거나 추가로 커스터마이징하는 것이 가능하다. 선택적 코드 변경 이후에도 전체 디자인의 기능을 검증하기 위해 추가적인 시뮬레이션을 수행할 수 있다. MIG 툴은 또한 메모리 체커(Checker) 기능을 가진 합성이 가능한 테스트 벤치를 생성할 수 있다. 이 테스트 벤치는 자일링스 레퍼런스 디자인의 기능별 시뮬레이션 및 하드웨어 검증 시 적용되는 설계 예제이며, 메모리 컨트롤러에 대한 일련의 쓰기 및 리드 백(read-back)을 실행 시킨다.


 또한 고유의 커스텀 테스트 벤치를 생성하기 위한 템플릿으로 사용할 수도 있다. 설계의 최종 단계는 ISE 프로젝트에서 MIG 파일을 가져온 다음, 여러분의 나머지 FPGA 설계 파일과 합친 후(합성 및 P&R 필요), 필요하다면 추가적인 타이밍 시뮬레이션을 실행하거나 하드웨어 검증을 수행한다. MIG 소프트웨어 툴은 최적의 최종 비트 파일을 생성할 수 있도록 적절한 합성, 맵, P&R(Place and Route) 등의 옵션을 통해 배치 파일을 생성한다.

 

하드웨어 검증 및 개발 보드

 

 레퍼런스 디자인의 하드웨어 검증은 견고하고 안정된 솔루션을 구현하기 위해 매우 중요한 최종 단계이다. 자일링스는 하드웨어 상에서 스파르탄-3A FPGA를 위한 DDR2 SDRAM 메모리 인터페이스 구현 검증을 완벽하게 수행했다. DDR2 SDRAM 설계는 저가격 스파르탄-3A 스타터 키트 보드를 이용해 구현했으며, 보드상의 16bit 폭의 DDR2 SDRAM 메모리 디바이스와 XC3S700A-FG484 FPGA를 사용했다.

 레퍼런스 디자인은 스파르탄-3A 디바이스에서 이용 가능한 리소스 중 아주 작은 부분만을 사용해 구현되었다. IOB의 13%, 로직 슬라이스의 9%, BUFG MUX의 16%, 8개 DCM 중 하나만 사용되었다. 이렇게 구현된 디자인은 다른 기능을 위한 충분한 리소스를 남겨 주기 때문에 매우 유용하다. 자일링스는 다양한 스파르탄-3 제너레이션 FPGA를 위한 메모리 인터페이스 디자인을 검증했다. 표 1은 각각의 스파르탄-3 제너레이션 FPGA 개발 보드에 대한 검증된 하드웨어 기반 메모리 인터페이스를 보여준다.

 

표 1. 메모리 인터페이스를 위한 저가격 개발 보드

 

 

결론

 

저가격 스파르탄-3 제너레이션 FPGA와 MIG(Memory Interface Generator) 툴, 자일링스 개발 보드를 이용해 보다 신속하게 메모리 인터페이스와 컨트롤러 디자인을 구현 가능하다.

디지털여기에 news@yeogie.com <저작권자 @ 여기에. 무단전재 - 재배포금지>