fpga图像处理学习日记

Posted fpgamzy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fpga图像处理学习日记相关的知识,希望对你有一定的参考价值。

在学习有关方面之前,我还是先行的用了一天时间重新学习了一遍uart协议,我认为对uart的熟悉程度会对接下来的学习过程有一定的帮助,于是开始了对图像处理的学习,首先在找资料方面实在是难受,每次在查找资料的过程都是很痛苦的,每每不能找到我想到的东西,花了很长的功夫去四处找我要学习的东西,终于东拼西凑对VGA有了一点初步的了解

技术分享图片

但是说实话,现在对一些名词还是没有很强的概念,比如前沿后沿,显示脉冲和同步脉冲等等,还是在参照下完成了代码


module vga_1(
    input clk,
    input rst_n,
    
    output hsync,
    output vsync,
    output vga_r,
    output vga_g,
    output vga_b
    );

    reg [10:0] x_cnt;
    reg [9:0]  y_cnt;
 
    wire valid; // 有效显示区标志
    
    assign valid = (x_cnt >= 11‘d187) && (x_cnt < 11‘d987) && (y_cnt >= 10‘d31) && (y_cnt < 10‘d631);
    
    wire [9:0] xpos,ypos;// 有效显示区坐标
    
    assign xpos = x_cnt - 11‘d187;
    
    assign ypos = y_cnt - 10‘d31;
   
    [email protected](posedge clk or negedge rst_n)
    begin
    if(!rst_n)
        x_cnt <= 11‘d0;
    else if(x_cnt == 11‘d1039)
        x_cnt <= 11‘d0;
    else
        x_cnt <= x_cnt + 1‘b1;
    end
    
    [email protected](posedge clk or negedge rst_n)
    begin
    if(!rst_n)
        y_cnt <= 10‘d0;
    else if(y_cnt == 10‘d665)
        y_cnt <= 10‘d0;
    else if(x_cnt == 11‘d1039)
        y_cnt <= y_cnt + 1‘b1;
    else
        y_cnt <= y_cnt;
    end

    reg hsync_r,vsync_r;
    
    [email protected](posedge clk or negedge rst_n)
    begin
    if(!rst_n)
        hsync_r <= 1‘b1;
    else if(x_cnt == 11‘d0)
        hsync_r <= 1‘b0;
    else if(x_cnt == 11‘d120)
        hsync_r <= 1‘b1;
    else
        hsync_r <= hsync_r;
    end
    
    [email protected](posedge clk or negedge rst_n)
    begin
    if(!rst_n)
        vsync_r <= 1‘b1;
    else if(y_cnt == 10‘d0)
        vsync_r <= 1‘b0;
    else if(y_cnt == 10‘d6)
        vsync_r <= 1‘b1;
    else
        vsync_r <= vsync_r;
    end
        
    assign hsync = hsync_r;
    assign vsync = vsync_r;
    
    wire a_dis,b_dis,c_dis,d_dis;
    
    assign a_dis = ( (xpos >= 200) && (xpos <= 220) ) && ( (ypos >= 140) && (ypos <= 460) );
    
    assign b_dis = ( (xpos >= 580) && (xpos <= 600) ) && ( (ypos >= 140) && (ypos <= 460) );
    
    assign c_dis = ( (xpos >= 220) && (xpos <= 580) ) && ( (ypos >= 140) && (ypos <= 160) );
    
    assign d_dis = ( (xpos >= 220) && (xpos <= 580) ) && ( (ypos >= 440) && (ypos <= 460) );
    
    wire e_rdy;
    
    assign e_rdy = ( (xpos >= 385) && (xpos <= 415) ) && ( (ypos >= 285) && (ypos <= 315) );
 
    
    assign vga_r = valid ? e_rdy : 1‘b0;
    
    assign vga_g = valid ?  (a_dis | b_dis | c_dis | d_dis) : 1‘b0 ;
    
    assign vga_b = valid ? ~(a_dis | b_dis | c_dis | d_dis) : 1‘b0 ;

endmodule
接下来的任务就是彻底的搞清楚整个VGA显示的工作原理以及流程了。



































































































以上是关于fpga图像处理学习日记的主要内容,如果未能解决你的问题,请参考以下文章

fpga图像处理学习日记

学习日记-2016.3.31

python学习日记——常见环境问题及处理

SSH学习日记之Struts

Linux学习日记(常用命令)

学习日记(字符串处理函数小知识strxxx)