본문 바로가기

University curriculum/[Course] Digital Engineering

[디지털 공학(21)] Synchronism Counter(동기 카운터)_순서논리회로(3)

반응형

 


안녕하세요.

지난 포스트에서 비동기 카운터에 대해 기술하였습니다. 이번 포스트에서는 동기 카운터에 대해 기술하겠습니다.


 

순서논리 회로에는 다양한 내용이 있습니다. 필요에 따라 아래 글들도 참고해보세요~!!~

1. Latch(래치)와 Flip-flop(플립플롭)

https://semicircuit.tistory.com/37

2. 비동기 카운터

https://semicircuit.tistory.com/38

3. 동기 카운터

https://semicircuit.tistory.com/39

4. 불규칙 카운터

https://semicircuit.tistory.com/40

5. State Machine 설계

https://semicircuit.tistory.com/41

6. UP/DOWN Counter

https://semicircuit.tistory.com/42

7. 시프트 레지스터

https://semicircuit.tistory.com/43

 

 

 

※1. 카운터의 정의

1. 종류

⓵ (클럭의 사용에 따른) : 비동기 카운터( 처음 J-K 플립플롭만 Clock신호를 받음) / 동기 카운터 모든( J-K플립플롭에 Clock신호를 받음)

⓶ (수의 변화에 따른) : Up카운터(0,1,2,3...) / Down카운터(내림차순 ....3,2,1,0)

⓷ (허용 범위(모듈러스)에 따른) : 4진(0~3), 8진(0~7), 10진(0~9), etc...

 

2. 사용

: 수를 세는데 사용되는 하드웨어 디지털 회로, 클럭 펄스가 하나씩 인가될 때마다 미리 정해진 순서대로 상태가 반복되는 순차회로이다.

=> 입력되는 클럭의 수를 센다.

 

3. 특징

: 7-Segment를 통하여 다이오드에 표시되는 숫자로 변환하여 인간이 알아볼 수 있는 정보로 변환이 가능하다.

높은 주파수를 낮은 주파수로 바꿔주는 기능을 하여 ‘분주기’라고도 한다. => n단의 카운터회로는 클럭주파수를 1/2n의 신호로 반환 한다.

=> ex) clock의 주파수가 16MHz일 때, Q0는 8MHz, Q1은 4MHz Q2는 2MHz의 주파수를 가지고 있다.

 

▶4. 사용 소자와 개

:ex) N진 카운터

⓵ 나타내는 숫자 N개, 범위(모듈러스)가 0~(N-1)

⓶ 비트수 : 2^(n-1)<N<=2^n에서 => 비트수 n개 => n비트 카운터

⓷ J-K플립플롭의 개수 : n개

⓸ 출력 개수 = F/F개수

 

 

 

 

※2. 동기 카운터

- 카운터 내부에 있는 모든 플립플롭이 공통의 클록 펄스에 의해서 동시에 상태가 변하는 카운터이다.(동기 카운터 특징)

- 일단 모든 F/F의 C에 CLK를 연결하고 시작

- FF0의 JK는 HIHG(1)에 연결 이외의 FF의 JK는 앞단의 Q와 연결한다.

- 3비트 카운터 부터는 AND게이트를 통해 앞단과 그 앞단의 Q를 AND로 JK에 넣어 주면 delay가 줄어든다. 최대 (F/F의 개수 - 2)개 사용 가능

ex) J2와 K2의 입력에 Q1과 Q2를 AND로 받은 출력을 넣어준다.

 

ex) 4진 카운터

 

1. 동기 카운터의 전파지연(propagation delay)

- CLK의 신호가 각각의 C에 동시에 입력되면서 발생하는 delay(glitch)를 제외하고는 발생하지 않는다. => 매우 적은 propagation delay

3) Clear 단자를 이용하여 2^(n-1)<N<2^n 진 카운터 만들기

 

ex) 동기식 10진 카운터 만들기 (비동기식과 동일)

- 2^(n-1)<N<2^n의 경우 2^n의 카운터에서 일부 절단 시퀀스(truncated sequence)를 한다. ex) 10진 카운터는 1010에서 clear(절단,리셋)시킨다.

- Q0 Q1 Q2 Q2에서 Q0이 LSB, Q3가 MSB이다.

- 리셋 되어야 하는 부분에서 HIGH가 되는 FF의 Q를 NAND의 입력에 연결하고 NAND의 출력부는 모든 F/F의 Clear단자와 연결한다.

(2진수로 바꿨을 때 1의 개수 = NAND의 입력 개수)

이처럼 부분적 decoding(Q1' Q2')을 : partial 디코딩이라고한다. <=> Full 디코딩

cf)Full decoding 방법

NAND의 출력부는 동일하고 입력부에 0되는 F/F의 반전 출력도 같이 입력한다.

=> 이렇게 하는 것이 partial 디코딩에 비해 안정적

 

 

 

 

 

※3. Design of Counters with Excitataion table(여기표를 이용한 동기 카운터 설계)

1. 동기 카운터의 설계 과정

⓵ 상태도 : 출력을 순환하는 방식으로 표현하는 것

