Created
May 31, 2020 14:34
-
-
Save goran-mahovlic/a1605b5f8c047fb7d30259fda5c53c71 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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