Перейти к содержанию
    

Вывод изображений на монитор на плате ML403

Не подскажете, как реализовать вывод изображений на монитор посредством 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;

Изменено пользователем CaHbl4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, это почти то, что нужно! Жаль, что на верилоге.. Но для понимания сути - самое оно!

Завтра днем более детально посмотрю, когда будет доступна плата! И попробую переписать все под себя!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...