일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 바이오데이터 엔지니어
- PostgreSQL 설치 시 에러
- 디자인 패턴
- github actions
- 프로그래머스 코딩테스트 연습문제
- Firefox
- Codeforces
- 프로그래머스 코딩 테스트 연습
- git
- 애드센스
- WPF
- 프로그래머스 월간 코드 챌린지 시즌1
- 스코페2021
- 브랜디
- PostgreSQL
- 프로그래머스 코딩테스트 연습
- 파이썬
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- pycharm
- Word Cloud
- 클린 코드
- heroku
- FastAPI
- selenium
- c#
- github
- terraform
- Python
- 프로그래머스 월간 코드 챌린지
- Spring Boot
- Today
- Total
프로그래밍 연습하기
플립-플롭(Filp-Flop) 본문
플립-플롭이란 논리 회로(Logic Gate)의 한 종류로, 그 중에서 순차 회로(Sequential Circuit)에 해당한다.
순차 회로란 현재 입력과 과거의 입력 혹은 출력 값들도 함께 고려하여 현재의 출력 값을 결정하는 논리 회로이다.
순차 회로에는 두 가지 종류가 있는데, 래치(Latch)와 이번에 설명할 플립-플롭이다.
래치와 플립-플롭은 종류가 똑같으며 작동 방식도 유사하지만, 클럭에 이용에 있어 차이를 보인다.
래치는 클럭이 아예 없거나 클럭의 레벨을 감지하여 동작하고, 플립-플롭은 클럭의 엣지에서 트리거되어 동작한다.
래치의 문제점은 En 신호가 high 상태를 유지하고 있는 동안에는, 입력이 바뀌면 출력도 그에 따라 계속 바뀌는 문제가 있다.
그 해결책은 En 신호가 0->1 혹은 1->0으로 전이(Transit)되는 순 간에만 상태(State)가 변경되도록 하는 것이다.
플립-플롭은 En 신호의 상태 전이가 발생하는 순간의 입력 신호에 따라 상태가 결정되도록 설계되었다.
또한 동기식 쌍안정 소자로서 클럭이라고 하는 트리거 입력의 특정한 지점에서만 출력 상태가 바뀐다.
C(Clock)입력에 버블이 없는 것은 0 ->1로 전이되는 순간의 입력 값에 따라 상태가 결정되는 양(positive)의 에지 트리거 플립-플롭(상승 에지 트리거)이고, 버블이 있는 것은 클록신호가 1->0으로 전이되는 순간의 입력 값에 따라 상태가 결정되는 음(negative)의 에지 트리거(하강 에지 트리거) 플립-플롭이다.
플립-플롭에는 다양한 종류가 있는데, 이번에는 D 플립-플롭과 SR 플립-플롭, JK 플립-플롭, T 플립-플롭에 대해 알아보려고 한다.
먼저 D 플립-플롭이란 1비트의 정보를 저장할 때 사용된다. SR 플립-플롭에 반전기를 추가하면 양의 에지 트리거 형태의 D 플립-플롭을 만들 수 있다. D 플립-플롭은 1개의 입력 D와 클럭 입력을 가지고 있다. 클럭 펄스가 가해지는 동안 입력 D가 high이면 플립-플롭은 세트되며, 클럭 펄스의 상승 에지에서 플립-플롭은 입력 D의 high 상태를 저장한다. 클럭 펄스가 가해지는 동안 입력 D가 low 상태이면, 플립-플롭은 리셋되고 클럭 펄스의 선두 엣지에서 플립플롭은 입력 D의 low 상태를 저장한다. 정리하면 세트 상태에서 1을 저장하고 리셋 상태에서 0을 저장한다.
SR 플립-플롭이란 S(set)와 R(reset) 입력을 받는다. S와 R 입력은 클럭 펄스의 트리거 에지에서만 입력이 출력으로 전달되기 때문에 동기입력이라고 한다. S가 high이고 R이 low인 경우, 출력 Q는 클럭 펄스의 트리거 에지에서 high 상태가 되고 플립-플롭은 세트된다. S가 low이고 R이 high인 경우, 출력 Q는 클럭 펄스의 트리거 에지에서 low상태가 되고 플립-플롭은 리셋된다. S와 R이 모두 low 상태인 경우는 출력에 변화가 없다. S와 R이 모두 high인 경우는 클럭의 트리거 에지에서도 무효 상태가 된다.
JK 플립-플롭이란 SR 플립-플롭처럼 세트, 리셋, 유지, 동작을 가지지만 SR 플립-플롭과는 다르게 무효 상태가 존재하지 않는다. 대신 토글(toggle)되어 반대로 바뀌게 된다.
T 플립-플롭이란 T(toggle)특성을 보인다. T=0일 경우 상태가 변하지 않고, T=1일 경우 토글(toggle)된다. JK 플립-플롭의 두 입력을 접속하여 하나의 입력 T만 사용한다.
이러한 플립-플롭에서 S,R,D,J,K 입력은 펄스의 트리거 에지에서만 플립플롭으로 전달되므로 동기 입력이라고 한다. 클럭과 동기되었다는 뜻이다.
그리고 클럭 신호와 독립적으로 출력 상태에 영향을 주는 비동기 입력 단자 또한 존재하는데, 클리어와 프리셋이 있다.
클리어는 플립-플롭을 즉시 리셋 상태(Q=0)로 변경하는 입력이다. 직접 리셋 입력이라고도 부르며 시스템 초기화 및 오류 발생시에 사용한다. 프리셋은 플립-플롭을 즉시 세트 상태(Q=1)로 변경하는 입력이다. 직접 세트 입력이라고도 부르며 플립-플롭의 초기값 설정에 사용한다. 이 둘은 플립-플롭이 동기식으로 동작할 때는 high 상태(비활성 상태)가 되어야 하며, 정상적인 동작을 하기 위해서는 동시에 low상태가 되어서는 안된다.
'이론' 카테고리의 다른 글
Docker란 무엇인가 (0) | 2020.09.22 |
---|---|
Message Queue(메시지 큐)란 무엇인가? (0) | 2020.08.02 |
SOLID란? (0) | 2020.08.01 |
애자일이란 무엇인가 (0) | 2020.07.20 |