cnten(Count enable): 1인 경우에만 count가 증가 할 수 있음, 0인 경우는 count 증가 못함
ripple counter(비동기 카운터, asynchronous counter)
신호가 저레벨에서 고레벨 플리플롭으로 전파됨
t counter --> 가장 만들기 쉬움, 가장 기본이 되는 ripple counter임
낮은 자리의 비트가 1-->0으로 줄어들 때, 다음 자리의 비트가 0-->1로 변화(000 ~ 111까지 적어보면 알 수 있음 --> 귀납적으로 저런 규칙을 발견한 것!)
postive ff이므로 q'값을 다음 ff의 clock 값으로 넣어줌
ripple counter 단점
propagation delay
클럭 주기가 짧은 경우 더 치명적(같은 딜레이가 주기에 비해 큰 부분을 차지함)
비트가 큰 경우 더 치명적
이를 보완한 것이 동기 카운터임 --> 모두 같은 clock을 사용
synchronous counter(동기 카운터)
비동기 카운터와 달리 모든 플리플롭이 동시 변화(모두 같은 clock을 사용)
낮은 비트의 비트가 모두 1인 경우 --> 다음 값이 토글됨
ripple은 클락이 1-->0인 경우 즉각적으로 0-->1로 변화 VS 동기는 낮은 비트가 모두 1인 경우 다음 클락에서 0으로 변화(값이 변하는 것이 클락의 변화와 상태의 차이가 있음!) ==> ripple은 q(or q'-결과값)값이 Counter에 연결되어 있으므로 즉시 바뀌고, Synchronous는 Clock 값이 따로 있으므로 q(or q')은 다음 값에 영향을 줌!
t는 이전 ff의 바뀐 값이 바로 적용되는 것이 아니라, 이전 clock의 이전 ff의 t값이 적용됨