오픈소스 FPGA 개발에 관심은 있지만 수십만 원짜리 정식 개발 보드를 사기가 부담스러웠다면, 컬러라이트(Colorlight) 5A-75B는 한 번쯤 눈여겨볼 만한 선택지다. 원래 이 보드는 개발용으로 만들어진 물건이 아니다. 모듈형 LED 디스플레이 규격의 일부인 이른바 '리시버 카드'로, 영상을 내보내는 컴퓨터와 실제 LED 패널 사이에 놓여 영상 신호를 받아 RGB 패널을 구동하는 역할을 한다. 그런데 이 평범한 산업용 부품이 하드웨어 해커들의 손을 거치면서 20~25달러 수준의 저렴한 FPGA 실험 보드로 재발견됐다.
우연히 만들어진 좋은 균형
리시버 카드가 하는 일은 단순해 보이지만 상당한 대역폭을 요구한다. 그래서 이 보드에는 래티스(Lattice) ECP5 계열의 LFE5U25-F FPGA가 올라가 있고, 기가비트 이더넷 인터페이스가 두 개나 붙어 있다. 여기에 임시 저장용 16Mbit SDRAM과 비트스트림 저장용으로 같은 용량의 플래시 메모리, 그리고 HUB75 규격의 잘 알려진 핀아웃을 가진 출력 포트 8개와 5V 출력이 들어 있다. 원문 필자인 크리스 라소츠키(Chris Lasocki)는 이 구성이 결과적으로 '기능이 풍부한 것'과 'IO가 풍부한 것' 사이의 좋은 타협점이 됐다고 평가한다. 온보드 주변장치는 0.1인치 핀 헤더로는 연결하기 어려운 기본적이거나 고속인 부품들로 한정돼 있는데, 특히 이 가격대에서 듀얼 기가비트 이더넷을 갖춘 개발 보드는 이것이 거의 유일하다.
이 보드가 실험 도구로 쓸 만해진 결정적인 배경은 리버스 엔지니어링이다. q3k를 비롯한 여러 사람이 보드를 완전히 해석해 핀아웃이 담긴 회로도와 각종 문서를 공개했다. 정식 개발 보드가 아닌 산업 부품을 다룰 때 가장 큰 장벽이 '내부 구조를 모른다'는 점인데, 이 작업 덕분에 어떤 신호가 어느 핀에 연결돼 있는지를 알고 코드를 짤 수 있게 됐다. 오픈소스 하드웨어 문화가 어떻게 저렴한 부품을 개발 플랫폼으로 되살리는지 보여주는 사례이기도 하다.
Yosys 툴체인과의 결합
실무적으로 흥미로운 지점은 ECP5가 오픈소스 툴체인 Yosys에서 완전히 지원된다는 것이다. Verilog 컴파일부터 배치·배선(place and route) 엔진, 비트스트림 생성기까지 전 과정을 오픈소스 소프트웨어로 처리할 수 있다. 보드에는 온보드 JTAG 포트가 있어 4핀 헤더만 납땜하면 비트스트림을 올릴 수 있고, 버스 파이럿(Bus Pirate) 같은 오픈소스 JTAG 어댑터만 있으면 코드를 내려보내 곧바로 동작을 확인할 수 있다. FPGA에는 25MHz 클럭이 들어오고 온보드 LED 하나와 버튼 하나가 달려 있어, Verilog로 작성하는 첫 'Hello, world' 격인 LED 깜빡이기 프로젝트를 하기에 부족함이 없다. HUB75 헤더로 빠져나온 사용자 접근 가능한 IO도 넉넉한 편이다.
입력이 막혀 있다는 한계
다만 이 보드는 이름 그대로 'LED를 구동하는' 목적으로 설계됐기 때문에 기본 상태로는 입력이 없다는 점을 반드시 이해하고 접근해야 한다. 출력 드라이버로 74HC245가 쓰여 신호가 한 방향으로만 흐르기 때문이다. 이를 해결하려면 핀 호환되는 양방향 레벨 시프터로 교체해야 하는데, 원문은 SN74CBT3245A가 기존 출력 드라이버를 대체해 3.3V 양방향 IO를 제공할 수 있다고 소개한다. 그 외에도 시프터 자리를 배선으로 대체하는 작은 PCB를 제작하거나, 출력 드라이버의 방향 제어 핀을 IO 핀에 연결하는 방법도 있다. 어느 쪽이든 납땜과 부품 교체를 감수해야 하므로, 완전한 무납땜 개발을 기대하는 사람에게는 진입 장벽이 될 수 있다.
정리하면 5A-75B는 오픈소스 FPGA 개발을 큰돈 들이지 않고 처음 경험해 보려는 사람에게 적합한 보드다. 온보드 주변장치만으로도 툴체인에 익숙해지는 첫 프로젝트를 진행하기에 충분하고, 기가비트 이더넷과 SDRAM은 이후 좀 더 복잡한 프로젝트에서 요긴하게 쓰일 여지가 있다. 반대로 다양한 센서 입력이나 즉시 쓸 수 있는 확장성을 우선한다면, 입력 개조에 드는 수고를 감안해 정식 개발 보드와 저울질해 보는 편이 낫다. 원문 필자는 다음 글에서 이 보드의 온보드 LED를 깜빡이는 Verilog 프로젝트를 작성·컴파일·업로드하는 과정을 다루겠다고 예고했다.