Видеокарта

Печатные платы, программируемая логика, разработка и изготовление аппаратуры

Moderator: Shaos

User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Устройство уже НЕ на Z80, так что можно сохранить за топиком текущий ареал.
Почему так? Просто убрал из схемы вообще контроллер, теперь это просто 32 кб памяти и 2 порта вывода. Сделал это для повышения производительности. Раньше была концепция: "передача команд контроллеру через порты" + буфер общей памяти для ускорения передачи спрайтов. Но она не оправдана, если ведется как раз передача битовых изображений через тот самый буфер. Происходит двойное копирование: система - буфер, буфер -(контроллер)-видеопамять.
Вместо этого теперь будет прямая запись в видеопамять. Потеря интелектуальности устройства опрадана из-за новой сферы его применения.
Я задумал Crazy Z80 4x4 Project. 4 процессора на 4 МГц.
Процессоры подключены к общей памяти через шину. Частоту шины в 16 МГц врядли удастся обеспечить, но т.к. Z80 не имеют конвеера, то к памяти они обращаются не чаще чем раз в 4 такта. Так что буду буферизировать запросы доступа, и выполнять их по одному за такт, и хватит 4 МГц шины.
Соответственно конечную схему видеокарты (а ее в принципе-то и не было в завершенном виде) прийдется переделать с учетом использования ее как части банка памяти работающего с такой шиной.
На данный момент собрана часть видеокарты ответственная за синхронизацию, но никак не найду вдохновение испытать ее на реальном мониторе (в статике работает). Есть ее схема на бумаге, будет время -- сделаю в электронке и выложу.
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Start!

Post by danchandoo »

Синхрогенератор в работе: красный экран 640x480 60Hz (извините за качество фото)
Image
Image
Image
Схема:
Image

После замены "тумблерного" программатора его аналогом, работающим через LPT с компом, появилась возможность запрограммировать синхрогенератор видеокарты, что я и сделал :)

Подробнее далее.
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Псевдо код программирования синхрогенератора:

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
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

И еще интересная особенность монитора. Сначала я подал на вход R монитора постоянное напряжение питания через резистор 620 Ом, но вместо красного экрана получил красную узкую полоску справа. Решил, что проблема в том, что сигнал подается постоянно, в т.ч. и во время обратного хода луча, и монитор, как-то специфично на это реагирует.
У синхрогенератора есть выходы предназначенные для принудительной установки сигналов цветовой составляющей в 0 для создания рамки, соедененные по схеме ИЛИ, ИЛИ-результат я проинвертировал (теперь сигнал подается только в активной области изображения) и подал через резистор на все тот же вход R монитора. Ура. Заработало.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

а когда видеопамять заработает? ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Shaos wrote:а когда видеопамять заработает? ;)
Тема начата 11 Jan 2009 20:27...
Прошел год :-?
Ну если быть оптимистом, то к лету.

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

Ну и более глобально: внешняя шина 8 или 16 разрядов, для какой системы я вообще разрабатываю эту видеокарту?
Если для N16 CPU, то нужна шина 16 бит. Пока я не знаю нужен ли сам N16, может сделать что-то действительно полезное вместо процессора :D
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Шина данных в 16 бит отвергается -- неоправданно много корпусов.
Частота обмена данными с видеокартой при 640 пикселях в строке -- 12.5 МГц, при ширине шины в 8 бит это 12 Мб/с чего более чем достаточно.

Комфортным видеорежимом я бы назвал 640 x 400 x 70 Гц. Но в слчае 16-ти цветов на пиксель это 128Кб видеопамяти. Как ее адресовать?
У большинства простых процессоров адресуемое пространство -- 64Кб. Розбивать видеопамять на 2 страницы неудобно, потребуется постоянно отслеживать не выходит ли отрисовываемое изображение за границы текущей страницы и производить переключение на другую страницу если это случится.
При таком подходе снижается производительность.

Возможные решения:
- обращение к видеопамяти через три 16 бит порта (или шесть 8 бит), в первый записывается номер строки во второй, номер пикселя в строке в третий -- данные.
По скорости наверно хуже чем постоянная проверка выхода за границу страницы.

- Отдельный порт для адреса строки и окно в адресном пространстве, через которое можно устанавливать значения цвета ее пикселей.

Какие могут еще быть варианты?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

danchandoo wrote:Шина данных в 16 бит отвергается -- неоправданно много корпусов.
А я уж было хотел рассмотреть вариант прикручивания к 16-битному пикспьютеру...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
danchandoo
Fanat
Posts: 63
Joined: 24 Sep 2007 12:15
Location: Украина

Post by danchandoo »

Shaos wrote:А я уж было хотел рассмотреть вариант прикручивания к 16-битному пикспьютеру...
PIC вроде 8-битный (я не вникал в устройство PIXPUTERa...).
На мой взгляз 8-битные устройства без проблем стыкуются с 16-битной шиной, принося в жертву старшие разряды.

Я задумывался о создании 4 процессорного компа на Z80, может быть и видеокарту под него делать.

С другой стороны мне нужно выкапываться из каменно-электронного века, переставая применять разработанный 36 лет назад процессор. Нужно освоить что-то новое. А AVR может работать как микропроцессор, или же нужно зашивать в него транслятор кода хранимого в памяти данных?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

danchandoo wrote:
Shaos wrote:А я уж было хотел рассмотреть вариант прикручивания к 16-битному пикспьютеру...
PIC вроде 8-битный (я не вникал в устройство PIXPUTERa...).
На мой взгляз 8-битные устройства без проблем стыкуются с 16-битной шиной, принося в жертву старшие разряды.
PIC17 имеет внешнюю 16-битную шину для доступа к внешнему коду (с мультиплексированием данных и адреса) - стыковаться то оно стыкуется, однако теряем 8 бит и скорость в 2 раза ниже...
danchandoo wrote: Я задумывался о создании 4 процессорного компа на Z80, может быть и видеокарту под него делать.

С другой стороны мне нужно выкапываться из каменно-электронного века, переставая применять разработанный 36 лет назад процессор. Нужно освоить что-то новое. А AVR может работать как микропроцессор, или же нужно зашивать в него транслятор кода хранимого в памяти данных?
память данных у некоторых моделей расширяется (не кода) - т.е. видимо нужен интерпретатор байткода (у меня есть RW0 : )
Я тут за главного - если что шлите мыло на me собака shaos точка net
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Не только память данных расширяется. Просто надо подыскать проц, у которого можно и память программ внешнюю применять. Точно можно на MCS51, про AVR не знаю, но с учетом того, что у многих младших моделей, типа mega16, не очень большая флешка, то очень даже может быть, что и в них предусмотрено подключение внешней памяти программ. Ну, либо интерпретация байт-кода, ежели совсем никак.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

jdigreze wrote:Не только память данных расширяется. Просто надо подыскать проц, у которого можно и память программ внешнюю применять. Точно можно на MCS51, про AVR не знаю, но с учетом того, что у многих младших моделей, типа mega16, не очень большая флешка, то очень даже может быть, что и в них предусмотрено подключение внешней памяти программ. Ну, либо интерпретация байт-кода, ежели совсем никак.
насколько я помню у авра - только память данных
Я тут за главного - если что шлите мыло на me собака shaos точка net