마인크래프트 1.6.2, 마인팩토리 리로디드 2.7.0B8 기준으로 작성되었습니다.
이번에는 래치와 플립플롭에 대해 알아보겠습니다. 디지털 회로에서 플립플롭과 래치는 값을 보관하기 위한 중요한 회로이지만 PRC에는 내부에 변수(VARS) 저장 공간이 있다보니 용도가 애매합니다. 그런 관계로 간단한 사용 방법만 적어둡니다. 래치와 플립플롭은 공통적으로 Q와 Q# 값을 출력으로 사용합니다. Q에는 현재 보관중인 값을, Q#에는 현재 보관중인 값과 반대되는 값을 내보냅니다.
SR-래치(SR-Latch) – S(Set)와 R(Reset)의 값에 따라 보관중인 값을 변경합니다. S로 신호가 들어올 경우 보관중인 값을 15로, R로 신호가 들어올 경우 보관중인 값을 0으로 바꿉니다. 양쪽 모두 신호가 들어오지 않을 경우 그대로 유지하고, 양쪽 모두 신호가 들어올 경우 원래 회로는 비정상적인 동작을 하게 되지만 PRC에서는 아무런 변화 없이 현재 상태를 유지합니다.
SR-래치(SR-Latch) Gated – 회로의 동작은 SR-래치와 동일합니다. 다만 E라는 입력을 추가로 받아서 E로 신호가 들어올 경우에만 동작하도록 변경된 회로가 SR-래치 Gated 회로입니다.
D-래치(D-Latch) Gated – E로 신호가 들어오는 동안 보관중인 값을 D에서 들어오는 값으로 바꿉니다.
T-플립플롭(T-Flipflop) – 입력에 따라 저장된 값을 반전시키는(토글, Toggle) 회로입니다. CLK의 값이 0에서 다른 숫자로 바뀌는 순간 T 입력을 확인해서 T로 신호가 들어왔다면 보관중인 값을 반대로 바꿉니다.
JK-플립플롭(JK-Flipflop) – SR-래치와 T-플립플롭을 합친 형태의 회로입니다. 입력은 J와 K를 받으며 J는 S의 역할을, K는 R의 역할을 합니다. 다만, J와 K 모두 신호가 들어올 경우 아무런 동작도 하지 않던 SR-래치와 달리 T-플립플롭처럼 보관중인 값을 반대로 바꿉니다. 그리고 CLK입력을 받아서 CLK값이 0에서 다른 숫자로 바뀌는 순간에만 회로가 동작합니다.
이상으로 현재 PRC에서 제공중인 래치와 플립플롭에 대해 알아보았습니다.
이제 나머지 PRC 회로들을 알아보겠습니다. 우선 통과(Passthrough) 회로입니다. PRC에서 제공하는 통과 회로는 총 3가지 형태가 있습니다.
첫번째로 일반 통과 회로의 경우 들어온 입력 값을 그대로 출력 값으로 내보냅니다. 상수(CNST)값을 출력하고 싶을때나, 들어온 값을 변수(VARS)에 넣고 싶을때 등에 쓸 수 있습니다.
두번째로 Gated 통과 회로입니다. 래치에서 잠시 언급한대로 E라는 신호를 받아서 신호가 들어올 때만 값을 전달합니다. E에 신호가 들어오지 않는다면 0을 내보냅니다.
세번째로 Ring 통과 회로입니다. Ring 통과 회로에는 많은 입력과 출력이 있습니다. 우선 CNT 입력값은 입력된 I 값을 몇개의 출력으로 보낼지를 결정합니다. CNT가 5일 경우 O0부터 O4까지 5개로만 I 값이 출력됩니다. 그리고 CLK 값이 0에서 다른 숫자로 바뀔때마다 출력되는 위치가 바뀝니다. 바뀌는 순서는 순차대로 0번부터 1씩 증가하며 마지막 출력이었다면 첫번째인 0번 출력으로 돌아갑니다. 현재 출력중인 위치를 제외한 나머지 출력에는 0을 내보냅니다.
다음으로 알아볼 회로는 지연(Delay) 회로입니다. 마인크래프트에 있는 레드스톤 중계기(Redstone Repeater)와 같이 입력된 값을 일정 시간이 지난 후에 출력하는 회로입니다. 다만, 레드스톤 중계기에 비해 지연 시간을 자유롭게 설정할 수 있다는 장점이 있습니다. D에 입력된 숫자만큼의 틱이 지난 후에 I의 값을 O로 보냅니다.
다음은 팬아웃(Fanout) 회로입니다. 팬아웃은 하나의 입력을 여러개의 출력으로 동시에 내보내는 역할을 합니다.
마지막으로 슈미트 트리거(Schmitt Trigger) 회로입니다. 슈미트 트리거 회로는 Pd에 설정된 틱 시간 이상동안 I로 입력이 있어야 출력으로 값을 전달합니다. 발판을 설치하면서 잠시 지나가는 경우에는 무시하고 싶을때 쓸 수 있는 회로입니다. 발판 위에서 일정 시간동안 대기해야 신호가 전달되기에 잠깐 밟는 정도로는 신호가 출력되지 않게 할 수 있습니다.
이상으로 현재 PRC에서 제공되는 모든 회로에 대한 이야기를 마칩니다. 자세히 풀어서 설명하는 능력이 없다 보니 각 회로별로 간략한 요점 정리글이 되어버렸지만요. 각 회로에 대해 궁금한 내용이 있으신 분은 댓글을 남겨주시면 답변을 드리도록 하겠습니다.