Skip to content

Instantly share code, notes, and snippets.

@goran-mahovlic
Created May 31, 2020 14:34
Show Gist options
  • Save goran-mahovlic/a1605b5f8c047fb7d30259fda5c53c71 to your computer and use it in GitHub Desktop.
Save goran-mahovlic/a1605b5f8c047fb7d30259fda5c53c71 to your computer and use it in GitHub Desktop.
module top_vgatest_640x480
(
input clk_25mhz,
input [6:0] btn,
output [7:0] led,
output [3:0] gpdi_dp,
input [12:9] gp_i,
output wifi_gpio0
);
// wifi_gpio0=1 keeps board from rebooting
// hold btn0 to let ESP32 take control over the board
assign wifi_gpio0 = btn[0];
// clock generator
wire clk_locked;
wire [3:0] clocks;
wire clk_pixel = clocks[1];
wire clk_shift = clocks[2];
wire clk_shift2 = clocks[0];
wire clk = clocks[0];
ecp5pll
#(
.in_hz(25*1000000),
.out0_hz(250*1000000),
.out1_hz(25*1000000),
.out2_hz(175*1000000),
.out2_deg(90)
)
ecp5pll_inst
(
.clk_i(gp_i[12]),
.clk_o(clocks),
.phasedir(btn[1]),
.phasestep(btn[3]),
.phaseloadreg(1'b0),
.locked(clk_locked)
);
// LED blinky
localparam counter_width = 28;
wire [7:0] countblink;
blink
#(
.bits(counter_width)
)
blink_instance
(
.clk(clk_pixel),
.led(countblink)
);
assign led[6] = countblink[6];
assign led[7] = clk_locked;
// VGA signal generator
wire [7:0] vga_r, vga_g, vga_b;
wire vga_hsync, vga_vsync, vga_blank, vga_de;
vga
vga_instance
(
.clk_pixel(clk_pixel),
.clk_pixel_ena(1'b1),
.test_picture(1'b1), // enable test picture generation
.vga_r(vga_r),
// .vga_g(vga_g),
// .vga_b(vga_b),
.vga_hsync(vga_hsync),
// .vga_vsync(vga_vsync),
.vga_blank(vga_blank)
);
lvds2vga
lvds2vga_instance
(
.clk_pixel(clk_pixel),
.clk_shift(clk_shift),
.lvds_i(gp_i[12:9]), // enable test picture generation
// .r_o(vga_r[7:2]),
.g_o(vga_g),
.b_o(vga_b),
// .hsync_o(vga_hsync),
.vsync_o(vga_vsync),
// .de_o(vga_de)
);
// VGA to digital video converter
wire [1:0] tmds[3:0];
vga2dvid
#(
.C_ddr(1'b0),
.C_shift_clock_synchronizer(1'b1)
)
vga2dvid_instance
(
.clk_pixel(clk_pixel),
.clk_shift(clk_shift2),
.in_red(vga_r),
.in_green(vga_g),
.in_blue(vga_b),
.in_hsync(vga_hsync),
.in_vsync(vga_vsync),
.in_blank(vga_blank),
.out_clock(gpdi_dp[3]),
.out_red(gpdi_dp[2]),
.out_green(gpdi_dp[1]),
.out_blue(gpdi_dp[0])
);
endmodule
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment