Digital design 4장. 조합 논리
4-1 조합 회로 출력값이 현재의 입력값에 의해 결정됨 입력변수와 논리 게이트, 출력 변수들로 구성됨
4-2 분석 절차 회로가 수행하는 기능을 결정하는 과정 분석 절차 회로가 조합 회로인지 순차 회로인지 확인한다. 출력단의 Boole 함수 또는 진리표를 구한다.
유도 과정 Boole 함수 진리표 모든 게이트의 출력에 기호를 붙인다. 각 게이트의 출력에 대한 Boole함수를 구한다. 최종 출력에 입력 변수들을 대입한다. 진리표 입력 변수들을 2진수로 놓는다. 각각의 게이트에 해당하는 출력값을 결정한다. 진리표를 구한다.
유도 과정
4-3 설계 절차 설계 절차 설계 사양으로부터 필요한 입/출력의 개수를 정한다. 각각의 입/출력에 대하여 문자 기호를 붙인다. 진리표를 구한다. 간략화된 Boole 함수를 유도한다. 논리도를 그리고 설계의 정확성을 검증한다.
코드 변환 예 BCD to excess-3 코드 변환기 설계 절차 Excess-3 code : 10진값에 3을 더한 2진 코드 1)입력과 출력의 결정 입력 : A,B,C,D (0000∼1001) 출력 : W,X,Y,Z (0011∼1100)
코드 변환 예 2)진리표 구하기
코드 변환 예 3)간략화된 Boole 함수 구하기
코드 변환 예 4)논리도 그리기
4-4 2진식 덧셈기-뺄셈기 2진식 덧셈기 2진 덧셈기 – 뺄셈기의 구현 반덧셈기 : 2비트를 더하는 기능 수행(x+y) 덧셈기 : 3비트를 더하는 기능 수행(x+y+z) 2개의 반덧셈기는 하나의 덧셈기로 쓸 수 있다. 2진 덧셈기 – 뺄셈기의 구현 반덧셈기 덧셈기 n개 덧셈기의 직렬 연결 보수회로의 추가
반덧셈기 S=xy′+x′y C=xy 두 2진 입력의 합 입력 : X(피가산수), Y(가산수) 출력 : S(sum), C(carry) S=xy′+x′y C=xy
반덧셈기
덧셈기 세 2진 입력의 합 입력 : X,Y(2개의 유효비트),Z(하나의 캐리비트) 출력 : S(sum),C(carry)
덧셈기
2진 덧셈기 두 n비트 2진수의 합 4비트 덧셈기 A=1011, B=0011
캐리의 전파 지연시간의 증가(캐리 지연) 캐리 룩어헤드를 통해 해결 가능 모든 캐리는 Pi,Gi, C0 의 함수이다!
캐리 전파 캐리 룩어헤드 생성기
캐리 전파 캐리 룩어헤드를 가진 4비트 덧셈기
2진 뺄셈기 A-B는 A+(B에 대한 2의 보수) 와 같다. M=0 : 덧셈기, M=1 : 뺄셈기
오버플로 n자리 수들의 합에 대한 결과는 n+1자리가 필요 두 수가 같은 부호일때만 발생 (오버플로의 예)
4-5 10진 덧셈기 10진수 값을 2진수 형태로 계산해서 표현 BCD 코드에 대한 10진 덧셈기
BCD Adder 2개의 BCD수를 합한 BCD 출력 출력이 1010에서 1111사이의 값이면 캐리 발생 C=K+Z8Z4+Z8Z2 1100 1101 1110 1111 1010 1011
4-6 Binary multiplier 2bit x 2bit = 4bit(max)
2진 곱셈기 (K비트) x (J비트) (K x J)개의 AND 게이트, (J-1)개의 K비트 덧셈기 필요 B3B2B1B0 x A2A1A0
4-7 크기 비교기 Xi=1 i번째 비트에 있는 짝이 같을 때에만 (A=B)=x3x2x1x0 (A>B)=A3B3′+x3A2B2′+x3x2A1B1′+x3x2x1A0B0′ (A<B)=A3′B3+x3A2′B2+x3x2A1′B1+x3x2x1A0′B0
4-8 디코더 n개의 입력변수에 대해 2ⁿ개까지의 최소항 생성 예)3-to-8 라인 디코더
디코더 Enable 입력을 갖는 2-to-4 라인 디코더 신호 E로써 회로의 동작을 조절
디코더 Enable 입력을 갖는 디코더는 더 큰 디코더로 확장 가능 예)2개의 3x8디코더를 이용한 4x16디코더
디코더 조합 논리의 구현 어떠한 조합 논리 회로라도 라인 디코더와 OR게이트로써 구현 가능 예)덧셈기
4-9 인코더 디코더의 반대 기능 수행 2ⁿ 개의 입력값에 대해 n개의 출력을 생성 예) 8-to-2 인코더
우선순위 인코더 동시에 둘 이상의 입력값이 1인 경우 문제 발생 회로에 우선 순위를 부여 (x100 means 0100, 1100)
4-10 멀티플렉서 많은 입력라인 중에서 하나의 2진 정보를 선택, 출력 선택은 선택라인에 의해서 제어됨 2ⁿ 개의 입력라인에는 n개의 선택라인이 필요
멀티플렉서 4-to-1 라인 멀티플렉서
멀티플렉서 4중 2-to-1 라인 멀티플렉서
멀티플렉서 Boole 함수의 구현 F=xy+yz′+x′y′z 함수의 최소항들이 MUX를 통해 생성됨 N개의 입력벽수와 n-1개의 선택 입력 F=xy+yz′+x′y′z
멀티플렉서 3상태 게이트 논리1, 논리0, 높은 임피던스 세가지 상태 소유 높은 임피던스 상태는 개방회로처럼 동작
멀티플렉서 3상태 게이트를 갖는 멀티플렉서
4-11 조합회로의 HDL 모델링 방법: 게이트 레벨 모델링 데이터 흐름 모델링 동작 모델링 기본 게이트와 사용자 정의 모듈을 이용 데이터 흐름 모델링 연속적인 지정 구문인 assign을 이용 동작 모델링 단계적인 지정 구문인 always 를 이용
게이트 레벨 모델링 회로를 게이트와 게이트들간의 연결관계로서 표현
예시(Instantiation)
4비트 덧셈기에서의 예시
데이터 흐름 모델링 연산자와 피연산자를 이용해 net에 값을 할당 eg)J=01,K=10 can be {J,K}=0110 out=x ? A : B는 x가 사실인 경우 out=A를 거짓인 경우 out=B를 출력
지정 2-to-4 라인 디코더
4비트 덧셈기
동작 모델링 단계적인 지정 구문인 always 를 이용 목표 출력은 reg 데이터형식이어야 함 Eg)4-to-1 라인 멀티플렉서
간단한 테스트 벤치의 작성 테스트 벤치 : 기술된 HDL을 테스트하고 결과 를 보기 위해 stimulus를 적용 하는 것 reg - 입력 , wire - 출력
System tasks System tasks : 다양한 출력을 화면에 나타내주는 핵심어($로 시작) $display , $write , $monitor , $time , $finish system tasks의 형식 Task명(형식, 변수명); Eg) $monitor(%d %b %b, C,A,B);
테스트 벤치의 예