Advertisement
Andrei_M

Lab 8 CLA 4 bits

Nov 12th, 2019
519
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module ac
  2.   (
  3.   input x,y, ci,
  4.   output z, p, g
  5.   );
  6.  
  7.   assign z = x ^ y ^ ci;
  8.   assign g = x & y;
  9.   assign p = x | y;
  10.  
  11. endmodule
  12.  
  13. module bc
  14.   (
  15.   input gi0, pi0, gi1, pi1, ci,
  16.   output go, po, co
  17.   );
  18.  
  19.   assign go = gi1 | (gi0 & pi1);
  20.   assign po = pi1 & pi0;
  21.   assign co = (ci & pi0) | gi0;
  22.  
  23. endmodule
  24.  
  25.  
  26. module ml_cla
  27.   (
  28.   input [3:0] x, y,
  29.   input ci,
  30.   output [3:0] z,
  31.   output co
  32.   );
  33.  
  34.   wire g3, g2, g1, g0, p3, p2, p1, p0, c3, c2, c1, c0, g23, p23, g01, p01, g03, p03;
  35.   //wires
  36.   //4 ACs
  37.   //3 BCs
  38.  
  39.   ac ac_1
  40.   (
  41.     .x(x[0]),
  42.     .y(y[0]),
  43.     .ci(ci),
  44.     .z(z[0]),
  45.     .g(g),
  46.     .p(p)
  47.    
  48.   );
  49.  
  50.   ac ac_2
  51.   (
  52.     .x(x[1]),
  53.     .y(y[1]),
  54.     .ci(ci),
  55.     .z(z[1]),
  56.     .g(g),
  57.     .p(p)
  58.    
  59.   );
  60.  
  61.   ac ac_3
  62.   (
  63.     .x(x[2]),
  64.     .y(y[2]),
  65.     .ci(ci),
  66.     .z(z[2]),
  67.     .g(g),
  68.     .p(p)
  69.    
  70.   );
  71.  
  72.   ac ac_4
  73.   (
  74.     .x(x[3]),
  75.     .y(y[3]),
  76.     .ci(ci),
  77.     .z(z[3]),
  78.     .g(g),
  79.     .p(p)
  80.    
  81.   );
  82.  
  83.  
  84.   bc bc_1
  85.   (
  86.     .gi0(g0),
  87.     .pi0(p0),
  88.     .gi1(g1),
  89.     .pi1(p1),
  90.     .ci(ci),
  91.     .go(g01),
  92.     .po(p01),
  93.     .co(c1)
  94.   );
  95.  
  96.   bc bc_2
  97.   (
  98.     .gi0(g2),
  99.     .pi0(p2),
  100.     .gi1(g3),
  101.     .pi1(p3),
  102.     .ci(c2),
  103.     .go(g23),
  104.     .po(p23),
  105.     .co(c3)
  106.   );
  107.  
  108.   bc bc_3
  109.   (
  110.     .gi0(g01),
  111.     .pi0(p01),
  112.     .gi1(g23),
  113.     .pi1(p23),
  114.     .ci(ci),
  115.     .go(g03),
  116.     .po(p03),
  117.     .co(c2)
  118.   );
  119.  
  120.   assign co = g03 | ( p03 & ci);
  121.  
  122. endmodule
  123.  
  124.  
  125. module ml_cla_tb
  126.   (
  127.   output reg [3:0] x, y,
  128.   output reg ci,
  129.   output co ,
  130.   output [3:0] z
  131.   );
  132.  
  133.   integer i;
  134.  
  135.   initial begin
  136.    
  137.   {x, y, ci} = 7'd0;
  138.  
  139.     for(i = 1; i < 256; i = i+1)
  140.      #100 {x, y, ci} = i[7:0];
  141.      
  142.   end
  143. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement