1. 디지털 시계의 구성
2. 동기식 modulo-N 카운터 설계
초의 일의자리 10진 카운터 증가시점 : 1 Hz 클럭이 인가될 때마다 이와 같이 시계를 구성하는 각 카운터가 1이 증가하는 시점이 다르기 때문에 각 카운터마다 enable 기능을 갖는 카운터를 설계해야 한다. 즉, 각 카운터는 자신의 우측에 있는 카운터로부터 입력되는 enable 제어신호 Ei가 1일 때만 동작(1증가)하도록 설계해야 하며, 또한 자신의 좌측에 있는 카운터로 공급할 enable 신호 Eo를 만들어 출력해주어야 한다. 앞장에서 배웠던 내용들을 충분히 숙지하고 있는 독자라면 입력 Ei가 1일 때만 1씩 증가하는 동기식 카운터는 쉽게 설계할 수 있으리라 생각된다. 따라서 여기서는 자신의 좌측에 있는 카운터에 공급해 주어야할 Eo 출력신호를 만드는 방법을 먼저 고려해보자.대부분 카운터를 설계할 때 자신의 왼쪽에 있는 카운터에 공급해 줄 enable 출력 Eo는 단순히 현재 카운터가 최상위 값을 가리키고 있을 때 1을 출력하면 된다고 생각을 한다. 하지만 이는 잘못된 생각임을 그림 14-2에 나타낸 예를 통해 설명하도록 한다. 그림에서 알 수 있듯이 초를 나타내는 부분이 50초를 넘어서면서부터 초 부분의 6진 카운터는 최상위 값 5를 나타내게 된다. 이때 Eo가 1로 출력이 되면 분 부분의 10진 카운터의 Ei가 1로 되어 분의 10진 카운터도 클럭펄스에 동기되어 초 부분의 10진 카운터와 같이 증가됨을 볼 수 있으며, 이는 우리가 원하는 동작이 아님이 분명하다. 따라서 단순히 출력 Eo를 만들기 위해 자신의 카운터 값이 최대값인 경우만을 디코딩해서는 안되며, 카운터의 단계가 올라 갈수록 현재 자신의 값을 비롯하여 자신의 밑에 있는 모든 카운터가 각자의 최상위 값을 가지고 있을 경우에 출력 Eo를 1로 만들어 주어야 한다. 이와 같이 하기 위해서는 그림 14-3에 나타낸 것과 같이 모든 카운터는 자신이 최대값이 되었을 때 1이 되는 신호 Eo*와 자신에게 입력으로 들어오는 Ei 신호를 AND 연산한 결과를 출력 Eo로 내보내면 된다. 이와 같은 원리에 따라 설계된 enable 출력신호 Eo 생성회로를 그림 14-4에 나타내었다. 이제 입력 Ei가 1일 때만 동작하는 카운터 자체를 설계해 보도록 하자. enable이 없는 6진카운터와 BCD 카운터는 이미 9.2절에서 만들어 보았다(그림 9-4, 그림 9-6 참조). 여기서는새로운 회로를 만들기보다는 이미 만든 회로에 간단하게 enable 기능을 추가하는 방법을 알아보기로 한다. 설계하고자 하는 카운터는 입력 Ei가 0일 경우에는 동작을 하지 않고 현재값을 유지하고 있으면 된다. JK 플립플롭의 입력 J와 K에 각각 0이 들어오면 현재 값을 유지하는 특성을 이용하여 입력 Ei와 각 플립플롭의 입력 J, K로 들어가는 값을 각각 AND 연산하여 J, K에 입력하면 이 카운터는 enable 기능을 갖는 카운터로 바뀌게 될 것이다. 그림 14-5에 비교를 위해 enable 기능이 없는 6진 카운터와 enable 기능을 갖는 6진 카운터를 같이 나타내었다. enable 기능이 있는 카운터에서 Ei가 0일 경우에 모든 플립플롭의 J,K 입력은 0이 되어 현재 값이 유지되어 카운터가 멈추게되고, 1일 경우에는 Ei를 연결하기 전과 같은 값이 플립플롭의 입력 J, K로 들어가기 때문에 Ei가 없었을 때와 같이 동작한다. 그림 14-5의 enable 출력 Eo는 그림 14-4에서 살펴본 바와 같이 카운터가 최대값일 때 Ei와 AND 연산을 하여 출력하면 된다. 즉 6진 카운터에서 최대값(101)은 C와 A가 1일 때이므로 C, A, Ei를 AND 연산하면 Eo가 된다. 3. 시간을 표시하기 위한 디코더 설계 그림 4-17에 나타낸 12시간 표시기 디코더 회로는 보다 쉽게 회로를 설계할 수 있도록TTL 7447을 이용하는 경우이다. 즉 TTL 7447은 0에서 9사이의 값을 입력받을 경우 7세그먼트 표시기에 우리가 실제 사용하는 숫자 모양으로 표시할 수 있도록 해주는데 착안하여 그림 14-7(b)의 진리표에 나타낸 것과 같이 입력되는 2진수를 BCD로 변환하는 역할만을 수행하도록 디코더를 설계하였다. 진리표에서 출력 E는 입력받은 숫자의 십의자리를 나타내는 것으로 십진수로 10, 11 또는 0이 입력될 때 1이 출력된다. 진리표에서 나머지 출력 F,G, H, I는 일의자리를 나타내기 위한 4비트를 의미한다. 표에서 입력이 0000일 경우 출력은 10010(BCD로 12)이 출력되고, 1010 또는 1011이 입력될 경우에는 각각 10000(BCD로 10), 10001(BCD로 11)이 출력됨을 볼 수 있다. 진리표로부터 논리식을 구하는 과정은 독자 스스로 해보길 바란다. 4. 오전/오후 표시 회로 설계 5. 시간 설정 회로 |