Totem, сорри за косяк с индексом (
Totem, сорри за косяк с индексом (
Требую продолжения банкета! (с)
Scorpion 256 TurboPlus GMX2048 edition (с новой ревизией спец-чипов - Турбина и ПрофПЗУ на GAL22v10D, ФАПЧ дисковода - GAL16v8D ),CARO ZX_MC/SMUC1.3/GeneralSound 512 Kb/FDD3.5+5.25... Pentagon1024Sl v2/Z-controller+SD 2Gb/GS-512/TurboSound/FDD3.5+5.25...Speccy2007 48 +SD 2Gb ( 128+Ay в процессе ) ... Все через PAL-Coder
Вот довезет дед Мороз подарки - будет и продолжение
Amiga 1200+Blizzard 1260 72 Mb+Mtek 68030,Compozit 128, Leningrad 2,
Atari STE 1040,ZX Spectrum +2,Pentagon 48, Speccy2007 - 2 , ATAS 256k.
ZX Evo 4Mb- в строю.
Speccy2010 v1
Специалист (пока готовлюсь к восстановлению).
Это все мое!
Родное!
Все люблю на свете я! Это родина моя!
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Всем привет.
Подключусь к вашей беседе, т.к. тоже интересно.
Заодно приведу свой пример ШИМ
Пример ШИМ
Код:library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity PWM is port ( clk: in std_logic; q: out std_logic ); end PWM; architecture MAIN of PWM is signal cnt: integer range 0 to 255:=0; begin process(clk) begin if (clk'event and clk='1') then if (cnt >= 0 and cnt < 64) then q <= '1'; else q <= '0'; end if; if (cnt < 255) then cnt <= cnt + 1; else cnt <= 0; end if; end if; end process; end MAIN;[свернуть]
Теперь хочу спросить, как правильно считать строчные и кадровые импульсы. Ткните в мануал плз.
Из того, что нашел для разрешения 1920х1080:
* Pixel clock: 148.5 MHz
* Количество пикселей в строке - 2200. (1920 - информационных, остальное - blank)
* Количество строк - 1125 (1080 - информационных, остальное - blank)
Хотел бы узнать, как рассчитать время начала импульсов и длительности импульсов для h_sync и v_sync.
Пример генератора строчных и кадровых импульсов.
Код:library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use work.my.all; entity sync is port( clk: in std_logic; hsync,vsync: out std_logic; r,g,b : out std_logic_vector(3 downto 0); ); end sync; architecture main of sync is signal hpos: integer range 0 to 2200:=0; signal vpos: integer range 0 to 1125:=0; begin process(clk) begin if(clk'event and clk='1')then if(hpos<2200)then hpos<=hpos+1; else hpos<=0; if(vpos<1125)then vpos<=vpos+1; else vpos<=0; end if; end if; if(hpos>48 and hpos<140)then -- h_sync interval hsync<='0'; else hsync<='1'; end if; if(vpos>0 and vpos<4)then -- v_sync interval vsync<='0'; else vsync<='1'; end if; if((hpos>0 and hpos<280) or (vpos>0 and vpos<45))then -- 280 is blank for h_sync and 45 is blank for h_sync r<=(others=>'0'); g<=(others=>'0'); b<=(others=>'0'); end if; end if; end process; end main;[свернуть]
Оба куска кода нуждаются в оптимизации. По этому хотел бы спросить, на что следует обратить внимание?
---------- Post added at 00:36 ---------- Previous post was at 00:33 ----------
Да, забыл добавить, моник нормально отображает картинку, сгенериенную данным генератором. Разрешение 1920х1080х60.
---------- Post added at 00:40 ---------- Previous post was at 00:36 ----------
Еще мне кажется, нужно строчный импульс посылать не в начале строки а в конце. То же самое можно сказать и о кадровом импульсе.
Константы строчного и кадрового импульса подбирал методом тыка, чтобы не соравло синхру и моник все отобразил без проблем.
---------- Post added at 00:42 ---------- Previous post was at 00:40 ----------
Ну и последнее, забыл добавить - плата Altera DE1.
Последний раз редактировалось avk.ghost; 27.10.2014 в 23:43. Причина: Изменения в коде
Привет!
По-моему, вот это - избыточно:
if (cnt >= 0 and cnt < 64) then
достаточно проверки "меньше 64".
Вероятно, есть готовые таблицы времянок, у меня есть только для 640*480*60, я так предполагаю, что ее можно применить ко всем режимам масштабированием.
Самы й главный косяк - старайся все синхроимпульсы. гашение и прочие бланки оставлять на конец счетчиков, а не в начало. Счетчики нужны также для адресации видеопамяти, поэтому "левый край" должен начинаться с нуля, спокойно тикать до конца видимой области, а уж потом запускать синхроимпульсы.
Посмотри мои примеры видеогенератора в этой теме.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Некоторые моменты для VGA брал отсюда.
http://javiervalcarce.eu/wiki/VGA_Vi...Specifications
---------- Post added at 01:43 ---------- Previous post was at 00:56 ----------
Посмотрел пост #115
Все ок. Посмотрел. Спасибо.
Попробую на основании диаграмм помасштабировать. Наберу базу данных для видео режимов.
Еще один видеорежим, который делал: 1280х1024х60 Завелось при следующих данных:
* Pixel clock: 108 MHz
* Количество пикселей в строке - 1688. (1280 - информационных, остальное - blank: 408)
* Количество строк - 1125 (1080 - информационных, остальное - blank: 42)
Если брать и масштабировать, то немного не бьют цифры с данными, получеенми в результате моделирования.
1920x1080x60 (2200x1125x60)
1 пиксел: 9,25e-9 секунд.
Вся строка: 1.48e-5 секунд.
Весь кадр: 0,16(6)
Строчный импульс - 6,1916e-7 сек.
Кадровый импульс - 5,92e-5 сек
1280x1024x60 (1688x1024x60)
Вся строка: 1,56e-5 секунд.
Весь кадр: 0,16(116)
Строчный импульс - 1,036e-6 сек.
Кадровый импульс - 9,36e-5 сек.
На сколько я понимаю - эта разбежка не существена. Так?
---------- Post added at 01:45 ---------- Previous post was at 01:43 ----------
Возможно, я подобрал данные, на которых оно рабтает стабильно, но не факт, что это нормальные данные.
---------- Post added at 01:53 ---------- Previous post was at 01:45 ----------
Вот еще наткнулся на VGA симулятор.
Попробую на нем помоделировать, посмотреть результаты
Последний раз редактировалось avk.ghost; 27.10.2014 в 23:56. Причина: Изменение данных
Первую ссылку не видел. Вторую на шел в процессе написания поста. Также нашел довольно много готовых таблиц.
По поводу данного разрешения - такое получилось сделать когда я подобрал параметры для 1920х1080 но, в качестве забыл перевесить вход PLL c 24 МГц на 27 МГц.
Еще вчера нащел калькулятор в excel. Если надо - могу выложить, но из дома. На работе нет. FPGA - хобби.
Ок. Не будем флудить. Вышеописанное относится к обоим производителям ПЛИС. Думаю это пригодится и топикстартеру. Да и там дана общая теория построения, VGA контроллера.
Судя по посту #143 топикстартер приобрел себе EP1C3T100C8N. Думаю, это уже может относиться к обучению ПЛИС Altera.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)