Advertisement
Weesla

pixsel.v

Mar 16th, 2017
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date:    15:48:11 10/12/2012
  7. // Design Name:
  8. // Module Name:    pixsel
  9. // Project Name:
  10. // Target Devices:
  11. // Tool versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21. module pixsel(
  22.     input clk,
  23.     input rst,
  24.     input [7:0] in_r,
  25.     input [7:0] in_g,
  26.     input [7:0] in_b,
  27.     input [7:0] in_y,
  28.     input [7:0] in_u,
  29.     input [7:0] in_v,
  30.     input [2:0] in_c,
  31.     input in_skin,
  32.     input [7:0] in_swt,
  33.     output reg [7:0] out_r,
  34.     output reg [7:0] out_g,
  35.     output reg [7:0] out_b,
  36.     output reg [2:0] out_ctrl
  37.     );
  38.  
  39. //Saturation logic
  40. wire [8:0] max_r = ((in_r + 64)<255) ? in_r + 64 : 255;
  41. wire [8:0] min_r = ((in_r - 32)>0) ? in_r - 32 : 0;
  42. // Add code for max_g, min_g, max_b, and min_b
  43.  
  44. wire [8:0] max_g = ((in_g + 64)<255) ? in_g + 64 : 255;
  45. wire [8:0] min_g = ((in_g - 32)>0) ? in_g - 32 : 0;
  46.  
  47. wire [8:0] max_b = ((in_b + 64)<255) ? in_b + 64 : 255;
  48. wire [8:0] min_b = ((in_b - 32)>0) ? in_b - 32 : 0;
  49.  
  50. //Output select logic
  51. always @(posedge clk)
  52. begin
  53.     if(rst) begin
  54.         out_r <= 8'd0;
  55.         out_g <= 8'd0;
  56.         out_b <= 8'd0;
  57.         out_ctrl <= 3'd0;
  58.     end else begin
  59.         case(in_swt)
  60.             8'd1: begin
  61.             out_r <= in_y;
  62.             out_g <= in_y;
  63.             out_b <= in_y;
  64.             end
  65.             8'd2: begin
  66.             out_r <= in_u;
  67.             out_g <= in_u;
  68.             out_b <= in_u;
  69.             end
  70.             8'd3: begin
  71.             out_r <= in_v;
  72.             out_g <= in_v;
  73.             out_b <= in_v;
  74.             end
  75.             8'd4: begin           //Check Skin = grey, Background = red
  76.             if(in_skin) begin
  77.             out_r <= in_y;
  78.             out_g <= in_y;
  79.             out_b <= in_y;
  80.             end
  81.             else begin
  82.             out_r <= max_r;
  83.             out_g <= min_g;
  84.             out_b <= min_b;
  85.             end
  86.             end
  87.             8'd5: begin      
  88.             if(in_skin) begin
  89.             out_r <= min_r;
  90.             out_g <= max_g;
  91.             out_b <= min_b;
  92.             end
  93.             else begin
  94.             out_r <= in_r; out_g <= in_g; out_b <= in_b;
  95.             end
  96.             end
  97.            
  98.             8'd6:begin         
  99.             if(in_skin) begin
  100.             out_r <= min_r;
  101.             out_g <= min_g;
  102.             out_b <= max_b;
  103.             end
  104.             else begin
  105.             out_r <= in_r; out_g <= in_g; out_b <= in_b;
  106.             end
  107.             end
  108.             8'd7:begin         
  109.             if(in_skin) begin
  110.             out_r <= max_r;
  111.             out_g <= min_g;
  112.             out_b <= min_b;
  113.             end
  114.             else begin
  115.             out_r <= in_r; out_g <= in_g; out_b <= in_b;
  116.             end
  117.             end
  118.            
  119.             default : begin
  120.                 out_r <= in_r; out_g <= in_g; out_b <= in_b;
  121.             end
  122.         endcase
  123.         out_ctrl <= in_c;
  124.     end
  125. end
  126.  
  127. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement