Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Unsorted (http://zx-pk.ru/forumdisplay.php?f=13)
-   -   Разработка НОВОГО клона (http://zx-pk.ru/showthread.php?t=4381)

MegaMyth 16th December 2006 05:55

Разработка НОВОГО клона
 
Предистория:
Примерно 1 декабря 2006 года я наткнулся на этот форум. Во первых был приятно удивлен что Spectrum ЖИВ!, а во вторых меня замучала настольгия по светлому прошлому и я решил собрать клон. Нужно заметить что году в 1999-2000 я сидел за живым спеком (у меня ещё не было пицюка), меня реально не устраивали 48К и существующий видеорежим. память я расширил до 128К по стандарту, а вот всё что выше до 1М как уш получилось. Но до видео так и не добрался. Были конечно попытки собрать новый контроллер со своей памятью, но все эти попытки останавливались после того как я на экране монитора получал полосатый матрац (без участия спека). Память я так к ниму и не прикрутил, так как: первое: не мог достать то что мне надо было, второе - откуда у бедного студента деньги...
Сейчас же всё изменилось. Денег хватает, времени мало, но тем не менее....
В чём суть:
Немного пораскинув мозгами я решил собрать таки клон. Но на современной элементной базе.
Железо:
1. Процессор Z84C0020VEC (Z80 20MHz PLCC44 CMOS)
2. ОЗУ K6R4008C1C-15 (SRAM 512K*8 15ns CMOS)x 2 шт
3. ПЗУ am29F010-90 (128K*8 90ns Flash)
4. Всё остальное - Altera EP1K30
5. Макетная плата (еще проектируется)
Концепция:
Особое внимание хочу уделить видеоконтроллеру о чем подробно и рассказываю.
Видеоконтроллер по сути дела состоит из синхрогенератора и счетчиков адреса.
Синхрогенератор будет иметь 8 портов, предназначенных для хранения информации о ширине синхроимпульса, импульса гашения, ширины бордюра, и ширине экрана. Таким образом появлется возможность полностью менять параметры экрана и если удастся запустить режим 640*480 100Гц. Изначально работы ведутся над 60 и 75Гц режимом, так на эти режимы информация имеется. Стандартный ТВ режим также будет присутствовать.
У Видеоконтроллера также будут присутствовать следующие возможности конфигурирования:
1. Управление частотой задающего генератора, что собственно и обеспечивает смену разрешений TV/VGA.
2. Управление счетчиком адреса (адресация спектрум экрана/линейная адресация памяти экрана)
3. Переключение экранов. Количество этих самых экранов будет ограничиваться объёмом ОЗУ.
4. Аппаратный мультиколор до 256 цветов из палитры 65536, а если остануться свободные ноги у ПЛИС то и 16777216.
5. Аппаратный скроллинг экрана по обеим осям.
6. Текствовый режим. в режиме ТВ размер символа 8*8 25 строк, в режиме VGA - 19*8 25 строк или 8*8 60 строк. Возможности загрузки шрифтов скорее всего не будет, т.к. возможности видеоконтроллера слихвой перекрывают эту необходимость.
Спектрум в целом:
Частота процессора будет также задаваться через порты ввода вывода. Могу сказать только одно процессор будет работать без WAIT'ов теоретически до 120 с чем-то МГЦ... такчто как разгонится :-)
Адресация памяти. Гарантировано будет совместимость до 128К, дальше как попрет... Диспетчер памяти. Рассматриваются два варианта. Первый: любая страница ОЗУ из 256[до 4МБ] и более (а возможно и 65536 [до 1 Гб]) становится в любую четверть экрана. Второй (посложнее): Введение аппаратного сегментного регистра по принципу IBM PC (к содержимому сегментного регистра прибавляются 2 старших бита адреса процессора. т.е. если содержимое регистра =#DEAD а программа обращется по адресу #ABCD, то реальный адрес памяти будет равен #37ABEBCD). В чем сложноть... для того чтобы не ограничивать программу объёмом 64К или не заставлять програмеров скакать от отного сегмента к другому, необходимо перехватывать КОП от Z80 и на время выполнения операций с памятью при выполнении команды LD A,(HL) LD (HL),A подставлять другой рестр, и так далее... Таким образом программист получает доступ к огромному объёму памяти данных...
Законченый вариант:
Плата будет иметь формфактор микро-ATX с 5ю системными разъёмами 62pin, возможно появиться и расширение этого разъёма (как ISA).
Что сделано на сегдня:
Подготавливается PCB файл для макетной платы... готовую плату получу через 1-2 дня. В Quatrus'е засимулированы режимы работы синхрогенератора... по всей вероятности работает
Цена:
На сегодняшний день всё это удовольствие обходится мне в 925 рублей. (плата бесплатная будет :-)))

На этомпока всё... у кого есть предположения - пишите... есть вопросы? отвечу.

Lethargeek 16th December 2006 07:24

Quote:

Originally Posted by MegaMyth
Особое внимание хочу уделить видеоконтроллеру о чем подробно и рассказываю.

Хых. Налицо очередная попытка слепить ни с чем не совместимые пэцэобразные "расширения" по внешнему признаку (а шобы было столько цветов и пикселей) путем подгонки под заданное железо (влезет в такую-то ПЛИС). Зато галочку можно ставить - "расширили".

MegaMyth 16th December 2006 08:35

Quote:

Originally Posted by Lethargeek
Налицо очередная попытка слепить ни с чем не совместимые пэцэобразные "расширения" по внешнему признаку

Видео контроллер получется неплохой, но со своими недостатками... нет аппаратных спрайтов... но в след. версии исправлю
Quote:

Originally Posted by Lethargeek
влезет в такую-то ПЛИС

Если не влезет в эту, тогда поставлю другую.

З.Ы. Только что подготовил файл макетной платы... скоро на работу... 5-6 часов и плата готова...

Lethargeek 16th December 2006 08:47

Quote:

Originally Posted by MegaMyth
нет аппаратных спрайтов... но в след. версии исправлю

Ужоснах!! :v2_scare:
И почему все железячники так любят аппаратные спрайты и прочую дребедень, проистекающую из убогости элементной базы 80-х...

MegaMyth 16th December 2006 09:05

Quote:

Originally Posted by Lethargeek
И почему все железячники так любят аппаратные спрайты и прочую дребедень, проистекающую из убогости элементной базы 80-х...

А тебе что нужно??? OpenGL... я, например, посмотрю каково будет прорисовывать 25раз в сек 640*480=307200 байт, в то время как Z80 на 20 МГц LDIROM может копировать только 952380 байт в сек...

Romanich 16th December 2006 09:27

Quote:

Originally Posted by MegaMyth
1. Процессор Z84C0020VEC (Z80 20MHz PLCC44 CMOS)
2. ОЗУ K6R4008C1C-15 (SRAM 512K*8 15ns CMOS)x 2 шт

Хе-хе! Это случайно не от CHRV? Вродеб его позиции ;)

