hdmi_gray 图像灰度化学习笔记

此程序在HDMI图像显示基础上增加了图像处理模块和RAM模块存储处理之后的图片再通过HDMI显示。

在top文件中的思路:先在ROM中缓存一张图片,将读出的数据送入img_processor中进行处理,并将处理后的数据存入RAM中,最后送入hdmi显示模块。


图像处理模块:

一、先读取ROM中的像素数据

always @(posedge pixel_clk or negedge sys_rst_n) begin
    if(!sys_rst_n)
        rom_addr <= 16'd0;
    //当横纵坐标位于图片显示区域时,累加ROM地址    
    else if((rom_addr < RAM_NUM) && rom_rd_en) 
        rom_addr <= rom_addr + 1'b1;
    //当横纵坐标位于图片区域最后一个像素点时,ROM地址清零    
    else 
        rom_addr <= 16'd0;
end

二、灰度化原理:R G B三通道的数值相等

具体实现:1、原始数据是RGB888格式,先通过公式转成YCbCr格式(3级流水线)

                2、提取Y分量,将R G B三通道都赋成Y的值

三、RAM写入

 ram_wr_en:RAM写使能,rom读到第三个数时拉高,开始写入

//RAM端口A使能信号,输出第一个灰度化数据时拉高,同时拉高写使能
always @ (posedge pixel_clk or negedge sys_rst_n) begin
	if(!sys_rst_n) 
		ram_wr_en <= 1'b0;
	else if(rom_addr >= 16'd3)
		ram_wr_en <= 1'b1;
	else
		ram_wr_en <= 1'b0;
end

//RAM端口A写地址,0~RAM_NUM-1
always @ (posedge pixel_clk or negedge sys_rst_n) begin
	if(!sys_rst_n) 
		ram_wr_addr <= 16'd0;
	else if((ram_wr_addr < (RAM_NUM-1)) && ram_wr_en)
		ram_wr_addr <= ram_wr_addr + 1'b1;
	else
		ram_wr_addr <= 16'd0;
end

处理后的像素数据存储模块(RAM) 

写入接Img_Processor,读出接pic_display,输出给pic_display


图像显示模块

在图像显示区域将RAM相应地址中的值赋给显示像素数据pixel_data


框图如下:

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值