Advertisement
Guest User

Untitled

a guest
Mar 13th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * This block chooses max value from inputs
  3.  * and assigns it to the output.
  4.  */
  5. module poolling_layer_unit(in, out);
  6.     input[7:0] in[0:3];
  7.     output[7:0] out;
  8.    
  9.     /*
  10.      * 8-digit comparator with only one output b>=a.
  11.      */
  12.     module comparator(a, b, out);
  13.         input[7:0] a;
  14.         input[7:0] b;
  15.         output out;
  16.        
  17.         assign out = ~a[7]&b[7]|(~(a[7]^b[7]))&
  18.                          (~a[6]&b[6]|(~(a[6]^b[6]))&
  19.                          (~a[5]&b[5]|(~(a[5]^b[5]))&
  20.                          (~a[4]&b[4]|(~(a[4]^b[4]))&
  21.                          (~a[3]&b[3]|(~(a[3]^b[3]))&
  22.                          (~a[2]&b[2]|(~(a[2]^b[2]))&
  23.                          (~a[1]&b[1]|(~(a[1]^b[1]))&
  24.                          (~a[0]&b[0]|(~(a[0]^b[0])))))))));
  25.                          
  26.     endmodule //comparator
  27.    
  28.     wire out_01;
  29.     wire out_23;
  30.     wire out_0123;
  31.     wire[7:0] in_01;
  32.     wire[7:0] in_23;
  33.    
  34.     comparator cmp01(in[0], in[1], out_01);
  35.     comparator cmp34(in[2], in[3], out_23);
  36.     comparator cmp(in_01, in_23, out_0123);
  37.    
  38.     always @ (in[0], in[1], in[2], in[3]) begin
  39.         in_01 = in[0] & ~out_01 | in[1] & out_01;
  40.         in_23 = in[2] & ~out_23 | in[3] & out_23;
  41.         out = in[0] & ~out_0123 & ~in_01 |
  42.                 in[1] & ~out_0123 & in_01 |
  43.                 in[2] & out_0123 & ~in_23 |
  44.                 in[3] & out_0123 & in_23;
  45.     end
  46.    
  47. endmodule //poolling_layer_unit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement