1基本原理
真彩色图像的颜色通道分为R,G,B。按照RGB888来讲,三个通道分别为8bit,范围为0-255。
因为图像数据是无符号的所以再亮暗调节的时候不能超出这个范围。
暗调节:
Rnew=R-step 当(R》step)Rnew=0 当(R《step)
Gnew=G-step 当(G》step)Gnew=0 当(G《step)
Bnew=B-step 当B》step)Bnew=0 当(B《step)
2 verilog源码设计
图像的亮暗主要通过按钮来调节,调节的大小(步进)COE来控制。
其中数据的处理需要一个像素时钟,所以需要对VGA的其他同步信号进行1 clock的延时输出。
/**********************************
copyright@FPGA OPEN SOURCE STUDIO
`define COE 30*key_cnt
module dark#(
parameter DW = 24
)(
input pixelclk,
input reset_n,
input [DW-1:0] din,//rgb in
input i_hsync,
input i_vsync,
input i_de,
input [1:0] key_cnt,
output [DW-1:0]dout,//rgb out
output o_hsync,
output o_vsync,
output o_de
);
wire [7:0] r,g,b;
reg [7:
0] rout,gout,bout;
reg hsync_r;reg vsync_r;reg de_r;
assign r=din[23:16];assign g=din[15:8];assign b=din[7:0];
//assign rdark =(r》`COE)?(r-`COE):8‘b0;
assign o_hsync = hsync_r;assign o_vsync = vsync_r;assign o_de = de_r;assign dout={rout,gout,bout};
//synchronizationalways @(posedge pixelclk) begin hsync_r 《= i_hsync; vsync_r 《= i_vsync; de_r 《= i_de;end
always @(posedge pixelclk or negedge reset_n)begin if(!reset_n) begin rout《=0; gout《=0; bout《=0; end else begin case(key_cnt) 2’b00:begin rout《=r; gout《=g; bout《=b; end 2‘b01,2’b10,2‘b11:begin rout《=(r》`COE)?(r-`COE):8’b0; gout《=(g》`COE)?(g-`COE):8‘b0; bout《=(b》`COE)?(b-`COE):8’b0; end endcase endend
endmodule
3仿真效果
从亮到暗的变化很明显。
编辑:jq
全部0条评论
快来发表一下你的评论吧 !