논리회로 설계 제8장 카운터 및 레지스터 카운터(counter)  어떤 이벤트(event)의 발생을 나타내는 입력 신호를 카 운트(count: 계수)하고, 그 값을 출력하는 순차회로 모 듈(sequential circuit.

Report
논리회로 설계
제8장 카운터 및 레지스터
카운터(counter)
 어떤 이벤트(event)의 발생을 나타내는 입력 신호를 카
운트(count: 계수)하고, 그 값을 출력하는 순차회로 모
듈(sequential circuit module)
 플립-플롭들의 수와 연결 방식에 따라, 카운트 할 수
있는 최대값 결정
 카운트 된 값을 나타내는 2진 비트 수만큼의 플립-플
롭들과 게이트들로 구성
카운터의 (동작 특성에 따른) 분류
 비동기식 카운터(asynchronous counter): 공통 클록을
사용하지 않기 때문에, 플립-플롭들의 동작 시간이 서로
일치하지 않는 방식의 카운터. 이 유형의 카운터에서는
한 플립-플롭의 출력이 결정되면, 다음 플립-플롭이 그
값을 받아서 동작을 수행하도록 구성
 동기식 카운터(synchronous counter): 하나의 공통 클록
이 카운터의 모든 플립-플롭들로 동시에 인가됨으로써,
플립-플롭들의 동작 시간이 일치되는 방식의 카운터.
레지스터(register): 여러 개의 데이터 비트들을
저장하기 위한 장치로서, 비트 수만큼의 플립-플
롭으로 구성.
 시프트 레지스터(shift register): 저장 기능 외에,
비트들을 좌측 혹은 우측으로 이동시키는 기능도
가진 레지스터
8.1 비동기식 카운터
 비동기식(asynchronous): 어떤 동작들이 시간적으로 동
시에 발생하지 않고, 순차적으로 혹은 서로 상관없이 발생
하는 동작 모드
 비동기식 카운터
 플립-플롭들을 직렬로 연결
 카운트 될 입력 펄스들은 첫 번째 플립-플롭의 클록(CLK) 입력으
로만 들어가며, 그 플립-플롭의 출력이 다음 플립-플롭의 클록 입
력으로 접속되고, 그 다음 플립-플롭들도 같은 방식으로 접속
 플립-플롭들은 앞에 위치한 플립-플롭의 출력 결과에 따라 순차
적으로 트리거 되기 때문에, 플립-플롭들의 상태 변화가 서로 다
른 시간에 발생
 리플 카운터(ripple counter)라고도 불림
8.1.1 2-비트 리플 카운터(2-bit ripple counter)
 두 개의 T 플립-플롭들로 구성
 플립-플롭의 T 입력은 모두 ‘high’ 상태로 고정
 카운트 될 입력 펄스들은 첫 번째 T 플립-플롭의 클록(CLK) 신
호로 입력
 첫 번째 플립-플롭(FF0)의 출력이 두 번째 플립-플롭(FF1)의
CLK 입력으로 접속
<물결(ripple)이 전파되는 모습과 유사하여 리플 카운터라고도 부름>
 카운터의 상태(혹은 출력값): 플립-플롭들의 출력 비트들(MSB:
Q1, LSB: Q0)
 카운팅 시퀀스(counting sequence):
Q1Q0 = 00→01→10→11
회로 구성도
입출력 파형
8.1.2 4-비트 리플 카운터
 네 개의 T 플립-플롭들로 구성
 직렬 연결
 입력 펄스  FF0의 CLK 입력으로 접속
 FF0의 출력  FF1의 CLK 입력으로 접속
 FF1의 출력  FF2의 CLK 입력으로 접속
 FF2의 출력  FF3의 CLK 입력으로 접속
 카운터의 상태(state): 플립-플롭들의 출력 비트들
(Q3 ,Q2 ,Q1 ,Q0)
 카운팅 시퀀스(counting sequence): 0000 ~ 1111
회로 구성도
 입출력 파형
 각 입력 펄스가 들어왔을 때 카운터의 모든 플립-플롭들
이 응답하여 상태를 결정하는데 걸리는 전체 동작 시간:
플립-플롭의 수 × tP
(단, tPLH = tPHL = tP 로 가정)
[예] tP = 20ns일 때, 각 입력 펄스에 대한 동작 지연시간
 2-비트 리플 카운터의 경우, 2 × 20ns = 40ns
 4-비트 리플 카운터의 경우, 4 × 20ns = 80ns
 유의사항: 입력 펄스간 간격이 지연시간보다 더 짧아지면, 안정된 카
운터 상태값을 얻을 수 없음  입력 펄스의 주파수가 제한됨 (리플
카운터는 주로 적은 수의 계수에 사용)
[예제 8-1] tPLH = tPLH = 20ns일 때, 입력 펄스의 최대 허용 주파수
는? (단, 상태 확인을 위한 여유 시간 = 40ns)
 Fmax = 10 MHz
8.1.3 BCD 리플 카운터
 비동기식 10진 카운터(asynchronous decade counter)
= BCD 리플 카운터
 카운팅 시퀀스: 0000 ~ 1001
 상태 다이어그램
 회로 설계 방법: 카운터의 상태가 ‘1001’
다음에 (‘1010’ 이 아닌) ‘0000’으로
바뀌도록 하기 위하여, ‘1010’ 이 되는
즉시 모든 플립-플롭들의 /CLR 신호를
활성화시켜, 상태를 ‘0’으로 리셋
 회로 구성도 
[문제점]
불필요한 신호인 스파이크(spike)
파형이 발생
 입출력 파형
(스파이크형 펄스 발생을 피하기 위한 다른 설계)
JK 플립-플롭을 이용한 BCD 리플 카운터
 FF0 및 FF2는 J, K 입력이 모두 1로
고정  CLK의 하강 에지에서 항상 토글
 Q3'을 FF1의 J 입력으로 접속, & K = 1
 FF1은 Q3 = 0일 때만 토글
 Q1 및 Q2를 AND 게이트 통과시킨 후
FF3의 J 입력으로 접속하고, K = 1
 Q1 = Q2 = 1이라면, J = K = 1
Q0 를 FF3의 CLK 입력으로 접속
 Q1 = Q2 = 1일 때, Q0의 하강 에지
에서 FF3가 토글
상태 ‘1001’  ‘0000’ 전이 순간의 동작
 상태가 1001일 때 Q3' = 0이므로, FF1의 입력은 J = 0 & K = 1이 된다.
이 때 10 번째 입력 펄스가 들어와서 Q0가 1→0으로 떨어지더라도, Q1
은 상태가 변하지 않고 ‘0’을 유지
 Q1의 상태가 변하지 않기 때문에, Q2는 ‘0’ 상태를 유지
 AND 게이트의 출력이 ‘0’이므로, FF3의 입력은 J = 0, K = 1. 이 때 10
번째 입력 펄스가 들어와서 Q0 가 1→0으로 떨어지면, Q3는 ‘0’으로 리
셋
 결과적으로, 10 번째 입력 펄스가 들어왔을 때 카운터의 상태는 ‘0000’
으로 리셋
 BCD 카운터의 직렬 연결
[예] 3개 직렬연결  000~999까지 카운트 가능
8.2 동기식 카운터
 카운트 될 입력 펄스를 모든 플립-플롭들의 클록 입력으
로 접속함으로써, 트리거 조건이 만족되면 플립-플롭들이
동시에 응답 하도록 구성  동작 시간 대폭 단축(한 개의
플립-플롭 동작 시간만큼만 지연)
8.2.1 2-비트 동기식 카운터(2-bit synchronous counter)
 카운트 할 입력 신호를 모든 플립-플롭들에 공통 클록으로 인가
 플립-플롭들이 입력 신호의 하강 에지에서 동시에 응답
 Q0 를 상위 플립-플롭인 FF1의 T 입력으로 접속
0
 입력 및 출력 파형
 동작 시간 = tP
(단, tPLH = tPHL = tP로 가정)
8.2.2 3-비트 동기식 카운터
 3개의 플립-플롭들을 이용하여 0~7까지 계수하는 카운터
 동기식 8진 카운터(synchronous octal counter)라고도 함
 회로 구성도
 Q1Q0 = 11인 경우에만
FF2가 토글
(Q2Q1Q0 = 011 혹은 111일 때)
 전체 응답 시간 = tp
(T 입력은 이전의 출력값들이
결정된 상태에서 세트 되므로,
AND 게이트의 지연은 동작
시간에 영향을 주지 않음)
8.2.3 4-비트 동기식 카운터
 상태 시퀀스: 0000 ~ 1111 (16진 카운터)
 입출력 파형
4-비트 동기식 카운터의 구성도
 카운트 (인에이블) 신호
= 1 : 카운트 동작 수행
= 0 : 카운트 동작을 수행하지 않음
 회로구성
 카운트 신호 & Q0 = 1일 때 FF1 토글
 카운트 & Q0 = Q1 = 1일 때 FF2 토글
 카운트 & Q0 = Q1 = Q2 = 1일 때 FF3 토글
 전체 응답 시간 = tp
[유의사항]
입력 펄스의 최소 허용 주기
= tp + {3 × 게이트 지연}
 입력 신호의 최대 주파수 제한
3
8.2.4 병렬 적재 기능을 가진 카운터
 초기값을 미리 세트(적재)시킬 수 있는 기능을 가진 카운터
 병렬 적재(parallel load): 초기값을 나타내는 2진 비트들
(I3,I2,I1,I0)을 플립-플롭들에 저장하는 동작
 제어 신호에 의한 카운터의 동작 모드
병렬 적재 기능을 가진 카운터의 내부 구성도
8.2.5 업-다운 카운터(up-down counter)
 업-카운팅(up-counting) 및 다운-카운팅(downcounting) 기능을 모두 가진 카운터
 업-다운 카운터의 상태 시퀀스
 다운-카운팅 시퀀스의 분석 결과
 Q0는 1부터 시작하여 입력 펄스가 들어올 때마다 보수
값으로 반전
 Q1은 그 하위 상태 비트인 Q0 = 0(Q’0 = 1) 일 때 입력 펄
스가 들어오면, 반전
 Q2는 그 하위 상태 비트들인 Q1Q0 = 00(Q’1Q’0 = 11) 일
때 입력 펄스가 들어오면, 반전
 회로 구성도
1: UP counting
0: DOWN counting
8.3 동기식 카운터의 설계
8.3.1 동기식 mod-N 카운터
 mod-N 카운터(modulo-N counter): 카운터가 가질 수
있는 상태의 수가 N 개인 카운터. 즉, 입력 펄스를 카운트
하여 0 ~ (N-1) 까지를 나타내는 상태들을 순차적으로 발
생하고, 다시 그 상태 시퀀스를 반복하는 카운터
[예] 0~9까지 카운트 하는 BCD 카운터: 모듈러-10 카운터
[설계 예] Mod-6 카운터: 6개의 상태를 가지는 카운터로서,
000~101까지의 상태를 출력; 디지털 시계의 분(minute)를 가리키는
수(00~59) 중의 앞 자리 숫자(0~5)를 결정하는 데 사용
동기식 카운터의 설계 사례

Mod-6 카운터: 6개의 상태를 가지는 카운터로서,
000~101의 값들을 출력
 주요 용도: 디지털 시계에서 분(minute)를 가리키는 수(00~59)
중의 앞 자리 숫자(0~5)를 결정하는 데 사용
 mod-6 카운터의 상태 다이어그램
 mod-6 카운터의 상태표 및 T 플립-플롭을 이용하는 경
우의 입력 값들

카노프 맵을 이용한 입력 함수의 유도
(a) TA 에 대한 카노프 맵
 TA = AC+BC = (A+B)C
 TB = A'C
 TC = 1
(b) TB 에 대한 카노프 맵
 T 플립-플롭을 이용한 mod-6 카운터의 구성도
 JK 플립-플롭을 이용한 mod-6 카운터의 설계
 상태표
 JK 플립-플롭의 입력들에 대한 카노프 맵
 JK 플립-플롭들의 입력 함수들
 JA = BC
 JB = A'C
 JC = 1
KA = C
KB = C
KC = 1
 JK 플립-플롭을 이용한 mod-6 카운터의 구성도
[비교] T 플립-플롭을 이용한 경우보다 게이트 수 감소
8.3.2 불규칙한 시퀀스를 가지는 mod-5 카운터
 불규칙한 상태 시퀀스(irregular state sequence):
000 → 010 → 100 → 101 → 111 (→ 000으로 반복)
 JK 플립-플롭을 이용하는 경우의 상태표
Mod-5 카운터 설계를 위한 카노프 맵들
 카노프 맵 작성 시 유의 사항: 상태표에 표시된 셀들만 해당
값으로 채우고, 나머지는 don’t care(X)로 채워야 함
Mod-5 카운터 설계를 위한 카노프 맵들(계속)
 입력 함수들
 JA = B
 JB = A'+C
 JC = A
KA = B
KB = 1
KC = B
 mod-5 카운터의 구성도
8.3.3 그레이 코드 카운터
 카운터 입력 펄스들이 들어올 때 카운터의 상태가 그레이
코드의 순서대로 전이되는 카운터
 3-비트 그레이 코드 카운터의
상태 다이어그램
 상태표 (JK 플립-플롭 사용)
 그레이 코드 카운터를 위한 카노프 맵들 : 그림 8-27
JA
KA
JB
KB
JC
KC
 입력 함수들
 JA = BC' KA = B'C'
 JB = A'C KB = AC
 JC = AB + A'B' = (A ⊕ B)'
KC = AB'+ A'B = (A ⊕ B)
 그레이 코드 카운터의 회로 구성도
8.3.4 동기식 BCD 카운터
 비동기식 BCD 카운터의 단점(저속)을 개선
 카운팅 시퀀스: 0000→0001→0010→0011→0100→0101
→0110→0111→1000→1001
 상태표
입력 함수들




JA = BCD
JB = CD
JC = A'D
JD = 1
KA = D
KB = CD
KC = A'D
KD = 1
8.3.4 동기식 카운터의 직렬 연결
 동기식 카운터들을 직렬로 연결하면, 필요한 자릿수를 가
지는 카운터 구성 가능
[예]스탑-워치(stop-watch): 0부터 59초까지의 시간을 측
정하는 데 사용되는 간단한 디지털 시계
 구성 방법
• 10 자릿수를 위한 mod-6 카운터와 1 자릿수를 위
한 mod-10 카운터를 직렬로 연결
• BCD-7SEG 디코더(BCD-to-seven- segment
decoder)를 이용하여 코드 변환
• 7-세그먼트 디스플레이 접속
 스탑-워치의 회로 구성도
(9.4절에서 설계)
8.4 레지스터(register)

데이터 비트들을 저장하기 위한 장치로서, 그 비트
수만큼의 플립-플롭들로 구성

D 플립-플롭들이 사용되며, 각 플립-플롭 당 한 비트씩
저장

길이: 4-비트, 8-비트, 16-비트, 32-비트, 64-비트

주요 용도: 컴퓨터 중앙처리장치(CPU)의 내부 기억장치

시프트 레지스터(shift register): 저장된 비트들을 좌측
혹은 우측 방향으로 이동시키는 기능이 추가된 레지스터
8.4.1 병렬 레지스터(parallel register)
 데이터 비트가 D 플립-플롭에 저장되는 원리
 D 플립-플롭의 D 입력에 데이터 비트값이 인가되면,
CLK 신호의 트리거 에지에서 저장(래치)됨
[예] D 입력에 ‘1’이 인가되었을 때, CLK의 하강 에지에서
데이터가 저장되는 동작
 4-비트 병렬 레지스터에서의 병렬 적재 동작
 네 개의 입력 비트들이 동시에 각 D 플립-플롭들의 입
력으로 인가
 CLK 신호의 트리거 에지에서 동시에 저장
 8-비트 병렬 레지스터의 블록도
8.4.2 직렬 레지스터(serial register)
 D 플립-플롭들을 직렬로 접속
 저장할 데이터를 한 비트씩 입력
[예]4-비트 직렬 레지스터
 데이터 저장 방법: LSB부터 MSB로 한 비트씩 입력
[예] 데이터 ‘1011’ 저장: 1, 1, 0, 1의 순서로 입력
8.4.3 시프트 레지스터(shift register)

저장된 데이터 비트들을 좌측 혹은 우측으로 이동시킬
수 있는 기능을 가진 레지스터

우측 시프트(right shift)

좌측 시프트(left shift)
[예] 시프트 레지스터에 (1010) 이 저장되어 있는 상태에서,
입력 신호가 (1, 1, 0, 1)의 순서로
(a)좌측으로부터 인가되어 우측 시프트되는 경우
(b)우측으로부터 인가되어 좌측 시프트되는 경우
 양방향 시프트 레지스터의 내부 구성도
 회전(rotate; 순환 시프트(circular shift)라고도 함)
시프트 동작을 이용한 직렬 데이터 전송

similar documents