梁爽Shuang 2024-11-01 13:00 采纳率: 72.5%
浏览 6
已结题

基于给定的原理图和写代码

img


根据这个原理图,写出对图像进行灰度化的verilog代码FPGA实现(紫光同创盘古开发板)

  • 写回答

1条回答 默认 最新

  • 老皮芽子 2024-11-01 13:53
    关注
    
    
    module rgb_to_gray
    (
        input                pixclk,
        input                vs,
        input                hs,
        input                de,
        input    [7:0]        r,
        input    [7:0]        g,
        input    [7:0]        b,
    
        output                pixclk_o,
        output                vs_o,
        output                hs_o,
        output                de_o,
        output    [7:0]        r_o,
        output    [7:0]        g_o,
        output    [7:0]        b_o
    );
    
        reg    vs_r1;
        reg    hs_r1;
        reg    de_r1;
        reg    vs_r2;
        reg    hs_r2;
        reg    de_r2;
    
        reg    [7:0]    r_r;
        reg    [7:0]    g_r;
        reg    [7:0]    b_r;
        reg    [7:0]    gray_r;
        
    
        //通常 RGB 亮度按这个公式计算 Y = 0.299R + 0.587G + 0.114B
        //把 RGB 这3个通道相等,且都等与上面的这个算出来的亮度就完成了彩色转灰度
        assign    r_o    = gray_r;
        assign    g_o    = gray_r;
        assign    b_o    = gray_r;
    
        //下面的计算,分解成了先求 3 个颜色与系数乘积,再求和。这样做会降低每个单位时钟的计算量。
        //在做一些 4K 视频时,这样的处理时序任然会紧张,就需要用 FPGA 专用的 DSP 或乘法单元来处理。
    
        always@(posedge pixclk)
        begin
            r_r        <= 0.299 * r;
            g_r        <= 0.587 * g;
            b_r        <= 0.114 * b;
            gray_r    <= r_r + g_r + b_r;
        end
    
        assign    pixclk_o    = pixclk;
        assign    vs_o        = vs_r2;
        assign    hs_o        = hs_r2;
        assign    de_o        = de_r2;
    
        //在 3 通道的计算中,时钟用了 2 拍。这里与颜色数据同步的 VS,HS,DE 也需要延时 2 拍
        always@(posedge pixclk)
        begin
            vs_r1    <= vs;
            vs_r2    <= vs_r1;
            hs_r1    <= hs;
            hs_r2    <= hs_r1;
            de_r1    <= de;
            de_r2    <= de_r1;
        end
        
    endmodule
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月10日
  • 已采纳回答 11月2日
  • 创建了问题 11月1日