하드웨어 (15) 썸네일형 리스트형 8비트 컴퓨터 만들기 Ben Eater - 나의 트러블슈팅 기록 Ben eater 트러블슈팅 기존의 포스팅까지는 Ben eater 유튜브를 보며 어떻게 흐름이 진행되는지를 파악해왔다. 그러한 방식을 토대로 Ben eater에서 판매하는 키트를 구매해서 직접 만들어봤다. 각 부품을 만드는 과정에서는 보지 못했던 오류들이 다 만들고 최종 테스트에서 여럿 발생하니, 날잡고 트러블슈팅을 제대로 해본다. 그냥 전선 잘못만 있을 줄 알았는데, 의외로 얻어가고 고민해야 했던 내용들이 많아서 저장한다. + 부품들을 합치는 과정에서 실수로 +랑 -가 연결된 적이 있다. 쇼트가 한번 일어나서,, chip들의 상태도 정상적이라고 단언하지 못했기에 더 무섭고 떨리는 트러블슈팅이었다. 1. Clock이 켜질 때 뿐만 아니라, 꺼질 때도 1 tick이 지남 Clock의 문제는 가장 근본적은 .. 8비트 컴퓨터 만들기 Ben Eater Part.8(CPU control logic) 이제 거의 마지막 단계다. 지금까지 만든 모든 회로를 종합하는 일. https://www.youtube.com/watch?v=AwUirxi9eBg&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=35 CPU control logic 이전 단계에서 만든 걸로, 손을 이용한다면 튜링 가능한 머신이 탄생한다. 하지만 우리가 원하는 것은 손을 이용하지 않고 자동으로 흘러가는 기계! 각 회로의 control flag들을 기계가 자동으로 조절할 수 있도록 하자. 1. 각 회로의 flag 모으기 기존에는 각각의 flag를 그 위치에서 손으로 조작하도록 했다. 아래로 신호를 모두 이어서, 한 눈에 보기 편하게 하자. 왼쪽부터 HLT(clock 멈춤), MI(RAM Memory Addr.. 8비트 컴퓨터 만들기 Ben Eater Part.7(bus) 자. 드디어 버스입니다. 영상을 본 지 이제 한 달이 되어가서 내용을 슬슬 까먹고 있습니다. 가운데 버스로 회로 다 잇고, 진정한 cpu 완성까지 하면 끝입니다. 거의 다 왔군요. 달려어어~~ https://www.youtube.com/watch?v=-6JAgFWCL9w&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=34 output 레지스터 버스에 들어가기에 앞서, output 관련 내용부터 마무리하자. output에 나올 내용을 담을 레지스터이다. bus에 있는 내용을 그대로 출력하기에는 필요한 내용만 출력하는게 아니라서 아쉬울 거 같았는데, 레지스터를 따로 두다니! 올바른 선택이다. 다만, 기존의 4bit 레지스터를 두 개 쓰는게 아니라 8bit 레지스터 하나를 .. 8비트 컴퓨터 만들기 Ben Eater Part.6(output) [2] https://www.youtube.com/watch?v=dLh1n2dErzE&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=33 8-bit decimal display output 최종 목적은 A 레지스터의 값 0~255을 8-bit decimal display로 표현하는 것이다. 그 목적을 이루는 가장 쉬운 방법은 EEPROM 3개를 이용하는 것이다. 하지만, 이 방법은 다소 낭비가 심하다. 10byte를 3번 저장하려고 2k짜리 EEPROM을 3개..? 이를 해결하는 방법은 멀티플렉서에 있다. 4개의 display 다소 이해할 수 없는 두 조합이다. 0~3을 표현 가능한 binary counter와 그저 하나의 7-segment의 값을 네 번 복제했을 뿐인 10-.. 8비트 컴퓨터 만들기 Ben Eater Part.6(output) [1.5] - Arduino programmer https://www.youtube.com/watch?v=K88pgWhEb1M&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=32 EEPROM Arduino Programmer 저번 포스팅에서 EEPROM에 관한 아날로그 프로그래머를 만들었다. 하지만 그 방식은 각 바이트 별로 손으로 설정해줘야 한다는 단점이 있다. 그러니, 아두이노를 활용해 프로그램으로 순식간에 프로그래밍하는 도구가 필요하다. 이 내용은 다음에 대한 스포기도 한데, 앞으로는 EEPROM 많은 바이트에 값을 입력해야 하기 때문이다. 하지만, EEPROM의 11개의 주소핀과 8개의 I/O핀을 아두이노 칩 하나도 감당할 수 없다. 아두이노 칩에는 13개의 디지털 핀 밖에 없기 때문! 이번 포스팅은 시작부터.. 8비트 컴퓨터 만들기 Ben Eater Part.6(output) [1] https://www.youtube.com/watch?v=7zffjsXqATg&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=30 7-segment display 휘황찬란 rgb의 디스플레이를 생각했지만, 우리의 컴퓨터는 고작 10진수의 출력이 한계다. ben eater의 튜토리얼에 디스플레이 관련된 내용도 있으니 여유가 있으면 추가하고 싶긴하다. 하지만 귀찮음이 더 크므로 이걸로 만족하겠다. A 레지스터 안의 내용을 숫자로 표시해주는 것. Logic Gate을 이용한 7-segment 만들기 구조는 대강이러하다. 예측했듯이, 하나의 segment마다 하나의 led가 있어서 핀 하나와 연결되어 있다. 그러니, 하나의 숫자를 표시하기 위해 우리는 적절한 위치의 핀을 켜야.. 8비트 컴퓨터 만들기 Ben Eater Part.5(PC) [1] https://www.youtube.com/watch?v=exGEmA67dNc&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=27 Binary counter 저번 포스팅에서 Master-slave JK Flip-flop에 대해 다뤘다. 그 중 JK Flip-flop의 toggle만을 이용한다. 위 사진에서 toggle을 구현했다. clock의 falling edge에서 전구는 toggle된다. 전구 하나의 관점에서 볼 때 clock의 1/2 속도로 깜빡인다. 1/2 속도로 깜빡인다는게 핵심포인트다. 정말 정말 참신해서 깜짝놀랐다. 첫 번째 전구는 1/2 속도로 깜빡인다. 그 전구를 다시 다른 flip-flop의 clock으로 넣어주면 1/4 속도로 깜빡인다. clock.. 8비트 컴퓨터 만들기 Ben Eater Part.5(PC) [0] - Latch, flip-flop https://www.youtube.com/watch?v=KM0DdEaY5sY 시작하며 5번째 파트는 프로그램 카운터이다. PC (Program Counter) 파트는 선행 지식이 필요하다고 생각했고 그러한 영상도 있기에 Latch & Flip-flop 파트를 만들어봤다. Latch는 게이트들을 꼬아서 임의의 값을 저장할 수 있게 만든 비동기형 회로다. Latch에 clock을 넣어 동기형으로 바꾼 것이, Flip-flop이다. 여러 Latch와 Flip-flop이 있겠지만 여기서는 PC 배경지식에 필요한 S-R latch, JK flip-flop, Master-slave JS flip-flop만 약식으로 다뤄보고자 한다. SR Latch NOR 게이트 두 개를 꼬아서 만든 SR 게이트는 set, res.. 8비트 컴퓨터 만들기 Ben Eater Part.4(RAM) https://www.youtube.com/watch?v=FnxPIZR1ybs&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=19 8x8 bit RAM 시작은 1bit에서 시작된다. 1bit는 레지스터에서 한 번 다뤄서 익숙해졌다. 그 1bit가 촘촘한 형태가 되어 RAM이 되었다. 이런 구조면, 로우 헤머 취약점 있을거 같은데?? 다 끝나고 실험해 볼 생각에 기분이 좋다. 16개의 레지스터라고 봐주면 좋다. 몇 번째 8bit를 활용할건지 선택하고, 그곳의 8bit를 활용하면 될 뿐. 주소를 4자리 2진수로 입력할 수 있게 하는 부분이다. A0, A1, A2, A3의 값을 지정하면 EN0~EN15 중에 어떤 8bit를 활용할 것인지 확정된다. 제작 Ben eater가 .. 8비트 컴퓨터 만들기 Ben Eater Part.3(ALU) https://www.youtube.com/watch?v=mOVOS9AjgFs ALU ALU 파트는 상당히 짧다. 레지스터 3개 만드는거 보면서 ALU 나타나면 재밌겠다 생각했는데, 바로 등장! 값을 변칙적으로 통제할 수 있는 우리 계산기다 ~~ ㅎㅎ ALU는 Arithmetic Logic Unit의 줄임말로 계산기다. 보통 여러 계산을 수행하지만, 아쉽게도 여기에는 더하기랑, 빼기 밖에 없다. 기능이 단순한 만큼 ALU 파트도 짧다. 이걸로 어떻게 컴퓨터가 동작이 되는 지, 프로그래밍 파트가 점점 기대된다. 위 사진을 보면 유추되듯, A Register와 B Register에게서 입력을 받고 계산해서 버스로 전달하는 식이다. 버스로의 출력이 있기에, ALU에는 Enable 플래그있다. Enable 말고.. 이전 1 2 다음