aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/synth/issue1307/line_delay.vhd
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/synth/issue1307/line_delay.vhd')
-rw-r--r--testsuite/synth/issue1307/line_delay.vhd46
1 files changed, 46 insertions, 0 deletions
diff --git a/testsuite/synth/issue1307/line_delay.vhd b/testsuite/synth/issue1307/line_delay.vhd
new file mode 100644
index 000000000..cfbaca7cc
--- /dev/null
+++ b/testsuite/synth/issue1307/line_delay.vhd
@@ -0,0 +1,46 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.NUMERIC_STD.ALL;
+
+entity line_delay is
+ Port ( clk : in STD_LOGIC;
+ -------------------------------
+ -- VGA data recovered from HDMI
+ -------------------------------
+ in_blank : in std_logic;
+ in_hsync : in std_logic;
+ in_vsync : in std_logic;
+ in_red : in std_logic_vector(7 downto 0);
+ in_green : in std_logic_vector(7 downto 0);
+ in_blue : in std_logic_vector(7 downto 0);
+
+ -----------------------------------
+ -- VGA data to be converted to HDMI
+ -----------------------------------
+ out_blank : out std_logic;
+ out_hsync : out std_logic;
+ out_vsync : out std_logic;
+ out_red : out std_logic_vector(7 downto 0);
+ out_green : out std_logic_vector(7 downto 0);
+ out_blue : out std_logic_vector(7 downto 0));
+end line_delay;
+
+architecture Behavioral of line_delay is
+ type mem_block is array (0 to 511) of std_logic_vector(26 downto 0);
+ signal mem_4 : mem_block := (others => (others => '0'));
+ signal wr_addr : unsigned(8 downto 0) := (others =>'1');
+ signal mid_3 : std_logic_vector(26 downto 0) := (others =>'0');
+begin
+
+process(clk)
+ variable mem_4_out : std_logic_vector(26 downto 0);
+ begin
+ if rising_edge(clk) then
+ mem_4_out := mem_4(to_integer(wr_addr));
+ out_green <= mem_4_out(18 downto 11);
+ out_blue <= mem_4_out(10 downto 3);
+ mem_4(to_integer(wr_addr)) <= mid_3;
+ end if;
+ end process;
+
+end Behavioral;