본문 바로가기

분류 전체보기

(20)
8비트 컴퓨터 만들기 Ben Eater - 나의 트러블슈팅 기록 Ben eater 트러블슈팅 기존의 포스팅까지는 Ben eater 유튜브를 보며 어떻게 흐름이 진행되는지를 파악해왔다. 그러한 방식을 토대로 Ben eater에서 판매하는 키트를 구매해서 직접 만들어봤다. 각 부품을 만드는 과정에서는 보지 못했던 오류들이 다 만들고 최종 테스트에서 여럿 발생하니, 날잡고 트러블슈팅을 제대로 해본다. 그냥 전선 잘못만 있을 줄 알았는데, 의외로 얻어가고 고민해야 했던 내용들이 많아서 저장한다. + 부품들을 합치는 과정에서 실수로 +랑 -가 연결된 적이 있다. 쇼트가 한번 일어나서,, chip들의 상태도 정상적이라고 단언하지 못했기에 더 무섭고 떨리는 트러블슈팅이었다. 1. Clock이 켜질 때 뿐만 아니라, 꺼질 때도 1 tick이 지남 Clock의 문제는 가장 근본적은 ..
solidity 언어 정리 - cryptozombies beginner https://cryptozombies.io/ko/solidity #1 Solidity Tutorial & Ethereum Blockchain Programming Course | CryptoZombies CryptoZombies is The Most Popular, Interactive Solidity Tutorial That Will Help You Learn Blockchain Programming on Ethereum by Building Your Own Fun Game with Zombies — Master Blockchain Development with Web3, Infura, Metamask & Ethereum Smart Contracts cryptozombies.io cryptozombi..
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가 ..