2P by GN⁺ 18일전 | ★ favorite | 댓글 1개
  • 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개 필요하네?” 하면 그냥 블록 복사해서 붙이면 됨.
      소프트웨어에서 느린 연산이 있으면 하드웨어 가속기를 직접 만들 수도 있음
    • 인터넷이 이런 소규모 관심 커뮤니티를 연결해주는 게 놀라움
      모두가 연결되면서 문화가 획일화되는 면도 있지만, 전 세계 몇십 명이 이런 멋진 대회를 위해 모일 수 있다는 게 대단함
  • 그리드가 킥드럼에 맞춰 맥동하는 연출이 마음에 듦. 세심한 터치가 좋음

  • 인용된 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