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 으로 뛰는 걸 확인할 수 있습니다.
헬로월드를 다 찍은 후엔 무한루프를 도는데 잠깐 클럭보드를 수동으로 다시 전환해서 확인하고 영상 종료하게 됩니다.
지금 기준으로도 그러니, 그때로 보면 더. ^_^
이런거 어떻습니까? 저도 마이컴, 마이크로소프트 잡지를 보던 세대인데, 세상이 많이 변했더군요.
(링크는 일본 잡지 번안판매이긴 한데, 그 내용은 나무랄데 없어 주위에 추천 중 입니다)
링크 글은 참 깔끔하게 정리를 잘 하신것 같습니다.
닌텐도 패미컴(북미판명 NES) 에 들어간 리코의 2A03 은 저작권 문제를 피하기 위해
의도적으로 10진 명령어를 처리하는 부분의 회로를 끊었다는 걸 제외하면 6502 와 같습니다.
6502 에뮬레이션은 말씀처럼 수없이 많은 언어와 하드웨어로 끝없이 만들어지고 있습니다만,
직접 내용을 이해하고 설계한 다음 구현할 수 있는 능력은 참 부럽습니다.
언젠가 남은 부분을 이어나가서 목표지점에 도달하실 수 있길 바래요.
구현하는 일은 10년전만해도 자료 구하는게 쉽지 않아서 엄두 내기 힘들었을 일인데 요즘은 공개된 자료가 많아서 덕분에 약간이나마 이해해서 진행 할 수 있었습니다.
NES PPU는 한정된 자원으로 그래픽을 뽑아내기 위해서 복잡한 로직으로 구동되는데 처음에 에뮬레이션 한 사람들이 대단해보이더라구요. 저도 단순 복제라도 완성해서 공개적으로 지식을 공유할 수 있으면 좋겠습니다.
칩에 회로는 그대로 남아있는데 그냥 중간을 끊어서 작동만 안하게 만들어 놨어요. ^^
NES 에뮬레이터도 정말 끝없이 새 구현이 공개되고 있지만, 본인이 직접 코딩을 한게 작동한다면 감동이 다를 것 같습니다.
꼭 성공하시길 바랍니다.
그건 그냥 옵션이고 해보고 싶어서 장식용으로 달아본 거에요.
예전 SF 영화보면 컴퓨터에 램프 반짝이는 게 꼭 달려있었잖아요. ^^
원래는 그 앞에 앞에, 아두이노 메가로 모니터링 하는 단계에서 다 확인하고 끝입니다.
음... 그렇게 보시면 안되고, 처음에 아무것도 없는 빵판에 주요부품부터 하나씩 배치해 나간데 포커스를
맞추시는 게 좋아요. 저는 거의 서너달 정도를 조금씩 진행했습니다. 부품 하나 주문하고 또 기다리고.
한 단계 넘어가면 또 이렇게 해볼까 하는 스스로의 수정사항이 생기고 머리속으로 계속 구상하다가
이렇게 배치하고 만들어야겠다라고 결심이 서는 순간 쭉 진행하는거죠.
그리고 목표에 도달하면 또 다음 목표가 생깁니다. 그땐 그 다음이 그렇게 어려워 보이질 않아요.
관심이 있으시다면 우선 벤 이터의 유튜브 영상부터 정주행 해보시길 권하고 싶습니다.
Ben Eater 의 튜토리얼은 밑바닥에서 CPU 를 구현하는데 부터 시작해서 점점 영역을 넓혀가는데,
행여 관심 있는 분들은 유튜브 영상 정주행하고 하나씩 따라해 보는게 순서구요.
본문은 그 과정에서 참고가 될만한 메모일 뿐입니다.
구판 6502 에 존재했던 비인가 명령어들이 제거되고 안정성이 개선된게 특징입니다.
사람들이 튜토리얼만 가지고 원시시대로 가면 8비트 컴퓨터를 완성활 때까지 몇년이 걸릴까요?
근데 그것까지 손대면 규모가 너무 커져서 기성품 CPU 를 이용한 프로젝트를 따라한건데 살짝 미련은 남아요.
CPU 는 FPGA 로 구현해보면 어떨까 하는 생각도 있습니다.
요즘 하드웨어나 오에스는 한 사람이 온전히 이해하기에 너무 커져버렸지요.
본문의 벤 이터도 그것부터 시작했고, 어떤 분들은 기성품 CPU 보다 더 빠른 자작 CPU 를 만들어 공개하기도 했습니다.
이제 와서 재현하는 건 비효율적일 듯 하지만, 나머지 컴퓨터의 기본요소는 건 비슷할 듯 합니다.
저기서 키보드 인터페이스 달고, VGA 회로 추가하고, 뭐 이런 식으로 확장해서 자기만의 컴퓨터로 만들어가는 거죠.
https://smartykit.io/products/smartykit-computer-construction-kit-late-2022
빵판으로 Apple I 을 만드는 프로젝트는 상업적으로 완성되어 있습니다.
작년에 299달러였는데, 지금 399달러로 가격을 올렸군요.
물론 지금은 C 로... 28pin 에서 44pin MCU 를 주로 다루네요. 현실적으로 업계에서 필요한 니드가 그수준 이기에..
몇년 전 아마추어 그룹에서 Z-80 에뮬에 SPC-1000 바이오스를 돌려... 82년도 즈음 삼성전기공업주식회사 ㅋ SW공모전에 출품 했던 저의 게임을 재현 하기도 하더군요. 감격스럽게...
브레드보드로 결선 테스트도 지금도 합니다만, 요즘엔 그냥 PCB 를 그리고 샘플제작 후 땜질 하는게 접촉 불량에 의한 시간소비를 줄인다 싶더군요. SMD 부품을 섞어 쓰기도 편한고요.
어쩌면 제가 기억할 수 있을지도 모르겠습니다.
본문의 프로젝트는 계속 혼자 생각하고 변경하고 실험하고 또 변경해나가는 과정이기 때문에
고수분들이 생각하는 만능기판 납땜결선으로 대체할 수 있는 게 아닌듯 합니다.
저 과정을 넘어서면 말씀처럼 만능기판 뜨개질이 기다리고 있고, 또 그 과정을 넘어서면 인쇄기판,
또 그 과정을 넘어서면 SMD 부품의 도입 등등으로 진화가 가능하겠지요.
빵판의 접촉불량 문제는 중국산 저가품의 범람이 원인일 가능성이 큽니다.
빵판 프로젝트가 어마어마한 규모로 확장이 되어도 제대로 된 제품이면 별문제 없이 잘 작동하는 것 같아요.
그래서 본문 프로젝트에서도 BB830 과 동등품 이상을 사용하라고 권장하고 있습니다.
최초에 TTL 을 끼우고 게이트를 실험하고 LED 로 스위치로 확인하고 하던 설레임이 오래전 기억 이지만 아직도 선 합니다. ㅎ
요즘엔 빵판을 활용하는 교율을 어떤 과정과 절차로 시키는지 모르겠으나 더욱 발전되었겠죠?
SPC-1000 은 80년데 초 출시 후 한번 가격이 인하되어 46만9천원 하던 것이 중고 거래로 21만원 정도에 구입 했네요. 82~3년도 즈음? 아쉽게도 VDG 가 구형 이였지요. 그래서 하이그래픽의 픽셀포지셔닝에 의한 컬러 구현이 신형과 좀 달랐죠.
신사동 에서 함깨 프로그래밍 하던 이재성이 Don Kingkong 으로 상을 받던 시절 즈음... 저는 Bosconian, Moon Patrol, Bridge Making 등을 만들었는데 그 모두 오락실 게임을 모방한 것입니다. 그때는 다 그랬거든요,. 함깨하던 친구는 Tutangkamen 을 만들었는데 이 역시 오락실 게임 아이디어를 가져다 사용한 것이죠. 돈킹콩도 마찬가지고요. ㅎ
지금은 삼성전자...가 로고를 세번쯤 바꾼 전전전 이름인 삼성전기공업주식회사 ㅋ 주최 공모전에서 당시 35% 정도의 세금을 떼고 공모전 입상 상금을 받았네요. 상금 10만원 이면 6만 몇천원... 30만원 이면 20만원 내외? ㅎ
그래도 SPC-1000 이 남긴 업적이 많고 당시엔 첨단이였던 사운드칩 AY-3-8910 으로 기억 합니다만 이 칩 덕분에 미디 수준의 맑은음을 넘어 다양한 사운드를 구사 할 수 있었죠. 이 칩은 아마... 제가 알기로는... 야마하 신디사이저에 3개가 동시에 박혀 설계됬다고 기억 합니다. DX7 이였나? ㅎ
8옥타브 3중화음이라고 당시에 선전을 많이 했었어요. Apple II 용 모킹보드에도 사용이 되었고...
저는 SPC-1000 이 제일 비쌀 때 아버지가 사주셨던 것 같아요. Apple II 를 갖고 싶었는데... ㅜㅜ
당시 집에 컴퓨터 한대 있으면 꽤 좋은 환경이었지만, SPC-1000 은 징글징글 애증의 추억뿐입니다.
MSX 처럼 게임이 좋았던 것도 아니고, 애플처럼 유틸리티나 코딩환경이 좋았던 것도 아니고.
마이크로소프트웨어나 컴퓨터학습 사서 넘길 때마다 다른 기종들이 부러웠어요.
SPC-1000 으로 해볼 수 있는 경험은 거의 한 것 같은데, 말씀하신 게임들은 기억이 잘 안나요.
당시에 그 정도 게임 개발이 가능했던 분들이 많지 않았기 때문에 잡지 같은데서 이름을 봤을 것 같은데
이재성님도 기억이 잘 안나네요. 하지만 모처럼 반갑습니다. ^^
Zilog 엔지니어들이 Z-80을 개발한 후 금성에게 라이센스 생산을 허가 하며 더욱 산업제어에 Z-80 이 많이 쓰였느데... 그렇게 표준화 되다 시피 개발된 PC 회로에 AY-3-8910 을 적용 했기에 당시 6502 계열 아닌 PC 는 대부분 이 사운드칩이 적용 되었죠.
일본이 MSX를 밀어붇이며 다양한 게임이 제작되어 나머지 컴들은 머 그냥 오징어가 됬나 싶네요 ㅎ
당시에 아무리 8비트 컴 이라지만, 케렉터 디자인, 스토리텔링, 게임 인트로, 기록정리, 결정적으로 게임 엔진에 해당하는 핵심 게임알고리즘... 등이 대부분 HuBASIC 으로 개발하곤 했는데 숨은 고수들이 많았고...잡지에 이름 알리는 분들 말고, 개성 넘치는 똑똑한 분들이 참 많았죠. 공모전이 거듭되며 Assembler 가 공급..Copy 되기 시작하며 asm 을 섞어 게임 컨트롤 스피드를 대폭 향상한 게임들이 그런 고수들이... ㅎ
빵판으로 명작을 만드셨는데 주제가 너무 딴데로 세버려 죄송하네요. 저또한 반가웠습니다~!^^
제대로 굽혀서 그을린 브레드보드를 보시거나 직접 경험하신 분들은 의문의 여지가 없을거에요. ^^
제 전화번호를 6502를 쓰고 있죠 ㅎ
CPU로 이용되는 칩은 웨스턴 디자인 센터에서 만든 8비트 마이크로프로세서,
그리고 65C22 VIA라는 칩은 다목적 인터페이스 어댑터, 입출력을 담당하고
어 그리고 특정 ROM 칩을 꽂을 수 있는 비휘발성 메모리 슬롯.
1MHz 표준 클럭 발진기, 클럭 동기화에 쓰이겠지요.
NAND 논리회로 칩은 어떤걸 쓰는지 잘 모르겠고,
AND 논리회로 칩은 텍사스 인스트루먼트 사의 칩인것 같은데, 자세한 모델은 모르겠습니다.
SRAM은 얼라이언스 메모리에서 만든 256KB SRAM.
음... PCB 인쇄기판이 아니라서 좀 어수선해보이지만, 점프선 처리는 깔끔하게 잘해주신 것 같아
저보다 훨씬 잘하시는듯 합니다. 전자기기기능사와 무선설비기능사를 예전에 준비한 적 있어서 오랜만에
옛날생각도 납니다.
CPU 와 VIA 는 말씀하신 대로 WDC 제품이구요.
EEPROM 은 AT28C256 이고, SRAM 은 AS6C62256 입니다. 여기까지 주요부품이고 나머지는 흔한
74 시리즈 Quad 2 Input 논리칩들이에요. 74HC00 이랑 74HC08 이 들어갔군요.
그래서 기능 이전에 예쁘게 정리하는 걸 최우선으로 했습니다.
처음에 논리오류를 가지고 진행하다가 뒤늦게 깨달아 한번 뒤집고 재배선을 했구요.
이후에도 클럭보드에 문제가 있어서 삽질을 좀 했지만, 큰 버그는 없어서 잘 마무리가 되었습니다.
중간 테스트 없이 대공사를 진행했기 때문에 만약 생각한대로 제대로 작동 안했으면 크게 좌절해야만 했을 거에요.
빵판에선 4MHz 정도가 한계라고 합니다. 그 이상을 원하면 기판에 납땜을 해야 될거에요.
프로젝트에선 1MHz 오실레이터를 사용했고, 위 영상에선 그나마 555 타이머를 이용한 클럭이라
훨씬 더 느리게 동작하고 있습니다.
사용하시는 브레드보드와 점퍼에 대한 정보 부탁드려도 될까요? 댓글에 언급하신 bb830보다 큰 제품을 구입했으면 합니다.
구입은 마우저나 디지키, 아마존 등지에서 가격비교 해보시고 주문하시면 될 것 같습니다.
https://busboard.com/BB1460
https://busboard.com/BB1660
빵판이 중국산이랑 가격차가 제법 나지만, 이것 때문에 골탕 한번 먹어보면 절대 아무거나 못씁니다.
그것 때문에 제대로 배선한 회로가 원하는대로 작동 안해서 전체 프로젝트를 좌절시킬 수도 있어요.
점퍼는 비싼 거 아니고 알리에서 잘라서 파는 거 구입해서 썼습니다.
이제 다시 구입한다면, 테프론선 말이로 파는 거 좀 좋은 거 사서 직접 필요한 만큼 잘라서 쓸 것 같아요.
와이어 스트리퍼 필수구요.
6502 CPU 간단하고 재미있습니다.
https://github.com/codesafe/Apple-II-Emulator
https://github.com/codesafe/Apple-II-Emulator-Unity
수없이 많은 Apple II 에뮬레이터, NES 에뮬레이터지만 직접 구현이 가능한 실력자 분들은 정말 부럽습니다.
저도 두대 소장하고 있어요.
중급이상은 만능기판 납땜에 뜨개질로 직행하셔야죠.