Advertisement
Guest User

Untitled

a guest
Dec 31st, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module ate(clk,reset,pix_data,bin,threshold);
  2. input clk;
  3. input reset;
  4. input [7:0] pix_data;
  5. output bin;
  6. output [7:0] threshold;
  7. reg [7:0] threshold;
  8. reg bin;
  9.  
  10. reg [7:0] data [63:0]; 
  11. reg [5:0]counter;
  12. reg [7:0]min0;
  13. reg [7:0]max0;
  14. reg [4:0]block;
  15. integer i; 
  16.    
  17.     always@(posedge clk or posedge reset)
  18.     begin
  19.         if(reset)
  20.         begin
  21.             block <= 5'd0; 
  22.         end
  23.         else
  24.             begin
  25.                 if((counter == 6'd63)&&(block == 5'd5))
  26.                 begin
  27.                     block <= 5'd0;
  28.                 end
  29.                 else if(counter == 6'd63)
  30.                 begin
  31.                     block <= block + 5'd1;
  32.                 end
  33.             end
  34.     end
  35.    
  36.  
  37.     always@(posedge clk or posedge reset)
  38.     begin
  39.         if(reset)
  40.         begin
  41.             counter <= 6'd0;
  42.         end
  43.         else
  44.         begin
  45.             counter <= counter + 6'd1;
  46.         end
  47.     end
  48.    
  49.     always@(posedge clk or posedge reset)
  50.     begin
  51.         if(reset)
  52.         begin
  53.             for(i = 0; i < 64; i = i + 1)
  54.             begin
  55.                 data[i] <= 8'd0;
  56.             end
  57.         end
  58.         else
  59.         begin
  60.             data[counter] <= pix_data;
  61.         end
  62.     end
  63.    
  64.     always@(posedge clk or posedge reset)
  65.     begin
  66.         if(reset)
  67.         begin
  68.             max0 <= 8'd0;
  69.         end
  70.         else
  71.         begin
  72.            if(counter == 6'd0)
  73.            begin
  74.               max0 <= pix_data;
  75.            end
  76.             else if(max0 < pix_data)
  77.             begin
  78.                 max0 <= pix_data;  
  79.             end
  80.         end
  81.     end
  82.    
  83.     always@(posedge clk or posedge reset)
  84.     begin
  85.         if(reset)
  86.         begin
  87.             min0 <= 8'hff;
  88.         end
  89.         else
  90.         begin
  91.            if(counter == 6'd0)
  92.            begin
  93.               min0 <= pix_data;
  94.            end
  95.             else if(min0 > pix_data) //(min0 > pix_data)
  96.             begin
  97.                 min0 <= pix_data;
  98.             end
  99.         end
  100.     end
  101.  
  102.     //output
  103.     wire dout;
  104.     wire [7:0]avg;
  105.     wire [7:0]thout;
  106.     wire [8:0]sum;
  107.    
  108.     assign sum = {1'b0, min0} + {1'b0, max0};
  109.     assign avg = (sum[0]) ? (sum + 9'd01) >> 1 : sum >> 1;
  110.     assign dout = (((block == 5'd1)||(block == 5'd0))) ? 1'b0 :
  111.                   ((counter == 6'd0)&&(data[0] >= avg)) ? 1'b1 :
  112.                   ((counter != 6'd0)&&(data[counter] >= threshold)) ? 1'b1 : 1'b0;
  113.                  
  114.                  
  115.     assign thout = (((block == 5'd1)||(block == 5'd0))) ? 8'd0 : avg;
  116.    
  117.     always@(posedge clk or posedge reset)
  118.     begin
  119.         if(reset)
  120.         begin
  121.             bin <= 1'b0;
  122.         end
  123.         else
  124.         begin
  125.             bin <= dout;
  126.         end
  127.     end
  128.    
  129.     always@(posedge clk or posedge reset)
  130.     begin
  131.         if(reset)
  132.         begin
  133.             threshold <= 8'd0;
  134.         end
  135.         else
  136.         begin
  137.             if(counter == 6'd0)
  138.             begin
  139.                 threshold <= thout;
  140.             end
  141.         end
  142.     end
  143.  
  144. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement