это если исходники изначально в одной палитре, а если палитра на ходу подбирается, то возникают искажения средней палитры, или дизеринг, патерны или еще какой то метод что бы в цвет примерно попасть, тоже подвиды клешига
Вид для печати
s_kosorev, клэшингу нас тут атрибутный, а не цветовой и связан с тем, что мы не можем в 128м экране рисовать в цвете с точностью до точки, только до знакоместа. а дизеринг или иной способ эмуляции большего числа цветов, это слегка другое.
---------- Post added at 23:34 ---------- Previous post was at 23:26 ----------
Т.е. мы можем сразу оперировать спрайтами и картинками не 8 бит, а сразу 15 (16) бит?! интересно конечно, но тогда памяти для буферов в 4метра будет маловато. мне на спринтере памяти для 8ми битных не хватает, а ты для 16битных хочешь. 16 метров резервируй, не меньше.Цитата:
Конечно, если все уже 15-битное - ничего преобразовывать не надо.
---------- Post added at 23:46 ---------- Previous post was at 23:34 ----------
и ещё один не понятный момент - если карта умеет работать с данными 15бит, тогда для чего нужно делать гору палитр для горы спрайтов? мы и так можем грузить 15бит спрайты без извратов. В том и прикол, что 8бит спрайты, это набор индексов в палитре, а 15юит и выше спрайты, это и есть сама палитра. вместо индекса от 0 до 255 мы указываем данные rgb в формате (1:)5:5:5.
Надо выбрать режим работы SDRAM. Как известно, SDRAM работает так:
Вся область памяти внутри этого устройства делится на блоки (ROW) по 256 ячеек. Чтобы прочитать или записать данные из ячейки нужно сначала включить (ACTIVE) нужный блок. Потом подать команду чтения (READ) или записи (WRITE), указав одновременно номер ячейки (COL) в блоке. Если надо затем обратиться к ячейке в другом блоке этот блок надо выключить (PRECHARGE), а новый включить (ACTIVE) и т.д.
Команды и данные подаются синхронно тактовой частоте CK. После команды включения блока или чтения нужно подождать 1 или 2 такта (подавать 1 или 2 команды NOP ). Число зависит от частоты тактов и быстродействия памяти. Раньше на древних компьютерах (в BIOS) выбирали частоту тактов на память (например, 100 или 133 MHz) и режим работы (2-2-2, 3-3-3). Но раньше мы не знали, что это за числа. Так вот сейчас мы это посчитаем и выберем нужный режим.
Частота смены точек на экране TV 7 MHz, на экране VGA 14 MHz. Тактовую для ПЛИС и SDRAM выберем 14*6=84 MHz. tCK=1/84 MHz = 12 nS. Время между включением блока и подачей команды чтения или записи tRCD должно быть не менее 20 nS. При CL=2 tRCD будет равно 24 nS, что соответствует требованиям. То есть выберем режим работы SDRAM 2-2-2. Это значит, что после команды включения блока мы можем пропустить только один такт (подавать команду NOP). После этого получаем данные из памяти. Как видим, SDRAM очень медленно и неудобно работает, но в ней большой объем памяти, который нам нужен для видеокарты. Что же делать? Как ускорить работу ?
SDRAM позволяет читать и писать данные пакетами (BURST). Для нашей видеокарты подходит пакет длиной 8. Причем выберем режим чтения с автоотключением (AUTO PRECHARGE) блока после чтения 8 точек. Т.е. чтобы прочитать 8 точек из буфера спрайтов нужно будет подать следующие команды:
1 такт - ACTIVE (включение нужного блока памяти)
2 такт - NOP (ожидание включения блока)
3 такт - READ с A10=1 (чтение пакета длиной 8 с автоотключением блока)
4 такт - NOP (ожидание из буфера спрайтов первой точки спрайта)
5 - 12 такты - NOP (данные из памяти - последовательно 8 точек спрайта)
Чтение пакетами по 8 точек и организация памяти блоками по 256 ячеек накладывает ограничение на структору видеокарты - размеры спрайтов должны быть кратны 8, иначе может возникнуть ситуация перехода спрайта в другой блок. А SDRAM не может читать последовательно данные из разных блоков.
Не обязательно NOP, можно другому банку подавать команду, сигналы BAxx выбирают номер банка которому команду отдают
---------- Post added at 21:43 ---------- Previous post was at 21:40 ----------
плохой режим, надо будет после каждого цикла, ждать отключение строки, регенерацию эффективней делать к примеру во время строчного гашения
Видеокарта будет работать так - чтение 8 точек из буфера спрайтов в ПЛИС, запись 8 точек из ПЛИС (с учетом прозрачного цвета) в буфер экрана и т.д. Иногда надо будет прочитать 8 точек из буфера экрана в ПЛИС для отображения на TV или VGA. И все эти данные лежат в разных блоках памяти SDRAM. Выключать и включать блоки (STRINGS) все равно придется после чтения или записи 8 точек.
Ну так положить в разные банки, буфер кадров, данные графики спрайтов, а что бы меньше переключать строки, распологать спрайт в памяти последовательно, тогда к примеру при чтении спрайта, нужно будет ACTIVE выдавать только при смене строки. Опять же, чтение видео данных можно сделать к примеру по 4-8 BURST циклов, вообще с SDRAM по максимуму надо оптимизировать последовательные чтения, при произвольном доступе SDRAM не намного быстрее обычной DRAM
SDRAM имеет аж 4 конвеера, к тому же пока выдает 8 циклов данных, можно опять же подавать команды
---------- Post added at 22:09 ---------- Previous post was at 22:01 ----------
Отключение строки можно всегда послать в командах чтения записи, а вот если включен Auto Precharge - уже не отменить отключение, даже если чтение идет следующих байт в той же строке
Если бы спрайт был размером 16х16 точек, то он занял бы весь блок 256 ячеек. Тогда теоретически можно было бы за один пакет прочитать в ПЛИС весь спрайт. Это было бы максимально быстрое чтение.
Можно было бы и стоку из буфера экрана для вывода на TV или VGA (256 точек) читать одним пакетом. Тем более на VGA строку надо показывать дважды. Для таких чтений нужно статическую память и ПЛИС или внутреннюю память FPGA.
Кто за то, чтобы для ускорения работы до приемлемой скорости размеры спрайтов внутри видеокарты были размером 16х16 точек ?
Записывать в буфер экрана можно было бы пакетами по 16 точек.
Короче не исключаем вариант отката к статике.
---------- Post added at 22:43 ---------- Previous post was at 22:28 ----------
Т.е. все спрайты, из кусочков 16x16 ?
Хотим обойти одно ограничения и вводим другое.
Больше работы для z80.
Так взял и напечатал большей спрайт и всё,
а тут разбей его на маленькие, координаты посчитай, зашли это в карту.
Может две микросхемы памяти поставить? Для буфера экрана - статику, для буфера спрайтов - SDRAM.
Может видеокарта сама сможет собирать большие спрайты из кусочков по 256 точек. При таком размере пакета чтение из SDRAM максимально быстрое, почти как из статики.Цитата:
Т.е. все спрайты, из кусочков 16x16 ?
Хотим обойти одно ограничения и вводим другое.
Больше работы для z80.
Так взял и напечатал большей спрайт и всё,
а тут разбей его на маленькие, координаты посчитай, зашли это в карту.
Еще про SDRAM. Можно взять за основу время отображения 8 точек на экране монитора (8/14 MHz = 571 nS). Это составит 8*6=48 тактов частоты 84 MHz:
12 тактов - чтение 8 точек из буфера экрана для отображения на VGA.
12 тактов - чтение 8 точек из буфера спрайтов в ПЛИС.
13 тактов - запись 8 точек из ПЛИС в буфер экрана.
11 тактов - обмен Z80 с видеокартой.
Во время бордера вместо чтения для отображения на VGA выполнять циклы регенерации SDRAM.
Таким образом за время отображения 8 точек VGA у нас копируется 8 точек спрайта. Среднее время копирования одной точки 1/14 MHz.
Время копирования всего экрана 320*240/14 MHz = 5486 uS. Это около 86 строк TV. Всего в кадре TV 312 строк.
Я тоже к этому пришел !
Вот так:
Ставим 1 метр статики и вся наша предыдущая схема так и работает, как придумали.
Но ещё дополнительно ставим SDRAM.
Из сдрам можно будет делать блиттинг в статическую память (в буф экрана).
При этом, при блиттинге из сдрам в статику, сдрам будет читаться ПОСЛЕДОВАТЕЛЬНО !
Будет два типа печати спрайтов, разных по скорости, "быстрый" (из статики) и "средний" (из сдрам) .
Т.е. перед игрой, грузим в статику спрайты и в сдрам спрайты.
В сдрам, к примеру, в основном анимация лежит.
В игре применяем печать спрайтов из статики и печать из сдрам.
Если проще говорить, то спрайты в статике - это типа как-бы очень "быстрый кэш" спрайтов и какие именно спрайты туда положить, это забота программера.
---
К примеру, как-то так:
У меня спрайт главного героя очень хорошо анимированный. Т.к. главный герой печатается на каждом кадре, засылаем его спрайты в быструю статику. А спрайты врагов, можно печатать из сдрам.
А как будет делаться скроллинг фоновой картинки? А если фон будет состоять из нескольких слоёв скроллирующихся с разной скоростью для придания псевдообъёма?
Видеокарта это очень хорошо. Но кто будет писать под неё игры? Не так много людей способных на это. Однако именно с ними и нужно обсуждать все тонкости и премудрости, ведь писать то им, значит им и решать, что лучше и как удобней.
DenisGrachev, SaNchez, drbars, Oleg Origin - вот с ними бы неплохо посоветоваться ) Да и с Медноноговым можно было бы, он вроде вконтакте есть, и даже, говорят, вполне общительный.
Парни, не переизобретайте велосипед, он нафиг такой сейчас никому не нужен. Взять к примеру тот-же FT8xx:
http://www.youtube.com
Ну разве что ещё одна железка на полку :) Делать никто и ничего не будет, кроме автора, это факт. Интерес? Да пофиг, разве что на пати показать да и закинуть в барахолку, и начать делать новую плату исправляя косяки предыдущей. Вот и весь интерес.
Разработчиков железа и программистов, что ещё остались собирать нужно в новую группу, пока не разбежались и совместно решать что делать.
Спланировать, что нужно изобразить на переднем, среднем и заднем плане. Преобразовать это в последоветельность спрайтов. Каждый кадр вычислять, с какого места изображать каждый план. Сначала напечатать задний план, потом средний, потом передний. Для каждого плана указать координату вывода левого спрайта и номера спрайтов слева-направо. Наверно надо предусмотреть нулевой спрайт, который не печатается, а просто пропускает в буфере экрана место размером со спрайт. Например, в плане могут быть редкие одиночные деревья.
---------- Post added at 18:40 ---------- Previous post was at 18:38 ----------
Что бурчишь ? Присоединяйся к нам. Вместе разработаем новый режим. У тебя есть опыт работы с FPGA и SDRAM. У нас - идеи и желание разрабатывать железки и игры.
Поскольку уж меня упомянули, вкратце: я - пас.
Скрытый текст
Мне интересно писать игры для ZX Spectrum. Интересно писать игры для современных PC под D3D. Для меня это совершенно различные увлечения, никак между собой не связанные. Вряд ли кто-то убедит меня, что мне зачем-либо нужен Spectrum, похожий на PC. Есть множество людей другого мнения, разумеется. Просто обозначил свою позицию. Я из тех, для кого Spectrum - это Sinclair / Amstrad, и даже TR-DOS уже только как исключение.
[свернуть]
Oleg Origin,Скрытый текст
Я тебя понимаю. Меня тоже немного смущает идея сделать из спектрума PC. А вот идея ZX-Poly мне очень нравится. Спектрум там не превращается в PC, а просто становится 4-ёх ядерным )) Но дух спектрума сохраняется полностью. А 4 ядра только для устранения клэшинга, и игры переделываются относительно легко, т.е. не переписываются с нуля.[свернуть]
есть много спектрумов с разными видеорежимами, которые есть у людей на руках, что то не нашел что бы кто то игры переделывал под них. Так что это все отмазки, к тому же есть эмулятор ZX-Poly, тоже не нашел ничего кроме нескольких демок от автора. Более того, на других платформах тоже самое
много? это какие? атм/пентева чтоли? Дык она одна. Игры под неё не переделывают, ибо слишком муторно. ZX-Poly подразумевает, что игру под него во много раз проще переделать чем под атм/пентеву. Ибо там по сути нет видеорежима отличного от стандартного, там стандартный режим, просто выполняется 4-мя процами 4 одинаковых игры, только цвета разные в этих 4 играх. = нет клэшинга
Ну так стань первым, переведи десяток игр на ZX-Poly
видекарта все равно не сделает из компьютера 4х ядерный, так что тут не место восторжениям ZX-Poly
---------- Post added at 23:01 ---------- Previous post was at 22:59 ----------
вот есть топик про реализацию http://zx-pk.ru/showthread.php?p=794925
поддержи автора, тут про видекарту, а не про компьютер целиком
Все железки нужны для паяльщиков и кодеров(разработчикам скилл),первые паяют для пользования труда вторых,а вторые пишут для первых,а так движение больше наверное в сторону демо ,игры наверно для далеких от спеки будут не интересны(хоть 8800 прикрути),а старые спектрумисты больше старые игры любят-на тех железках ,что были когда-то.
В любом случае,нет железки нет желающих писать под нее,а там дело за малым.
Надо пробовать сделать что то новое,я за идею.
Хорошо бы предусмотреть возможность загрузки спрайтов или целой игры с PC. Для отладки.
Вот как сделано на сайте марсоход.
Сигналы, которые идут на HDMI, SD-CARD и другие свободные я бы вынес на разъем. А там свобода выбора будет, что к ним подключать.
MVV, предлагаю параллельно со схемой видеокарты начать совместно разработку режима "METEOR" для ReVeRse.
Как ты писал, будет повод научиться чему-то новому. Предлагаю использовать VERILOG и схемный ввод как на сайте MARSOHOD.
---------- Post added at 08:12 ---------- Previous post was at 06:17 ----------
Да, он передает данные от Z80 на FPGA в командах записи и отключается, когда записи нет. Желательно резисторы подтяжки к 3.3V добавить.
От SCART, на мой взгляд рано отказываться. Много старой техники. И режим 50 Гц не все мониторы показывают. 15 бит также позволяет сделать копирование в два раза быстрее, чем 24 бита при достаточно хорошем качестве изображения.Цитата:
Эти магические названия... Может в этом что-то и есть. Я бы проиграл в цвете, звуке, габаритах и новизне... VGA это еще плюс 7 хз откуда выводов, около 15-ти и больше 1% резисторов и большой разъем на плату. Ограничим качество картинки(аналоговая против цифровой) и цвет на 15bpp против 24bpp. Пусть спонсоры решают...
Чтобы была большая скорость нужна FT2232H. Она дороговатая. Лучше использовать внешний программатор с ней, чем устанавливать на карту. Хотя, может лучше иметь встроенный программатор и порт связи через один шнурок USB. Так сделано в MARSOHOD2.Цитата:
USB-UART можно добавить...
Да HDMI лучше рядом с FPGA. Но проблема в том, что в картах ZX-BUS разъемы на плату лучше не ставить. Иначе при включенном питании могут сдвинуть карту в слоте ZX-BUS, нарушится контакт и начнутся глюки.Цитата:
C HDMI лучше так не шутить...
Чет в сторону BGA начинаю косить... может её...?
Нужно, чтобы карта могла сама перешить прошивку для FPGA, без внешних программаторов.
Ошибки (доработки) будут правится в конфиге FPGA достаточное время и юзерам карт, обновлять прошивку тоже нужно будет.
Т.е. на PC запускаем прогу и перешиваем через обычный кабель.
(опционально - перешивка со спектрума)
Насчёт буфера команд.
Буфер команд, вероятно проще в SDRAM засунуть.
(чтобы не тратить набортную FPGA память),
где-то 32КБ, чтоб не переполнился.
Логика переполнения пусть будет, например статусный бит переполнения.
Насчет КА и т.п.
Тут мы не можем простейший блиттер завести ...
Позитивное мышление. :)
а нормальный блиттер не только на экране рисовать должен уметь, но и в других Surface, вообще блиттер должен работать с поверхностями и их частями, что бы во внеэкранной области, можно было подготовительные работы проводить, ну банальный пример, старока с жизнями, монетами итд, нужно завести поверность шириной на весь экран, вывести туда текст, нарисовать сердечки итд, потом просто обновлять уровень жизни и скопром на экран выбрасывать
для меня всеж странно смотреть как постоянно предлагается сделать плату по производительности такую же как суперкомпутеры времен начала спектрума, прицепить к ней спектрум и сказать что "так и было" )) какая то мания у народа в этом деле прям, не проще тогда взять старые писишные платы, сделать альтернативный BIOS с зашитым спековским эмулем и эмулируемым видеорежимом?Цитата:
видекарта все равно не сделает из компьютера 4х ядерный, так что тут не место восторжениям ZX-Poly
опыт спринтера в свое время показал что даже сотня проданных железок и еще не угасшая популярность не приводят к тому что кто то начинает писать игры или даже адаптировать, акула капитализма в лице Медноногова поставила в то время условие - проданные 300 компов и только после этого он будет что то адаптировать из своего, а уж спринтер то мог устраивать акробатику в плане графики
советую прежде чем клепать железо, сделать эмуль, это дещево и недолго и служит хорошим proof of concept особенно когда какуюнить игруху под него адаптируешь + отлаживается на порядок проще
Для какой из конфигураций?
"METEOR"??? Почему не "болид" тогда? Неудачное название, это даже не объект какой-то там, а явление возникающее при сгорании... Не хотелось бы это явление наблюдать при подключении карты.
Параллельно не потяну, задача хоть и простая, но не из легких. Свои мысли устройства я наглядно изложил здесь в виде схемы.
Для VGA не хватает выводов, разве что 6bpp получится (решается простым переходником HDMI2VGA), выхлоп переходника можно на шурупы, чтобы карта не выпадала и всё хорошо.
Будет 60Гц как у нормальных людей, а 50Гц смотреть и фапать через SCART или S-Video с выхода видео компа, он то у нас будет свободный, я планирую TV подключить двумя шнурками VGA/SCART комп и HDMI для DivGPU или exGPU или как там по понятней карту назвать...
Большая скорость кого/чего? Во первых плохое соотношение цены и функционала. Уже лучше VNC2, дешевле и в разы для этого случая лучше.
Добавил в схему CP2104, раз нужна возможность отладки и загрузки обновлений или обмен данными с PC (USB-UART).
Раз пошла такая пьянка с U16, то мне лучше идти по пути совместимости обвеса и простоты. Т.к. отлаживать видео режим мне придется на U16, соответственно делать новую конфигурацию спека с этим режимом.
не вижу в этом ничего странного, у меня видеокарта встроенная в процессор, имеет вычислительную мощьность в 20 раз больше чем процессор, меня этот факт не смущает
более того, так и должно быть, так как видеокарта оперирует большими объемами данных, а вот что странно, так это сейчас предлагать видеорежим с 16 цветами, вот уже где несуразность, при современных возможностьях, раньше еще понятны были мотивы, особо на рассыпной логике ничего не собрать, но сейчас то зачем тако атавизм?
Raydac, это новая ступень перехода на новое железо, пока в виде карты, так было и на PC с платами с несколькими слотами и процессорами :)
Плохо то, что так никто и не предложил помощь в создании конфигурации ZX-Poly :(
Я немного наверно перегнул с HDMI, переубеждать никого не намерен, если сторонников не будет, то последнее слово будет за zst, дальше я пас.
Обычные Спектрумы уже давно обновились. Пора бы добавить новые графические возможности. Я стараюсь сдерживать товарищей, которые хотят догнать PC и использовать максимум возможностей FPGA. Нужно лишь устранить недостатки стандартного режима с сохранением скорости и простоты. Скорость нужна, так как при увеличении количества цветов резко увеличиваются размеры спрайтов и время на их копирование.
Чтобы сделать режим массовым я предлагаю добавить его в современные девборды, эмуляторы и внешние видеокарты. Я понимаю, что будут писать игры, только если все смогут их посмотреть и поиграть.
Пока никто не предложил добавить режим в эмулятор. Наверно лучше сначала проверить идею на современном компьютере типа ReVeRse.
---------- Post added at 19:36 ---------- Previous post was at 19:26 ----------
http://s020.radikal.ru/i708/1506/2e/32b290ec548et.jpg
METEOR - это иностранное название метеорита. Метеориты быстрые. Пару лет назад к нам в Челябинск один такой быстрый метеорит прилетел. И видеорежим получится быстрый.
Схема в основном устраивает.Цитата:
Параллельно не потяну, задача хоть и простая, но не из легких. Свои мысли устройства я наглядно изложил здесь в виде схемы.
Тогда пусть будет HDMI. Но я придумал как освободить 12 сигналов из ZX-BUS. Если устроит такая схема, то предлагаю параллельно разъему HDMI, используя дополнительные выводы, развести 3 ЦАПа R-2R по 5 бит для VGA. Вывести их на однорядный разъем типа WF-09MR. Тогда можно будет сделать две прошивки на выбор и впаивать нужные разъемы и детали.Цитата:
Для VGA не хватает выводов, разве что 6bpp получится (решается простым переходником HDMI2VGA), выхлоп переходника можно на шурупы, чтобы карта не выпадала и всё хорошо.
UART можно и внешний.Цитата:
Будет 60Гц как у нормальных людей, а 50Гц смотреть и фапать через SCART или S-Video с выхода видео компа, он то у нас будет свободный, я планирую TV подключить двумя шнурками VGA/SCART комп и HDMI для DivGPU или exGPU или как там по понятней карту назвать...
Большая скорость кого/чего? Во первых плохое соотношение цены и функционала. Уже лучше VNC2, дешевле и в разы для этого случая лучше.
Добавил в схему CP2104, раз нужна возможность отладки и загрузки обновлений или обмен данными с PC (USB-UART).
Раз пошла такая пьянка с U16, то мне лучше идти по пути совместимости обвеса и простоты. Т.к. отлаживать видео режим мне придется на U16, соответственно делать новую конфигурацию спека с этим режимом.
Предлагаю новую конфигурацию назвать "ZX-48К Meteor". Для начала нужно кое-что уточнить. Можно ли в FPGA из 50 MHz сделать 112 ?
Метеорами называли корабли, спутники, реактивные истребители:
Метеор — «падающая звезда», атмосферное явление, возникающее при попадании метеорных тел в атмосферу Земли.
«Метеор» — серия советских метеорологических ИСЗ.
«Метеор» — первый вооружённый пароход Черноморского флота России.
«Метеор» — парусная шхуна Балтийского флота России.
«Метеор» — серия советских речных теплоходов.
«Метеор» — немецкое экспедиционное судно.
«Метеор» — семейство советских объективов.
«Метеор» — пьеса Фридриха Дюрренматта.
«Метеор» — мультиспортивный стадион (спорткомплекс) в городе Днепропетровске (Украина).
«Метеор» — многоцелевой стадион (спорткомплекс) в городе Жуковском (Россия).
«Метеор» — российский производитель кварцевых резонаторов.
«Метеор-М» № 1 — российский метеорологический спутник.
Глостер «Метеор» — первый британский реактивный истребитель.
Добавлять то нечего, нет ни концепции, не спецификации... Создавать группу нужно, иначе ничего не выйдет.
Никто сейчас и не предложит.
Я вижу два варианта:
1) добавить регистр 74lvc16374 на шину адреса, выхода на VGA 5:6:5. Если VGA выхлоп или второй монитор не нужен, то не распаивать.
2) FPGA в корпусе BGA.
Предлагаю железку назвать DivGPU.
Да, можно.
Предлагаю так соединить буферы 74LVC245, чтобы через один подавать сигналы шины управления. Он будет всегда включен. А выходы остальных соединить параллельно. С FPGA взять 4 сигнала для включения в нужный момент этих трех буферов. Причем на шину данных подать два управляющих сигнала - направление и управлением выходов.
В состоянии ожидания через включенные буферы на FPGA подаются сигналы управления и самые важные линии адреса (A15, A14, A2, A1, A0,,,). Как только на этих выходах появится команда записи/чтения в порт/память Z80 происходит запись этих сигналов в FPGA и включение по-очереди двух остальных буферов, чтобы получить в регистрах FPGA все сигналы ZX-BUS.
Таким образом, нам потребуется 20 ног вместо 32.
Предлагаю проверить работу отдельных схем видеокарты на ReVeRse до разработки плат. Идея такая:
Частота точек на TV 7 МГц, На VGA 14 MГц.
Тактовую частоту FPGA и SDRAM установить 8*14=112 МГц.
Длительность такта около 9 nS.
Режим работы SDRAM 3-3-3, чтение и запись пакетами (BL=8) с автовыключением блока (STR).
Единицу времени назовем квант. Его длительность равна длительности изображения точки на экране TV.
Кванты связаны в тетрады - по 4 кванта подряд.
Максимальный приоритет доступа к SDRAM будет у Z80. В любом кванте он может прочитать или записать байт в SDRAM.
Следующий по приоритету сканер экрана. В течение четырех квантов в одной тетраде он должен прочитать из SDRAM один пакет по 8 точек и сохранить внутри FPGA. Затем вывести на VGA с частотой 14 MHz по 15 битов на цвет. Извините, для 24 бит скорости не хватает.
Затем, в оставшиеся кванты тетрады возможно обращение к SDRAM блиттера.
Во время бордера вместо сканера к SDRAM получает команда регенерации.
Каждый квант состоит из 16 тактовых импульсов. За 14 или 15 тактов можно прочитать или записать пакет из 8 точек.
На основе частоты кванта строится развертка VGA.
EPM3128 берете, она 5v толерантна, можно свой простокол обмена с FPGA, это же классика, сама Altera рекомендует как IO Extender использовать чипы серии MAX3000
ну рекомендовала когда то