본문 바로가기
Language/Verilog & SV

[Verilog] Full-adder, Ripple-carry adder

by VIR&US 2023. 7. 20.
반응형

목차


    1bit Full-adder 

    circuit diagram and truth table

     

    출처: PyQUBO: Python Library for Mapping Combinatorial Optimization Problems to QUBO Form, March 2021

    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

     

    EDA Playground

    Edit, save, simulate, synthesize SystemVerilog, Verilog, VHDL and other HDLs from your web browser.

    www.edaplayground.com

     

    728x90
    반응형

    'Language > Verilog & SV' 카테고리의 다른 글

    [Verilog] Counter  (0) 2023.07.21
    [Verilog] APB의 State FSM, 간단한 Master Code  (0) 2023.07.21
    [Verilog] Clock generator  (0) 2023.07.20
    [Verilog] Blocking(=) vs Nonblocking(<=)  (0) 2023.07.19
    [Verilog] Parameter  (0) 2023.07.19