AngeloJacobo/FPGA_SDRAM_Controller
요약
본 프로젝트는 FPGA 개발 보드에 장착된 SDRAM(Winbond W9825G6KH)을 위한 컨트롤러를 구현한 오픈 소스입니다. 316MB/s 대역폭, Full page 버스트 모드를 지원하며, 다양한 종류의 sdram 장치에 맞게 파라미터 설정이 가능합니다. 테스트 파일과 시퀀스 다이어그램을 통해 기능 검증 과정을 상세히 보여줍니다.
핵심 포인트
- FPGA 기반 SDRAM 컨트롤러 구현 프로젝트입니다.
- 316MB/s 대역폭 및 Full page 버스트 모드를 지원합니다.
- 다양한 sdram 장치에 맞게 파라미터 설정이 가능합니다.
- 테스트 파일과 시퀀스 다이어그램으로 검증 과정을 제공합니다.
작성자: Angelo Jacobo
날짜: 2021년 8월 12일
src 폴더 내부 파일:
- sdram_controller.v -> 동기식 동적 RAM(Synchronous Dynamic RAM) 컨트롤러입니다. 사양은 아래에 제시되어 있습니다.
- comprehensive_tb.v -> SDRAM의 모든 $2^{24}$ 주소에 쓰기 작업을 수행한 후, 이 데이터를 모두 읽어와 테스트하는 sdram 컨트롤러 테스트 파일입니다.
- key[0]는 모든 $2^{24}$ 주소에 결정론적(deterministic) 데이터를 씁니다.
- key[1]은 모든 주소에서 데이터를 읽어와 데이터가 미리 정해진 패턴을 따르는지 확인합니다.
- key[2]는 key[0]과 함께 눌릴 때 10240개의 오류를 주입합니다.
- 읽은 오류 개수는 세븐-세그먼트 LED에 표시됩니다.
- bin2bcd.v -> error_q 값을 세븐-세그먼트 LED로 표시하기 위한 이진수(binary) 대 BCD 변환기입니다.
- LED_mux.v -> 세븐-세그먼트 LED용 LED 멀티플렉싱 모듈입니다.
- comprehensive_tb.ucf -> comprehensive_tb.v의 제약 조건 파일입니다.
UML 차트 [SDRAM 컨트롤러 시퀀스]:

UML 차트 [테스트 시퀀스]:

개요:
이 프로젝트는 AX309 FPGA 개발 보드에 장착된 SDRAM(즉, Winbond W9825G6KH SDRAM)을 위한 컨트롤러를 구현했습니다.
컨트롤러의 사양은 다음과 같습니다:
- 메모리 대역폭은 316MB/s입니다 (Chipscope의 index_q 레지스터 값을 통해 확인할 수 있습니다)
- 버스트 모드는 "Full page"입니다 (즉, 읽기 및 쓰기 시마다 512 워드의 버스트가 발생합니다)
- 클럭 입력은 165MHz여야 합니다
- 자동 사전 충전(Auto-precharged) 기능은 비활성화되어야 합니다 (165MHz 클럭에는 불법입니다)
- 클럭 지연 시간(Clock latency)은 3이어야 합니다 (165MHz 클럭에는 CL=2가 불법입니다)
- 모든 은행(banks)은 리프레시(refresh)마다 닫힙니다 (간단히 말해 인터리빙(interleaving)이 없습니다)
- 파라미터는 sdram_controller.v에서 모든 종류/브랜드의 sdram 장치에 맞게 설정할 수 있습니다.
기부
이 오픈 소스 프로젝트들을 후원하려면 기부해 주세요.
문의처
제 LinkedIn에서 저와 연결하세요: https://www.linkedin.com/in/angelo-jacobo/
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기