티스토리 뷰

안녕하세요? 오늘도 어김없이 논리회로 포스팅차례 입니다!

오늘의 주제는 지난번에 배운 레지스터를 활용하여 동기 카운터, 비동기 카운터를 설계해보겠습니다.

 

1. 동기 카운터

동기 카운터는 모든 플립플롭에 공통으로 들어오는 클럭신호가 있습니다.

이때문에 하나의 펄스입력이 주어지면 모든 플립플롭이 동시에 동작한다는 장점이 있습니다.

지금부터 ①3비트 2진카운터를 동기식으로 설계해보겠습니다.

3비트 카운터의 상태도와 여기표

그리고 각 플립플롭을 카노맵을 통해서 회로를 간소화하고 설계를 마무리하겠습니다.

각 플립플롭의 논리식을 구했으니 회로를 바로 그려보도록 하겠습니다.

3bit 동기식 2진카운터

마지막으로 타이밍도를 보면서 회로의 동작을 보겠습니다.

 

3bit 동기식 2진카운터 타이밍도

0000값부터 1000 까지 타이밍도를 통해 회로의 동작을 살펴보았습니다.

상승에지 트리거 회로로 가정했기때문에, 상승에지가 있을때마다 회로의 값이 +1씩 더해져 카운터역할을 수행하고있습니다.

 

 

추가로 ②D플립플롭을 이용한 0부터 9까지 표현할 수 있는 4bit 카운터 설계를 해보겠습니다.

설계하고자 하는 카운터의 상태도와 여기표

위와 같은 과정으로 진리표를 그려서 입력에대한 논리식들을 작성해줍니다.

그리고 회로를 완성하면 아래와 같습니다.

마지막으로 ③3비트 동기식 상향/하향 카운터를 설계하고 동기식카운터에 대한 주제를 마치겠습니다.

상향/하향카운터 상태도

상향/ 하향 카운터는 x의 신호에 따라 숫자가 커지고 작아지는 카운터입니다.

x = 0 이면 숫자가 1씩 커지고, x = 1이면 숫자가 1씩 감소하는 원리입니다.

이러한 원리로 아래 여기표를 작성하겠습니다.

상향/하향 카운터 여기표

 

 

 

 

 

 

2. 비동기 카운터

비동기 카운터는 첫번째 플립플롭의 클럭입력에만 클럭신호를 사용하고, 다른 플립플롭은 각 플립플롭의 출력을 다음 플립플롭의 클럭입력으로 사용합니다.

즉, 플립플롭의 출력이 다른 플립플롭을 동작시키는 원인으로 작용하게 됩니다.

4bit 비동기 2진카운터

비동기 카운터는 정의에서 설명한 것 처럼 플립플롭의 출력이 다음 플립플롭의 클럭신호로 들어갑니다.

위 회로는 하강에지에서 동작하기 때문에 이전의 플립플롭이 1에서 0으로 떨어질때 ( 올림이 발생할때 )

다음 자리수가 증가하는 원리로 동작합니다.

( 위 회로에서 출력 Q'가 다음 플립플롭의 클럭신호로 들어가면 하향카운터로 동작합니다. )

동기 카운터보다 회로가 더 간결하게 설계가 되는 모습입니다.

하지만 비동기 카운터는 플립플롭의 수가 많아질수록 딜레이가 커지면서 문제가 발생할 수 있습니다.

 

비동기 상하향 카운터는 다음과 같이 설계됩니다.

4bit 비동기 상하향카운터

S라는 신호를 이용해서 MUX를 컨트롤합니다.

S=0일때 Q신호가 다음 플립플롭의 클럭입력으로 들어가기 때문에 상향카운터로 동작합니다.

반면 S=1일때 Q'신호가 클럭입력으로 들어가기 때문에 하향카운터로 동작합니다.

 

 

이상으로 동기식, 비동기식 카운터 설계에대한 포스팅 마치도록하겠습니다.

오류가있거나 틀린부분이있으면 바로바로 지적해주시면 감사하겠습니다.

그림이 많고 회로 입출력이 다소 많이 등장해서 정리하는데 애를 좀 먹었네요 :)

오늘도 긴 글 봐주셔서 감사합니다. 좋은하루보내세요

댓글
공지사항