Advertisement
Maco153

Lab Report 4

Apr 6th, 2020
772
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // file: Full Adder.v
  2. // author: @maco
  3.  
  4. `timescale 1ns/1ns
  5.  
  6. module FullAdder(s,c,x,y,cin);
  7. input x,y,cin;
  8. output s,c;
  9. assign s=x^y^cin;
  10. wire f,g,h;
  11. assign f=x&y;
  12. assign g=y&cin;
  13. assign h=x&cin;
  14. assign c=f|g|h;
  15. endmodule
  16. // file: addsub.v
  17. // author: @maco
  18.  
  19. `timescale 1ns/1ns
  20.  
  21. module addsub #(parameter N=4)(input [N-1:0] a, input [N-1:0]b, output [N:0] out);
  22. wire [N:0] carry;
  23. wire [N-1:0] sum;
  24. wire [N-1:0] result;
  25. input sub;
  26. xor(carry[0],sub,0);
  27.  
  28. genvar i;
  29.  
  30. generate
  31.  
  32. for ( i=0; i<N;i=i+1)
  33. begin: myblock
  34. if(sub==0)begin
  35. FullAdder full_inst(.s(sum[i]),.c(carry[i+1]),.x(a[i]),.y(b[i]),.cin(carry[i]));
  36. end
  37. else begin
  38.  
  39. FullAdder full_inst(.s(sum[i]),.c(carry[i+1]),.x(a[i]),.y(~b[i]),.cin(carry[i]));
  40. end
  41. end
  42. endgenerate
  43.  
  44. wire fcarry;
  45. xor(fcarry, carry[N],sub);
  46. assign out ={fcarry,sum};
  47.  
  48. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement