rei1984 发表于 2020-9-9 08:26:29

cpld 驱动 VGA 640*480 液晶的代码,一直黑屏无显示,有通辽遇到过吗


tmp_clk 是25mhz   ,时序也 仿真过了,是对的。 但是就是无法正确显示。    类似的程序 来驱动 800x600 是正常的。也就是排除硬件的问题了。哪位有verilog的 正确驱动程序,能发上来参考一下吗?   要求 分辨率是640*480 ,我用的是 240t100,osc 50mhz ,2分频就是 25m的tmp_clk



reg hcount = 0;
reg vcount = 0;


always @(posedge tmp_clk)
begin

    if(hcount == 799)
    begin
      hcount <= 0;
      if(vcount == 524)
      vcount <= 0;
      else
      vcount <= vcount+1'b1;
    end
    else
      hcount <= hcount+1'b1;


if (vcount >= 490 && vcount < 492)
    vsync <= 1'b0;
else
    vsync <= 1'b1;

if (hcount >= 656 && hcount < 752)
    hsync <= 1'b0;
else
    hsync <= 1'b1;

end


assign r =1'b1;

assign g =1'b1;

assign b =1'b0;

hecat 发表于 2020-9-9 09:31:05

网上找的一个VGA时序表,对照着做时序吧。

hecat 发表于 2020-9-9 09:47:25

这个是行业标准。

wye11083 发表于 2020-9-9 11:24:49

hecat 发表于 2020-9-9 09:47
这个是行业标准。

vga频率要求非常严格,多一点少一点都不行,显示器芯片是根据频率和hs/vs来推算的。所以lz要检查(1)主频,(2)hs/vs极性,(3)才是数据线有无信号。

rei1984 发表于 2020-9-9 13:15:25

感谢ls 的各位大神。

今天早上5点开始 , 调试到中午12 点。 终于搞出来了。    和大家一样,我不停的在debug。 其实翻车的地点和大家想的都不太一样。

1. 首先 通过sim 后, 我仔细的观察了hs vs 的波形。是正确的。   国内的资料,有些时序都是错误的。

2. 我回头在去调试 800 x 600 的波形。 发现 hs 和 vs 的波形和国外的资料有差异。但是奇怪的是800x 600 按照spec 手册,应该是错误的波形。确得到了正确的 图案

3.然后我继续 改写 800x600的 波形。 让波形符合 了spec 的 波形。 得到的结果也是正确的图案

4. 在 得到正确的结果后, 我在 800*600的程序里面 改写了 r g b 的 颜色数据。惊奇的发现,如果直接对 rgb 赋 确定的高低电平。 有很多组合,显示器是无法正常显示的。但是 有一些组合 又可以正常显示

5.继续深挖下去。 发现只有在 800 *600 的 分辨率内 ,设置 r g b 高低电平,才能正确显示颜色。   《===到这里 我开始怀疑 之前 640*480 问题出在颜色这里

6.继续 通过spec 改写640*480 的 hs vs 波形。 继续sim 。 wave正确。 但是 实验结果失败。 黑屏。

7. 继续 改 color的 产生方式。最后得到了成功的结果。


以下是我刚刚看到 楼上兄弟的截图:注意画圆圈的地方:





通过 这次 奋战。自己水平提高了。 但是也受到了教训。英文真的要好好看。 我是活活的通过实验把spec的波形反推出来的

zaldy30 发表于 2020-9-27 11:09:10

楼主能否介绍一下硬件原理图?谢谢

rei1984 发表于 2020-9-29 09:15:18

zaldy30 发表于 2020-9-27 11:09
楼主能否介绍一下硬件原理图?谢谢

r g b hs vs 直接接gpio就行了。合计5个io

huangqi412 发表于 2020-9-29 13:17:54

rei1984 发表于 2020-9-29 09:15
r g b hs vs 直接接gpio就行了。合计5个io

五个你是七色没有位深

rei1984 发表于 2020-9-29 18:10:27

huangqi412 发表于 2020-9-29 13:17
五个你是七色没有位深

是的。正常情况 是不是 r g b接 dac的ouput的???

也就是 vga的 r g b 3条线其实是模拟信号??

huangqi412 发表于 2020-9-29 18:14:57

rei1984 发表于 2020-9-29 18:10
是的。正常情况 是不是 r g b接 dac的ouput的???

也就是 vga的 r g b 3条线其实是模拟信号?? ...

用并口电阻网络哪有那么多da

rei1984 发表于 2020-9-29 18:35:30

huangqi412 发表于 2020-9-29 18:14
用并口电阻网络哪有那么多da

3个da 就好啦。   r 是把3.3v 分为 8个阶梯      gb 也是同样的道理。   不过 vga 接口已经淘汰了。 学习实验的意义大于实际项目的意义。   

hdmi才是主流

huangqi412 发表于 2020-9-29 20:21:07

rei1984 发表于 2020-9-29 18:35
3个da 就好啦。   r 是把3.3v 分为 8个阶梯      gb 也是同样的道理。   不过 vga 接口已经淘汰了。...

如果hdmi那你要搞个高级点的片子没啥复杂内容但是时钟要足够高并行变串行速度翻10倍啊
页: [1]
查看完整版本: cpld 驱动 VGA 640*480 液晶的代码,一直黑屏无显示,有通辽遇到过吗