CaHbl4 0 3 мая, 2012 Опубликовано 3 мая, 2012 (изменено) · Жалоба Не подскажете, как реализовать вывод изображений на монитор посредством VGA разъема на плате ML403? Буду очень признателен за ссылку на программу, или за хоть какой-нибудь кусочек работающего кода! Пытался написать сам, учитывая все спецификации стандарта VGA, получилось следующее, но почему-то не работает.. Хотел для начала хотя бы просто монотонно-красным дисплей зажечь, но даже такого не удалось( Использовал разрешение экрана 800х600. Спецификация стандарта есть вот на этом сайте Заранее спасибо за ответ, с уважением, Сергей. library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_ARITH.all; use IEEE.STD_LOGIC_UNSIGNED.all; entity VGA is Port ( clk : in STD_LOGIC; h_sync : out STD_LOGIC; v_sync : out STD_LOGIC; o_r : out STD_LOGIC_VECTOR (0 to 4); o_g : out STD_LOGIC_VECTOR (0 to 4); o_b : out STD_LOGIC_VECTOR (0 to 4)); end VGA; architecture Behavioral of VGA is signal hcnt: std_logic_vector(11 downto 0) := "000000000000"; signal vcnt: std_logic_vector(9 downto 0) := "0000000000"; signal o_r_tmp : STD_LOGIC_VECTOR (0 to 4):= "00000"; signal o_g_tmp : STD_LOGIC_VECTOR (0 to 4):= "00000"; signal o_b_tmp : STD_LOGIC_VECTOR (0 to 4):= "00000"; signal h_sync_tmp : STD_LOGIC:= '0'; signal v_sync_tmp : STD_LOGIC:= '0'; begin o_r <= o_r_tmp; o_g <= o_g_tmp; o_b <= o_b_tmp; h_sync <= h_sync_tmp; v_sync <= v_sync_tmp; process (clk) begin if rising_edge(clk) then hcnt <= hcnt+1; end if; if hcnt<320 and vcnt>=27 and vcnt<627 then h_sync_tmp <= '1'; o_r_tmp <= "00000"; o_g_tmp <= "00000"; o_b_tmp <= "00000"; end if; if hcnt>=320 and hcnt<540 then h_sync_tmp<='0'; end if; if hcnt>=540 and hcnt<2540 and vcnt>=27 and vcnt<627 then h_sync_tmp<='0'; o_r_tmp <= "11111"; o_g_tmp <= "00000"; o_b_tmp <= "00000"; end if; if hcnt>=2540 and hcnt<2640 then h_sync_tmp<='0'; o_r_tmp <= "00000"; o_g_tmp <= "00000"; o_b_tmp <= "00000"; end if; if hcnt=2640 then hcnt<="000000000000"; vcnt <= vcnt+1; end if; if vcnt<4 then v_sync_tmp<='1'; end if; if vcnt>=4 and vcnt<628 then v_sync_tmp<='0'; end if; if vcnt>=628 then vcnt<="0000000000"; end if; end process; end Behavioral; Изменено 3 мая, 2012 пользователем CaHbl4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimir_f 0 10 мая, 2012 Опубликовано 10 мая, 2012 · Жалоба Здесь все доступным языком Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaHbl4 0 10 мая, 2012 Опубликовано 10 мая, 2012 · Жалоба Спасибо, это почти то, что нужно! Жаль, что на верилоге.. Но для понимания сути - самое оно! Завтра днем более детально посмотрю, когда будет доступна плата! И попробую переписать все под себя! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться