이 게스트 포스팅은 Chris Lasocki가 작성한 두 부분 시리즈의 첫 번째 글입니다. Part 2는 여기에서 이용 가능합니다.
어쩌다 보니 일반적인 LED 디스플레이 부품이 저가형 FPGA 개발 보드가 되었습니다. 문제가 되는 보드는 Colorlight 5A-75B라는 소위 수신 카드입니다. Yosys의 지원을 받는 Lattice ECP5 FPGA를 특징으로 하며, 완전히 오픈 소스인 FPGA 개발 툴체인을 활용할 수 있게 해줍니다. 평균 가격이 20~25 USD로 책정되어 있어 매우 접근성이 좋은 보드입니다.
Colorlight 5A-75B는 원래 모듈식 LED 디스플레이의 일부였습니다. 이는 수신 카드라는 의미로, 쇼를 제어하는 컴퓨터와 실제 LED 패널 사이에 위치합니다. 이 카드는 비디오 신호를 수신하고 그에 맞춰 RGB 패널을 구동한다는 기본적이지만 매우 중요한 임무를 수행합니다. 이 과정은 많은 대역폭을 요구하므로, 적당히 빠른 ECP5 LFE5U25-F FPGA와 두 개의 Gigabit Ethernet 인터페이스가 장착되어 있습니다. 또한 임시 저장을 위한 16Mbit SDRAM과 비트스트림 저장을 위한 동일 용량의 플래시 메모리도 갖추고 있습니다. 알려진 핀아웃(HUB75)을 가진 8개의 출력 포트와 5V 출력을 특징으로 합니다. 이 보드는 하드웨어 해커들의 관심을 끌었고, 곧 q3k 등에게 의해 완전히 리버스 엔지니어링되었습니다. 핀아웃이 포함된 회로도와 다른 문서들이 이용 가능합니다. 여기서 많은 작업이 이루어졌으며, 이것이 Colorlight 보드가 해커 정신으로 사용될 수 있게 하는 원동력입니다.
우연히 이 보드 설계는 기능이 풍부하면서도 I/O가 풍부한 것 사이에서 훌륭한 타협점을 찾았습니다. 온보드 주변 장치는 기본적인 것 또는 고속의 것들로만 구성되어 있어, 0.1인치 핀 헤더를 통해 연결하기 어려울 수 있습니다. 또한 이 가격대에서 듀얼 Gigabit Ethernet 인터페이스를 가진 유일한 개발 보드이기도 합니다. 단지 FPGA이기 때문에, 16MBit SDRAM은 대부분의 애플리케이션에 충분해야 하며 컨트롤러 구현도 용이합니다.
# 보드를 해킹하기
온보드 JTAG 포트를 사용하면 4핀 헤더에 납땜하기만 하면 ECP5 FPGA에 자체 비트스트림을 업로드할 준비가 됩니다. 이 FPGA는 verilog 컴파일러부터 배치 및 라우팅 엔진, 그리고 비트스트림 생성기에 이르기까지 Yosys 툴체인(toolchain)에서 완벽하게 지원되며, Bus Pirate와 같은 오픈 소스 JTAG 어댑터(adapter)나 다른 장치를 사용하면 비트스트림을 전송하고 코드가 실행되는 것을 보는 데 단 몇 분밖에 걸리지 않습니다. HUB75 헤더에는 사용자 접근이 가능한 입출력(IO)이 많이 노출되어 있습니다.
이 FPGA는 25MHz 클럭이 공급되며, 온보드 LED와 버튼도 갖추고 있어 Verilog "Hello, world!" 프로젝트(LED 깜빡이기 등)를 수행하기에 충분합니다.
이 보드의 유일한 단점은 기본적으로 입력 장치가 부족하다는 것입니다. 74HC245 출력 드라이버(output drivers)를 양방향 레벨 시프터(bidirectional level shifters)로 교체해야 합니다. 하지만 3v3 양방향 IO를 제공하는 핀 호환 레벨 시프터 IC인 SN74CBT3245A가 기본 출력 드라이버를 대체할 수 있습니다. 다른 옵션으로는 시프터를 와이어로 대체하는 작은 PCB를 제작하거나, 출력 드라이버의 방향 핀(direction pin)을 IO 핀에 연결하는 것도 가능합니다.
요약 (Summary)
Colorlight 5A-75B는 오픈 소스 FPGA 프로그래밍을 시도하고 싶지만 클래식 개발 보드에 많은 돈을 쓰고 싶지 않은 사람들에게 좋은 선택입니다. 온보드 주변 장치만으로도 툴체인(toolchain)에 익숙해지는 첫 프로젝트를 수행하기에 충분합니다. 기가비트 이더넷(Gigabit Ethernet)과 SDRAM은 향후 더 진보된 프로젝트에서 유용할 수 있습니다.
다음 게시물에서는 5A-75B 보드의 온보드 LED를 깜빡이는 Verilog 프로젝트를 작성하고, 컴파일하며, 업로드하는 방법을 설명하겠습니다.
저자 소개 (About the author)
Chris “polprog” Lasocki (@polprogpl)는 오랜 전자 해커이자 지망생 물리학자입니다. FPGA는 그의 취미 중 하나이며 현재 이 분야에 대한 논문을 작성하고 있습니다. 다른 관심사로는 레이저 물리 및 임베디드 프로그래밍 프로젝트가 포함됩니다. 그는 polprog.net에서 블로그를 운영합니다.