You are on page 1of 2

>slide 05-FSM_Moore Machine

앞서 설명드린 FSM 의 대분류인 무어 머신과 밀리 머신에 대해 설명해드리겠습니다. 순차


논리회로는 상태에 따라 시간이 지나면 상태가 변화하는 기계로, 무어 머신은 그중에서도 출력이
플립플롭의 현재 상태에 따라 결정됩니다. 위의 그림과 같이 현재 상태 값 S 에 따라 y 가 출력되는
형태입니다. 예시로 1011 을 찾는 탐색기의 구조로 아래읠 그림을 활용해 설명해보겠습니다. A 는
아무것도 찾지 못했고, B, C, D, E 는 각각 1, 10, 101, 1011 을 찾은 상태입니다. 각 알파벳 아래의 값이
현재 상태로, 모두 찾은 E 만이 1 의 값을 가집니다. 화살표에 적힌 값은 입력값이지만, 알파벳을 이은
직선 위에 존재하는 화살표는 찾고있는 1011 에 해당할 때 다음 상태로 넘어감을 의미합니다. 만약 C
에 0 이 들어온다면 일전의 상태는 10 이었을 것이고, 현재 100 으로 입력받았으므로 1011 을 만들기
위해 다시 A 로 넘어갑니다. E 에서 0 이 들어오면 일전의 1011 에 0 이 더해져 10110 이 되었고, 찾는
1011 에 맞추기 위해 10110 중 뒤의 둘에서 10 을 가져오고 다시 11 을 찾기 위해 C 로 넘어갑니다.
외에도 순차회로에서는 타이밍 저장 여부에 따라 동기식, 비동기식으로 구분이 되고, 내부기억소자
형태에 따라 래치와 플립플롭으로, 저장방식에 따라 정적-동적으로, 수행 기능에 따라 레지스터-
카운터-유한상태머신으로 구분할 수 있습니다.

>slide 09-Counter_sample(7segment/4026ic/4511ic)

이것은 카운터를 사용하는 회로의 예시인 디지털 시계에 쓰일 ic 칩과 다이오드입니다. 첫번째로,


세븐세그먼트는 보시는 바와 같이 각 변마다 p-n 접합 다이오드로 구성되어 디지털 시계에서
육안으로 시계를 확인하게 해주는 역할을 수행합니다. 사진에와 같이 a 부터 g 까지 7 개의 변의 값을
입력받는 포트와 양극에 연결할 포트 둘, 마지막으로 led 로 소수점을 표시할 수 있는
디스플레이포인트 포트가 존재합니다. 두번째로, 4026 ic 칩은 5 단계 이진 카운터로, 신호가 입력되면
내부 클럭 신호로 동작합니다. 세븐 세그먼트와 같이 a 부터 g 까지의 포트로 칩 내부에서
카운터로서의 역할을 수행해 세븐 세그먼트로 신호를 전달하고 각극에 연결할 포트가 둘 존재합니다.
Clock 핀에서 카운팅이 발생하며, 주로 555 타이머와 연결되고, CarryOut 에서 카운팅이 9 까지
완료되면 펄스를 생성합니다. DEO 는 4026 칩을 두 개 이상 사용할 때 연결을 위해 사용되며, DEI
핀은 출력 핀을 활성화하기 위해 양극에 연결됩니다. RST 는 카운트를 0 으로 재설정하며, Clock
Inhibit 은 클럭 핀을 활성화하기 위해 음극에 연결됩니다. 세번째로, 4511 ic 칩은 이진화된 10 진수,
즉 BCD 를 세븐 세그먼트 디스플레이로 변환해주는 디코더업니다. 4026 과는 달리 카운터가
아닙니다. D1, D2, D3, D0 로 이진화된 10 진수를 풀어 Qa 부터 Qg 까지의 핀으로 출력합니다. Vss,
VDD 핀에서 전원 공급을 위해 각 극으로 연결되고, LT, BL 은 램프 테스트와 블랭킹 테스트로
사용됩니다. LOW 일 때 모든 세그먼트가 켜지고, 꺼지는 것을 확인할 수 있습니다. LE 는 HIGH 일 때
현 상태를 저장하는 역할을 맡습니다.

>slide 10-Counter_sample(회로도)

이것이 세븐 세그먼트와 4026 ic 칩을 카운터의 회로도입니다. 우측의 칩이 555, 즉 타이머이고,


좌측의 칩은 전원 공급의 역할을 수행합니다. 위부터의 세븐 세그먼트와 4026 ic 칩을 각각 1, 2, 3, 4
로 넘버링할 때 n 번 ic 칩의 Carry Out 핀이 n+1 번 ic 칩의 Clock 으로 연결되는 것으로 보아 1 번
세그먼트가 가장 작은 시간 단위를 나타냄을 알 수 있습니다. 타이머가 구형파, 즉 클럭 신호를
발생시켜 0, 1 의 신호를 주기별로 보낸다면 1 번 칩에서 카운터로서 현 상태에 입력된 값을 더해 0
부터 9 까지를 나타냅니다. 이후 2 번 칩의 Clock 으로 1 번 칩의 Carry Out 이 연결되어 1 번 세븐
세그먼트에서 0~9 의 값을 보인 후 1 번 칩에서 2 번 칩으로 펄스파를, 즉 1 의 신호를 전달할 수
있습니다. 0 에서 9 까지 카운트되므로 다음 칩으로 넘어갈 때 카운팅되는 시간은 10 배가 됩니다.
주어진 예시에서는 모두 10 의 거듭제곱 단위로 끊어지는 10 진수지만, 60 진법을 사용하는 시계를
구현하고 싶다면 시프트 레지스터를 사용하거나 디코더로 6 까지만 카운트하고 넘기는 복잡한
회로가 필요합니다.
>slide 11-Counter_sample(arduino)

추가로 좀전의 카운터 4026 ic 칩을 사용한 회로도와 달리 디코더인 4511 칩을 사용한 아두이노
초세기 기계 설계를 보여드리겠습니다. 팅커캐드에서 구현되었으며 보시는 바와 같이 세븐
세그먼트를 세 개만 사용했습니다. 코드를 보면 delay(100)이라고 써진 것을 발견할 수 있는데, 이는
아두이노에서 발생하는 클락 신호가 0.1 초 주기로 발생함을 의미합니다. 1 초를 1000 으로 환산한
것입니다. 이렇게 코드를 1000 이라고 두면 1 초 단위로 카운팅되고, 60 초인 6 만으로 설정해두면 1
분 단위로 카운트됩니다.

>slide 13-FSM_sample(교통 신호 제어기_code)

이제 이 교통 신호 제어기의 코드를 설명하겠습니다. 화면의 코드는 베릴로그로 작성되었습니다.


좌측은 traffic signal 이라는 모듈을 정의합니다. X, clock, clear 의 입력 신호와 고속도로(highway) ,
교차로(crossroad)의 두 출력 변수가 존재합니다. 또한 always 블록에서 사용할 수 있게끔 register 로
highway, crossroad 를 선언하여 현 상태를 저장합니다. Red, Green, Yellow 는 신호의 색상을
의미하며, 2 비트로 표현되어있습니다. 이전 슬라이드에서 설명되었다시피 고속도로가 초록,
교차로가 빨강인 경우가 S0, 교차로에 차가 있을 때 고속도로가 노랑-빨강으로 바뀌고, 고속도로가
빨강일 때 교차로가 초록으로 바뀌는 경우가 각각 S1, S2, 교차로에 차가 없을 때 교차로가 노랑에서
빨강으로 바뀌고, 교차로가 빨강일 때 고속도로가 초록으로 바뀌는 경우는 각각 S3, S4 로
정의됐습니다. 표로 표시하면 다음과 같습니다. hiway, cross 의 출력 역시 2 비트로, 두번째 단락은
clock 이 1 일 때마다 상태가 변화함을 의미합니다. clear 가 TRUE 이면 항상 S0 로 초기화되고 X 가
TRUE 라면 S1 으로, S1 에서 S2 로, S2 에서 S3 로, S3 에서 S4 로 전환되어 마지막으로 S4 에서는 S0
으로 전환됩니다. 마지막 세 번째 단락은 각 상태에서의 hiway, cross 의 출력 상태를 결정해줍니다.
표와 같은 상황을 구현하기 위해 S0, S1, S2, S3, S4 에서의 신호 색상을 정해주면 모듈이 완성됩니다.
그리하여 clock 으로 구형파를 발생시키면 주어진 상태와 구형파의 값에 따라 신호가 바뀝니다.

이상으로 발표를 마치겠습니다. 감사합니다.

You might also like