terminal/main.vhd

103 lines
2.4 KiB
VHDL
Raw Normal View History

library ieee;
library unisim;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_std.all;
2017-11-23 04:32:27 +01:00
-- Xilinx primitives (obufds)
use unisim.VComponents.all;
entity main is
port (
clk: in std_logic;
dvi_d: out std_logic_vector(11 downto 0);
dvi_clk_p: out std_logic;
dvi_clk_n: out std_logic;
dvi_hsync: out std_logic;
dvi_vsync: out std_logic;
dvi_de: out std_logic;
dvi_reset: out std_logic;
i2c_scl: inout std_logic;
i2c_sda: inout std_logic;
switch_center: in std_logic;
2017-11-23 04:32:27 +01:00
rotary_up: in std_logic;
rotary_down: in std_logic;
rotary_push: in std_logic;
led0: out std_logic;
led1: out std_logic;
led2: out std_logic;
led4: out std_logic
);
end main;
architecture Behavioral of main is
signal clk_vga: std_logic;
2017-11-23 04:32:27 +01:00
signal image_x: std_logic_vector(9 downto 0);
signal image_y: std_logic_vector(9 downto 0);
signal pixel_rgb: std_logic_vector(23 downto 0);
signal dvi_clk: std_logic; -- connect vga_sync to dvi_clk_ds
-- tmp
signal hsync: std_logic;
signal vsync: std_logic;
signal de: std_logic;
begin
-- convert the 100MHz to a 48MHz pixel clock
clock_source: entity work.clock_source port map (
CLKIN_IN => clk,
CLKFX_OUT => clk_vga
);
2017-11-23 04:32:27 +01:00
dvi_clk_ds: obufds port map (
O => dvi_clk_p,
OB => dvi_clk_n,
I => clk_vga
);
ch7301c: entity work.init_ch7301c generic map (
input_clk => 48_000_000
) port map (
clk => clk_vga,
reset => switch_center,
finished => open,
error => open,
i2c_scl => i2c_scl,
i2c_sda => i2c_sda,
dvi_reset => dvi_reset
);
vga_sync: entity work.vga port map (
clk => clk_vga,
2017-11-23 04:32:27 +01:00
x => image_x,
y => image_y,
pixel_rgb => pixel_rgb,
dvi_d => dvi_d,
dvi_clk => dvi_clk,
dvi_hsync => hsync,
dvi_vsync => vsync,
dvi_de => de
);
2017-11-23 04:32:27 +01:00
image_generator_i: entity work.image_generator generic map (
input_clk => 48_000_000
) port map (
clk => clk_vga,
x => image_x,
y => image_y,
ctrl_up => rotary_up,
ctrl_down => rotary_down,
rgb => pixel_rgb
);
dvi_hsync <= hsync;
dvi_vsync <= vsync;
dvi_de <= de;
led0 <= switch_center;
led1 <= dvi_clk;
led2 <= hsync;
led4 <= vsync;
end Behavioral;