【问题标题】:Weird custom VGA signal behaviour (FPGA)奇怪的自定义 VGA 信号行为 (FPGA)
【发布时间】:2022-08-24 00:53:38
【问题描述】:

我的目标是在分辨率为 640x480px 的 VGA 显示器上显示一些东西。出于其他原因,我真的很想坚持这个决议,但我们会看到的。

问题

有些线条显得较暗,有些线条显得较淡,左侧还有一个大的黑色边框。我很确定这不是(纯粹)由于我的“信号时序错误”。(请忽略白色划痕)

我的设置

  • Altera Cyclone IV FPGA
  • 3x330 Ohm 电阻器(在 R、G、B 线上)(我直接用 3V3 驱动 VSYNC 和 HSYNC)
  • 监控 NEC MultiSync EA232WMi (manual)

Verilog 代码

module vga_test (
    output wire HSYNC,
    output wire VSYNC,
    output wire enable,
    output wire r,
    output wire g,
    output wire b,
    // 50 MHz at clk
    input wire clk
    );
    
    reg [32:0] hor_counter;
    reg [32:0] ver_counter;
 
    reg [32:0] counter;
 
    always @(posedge clk) begin
        counter <= counter + 1;
 
            if (enable == 1) begin
                    if (hor_counter[2:0] == 3) begin
                        g <= 1;
                    end else begin
                        g <= 0;
                    end
            end
 
            // Vertical counter
            if (hor_counter == 1271) begin
                enable <= 0;
            end if (hor_counter == 1303) begin
                HSYNC <= 0;
            end if (hor_counter == 1494) begin
                HSYNC <= 1;
            end    
 
            hor_counter <= hor_counter + 1;
 
            if (hor_counter == 1589) begin
            // if (hor_counter == 800) begin
                hor_counter <= 0;
                ver_counter <= ver_counter + 1;
                g <= 0;
 
                if (ver_counter <= 480) begin
                    enable <= 1;                end
 
            end
 
 
        // Horizontal counter
        if (ver_counter == 490) begin
            VSYNC <= 0;
        end if (ver_counter == 492) begin
            VSYNC <= 1;
        end
 
        if (ver_counter == 525) begin
            ver_counter <= 0;
        end
 
    end
 
endmodule

非常有趣的是,显示器并没有将其选为 640x480,而是 720x480。这也许可以解决为什么会有黑色边框,但user manual 表示支持 640x480。这不仅仅是这台显示器,我尝试了其他一些我手头的类似结果。也许我没有得到信号时序的某些东西?如果“图片”看起来像this post 一样被拉伸,我不会感到惊讶,但这看起来像一个正弦模式。

  • 如果你能得到 25.175MHz 的精确像素时钟会更好。如果您有备用 PLL,请使用它而不是将 50MHz 除以 2。另外,不太确定您的门廊宽度是否正确,请咨询tinyvga.com/vga-timing/640x480@60Hz

标签: verilog system-verilog fpga vga


【解决方案1】:

您的显示器显示了一个大的水平前廊。你的代码有一个很大的水平前廊。

尝试将 hsync 信号移近末端。

【讨论】:

    猜你喜欢
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多