驱动RGB接口的液晶,图像莫名其妙多了很多规律的列……
本帖最后由 bluefeel 于 2019-2-10 13:02 编辑如标题所述,显示8*8方格,黑色方格变成9*8了。正常来说是程序问题,我也希望是程序编写有问题。但是我拿起板子摆弄到某个位置时候就正常了……我彻底不知道怎么办了。
这是显示有问题的时候
放大来看黑格变成9*8了,导致后面直接少了两个格子
我换个姿势,它就显示正常了。杜邦线太长?干扰?干扰能这么规律?
看在线仿真,黑格也是8列
液晶时序
FPGA用verilog驱动的程序
//assign flag1 = ((cnt_h - 11'd25) / 8) % 2;
assign flag1 = ((cnt_h - 11'd24) / 8) % 2;
assign flag2 = ((cnt_v - 11'd8) / 8) % 2;
assign lcd_pclk = lcd_clk; // RGB LCD显示模块采样时钟
//assign lcd_hs= (cnt_h <= H_SYNC - 1'b1) ? 1'b0 : 1'b1;
//assign lcd_vs= (cnt_v <= V_SYNC - 1'b1) ? 1'b0 : 1'b1;
assign lcd_hs= ((cnt_h == 11'd0) && (lcd_clk == 1'b1)) || ((cnt_h == 11'd4) && (lcd_clk == 1'b0)) || (cnt_h == 11'd1) || (cnt_h == 11'd2) || (cnt_h == 11'd3) ? 1'b0 : 1'b1;
assign lcd_vs= ((cnt_v == 11'd0) && (cnt_h > 11'd4)) || ((cnt_v == 11'd1) && (cnt_h < 11'd5)) ? 1'b0 : 1'b1;
//使能RGB565数据输出
//assign lcd_en= (((cnt_h >= 11'd25) && (cnt_h < 11'd345)) &&
assign lcd_en= (((cnt_h >= 11'd24) && (cnt_h < 11'd344)) &&
((cnt_v >= 11'd8) && (cnt_v < 11'd328)))
? 1'b1 : 1'b0;
//RGB565数据输出
assign lcd_data = lcd_en ? (flag2 ? (flag1 ? 16'hffff : 16'h0000) : (flag1 ? 16'h0000 : 16'hffff)) : 16'hffff;
//行计数器对像素时钟计数
always @(negedge lcd_clk or negedge sys_rst_n) begin
if (!sys_rst_n)
cnt_h <= 11'd0;
else begin
if(cnt_h < H_TOTAL - 1'b1)
cnt_h <= cnt_h + 1'b1;
else
cnt_h <= 11'd0;
end
end
//场计数器对行计数
always @(negedge lcd_clk or negedge sys_rst_n) begin
if (!sys_rst_n)
cnt_v <= 11'd0;
else if(cnt_h == H_TOTAL - 1'b1) begin
if(cnt_v < V_TOTAL - 1'b1)
cnt_v <= cnt_v + 1'b1;
else
cnt_v <= 11'd0;
end
end 怎么改程序换参数还是多那些列,涨姿势就恢复正常,但是那个姿势很难试出来,位置有点变化就不正常了。姿势影响结果我实在想不出怎么解决了。 示波器,逻辑分析仪 线太长了,而且你用的杜邦线,线组很大。你要么把速度降低一些。要么用FPC排线,然后包上屏蔽线,就可以了。
这种规律性的错位我遇到过,解决方法就是这两种。 honami520 发表于 2019-2-10 14:39
线太长了,而且你用的杜邦线,线组很大。你要么把速度降低一些。要么用FPC排线,然后包上屏蔽线,就可以了 ...
时钟沿问题更有可能。我记得rgb lcd需要下降沿,而lz应该是上升沿 wye11083 发表于 2019-2-10 14:44
时钟沿问题更有可能。我记得rgb lcd需要下降沿,而lz应该是上升沿
我试过下降沿了,直接不行,时序图最下是上升沿。你说的下降沿是什么控制器呢?比如ILI9xxx全部是上升沿锁存数据。 honami520 发表于 2019-2-10 14:39
线太长了,而且你用的杜邦线,线组很大。你要么把速度降低一些。要么用FPC排线,然后包上屏蔽线,就可以了 ...
晚点试试,这个20cm的杜邦线确实是超强信号的天线,对讲机放到5米外还是有让人崩溃的噪音,还是很贵的建伍对讲机。 honami520 发表于 2019-2-10 14:39
线太长了,而且你用的杜邦线,线组很大。你要么把速度降低一些。要么用FPC排线,然后包上屏蔽线,就可以了 ...
问题暂时解决,可能就是你说的。我用逻辑分析仪看HS和VS很多干扰,然后我把HS、VS、CLK分配到对面的IO BANK就行了,不过摆弄线偶尔也会出现错位。
奇怪的是,更换IO后逻辑分析仪看还是这么多干扰,没有变化。更换IO的分析图。
VS, HS, DE 這幾根訊號最好是用FF output 去 drive I/O。
页:
[1]