정보통신 ·
CPU도 메모리도 없이 4000개 게이트로 VGA 데모 구현...극한의 제약 속 창의성
개발자 a1k0n, Tiny Tapeout 8 대회서 논리 게이트만으로 그래픽 렌더링 성공
[한국정보기술신문] CPU와 메모리 없이 오직 4000개의 논리 게이트만으로 VGA 그래픽 데모를 구현하는 극한의 도전이 성공을 거뒀다. 개발자 a1k0n은 Tiny Tapeout 8 데모 대회에 세 가지 ASIC 디자인을 제출했으며, 이 중 TT08 인트로와 나얀캣 데모가 실제 칩으로 제작돼 정상 작동을 확인했다.
Tiny Tapeout은 소규모 ASIC 디자인을 제작할 수 있는 플랫폼으로, 참가자들은 약 4000개의 논리 게이트를 사용해 2비트 RGB VGA 출력과 1비트 오디오를 구현해야 한다. a1k0n은 이 제한된 환경에서 별이 움직이는 배경, 3D 체커보드 패턴, 물결치는 스크롤 텍스트와 그림자 효과를 모두 구현하는 데 성공했다.
데이터 저장 없이 실시간 생성
일반적인 그래픽 렌더링과 달리 이 프로젝트는 ROM도 RAM도 사용할 수 없었다. 모든 상태는 플립플롭으로 구현해야 했으며, 플립플롭은 조합 논리에 비해 상당한 공간을 차지한다. 전통적인 사이즈코딩 기법도 적용할 수 없었다. 데이터 압축은 ROM을 저장할 수 없다면 의미가 없고, 프레임 버퍼도 없어 매 클럭마다 픽셀을 생성해야 했다.
대신 a1k0n은 알고리즘 복잡도를 최소화하는 방식을 택했다. 사인파 스크롤러를 구현하기 위해 룩업 테이블 대신 HAKMEM 149에 설명된 심플렉틱 적분기를 사용해 벡터를 회전시켰다. 이는 간단한 시프트와 덧셈 연산만으로 완벽한 원을 생성한다.
체커보드 평면은 화면 좌표를 원근 변환하여 구현했다. 각 스캔라인의 16클럭 전에 비복원 나눗셈 알고리즘을 실행해 필요한 스케일 값을 계산했다. 별 배경은 LFSR을 사용해 스캔라인마다 일정한 난수 시퀀스를 생성했다.
음악도 게이트로 구현
음악 합성도 동일한 제약 속에서 구현됐다. a1k0n은 노이즈 채널과 지수 엔벨로프를 가진 스네어, 두 음 아르페지오를 사용하는 펄스파, 지수적으로 감소하는 피치를 가진 삼각파 킥드럼 등 세 개의 채널을 구현했다.
음악 데이터는 ABAC 패턴으로 구조화했다. 이는 논리 게이트 기반 인코딩에 유리한 구조다. 측정 비트 0이 0일 때 패턴 A를 사용하는 식으로 로직이 구성되며, B는 A의 변형이므로 중복성을 많이 찾을 수 있다. 최종적으로 C, D, D#, E, F#, G#, A#, B 등 8개 음계만 사용해 전력 2 크기의 테이블로 구현했다.
오디오 출력은 PWM 대신 시그마-델타 변환을 사용했다. 이는 더 단순하지만 Tiny Tapeout 칩의 상승 및 하강 엣지 속도 차이로 인해 약간의 고조파 왜곡이 발생한다는 트레이드오프가 있었다.
Skywater 130nm 공정으로 제작
설계는 Skywater 130nm 공정으로 하드닝됐다. 최종 디자인은 3374개의 셀을 사용했으며, 293개의 플립플롭을 포함해 거의 모든 가용 영역을 채웠다. 플립플롭은 상대적으로 크기 때문에 상태 비트를 최소화하는 것이 필수적이었다.
Tiny Tapeout은 GitHub 액션을 통해 Verilog 디자인을 GDS 파일로 변환하는 워크플로를 제공한다. 하지만 a1k0n은 로컬 하드닝 도구를 사용해 여러 실험을 진행했다. 셀 수가 너무 많거나 라우팅이 실패하는 경우가 빈번했기 때문이다.
우여곡절 끝에 성공
2024년 9월 Tiny Tapeout 8이 제조를 시작했지만, 2025년 3월 Efabless가 갑자기 폐업하면서 TT08과 TT09 칩의 운명이 불투명해졌다. 하지만 2025년 9월, 칩들이 새로운 회사에 인수돼 Tiny Tapeout 팀에 전달됐고, a1k0n은 자신의 디자인이 완벽하게 작동하는 것을 확인할 수 있었다.
나얀캣 데모는 원본 애니메이션 GIF에서 프레임을 추출하고, MIDI 파일에서 음악을 파싱하여 구현됐다. 이 디자인은 한 타일에 맞출 수 있었지만 상세 라우팅이 실패해 최종적으로 두 타일로 확장됐다. 여유 공간에는 선글라스 이스터에그가 추가됐다.
a1k0n은 회고에서 오디오 클럭을 비디오와 독립적으로 설정한 것과 1220x480 비디오 모드를 선택한 것을 후회했다고 밝혔다. 음악 동기화 효과에서 티어링이 발생했고, LCD에서는 디더링과 앨리어싱 아티팩트가 눈에 띄었기 때문이다. 나얀캣 데모에서는 이러한 문제를 개선해 640x480 모드와 비디오 동기화된 오디오를 사용했다.
이 프로젝트는 극도로 제한된 하드웨어 환경에서도 창의적인 알고리즘과 최적화를 통해 복잡한 그래픽과 음악을 구현할 수 있음을 보여준다. a1k0n은 다음 데모에서 더 나은 기법을 적용할 계획이라고 밝혔다.
한국정보기술신문 정보기술분과 유상헌 기자 news@kitpa.org