User Tag List

Страница 104 из 191 ПерваяПервая ... 100101102103104105106107108 ... ПоследняяПоследняя
Показано с 1,031 по 1,040 из 1910

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

  1. #1031

    Регистрация
    08.05.2011
    Адрес
    г. Измаил, Украина
    Сообщений
    3,216
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    vlad, Поподробнее
    где посмотреть нужно?
    Радио-Губитель Канал на YouTube

  2. #1032

    Регистрация
    08.05.2011
    Адрес
    г. Измаил, Украина
    Сообщений
    3,216
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    vlad, цель - по изучать Плис,глянуть на языки программирования и поморгать светодиодами - всё как обычно.

    Нужно что то простое -если не попрёт то будет просто валяться и нет смысла брать от 100$ и выше.

    Вот думаю заказать платку у MICK http://zx.pk.ru/showthread.php?t=204...t=%CF%EB%E8%F1 но пугает CPLD - там идея жестко прошить 1 раз плис и баловаться с внешними картами на ZX-BUS.Зато Z80 есть и можно ножками подрыгать
    Радио-Губитель Канал на YouTube

  3. #1033

    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,436
    Спасибо Благодарностей отдано 
    163
    Спасибо Благодарностей получено 
    190
    Поблагодарили
    121 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vlad Посмотреть сообщение
    Если из самого простого, то можно попробовать это:
    Плата Марсоход
    µGalaksija
    Из ссылки первого сайта я повторил Улучшенный частотомер на EPM7128SLC84, из второго сайта - готовлю реплику Галаксии на u10.

  4. #1034

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

    Thumbs up

    Недавно только начал осваивать плисы и vhdl и как первый проект сделал видеоадаптер с выводом на телевизор.

    есть такой код:
    Код:
    				if vcount = 312 then
    					vcount <= "000000000";
    				else 
    					vcount <= vcount + 1;
    				end if;
    Возник такой вопрос - как на vhdl написать чтобы по чётным кадрам счётчик считал до 312, а по нечётным до 313.

    Думал сделать вот так:

    Код:
    				if vcount = 312 + vdiv then
    					vcount <= "000000000";
    					vdiv <= not(vdiv);
    				else 
    					vcount <= vcount + 1;
    				end if;
    выдает ошибку.
    Последний раз редактировалось shurik-ua; 28.04.2013 в 14:55.

  5. #1035

    Регистрация
    04.12.2008
    Адрес
    г. Черкассы, Украина
    Сообщений
    957
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    8 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    if (vdiv = '0' and vcount = 312) or
    (vdiv = '1' and vcount = 313) then
    ...

    PS. vdiv='1' можно опустить...

  6. #1036

    Регистрация
    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 
Просмотров:	374 
Размер:	105.0 Кб 
ID:	41242   Нажмите на изображение для увеличения. 

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

  7. #1036
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #1037

    Регистрация
    19.12.2008
    Адрес
    Черкассы
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    blanc <= hblanc and vblanc;
    Здесь, по моему or надо.
    Робик 1024(пентагоновские тайминги),+ 7Мц+, 2AY(TS),+ контроллер дисковода,+ 3.5,+ 5.25 флоп,+CMOS,+ mouse(caro),+ Flash.
    Pentagon 128(1991г.)+YМ
    программатор 2732-27512.


  9. #1038

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

    По умолчанию

    логически их действительно нужно объединить по OR, но так как используется отрицательная логика то OR превратился в AND. )

    приведённый код немного глючный - на скринах видно:


    Нашёл в чём было дело
    эту строку:
    Код:
    hblanc <= '0' when hcount >= 512 else '1';
    нужно заменить на:
    Код:
    hblanc <= '1' when (hcount >= 1 and hcount < 513) else '0';
    и всего делов, а то я с перепугу жменю статики перепроверил

    да и вот тут чуточку подправил:
    Код:
    hsync <= '0' when (hcount >= 533 and hcount < 573) else '1';
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	gluk.jpg 
Просмотров:	322 
Размер:	30.8 Кб 
ID:	41259   Нажмите на изображение для увеличения. 

Название:	512x256.jpg 
Просмотров:	320 
Размер:	17.5 Кб 
ID:	41260  
    Последний раз редактировалось shurik-ua; 29.04.2013 в 14:35.

  10. #1039

    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,436
    Спасибо Благодарностей отдано 
    163
    Спасибо Благодарностей получено 
    190
    Поблагодарили
    121 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Немного не в тему. Но может кто-нибудь сталкивался с кодером компонентного видео сигнала в VGA. Интересуюсь по поводу встраивания данного кодера в проект на ПЛИС ПК "Галаксия".

  11. #1040

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

    По умолчанию

    Цитата Сообщение от vlad Посмотреть сообщение
    shurik-ua, почему не сделать 512х384? Мне было легче переделать его на VGA 1024x768x8bpp@60Hz. Можно было-бы масштабировать х1 256х192, x2 512x384 x3 1024x768
    этот формат выбран из-за удобства программирования именно на 8-мибитных процессорах.

    все эти форматы с соотношением сторон 4:3 потихоньку устаревают, мониторы и телевизоры сейчас выпускаются в основном широкоформатные 16:9 или 16:10.

    на тюнере я выставил пропорции экрана 16:9 и картинка выглядит абсолютно симметричной - просто тюнер сохраняет только с такими пропорциями.

    кстати пока писал этот ответ придумал, что если тактировать схему 32 MHz кварцем и изменить несколько констант в коде то получим режим 384х256 - что можно использовать как компромисс для любителей "квадратных" пропорций. ))

    Да и вот ещё - в будущем планирую подключить Циклон какой нибудь и 3128 использовать как преобразователь уровней - в проекте Reverse есть что-то похожее, но исходников не нашёл. Так как я ещё начинающий - могу ошибиться , вот взгляните на код - покритикуйте:

    Код:
    library IEEE;
    use IEEE.std_logic_1164.all;
    use IEEE.std_logic_unsigned.all;
    
    entity extender is
    port (
    	dir: in std_logic;
    	cpu_adr: inout std_logic_vector(15 downto 0);
    	adr: inout std_logic_vector(15 downto 0);
    	cpu_data: inout std_logic_vector(7 downto 0);
    	data: inout std_logic_vector(7 downto 0);						
    	wr,rd,mreq,iorq,m1: inout std_logic;							
    	busrq,cpu_busak: in std_logic;								
    	int,nmi,clock,reset,wait0: in std_logic;						
    	cpu_int,cpu_nmi,cpu_clock: out std_logic;
    	cpu_busrq,busak: out std_logic;								
    	cpu_reset,cpu_wait0: out std_logic;
    	cpu_wr,cpu_rd,cpu_mreq,cpu_iorq,cpu_m1: inout std_logic);
    end extender;
    
    architecture ext of extender is
    
    begin
    	cpu_clock <= clock;
    	cpu_int <= int;
    	cpu_nmi <= nmi;
    	cpu_reset <= reset;
    	cpu_wait0 <= wait0;
    	
    	cpu_busrq <= busrq;
    	busak <= cpu_busak;
    	
    	mreq <= cpu_mreq when cpu_busak = '1' else 'Z';
    	cpu_mreq <= mreq when cpu_busak = '0' else 'Z';
    	iorq <= cpu_iorq when cpu_busak = '1' else 'Z';
    	cpu_iorq <= iorq when cpu_busak = '0' else 'Z';
    	wr <= cpu_wr when cpu_busak = '1' else 'Z';
    	cpu_wr <= wr when cpu_busak = '0' else 'Z';
    	rd <= cpu_rd when cpu_busak = '1' else 'Z';
    	cpu_rd <= rd when cpu_busak = '0' else 'Z';
    	m1 <= cpu_m1 when cpu_busak = '1' else 'Z';
    	cpu_m1 <= m1 when cpu_busak = '0' else 'Z';
    
    	data <= cpu_data when dir = '1' else "ZZZZZZZZ";
    	cpu_data <= data when dir = '0' else "ZZZZZZZZ";
    	adr <= cpu_adr when cpu_busak = '1' else "ZZZZZZZZZZZZZZZZ";
    	cpu_adr <= adr when cpu_busak = '0' else "ZZZZZZZZZZZZZZZZ";
    
    end ext;
    Последний раз редактировалось shurik-ua; 30.04.2013 в 10:04.

Страница 104 из 191 ПерваяПервая ... 100101102103104105106107108 ... ПоследняяПоследняя

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

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

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

Похожие темы

  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

Ваши права

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