< Button switch 사용시 필요한 회로 >
- Synchronizer : 신호를 클럭에 동기시키며 Metastability방지를 위함.
- Debouncer : 기계적 진동때문에 1이나 0으로 안정된 값을 바로 갖지 못하므로 이러한 채터(chatter)또는 바운스(bounce)를 제거한다.
- Level to pulse converter : 여러 클럭 사이클 동안 1또는0이 입력되므로 신호를 한 클럭 동안에만 1이나 0이 되는것이 필요한 경우에 사용한다.
< Level to Pulse 변환기(Moore) >
- 버튼을 누르는 동작은 사람의 개념으로는 잠깐이지만 매우 오랫동안 1이 유지되기 때문에 이를 펄스 신호로 바꾸어 처리하면 편리한 경우가 있다.
- idel 상태 : 1을 받아들일 수 있는 상태, onep=0
- active 상태 : 1을 출력하는 상태, onep=1
- hold 상태 : 0이 될 때가지 기다리는 상태, onep=0
- 출력 onep는 현재상태에만 의존하므로 무어 머신이다.
< Level to Pulse 변환기(Mealy) >
- level to pulse 무어 변환기와는 다르게 입력과 현재 상태가 출력에 반영된다.
- 입력 sig가 한 클럭동안 충분히 나오는 회로에서 사용한다.
< MDDI신호 인코딩 예제 >
MDD(Mobile Display Digital Interface)
- 고속 직렬 통신 규약 중 하나
- 많은 수의 병령 인터페이스를 대신하여 신호 개수를 상당히 줄일 수 있다.
- MDDI에서는 전력소모를 줄이기 위해 Data-Stb인코딩을 사용한다.
- 신호의 스위칭에 의한 전력 소모를 줄이기 위하여 클럭 신호를 Stb로 인코딩하여 송신한다.
- Stb는 Data가 변하지 않을 때 토글하도록 만든다.
- 입력되는 data는 다음 클럭에 data_n의 값이 됨
- 현재상태의 data와 입력되는 data가 다르지 않으면 stb_n은 토글한다.
- 현재상태의 data와 입력되는 data가 같으면 stb_n은 유지된다.
< Debouncer 예제 >
- 버튼을 누르면 기계적 진동 등으로 여러 번 0에서1로, 1에서 0으로 바뀌는 bounce현상이 발생한다.
- 따라서 일정 시간동안 값이 바뀌지 않을때 그 값을 출력으로 내보내야 한다.
- 신호 in이 0에서 1로 바뀔때 1의 값이 10ms동안 바뀌지 않으면 비로소 out을 1로 만들어 준다.
- 1에서 0도 반대로 그대로 한다.
- Counter는 논리 간략화 제한때문에 2비트로 설계
- 같은 값이 클럭 에지에서 5번이상 유지되어야만 값을 바꿈
Main FSM
< 현관 자동문 예제 >
입력
- sense : 입구 센서에 사람 또는 물건이 감지될 경우 1
출력
- open : 1일 경우 문을 열고 0일 경우 닫도록 하는 출력 신호
동작
- sense=1일 경우 문을 연다.
- 안전상 시간의 여유를 두기 위해 sense=0이 되더라도 4초 후에 닫는다.
'Computer Architecture > 논리회로' 카테고리의 다른 글
[17] CH9 레지스터 (0) | 2022.01.09 |
---|---|
[15] CH8 순차논리회로 < 카운터 FSM 설계-3 > (0) | 2022.01.09 |
[14] CH8 순차논리회로 < 카운터 FSM 설계-2 > (0) | 2022.01.09 |
[13] CH8 순차논리회로 < 카운터 FSM 설계 > (0) | 2022.01.09 |
[12] CH8 순차논리회로 < 비동기-동기 카운터, FSM > (0) | 2022.01.09 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!