본문내용
1. 전가산기 설계
1.1. 실습 목적
전가산기 설계의 실습 목적은 전가산기를 설계하는 과정을 통해 조합 논리회로를 VHDL로 설계하는 방법을 공부하는 것이다. 또한 이 실습을 통해서는 if~then~elsif~end if(VHDL) 형식과 다양한 방법으로 전가산기를 설계하는 법을 배울 수 있다.
1.2. 전가산기의 진리표
전가산기의 진리표는 3비트의 이진 입력 x, y, z와 2비트의 이진 출력 C(carry), S(sum)로 구성되어 있다. 이때 입력 x, y, z는 각각 한 자리 이진수를 나타내고, 캐리 C는 윗자리로 올라가는 캐리를, S는 아랫자리 덧셈 결과를 나타낸다.
전가산기의 진리표는 다음과 같다:
x y z C S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
이 진리표에 따르면 전가산기의 입력이 각각 0, 0, 0일 때 출력은 0, 0이 되고, 입력이 0, 0, 1일 때 출력은 0, 1이 된다. 또한 입력이 1, 1, 1일 때 출력은 1, 1이 된다. 즉, 전가산기는 3비트의 이진 입력에 대해 2비트의 이진 덧셈 결과와 캐리 출력을 제공한다.
1.3. 카르노맵을 이용한 간소화된 논리식
전가산기의 진리표를 이용하여 간소화된 논리식을 구하면 다음과 같다.
카르노맵을 이용해 전가산기의 출력 S와 C의 간소화된 논리식을 구할 수 있다. S의 경우, 1의 셀을 포함하는 최소항을 찾으면 S = x'y'z + x'yz' + xy'z' + xyz로 간소화할 수 있다. C의 경우, 1의 셀을 포함하는 최소항을 찾으면 C = xy + xz + yz로 간소화할 수 있다.
간소화된 논리식 S와 C는 다음과 같다:
S = x'y'z + x'yz' + xy'z' + xyz
C = xy + xz + yz
즉, 전가산기의 출력 S는 각 입력 x, y, z의 부정논리 조합과 긍정논리 조합으로 이루어지며, 출력 C는 입력 x, y, z의 논리곱 조합으로 이루어지는 것을 알 수 있다.
1.4. 전가산기의 블록도
전가산기의 블록도는 3비트의 입력 x, y, z와 2비트의 출력 S(합계), C(캐리)로 구성된다. 입력 신호 x, y, z를 받아 전가산기 회로에서 계산을 수행하고, 그 결과로 캐리 C와 합계 S를 출력한다. 전가산기 회로는 기본적으로 AND, OR, XOR 게이트로 구현되며, 각각의 게이트는 입력 신호 x, y, z를 받아 결과를 출력한다.
캐리 C는 AND 게이트를 통해 xy, xz, yz의 논리곱을 구하고 이를 OR 게이트로 합성하여 출력한다. 합계 S는 XOR 게이트를 통해 x'y'z + x'yz' + xy'z' + xyz의 논리합을 구하여 출력한다. 즉, 전가산기의 블록도는 3비트 입력 신호를 받아 AND, OR, XOR 게이트를 사용하여 캐리 C와 합계 S를 계산하고 출력하는 구조이다.
1.5. 전가산기 Verilog 코드
전가산기 Verilog 코드는 다음과 같다. 진리표를 직접 Verilog 코드로 구현한 것으로, 입력 x, y, z를 받아 출력 S(결과)와 C(캐리)를 생성한다.
module MyFulladder(x,y,z,S,C);
input x,y,z;
output S,C;
assign S = (x^y^z);
assign C = (x&y) | (x&z) | (y&z);
endmodule
이를 통해 진리표를 직관적으로 Verilog 코드로 표현할 수 있다. 이는 진리표 기반 설계의 장점으로, 설계 과정에서 오류가 적고 코딩 시간을 줄일 수 있다. 또한 입출력 관계를 명확히 표현할 수 있어 전가산기의 기능을 쉽게 구현할 수 있다.
1.6. 시뮬레이션 결과
시뮬레이션 결과는 진리표와 동일한 S, C 값이 출력되었다. Quartus II를 이용한 전가산기 설계를 통해 ...