Advertisement
Guest User

Untitled

a guest
May 8th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module zad5
  2.     #(parameter N=8)(
  3.     input [N-1:0] a,b,
  4.     output [N*2:0] p);
  5.    
  6.     wire [N-1:0] m[N-1:0];  
  7.     wire [N-1:0] s[1:N-1];
  8.    
  9.     wire cout[1:N-1];
  10.    
  11.      generate
  12.         genvar i;  
  13.         for (i=0; i<N; i=i+1)
  14.         begin: bf1
  15.             assign m[i] = a & {N{b[i]}};
  16.         end
  17.      
  18.         adder_N_bits #(N) ({1'b0,m[0][N-1:1]},m[1],1'b0,s[1],cout[1]);           
  19.    
  20.         for (i=1; i<N-1; i=i+1)
  21.         begin: bf2
  22.             adder_N_bits #(N) ({cout[i],s[i][N-1:1]},m[i+1],1'b0,s[i+1],cout[i+1]);
  23.         end
  24.  
  25.         for (i=0; i<N-1; i=i+1)
  26.         begin: bf3
  27.             assign p[i] = m[i][0];
  28.         end
  29.      endgenerate
  30.      
  31.      assign p[N*2-2:N-1] = s[N-1];
  32.     assign p[N*2-1] = cout[N-1];
  33.      
  34. endmodule
  35.  
  36. module adder_N_bits
  37.     #(parameter N=8)
  38.     (input [N-1:0] A,B,
  39.     input cin,
  40.     output [N-1:0] S,
  41.     output cout);
  42.    
  43.     assign {cout,S} = A + B + cin;
  44.    
  45. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement