상태도
상태도(State Diagram)는 다음 요소를 이용하여 그래프의 형태로 나타냅니다.
- 원은 상태를 나타냅니다.
- 화살표는 현재 상태에서 다음 상태로의 전이(Transition)를 의미합니다.
- 각 화살표위의 라벨은 상태 전이를 일으키는 입력을 의미합니다.
무어머신
무어머신의 상태도는 다음의 특징이 있습니다.
원 내부의 라벨에는 "상태 / 출력" 형태로 표시됩니다.
화살표에는 입력이 표시됩니다.
무어머신은 상태(State)만 출력하며(즉, 최종 출력에는 사용자의 입력은 관여하지 않습니다.)
입력은 상태만 바꿀 뿐, 출력에 영향을 주지 않습니다.
입력에 따라 상태가 바뀌면, 최종 출력에 관여하니까 입력도 상관있는거 아니야?
아예 상관 없다고 할 수는 없지만, 입력이 출력에 직접적으로 관여하지 않는것이 무어머신의 특징입니다.
순차 패리티 체커 회로의 설계
패리티 체커는 데이터가 정상적으로 보내졌는지를 체크하기 위해 만들어졌습니다.
패리티 비트를 이용하여 데이터를 체크합니다.
예를 들어, 데이터가 7비트인데, 이 중 1의 개수가 짝수라면,
패리티 비트는 1로 만들어 데이터 비트 맨 오른쪽에 붙여줍니다.
(데이터 비트의 1의 개수가 홀수라면, 패리티 비트는 0입니다.)
패리티 비트를 포함한 총 8비트짜리 데이터에는
1의 개수가 항상 홀수가 되도록 만들어야합니다.
패리티 체커 회로의 상태도
패리티 체커 회로를 무어 머신의 형태로 나타내보겠습니다.
상태는 총 2가지로 특정 시점까지 데이터를 읽었을때,
1의 개수가 짝수인지, 홀수인지를 알아야합니다.
즉, 상태는 1의 개수가 짝수, 1의 개수가 홀수로 총 2개입니다.
이제 상태도를 그려보겠습니다.
$Z$는 출력, $X$는 입력 입니다.
처음 상태가 $S_0$ 짝수인 상태에서 데이터 비트 1개를 읽었을 때
$X=0$인 경우, 여전히 1의 개수는 짝수이기 때문에 다음 상태도$S_0$입니다.
$X=1$인 경우, 1의 개수는 홀수이기 때문에 다음 상태는 $S_1$이 됩니다.
입력이 1이면 상태가 보수가 되고, 0이면 상태가 유지되어야하므로
이에 적절한 FF은 T-FF입니다.
$Q$ | $Q^{+}$ | $T-FF 입력$ | $Z$ | ||
$X=0$ | $X=1$ | $X=0$ | $X=1$ | ||
0 | 0 | 1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 1 |
이에 따라 얻은 특성식은 다음과 같습니다.
$Q^{+} = QX' + Q'X = Q \oplus X$
이는 T-FF의 특성식과 일치하며, 심볼은 T-FF의 심볼과 같습니다.
이에 따른 타이밍도는 다음과 같습니다.
무어타입의 회로에서는 출력($Z$)이 현재 상태로만 결정되고
입력($X$)가 바뀌는 시점에는 영향을 받지 않음을 알 수 있습니다.
출력은 오직 클럭입력의 에지에서만 바뀜을 확인해주세요.
무어 회로로 부터 상태도 만들기
다음과 같은 무어 회로가 주어졌다고 해보겠습니다.
$D_A, D_B, Z$에 대한 입력 함수는 다음과 같습니다.
$D_A = A^{+} = X \oplus B'$
$D_B = B^{+} = X + A$
$Z = A \oplus B$
이제 입력($X$)에 따른 현재 상태($AB$)와 다음 상태($A^{+}B^{+}$)에 대한 테이블을 만들겠습니다.
$AB$ | $A^{+}B^{+}$ | Z | |
$X = 0$ | $X=1$ | ||
00 | 10 | 01 | 0 |
01 | 00 | 11 | 1 |
11 | 01 | 11 | 0 |
10 | 11 | 01 | 1 |
이제 상태를 정의해보고 이에 따른 상태 테이블을 다시 그려보겠습니다.
$S_0 = 00$
$S_1 = 01$
$S_2 = 11$
$S_3 = 10$
현재 상태 | 다음 상태 | 현재 출력 | |
$X = 0$ | $X=1$ | ||
$S_0$ | $S_3$ | $S_1$ | 0 |
$S_1$ | $S_0$ | $S_2$ | 1 |
$S_2$ | $S_1$ | $S_2$ | 0 |
$S_3$ | $S_2$ | $S_1$ | 1 |
이제 상태도를 작성해보겠습니다.
상태도는 총 4개로 $\frac {S_0} {0}$, $\frac {S_1} {1}$, $\frac {S_2} {0}$, $\frac {S_3} {1}$ 입니다.
입력에 따라 상태도를 그려보면 다음과 같습니다.
'CS > 논리회로' 카테고리의 다른 글
[논리회로] 밀리머신과 출력 오류 현상 (0) | 2022.06.11 |
---|---|
[논리회로] 카운터 (0) | 2022.06.11 |
[논리회로] 레지스터 (0) | 2022.06.10 |
[논리회로] 플립플롭 (0) | 2022.06.10 |
[논리회로] 래치와 투과성 문제 (0) | 2022.06.10 |