Quote:

Originally Posted by MegaMyth
У Видеоконтроллера также будут присутствовать следующие возможности конфигурирования...

Какова планируется максимальная скорость заноса в видеобуфер? (если вообще планируется...)

Romanich 16th December 2006 09:30

Quote:

Originally Posted by Lethargeek
Ужоснах!! :v2_scare:
И почему все железячники так любят аппаратные спрайты и прочую дребедень, проистекающую из убогости элементной базы 80-х...

Блин, неужели не понятно! Если железячники будут заморачиваться на софтварный рендеринг, то силы у них не останется на самую простую игрушку. Они и так очень многое делают, порой вся энергия кончается и нет сил ещё и программингом заниматься!!! (по себе знаю)

А товарищу пожелаю больших успехов в разработке своей машины!
Не каждый на это способен :)
ИМХО лучше 2Д-аксель на основе блитинга или спрайтов всё-таки сделать, чем погрязть в софтварщине...

Lethargeek 16th December 2006 09:33

Quote:

Originally Posted by MegaMyth
А тебе что нужно??? OpenGL... я, например, посмотрю каково будет прорисовывать 25раз в сек 640*480=307200 байт, в то время как Z80 на 20 МГц LDIROM может копировать только 952380 байт в сек...

Да я тут собс-но уже с год воюю по всему форуму. :)
Основная идея - отделить видеопамять от основной и организовать в виде параллельных плоскостей (довести до ума EGA-подобную схему), что позволит во многих случаях ускорить вывод графики только зетником (плюс удобная раскладка экрана, ибо от специфических восьмибитных ограничений разгон Z80 как таковой не спасает). А для нормальной полноцветной графики юзать блиттер, работающий за счет расширения ШД видеопамяти очень быстро (значит, актуальная графика тоже должна храниться "внутри").

Romanich 16th December 2006 09:36

Quote:

Originally Posted by MegaMyth
А тебе что нужно??? OpenGL... я, например, посмотрю каково будет прорисовывать 25раз в сек 640*480=307200 байт, в то время как Z80 на 20 МГц LDIROM может копировать только 952380 байт в сек...

В своё время я сделал софтварный рендеринг на LCD 128x128pixel 256color
видеоданные отправлял в LCD со скоростью 16МБит/с - регистром сдвига, данные формировались AVR-контроллером. Был видеобуфер(цвет прозрачности/отсечение)... Скорость получилась приемлемая.

Z80 конечно такое не потянет, поэтому нужно собирать аксель! Была идея на ту же LCDшку привешать ATmega8515 - собственно аксель - блитинг/смарт фильтр/отсечение/полу-прозрачность / скэйлинг/....
Но потом попался в руки V9990 и я передумал...

В любом случае для зэтника нужен аксель, а то графа будет отстойная по скорости

Lethargeek 16th December 2006 09:44

Quote:

Originally Posted by Romanich
Блин, неужели не понятно! Если железячники будут заморачиваться на софтварный рендеринг, то силы у них не останется на самую простую игрушку. Они и так очень многое делают, порой вся энергия кончается и нет сил ещё и программингом заниматься!!! (по себе знаю)

Ы, а кроме софтерного рендеринга ни на что фантазии не хватает? То есть "раз уж гоняли спрайты двадцать лет назад, то и мы тоже будем". А железку нужно так проектировать, чтоб потом силы на ее программирование как раз и не тратить.

Сегодня-то какая разница - вызывать стандартную процедуру, которая будет координаты с атрибутами у ограниченных спрайтов менять, или вызывать стандартную процедуру, которая блиттер запрограммирует на переброску произвольного блока? Сам же всех спрашиваешь - "и как только с этими спрайтами хитромудрыми обращаться?" ;)


All times are GMT +4. The time now is 13:21.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.