논리회로 설계 제8장 카운터 및 레지스터 카운터(counter) 어떤 이벤트(event)의 발생을 나타내는 입력 신호를 카 운트(count: 계수)하고, 그 값을 출력하는 순차회로 모 듈(sequential circuit.
Download
Report
Transcript 논리회로 설계 제8장 카운터 및 레지스터 카운터(counter) 어떤 이벤트(event)의 발생을 나타내는 입력 신호를 카 운트(count: 계수)하고, 그 값을 출력하는 순차회로 모 듈(sequential circuit.
논리회로 설계
제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)라고도 함)
시프트 동작을 이용한 직렬 데이터 전송