counter 는 숫자를 세는 역할을 하는 회로이다.
숫자를 2진수의 형태로 셀 때에는 4bit일 경우에
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
의 순서로 세게 된다. 위의 숫자들을 보게되면 숫자들의 규칙은 맨 처음 첫번째 비트의 경우는 0,1의 반복이다. 두번째 비트의 경우는 0011 순이고, 세번째는 000111의 순서이다. 이를 clock의 관점으로 clock period와 같이 생각 해본다면 비트가 늘어날수록 토글의 period 가 두배씩 늘어난다고 생각할 수 있다.
따라서 두번째 t ff의 clock 을 전 tff의 output을 받아서 활용할 수 있다. 이러한 방법을 asynchronous 라고 하는데, 이는 clock을 전 state의 결과값을 받아서 하는 것을 뜻한다. 하지만 이렇게 할 경우에 전 state의 output을 활용하기 때문에 계속 조금씩 밀려 delay 가 발생하게 된다. 이렇게 delay가 조금씩 발생해서 한 period 를 넘게 되면 문제가 발생한다. 따라서 asynchronous의 경우는 확장의 한계가 정해져있다고 할 수 있다. 위처럼 circuit을 구현하면 up counter, 계속 하나씩 늘어나도록 세는 회로가 된다. 그리고 위의 회로의 특징은 첫 TFF의 경우는 clock의 rising edge에서 반응하지만, 두번쨰 부터는 전 output에 대하여 falling edge에서 반응하게 된다.
이를 조금 수정하여 전 TFF의 invert의 경우를 사용하지 않고 그대로를 사용하게 된다면
위와 같이 나타낼 수 있고, 위는 up, 증가하는 형태로 counting 하는 것이 아닌 감소하는 형태로 센다. 또한 위는 모두 rising edge에서 반응하게 된다. 하지만 위의 두 방법 모두 delay 가 발생하는 단점이 있기 때문에 이를 개선하기 위해서 synchronous 의 방법으로 clock을 global 하게 연결 한다면 결과값 변화의 특징을 찾아본다면
위와 같은 규칙을 찾을 수 있다. 현재 비트의 전 비트가 모두 1로 채워 지면 그 다음 클락에 1로 바뀐다.
이를 회로로 표현 한다면
위와 같이 나타낼 수 있다. 위는 clock을 global 로 연겨 하렸기 때문에 delay가 존재하지 않는다.
up counter와 down counter을 합친 카운터 또한 구현 가능하다.
tc는 terminal count 로, 초기 값으로 돌아가기 전 값을 말한다. up counter의 경우는 1111, down counter의 경우는 0000 이다. 따라서 tc를 detect 할 때에 1111만을 detect 하기 위해 and 0000만을 detect 하기 위해 nor을 사용한다.
2bit BCD counter one
이는 2자리 수를 카운트 할 때에 0 - 99 지 센다고 하면 총 7개의 비트가 필요하다 하지만 이를 10진수를 바꿀 때에 복잡하기 때문에 한 비트를 추가해서 한자리당 4비트로 하여 구현을 하였다. 이때에 load는 clear 하는 경우로 clear가 들어왔을 때와 9가 있을 때에 clear가 된다. 그리고 이의 clock 은 synchronous 하게 연결 되어있다 그 이유는 9가 출력 되면 9가 표시된 이후에 초기화 되어야 하기 때문에 async 로 연결하게 되면 9 출력 후 바로 바뀌기 때문에 9가 글리치 처럼 짧게 나타난다.
'논리회로 설계' 카테고리의 다른 글
register (0) | 2022.06.01 |
---|---|
Sequential circuit (0) | 2022.05.30 |
논회설 bit storage (0) | 2022.05.23 |
논회설 addition (0) | 2022.05.22 |
mux & decoder (0) | 2022.05.16 |