Holey_yan

20150114_KUAS_Verilog_FullAdder_4bit

Jan 14th, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module FullAdder_4bit(in1, in2, inCarry, sum, outCarry);
  2.     input   [3:0] in1, in2;
  3.     input   inCarry;
  4.     output  [3:0] sum;
  5.     output  outCarry;
  6.    
  7.     wire    [3:0] _wire; //be a temp for [2:0] bit carry
  8.     FullAdder tmp1(in1[0], in2[0], inCarry, sum[0], _wire[0]);
  9.     FullAdder tmp2(in1[1], in2[1], _wire[0], sum[1], _wire[1]);
  10.     FullAdder tmp3(in1[2], in2[2], _wire[1], sum[2], _wire[2]);
  11.     FullAdder tmp4(in1[3], in2[3], _wire[2], sum[3], outCarry);
  12.    
  13.     /* if use assign:
  14.    
  15.        assign {outCarry, sum} = in1 + in2 + inCarry; */
  16. endmodule
  17.  
  18. module FullAdder(in1, in2, inCarry, sum, outCarry);
  19.     input   in1, in2, inCarry;
  20.     output  sum, outCarry;
  21.    
  22.     wire    w1, w2, w3;
  23.     HalfAdder tmp1(inCarry, in1, w1, w2);
  24.     HalfAdder tmp2(w1, in2, sum, w3);
  25.     or  (outCarry, w2, w3);
  26. endmodule
  27.  
  28. module HalfAdder(in1, in2, sum, carry);
  29.     input   in1, in2;
  30.     output  sum, carry;
  31.    
  32.     assign  {carry, sum} = in1 + in2;
  33. endmodule
Advertisement
Add Comment
Please, Sign In to add comment