본문 바로가기

하드웨어/Ben eater

8비트 컴퓨터 만들기 Ben Eater Part.6(output) [2]

https://www.youtube.com/watch?v=dLh1n2dErzE&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=33


8-bit decimal display

10-bit decimal display

 

output 최종 목적은 A 레지스터의 값 0~255을 8-bit decimal display로 표현하는 것이다.

그 목적을 이루는 가장 쉬운 방법은 EEPROM 3개를 이용하는 것이다.

하지만, 이 방법은 다소 낭비가 심하다.

10byte를 3번 저장하려고 2k짜리 EEPROM을 3개..?

 

이를 해결하는 방법은 멀티플렉서에 있다.


4개의 display

좌 : 새로운 clock과 binary counter, 우 : 같은 값만 나오는 10-bit decimal display 4개

 

다소 이해할 수 없는 두 조합이다. 0~3을 표현 가능한 binary counter와 그저 하나의 7-segment의 값을 네 번 복제했을 뿐인 10-bit decimal이 있다. 이 조합으로 EEPROM 하나로 3자리수를 표현할 수 있다. (하나는 부호)

 

EEPROM 데이터 내용 설계

 

그 방식 첫 번째. EEPROM에 자릿수도 저장하자.

주소 핀 A10, A9, A8을 자릿수 핀, A7~A0은 숫자 핀으로 둔다.

우리는 최대 255까지만 표현할 것이므로 숫자 핀은 8개로 충분하다.

 

A10,A9,A8 이라는 자릿수에, A7~A0이라는 숫자를 가진 7-segment는 어떤 핀을 켜야 하는지가 값으로 저장되어 있다.

 

아두이노 코드 : 자릿수 별로 입력

 

약간 이런 식으로 하자는 거.

뭔가 EEPROM 전체를 중복된 숫자들로 가득 채우는거 같기도 하고.

 

위 사진에서 멀티플렉서가 추가됨

 

binary counter의 결과는 사실 자릿수였다. 0,1,2,3을 반복하며 0,1,2,3번째 자릿수는 값을 출력하는 것.

지금 위 상황의 사진에서는 123이라는 수의 경우 1,2,3이 반복되어 출력되고 있다.

 

+ 여기에서 멀티플렉서을 이용하여 그 자리수의 차례일 때만 7-segment가 켜지도록 한다면?

 

멀티플렉서를 이용하여 올바른 자릿수의 값만 켜지게 한다.
그 상태에서 clock의 속도를 빠르게 한다면?

 

clock을 빠르게 해서 착시효과를 주는 방식이라니.!

정말 참신하긴 한데, clock이 계속 빨라도 문제가 없는 건지 걱정되긴 한다.

하긴, 실제 컴퓨터보면 clock 엄청 빠르다며.


 

마무리

마이너스 부호

 

위 상황에서 EEPROM A10번 주소가 필요가 없다보니, 알차게 부호있는 모드를 새로 만들었다. EEPROM 추가 프로그래밍을 해서 두 가지 모드를 가진 8-bit decimal display 완성!

 

이걸로 모든 장치가 다 만들어졌다. 이제는 버스 연결하고 control logic 조절만 하면 완성이다.

중요한 부분만 남았다.