여담
저는 잼민이 시절(초등학교 시절)에 마인크래프트란 게임을 알게 됬는데, 실제로 몇 달 전까지도 간간히 하던 제 인생게임중 하나 입니다. 이번에 전선과목으로 회로 설계에 대해 배우는 디지털 논리 회로 과목을 수강중인데 시험이 끝나고 여유가 생기니 갑자기 디지털 논리에서 배운 논리 회로가 실제로 마인크래프트에서도 구현이 가능한 사실이 번뜩 떠올랐습니다.
마인크래프트는 실제로 제공되는 레드스톤 도구를 이용해서 기본적인 논리 Gate인 AND, OR, Not 부터 시작해서 NOR, NAND, IMPLY 등 대부분의 Gate를 구현할 수 있습니다. (심지어 Clock Pulse도 생성 가능합니다.)
저는 이런 AND, OR, NOT 게이트를 초딩때 마인크래프트 회로 강좌에서 봤는데 사실 뭔지는 정확히 이해하지 못하고 그런게 있다~ 정도만 이해 했었습니다. 대학생이 되고 논리 회로 과목 듣고서야 드디어 무엇인지 이해를 했네요. 정말 감동입니다. (생각해보면 초등학교때 C언어도 공부했었는데 제가 영재나 천재로 태어났으면 좋았을 것이라는 생각이 듭니다)
어찌됬건 기본적인 Gate가 다 사용이 가능하단건 어떤 회로던 만들 수 있다는 뜻입니다.
사실 커맨드 블럭같은 조금 High-Level 한 도구를 사용하면 되긴 하는데 그러면 일단 간지가 안납니다. (이게 진짜 중요해요)
Java라는 고급 언어 위에서 돌아가는 마인크래프트 안에서 0, 1 과 같은 Low-Level 한 것을 다루는게 조금 모순같아 보이긴 하는데 이게 바로 낭만 아닐까요..?
조금더 그럴싸한 이유를 대보자면 논리 회로 설계를 논리적으로 배우기만 하고 실제 물리적으로 뭔가 만들어본적이 없습니다. 실제로 뭔가를 만들어 보고 싶은데 회로에 직접 선 연결하고 전기 신호 주는건 너무 노가다 같아서 쉽게 부수고 만들 수 있는게 마인크래프트 같아서 선택하게 되었습니다.
조금더 나가보자면 대학에서 회로 설계 수업할때 마인크래프트를 도입 시켜서 직접 회로 설계를 시켜 보는 것도 나쁘지 않을 거 같습니다 ㅋㅋㅋㅋ.
우선 각설하고 이제 본론에 대한 내용을 다루겠습니다.
BCD 코드를 입력 받아서 7 segment에 출력 시키기
오늘 만들어 볼 것은 BCD코드를 입력(input)으로 받아서 7 segment에 출력 시키는 회로 입니다.
말이 어려운데 BCD코드란건 0~9 까지 이진수로 매핑(대응) 되는 코드 들입니다.
그니깐 0~9라는 숫자를 우리가 마인크래프트 레버 같은걸로 땅겨서 이진수로 입력 시켜주면
요렇게 생긴 led 전광판(7 segment) 에 출력하겠단 뜻입니다.
*저기 LED가 들어와서 숫자 표현해주는 부분이 7개라서 7 segment라고 부릅니다.
회로 구성
마인크래프트로 직접 회로를 만들기 전에 진리표(truth table)를 그려서 회로를 구성하고 카르노 맵(K-Maps) 를 이용하여 최적화를 진행하겠습니다. 머리 아픈 부분이므로 관련 전공자가 아니거나 관심 없는 부분은 이 부분은 스크롤 쭉 내려서 스킵 해주세요!!
마침 교안에 같은 예제가 잘 나와 있어서 가져와 봤습니다.
a~g 까지는 output인데 각 segment에 불이 들어오는 부분이라고 보시면 되겠고 A,B,C,D는 입력입니다.
각 출력(output) a~g 별로 1만을 뽑아서 Minterm으로 진리표를 부울식으로 뽑아낸 다음에(바꾼 다음에)
복잡한 식을 카르노맵을 이용하여 최적화를 진행 하겠습니다. (요 부분은 생략)
그래서 결론적으로 나온 식은 위와 같습니다.
식이 굉장히 복잡해 보이네요.. 뭔가 예제를 잘못 고른거 같습니다..?
우리가 해줄 것은 아까 입력이 A,B,C,D 였으니깐 이건 레버 4개로 입력하는 것으로 하면 되겠고
출력은 AND GATE와 OR GATE를 이용해서 만들면 될 거 같습니다.
아직 직접 만들어보기 전까진 GATE가 각각 몇개가 필요한지 감이 잘 안잡히네요. 직접 만들어보면 알겠죠 뭐.
AND GATE랑 OR GATE 로 만들기 싫으신 분들은 직접 위 회로 그림(logic diagram)을 그린담에 NOR이나 NAND 로 바꿔서 만들어주시면 될 거 같습니다.
애초에 이걸 따라할 사람도 없을 거 같지만..
직접 만들어보자!
이제 직접 만들어볼 시간입니다.
편한 작업을 위해 마인크래프트 평지맵을 하나 팠고 앞에 보이는 레버가 입력, 앞에 전광판이 바로 출력이 되겠습니다.
이제 위 회로에서 만들어 논대로 a~g까지 완성을 해봅시다..
어.. 만들어보니깐 뭔가 예제를 단단히 잘못 가져왔다는 생각이 드네요
output a 부분 (맨 위에 부분) 을 만드니깐 벌써 회로가 저렇게나 쌓였네요
앞으로 만들게 산더미인데 ㅠㅠ
일단은 a 부분은 목적대로 출력되니깐 오늘은 시간 부족으로 여기까지만 제작하도록 하겠습니다.
(여러 분들은 저처럼 무계획으로 만들지 마시고 미리 회로를 잘 그려놓고 시작하세요 ㅠ)
https://www.youtube.com/watch?v=lFrReTL_c9A&t=209s
위 영상은 logic diagram을 미리 그려놓고 만드는 유투브 영상입니다.
실제로 작동도 하게 만드셨더라구요 보면 엄청난 노가다가.. 대단합니다
예전에 마인크래프트 에서 cpu 나 계산기 만든 놈은 도대체 뭘까..?
싶습니다.
위 영상으로라도 대리 만족을 부탁드리겠습니다 ㅎㅎ.. 죄송합니다.
'CS > Digital Logic' 카테고리의 다른 글
[디지털 논리] 카르노맵을 통한 부울식 간소화(최적화, optimization) (0) | 2022.05.12 |
---|