halfadder를 우선적으로 만들고 halfadder2개로 fulladder를 만들어보고 테스트벤치로 검증하는 절차를 거치겠습니다.

half adder의 진리표는 위의 그림과 같습니다. 이에 따라서 vivado에 코드를 작성해보면 다음과같습니다.
`timescale 1ns/ 1ps
module half_adder(half_a, half_b, carry, sum);
input half_a, half_b;
output carry, sum;
xor(sum, half_a, half_b);
and(carry, half_a, half_b);
endmodule
a와 b가 한개만 1 일때 sum의 출력이 1로 나오게 됩니다. 따라서 xor을 사용합니다.
a와 b가 모두다 1일때 carry의 출력이 1로나오게 됩니다. 따라서 and를 사용합니다.

RTL로 만들게되면 다음과같은 그림이 나오게됩니다. 테스트 벤치를 짜 검증하는 절차를 가져보겠습니다.

테스트 벤치는 다음과같습니다. 위의 표의 진리표와 똑같이 나온것을 보아 회로는 잘 만들어졌고, 검증이 완료되었습니다.
다음은 같은방식으로 Fulladder를 만들어보겠습니다.

Fulladder를 진리표를 참고하여 만들어보면 다음과같습니다.
a,b,cin은 입력단이고 cout과 sum은 출력단입니다.
module full_adder (a, b, full_cin,full_cout,sum);
input a, b, full_cin;
output full_cout,sum;
wire ha1_to_ha2_sum, wire_cout2, wire_cout1;
half_adder inst_ha1(.half_a(a), .half_b(b), .carry(wire_cout1), .sum(ha1_to_ha2_sum));
half_adder inst_ha2(.half_a(ha1_to_ha2_sum), .half_b(full_cin), .carry(wire_cout2), .sum(sum));
assign full_cout = wire_cout1|wire_cout2;
endmodule
half_adder를 2개사용할 예정이기때문에 fulladder의 변수에 맞춰서 instiate를 해줍니다.


fulladder를 테스트 벤치를 짜보았을때 다음과 같이 진리표와 동일하게 나온것으로 보아 회로 구성이 잘 되었습니다.
다음내용은 다음에
'나의 전자 공부방 > Verilog 공부' 카테고리의 다른 글
| 클럭펄스 플립플롭 D플립플롭,T플립플롭,JK플립플롭, SR플립플롭 (1) | 2023.05.15 |
|---|---|
| 반감산기를 이용해 전감산기를 만들기 (1) | 2023.05.08 |
| 반감산기, 전감산기 , 4bit 전감산기 만들고 전감산기 테스트벤치로 검증하기. (0) | 2023.04.24 |
| fulladder 4개를 연결하여 4비트 전가산기 만들고 검증하기, 전가산기 4bit 2개 연결 (0) | 2023.04.23 |