동기 카운터 설계관련이론동기 카운터는 모든 플립플롭이 같은 클럭 펄스를 받아 그것을 기준 클럭으로 사용하여, 모든 소자가 동시에 트리거 되며 변하는 카운터 회로를 말한다.동기 카운터를 설계하기 위해서는 우선 상태 다이어그램을 이용해서 진리표를 작성하여야 한다. 상태 다이어그램이란 플립플롭의 상태 변화는 입력(Event)에 의해 이루어지고 어떤 상태(Status/state)로 존재하는가를 출력으로 나타낼 수 있다. 이것을 다이어그램 형태로 정리한 것이다.크게 밀리 모델(Mealy model)과 무어 모델(Moore model)로 나뉘며 밀리 모델은 아웃풋과 인풋이 현재(present) 값에 의해 결정되며 무어 모델에 비해 일반적으로 사용되고 무어 모델은 아웃풋이 인풋의 영향 없이 현재 상태에 의해 결정되는 모델을 말한다. 아래는 밀리 모델과 무어 모델 상태 다이어그램의 예시이다. 동기 카운터에서 주 시퀸스가 되는 상태들은 반드시 상태 다이어그램에 명시되어야 하며 주 시퀸스가 아닌 상태들 또한 특정 방법을 이용하여 주 시퀸스로 돌아오는 상태여야 한다. 아래 그림은 3비트 카운터의 상태 다이어그램 예시이다.다음으로 앞서 만든 상태 다이어그램을 바탕으로 다음 플립플롭의 입력함수 및 회로의 출력함수를 바탕으로 상태표(next state table)를 작성한다. 상태표란 입력과 현재 상태에 따라, 다음 상태와 출력이 어떻게 변화하는가를 나타낸 표이다. 다시 말해 현재 상태와 입력조합으로 다음 상태와 출력을 나타내어 그것을 정리한 것이다. 일반적으로 Q 혹은 Q(t)는 현재상태, Q* 혹은 Q(t+1)은 다음상태를 의미하고 X는 인풋, Z는 아웃풋을 의미한다.다음으로 상태표를 이용해 간소화 모델(카르노맵)을 작성하여 논리회로의 기반을 구성하고최종적으로 회로도를 완성할 수 있다. 입력함수를 유도할 때는 다음 상태값이 1인 경우의 최소항들로 이루어진 최대항(SOP)을 구하거나 해당 플립플롭의 상태 변이표(state transition table)을 참조하면 되고 이로 인해 카르노맵에서는 사용하지 않는 상태 X(Don’t care)가 발생할 수도 있게 된다. 해당 X들은 카르노맵에 포함 시 간소화된다.