580 likes | 1.21k Views
HW (5 월 11 일 제출 ). P405 문제 7 a), d) 주어지 회로에 대한 상태표를 완성하고 주어진 입력에 대한 플립플롭 상태와 출력에 대한 타이밍도를 완성한다 . 그리고 MaxPlusII 를 이용하여 검증한 결과를 함께 제출한다. 7 장 순차회로 시스템의 설계. 플립플롭 설계 방법 동기식 카운터 설계 비동기 카운터 설계 상태표와 상태도의 유도. 예문 7,8,9. 예문 7 .
E N D
HW (5월 11일 제출) P405 문제 7 a), d) 주어지 회로에 대한 상태표를 완성하고 주어진 입력에 대한 플립플롭 상태와 출력에 대한 타이밍도를 완성한다. 그리고 MaxPlusII 를 이용하여 검증한 결과를 함께 제출한다.
7장 순차회로 시스템의 설계 • 플립플롭 설계 방법 • 동기식 카운터 설계 • 비동기 카운터 설계 • 상태표와 상태도의 유도
예문 7,8,9 • 예문 7. • 입력 (x )과 출력 (z) 이 각각 하나인 시스템으로 현재 입력이 1이고 이전 2클럭 동안에도 1이었을 때만 1을 출력하는 Mealy 시스템 • 예문 8. • 입력 (x )과 출력 (z) 이 각각 하나인 시스템으로 연속하여 3번1이 입력된 것보다 연속하여 3번0이 입력된 것이 최근일 경우에만 1을 출력하는 Moore 시스템 • 예문 9. • 0에서 7까지의 수를 나타내는 3비트 출력을 갖는 시스템으로 출력이 십진수로 0, 3, 2, 4, 1, 5, 7의 순서로 매 클럭마다 바뀌고 한 사이클이 끝나면 다시 반복하는 시스템
예문 10, 11 • 예문 10. • 2개의 입력(x1, x2)과 3개의 출력(z1, z2, z3)을 갖는 시스템으로 출력은 0에서 7 사이의 수를 나타낸다. • x1 =0일 때는 상향 카운트(up count), • x1 =1일 때는 하향 카운트(down count), • x2=0일 때는 카운트가 다시 반복되며, • x2=1일 때에 카운트가 끝나면 마지막 상태에 머무는 시스템 • x1 = 0, x2 = 0: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 . . . • x1 = 0, x2 = 1: 0 1 2 3 4 5 6 7 7 7 7 7 7 7 7 7 . . . • x1 = 1, x2 = 0: 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 . . . • x1 = 1, x2 = 1: 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 . . . • (물론 x1, x2의 값이 어느 시점에 바뀌면 출력의 순서가 바뀌게 될 것이다.) • 예문 11. 버스제어기 (생략)
동기 순차시스템 설계 절차 단계 1: 문제에 대한 설명으로부터 메모리에 저장되어야 하는 것을 결정한다. 즉 가능한 상태가 무엇인지를 결정한다. 단계 2: 필요하다면 입,출력을 2진수로 코드화한다. 단계 3: 시스템의 동작을 설명하기 위해 상태표나 상태도를 만든다. 단계 4 : 입출력 관계는 같지만 상태의 개수가 적은 상태표를 만들기 위해 상태 축소화 기법(9 장)을 사용한다. 단계 5 : 상태할당을 한다. 즉, 상태를 이진수로 코딩한다. 단계 6: 플립플롭의 종류를 선택하고 플립플롭의 입력 맵 또는 표를 만든다. 단계 7: 논리식을 구하고 회로도를 그린다. (조합논리 설계 방식)
상태할당과 2진수로 나타낸 상태표 그림 7.1 설계 예제(그림 6.3) 표 7.1 상태할당 예
설계 진리표 표 7.2 설계진리표 (상태표를 약간 변형 시킨 것) * 열 q 가 꼭 필요치는 않으나 상태가 숫자의 크기순서가 아닌 경우(표 7.1b, 표 7.1c) 는 도움이 된다. 표 7.3 출력진리표 * Moore 시스템인 경우는 별도의 출력 진리표 * Mealy 시스템인 경우는 설계진리표에 별도의 열(z)를 추가하여 출력을 나타냄
다음 상태 맵 과 출력 맵 맵 7.1 다음 상태 맵 출력 맵 q1* = xq2 + xq1 q2* = xq2’ + xq1 z = q1q2
예제 7.1 표 7.1b의 상태할당 q1* = xq1’q2’ + xq1q2 q2* = xq1’+ xq2’ z = q1’q2 * 표 7.1a의 할당에 비해 회로가 복잡
7.1 플립플롭 설계 기술 • 플립플롭 입력에 대한 진리표 구하기 위해 필요한 것 • 설계에 사용할 플립플롭에 대한 설계표 • 차기 상태를 구하기 위한 설계 진리표
플립플롭 설계표 • 플립플롭 설계표는 플립플롭 상태도에서 쉽게 얻을 수 있다. • 플립플롭의 상태표를 다르게 표현한 진리표는 각 행에 입력, 현재 상태와 차기 상태가 나열되어 있다. • 이 표로 부터 한 상태에서 원하는 상태로 가기 위한 입력 값을 결정할 수 있다. 표 7.4 플립플롭 설계표
D 플립플롭 설계표 표 7.5 D 플립플롭 설계표 그림 7.2 D 플립플롭 상태도
설계 진리표 • 설계 진리표는 플립플롭 입력 맵을 구하기 쉽게 상태표를 진리표 형식으로 변환한 것 • 즉, 차기상태와 출력을 현재 상태와 입력에 대한 함수로 나타내는 것이다 표 7.2 설계진리표 (상태표를 약간 변형 시킨 것)
입력 맵 (표 7.2 이용) 입력 맵과 입력 식 • 앞의 표 7.2로 부터 플립플롭 입력표를 만들어야 되는데 • D 플립플롭인 경우 D1과 D2가 q1*과 q2*와 동일하므로 추가로 이 들에 대한 열이 필요 없다. • 입력식은 다음과 같이 된다. • D1= xq2+ xq1 • D2= xq2' + xq1 • Z = q1q2 그림 7.3 D 플립플롭 이용한 구현
JK 플립플롭 설계표 그림 7.4 JK 플립플롭 상태도 표 7.6 JK 플립플롭 설계표
JK 플립플롭으로 설계 표 7.7플립플롭 입력표 • 설계 진리표에 플립플롭 입력들을 위한 4개의 열이 추가 됨. • 음영 처리된 열 q1과 q1*는 표 7.6을 이용하여 음영 처리된 플립플롭 입력 열들을 만든다.
JK 입력 맵 및 최종 해 맵 7.2 JK 입력 맵
T 플립플롭으로 설계(예제 7.3) 상태도와 플립플롭 설계표 시스템 설계를 위한 진리표
진리표 없이 상태표로부터 직접 맵을 구하는 방법 그림에서 보여주는 상태표로 부터 직접 q1*과 q2*를 위한 맵을 얻을 수 있다 그림 7.5상태표에서 맵 구하기 * 주의할 점은 상태표의 현상태가 2 진 순서로 되어 있지만, 맵 순서에 맞게 고쳐야 한다.
J1과 K1의 첫 번째 열을 얻기 위해 q1* 맵의 첫 번째 열을 사용한다 맵 7.4a J1과 K1의 첫 번째 열 • J1과 K1의 두 번째 열을 얻기 위해 q1* 맵의 두 번째 열을 사용한다 맵 7.4b J1과 K1의 두 번째 열
q2의 J 와 K를 찾기 위해 q2*의 맵과 q2열을 사용한다 맵 7.4c J2와 K2의 계산 • 위와 같은 방법으로 다른 플립플롭에도 적용할 수 있다.
Quick method • JK 플립플롭에 대한 빠른 방법 • 맵의 반이 무정의(적색으로 표시)이다. • 맵의 모든 1들은 관련된 변수가 없어지도록 무정의가 있다. 맵 7.4 JK 플립플롭 입력에서 무정의와 1의 쌍
Quick method를 이용한 JK 계산 • JK 플립플롭의 함수 식에서 • q*= Jq′ + K′q • q가 0 일때 • q*= J ㆍ 1 + K′ㆍ 0 = J • q = 1 일때 • q*= J ㆍ 0 + K′ㆍ 1 = K′ • 즉, 각 변수에 대한 q*맵에서 그 변수가 • 0인 부분은 J를 위한 부분이고, • 1인 부분은 K'을 위한 부분이다.
맵의 분리(변수가 3 -> 2로 줄어듬) • J1와 K1의 계산 맵 7.5a 빠른 방법을 사용한 J1과 K1의 계산 J1 = xq2 K′1= x or K1= x′ • J2와 K2의 계산 맵 7.5b 빠른 방법을 사용한 J2과 K2의 계산 J2= x K2 = x′ + q1′
예제 7.4 설계 • 상태표와 상태 할당 • 상태 이름을 포함한 진리표를 생성
출력과 D 플립플롭 입력 Z = x' + q1q2 D1 = x' + q1' + q2' D2 = x'q2' + xq2
JK 플립플롭의 진리표 및 식 • 플립플롭의 입력 방정식 • J1= 1 K1= xq2 • J2= x′ K2= x′
7.2 동기식 카운터 설계 • 4 bit binary counter • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1…… 표 7.8 16 진 카운터
D 플립플롭을 이용한 카운터 • D 플립플롭 입력에 대한 맵 맵 7.6 16 진 카운터를 위한 D 플립플롭 입력 DD= DC′ + DB′+ DA′ + D′CBA DC= CB′ + CA′ + C′BA DB= B′A + BA′ DA= A′
JK 플립플롭을 이용한 카운터 • Quick method를 사용 • J를 위한 맵은 다음 맵의 음영처리된 부분이다. (K′는 나머지 부분이다) 맵 7.7 JK 플립플롭 설계를 위한 맵 • 입력식 • JD= KD= CBA • JC= KC= BA • JB= KB = A • JA= KA = 1
카운터 회로 그림 7.6 4 비트 카운터 • 0부터 31까지 카운트하는 것은 E 플립플롭을 추가하여 다섯 개의 플립플롭 으로 설계할 수 있다. • JE= KE= DCBA
Up/down 카운터 표 7.9 상향/하향 카운터 • x = 0 일 때 상향 카운트 • x = 1 일 때 하향 카운트
맵 과 입력식 • quick mehod를 위해 q = 0 인 부분을 음영처리 • JA= KA = 1 • JB= KB = x′A + xA ′ • JC= KC= x′BA+ xB′A′
회로도 • 4-,5-비트 업(up) 카운터에서처럼 패턴이 계속된다 • JD= KD= x′CBA+xC′B′A′ • JE= KE= x′DCBA+ xD′C′B′A′ 그림 7.7 상향/하향 카운터
예제 7.6 10진 카운터 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, .....
맵 및 입력 식 JD= CBA KD= A JC= KC= BA JB= D′A KB = A JA= KA = 1
예제 7.7 임의 순서의 카운터 설계 0, 3, 2, 4, 1, 5, 7, and repeat • 수의 순서와 다르게 카운트하는 카운터의 설계
SR 과 T 플립플롭에 대한 입력 • SR과 T 플립플롭에 대한 입력 열을 표에 추가
D 플립플롭의 입력 맵 및 식 • q1*, q2*와 q3*열을 사용하여 구한 D 플립플롭의 입력에 대한 맵과 식
SR 플립플롭의 입력 맵 및 식 S1 = q2'q3 + q2q3' S2 = q1'q2'q3' + q1q2'q3 S3 = q2' R1 = q2'q3' + q2q3 = S1' = q2'q3' + q1q2 R2 = q1q2 + q2q3' R3 = q2
JK 플립플롭의 입력 맵 및 식 • 빠른 방법을 사용한 JK 플립플롭에 대한 맵과 식
상태 점검 • D 플립플롭인 경우에 상태 110에 있다고 가정q1=1, q2=1, q3=0을 대치하였을 때의 입력 값 D1 = q2'q3 + q2q3' = 00+11 = 1 D2 = q1'q2'q3' + q1'q2q3 + q1q2'q3 = 001 + 011 +100 = 0 D3 = q2' = 0 • 상태 다이어그램
예제 7.8 up/down, cycling/saturating 카운터 • 2비트 상향/하향, 순환/포화(cycling/saturating) 카운터의 설계 X=0 : 상향 Y=0 : 순환(cycling) X=1 : 하향 Y=1 : 포화(saturating)
7.3 비동기 카운터 설계 • 2비트 비동기 카운터 • 비동기 카운터에서의 지연
4 비트 비동기 카운터 회로 및 지연 • 4비트 카운터에 대한 타이밍
비동기 카운터 특징 • 장점: • 조합 논리회로가 필요 없을 정도로 하드웨어가 간단하다 • 단점: • 플립플롭들은 동일 클럭에 변하지 않고, 한 플립플롭의 출력이 다른 플립플롭의 클럭으로 동작하기 때문에 지연시간이 길어지게 된다. • 시스템의 상태는 모든 플립플롭의 천이가 완료될 때까지 결정되지 않는다.
7.4 상태표와 상태도의 유도 • 예문 6 :입력 x와 출력 z를 갖는 시스템으로, • 최소한 3 클럭 주기동안 연속하여 x가 1이었을 때만 z가 1이 된다. • 입력된 내용을 메모리에 저장하는 2 가지 방법 • 이전 세 개의 입력을 저장 • 연속된 1의 갯 수를 메모리에 저장