Advertisement
Guest User

Untitled

a guest
May 8th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module ksa4(input [3:0]a,
  2. input [3:0]b,
  3. input cin,
  4. output [3:0]sum,
  5.  
  6. output carryout
  7.     );
  8. wire [3:0] p,g,cp,cg,ccg,ccp,c;
  9.  
  10. assign p=a^b;
  11. assign g=a&b;
  12.  
  13. assign cg[0]=(g[0]);
  14. assign cp[0]=(p[0]);
  15.  
  16. assign cg[1]=(p[1]&g[0])|g[1];
  17. assign cp[1]=(p[1]&p[0]);
  18.  
  19. assign cg[2]=(p[2]&g[1])|g[2];
  20. assign cp[2]=p[2]&p[1];
  21.  
  22. assign cg[3]=(p[3]&g[2])|g[3];
  23. assign cp[3]=p[3]&p[2];
  24.  
  25. assign ccg[0]=cg[0];
  26. assign ccp[0]=cp[0];
  27.  
  28. assign ccg[1]=cg[1];
  29. assign ccp[1]=cp[1];
  30.  
  31. assign ccg[2]=(cp[2]&cg[0])|cg[2];
  32. assign ccp[2]=cp[2]&cp[0];
  33.  
  34. assign ccg[3]=(cp[3]&cg[1])|cg[3];
  35. assign ccp[3]=cp[3]&cp[1];
  36.  
  37. assign c=ccg;
  38. assign sum[0]=p[0]^cin;
  39. assign sum[1]=p[1]^c[0];
  40. assign sum[2]=p[2]^c[1];
  41. assign sum[3]=p[3]^c[2];
  42. assign carryout=c[3];
  43.  
  44.  
  45. endmodule
  46.  
  47. module test();
  48.     reg[3:0] a,b;
  49.     reg cin;
  50.     wire[3:0] sum;
  51.     wire carryout;
  52.  
  53.     ksa4 TestowanySumator(a, b, cin, sum, carryout);
  54.  
  55.     initial begin
  56.         a=1111; b=1111; cin=0;
  57.     end
  58.  
  59.     initial begin
  60.         $display ("czas |  a + b + cin = sum i carryout");
  61.         $monitor ($time, " | %d + %d + %d = %d i c_out = %b", a, b, cin, sum, carryout);
  62.     end
  63.  
  64. endmodule //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement