Alex9090

LAB3 - Calc Numerice

Mar 8th, 2018
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module NAND(in1, in2, out);
  2.  
  3. input in1, in2;
  4. output out;
  5.  
  6. assign out = ~(in1 & in2);
  7.  
  8. endmodule
  9.  
  10. module AND(in1, in2, out);
  11.  
  12. input in1, in2;
  13. output out;
  14. wire w1;
  15.  
  16. NAND NAND1(in1, in2, w1);
  17. NAND NAND2(w1, w1, out);
  18.  
  19. endmodule
  20.  
  21. module Testbench;
  22. reg a,b;
  23.  
  24. wire out1, out2;
  25. initial begin
  26.       a=0; b=0;
  27.       #1 a=1 ;
  28.       #1 b=1 ;
  29.       #1 a=0 ;
  30. end
  31.  
  32. initial begin
  33.  
  34. $monitor( "Time=%0d a=%b b=%b out1=%b out2=%b", $time, a, b, out1, out2);
  35. end
  36.  
  37. AND and_gate(a,b,out1);
  38. NAND nand_gate(a,b,out2);
  39. endmodule
  40.  
  41.  
  42.  
  43.  
  44. ADUNARE
  45.  
  46. module Adder(A,B,Result);
  47.  
  48.   input [3:0] A;
  49.   input [3:0] B;
  50.   output [3:0] Result;
  51.   reg [3:0] Result;
  52.  
  53.   always @(A or B)
  54.   begin
  55.     Result <= A+B;
  56.   end
  57.  
  58. endmodule
  59.  
  60. module Testbench;
  61.  
  62.   reg [3:0] A_t;
  63.   reg [3:0] B_t;
  64.   wire [3:0] Result_t;
  65.  
  66.   Adder Adder_1(A_t, B_t, Result_t);
  67.  
  68.   initial
  69.   begin
  70.     //case 0
  71.     A_t <= 0; B_t <=0;
  72.     #1 $display("Result_t=%b", Result_t);
  73.    
  74.     //case 1
  75.    
  76.     A_t <= 0; B_t <= 1;
  77.     #1 $display("Result_t=%b", Result_t);
  78.    
  79.     //case 2
  80.     A_t <=  1; B_t <= 0;
  81.     #1 $display("Result_t=%b", Result_t);
  82.    
  83.     //case 3
  84.    
  85.     A_t <= 10; B_t <= 10;
  86.     #1 $display("Result_t=%b", Result_t);
  87.     end
  88.    
  89.    endmodule
  90.  
  91.  
  92. DECODER 2X4
  93.  
  94.  
  95. module Decoder(A, B, D);
  96.  
  97.   input A, B;
  98.   output [3:0] D;
  99.   reg [3:0] D;
  100.  
  101.   always @(A or B)
  102.  
  103.   begin
  104.     if( A == 0 && B == 0)
  105.       D <= 4'b0001;
  106.      
  107.     else if ( A == 0 && B == 1 )
  108.       D <= 4'b0010;
  109.      
  110.     else if ( A == 1 && B == 0 )
  111.       D <= 4'b0100;
  112.      
  113.     else if ( A == 1 && B == 1)
  114.       D <= 4'b1000;   //nr binar realizat pe 4 biti
  115.     end
  116. endmodule
  117.  
  118. module Testbench;
  119.  
  120. reg A_t;
  121.   reg B_t;
  122.   wire [3:0] D_t;
  123.  
  124.   Decoder Decoder_1(A_t, B_t, D_t);
  125.  
  126.   initial
  127.   begin
  128.     //case 0
  129.     A_t <= 0; B_t <=0;
  130.     #1 $display("D_t=%b", D_t);
  131.    
  132.     //case 1
  133.    
  134.     A_t <= 0; B_t <= 1;
  135.     #1 $display("D_t=%b", D_t);
  136.    
  137.     //case 2
  138.     A_t <=  1; B_t <= 0;
  139.     #1 $display("D_t=%b", D_t);
  140.    
  141.     //case 3
  142.    
  143.     A_t <= 1; B_t <= 1;
  144.     #1 $display("D_t=%b", D_t);
  145.     end
  146.    
  147.    endmodule
  148.  
  149.  
  150.  
  151. HALF ADDER
  152.  
  153.  
  154. module XOR(A,B,S);
  155.     input A, B;
  156.     output reg S;
  157.    
  158.     always @(A or B)
  159.     begin
  160.       S = A^B;
  161.     end
  162.     endmodule
  163.    
  164.     module AND(A,B,S);
  165.     input A,B;
  166.     output reg S;
  167.    
  168.     always @(A or B)
  169.     begin
  170.         S = A&B;
  171.     end
  172. endmodule
  173.  
  174. module half_adder;
  175.  
  176.       reg A,B;
  177.       output S,C;
  178.      
  179.       XOR myXOR(A,B,S);
  180.       AND myAND(A,B,C);
  181.      
  182.       initial
  183.       begin
  184.     A = 0;
  185.     B = 0;
  186.     #1 $display("S=%b, C=%b\n", S, C);
  187.    
  188.     A = 0;
  189.     B = 1;
  190.     #1 $display("S=%b, C=%b\n", S, C);
  191.    
  192.     A=1;
  193.     B=0;
  194.     #1 $display("S=%b, C=%b\n", S, C);
  195.    
  196.     A=1;
  197.     B=1;
  198.     #1 $display("S=%b, C=%b\n", S, C);
  199.    
  200. end
  201. endmodule
Advertisement
Add Comment
Please, Sign In to add comment