목차
디지털 시계
1. 1 디지털 시계의 구성
1. 2 동기식 modulo-N 카운터 설계
1. 3 시간을 표시하기 위한 디코더 설계
1. 4 오전/오후 표시 회로 설계
1. 5 시간 설정 회로
1. 1 디지털 시계의 구성
1. 2 동기식 modulo-N 카운터 설계
1. 3 시간을 표시하기 위한 디코더 설계
1. 4 오전/오후 표시 회로 설계
1. 5 시간 설정 회로
본문내용
입력받아 BCD로 변환하여 출력하는 디코더이며, 그림 14-6 또는 그림 14-7과 같이 설계할 수 있을 것이다.
그림 14-6에 나타낸 디코더는 12진 카운터의 값을 입력으로 받아 직접 7세그먼트 표시기를 구동할 수 있는 출력을 만들어내도록 설계하는 경우이다. 이 경우 그림 14-6(b)와 같은 진리표에 따라 디코더 회로를 설계할 수 있으며, 직접적인 회로 설계는 독자에게 맡긴다.
그림 14-6. 12시간 표시기 디코더(I)
그림 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)이 출력됨을 볼 수 있다. 진리표로부터 논리식을 구하는 과정은 독자 스스로 해보길 바란다.
그림 14-7. 12시간 표시기 디코더(II)
1. 4 오전/오후 표시 회로 설계
현재까지 설계한 시계 회로는 12시간 단위로 동작을 하도록 설계하였다. 이제 현재 시간이 오전인지 오후인지를 나타낼 수 있도록 하는 회로를 설계해보자.
오전/오후의 표시는 시간이 11시59분 59초에서 12시로 변할 때에 맞추어 오전/오후 표시가 바뀌도록 하면 될 것이다. 따라서 그림 14-8에 나타낸 회로와 같이 시를 나타내는 12진 카운터의 enable 출력 Eo를 T 플립플롭의 입력에 연결해주면 된다. 참고로 앞에서 설계했던 시분초들을 나타내는 각 카운터들의 Eo 출력은 자신의 카운터 값이 최대값일 때 무조건 1이 되는 것이 아니라 자신의 카운터 값이 최대값이면서 동시에 아랫자리로부터의 Ei가 1이 입력될 때 Eo 출력이 1이 되도록 설계하였고, 또한 아랫자리 플립플롭의 Eo를 윗자리 플립플롭의 Ei로 차례로 연결하여 사용하기 때문에 결국 시를 나타내는 12진 카운터는 자신의 카운터 값이 최대값(11시)인 구간의 마지막 한 클럭 주기 동안(11시 59분 59초)만 1이 출력된다. 따라서 그림 14-8의 T 플립플롭은 정확히 12시간마다 한번씩 상태값을 바꾸게 된다.
그림 14-8에 나타낸 오전/오후 표시 회로에서는 LED 2개를 사용하여 오전/오후를 표시하도록 하였으며, T 플립플롭의 값에 따라 오전 또는 오후에 해당하는 LED가 켜지게 된다.
그림 14-8. 오전/오후 표시 회로
1. 5 시간 설정 회로
당연히 시계는 시간을 맞출 수 있는 기능이 있어야 한다. 따라서 이제 시간을 설정할 수 있도록 하는 회로를 추가해 보도록 하자.
먼저 앞에서 설계한 시계 회로의 시분초를 표시하는 각 카운터는 enable 입력 Ei에 1이 들어오고 있을 때 클럭에 맞추어 자신의 값을 1씩 증가시킨다는 사실에 착안해 보자. 값을 변화시키고자 하는 카운터의 Ei 입력을 적당한 시간동안 1로 만들어 주면 시간을 맞출 수 있게 될 것이다. 예를 들어 현재 4시를 나타내고 있는 12진 카운터의 값을 7시로 바꾸고 싶을 경우에는 3 클럭 주기 동안 Ei를 1로 해주면 된다. 그러나 여기에는 좀 더 고려해야 할 점이 있다. 즉, 어떻게 하면 정확히 3 클럭 주기 동안만 Ei에 1을 넣어 줄 수 있을까 하는 문제와 이렇게 Ei에 1을 넣어주는 동안 다른 카운터들이 계속 동작을 하도록 해야 할지 아니면 멈추도록 해야 할지를 생각해 보아야 한다. 문제를 간단히 하기 위해 여기서는 먼저 시간을 설정하는 동안에는 시계가 동작하지 않도록 하고, 정확히 원하는 주기동안 Ei를 1로 만들어 주는 문제는 스위치를 한번 눌렀다 땔 때마다 한 클럭 주기 동안 1을 출력해 주는 단발펄스 발생회로(13장 그림 13-2 참조)를 사용해서 회로를 설계하기로 한다.
그림 14-9에 시와 분을 설정할 수 있는 회로를 나타내었다. 만일 원한다면 초도 설정할 수 있도록 동일한 회로를 초의 Ei 입력측에 추가하면 되며, 이에 대해서는 여러분이 직접 해보길 바란다. 그림 14-9 회로는 모드(mode)입력 M이 1일 경우에는 앞에서 설계했던 회로에서와 같이 초자리 10진 카운터의 Ei에 1이 공급되어 정상적인 카운트 동작을 수행하며, M이 0이 되면 카운트 동작을 중지한다. 즉, 동작모드가 M=1일 경우에는 정상적인 시계로 동작하고, M=0일 경우에는 시간설정 모드가 되어 시간을 맞출 수 있게 된다. 시간을 맞추기 위해서는 M=0인 상태에서 각 카운터의 Ei에 연결된 스위치를 원하는 횟수만큼 눌렀다 떼주면 된다. 그런데 여기서 한가지 더 고려해야 할 점이 있다. 즉, 시분초를 나타내기 위한 카운터는 현재 1 Hz 클럭에서 동작하도록 설계되어 있으므로 이 회로에서 시간을 맞추기 위해서는 스위치를 누른 후 적어도 1초 동안 있다가 스위치를 떼어야 정확한 동작을 기대할 수 있다. 따라서 시간을 맞추는데 일반적으로 수십초 정도의 비교적 오랜 시간이 걸릴 수 있다. 이를 해결하기 위해서는 보다 빠른 클럭을 사용하면 될 것이다. 즉, 정상적인 시계 동작 모드(M=1)에서는 1 Hz로 동작하는 클럭이 CLK에 입력되도록 하고, 시간 설정 모드(M=0)에서는 대략 10 Hz 이상의 보다 빠른 클럭이 CLK에 입력되도록 하면 될 것이다. 이에 대한 회로 설계는 여러분이 직접 해 보길 바란다. 또한 그림 14-9의 단발 펄스 발생 회로는 13장 그림 13-2에서 설명했던 단발 펄스 회로와 동일하되 E 입력이 1일 경우에만 출력이 나가도록 한 회로이며, 상세한 설명은 13장을 참조하기 바란다.
(a) 시간 설정 회로
(b) 단발펄스 발생 회로
그림 14-9. 시간 설정 회로
그림 14-6에 나타낸 디코더는 12진 카운터의 값을 입력으로 받아 직접 7세그먼트 표시기를 구동할 수 있는 출력을 만들어내도록 설계하는 경우이다. 이 경우 그림 14-6(b)와 같은 진리표에 따라 디코더 회로를 설계할 수 있으며, 직접적인 회로 설계는 독자에게 맡긴다.
그림 14-6. 12시간 표시기 디코더(I)
그림 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)이 출력됨을 볼 수 있다. 진리표로부터 논리식을 구하는 과정은 독자 스스로 해보길 바란다.
그림 14-7. 12시간 표시기 디코더(II)
1. 4 오전/오후 표시 회로 설계
현재까지 설계한 시계 회로는 12시간 단위로 동작을 하도록 설계하였다. 이제 현재 시간이 오전인지 오후인지를 나타낼 수 있도록 하는 회로를 설계해보자.
오전/오후의 표시는 시간이 11시59분 59초에서 12시로 변할 때에 맞추어 오전/오후 표시가 바뀌도록 하면 될 것이다. 따라서 그림 14-8에 나타낸 회로와 같이 시를 나타내는 12진 카운터의 enable 출력 Eo를 T 플립플롭의 입력에 연결해주면 된다. 참고로 앞에서 설계했던 시분초들을 나타내는 각 카운터들의 Eo 출력은 자신의 카운터 값이 최대값일 때 무조건 1이 되는 것이 아니라 자신의 카운터 값이 최대값이면서 동시에 아랫자리로부터의 Ei가 1이 입력될 때 Eo 출력이 1이 되도록 설계하였고, 또한 아랫자리 플립플롭의 Eo를 윗자리 플립플롭의 Ei로 차례로 연결하여 사용하기 때문에 결국 시를 나타내는 12진 카운터는 자신의 카운터 값이 최대값(11시)인 구간의 마지막 한 클럭 주기 동안(11시 59분 59초)만 1이 출력된다. 따라서 그림 14-8의 T 플립플롭은 정확히 12시간마다 한번씩 상태값을 바꾸게 된다.
그림 14-8에 나타낸 오전/오후 표시 회로에서는 LED 2개를 사용하여 오전/오후를 표시하도록 하였으며, T 플립플롭의 값에 따라 오전 또는 오후에 해당하는 LED가 켜지게 된다.
그림 14-8. 오전/오후 표시 회로
1. 5 시간 설정 회로
당연히 시계는 시간을 맞출 수 있는 기능이 있어야 한다. 따라서 이제 시간을 설정할 수 있도록 하는 회로를 추가해 보도록 하자.
먼저 앞에서 설계한 시계 회로의 시분초를 표시하는 각 카운터는 enable 입력 Ei에 1이 들어오고 있을 때 클럭에 맞추어 자신의 값을 1씩 증가시킨다는 사실에 착안해 보자. 값을 변화시키고자 하는 카운터의 Ei 입력을 적당한 시간동안 1로 만들어 주면 시간을 맞출 수 있게 될 것이다. 예를 들어 현재 4시를 나타내고 있는 12진 카운터의 값을 7시로 바꾸고 싶을 경우에는 3 클럭 주기 동안 Ei를 1로 해주면 된다. 그러나 여기에는 좀 더 고려해야 할 점이 있다. 즉, 어떻게 하면 정확히 3 클럭 주기 동안만 Ei에 1을 넣어 줄 수 있을까 하는 문제와 이렇게 Ei에 1을 넣어주는 동안 다른 카운터들이 계속 동작을 하도록 해야 할지 아니면 멈추도록 해야 할지를 생각해 보아야 한다. 문제를 간단히 하기 위해 여기서는 먼저 시간을 설정하는 동안에는 시계가 동작하지 않도록 하고, 정확히 원하는 주기동안 Ei를 1로 만들어 주는 문제는 스위치를 한번 눌렀다 땔 때마다 한 클럭 주기 동안 1을 출력해 주는 단발펄스 발생회로(13장 그림 13-2 참조)를 사용해서 회로를 설계하기로 한다.
그림 14-9에 시와 분을 설정할 수 있는 회로를 나타내었다. 만일 원한다면 초도 설정할 수 있도록 동일한 회로를 초의 Ei 입력측에 추가하면 되며, 이에 대해서는 여러분이 직접 해보길 바란다. 그림 14-9 회로는 모드(mode)입력 M이 1일 경우에는 앞에서 설계했던 회로에서와 같이 초자리 10진 카운터의 Ei에 1이 공급되어 정상적인 카운트 동작을 수행하며, M이 0이 되면 카운트 동작을 중지한다. 즉, 동작모드가 M=1일 경우에는 정상적인 시계로 동작하고, M=0일 경우에는 시간설정 모드가 되어 시간을 맞출 수 있게 된다. 시간을 맞추기 위해서는 M=0인 상태에서 각 카운터의 Ei에 연결된 스위치를 원하는 횟수만큼 눌렀다 떼주면 된다. 그런데 여기서 한가지 더 고려해야 할 점이 있다. 즉, 시분초를 나타내기 위한 카운터는 현재 1 Hz 클럭에서 동작하도록 설계되어 있으므로 이 회로에서 시간을 맞추기 위해서는 스위치를 누른 후 적어도 1초 동안 있다가 스위치를 떼어야 정확한 동작을 기대할 수 있다. 따라서 시간을 맞추는데 일반적으로 수십초 정도의 비교적 오랜 시간이 걸릴 수 있다. 이를 해결하기 위해서는 보다 빠른 클럭을 사용하면 될 것이다. 즉, 정상적인 시계 동작 모드(M=1)에서는 1 Hz로 동작하는 클럭이 CLK에 입력되도록 하고, 시간 설정 모드(M=0)에서는 대략 10 Hz 이상의 보다 빠른 클럭이 CLK에 입력되도록 하면 될 것이다. 이에 대한 회로 설계는 여러분이 직접 해 보길 바란다. 또한 그림 14-9의 단발 펄스 발생 회로는 13장 그림 13-2에서 설명했던 단발 펄스 회로와 동일하되 E 입력이 1일 경우에만 출력이 나가도록 한 회로이며, 상세한 설명은 13장을 참조하기 바란다.
(a) 시간 설정 회로
(b) 단발펄스 발생 회로
그림 14-9. 시간 설정 회로
소개글