首页 > 其他 > 详细

rgb_lcd显示锯齿波

时间:2021-01-19 19:59:03      阅读:38      评论:0      收藏:0      [点我收藏+]

新手上路,过程中遇到一个问题,希望有人能给我指点迷津。

下面是按照自己的rgb_lcd显示屏(800*480)来写的显示模块代码

module lcd_display(
    input                lcd_pclk,    //时钟
    input                rst_n,       //复位,低电平有效
    input        [10:0]  pixel_xpos,  //当前像素点横坐标
    input        [10:0]  pixel_ypos,  //当前像素点纵坐标  
    input        [10:0]  h_disp,      //LCD屏水平分辨率
    input        [10:0]  v_disp,      //LCD屏垂直分辨率       
    output  reg  [23:0]  pixel_data   //像素数据
    );

//parameter define  
parameter WHITE = 24hFFFFFF;  //白色
parameter BLACK = 24h000000;  //黑色
parameter RED   = 24hFF0000;  //红色
parameter GREEN = 24h00FF00;  //绿色
parameter BLUE  = 24h0000FF;  //蓝色

//根据当前像素点坐标指定当前像素点颜色数据,在屏幕上显示锯齿波
always @(posedge lcd_pclk or negedge rst_n) begin
      if(!rst_n)
        pixel_data <= WHITE;
//    else if(pixel_ypos==240 ||(pixel_ypos==(pixel_xpos*10))
//    ||(pixel_ypos==(-pixel_xpos*10+960))||(pixel_ypos==(pixel_xpos*10-960))
//    ||(pixel_ypos==(-pixel_xpos*10+1920))||(pixel_ypos==(pixel_xpos*10-1920))
//    ||(pixel_ypos==(-pixel_xpos*10+2880))||(pixel_ypos==(pixel_xpos*10-2880))
//    ||(pixel_ypos==(-pixel_xpos*10+3840))||(pixel_ypos==(pixel_xpos*10-3840))
//    ||(pixel_ypos==(-pixel_xpos*10+4800))||(pixel_ypos==(pixel_xpos*10-4800))
//    ||(pixel_ypos==(-pixel_xpos*10+5760))||(pixel_ypos==(pixel_xpos*10-5760))
//    ||(pixel_ypos==(-pixel_xpos*10+6720))||(pixel_ypos==(pixel_xpos*10-6720))
//    ||(pixel_ypos==(-pixel_xpos*10+7680))||(pixel_ypos==(pixel_xpos*10-7680)))
//锯齿波显示,但由于是乘法,跨度太大,波形显示不连续。下面换成除法   
    else if(pixel_ypos==240||(pixel_xpos==pixel_ypos/10)
        ||(pixel_xpos==(96-pixel_ypos/10))||(pixel_xpos==(pixel_ypos/10+96))   //在这个过程中遇到一个很奇怪的问题,
        ||(pixel_xpos==(192-pixel_ypos/10))||(pixel_xpos==(pixel_ypos/10+192)) //(pixel_xpos==(-pixel_ypos/10+96)) 
        ||(pixel_xpos==(288-pixel_ypos/10))||(pixel_xpos==(pixel_ypos/10+288)) //像上面那样写,波形显示不出这类线 
        ||(pixel_xpos==(384-pixel_ypos/10))||(pixel_xpos==(pixel_ypos/10+384)) //(pixel_xpos==(96-pixel_ypos/10))
        ||(pixel_xpos==(480-pixel_ypos/10))||(pixel_xpos==(pixel_ypos/10+480)) //只有这样写才能显示出这类线 
        ||(pixel_xpos==(576-pixel_ypos/10))||(pixel_xpos==(pixel_ypos/10+576))  
        ||(pixel_xpos==(672-pixel_ypos/10))||(pixel_xpos==(pixel_ypos/10+672))  
        ||(pixel_xpos==(768-pixel_ypos/10))||(pixel_xpos==(pixel_ypos/10+768))) 
        pixel_data <= RED;
    else
        pixel_data <= WHITE; 
end
  
endmodule

下一步想要使用dds来实现正弦波的显示,可惜找了挺久没没见到在vivado上对dds的操作,不知道怎么去设置参数。

rgb_lcd显示锯齿波

原文:https://www.cnblogs.com/zynq382154/p/14299520.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!