⓶ 다음 상태표 작성 : 현재와 다음 상태를 표현하는 것

⓷ 플립플롭 전이표 작성 : 다음 변화에 대한 J-K의 입력을 나타내는 표를 작성하는 것

⓸ 카르노맵 작성 : Present State와 Excitation Table을 카르노맵으로 표기하는 것

⓹ 플립플롭 입력에 논리식 : 카르노맵을 통해 수식으로 표현하는 것

⑥ 카운터 구현 : 수식으로 얻은 식을 회로로 설계하는 것

 

ex1) 10진 카운터의 동기 카운터 설계 - JK F/F

⓵ 상태도

 

 

⓶ 다음 상태표 작성

 

 

⓷ 플립플롭 전이표 작성

=> 전이표에 따라서 ( present State와 Next State를 비교 한후 전이표를 통한 값을 J-K의 해당 자리에 배치한다.)

=> 나머지(구현되지 않는 것들)은 don't care(x)로 처리한다.

 

 

⓸ 카르노맵 작성

 

 

⓹ 플립플롭 입력에 논리식

 

 

 

⑥ 카운터 구현

 

으로 회로 설계

( F/F의클록 입력은 모두 CLK에 넣는 것은 전재로 한다.)

 

<기본구성요소>

1) 기본 구성 파악

- 20진 카운터 2^3<10<=2^4 이므로 4비트 카운터 사용

- 4비트 카운터 => 4개 J-K F/F 사용

- 출력부 개수 = F/F개수 => 6개

- 논리식을 봤을 때 AND게이트 4개 필요(J2,K2는 같은 출력이므로 합하여 1개만 사용),

NOT게이트 1개 사용(Q3)

- 플립플로1 4개 사용 => 출력 4개

 

<회로설계>

 

## 결과 ##

=> Clear를 사용하는 방법은 9.9999...처럼 10이 다되기 바로 직전 Reset하여 노이즈가 발생한다. 클럭 스피드가 아주 빠르면 문제가 발생 할 수 있다.

=> 앞선 과정(excitation table을 통한 설계)에서 JK F/F를 구성하는 10진 카운터를 설계 하였다.

결론을 먼저 말하면 이전 7장에서 학습한 Clear단자를 이용한 직관적 방법(암기성 방법)을 통한 카운터 설계는 토글 기능을 포함하고 있는 JK F/F와 T F/F에만 국한되어 있다. 하지만 앞선 과정을 통해 설계를 하면 우리가 배운 모든 F/F(SR, JK, T, D)에서 카운터 설계가 가능하다.

=> 모든 과정은 동일하나 각각에 F/F 특성에 따른 전이표의 차이로 회로가 차이가 난다.

cf) 일반적으로 토글 기능을 포함하는 JK F/F와 T F/F이 SR F/F와 D F/F에 비해 회로가 더 간단한 형태를 띈다.

 

 

 

 

ex2) 10진 카운터의 동기 카운터 설계 중 - SR F/F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=> 다음의 예제 2~4를 통해 같은 입력과 출력을 가진 조건의 카운터일지라도 플립플롭의 차이에 따라 전이표가 달라 플립플롭 입력이 달라지는 것을 볼수 있다. 이후 과정을 생략 하였지만 이를 통해 카르토맵을 통한 간략화 또한 JK F/F과는 각각 다른 결과를 나올 것이라는 것을 예상 할 수 있고, 그렇지만 같은 결과를 나타내는 것을 볼수 있다.

 

그러면 어떤 플립플롭을 사용하는 것이 가장 적합 할까??

 

다음의 6진 카운터의 4가지 플립플롭의 회로를 비교해 보면

1) JK F/F, T F/F VS SR F/F, D F/F

JK F/F와 T F/F의 경우 SR F/F과 D F/F보다 한눈에 보다오 더 적은 게이트를 사용하고 비교적 간단한 형태의 회로를 가지는 것을 볼 수 있다.

=> 일반적으로 JK F/F와 T F/F을 통한 회로 구성이 SR F/F와 D F/F으로 구성한 회로 설계보다 더 간단한 형태를 띈다.(토글의 유무 때문)

 

2) JK F/F VS T F/F

위의 경우에는 JK F/F이 T F/F보다 1개 더 적은 게이트를 사용하여 비교적 더 간단한 형태를 띄었지만 경우에 따라 T F/F이 더 간단할 때도 있다. 즉, 이 두 F/F은 경우에 따라 조금의 차이는 나지만 비슷하다고 보는 것이 좋다.

 

cf) excitation table을 작성할 때 작업이 많아 실수할 수도 있고 시간이 걸릴 수도 있는데 이때 공통 특성을 이용하면 비교적 편리하고 실수를 줄일 수 있다.

ex) 하나의 열씩 순서대로 채워 간다 했을 때,

SR F/F에서 S의 테이블을 채울 때 Q(t+1)=0이면 S는 무조건 0이다.

Q(t+1)=0인 부분의 S를 모두 0으로 먼저 채우고 나머지는 비교해서 채운다.

 

 

 

반응형