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이 drop 될 때 상태가 변하므로, 첫 번째 전구가 꺼질 때마다 두 번째 전구의 상태가 달라진다.
다시 두 번째 전구의 상태를 세 번째 flip-flop의 clock으로, 마찬가지로 네 번째도 하면 0~15의 binary counter가 완성된다.
Program Counter
Binary Counter을 이용해서 Program Counter(PC)를 제작한다.
PC는 RAM에 들어있는 명령어의 주소를 나타내는 역할을 한다.
즉, 매번 clock 마다 변하는 게 아니라 다음 명령이 필요해질 때만 counter가 작동해야 한다.
그러기 위해 CE라는 플래그가 있다. CE 플래그가 High 일 때만 counter가 작동한다. 그 외에도 jump를 위한 J 플래그, 버스로의 out을 위한 CO 플래그가 필요하다.
Program Counter는 Binary Counter의 원리로 제작된다. Master-slave JK flip-flop 4개가 이용된 DM74LS163A Chip을 이용하는데, 관련 자세한 원리는 설명되어 있지 않다. 그냥 위 회로도 봐도 충분히 이해될 거 같기도 하다.
위 사진 보면 알 수 있듯, LOAD, ENABLE 플래그가 있다. CO 플래그는 지금까지 늘 이용해왔던 tri-state buffer 이용해주면 딱이겠다.
마무리
PC는 chip 이용해주면 끝이라.
아주 간단하다.
'하드웨어 > Ben eater' 카테고리의 다른 글
8비트 컴퓨터 만들기 Ben Eater Part.6(output) [1.5] - Arduino programmer (0) | 2024.02.03 |
---|---|
8비트 컴퓨터 만들기 Ben Eater Part.6(output) [1] (0) | 2024.01.30 |
8비트 컴퓨터 만들기 Ben Eater Part.5(PC) [0] - Latch, flip-flop (0) | 2024.01.20 |
8비트 컴퓨터 만들기 Ben Eater Part.4(RAM) (0) | 2024.01.17 |
8비트 컴퓨터 만들기 Ben Eater Part.3(ALU) (0) | 2024.01.16 |