본문 바로가기
하드웨어

피드백과 플립플롭(filp-flop)

by bantomak 2024. 1. 4.

피드백과 플립플롭에 대해서

전기가 어떤 것을 움직이는 현상을 이용한 가장 간단하면서도 멋진 예로 구닥다리 전기 버저초인종을 들 수 있다. 아쉽게도 이 멋진 장치들이 요즘에는 다른 것으로 빠르게 대체되고 있다. 스위치와 배터리를 아래와 같이 연결한 릴레이를 살펴보자. 

 

 

 이런 모양의 회로를 생각해 본 적이 없다면 약간 이상하게 보일 수도 있다. 지금까지 이런 모양으로 회로를 연결했던 적은 없으니까 말이다. 일반적으로 릴레이의 입력은 출력과 완전히 분리되어 있었는데 앞의 회로에서는 릴레이의 출력이 동그랗게 회로를 돌아서 다시 입력으로 연결되어 있다. 스위치를 닫으면 그야말로 원형의 회로가 완성된다.

 

완성된 회로에서는 전자기력이 발생하여 휘어질 수 있는 금속 접점을 끌어당긴다. 하지만 접점의 위치가 바뀜에 따라 회로는 다시 완성되지 않은 상태로 알아가고, 이로 인하여 전자기력이 사라짐으로써 휘어질 수 있는 접점이 다시 원래 위치로 돌아가게(flip back) 된다.

 

이 접점이 원래 위치로 돌아가면 회로는 다시 완성된 상태로 변하게 된다. 무슨 일이 벌어진 것일까? 스위치가 닫힘에 따라 금속 점접이 앞뒤로 왔다 갔다 하면서 회로가 열렸다 닫히는 동작을 반복하여 소리를 만들어 낸다. 이 접점이 '찌르르'하는 소리를 내게 만들면 버저가 되고, 이 접점에 망치를 달아서 종을 칠 수 있도록 만들면 전기 벨이 되는 것이다.

 

이 회로의 출력은 어떻게 될까? 아마도 전압이 공급되는 상태와 공급되지 않는 상태를 빠르게 왔다 갔다 하게 될 것이다. 다른 말로 하면 출력이 0과 1 사이를 빠르게 왔다 갔다 한다는 말이다.

 

이런 회로를 오실레이터(oscillator, 진동자)라고 부른다. 이 장치는 우리가 지금까지 보아왔던 회로들과는 근본적인 차이가 있다. 오실레이터는 외부의 개입 없이 자체적으로 동작하기 때문에 사람의 조작이 필요하지 않다. 오실레이터는 그 자체로는 쓸모가 있어 보이지는 않는다. 이런 형태의 회로는 다른 회로에 연결되어 그 회로가 자체적으로 구동하는데 필수적인 요소로 사용된다. 모든 컴퓨터들은 다양한 형태의 오실레이터를 가지고 있어서 다양한 회로들이 동기적(in syncronicity)으로 동작하도록 만들어준다.

 

오실레이터는 0과 1을 반복적으로 출력한다. 이는 일반적으로 다음과 같은 그림을 통하여 표현된다.

 

 

이러한 진동의 횟수를 세면 시간에 관련된 정보를 알 수 있기 때문에 보통 오실레이터를 클럭(clock)이라고 부른다.

 

오실레이터의 한 사이클(cycle, 주기)은 다음 그림에서 표현된 것처럼 오실레이터의 출력이 변화하여 원래 값으로 돌아가는 데 걸리는 시간으로 정의된다. 한 사이클 동안 걸리는 시간을 오실레이터의 주기(period)라 한다. (한글로는 같은 주기지만 영어가 다르고 의미 또한 다르다.) 오실레이터의 주기가 0.05라면 오실레이터의 출력이 1에서 1로 다시 돌아오는데 0.05초가 걸린다는 의미이다. 그리고 이를 환산해 보면 1 ÷ 0.05가 되어 초당 20사이클이 된다. 이 이야기는 오실레이터의 출력값이 변하고, 다시 변해서 원래의 값으로 돌아오는 것이 1초에 20번씩 반복된다는 뜻이다.

 

