Advertisement
symonhasan

4 Bit Adder

Jan 21st, 2020
707
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module adder4b(X, Y, CI, S, CO);
  2.  input [3:0] X, Y;
  3.  input  CI;
  4.  
  5.  output [3:0] S;
  6.  output CO;
  7.  wire w1, w2, w3;
  8.  
  9.  // instantiating 4 1-bit full adders in Verilog
  10.  fulladder u1(X[0], Y[0], CI, S[0], w1);
  11.  fulladder u2(X[1], Y[1], w1, S[1], w2);
  12.  fulladder u3(X[2], Y[2], w2, S[2], w3);
  13.  fulladder u4(X[3], Y[3], w3, S[3], CO);
  14. endmodule
  15.  
  16. //Structural code for one bit full adder
  17. module fulladder(X, Y, CI, S, CO);
  18.   input X, Y, CI;
  19.   output S, CO;
  20.   wire w1,w2,w3;
  21.  
  22.   xor G1(w1, X, Y);
  23.   xor G2(S, w1, CI);
  24.   and G3(w2, w1, CI);
  25.   and G4(w3, X, Y);
  26.   or  G5(CO, w2, w3);
  27. endmodule
  28.  
  29.  
  30. module adder4b_test;
  31.     reg [3:0] X;
  32.     reg [3:0] Y;
  33.     reg CI;      
  34.     wire [3:0] S;
  35.     wire CO;  
  36.  
  37.     // Instantiate the Unit Under Test (UUT)
  38.     adder4b uut(
  39.         .X(X),
  40.         .Y(Y),
  41.         .CI(CI),        
  42.         .S(S),
  43.         .CO(CO)
  44.     );
  45.  
  46.     initial begin
  47.        // $dumpfile("adder4bit.vcd");
  48.         //$dumpvars(0,adder4b_test);
  49.         X = 4;
  50.         Y = 4;
  51.         CI= 1;         
  52.         #10;
  53.          
  54.         X = 4;
  55.         Y = 4;
  56.         CI= 0;         
  57.         #10;
  58.        
  59.         X = 15;
  60.         Y = 7;
  61.         CI= 0;         
  62.         #10;
  63.        
  64.         X = 10;
  65.         Y = 01;
  66.         CI= 0;         
  67.         #10;
  68.          
  69.         X = 10;
  70.         Y = 10;
  71.         CI= 1;         
  72.         #10;
  73.        
  74.         X = 15;
  75.         Y = 15;
  76.         CI= 0;         
  77.         #10;
  78.          
  79.         X = 15;
  80.         Y = 15;
  81.         CI= 1;         
  82.         #10;
  83.        
  84.        
  85.     end
  86.    
  87.     initial begin
  88.           $monitor("t=%4d X=%4b, Y=%4b, CI=%b, sum=%4b,cout=%b\n",$time,X,Y,CI,S,CO);
  89.          end
  90.      
  91. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement