본문내용
1. 전감산기 설계
1.1. 실습 목적
전감산기 설계 실습의 목적은 한 자리 2진수 뺄셈 시 전가산기에서 더한 결과 캐리가 발생하는 것과 반대로 아래 자리에서 발생하는 빌림수를 고려해야 한다는 점을 이해하는 것이다. 이를 통해 전감산기의 동작 원리를 이해하고, 조합 논리회로를 Verilog 또는 VHDL로 설계하는 방법을 배울 수 있다. 또한 if~else(Verilog) 또는 if~then~elsif~end if(VHDL) 형식의 코드 작성법도 익힐 수 있다.
1.2. 전감산기의 진리표
전감산기의 진리표는 다음과 같다.
입력 변수 x, y, z에 따른 출력 D와 B의 값은 다음과 같다. x는 피감수, y는 감수, z는 이전 자리에서 발생한 빌림수를 나타낸다. D는 뺄셈의 결과이고, B는 현재 자리에서 발생한 빌림수를 나타낸다.
x y z D B
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
전감산기의 진리표에서 알 수 있듯이, 감산 결과와 빌림수가 동시에 출력되는 것을 확인할 수 있다. 예를 들어 x=1, y=0, z=1인 경우 D=0, B=1이 된다. 이는 1에서 0을 뺄 때 이전 자리에서 빌림이 발생하여 결과가 0이 되고, 현재 자리에서는 빌림수 1이 발생하는 것을 나타낸다.
1.3. 카르노 맵을 이용한 간소화된 논리식
카르노 맵을 이용한 간소화된 논리식은 다음과 같다.
먼저 전감산기의 입력값을 x, y, z라 하고, 출력값을 D, B라 하자. 카르노 맵을 이용하여 전감산기의 간소화된 논리식을 구하면 다음과 같다.
D = x'y'z + x'yz' + xy'z' + xyz
이는 논리 AND와 OR 게이트를 사용하여 구현할 수 있다. x의 보수와 y의 보수, z의 보수를 AND한 값과 x의 보수, y, z의 보수를 AND한 값, x, y의 보수, z를 AND한 값, 그리고 x, y, z를 AND한 값을 OR 게이트를 통해 출력 D를 얻을 수 있다.
B = x'z + x'y + yz
마찬가지로 논리 AND와 OR 게이트를 사용하여 구현할 수 있다. x의 보수와 z, x의 보수와 y, y와 z를 AND한 값을 OR 게이트를 통해 출력 B를 얻을 수 있다.
이와 같이 카르노 맵을 이용하여 전감산기의 간소화된 논리식을 도출할 수 있다. 이 논리식은 전감산기의 핵심 기능을 구현하는데 활용된다.
1.4. 전감산기의 블록도
전감산기의 블록도는 전감산기의 입력과 출력 신호를 표현한 도식이다. 전감산기의 입력은 피감수 x, 감수 y, 그리고 아랫자리에서 발생한 빌림수 z이며, 출력은 감산 결과 D와 윗자리에서 발생한 빌림수 B이다. 이를 블록도로 나타내면 x, y, z가 입력으로 들어가고 D와 B가 출력으로 나오는 구조를 확인할 수 있다. 전감산기의 블록도에서는 입력과 출력 신호의 관계를 직관적으로 파악할 수 있다"".
1.5. 전감산기 Verilog 코드
전감산기 Verilog 코드는 다음과 같다. 전감산기는 한 자리 이진수 뺄셈 시, 전가산기에서 더한 결과 캐리가 발생하는 것과 반대로 아랫자리에서 발생하는 빌림수를 고려해야 한다. 그리고 감산한 결과와 위에서 빌린 수를 나타내야 한다.
1.5.1. MyFulladder.v 모듈에서는 입력 x, y, z에 따른 출력 D와 B를 Verilog 코드로 정의하고 있다. 논리식 D = (~x&~y&z)|(~x&y&~z)|(x&~y&~z)|(x&y&z)와 B = (~x&y)|(~(x^y)&z)를 사용하여 전감산기의 동작을 구현하고 있다. 이를 통해 입력 값에 따른 감산 결과와 빌림 값을 출력으로 계산할 수 있다.
1.5.2. tb_MyFulladder.v 모듈은 전감산기의 Verilog 코드를 테스트하기 위한 테스트벤치이다. 입력 x, y, cin에 대해 시뮬레이션을 수행하고 출력 D와 B를 모니터링하여 전감산기의 동작을 검증한다. 총 8가지 입력 조합에 대해 시뮬레이션을 진행하여 전감산기의 정확성을 확인할 수 있다.
이와 같이 전감산기의 Verilog 코드는 입력 값에 따른 출력을 논리식으로 정의하여 구현하고, 테스트벤치를 통해 동작을 검증하는 방식으로 작성되었다. 이를 통해 전감산기의 설계 과정과 동작을 이해할 수 있다.
1.5.1. MyFulladder.v
MyFulladder.v 파일은 Verilog 코드로 구현된 전감산기 모듈이다....