这里记录一下,一些常见且可直接调用的图像处理模块
RGB565转成灰度值图像
module RGB2Gray(
clk,
rst_n,
rgb_inen,
rgb565,
gray
);
input clk; //时钟
input rst_n; //异步复位
input rgb_inen; //rgb 输入有效标识
input [15:0] rgb565 ;
output [15:0] gray; //GRAY 输出
//求平均法GRAY = (R+B+G)/3=((R+B+G)*85)>>8
wire [9:0] sum;
wire [7:0] red;
wire [7:0] green;
wire [7:0] blue;
reg [15:0] gray_r;
wire [7:0] gray_8;
assign sum = red + green + blue;
assign red = {rgb565[15:11],rgb565[13:11]};
assign green = {rgb565[10:5],rgb565[6:5]};
assign blue = {rgb565[4:0],rgb565[2:0]};
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
gray_r <= 16'd0;
else if(rgb_inen)
gray_r <= {sum,6'b000000}+{sum,4'b0000}+ {sum,2'b00} + sum;
else
gray_r <= 16'd0;
end
assign gray_8 = gray_r[15:8];
assign gray = {gray_8[7:3],gray_8[7:2],gray_8[7:3]};
endmodule