Language/Verilog & SV
[Verilog] Full-adder, Ripple-carry adder
VIR&US
2023. 7. 20. 17:32
반응형
목차
1bit Full-adder
circuit diagram and truth table
Code
module Full_adder ( input a, b, cin, output sum, cout); wire s1, c1, c2; xor G1(s1, a, b); and G2(c1, a, b); and G3(c2, cin, s1); xor G4(sum, s1, cin); xor G5(cout, c1, c2); endmodule
8 bits Ripple-carry adder instance
n-bit 가산기는 단순하게 n개의 전가산기를 연결하여 만들 수 있습니다. 이전 비트의 Cout이 다음 비트의 Cin이 되도록 연결하면 됩니다.
Code
`include "full_adder.v" module Ripple_FA_8( input [7:0] a, input [7:0] b, input cin, output [7:0] sum, output carry); wire [6:0]c; Full_adder FA0( .a(a[0]), .b(b[0]), .cin(cin), .sum(sum[0]), .cout(c[0])); Full_adder FA1( .a(a[1]), .b(b[1]), .cin(c[0]), .sum(sum[1]), .cout(c[1])); Full_adder FA2( .a(a[2]), .b(b[2]), .cin(c[1]), .sum(sum[2]), .cout(c[2])); Full_adder FA3( .a(a[3]), .b(b[3]), .cin(c[2]), .sum(sum[3]), .cout(c[3])); Full_adder FA4( .a(a[4]), .b(b[4]), .cin(c[3]), .sum(sum[4]), .cout(c[4])); Full_adder FA5( .a(a[5]), .b(b[5]), .cin(c[4]), .sum(sum[5]), .cout(c[5])); Full_adder FA6( .a(a[6]), .b(b[6]), .cin(c[5]), .sum(sum[6]), .cout(c[6])); Full_adder FA7( .a(a[7]), .b(b[7]), .cin(c[6]), .sum(sum[7]), .cout(carry)); endmodule
Sim
EDA Playground에서 Simulation과 파형을 보실 수 있습니다.
https://www.edaplayground.com/x/u4Ti
728x90
반응형