초당 사이클은 일상적으로 많이 사용되는 용어는 아니다. 보통 헤르츠(hertz)라는 용어가 사용되는데, 이 용어는 전파(radio wave)를 전송하고 수신한 최초의 인물인 하인리히 루돌프 헤르츠(Heinrich Rudolph Hertz)를 기르기 위하여 붙여진 이름이다. 위의 오실레이터는 20 헤르츠의 주파수를 가지고 있다고 말할 수 있으며, 줄여서 20hz라 쓴다.

 

아래와 같은 회로를 구성해 보겠습니다.

NOR 게이트 두개, 스위치 2개와 전구 하나로 된 회로

 

  • 위쪽 스위치를 닫으면 전구가 켜지며, 그 이후에는 스위치가 열리더라도 그 상태(전구가 켜진 상태)를 유지합니다.
  • 아래쪽 스위치를 닫으면 전구가 꺼지며, 그 이후에는 스위치가 열리더라도 그 상태(전구가 꺼진 상태)를 유지합니다.

 

이 회로에서 이상한 점은 똑같이 두 스위치가 열려 있더라도 어떤 경우에는 전구에 불이 들어오고, 어떤 경우에는 전구에 불이 들어오지 않는다는 점이다. 위와 같은 경우를 '이 회로는 두 스위치가 모두 열려 있을 때 두 가지 안정된 상태(stable sate)를 가지고 있다'라고 합니다. 또한, 이런 회로를 플립플롭(filp-flop)이라고 합니다. 플립플롭은 바닷가에서 신는 샌들을 부르는 말로도 사용되며, 정치적인 견해를 갑자기 바꾸는 것을 이야기할 때도 사용된다. 

 

  • 플립플롭 회로는 정보를 유지할 수 있다
  • 즉, 정보를 '기억할 수 있다.'

 

플립플롭은 직전에 어떤 스위치가 닫혔는지에 대한 정보를 기억하고 있는 것이다. 만일 어딘가 돌아다니다가 이런 플립플롭을 보았을 때, 만일 불이 켜져 있는 상태라면 가장 최근에 위쪽의 스위치가 닫힌 적이 있는 것이고, 불이 꺼져 있는 상태였다면 가장 최근에 아래쪽 스위치가 닫힌 적이 있는 것이라 추측할 수 있다.

 

플립플롭은 시소와 비슷하다.

 

시소는 두 가지 안정적인 상태에 있으며, 그 중간의 불안정한 상태에 오랫동안 머물러 있는 일은 없다. 따라서 시소를 보면 언제라도 최근에 어느 쪽이 눌렸는지 이야기할 수 있을 것이다.

 

아직은 뚜렷하게 알 수 없지만, 플립플롭은 회로를 만드는 데 있어서 반드시 필요한 존재이다. 플립플롭은 회로에 정보 저장 기능(memory)을 추가하여 이전에 어떻게 동작했는지를 기록할 수 있게 해 준다. 아무것도 기억할 수 없으면서 수를 센다고 가정해 보면, 어디까지 세었는지 그다음 어떤 수를 세야 할지 알지 못하므로 수를 셀 수 없을 것이다. 따라서 숫자를 세는 회로에는 플립플롭이 필요하다.

 

플립플롭에는 몇 가지 형태를 가지고 있다. 우리가 위에서 살펴본 형태가 가장 간단한 형태의 플립플롭인 리셋-셋(Reset-Set) 플립플롭이고 짧게 R-S 플립플롭이라고 부른다. 두 NOR 게이트를 다음과 같이 대칭적인 형태로 그리는 것이 일반적이다.

 

R-S 플립플롭

 

전구를 연결하는 데 사용되었던 출력은 보통 Q라 부른다. Q와는 별개로 'Q 바'라 불리는 두 번째 출력을 가지고 있으며, 이 출력은 Q와 반대되는 값을 가진다. Q가 0이 되면, Q 바는 1이 되며, 반대로 Q가 1이 되면 Q바는 0이 된다.

 

셋과 리셋의 의미는 'Q를 1로 설정(set)'하고, 'Q를 0으로 초기화(reset)'하는 개념이라 생각하면 된다.

 

  • S가 1이 되면(앞의 그림에서는 위쪽 스위치를 닫는 것이다) Q는 1이 되며, Q바는 0이 된다.
  • R이 1이 되면(앞의 그림에서 아래쪽 스위치를 닫는 것이다) Q는 0이 되며, Q바는 1이 된다.
  • 두 입력이 모두 0이라면 출력은 이전에 셋이 되었는지, 리셋이 되었는지를 나타낸다.

이 결과를 표로 정리하면 이렇게 된다.

 

 

이 표는 기능 표, 논리 표, 혹은 진리 표(truth table) 등의 이름으로 불린다.

밑에서 두 번째의 S와 R이 모두 0인 경우를 살펴봅시다. 이때 출력은 Q와 Q`라 되어 있는데, 이는 Q와 Q`의 출력이 S와 R 모두 0이 되기 이전에 출력했던 값을 유지한다는 의미이다.

 

D-타입 플립플롭

 

이 회로는 '어떤 시점'에서의 '어떤 신호'의 값을 보관해야 하므로, 두 개의 입력을 가져야 한다. 첫 번째 입력 신호를 데이터(Data)라 부르도록 하지요. 다른 디지털 신호와 마찬가지로 데이터의 입력은 0 또는 1이 될 수 있습니다. 두 번째 입력 신호는 '값 보존(Hold that Bit)'이라 부르도록 합시다. '값 보존' 신호가 0으로 돌아가게 되면 이 회로는 데이터 신호의 마지막 값을 계속해서 기억하고 있게 됩니다. 이 이후의 데이터 신호의 변화는 회로에 어떤 영향도 줄 수 없는 것이지요.

 

 

더 간략하게 정리한 버전

 

여기서 X는 don't care 즉, 그 값에 상관하지 않겠따는 표시이다. 이는 값 보존 입력이 0인 경우 데이터 입력이 어떤 값인지에 '관계없이' 출력 Q는 그전의 값과 같은 값을 유지한다는 것을 의미한다.

 

이 책에서 설명한 회로들과 유사한 회로들이 사용될 때 입력으로 '값 보존'이라는 이름은 잘 사용되지 않습니다. 보통 클럭(Clock)이라는 이름이 사용되지요. 0과 1 사이를 주기적으로 왔다 갔다 하는 시계와 비슷한 속성을 가지고 있는 신호이다.

일단 여기서의 클럭은 데이터 입력이 언제 저장되어야 하는지를 알려주는 신호라고만 생각하면 좋을거 같다.

 

이해가 되지 않는다면 아래 사이트에서 직접 클릭해 보면 감이 올 것이다.

 

 

Code: Chapter 17

Your browser does not support the canvas element. Your browser does not support the canvas element. Your browser does not support the canvas element. In this variation, the Set and Reset signals work similarly, but only when the Hold input is set to 1. The

codehiddenlanguage.com

 

함께 읽으면 좋은 글

 

결정 진동자(crystal oscillator)에 대해서 알아보자

결정 진동자 발진기라고도 부르며 보통 수정(quartz) 결정으로 많이 만들어서 결정 진동자(crystal oscillator)라고도 부른다. 오실레이터에 전기를 가해 규칙적으로 진동을 일으켜 주파수를 발생시키

jettstream.tistory.com

 

출처

 

CODE (블랙 에디션) - 예스24

23년 만에 돌아온 컴퓨터 공학 분야의 필독서!20년이 넘는 세월 동안 컴퓨터 공학 분야의 필독서로서 많은 독자를 열광하게 만든 《CODE》가 새로운 컴퓨팅 시대에 맞춰 개정되었습니다. 컴퓨터

www.yes24.com

댓글