조합논리는 입력에 의해서만 출력이 결정되지만 기억해둘 수 없기 때문에 컴퓨터를 만들기는 부족하다. 순차 논리는 입력한 현재 상태와 과거 상태를 함께 고려한다.
시간을 표현하려면 주기(periodic)함수를 새용해 시간을 측정할 수 있다. 주기를 가지는 물리적인 요소로 괘종시계가 똑딱똑딱 움직이게하는 진자의 움직임을 예를 들 수 있다.
컴퓨터는 전자공학을 사용하기 때문에 진자가 스위치를 때리게하면 이런 주기적인 신호를 만들 수 있다. 하지만 이것은 너무 원시적인 방법이고 좀 더 효율적인 방법들을 알아보도록 하자
인버터의 출력을 입력에 연결해 생기는 되먹임(feedback)현상을 이용한다. 되먹임이 일어나면서 출력이 0과 1사이를 진동한다.
이 진동의 속도는 전파지연현상과 온도에 따라 달라지는 경향이 있기 때문에 크리스탈을 이용하면 보다 정확한 발진자를 만들 수 있다.
발진자는 컴퓨터에 시간을 셀 수 있게 해주는 신호인 클록을 제공한다. 클록은 순차회로에 가해지는 전기적 진동의 속도를 나타내는 단위로 사용되는데, 얼마나 빨리 진동하느냐에 따라 컴퓨터의 시간이 흐르는 속도(pace)를 결정하고, 이 클록의 최대 속도는 회로의 전파 지연시간에 의해 결정된다.
컴퓨터가 잘 작동하게 하기 위해 결국 이상적인 클록을 맞춰주는 것이 중요하다. 부품의 클록 한계치 별로 하나의 무더기(bin)으로 분류하는 binning작업을 해 컴퓨터의 구성요소를 여러가지 bin으로 분류하고 모든 부품이 고장나지 않을 범위 안에서 클록을 빠르게 공급하는 것을 오버클록킹(overclocking)이라고 한다.
시간을 표현하는 장치들은 위에서 설명하였다. 이제 기억을 하는 장치들에 대해 알아보겠다. 시간표현장치를 이용하지 않는 장치도 이용하는 장치도 모두 존재한다.
래치는 클록 입력 없이 정보를 기억하는데 사용된다. 어떤 게이트를 사용해 정보를 기억하는지에 따라 종류가 구분된다.
액티브 하이(active high)와 액티브 로우(active low)
상태가 1일 때 동작하는 회로는 액티브 하이, 상태가 0일 때 동작하는 회로는 액티브 로우라고 부른다.
여기서는 reset은 액티브 하이, 반전 reset은 액티브 로우를 의미한다.
플립플롭과 래치의 가장 큰 차이는 플립플롭은 클록의 입력을 가지며 클록의 입력에 따라 출력의 상태를 바꾼다는 것이다. 플립플롭을 만들 때는 래치를 기본요소로 사용한다.
플립플롭은 양의 에지에 의해 변화가 촉발되는 상승에지트리거와 음의 에지에 의해 변화가 촉발되는 하강에지트리거로 나뉜다.
에지(Edge)
논리수준이 한 수준에서 다른 수준으로 바뀌는 이 전이를 에지라고 부른다. 이 에지는 시간에 대한 판정기준이라고 볼 수 있으며 클럭이 변화되는 순간 상태에 따라 계산 수행여부를 판단하는 것을 에지트리거(edge trigger)방식이라고 한다.
아래 사진은 플립플롭의 스키메틱 기호이다. D는 데이터, CK는 클록을 의미한다.
CK신호가 0에서 1로 바뀌는 시점에 D입력의 값이 플립플롭에 저장된다
플립플롭에서는 전파지연외에도 고려해야할 것들이 있다.
레지스터는 클록을 공유하는 여러 D플립플롭을 한 패키지에 넣은 것이다.
비트를 하나 기억할 때는 플립플롭이 유용하고, 레지스터를 사용하면 쉽게 여러 비트를 저장할 수 있다.