RGB888 TO BT1120 转换

module datainput(DVAL,LVAL,FVAL,in,clk_m,Y_data,C_data);input LVAL;input clk_m;input FVAL;input DVAL;input [23:0] in;output reg [7:0] Y_data,C_data;reg [7:0] POARTA,POARTB;reg [11:0] cnt_lval_low,cnt_lval_high_pix;reg [10:0] LVALcnt;reg [9:0] y1, cr1, cb1;reg [7:0] y,cr,cb; reg [7:0] R,G,B;reg [7:0] Ytmp0,Cbtmp0,Crtmp0;/*————————————————*/parameter BLANKC = 8'b10000000;parameter BLANKY = 8'b00010000;parameter BLANKEAV = 8'b10110110;parameter BLANKSAV = 8'b10101011;parameter VALEAV = 8'b10011101;parameter VALSAV = 8'b10000000;parameter DFF = 8'b11111111;parameter D00 = 8'b00000000;/*————————————————*/always @ (posedge clk_m )beginR <= in[23:16];endalways @ (posedge clk_m )beginG <= in[15:8];endalways @ (posedge clk_m )beginB <= in[7:0];end//==============================================================always@(posedge clk_m)beginy1 = (66*R + 129*G + 25*B+4096)>>8; y <= (y1[9:8]==2'b00) ? y1[7:0] : (y1[9]==0) ? 8'b11101011 : y1[9:2];end//================================================================always@(posedge clk_m)begin cb1 = (112*B-38*R – 75*G+32768)>>8; cb <= (cb1[9:8]==2'b00) ? cb1[7:0] : (cb1[9]==0) ? 8'b11110000 : cb1[9:2];end//================================================================always@(posedge clk_m)begincr1 = (112*R – 94*G – 18*B+32768)>>8 ; cr <= (cr1[9:8]==2'b00) ? cr1[7:0] : (cr1[9]==0) ? 8'b11110000 : cr1[9:2];end /*————————————————*//*————————————————*/always@(posedge clk_m)beginif(!FVAL)LVALcnt = 0;else if(LVAL)begincnt_lval_high_pix=cnt_lval_high_pix+1'b1;if(cnt_lval_high_pix==2153)LVALcnt = LVALcnt + 1'b1;endelsecnt_lval_high_pix=0;end/*————————————————*/always @(posedge clk_m) begin Ytmp0 <= y; Cbtmp0 <=cb; Crtmp0 <=cr; end/*———————————————————————————–*/always@(posedge clk_m)beginif( (LVAL) && (LVALcnt == 16))begincase(cnt_lval_high_pix)126,2056: beginY_data<=DFF;C_data<=DFF;end127,128,2057,2058:beginY_data<=D00;C_data<=D00;end129: beginY_data<=BLANKSAV;C_data<=BLANKSAV;end2059: beginY_data<=VALEAV;C_data<=VALEAV;enddefault: beginY_data<= BLANKY;C_data<= BLANKC;endendcaseendelse if((LVAL) && (LVALcnt == 1096))begincase(cnt_lval_high_pix)126,2056: beginY_data<=DFF;C_data<=DFF;end127,128,2057,2058:beginY_data<=D00;C_data<=D00;end129: beginY_data<=VALSAV;C_data<=VALSAV;end2059: beginY_data<=BLANKEAV;C_data<=BLANKEAV;enddefault: beginY_data<= BLANKY;C_data<= BLANKC;endendcaseendelse if((LVAL) && (LVALcnt<=1095)&&(LVALcnt>=17))begincase(cnt_lval_high_pix)126,2056: beginY_data<=DFF;C_data<=DFF;end127,128,2057,2058:beginY_data<=D00;C_data<=D00;end129: beginY_data<=VALSAV;C_data<=VALSAV;end2059: beginY_data<=VALEAV;C_data<=VALEAV;enddefault: beginY_data <= Ytmp0;if(!cnt_lval_high_pix[0])C_data <= Cbtmp0;elseC_data <= Crtmp0;endendcaseend/*———————————————————————————–*/else begincase(cnt_lval_high_pix)126,2056: beginY_data<=DFF;C_data<=DFF;end127,128,2057,2058:beginY_data<=D00;C_data<=D00;end129: beginY_data<=BLANKSAV;C_data<=BLANKSAV;end2059: beginY_data<=BLANKEAV;C_data<=BLANKEAV;enddefault: beginY_data<= BLANKY;C_data<= BLANKC;endendcaseend/*————————————————*/end endmodule

先将RGB888转换成YCBCR,再将YCBCR转换成BT1120。

当cnt_lval_high_pix 计数到2153时,LVAL翻转:

定时基准码插入:

局部放大图:

版权声明:本文为博主原创文章,未经博主允许不得转载。

,所有的赏赐都只是被用来奖励工作成果的。

RGB888 TO BT1120 转换

相关文章:

你感兴趣的文章:

标签云: