|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Author |
Message |
danchandoo
Fanat
Joined: 24 Sep 2007 12:15 Posts: 63 Location: Украина
|
Устройство уже НЕ на Z80, так что можно сохранить за топиком текущий ареал.
Почему так? Просто убрал из схемы вообще контроллер, теперь это просто 32 кб памяти и 2 порта вывода. Сделал это для повышения производительности. Раньше была концепция: "передача команд контроллеру через порты" + буфер общей памяти для ускорения передачи спрайтов. Но она не оправдана, если ведется как раз передача битовых изображений через тот самый буфер. Происходит двойное копирование: система - буфер, буфер -(контроллер)-видеопамять.
Вместо этого теперь будет прямая запись в видеопамять. Потеря интелектуальности устройства опрадана из-за новой сферы его применения.
Я задумал Crazy Z80 4x4 Project. 4 процессора на 4 МГц.
Процессоры подключены к общей памяти через шину. Частоту шины в 16 МГц врядли удастся обеспечить, но т.к. Z80 не имеют конвеера, то к памяти они обращаются не чаще чем раз в 4 такта. Так что буду буферизировать запросы доступа, и выполнять их по одному за такт, и хватит 4 МГц шины.
Соответственно конечную схему видеокарты (а ее в принципе-то и не было в завершенном виде) прийдется переделать с учетом использования ее как части банка памяти работающего с такой шиной.
На данный момент собрана часть видеокарты ответственная за синхронизацию, но никак не найду вдохновение испытать ее на реальном мониторе (в статике работает). Есть ее схема на бумаге, будет время -- сделаю в электронке и выложу.
|
19 Sep 2009 02:54 |
|
|
danchandoo
Fanat
Joined: 24 Sep 2007 12:15 Posts: 63 Location: Украина
|
Синхрогенератор в работе: красный экран 640x480 60Hz (извините за качество фото)
Схема:
После замены "тумблерного" программатора его аналогом, работающим через LPT с компом, появилась возможность запрограммировать синхрогенератор видеокарты, что я и сделал
Подробнее далее.
|
01 Mar 2010 13:12 |
|
|
danchandoo
Fanat
Joined: 24 Sep 2007 12:15 Posts: 63 Location: Украина
|
Псевдо код программирования синхрогенератора:
| | | | Code: ; инициализация: блокировка основного синхросигнала, сброс и т.д. 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
| | | | |
|
01 Mar 2010 13:26 |
|
|
danchandoo
Fanat
Joined: 24 Sep 2007 12:15 Posts: 63 Location: Украина
|
И еще интересная особенность монитора. Сначала я подал на вход R монитора постоянное напряжение питания через резистор 620 Ом, но вместо красного экрана получил красную узкую полоску справа. Решил, что проблема в том, что сигнал подается постоянно, в т.ч. и во время обратного хода луча, и монитор, как-то специфично на это реагирует.
У синхрогенератора есть выходы предназначенные для принудительной установки сигналов цветовой составляющей в 0 для создания рамки, соедененные по схеме ИЛИ, ИЛИ-результат я проинвертировал (теперь сигнал подается только в активной области изображения) и подал через резистор на все тот же вход R монитора. Ура. Заработало.
|
01 Mar 2010 13:37 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22609 Location: Silicon Valley
|
а когда видеопамять заработает?
|
01 Mar 2010 21:17 |
|
|
danchandoo
Fanat
Joined: 24 Sep 2007 12:15 Posts: 63 Location: Украина
|
Тема начата 11 Jan 2009 20:27...
Прошел год
Ну если быть оптимистом, то к лету.
Сейчас возник ряд концептуальных проблемм.
Есть старые наброски схемы для работы в режиме 320 x 240 (дублирование строк и частота / 2), но мне кажется это мало. Лучше уж 640 * 480, хоть текст читать можно будет. Правда нужно больше памяти -- 153600 байт.
Ну и более глобально: внешняя шина 8 или 16 разрядов, для какой системы я вообще разрабатываю эту видеокарту?
Если для N16 CPU, то нужна шина 16 бит. Пока я не знаю нужен ли сам N16, может сделать что-то действительно полезное вместо процессора
|
02 Mar 2010 10:58 |
|
|
danchandoo
Fanat
Joined: 24 Sep 2007 12:15 Posts: 63 Location: Украина
|
Шина данных в 16 бит отвергается -- неоправданно много корпусов.
Частота обмена данными с видеокартой при 640 пикселях в строке -- 12.5 МГц, при ширине шины в 8 бит это 12 Мб/с чего более чем достаточно.
Комфортным видеорежимом я бы назвал 640 x 400 x 70 Гц. Но в слчае 16-ти цветов на пиксель это 128Кб видеопамяти. Как ее адресовать?
У большинства простых процессоров адресуемое пространство -- 64Кб. Розбивать видеопамять на 2 страницы неудобно, потребуется постоянно отслеживать не выходит ли отрисовываемое изображение за границы текущей страницы и производить переключение на другую страницу если это случится.
При таком подходе снижается производительность.
Возможные решения:
- обращение к видеопамяти через три 16 бит порта (или шесть 8 бит), в первый записывается номер строки во второй, номер пикселя в строке в третий -- данные.
По скорости наверно хуже чем постоянная проверка выхода за границу страницы.
- Отдельный порт для адреса строки и окно в адресном пространстве, через которое можно устанавливать значения цвета ее пикселей.
Какие могут еще быть варианты?
|
05 Mar 2010 02:22 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22609 Location: Silicon Valley
|
А я уж было хотел рассмотреть вариант прикручивания к 16-битному пикспьютеру...
|
06 Mar 2010 05:13 |
|
|
danchandoo
Fanat
Joined: 24 Sep 2007 12:15 Posts: 63 Location: Украина
|
PIC вроде 8-битный (я не вникал в устройство PIXPUTERa...).
На мой взгляз 8-битные устройства без проблем стыкуются с 16-битной шиной, принося в жертву старшие разряды.
Я задумывался о создании 4 процессорного компа на Z80, может быть и видеокарту под него делать.
С другой стороны мне нужно выкапываться из каменно-электронного века, переставая применять разработанный 36 лет назад процессор. Нужно освоить что-то новое. А AVR может работать как микропроцессор, или же нужно зашивать в него транслятор кода хранимого в памяти данных?
|
06 Mar 2010 09:28 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22609 Location: Silicon Valley
|
PIC17 имеет внешнюю 16-битную шину для доступа к внешнему коду (с мультиплексированием данных и адреса) - стыковаться то оно стыкуется, однако теряем 8 бит и скорость в 2 раза ниже...
память данных у некоторых моделей расширяется (не кода) - т.е. видимо нужен интерпретатор байткода (у меня есть RW0 : )
|
06 Mar 2010 10:30 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1390 Location: Abakan
|
Не только память данных расширяется. Просто надо подыскать проц, у которого можно и память программ внешнюю применять. Точно можно на MCS51, про AVR не знаю, но с учетом того, что у многих младших моделей, типа mega16, не очень большая флешка, то очень даже может быть, что и в них предусмотрено подключение внешней памяти программ. Ну, либо интерпретация байт-кода, ежели совсем никак.
|
09 Mar 2010 00:00 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22609 Location: Silicon Valley
|
| | | | jdigreze wrote: Не только память данных расширяется. Просто надо подыскать проц, у которого можно и память программ внешнюю применять. Точно можно на MCS51, про AVR не знаю, но с учетом того, что у многих младших моделей, типа mega16, не очень большая флешка, то очень даже может быть, что и в них предусмотрено подключение внешней памяти программ. Ну, либо интерпретация байт-кода, ежели совсем никак. | | | | |
насколько я помню у авра - только память данных
|
09 Mar 2010 05:31 |
|
|
Who is online |
Users browsing this forum: Google [Bot] and 66 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|