Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 09:41:41 10/12/2012
- // Design Name:
- // Module Name: rgbyuv
- // Project Name:
- // Target Devices:
- // Tool versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module rgbyuv(
- input clk,
- input rst,
- input signed [17:0] i_red,
- input signed [17:0] i_grn,
- input signed [17:0] i_blu,
- output reg [7:0] o_y,
- output reg [7:0] o_u,
- output reg [7:0] o_v,
- output reg skind
- );
- reg signed [17:0] red_r, grn_r, blu_r;
- reg signed [7:0] o_y2, o_u2, o_v2;
- reg signed [35:0] ry, gy, by, ru, gu, bu, rv, gv, bv;
- reg [7:0] p_y, p_u, p_v;
- parameter signed [17:0] RY_COEF = 'd66, GY_COEF = 'd129, BY_COEF = 'd25,
- RU_COEF = -'d38, GU_COEF = -'d74, BU_COEF = 'd112,
- RV_COEF = 'd112, GV_COEF = -'d94, BV_COEF = -'d18;
- always @(posedge clk)
- begin
- if(rst) begin
- red_r <= 18'd0;
- grn_r <= 18'd0;
- blu_r <= 18'd0;
- o_y <= 8'd0;
- o_u <= 8'd0;
- o_v <= 8'd0;
- end else begin
- red_r <= i_red; //input reg
- grn_r <= i_grn;
- blu_r <= i_blu;
- ry <= RY_COEF * red_r;
- gy <= GY_COEF * grn_r;
- by <= BY_COEF * blu_r;
- ru <= RU_COEF * red_r;
- gu <= GU_COEF * grn_r;
- bu <= BU_COEF * blu_r;
- rv <= RV_COEF * red_r;
- gv <= GV_COEF * grn_r;
- bv <= BV_COEF * blu_r;
- p_y <= ((ry + gy + by) >>> 8) + 16; //output reg
- p_u <= ((ru + gu + bu) >>> 8) + 128;
- p_v <= ((rv + gv + bv) >>> 8) + 128;
- o_y <= p_y;
- o_u <= p_u;
- o_v <= p_v;
- end
- end
- always @(posedge clk)
- begin
- if(rst) begin
- skind <= 0;
- end
- else begin
- //If 73 ≤ u ≤ 122 and 132 ≤ v ≤ 173 it is a skin pixel (skind=1)
- //Otherwise, not (skind=0)
- if(p_u >= 8'd73 && p_u <= 8'd122 && p_v >= 8'd132 && p_v <= 8'd173)
- skind <= 1'b1;
- else
- skind <= 0;
- end
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement