Alex9090

LAB05 - Calculatoare Numerice

Mar 22nd, 2018
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module XOR(a, b, w1);
  2.  
  3.   input a, b;
  4.   output reg w1;
  5.  
  6.   always @(a or b)
  7.   begin
  8.     w1 = a ^ b;
  9.   end
  10.  
  11. endmodule
  12.  
  13. module AND(w1, cin,w2);
  14.  
  15.   input w1, cin;
  16.   output reg w2;
  17.  
  18.   always @(w1 or cin)
  19.   begin
  20.     w2 = w1 & cin;
  21.   end
  22. endmodule
  23.  
  24. module OR(w2, w3, cout);
  25.  
  26.   input w2, w3;
  27.   output reg cout;
  28.  
  29.   always @(w2 or w3)
  30.   begin
  31.     cout = w2 | w3;
  32.   end
  33. endmodule
  34.  
  35. module full_adder(a, b, cin, s, cout);
  36.  
  37.   input a, b, cin;
  38.   output s, cout;
  39.  
  40.   XOR xor1(a, b, w1);
  41.   XOR xor2(w1, cin, s);
  42.   AND and1(w1, cin, w2);
  43.   AND and2(a, b, w3);
  44.   OR or1(w2, w3, cout);
  45.  
  46.  
  47. endmodule
  48.  
  49. module Testbench;
  50.   reg a, b, cin;
  51.   wire s, cout;
  52.  
  53.   full_adder p(a, b, cin, s, cout);
  54.  initial
  55.   begin
  56.    a = 0;
  57.     b = 0;
  58.     cin = 0;
  59.     #1 $display("S=%b, C=%b\n", s, cout);
  60.    
  61.     a = 0;
  62.     b = 1;
  63.     #1 $display("S=%b, C=%b\n", s, cout);
  64.    
  65.     a=1;
  66.     b=0;
  67.     #1 $display("S=%b, C=%b\n", s, cout);
  68.    
  69.     a=1;
  70.     b=1;
  71.     #1 $display("S=%b, C=%b\n", s, cout);
  72.    
  73.     a = 0;
  74.     b = 0;
  75.     cin = 1;
  76.     #1 $display("S=%b, C=%b\n", s, cout);
  77.    
  78.     a = 0;
  79.     b = 1;
  80.     #1 $display("S=%b, C=%b\n", s, cout);
  81.    
  82.     a=1;
  83.     b=0;
  84.     #1 $display("S=%b, C=%b\n", s, cout);
  85.    
  86.     a=1;
  87.     b=1;
  88.     #1 $display("S=%b, C=%b\n", s, cout);
  89. end
  90.  endmodule
  91.  
  92.  
  93.  
  94.  
  95. FULL ADDER CU NAND-URI
  96.  
  97.  
  98. module NAND(a, b, w);
  99.  
  100.   input a, b;
  101.   output reg w;
  102.  
  103.   always @(a or b)
  104.   begin
  105.     w = a ~& b;
  106.   end
  107. endmodule
  108.  
  109. module full_adder(a, b, cin, s, cout);
  110.  
  111.   input a, b, cin;
  112.   output s, cout;
  113.  
  114.   NAND nand1(b, cin, w3);
  115.   NAND nand2(b, w3, w4);
  116.   NAND nand3(w3, cin, w5);
  117.   NAND nand4(w4, w5, w6);
  118.   NAND nand5(a, w6, w7);
  119.   NAND nand6(a, w7, w1);
  120.   NAND nand7(w7, w6, w8);
  121.   NAND nand8(w7, w3, cout);
  122.   NAND nand9(w1, w8, s);
  123.  
  124. endmodule
  125.  
  126. module Testbench;
  127.   reg a, b, cin;
  128.   wire s, cout;
  129.  
  130.   full_adder p(a, b, cin, s, cout);
  131.  initial
  132.   begin
  133.    a = 0;
  134.     b = 0;
  135.     cin = 0;
  136.     #1 $display("S=%b, C=%b\n", s, cout);
  137.    
  138.     a = 0;
  139.     b = 1;
  140.     #1 $display("S=%b, C=%b\n", s, cout);
  141.    
  142.     a=1;
  143.     b=0;
  144.     #1 $display("S=%b, C=%b\n", s, cout);
  145.    
  146.     a=1;
  147.     b=1;
  148.     #1 $display("S=%b, C=%b\n", s, cout);
  149.    
  150.     a = 0;
  151.     b = 0;
  152.     cin = 1;
  153.     #1 $display("S=%b, C=%b\n", s, cout);
  154.    
  155.     a = 0;
  156.     b = 1;
  157.     #1 $display("S=%b, C=%b\n", s, cout);
  158.    
  159.     a=1;
  160.     b=0;
  161.     #1 $display("S=%b, C=%b\n", s, cout);
  162.    
  163.     a=1;
  164.     b=1;
  165.     #1 $display("S=%b, C=%b\n", s, cout);
  166. end
  167.  endmodule
  168.  
  169.  
  170. FULL ADDER 4 BIT
  171.  
  172.  
  173. module NAND(a, b, w);
  174.  
  175.   input a, b;
  176.   output reg w;
  177.  
  178.   always @(a or b)
  179.   begin
  180.     w = a ~& b;
  181.   end
  182. endmodule
  183.  
  184. module full_adder(a, b, cin, s, cout);
  185.  
  186.   input a, b, cin;
  187.   output s, cout;
  188.  
  189.   NAND nand1(b, cin, w3);
  190.   NAND nand2(b, w3, w4);
  191.   NAND nand3(w3, cin, w5);
  192.   NAND nand4(w4, w5, w6);
  193.   NAND nand5(a, w6, w7);
  194.   NAND nand6(a, w7, w1);
  195.   NAND nand7(w7, w6, w8);
  196.   NAND nand8(w7, w3, cout);
  197.   NAND nand9(w1, w8, s);
  198.  
  199. endmodule
  200.  
  201. module bit4_full_adder(cin, a0, a1, a2, a3, b0, b1, b2, b3, s0, s1, s2, s3, cout);
  202.  
  203.   input cin, a0, a1, a2, a3, b0, b1, b2, b3;
  204.   output s0, s1, s2, s3, cout;
  205.  
  206.   full_adder(a0, b0, cin
  207.  
  208. endmodule
  209.  
  210. module Testbench;
  211.   reg a, b, cin;
  212.   wire s, cout;
  213.  
  214.   full_adder p(a, b, cin, s, cout);
  215.  
  216.  initial
  217.   begin
  218.    a = 0;
  219.     b = 0;
  220.     cin = 0;
  221.     #1 $display("S=%b, C=%b\n", s, cout);
  222.    
  223.     a = 0;
  224.     b = 1;
  225.     #1 $display("S=%b, C=%b\n", s, cout);
  226.    
  227.     a=1;
  228.     b=0;
  229.     #1 $display("S=%b, C=%b\n", s, cout);
  230.    
  231.     a=1;
  232.     b=1;
  233.     #1 $display("S=%b, C=%b\n", s, cout);
  234.    
  235.     a = 0;
  236.     b = 0;
  237.     cin = 1;
  238.     #1 $display("S=%b, C=%b\n", s, cout);
  239.    
  240.     a = 0;
  241.     b = 1;
  242.     #1 $display("S=%b, C=%b\n", s, cout);
  243.    
  244.     a=1;
  245.     b=0;
  246.     #1 $display("S=%b, C=%b\n", s, cout);
  247.    
  248.     a=1;
  249.     b=1;
  250.     #1 $display("S=%b, C=%b\n", s, cout);
  251. end
  252.  endmodule
Advertisement
Add Comment
Please, Sign In to add comment