почему на моей плате Zybo нет выхода HDMI? - PullRequest
0 голосов
/ 05 ноября 2019

Я пишу простую программу на Vivado для отображения чистого стабильного изображения на экране через порты HDMI на моей плате Zybo. Но как только я запрограммировал битовый файл, на экране появилось «нет входного сигнала».

Вот мой top.v

    `timescale 1ns / 1ps

module top(
input clk,
input rst,
output TMDS_Clk_p,
output TMDS_Clk_n,
output [2:0] TMDS_Data_p,
output [2:0] TMDS_Data_n
    );
wire clk_60m;
clk_wiz_0 clk_gen(.clk_64m(clk_60m), .clk_in1(clk));

reg [23:0] rgb_data = 24'hffffff;


wire vga_hsync;
wire vga_vsync;
wire vga_valid;
wire [11:0] vga_h_cnt;
wire [10:0] vga_v_cnt;
vga_0 vga2hdmi (
  .vga_pclk(clk_60m),    // input wire vga_pclk
  .vga_rst(rst),      // input wire vga_rst 0=valid
  .vga_hsync(vga_hsync),  // output wire vga_hsync
  .vga_vsync(vga_vsync),  // output wire vga_vsync
  .vga_valid(vga_valid),  // output wire vga_valid
  .vga_h_cnt(vga_h_cnt),  // output wire [11 : 0] vga_h_cnt
  .vga_v_cnt(vga_v_cnt)  // output wire [10 : 0] vga_v_cnt
);



/*always @(posedge clk_60m)
    begin 
        if(vga_valid)
            rgb_data <= rgb_data;
    end*/

rgb2dvi_0 hdmi(
.TMDS_Clk_p(TMDS_Clk_p),    // output wire TMDS_Clk_p
  .TMDS_Clk_n(TMDS_Clk_n),    // output wire TMDS_Clk_n
  .TMDS_Data_p(TMDS_Data_p),  // output wire [2 : 0] TMDS_Data_p
  .TMDS_Data_n(TMDS_Data_n),  // output wire [2 : 0] TMDS_Data_n
  .aRst(rst),                // input wire aRst 0=valid
  .vid_pData(rgb_data),      // input wire [23 : 0] vid_pData
  .vid_pVDE(vga_valid),        // input wire vid_pVDE
  .vid_pHSync(vga_hsync),    // input wire vid_pHSync
  .vid_pVSync(vga_vsync),    // input wire vid_pVSync
  .PixelClk(clk_60m)        // input wire PixelClk
);


endmodule

Модуль vga_0 - это IP, который генерирует вертикальный иисторический сигнал и VDE, которые подключены к входу модуля rgb2dvi_o. IP-адрес rgb2dvi можно найти на https://github.com/Digilent/vivado-library/tree/master/ip/rgb2dvi

Вот мое ограничение

set_property -dict { PACKAGE_PIN K17   IOSTANDARD LVCMOS33 } [get_ports { clk }]; #IO_L12P_T1_MRCC_35 Sch=sysclk
#create_clock -add -name clk_phs -period 5.0 -waveform {1.25 3.75} [get_ports { clk_phs }];
set_property -dict { PACKAGE_PIN E17   IOSTANDARD LVCMOS33 } [get_ports { rst }]; #IO_L3P_T0_DQS_AD1P_35 Sch=eth_rst_b

set_property -dict { PACKAGE_PIN H17   IOSTANDARD TMDS_33     } [get_ports { TMDS_Clk_n }]; #IO_L13N_T2_MRCC_35 Sch=hdmi_tx_clk_n
set_property -dict { PACKAGE_PIN H16   IOSTANDARD TMDS_33     } [get_ports { TMDS_Clk_p }]; #IO_L13P_T2_MRCC_35 Sch=hdmi_tx_clk_p
set_property -dict { PACKAGE_PIN D20   IOSTANDARD TMDS_33     } [get_ports { TMDS_Data_n[0] }]; #IO_L4N_T0_35 Sch=hdmi_tx_n[0]
set_property -dict { PACKAGE_PIN D19   IOSTANDARD TMDS_33     } [get_ports { TMDS_Data_p[0] }]; #IO_L4P_T0_35 Sch=hdmi_tx_p[0]
set_property -dict { PACKAGE_PIN B20   IOSTANDARD TMDS_33     } [get_ports { TMDS_Data_n[1] }]; #IO_L1N_T0_AD0N_35 Sch=hdmi_tx_n[1]
set_property -dict { PACKAGE_PIN C20   IOSTANDARD TMDS_33     } [get_ports { TMDS_Data_p[1] }]; #IO_L1P_T0_AD0P_35 Sch=hdmi_tx_p[1]
set_property -dict { PACKAGE_PIN A20   IOSTANDARD TMDS_33     } [get_ports { TMDS_Data_n[2] }]; #IO_L2N_T0_AD8N_35 Sch=hdmi_tx_n[2]
set_property -dict { PACKAGE_PIN B19   IOSTANDARD TMDS_33     } [get_ports { TMDS_Data_p[2] }]; #IO_L2P_T0_AD8P_35 Sch=hdmi_tx_p[2]

Вот результат моделирования

...