https://eater.net/6502
Ben Eater 의 튜토리얼 영상은 전자회로 중에서 디지틀,밑바닥부터만드는빵판컴퓨터클리앙 또 그 중에서도 피씨의 기반기술을 이해할 수 있도록 의도되었는데
저 같은 비전공 문외한들도 쉽게 따라할 수 있도록 만들어진 덕에 유튜브에서 굉장한 조회수를 기록하고 있습니다.
벤의 홈페이지에 기본적인 키트를 구성해서 판매하고 있으므로 그걸 사서 공부해 보는 것도 괜찮구요.
여의치 않으면 구성품 목록과 영상을 확인해서 하나하나 부품을 모아도 괜찮습니다.
저는 마우저에서 CPU 와 VIA, SRAM 칩등 주요부품을 구입하고 나머지는 국내 부품사이트와 중국에서 구했어요.
EEPROM 은 품귀현상이라 마우저에 재고가 없어 중국에서 구했는데 아무래도 위품 같지만 작동은 잘 합니다.
다만 흔히들 빵판이라 부르는 Breadboard 는 중국산 저가품은 피하고 벤이 추천하는 BB830 과 동등품이나
혹은 더 고급제품을 구하는 걸 권합니다. 만듦새 차이뿐 아니라 알 수 없는 오류로 고생하게 될 가능성이 높아요.
먼저 완성한 건 555 타이머를 이용한 클럭보드입니다.
메인보드에 클럭을 공급하는 역할을 하는데, 가변저항을 이용해서 속도를 조절할 수도 있고,
똑딱이 버튼을 눌러서 한 스텝씩 진행할 수도 있습니다.
빨리 만드는 게 중요한 게 아니고 이해하는게 중요한거라 저는 이 지점에서 디지틀 회로 기초를 공부하는데 많은 시간을 썼습니다.
CPU 를 보드에 앉히고 기본적인 신호를 연결합니다.
8번은 파워서플라이 +5V,
21번은 접지 0V,
2번은 레디 +5V,
4번은 인터럽트, 0 에서 신호발생하므로 일단 +5V,
6번은 NMIB, 역시 인터럽트가 발생하므로 일단 +5V,
36번 버스 인에이블 +5V,
37번은 클럭 신호 연결,
38번은 세트 오버플로우 +5V,
40번은 리셋 1KΩ 풀업저항 +5V, 택트 스위치 연결.
6502 는 다들 아시겠지만, Apple II 나 코모도어 C64 등과 같이 대중적으로 히트한 8비트 컴퓨터나
닌텐도의 패미컴, NEC 의 피씨엔진 등 콘솔에 들어간 CPU 로 간단한 구조와 동작이라 취미인의 학습용으로 적합합니다.
CPU 에 클럭을 공급하고, 아두이노 메가로 모니터링을 해서 부트 프로세스를 확인합니다.
빵판에 6502 와 기타등등 칩들을 배치했습니다.
가장 기본적인 건 전원 공급입니다. 논리게이트 3개는 7번이 접지고 14번이 전원입니다.
VIA 는 1번이 접지고, 20번이 전원입니다. 그리고 34번을 리셋 스위치에 함께 연결했습니다.
EEPROM 과 SRAM 은 14번이 접지고 28번이 전원이며, 롬 27번 WE Bar 는 5V 로 고정합니다.
그리고 EEPROM 은 계속 쓰고 변경하게 되므로 소켓을 구해서 꽂았어요.
벤의 튜토리얼을 충분히 이해한 상태로 AND 게이트 2개를 추가했습니다.
오리지널 설계는 32KB 램에서 절반만 사용하고 나머지는 버리는데 이 논리칩 2개로 상당부분을 가용상태로 전환하게 됩니다.
16비트 주소선에서 0111,1111,11xx,xxxx 면 $7FC0 에서 $7FFF 까지가 되므로
A15 는 0 으로, A6 ~ A14 는 1 모두 1이어야 되므로 AND 로 묶으면 됩니다.
CPU 와 VIA 칩의 연결은 다음과 같습니다.
CPU 의 34번 R/W Bar 와 37번 PHI2 를 각각 VIA 칩의 22번 R/W Bar 와 25번 PHI2 에 연결합니다.
65C02 의 A0 에서 A3 를 65C22 의 RS0 에서 RS3 에 연결해서 입출력 포트를 제어합니다.
A15 는 VIA 23번 CS2 Bar 로, A6 ~ A14 까지 AND 출력은 24번 CS1 으로 연결합니다.
CPU 의 D0 에서 D7 을 VIA 의 D0 에서 D7 까지 연결합니다.
CPU 와 SRAM 의 연결은 다음과 같습니다.
CPU 34번 R/W Bar 신호를 SRAM 27번 WE Bar 에 연결합니다.
A15 의 반전신호를 CLK 와 NAND 연산해서 SRAM 20번 CE Bar 로 연결합니다.
A6 에서 A14 까지의 AND 연산은 반전없이 22번 OE Bar 로 연결합니다.
A0 ~ A14 까지의 어드레스 신호와 D0 ~ D7 까지의 데이터 신호를 각각 연결합니다.
CPU 와 EEPROM 의 연결은 다음과 같습니다.
CPU A15 의 반전신호를 EEPROM 20번 CE Bar 로 연결합니다.
CPU 의 34번 R/W Bar 의 반전신호를 EEPROM 22번 OE Bar 로 연결합니다.
A0 ~ A14 까지의 어드레스 신호와 D0 ~ D7 까지의 데이터 신호를 각각 연결합니다.
데이터와 어드레스 버스는 가장 나중에 덮었습니다.
다른 것들처럼 라인을 딱 맞게 재단하고 직각으로 꺾어서 배선을 하다가 물리적 공간이 안나와서 포기했어요.
2 Line 혹은 4 Line 짜리 LCD 의 연결입니다.
모두 16개의 핀이 있고 제일 좌측 VSS 는 접지, VDD 는 5V 전원연결입니다.
우측 끝의 A 에 5V, K 에 접지를 연결합니다.
V0 는 화면 컨트라스트입니다. 10K 가변저항으로 접지에 연결합니다.
6522 VIA 칩을 통해 LCD 와 통신할 거에요.
PB0 ~ PB7 까지의 데이터 라인을 LCD 의 D0 ~ D7 으로 연결합니다.
남은 건 RS, RW, E 핀으로 VIA 칩의 PA 라인에 연결하는데,
벤의 영상을 따라 PA5 ~ PA7 까지에 순서대로 배선합니다.
LED 인디케이터.
좌측의 16비트는 주소, 우측의 8비트는 데이터, 가운데 1비트는 R/W 시그널입니다.
여기까지 진행하고 테스트한 영상입니다.
6502 CPU 는 전원인가되고 리셋신호가 들어간 후 7스텝째에 $FFFC 에서 한 바이트, $FFFD 에서 또 한 바이트를 읽어
그 주소로 점프합니다. 영상에서는 롬영역의 시작인 $8000 으로 뛰는 걸 확인할 수 있습니다.
헬로월드를 다 찍은 후엔 무한루프를 도는데 잠깐 클럭보드를 수동으로 다시 전환해서 확인하고 영상 종료하게 됩니다.