搜索
bottom↓
回复: 8

FPGA 驱动群创4.3寸TFT液晶 显示颜色时RGB值自动取反?

[复制链接]

出0入0汤圆

发表于 2010-11-16 13:34:31 | 显示全部楼层 |阅读模式
小弟最近在用CycloneII:ep2c5q208c8的FPGA驱动驱动群创4.3寸TFT液晶,(24位RGB)在满屏显示一种颜色的时候出现了一个奇怪的问题:当设定一个背景色如:24'0000ff时,理应显示红色,但在液晶上显示时,第一帧画面显示的是红色,第二帧显示的却是淡蓝色,然后又显示红色,又淡蓝色,如此往复 当将RGB值设为黑色时,液晶第一帧画面显示的是黑色,第二帧显示的是白,如此往复。我怀疑是RGB值被取反了,搞不懂为什么会出现这种情况,还望坛里大虾帮帮忙。现将程序贴出来:
module tft(clk_9m,disp_enable,hsync,vsync,de,disp_rgb);
   input clk_9m;
   //input clk;
   //input rst_n;
   output disp_enable;
   output hsync;
   output vsync;
   output de;
   output [23:0] disp_rgb;
   
        reg [23:0] disp_rgb=24'hzzzzzz;
   reg [9:0] hcount=10'd0;
   reg [9:0] vcount=10'd0;
   //reg [23:0] disp_rgb_r;
   
   //wire clk_9m;
   wire dat_act;
   wire hcount_over;
   wire vcount_over;
   
   //reg hcount_over_r;
        //reg vcount_over_r;
   parameter Hsync_end=10'd40;
   parameter Hdata_begin=10'd42;
   parameter Hdata_end=10'd523;
   parameter Hpixel_end=10'd524;
   
   parameter Vsync_end=10'd0;
   parameter Vdata_begin=10'd0;
   parameter Vdata_end=10'd283;
   parameter Vline_end=10'd285;
       
   //clock cc(clk,rst_n,clk_9m);
   
   //???
   always @(posedge clk_9m )
   begin
       if(hcount_over)
                hcount<=10'd0;
            else
                hcount<=hcount+10'd1;
   end
   
   assign hcount_over=(hcount==Hpixel_end);
   //???
   always @(posedge hcount_over )
   begin
       if(hcount_over)
            begin
              if(vcount_over)
                 vcount<=10'd0;
            else
               vcount<=vcount+10'd1;
        end
   end
   
   //assign hcount_over=hcount_over_r;
        //assign vcount_over=vcount_over_r;
       
        //always @(posedge clk)
        //begin
        //        hcount_over_r<=(hcount==Hpixel_end);
        //        vcount_over_r<=(vcount==Vline_end);
        //end
   
   assign vcount_over=(vcount==Vline_end);
   assign dat_act=((hcount>=Hdata_begin)&&(hcount<Hdata_end))&&((vcount>=Vdata_begin)&&(vcount<Vdata_end));
   assign hsync=(hcount>Hsync_end);
   assign vsync=(vcount>Vsync_end);
   assign de =(hcount>Hdata_begin)&&(hcount<Hdata_end);
   assign disp_enable=1'b1;
   //assign disp_rgb=dat_act? 24'hffffff:24'hff0000;
   //assign disp_rgb=24'hff00ff;
        always @(negedge clk_9m)
        begin
                if(de) begin
                        if(dat_act)
                                disp_rgb<=24'h00ff00;
                        else disp_rgb<=24'hffffff;
                end
        end
endmodule

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-11-16 14:52:13 | 显示全部楼层
mark..

出0入0汤圆

发表于 2010-11-16 19:05:34 | 显示全部楼层
这些 代码 怎么看起来多如此相似呢?

出0入0汤圆

 楼主| 发表于 2010-11-16 19:39:02 | 显示全部楼层
这是参考周立功的EDA书上面的内容写的

出0入0汤圆

 楼主| 发表于 2010-11-16 20:18:39 | 显示全部楼层
我尝试着将24位RGB数据线不通过FPGA,直接接高、低电平。显示的也是黑白交替显示,这就应该和程序没有关系了吧? 但为什么会出现这种情况呢?

出0入0汤圆

 楼主| 发表于 2010-11-17 08:31:31 | 显示全部楼层
坛里面有没有遇到过类似情况的,指点一下,小弟感激不尽呀!

出0入0汤圆

 楼主| 发表于 2010-11-22 09:33:24 | 显示全部楼层
问题已解决,应该是控制信号de,vsync,hsync赋值的时候没有经过时钟同步而产生毛刺,但为啥会出现这种特定情况还不清楚
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 11:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表