순수 실리콘 데모 코딩: CPU도 메모리도 없이 4천 게이트만으로 구현
(a1k0n.net)- Tiny Tapeout 8 데모 대회에서 약 4천개의 논리 게이트만으로 VGA 그래픽과 1비트 오디오를 출력하는 두 가지 ASIC 데모를 제작
- 첫 번째 작품은 3D 체커보드, 별 배경, 스크롤 텍스트, 음악을 포함한 전통적 데모씬 스타일의 인트로로, CPU·RAM 없이 순수 상태기계로 구현
- 두 번째는 Nyan Cat 애니메이션으로, 640x480 VGA와 비디오 동기화된 오디오를 사용해 한 타일 내에 거의 모든 회로를 집적
- 모든 시각·음향 효과는 Verilog 기반 논리 회로로 직접 생성되며, 삼각파·펄스파 합성기, LFSR 노이즈, 시그마-델타 DAC 등 최소 자원으로 음악을 재현
- Efabless의 파산으로 제조가 중단되었으나, 이후 칩이 복구되어 실제 하드웨어에서 완벽히 동작함이 확인됨
TT08 인트로 데모
- 배경 별 필드, 3D 체커보드, 파도치는 스크롤 텍스트와 그림자 효과를 포함한 그래픽 구성
- VGA 해상도 1220x480, 48MHz 클럭 사용
- Verilator 시뮬레이션으로 C++ 변환 후 SDL 창에 렌더링하여 영상 생성
-
플립플롭 293개, 총 3374 셀 사용으로 면적 한계에 근접
- 폰트 인코딩이 게이트 면적을 많이 차지해 색상값은 포기하고 대각선 스트라이프 패턴으로 대체
-
ROM 없이 데이터 인코딩을 위해 논리 게이트로 직접 패턴을 표현
- Yosys 합성 파이프라인이 truth table을 표준 셀로 변환
- 데이터 복잡도보다 주소에 따른 알고리듬적 단순성이 면적 절감에 유리
-
사인파 스크롤러는 테이블 없이 벡터 회전으로 구현
- Minsky의 symplectic integrator 방식으로 원형 궤적 생성
-
체커보드 평면 투영은 고정소수점 연산으로 구현
-
recip16모듈이 y좌표의 역수를 계산해 원근 변환 수행 - XOR 연산으로 색상 패턴 생성, 드럼 비트에 맞춰 평면 높이 변화
-
그래픽 세부 요소
- 그림자 효과는 스크롤 텍스트를 평면 좌표계로 투영해 색상 비트를 쉬프트
-
별 배경(Starfield) 은 LFSR로 각 스캔라인별 난수 생성
- 프레임 카운터와 결합해 별의 위치·속도 결정, 스네어 드럼 타이밍에 맞춰 꼬리 길이 변화
음악 합성
- ABACABAD 구조의 반복 패턴으로 논리 게이트 중복 최소화
-
세 개의 채널 구성
- 노이즈+지수 감쇠(스네어)
- 사각파 아르페지오(멜로디/코드)
- 삼각파+지수 감쇠(킥/베이스)
-
시그마-델타 DAC으로 오디오 출력
- PWM 대신 누산기 캐리 비트를 출력해 단순 구현
-
Crooner (C64 SID) 곡의 코드 진행을 차용
- 8음계 기반, 2옥타브 범위, 비트 단위 아르페지오
- 템포를 15·25틱으로 교차해 스윙 리듬 구현
회고
- 오디오와 비디오 클럭을 분리한 설계로 음악-영상 싱크 불일치 발생
- 1220x480 비표준 해상도 선택으로 LCD 표시 품질 저하
- CRT에서는 자연스러운 디더링 효과가 있으나 디지털 캡처에서는 왜곡 발생
Nyan Cat 데모
-
Tiny Tapeout 8 마감 직전 제작, 640x480 VGA와 60Hz 동기 오디오 사용
- 원본 GIF에서 프레임·팔레트를 추출해 RGB222로 디더링 변환
- LFSR 기반 별 배경 재사용
-
음악 데이터는 MIDI 파일을 파싱해 8음계로 리맵
- 베이스/킥 채널과 멜로디 채널 두 개만 사용
- 각 프레임 시작 시(60Hz) 지수 감쇠 엔벨로프 적용
-
25% 듀티 사이클 펄스파로 멜로디 생성
- 옥타브별 상위 비트를 선택해 주파수 조정
- 저역 통과 필터 추가로 음색 조정
제조 및 결과
- Tiny Tapeout 8은 2024년 9월 제조 착수 후 Efabless 파산으로 중단
- 2025년 하반기 새 운영팀이 칩을 회수해 배포
- 실제 칩 테스트에서 모든 디자인이 정상 동작
- Donut 데모만 클럭을 45MHz로 낮춰야 안정적
-
Nyan Cat 데모는 LCD와 CRT 모두에서 완벽히 재생
- Bitluni의 유튜브 라이브에서 시연됨
마무리
- 1년 이상 기다린 끝에 실제 실리콘에서 완벽히 구동되는 데모 확인
- Tiny Tapeout 환경에서 CPU·RAM 없이 순수 논리 회로로 시각·음향 효과를 구현한 사례
- 향후 더 발전된 저레벨 하드웨어 데모 기법 개발 계획 언급
Hacker News 의견들
-
컴퓨터공학 전공이지만 컴퓨터엔지니어링에도 관심이 있어서, 이런 레트로 렌더링 아키텍처를 직접 만들어보고 테이프아웃까지 해보고 싶음
단순하지만 정말 재미있는 구조라서 이런 프로젝트가 너무 마음에 듦- 작성자처럼 시뮬레이션부터 시작해서 FPGA로 넘어가는 방식을 추천함
FPGA만으로도 꽤 멀리 갈 수 있음. 직접 SoC를 설계할 수 있다는 게 항상 짜릿함
예를 들어 “I2C 포트가 9개 필요하네?” 하면 그냥 블록 복사해서 붙이면 됨.
소프트웨어에서 느린 연산이 있으면 하드웨어 가속기를 직접 만들 수도 있음 - 인터넷이 이런 소규모 관심 커뮤니티를 연결해주는 게 놀라움
모두가 연결되면서 문화가 획일화되는 면도 있지만, 전 세계 몇십 명이 이런 멋진 대회를 위해 모일 수 있다는 게 대단함
- 작성자처럼 시뮬레이션부터 시작해서 FPGA로 넘어가는 방식을 추천함
-
그리드가 킥드럼에 맞춰 맥동하는 연출이 마음에 듦. 세심한 터치가 좋음
-
인용된 HAKMEM sin/cos 생성기의 장기 안정성이 궁금해서 찾아봤음
관련 개요는 이곳에 있음
(정확한 산술 조건하에서는 안정적이라고 함)
우연히도 지난주에 올린 Verlet integration 영상과도 관련이 있음- 특정 조건에서는 정확하게 동작함. 같은 수학적 트릭을 쓰는 셈임
나도 그 영상을 유튜브 추천으로 봤는데 꽤 즐거웠음
- 특정 조건에서는 정확하게 동작함. 같은 수학적 트릭을 쓰는 셈임
-
대학 시절이 떠오름 — “하드웨어와 소프트웨어는 논리적으로 동등하다”는 말이 생각남
- 하드웨어 작성은 소프트웨어 작성과 비슷하지만, 병렬성은 훨씬 싸고 실수는 훨씬 비쌈
-
정말 인상적인 작업임. 예전에 JS demoscene, 특히 dwitter를 자주 했는데 이건 완전히 다른 수준임
이 댓글 덕분에 확인해보니 TinyTapeout이 다시 살아났다는 걸 알게 됨 -
Tiny Tapeout으로 FPAA를 만들어보고 싶지만, 할당된 영역에 맞지 않을 것 같음
- TT에서는 추가 비용을 내면 멀티 블록 디자인도 가능함
-
“No x, no y, just z” 같은 패턴이 ChatGPT에서 자주 쓰이다 보니, 이제는 일반 사용자들까지 쓰기 시작한 듯함
- 언어는 유동적임. LLM의 부정적인 면도 많지만, 이런 언어적 변화는 무해하다고 생각함
- 사실 나도 초등학교 때 반장 선거 구호로 “no x, no y, just z” 같은 문구를 썼던 기억이 있음
- 어쩌면 ChatGPT가 오히려 일반 사용자의 표현을 학습한 것일 수도 있음
-
예전에 직업학교에서 핀볼 머신을 수리하던 시절이 떠오름. 좋은 추억임
-
정말 멋짐!
-
현재 Open Shuttle을 보니, 프로젝트에서 4KB SRAM 라이선스를 쓰려면 $2500이 필요함
대신 Wishbone Bus 인터페이스가 포함되어 있음1024x32 Commercial SRAM
CF_SRAM_1024x32
Commercial SRAM: 1024 words x 32 bits (4KB) with Wishbone Bus interface
Area: 0.17mm²
License: Commercial - $2500 per project