Advertisement
kekellner

Lab08 - Ej01 - Código & Testbench

Oct 15th, 2021
2,152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module full_adder (input A, B, Cin, output S, Cout);
  2.  
  3.     assign S = A ^ B ^ Cin;
  4.     assign Cout = A & B | A & Cin | B & Cin;
  5.  
  6.     /*
  7.     Mismo circuito, pero en un bloque 'always'. Lo dejo aquí como referencia únicamente.
  8.  
  9.     reg rS, rCout;
  10.  
  11.     always @ (A or B) begin
  12.         rS = A ^ B ^ Cin;
  13.         rCout = A & B | A & Cin | B & Cin;
  14.     end
  15.  
  16.     assign S = rS;
  17.     assign Cout = rCout;
  18.     */
  19.  
  20. endmodule
  21.  
  22. module testbench();
  23.  
  24.     reg A, B, Cin;
  25.     wire S, Cout;
  26.  
  27.     full_adder U1(A, B, Cin, S, Cout);
  28.  
  29.     initial begin
  30.         $display("Cin A B | S Cout");
  31.         $display("----------------");
  32.         $monitor("  %b %b %b | %b  %b", Cin, A, B, S, Cout);
  33.         Cin = 0; A = 0; B = 0;
  34.         #1
  35.         Cin = 0; A = 0; B = 1;
  36.         #1
  37.         Cin = 0; A = 1; B = 0;
  38.         #1
  39.         Cin = 0; A = 1; B = 1;
  40.         #1
  41.         Cin = 1; A = 0; B = 0;
  42.         #1
  43.         Cin = 1; A = 0; B = 1;
  44.         #1
  45.         Cin = 1; A = 1; B = 0;
  46.         #1
  47.         Cin = 1; A = 1; B = 1;
  48.         #1
  49.         $finish;
  50.     end
  51.  
  52. endmodule
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement