프로그램 가능한 레드넷 제어기(PRC) Part.3

마인크래프트 1.5.2, 마인팩토리 리로디드 2.7.0B2 기준으로 작성되었습니다.

지난글에서 프로그램 가능한 레드넷 제어기(Programmable RedNet Controller, PRC)의 기초적인 논리 연산과 수치 비교에 대해 알아보았습니다. 이번에는 논리 연산의 확장인 디지털 논리 회로에 대해 알아보겠습니다. 물론 디지털 논리에 대해 공부하는 글은 아닌 관계로 PRC를 사용하는데 필요없는 회로 구성등 세밀한 부분은 생략합니다.

처음에 알아볼 회로는 가산(덧셈, Adder) 회로입니다. 디지털 회로의 가산기는 반가산기와 전가산기로 나뉩니다. 반가산기는 2개의 입력을 더해서 2개의 출력을 내보내고, 전가산기는 3개의 입력을 더해서 2개의 출력으로 내보냅니다. 그럼 이걸 어떤식으로 사용하는지를 알아보겠습니다.

디지털은 0과 1의 2진수로 표현됩니다. 즉, 1 보다 더 큰 수는 없습니다. 0 + 0 은 0, 0 + 1이나 1 + 0은 1 인데, 그럼 1 + 1은 어떻게 되는걸까요? 2진수로 10 이 됩니다. 즉, 덧셈의 결과는 최대 2개의 자릿수가 필요하기에 2개의 출력이 있습니다. 각각의 출력에는 입력된 값을 더한 결과를 내보내는 S 출력과 받아올림(Carry)을 표현하기 위한 Cout(Carry Out) 출력이라는 이름이 붙어 있습니다.

반가산기는 덧셈을 하기 위한 2개의 입력과 계산 결과를 내보내기 위한 2개의 출력이 있다는걸 알 수 있습니다. 그럼 전가산기는 어디에 쓰는걸까요? 전가산기는 2개의 입력과 함께 아랫자리수에서 올라온 받아올림을 연산하기 위해서 3개의 입력을 받는 회로입니다. 첫번째 자리에서는 2개의 값만 더하면 되지만 두번째 자리부터는 이전 자릿수에서 올라온 값까지 더해야만 실제 계산 결과가 나올테니까요. 즉, 여러 자릿수의 계산을 하기 위해서 필요한 것이 전가산기입니다.

참고로 디지털 회로에서 감산(뺄셈) 회로는 별도로 구현하기 보다 가산기를 응용하여 구현합니다. 그 편이 간단하기 때문이지요. 이 부분에 대해 자세히 알고 싶으신 분은 ‘2의 보수’ 로 찾아보시기 바랍니다.

다음은 계수(Counter) 회로입니다. 계수 회로에는 증가(INC) 또는 감소(DEC) 신호를 받는 2개의 입력과 계수의 경계를 잡기 위한 기준값(PRE) 입력이 있습니다. 그리고 계수의 경계에 도달했을때 신호를 보내는 Q 출력과 현재의 계수 값을 출력하는 V 출력이 있습니다.

계수 회로는 INC, DEC에 신호가 올때마다 V 값을 하나씩 더하거나 뺍니다. 이때 INC 또는 DEC 신호가 계속 켜져 있다면 최초로 켜질때만 한번 계수가 이루어지고, 신호가 다시 꺼졌다가 켜질때까지 더 이상 동작하지 않습니다. 이렇게 V값이 계속 늘거나 줄어들다가 PRE값이 되거나, 0보다 작아질 경우 Q로 신호를 보냅니다. 그와 함께 V 값이 PRE 값이 되었을 경우에는 0으로 0보다 작아졌을 경우에는 PRE 보다 1 작은 숫자로 V 값을 바꿉니다.

V 값은 0부터 PRE 보다 하나 작은 숫자까지만을 가질 수 있습니다. V 값이 0보다 작아지거나, PRE와 같거나 커지면 Q 신호가 켜지면서 V 값은 반대편 경계로 옮겨지기 때문입니다. 즉, PRE로 16을 설정하였다면 V는 0 – 15의 범위를 갖습니다. V 값을 이용하실 때에는 이 점을 고려하셔야 합니다.

계수 회로는 장치의 동작 횟수를 제한하고 싶거나, 타이머의 시간을 길게 늘려야 할 필요가 있을 경우 유용하게 쓸 수 있는 회로입니다.

다음은 다중화(Mux), 역다중화(DeMux) 입니다. 다중화는 4개의 입력(I)값과 2개의 선택(S)값을 받아서 하나의 출력(O)으로 내보냅니다. S 값은 2자릿수의 2진수로 생각하시면 되며, (00, 01, 10, 11) 의 총 4종류의 값을 갖게 됩니다. 이 선택에 따라 4개의 입력 중 하나가 출력으로 나가게 됩니다. 역다중화는 반대로 1개의 입력(I)값과 2개의 선택(S)값을 받아서 4개의 출력(O)으로 내보냅니다. S 값의 선택에 따라 1개의 I 값이 4개의 O 출력 중 한군데로 나가게 됩니다. 그리고 선택된 출력을 제외한 나머지 3개로는 0 값이 나가게 되니 역다중화를 쓸 경우 이 부분을 고려해야 합니다.

다중화나 역다중화는 선로 비용이 비싸고 회로 비용이 저렴한 상황이라면 유용하지만 마인팩토리 리로디드에서는 그 반대인 관계로 마땅한 용도를 찾기가 애매한 회로이긴 합니다.

역다중화의 경우 S 값을 아날로그 값(0 – 15의 숫자)으로 받는 16출력을 가진 회로도 있습니다. 2개의 S 값의 참, 거짓으로 4개의 선택지를 만드는 대신 S 값 하나의 크기에 따라 출력 방향이 달라지는 형태입니다.

조금 독특한 회로로 7-세그먼트 인코더(Seven-Segment Encoder) 회로가 있습니다. 전자 계산기등을 보신적이 있다면 8 자 형태의 네모로 이루어진 액정에 불이 들어오는 형태로 숫자가 표시되는걸 보셨을겁니다. 이 8자 형태의 네모를 한 획씩 나누면 총 7개의 획으로 나뉘어지며 이것을 7-세그먼트라고 부릅니다. 7-세그먼트 인코더는 입력된 숫자 값을 7-세그먼트의 각각의 획을 켜고 끄는 형태로 출력할 수 있게끔 도와줍니다.

7 세그먼트 인코더는 아날로그 값으로 받는 I값에 따라 7개의 A – G 출력으로 참, 거짓 신호를 내보냅니다. 출력은 A 부터 순서대로 7-세그먼트의 가장 윗쪽 획부터 시계 방향으로 6개가 연결되어 있습니다. 마지막 G 신호는 7-세그먼트의 가운데 획입니다.

mfr prc 7-segment front

말로 설명하는 것 보다 보여주는 것이 빠르겠지요. 그림에서 왼쪽의 아이템 무게에 따른 레드스톤 신호를 보내는 발판이 설치되어 있고, 현재 2개의 7-세그먼트 인코더가 설정되어 있습니다. 왼쪽은 숫자 2를 표시하고 있고, 오른쪽은 3을 표시하고 있습니다. 왼쪽은 레드스톤 램프(Redstone Lamp)를 이용한 것이고, 오른쪽은 끈끈이 피스톤(Sticky Piston)을 이용한 것입니다.

mfr prc 7-segment rear

숫자 표시 장치의 뒷면입니다. 각각의 획마다 레드넷 케이블(RedNet Cable)의 색이 다르게 지정되어 있는걸 볼 수 있습니다. 레드스톤 램프에 연결된 색상은 가장 위에 자홍색을 시작으로 하늘색, 노란색, 연두색, 분홍색, 회색, 밝은 회색이 연결되어 있습니다. 그림은 뒷면인 관계로 좌우가 뒤집혀서 시계 반대 방향으로 설정되어 있습니다.

mfr prc 7-segment setup

출력 부분의 A – G 부분이 위의 레드스톤 램프에 연결된 색상과 같은 값인걸 볼 수 있습니다. 이런식으로 7-세그먼트 인코더를 이용하면 숫자를 쉽게 읽을 수 있게 나타낼 수 있습니다.

이번 글에서는 디지털 입출력을 가지는 디지털 회로에 대해 알아보았습니다.

프로그램 가능한 레드넷 제어기(PRC) Part.3”에 대한 답글 8개

  1. 고등학교 시험지에서 나올만한 글들이……..
    필자님은 머리가 좋은가 봐요 이걸 다 이해하고

  2. 블로그를 하루에 한번씩 체크를 해봐도 새 글이 않올라오네요ㅠㅠ

    • 이번달 초에 나온 마인크래프트 1.6 업데이트를 테스트 해보느라 1.5.2 자료를 잠시 옮겨둔 상태라 글을 쓰지 못하고 있었습니다.
      처음부터 1.6.1로 나온데다가 1주일만에 1.6.2로 올라가느라 최신 버전 대응 모드 정리와 관련 자료 확보가 꽤 힘들었습니다.
      그래도 1.6.2 버전 관련 정보도 어느정도 확인하고, 마인팩토리 리로디드를 1.6.2용으로 업데이트하는 작업도 끝냈으니 다시 강좌를 써보도록 하겠습니다.

댓글이 닫혀있습니다.