User Tag List

Показано с 1 по 10 из 1910

Тема: ПЛИС и всё что с ними связано

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #34

    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    365
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zebest Посмотреть сообщение
    Ps? а зачем так сложно, ну и пусть и четный и нечетный будут одинаковы. Не?
    хотелось придерживаться стандарта )

    Цитата Сообщение от zebest Посмотреть сообщение
    Кидай проект, посмотрим...
    да пожалуйста ):
    Код:
    library IEEE;
    use IEEE.std_logic_1164.all;
    use IEEE.std_logic_unsigned.all;
    
    entity video1 is
    port(
    clock: in std_logic; -- 40 Mhz clock
    ram_data: inout std_logic_vector(7 downto 0) := "ZZZZZZZZ";
    ram_addr: out std_logic_vector(15 downto 0);
    ram_wr: out std_logic;
    cpu_data: in std_logic_vector(7 downto 0);
    cpu_addr: in std_logic_vector(15 downto 0);
    cpu_wr: in std_logic;
    cpu_mreq: in std_logic;
    clk_out: out std_logic;
    int: out std_logic;
    sync: out std_logic;
    video: out std_logic
    );
    end video1;
    
    architecture rtl of video1 is
    
    signal cnt: std_logic_vector(1 downto 0):="00";
    signal hcount: std_logic_vector(9 downto 0); 
    signal vcount: std_logic_vector(8 downto 0); 
    signal hsync: std_logic; 
    signal vsync: std_logic;
    signal hblanc: std_logic;  
    signal vblanc: std_logic;
    signal blanc: std_logic;
    signal vid: std_logic;
    signal wr_video_ram: std_logic;
    signal temp_data: std_logic_vector(7 downto 0); 
    signal temp_addr: std_logic_vector(13 downto 0); 
    signal temp_video: std_logic_vector(7 downto 0);
    signal vdiv: std_logic;
    
    begin
    ------------------------------------------------------------
    process(clock) --40 MHz
    begin
    	if rising_edge(clock) then 
    		if wr_video_ram = '0' then 
    			temp_data <= cpu_data;
    			temp_addr <= cpu_addr(13 downto 0);	
    		end if;
    		cnt <= cnt + 1;
    		if cnt(0) = '1' then
    			temp_video <= ram_data;
    		end if;			
    		if cnt = "00" then
    			if hcount = 640 then
    				hcount <= "0000000000";
    				if (vdiv='0' and vcount = 312) or vcount = 313 then
    					vcount <= "000000000";
    					vdiv <= not(vdiv);
    				else 
    					vcount <= vcount + 1;
    				end if;
    			else
    				hcount <= hcount + 1;
    				case hcount (2 downto 0) is
    					when "000" => vid <= temp_video(7);
    					when "001" => vid <= temp_video(6);
    					when "010" => vid <= temp_video(5);
    					when "011" => vid <= temp_video(4);				
    					when "100" => vid <= temp_video(3);
    					when "101" => vid <= temp_video(2);
    					when "110" => vid <= temp_video(1);
    					when "111" => vid <= temp_video(0);
    				end case;				
    			end if;
    		end if;		
    	end if;	
    end process;
    ------------------------------------------------------------
    hsync <= '0' when (hcount >= 532 and hcount < 572) else '1';
    vsync <= '0' when (vcount >= 276 and vcount < 284) else '1';
    hblanc <= '0' when hcount >= 512 else '1'; 
    vblanc <= '0' when vcount >= 256 else '1';
    blanc <= hblanc and vblanc;
    sync <= hsync and vsync;
    video <= vid and blanc;
    
    --wr_video_ram <= cpu_mreq or cpu_wr or (cpu_addr(15) nand cpu_addr(14));--video ram starts at 0xC000
    wr_video_ram <= cpu_mreq or cpu_wr or not(cpu_addr(14)) or cpu_addr(15);--video ram starts at 0x4000
    ram_wr <= cnt(0);
    ram_data <= temp_data when cnt(0) = '0' else "ZZZZZZZZ";
    ram_addr(7 downto 0) <= vcount(7 downto 0) when cnt(0) = '1' else temp_addr(7 downto 0);
    ram_addr(13 downto 8) <= hcount(8 downto 3) when cnt(0) = '1' else temp_addr(13 downto 8);
    ram_addr(15 downto 14) <= "00";
    
    int <= vsync;
    clk_out <= cnt(0);
    ------------------------------------------------------------
    end rtl;
    реализован режим 512 х 256 монохром, но код позволяет реализовать байт на точку - причём абсолютно прозрачно для проца (и любого устройства на шине)

    всё опробовано в железе и прекрасно работает )
    скрины:
    1. скриншот с тюнера.
    2. исходная картинка.

    P.S. критика и замечания всячески приветствуются )))
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	123.jpg 
Просмотров:	375 
Размер:	105.0 Кб 
ID:	41242   Нажмите на изображение для увеличения. 

Название:	321.jpg 
Просмотров:	367 
Размер:	95.1 Кб 
ID:	41243  

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 5 (пользователей: 0 , гостей: 5)

Похожие темы

  1. ДВК (и всё, что с ними связано)
    от Grand в разделе ДВК, УКНЦ
    Ответов: 4575
    Последнее: 17.11.2025, 11:38
  2. PAL/GAL и все что с ними связано.
    от Mick в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 489
    Последнее: 19.09.2025, 18:39
  3. SMUC на дискретах и ПЛИС
    от spensor в разделе Scorpion
    Ответов: 846
    Последнее: 02.05.2025, 08:36
  4. Ответов: 1215
    Последнее: 10.02.2025, 19:04
  5. Вопрос по ПЛИС
    от Zloy в разделе Несортированное железо
    Ответов: 23
    Последнее: 17.10.2015, 17:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •