Видеокарта
Moderator: Shaos
-
- Fanat
- Posts: 63
- Joined: 24 Sep 2007 12:15
- Location: Украина
Устройство уже НЕ на Z80, так что можно сохранить за топиком текущий ареал.
Почему так? Просто убрал из схемы вообще контроллер, теперь это просто 32 кб памяти и 2 порта вывода. Сделал это для повышения производительности. Раньше была концепция: "передача команд контроллеру через порты" + буфер общей памяти для ускорения передачи спрайтов. Но она не оправдана, если ведется как раз передача битовых изображений через тот самый буфер. Происходит двойное копирование: система - буфер, буфер -(контроллер)-видеопамять.
Вместо этого теперь будет прямая запись в видеопамять. Потеря интелектуальности устройства опрадана из-за новой сферы его применения.
Я задумал Crazy Z80 4x4 Project. 4 процессора на 4 МГц.
Процессоры подключены к общей памяти через шину. Частоту шины в 16 МГц врядли удастся обеспечить, но т.к. Z80 не имеют конвеера, то к памяти они обращаются не чаще чем раз в 4 такта. Так что буду буферизировать запросы доступа, и выполнять их по одному за такт, и хватит 4 МГц шины.
Соответственно конечную схему видеокарты (а ее в принципе-то и не было в завершенном виде) прийдется переделать с учетом использования ее как части банка памяти работающего с такой шиной.
На данный момент собрана часть видеокарты ответственная за синхронизацию, но никак не найду вдохновение испытать ее на реальном мониторе (в статике работает). Есть ее схема на бумаге, будет время -- сделаю в электронке и выложу.
Почему так? Просто убрал из схемы вообще контроллер, теперь это просто 32 кб памяти и 2 порта вывода. Сделал это для повышения производительности. Раньше была концепция: "передача команд контроллеру через порты" + буфер общей памяти для ускорения передачи спрайтов. Но она не оправдана, если ведется как раз передача битовых изображений через тот самый буфер. Происходит двойное копирование: система - буфер, буфер -(контроллер)-видеопамять.
Вместо этого теперь будет прямая запись в видеопамять. Потеря интелектуальности устройства опрадана из-за новой сферы его применения.
Я задумал Crazy Z80 4x4 Project. 4 процессора на 4 МГц.
Процессоры подключены к общей памяти через шину. Частоту шины в 16 МГц врядли удастся обеспечить, но т.к. Z80 не имеют конвеера, то к памяти они обращаются не чаще чем раз в 4 такта. Так что буду буферизировать запросы доступа, и выполнять их по одному за такт, и хватит 4 МГц шины.
Соответственно конечную схему видеокарты (а ее в принципе-то и не было в завершенном виде) прийдется переделать с учетом использования ее как части банка памяти работающего с такой шиной.
На данный момент собрана часть видеокарты ответственная за синхронизацию, но никак не найду вдохновение испытать ее на реальном мониторе (в статике работает). Есть ее схема на бумаге, будет время -- сделаю в электронке и выложу.
-
- Fanat
- Posts: 63
- Joined: 24 Sep 2007 12:15
- Location: Украина
-
- Fanat
- Posts: 63
- Joined: 24 Sep 2007 12:15
- Location: Украина
Псевдо код программирования синхрогенератора:
Code: Select all
; инициализация: блокировка основного синхросигнала, сброс и т.д.
out (1), 00000100
out (0), 00100001
out (1), 00000000
out (1), 00000100
out (0), 00000000
out (1), 00000000
; программирование синхросигналов строки, для каждого пикселя
for i = 1 to <total piexel in line> do
{
out (0), <состояние сигналов для i-го пикселя>
out (1), 00000100 ; сохранение данных, инкремент счетчика пикселей
out (1), 00000001
}
; программирование синхросигналов кадровой развертки, для каждой строки кадра
for i = 1 to <total lines in frame> do
{
out (0), <состояние сигналов для i-й строки>
out (1), 00001000 ; сохранение данных, инкремент счетчика строк
out (1), 00000001
}
; запуск синхрогенератора
out (1), 00001111
-
- Fanat
- Posts: 63
- Joined: 24 Sep 2007 12:15
- Location: Украина
И еще интересная особенность монитора. Сначала я подал на вход R монитора постоянное напряжение питания через резистор 620 Ом, но вместо красного экрана получил красную узкую полоску справа. Решил, что проблема в том, что сигнал подается постоянно, в т.ч. и во время обратного хода луча, и монитор, как-то специфично на это реагирует.
У синхрогенератора есть выходы предназначенные для принудительной установки сигналов цветовой составляющей в 0 для создания рамки, соедененные по схеме ИЛИ, ИЛИ-результат я проинвертировал (теперь сигнал подается только в активной области изображения) и подал через резистор на все тот же вход R монитора. Ура. Заработало.
У синхрогенератора есть выходы предназначенные для принудительной установки сигналов цветовой составляющей в 0 для создания рамки, соедененные по схеме ИЛИ, ИЛИ-результат я проинвертировал (теперь сигнал подается только в активной области изображения) и подал через резистор на все тот же вход R монитора. Ура. Заработало.
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Fanat
- Posts: 63
- Joined: 24 Sep 2007 12:15
- Location: Украина
Тема начата 11 Jan 2009 20:27...Shaos wrote:а когда видеопамять заработает?
Прошел год

Ну если быть оптимистом, то к лету.
Сейчас возник ряд концептуальных проблемм.
Есть старые наброски схемы для работы в режиме 320 x 240 (дублирование строк и частота / 2), но мне кажется это мало. Лучше уж 640 * 480, хоть текст читать можно будет. Правда нужно больше памяти -- 153600 байт.
Ну и более глобально: внешняя шина 8 или 16 разрядов, для какой системы я вообще разрабатываю эту видеокарту?
Если для N16 CPU, то нужна шина 16 бит. Пока я не знаю нужен ли сам N16, может сделать что-то действительно полезное вместо процессора

-
- Fanat
- Posts: 63
- Joined: 24 Sep 2007 12:15
- Location: Украина
Шина данных в 16 бит отвергается -- неоправданно много корпусов.
Частота обмена данными с видеокартой при 640 пикселях в строке -- 12.5 МГц, при ширине шины в 8 бит это 12 Мб/с чего более чем достаточно.
Комфортным видеорежимом я бы назвал 640 x 400 x 70 Гц. Но в слчае 16-ти цветов на пиксель это 128Кб видеопамяти. Как ее адресовать?
У большинства простых процессоров адресуемое пространство -- 64Кб. Розбивать видеопамять на 2 страницы неудобно, потребуется постоянно отслеживать не выходит ли отрисовываемое изображение за границы текущей страницы и производить переключение на другую страницу если это случится.
При таком подходе снижается производительность.
Возможные решения:
- обращение к видеопамяти через три 16 бит порта (или шесть 8 бит), в первый записывается номер строки во второй, номер пикселя в строке в третий -- данные.
По скорости наверно хуже чем постоянная проверка выхода за границу страницы.
- Отдельный порт для адреса строки и окно в адресном пространстве, через которое можно устанавливать значения цвета ее пикселей.
Какие могут еще быть варианты?
Частота обмена данными с видеокартой при 640 пикселях в строке -- 12.5 МГц, при ширине шины в 8 бит это 12 Мб/с чего более чем достаточно.
Комфортным видеорежимом я бы назвал 640 x 400 x 70 Гц. Но в слчае 16-ти цветов на пиксель это 128Кб видеопамяти. Как ее адресовать?
У большинства простых процессоров адресуемое пространство -- 64Кб. Розбивать видеопамять на 2 страницы неудобно, потребуется постоянно отслеживать не выходит ли отрисовываемое изображение за границы текущей страницы и производить переключение на другую страницу если это случится.
При таком подходе снижается производительность.
Возможные решения:
- обращение к видеопамяти через три 16 бит порта (или шесть 8 бит), в первый записывается номер строки во второй, номер пикселя в строке в третий -- данные.
По скорости наверно хуже чем постоянная проверка выхода за границу страницы.
- Отдельный порт для адреса строки и окно в адресном пространстве, через которое можно устанавливать значения цвета ее пикселей.
Какие могут еще быть варианты?
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
А я уж было хотел рассмотреть вариант прикручивания к 16-битному пикспьютеру...danchandoo wrote:Шина данных в 16 бит отвергается -- неоправданно много корпусов.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Fanat
- Posts: 63
- Joined: 24 Sep 2007 12:15
- Location: Украина
PIC вроде 8-битный (я не вникал в устройство PIXPUTERa...).Shaos wrote:А я уж было хотел рассмотреть вариант прикручивания к 16-битному пикспьютеру...
На мой взгляз 8-битные устройства без проблем стыкуются с 16-битной шиной, принося в жертву старшие разряды.
Я задумывался о создании 4 процессорного компа на Z80, может быть и видеокарту под него делать.
С другой стороны мне нужно выкапываться из каменно-электронного века, переставая применять разработанный 36 лет назад процессор. Нужно освоить что-то новое. А AVR может работать как микропроцессор, или же нужно зашивать в него транслятор кода хранимого в памяти данных?
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
PIC17 имеет внешнюю 16-битную шину для доступа к внешнему коду (с мультиплексированием данных и адреса) - стыковаться то оно стыкуется, однако теряем 8 бит и скорость в 2 раза ниже...danchandoo wrote:PIC вроде 8-битный (я не вникал в устройство PIXPUTERa...).Shaos wrote:А я уж было хотел рассмотреть вариант прикручивания к 16-битному пикспьютеру...
На мой взгляз 8-битные устройства без проблем стыкуются с 16-битной шиной, принося в жертву старшие разряды.
память данных у некоторых моделей расширяется (не кода) - т.е. видимо нужен интерпретатор байткода (у меня есть RW0 : )danchandoo wrote: Я задумывался о создании 4 процессорного компа на Z80, может быть и видеокарту под него делать.
С другой стороны мне нужно выкапываться из каменно-электронного века, переставая применять разработанный 36 лет назад процессор. Нужно освоить что-то новое. А AVR может работать как микропроцессор, или же нужно зашивать в него транслятор кода хранимого в памяти данных?
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
Не только память данных расширяется. Просто надо подыскать проц, у которого можно и память программ внешнюю применять. Точно можно на MCS51, про AVR не знаю, но с учетом того, что у многих младших моделей, типа mega16, не очень большая флешка, то очень даже может быть, что и в них предусмотрено подключение внешней памяти программ. Ну, либо интерпретация байт-кода, ежели совсем никак.
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
насколько я помню у авра - только память данныхjdigreze wrote:Не только память данных расширяется. Просто надо подыскать проц, у которого можно и память программ внешнюю применять. Точно можно на MCS51, про AVR не знаю, но с учетом того, что у многих младших моделей, типа mega16, не очень большая флешка, то очень даже может быть, что и в них предусмотрено подключение внешней памяти программ. Ну, либо интерпретация байт-кода, ежели совсем никак.
Я тут за главного - если что шлите мыло на me собака shaos точка net