PDA

Просмотр полной версии : Графическая плата Вектора



Improver
15.01.2020, 14:09
Решил, значит, сделать ещё нечто новое-старое, и заодно с пользой провести праздники... :) Взяв за основу схему Вектора-06ц.02 нарисовал графическую плату, полностью совместимую с оригиналом, но имеющую нормальный (для ТВ) сигнал синхронизации, а также использующую современную статическую память вместо динамической. И вот последний вариант разработанной схемы:

https://s8.hostingkartinok.com/uploads/thumbs/2020/01/700437d1304280a753f0d19060c3c699.png (https://hostingkartinok.com/show-image.php?id=700437d1304280a753f0d19060c3c699)

Вот как плата выглядит в реале (первый тестовый вариант):
71317

Схема в большей части повторяет схему Вектора с платой PAL-кодера от NedoPC (http://www.nedopc.com/PALCODER/palcoder.php), наименования микросхем типа Dхх соответствуют схеме Вектора-06ц.02, микросхемы с обозначениями типа Uхх -- новые. В чём её основные отличия от оригинала:

1. Байты из четырёх экранных плоскостей считываются не параллельно, а последовательно, с частотой 6 МГц в периоды, когда реальный Вектор считывал сразу четыре байта. Собственно, для считывания одного байта на данной частоте необходимо около 83 нс, так что возможностей современной памяти более, чем достаточно, но на случай экспериментов с частотами я выбрал более быструю, на 45 нс, IS62C256AL-45ULI-TR. В таком режиме на всю видеопамять достаточно будет одного чипа вместо четырёх.

2. Плата выдаёт сигнал "MEM_Ready", который сообщает о доступности памяти для процессора и равен нулю только тогда, когда есть обращение к памяти видеоадаптером. Чисто теоретически, если его использовать вместо стандартного МХ2, то он может помочь сократить задержки процессора, но это требует ещё серьёзной теоретической и практической проверки.

3. Выходной разъём оставил типа DIN, как у Вектора, только взял на 8 контактов, на дополнительный центральный контакт идёт вывод PAL-сигнала. На седьмой и шестой контакты выведены, соответственно, сигналы синхронизации и цветности (S-Video), остальные пять контактов соответствуют схеме Вектора-06ц. Кстати, из схемы Вектора были убраны элементы, формирующие яркостный сигнал, т.к. с этим справляется и CXA2075.

4. Схема формирования кадровых и строчных синхроимпульсов переработана и теперь они соответствуют ТВ-стандартам, изображение не смещено, т.е. основная картинка показывается по центру экрана телевизора.

5. Гашение видеосигнала выполняется тремя полевыми транзисторами, что позволило снизить взаимное влияние у цветовых каналов.

6. Сигнал "выбор чипа" на микросхемах К155РУ2 теперь не отключается во время КСИ, думаю, это улучшит запись палитры.

И, собственно, эту схему я уже собрал и немного протестировал (кроме SRAM), но не с Вектором, а автономно, с ардуинами и проводками. Работает, вроде, но есть одна проблемка: часто изображение заворачивается вверху экрана, возможно от того, что телевизор при некоторых цветах воспринимает первые строчные синхроимпульсы, как выравнивающие и смещает на полстроки начало изображения:

71306 71307 71308 71309

В общем, тут надо ещё подумать, на моём Векторе такого эффекта не было... А в остальном, что можно сказать по практическому применению этой схемы? Не думаю, что её возможно будет легко подключить к реальному Вектору, полсотни проводов, плюс переделки схемы -- это не фунт изюма... Но можно использовать со всякими ардуинами/альтерами/малинами и т.д. в качестве системы вывода ТВ-сигнала. А ещё можно сделать к ней плату с процессором, памятью и портами ввода-вывода и получить такой Вектор-новодел. :)

Что ещё можно изменить в плате, и что я отложил на потом, или не рискнул пока сделать:
- Заменить К155РУ2 на нечто другое, например на 74F219, причём при такой замене отпадёт необходимость в инвертировании палитры и, соответственно, в микросхеме U4 (по схеме).
- В плане сигнала "MEM_Ready" можно пойти дальше, и не тормозить процессор при обращении к памяти по адресам 0000h-7FFFh, при сигнале "БЛК" и т.д. У меня это было сделано в предыдущих вариантах схемы, но мне понадобились логические элементы в других местах...
- Можно добавить памяти до 64 кБайт и получить полный объём для Вектора, но вот только китайское ограничение размеров платы 10х10 см. не позволило поставить ещё один чип.
- Несложной переделкой схемы можно сделать так, чтобы каждая строка изображения читалась дважды, получив на выходе ТВ-сигнал на 624 строки прогрессивной развёртки.
- Заменить всё, что идёт по схеме после РУ2 на ЦАП ADV7120 с минимальной обвязкой и получить сразу RGB сигнал, а подняв частоты и немного изменив КСИ можно получить EGA или VGA-выход.

Последний вариант схемы, плюс разводка платы в протеусе: 71310
Собственно, вот такая получилась вундервафля, интересная, но пока бесполезная. :D

svofski
15.01.2020, 14:16
Класс! Заворот изображения вверху это очень даже тру =)

Что до использования, я думаю, что ты скоро просто разработаешь плату Вектора-06ц.03 и эта схема будет ее существенной частью.

ivagor
15.01.2020, 14:25
Если рассматривать именно как дополнительную плату, то наверно единственный более-менее практичный вариант - это примерно то, что делал Syntal с de1 - подключение к ВУ + 12 МГц отдельно. Есть "встроенная видеокарта", а это "внешняя". Они работают параллельно, сигнал можно взять с той или другой.
Заворот здорово бы исправить. DDp исправлял (https://zx-pk.ru/threads/29168-korrektsiya-videosinkhroimpulsov-pk-01-quot-lvov-quot.html) развертку Львова, хотя там заворот был не главным моментом, но его он тоже исправил, может его опыт наведет на какие-то мысли.

Improver
16.01.2020, 08:55
Заворот здорово бы исправить. DDp исправлял развертку Львова, хотя там заворот был не главным моментом, но его он тоже исправил, может его опыт наведет на какие-то мысли.Посмотрел, но там несколько другие проблемы, там скорее исправляют небольшие ошибки в самой схеме, у меня же Протеус при моделировании не даёт никаких отклонений, все синхроимпульсы, как по книжке. Если это не телевизор чудит, то, думаю, наиболее вероятна или неудачная разводка платы (шумы и взаимные наводки линий), или расположение блокирующих конденсаторов, надо будет тут поиграться с паяльником. :)


Что до использования, я думаю, что ты скоро просто разработаешь плату Вектора-06ц.03 и эта схема будет ее существенной частью.Спасибо, это очень даже вероятно. По крайней мере, это будет тоже познавательно. :)

ivagor
16.01.2020, 09:12
Заменить К155РУ2 на нечто другое, например на 74F219
Я совсем не схемотехник, отсюда вопрос - разве можно в данном конкретном случае просто поменять выходы с ОК на выходы с тремя состояниями?

Improver
16.01.2020, 09:30
Я совсем не схемотехник, отсюда вопрос - разве можно в данном конкретном случае просто поменять выходы с ОК на выходы с тремя состояниями?Я попробовал смоделировать это, разница в выходе по сравнению с ОК после ЦАП минимальна, сотые доли вольта (при размахе сигнала примерно 1,2В). Можно также поставить 74F289, она как раз с открытым коллектором, но другой вопрос, найти эти микросхемы за разумные деньги не просто, те же китайцы продают в основном более медленные 74LSXXX.

Improver
19.02.2020, 11:39
Немного поправил схему:

- Переделал основной тактовый генератор, теперь он работает на частоте 12МГц с последующим делением на два, для большей точности тактовых импульсов. Кроме того теперь он имеет вход внешней синхронизации, при подаче на который тактовых импульсов процессора Вектора (3МГц), выходной сигнал 6МГц выравнивается по их переднему фронту. Теоретически, такая синхронизация поможет процессору более корректно обращаться к памяти графической платы, но, с другой стороны, возможно появление дрожания изображения или артефакты при некоторых расхождениях частот генераторов.

- Непринципиально изменил схему формирования синхроимпульсов (ССИ и КСИ остались по форме такими же).

Вот новая схема:

https://s8.hostingkartinok.com/uploads/thumbs/2020/02/5e04558074c864d7acae155c47295de9.png (https://hostingkartinok.com/show-image.php?id=5e04558074c864d7acae155c47295de9)

Архив со схемой в протеусе, разводкой платы и гербер-архивом для её изготовления: 71575

ivagor
19.02.2020, 12:00
Improver, здорово, что есть прогресс, но идея с отдельным внешним генератором имхо очень спорная. В любом случае они (генераторы) будут слегка расходиться. Вытащить из вектора 12 МГц на мой взгляд наименьшее зло.

Improver
19.02.2020, 13:05
Improver, здорово, что есть прогресс, но идея с отдельным внешним генератором имхо очень спорная. В любом случае они (генераторы) будут слегка расходиться. Вытащить из вектора 12 МГц на мой взгляд наименьшее зло.Да, изначально я тоже думал, что это будет проще, и даже думал совсем убрать генератор с платы, хотя при этом теряем некую универсальность. Т.е. сама по себе плата работать не будет, и в связке с ардуинами и прочем железом потребуется искать эти самые 6МГц. Но как показывает моделирование схемы в протеусе, расхождение частот генераторов даже на 100-200кГц от номинала не даёт фатальных для работы схемы последствий, поэтому отдельный генератор позволит в какой-то степени поиграться с разгоном как процессора Вектора, так и с частотами видеовыхода независимо друг от друга, что тоже можно отнести к плюсам отдельного генератора.

И ещё такой момент, когда стал прикидывать, как собрать остальную часть Вектора, то мне очень понравилась идея замены тактового генератора на "рассыпухе" на КР580ГФ24, но тут всплывает вторая проблема: если оставить стандартные для Вектора частоты, то с ГФ-ки можно будет получить только либо опорную частоту в 27МГц, либо тактовую 3МГц. В первом случае понадобится рисовать крайне сложную схему делителя на 4,5. Есть вариант снизить частоту ГФ-ки до 24МГц, но процессор тогда будет работать на частоте 2,67МГц и ещё не известно, как он будет синхронизироваться с видеопамятью. Поэтому я и решил, что лучше уж сделать возможность синхронизации генератора.

Опять же, в последнем варианте схемы можно просто не распаивать микросхему U5 с обвязкой, а на вход 3 Д73 подать частоту с живого Вектора, почему бы и нет? (В предыдущем варианте часть микросхемы U5 использовалась в схеме, и такой фокус бы не прошёл...)

drix
07.04.2020, 09:12
Мои извинения, наверное не в тему пишу!
Графическая плата Вектора - это одна часть!
А где взять другую часть?
Другими словами, где взять схему Вектор'а на более современной элементной базе?

ivagor
07.04.2020, 09:48
Есть реплика (https://zx-pk.ru/threads/22616-vektor-06ts-2014.html) (но там не современная элементная база), есть варианты на ПЛИСовых девбордах (https://zx-pk.ru/threads/8635-vektor-06ts-altera-de1.html) и был проект (https://zx-pk.ru/threads/27536-novaya-plata-vektor-06ts-2017/page4.html) с неясным статусом

Improver
07.04.2020, 10:34
Графическая плата Вектора - это одна часть!
А где взять другую часть?Другую часть я начал рисовать, но она пока ещё не доведена до релиза, получается нечто среднее между точной репликой и на ПЛИС. Возможно в скором времени доделаю...

svofski
07.04.2020, 11:58
Другую часть я начал рисовать, но она пока ещё не доведена до релиза, получается нечто среднее между точной репликой и на ПЛИС. Возможно в скором времени доделаю...
Обозначаю свой интерес к этому проекту ;)

Improver
07.04.2020, 13:58
Обозначаю свой интерес к этому проекту ;)Проект я пока отложил, но, дабы удовлетворить любопытство, могу показать промежуточную схему, на чём я остановился примерно пару месяцев назад:

https://s8.hostingkartinok.com/uploads/thumbs/2020/04/de34c6c2ea36a8a27779f8a34fbb0b23.png (https://hostingkartinok.com/show-image.php?id=de34c6c2ea36a8a27779f8a34fbb0b23)

Тут не хватает довольно большой части: нет разъёма "ВУ" с генерацией сигналов RAS/CAS и "заворачиванием в фарш" там линий адреса, нет клавиатуры, ну и ещё кучи доработок и улучшений схемы. Кстати, размеры платы явно получатся несколько больше, чем 100х100мм, может понадобится её разделить на две части.

Вот архив со схемой в протеусе, для более детального ознакомления: CPU_Vektor.rar -- новая схема тут (https://zx-pk.ru/threads/33133-vektor-06ts-novodel-(ne-altera).html?p=1111238&viewfull=1#post1111238)

drix
08.04.2020, 22:03
Уважаемый Improver!
Доделайте схему!


Кстати, размеры платы явно получатся несколько больше, чем 100х100мм, может понадобится её разделить на две части.

Разделите её на две части (чтобы было проще делать в домашних условиях)!

- - - Добавлено - - -

Какая версия Proteus'а у Вас?
Спасибо.

svofski
08.04.2020, 23:17
А 100х100 это c какими корпусами преимущественно? Что если оставить исторические микросхемы, а клей собрать на soic и tssop?

Improver
09.04.2020, 09:32
Доделайте схему!Обязательно, но потом. ;) Вообще, уже в текущем состоянии можно выделить основных компонентов на одну плату -- процессор, генератор, ПЗУ и ОЗУ, ВИ53 и ВВ55 для клавиатуры, ввода-вывода и управления экраном. Плюс к этому добавить схемы питания и обвязку, и уже на первую плату будет более чем достаточно. А на второй потом развести всё остальное.

Какая версия Proteus'а у Вас?Использую 7.10 (сборка 12325). Пробовал более новые версии, но они что-то глючат...


А 100х100 это c какими корпусами преимущественно? Что если оставить исторические микросхемы, а клей собрать на soic и tssop?Тут выбор не богатый, вся 580-я серия только в DIP, ПЗУ тоже желательно в DIP для возможности установки в панельку, а остальное можно и на soic/tssop, но это получается меньшая часть схемы. Я прикидывал разводку платы, там комплект, перечисленный выше, с трудом уже влезает в 100х100.

svofski
09.04.2020, 09:59
Ага, с трудом значит все-таки влезает. :)

ivagor
09.04.2020, 10:07
Improver, где формируется сигнал MEM_RDY (смотрел по png, протеус я снес)? И близкий, но более глобальный вопрос - в векторе дискретность всяких сигналов типа RAS, CAS соответствует 12 МГц или 1/4 такта 3 МГц (83.3 нс). При использовании ГФ24 с кварцем 27 МГц такая дискретность становится проблематичной. Как будут формаироваться RAS, CAS и еще некоторые сигналы? Для работы нового вектора они не нужны, но нужны для классического кваза.

Improver
09.04.2020, 10:25
Improver, где формируется сигнал MEM_RDY (смотрел по png, протеус я снес)?Этот сигнал формируется как раз графической платой, об этом я упоминал в самом первом посте темы. Это тоже ещё вопрос, требующий практической проверки, как процессор будет с ним работать. В худшем случае, с той же графической платы можно будет вместо него взять сигнал МХ2 и процессор тогда будет работать в классическом векторовском режиме.

И близкий, но более глобальный вопрос - в векторе дискретность всяких сигналов типа RAS, CAS соответствует 12 МГц или 1/4 такта 3 МГц (83.3 нс). При использовании ГФ24 с кварцем 27 МГц такая дискретность становится проблематичной. Как будут формаироваться RAS, CAS и еще некоторые сигналы?Честно -- пока не знаю, ещё не обдумывал это. Поэтому и пишу, что опубликованная выше схема -- это только начало пути...

Improver
27.05.2020, 11:54
Продолжаю рисовать новую схему Вектора:

https://s8.hostingkartinok.com/uploads/thumbs/2020/05/139e97e06c96e5b754bf00e5bdda5c80.png (https://hostingkartinok.com/show-image.php?id=139e97e06c96e5b754bf00e5bdda5c80)

В этой схеме я решил реализовать достаточно смелое решение -- отказался от ПЗУ и сделал ОЗУ энергонезависимым, на батарейке. Да, это вызовет проблемы с начальным стартом нового Вектора, но зато это значительно сокращает площадь плат, да и потом можно будет без дополнительных программаторов менять прошивки.

Как я себе это представляю:
- В микросхеме SRAM (128кБ) по адресам 10000h-1FFFFh располагается ОЗУ Вектора, а в 00000h-0FFFFh будет располагаться та самая область с прошивкой, причём в первых 32кБ будет обычная прошивка, а в верхней памяти -- загрузчик для неё (ещё требуется его написать).
- Запускаем на Векторе некую программку, она зацикливается в ожидании нажатия клавиши и в это время убираем перемычку JP1 -- Вектор начинает работать с областью ПЗУ, как с основной памятью и выполняет программу загрузчика.
- Грузим содержимое ПЗУ в первые 32кБ памяти (через магнитофонный вход или через ПУ). После загрузки возвращаем перемычку JP1 и перезапускаем Вектор по БЛК-ВВОД.
Собственно, всё... Единственная проблема будет -- записать прошивку в микросхему SRAM после первой сборки (или замены батарейки), но, думаю, это не сложно будет сделать ардуиной.

Кстати, дополнительный плюс такого решения: если на Векторе будет запущена программа, которая умеет рестартовать по БЛК-СБРОС, то она сохранится со всеми данными при выключении питания. :)

Есть ещё особенность работы с памятью в этой схеме: данные в верхние 32кБ Вектором будут писаться одновременно и в свою, и в память графической платы, а читаться только из своей памяти.

В итоге вся схема разместилась на двух платках 100х100мм: одна с процессором, памятью и обвязкой, а вторая с м/с ввода-вывода, таймером ВИ53, портом ПУ и двумя джойстиками -- всё остальное, кроме ВУ. Собственно, выход ВУ сделать тоже не проблема, почти все необходимые сигналы уже есть, но возникают определённые сомнения... Для работы с историческими КД нужно сделать RAS/CAS, а также схему регенерации памяти, но много ли таких девайсов осталось? Для всего остального эти сигналы не нужны и сейчас гораздо проще будет сделать платку с КД на SRAM, даже с двумя... Поэтому, думаю, сначала протестить эту новую схему, а потом уже дополнить её платой с ВУ, если будет нужно.

Да, ещё один момент -- клавиатура. Пока что она сделана в полном соответствии с Векторовской (только разъём в два ряда, для компактности), дальше нужно будет либо делать известный переходник на PS/2 на атмеге, либо полностью повторять плату клавиатуры Вектора.

Архив со схемой, разводкой двух плат и двумя гербер-архивами для их изготовления плат: CPUVektor3.7z -- новая схема тут (https://zx-pk.ru/threads/33133-vektor-06ts-novodel-(ne-altera).html?p=1111238&viewfull=1#post1111238)

b2m
27.05.2020, 12:28
Запускаем на Векторе некую программку, она зацикливается в ожидании нажатия клавиши и в это время убираем перемычку JP1 -- Вектор начинает работать с областью ПЗУ, как с основной памятью и выполняет программу загрузчика.
- Грузим содержимое ПЗУ в первые 32кБ памяти (через магнитофонный вход или через ПУ). После загрузки возвращаем перемычку JP1 и перезапускаем Вектор по БЛК-ВВОД.
Как запускаем, как грузим? Я дико извиняюсь, но проц тебе так просто шину данных не отдаст. Лучше HOLD привязать к нулю через резистор, и пусть ардуина рулит этим сигналом (и получает HLDA). Тогда ардуина сама сможет загрузить что угодно и куда угодно.

Improver
27.05.2020, 12:37
Как запускаем, как грузим? Я дико извиняюсь, но проц тебе так просто шину данных не отдаст. Лучше HOLD привязать к нулю через резистор, и пусть ардуина рулит этим сигналом (и получает HLDA). Тогда ардуина сама сможет загрузить что угодно и куда угодно.Начальную запись можно делать проще, прошивать при выключенной схеме. Для этого на плате сделал точку подключения +5В только на м/с памяти и перемычку JP2 для подачи сигнала СЕ2. Выводы СЕ1, ОЕ и WE будут и так на нуле. Думаю, сработает...

А потом всё будет работать, как обычная программа в памяти Вектора, без всяких дополнительных ардуин.

b2m
27.05.2020, 12:45
прошивать при выключенной схеме
А проц не обидится, если +5В будет идти на него через шину адреса, а не через VCC, да к тому-же без +12В?

Improver
27.05.2020, 13:04
А проц не обидится, если +5В будет идти на него через шину адреса, а не через VCC, да к тому-же без +12В?Хм... А он так умеет? Т.е. запитываться по шине адреса? Я таких экспериментов не ставил...


Как запускаем, как грузим?Уточню ещё по этому моменту, как это может выглядеть. Делаем и запускаем на Векторе программку, работающую с адреса 08000h такого вида:

08000h: DI
08001h: JMP 08000hОна зацикливается и работает до отключения перемычки JP1, как отключили перемычку -- банк памяти заменяется на предназначенный для ПЗУ и оттуда, с указанного адреса, запускается загрузчик, начинающийся с четырёх NOP-ов (чтобы не конфликтовал с той программкой). Дальше всё, как написал ранее...

svofski
27.05.2020, 13:21
Новый современный Вектор, особенно модульный на дешевых маленьких платах -- нужный проект!

Мои коментарии:

Нельзя ли сделать сразу одну большую память вместе с КД? Внешний квас -- это всегда был костыль, но в свое время он был необходим из-за дороговизны памяти. Может быть можно использовать накопленный опыт разработки устройств для Вектора и возможности современной схемотехники, чтобы сделать сразу большую память в одной микросхеме?

Как бутстрапить Ардуиной пока не до конца понятно. Чтобы не думать не гадать, нужно посадочное место для страпона, куда ее можно прицепить перманентно -- я бы точно предпочел такой вариант, потому что батарейка сядет и иди вспоминай как там что загружается через 10 лет. Ардуина сможет бутстрапить хоть при каждом включении. Кстати, в некоторых устройствах бывает двойная батарейка, во время замены основной ее прикрывает другая.

Кстати, современные батарейки больше не текут? Тут конечно нет риска потерять драгоценную историческую Амигу, но все же интересно.

Ставить разъемы DIN5 на современную плату не очень практично. В 2020 году это значит искать собственно разъемы и паять ненужные переходники, не говоря уже о месте на плате, которое они съедают. Может быть можно придумать на плате двойные посадочные места под 3.5мм джеки?

ВУ получается нужен фактически только для дисковода-твердодиска. В идеале эта часть тоже была бы еще одним слоем бутерброда и не требовала разъемов-динозавров. Тем более, что если память реализована в основной микросхеме, нужна только часть Комбодевайса для дисков и есть смысл его упростить, переделать, переразвести.

J1 и J2 это джойстики как на Векторе-06ц.02? Было бы просто запредельно удобно иметь джойстики разведенными на плате под DB9 под контроллеры Atari/Sega. На схеме не обозначен тип разъемов, но символы как-то подозрительно похожи на DIN, поэтому я беспокоюсь.

- - - Добавлено - - -


Хм... А он так умеет? Т.е. запитываться по шине адреса? Я таких экспериментов не ставил...
Я думаю, что b2m имеет ввиду, что если прошивать бут при выключенном питании, проц окажется в ситуации, когда напряжение на ножках шины выше плюса напряжения питания (будет 0В). И такая ситуация даже у современных защищенных микросхем может быть ататат.

Improver
27.05.2020, 14:16
Нельзя ли сделать сразу одну большую память вместе с КД?Можно, и, наверно, даже нужно, но два момента мне не дали это сделать сразу: первый -- маловато места для схемы управления, надо бы ещё пару-тройку корпусов где-то разместить рядом с памятью... И второй -- схема ещё не протестирована, такие внедрения лучше побить на этапы.


Как бутстрапить Ардуиной пока не до конца понятно. Чтобы не думать не гадать, нужно посадочное место для страпона, куда ее можно прицепить перманентноТоже можно сделать, в следующих версиях.


Кстати, в некоторых устройствах бывает двойная батарейка, во время замены основной ее прикрывает другая.А это можно сделать уже сейчас, добавить ещё один диод и разъём не трудно.


Может быть можно придумать на плате двойные посадочные места под 3.5мм джеки?Думаю, это не проблема. У меня "магнитофон" на ардуино сразу с разъёмом DIN, мне как раз было бы удобнее иметь его, а не джеки, для совместимости со старым Вектором, но если думать не только о себе, то два джека было бы многим удобнее.


J1 и J2 это джойстики как на Векторе-06ц.02?Да. У меня таких джойстиков нет, сделал для совместимости с разъёмами DIN, как в 02-м. Кстати, вопрос: а много ли программ под Вектор поддерживало эти джойстики? Мне помнится, джойстики для ПУ были более распространены. Может лучше будет сделать один разъём с подключением джойстика параллельно кнопкам клавиатуры? С ним любая программа будет работать...


Было бы просто запредельно удобно иметь джойстики разведенными на плате под DB9 под контроллеры Atari/Sega.У меня и таких джойстиков нет, но тоже можно будет переделать.


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

svofski
27.05.2020, 16:34
Лучше HOLD привязать к нулю через резистор, и пусть ардуина рулит этим сигналом (и получает HLDA). Тогда ардуина сама сможет загрузить что угодно и куда угодно.
Вот может быть лучше так? Я единственное что не знаю, у какой ардуины есть столько I/O, чтобы без особых переделок столько линий потянуть?

После переноса ivagor-ом джойстиков на порт 2e/2f для Шадков у меня сложилось впечатление, что обработка джойстика почти во всех играх на Векторе однотипная и при желании относительно безболезненно патчится с одного на другое. Главное, чтобы они были. Что до разъемов -- стандарт Atari (Sega его расширение для нескольких кнопок) это правда де-факто стандарт и таких геймпадов и джоев на любой барахолке до сих пор наверное пруд пруди.

Надеюсь, что схема получит долгую и счастливую жизнь и какую-то более позднюю инкарнацию можно будет собрать. Мелочи типа типоразмера разъемов можно и переразвести.

Шальная мысль -- а если сделать 4 слоя, физически не получится все чипы утрамбовать в одну 100х100 ? =) Какая то часть площади как раз освободится от межплатных разъемов.

Improver
27.05.2020, 17:15
Вот может быть лучше так? Я единственное что не знаю, у какой ардуины есть столько I/O, чтобы без особых переделок столько линий потянуть?Я думаю над вариантом использования расширителя портов PCF8575 или MCP23017 для подключения шины адреса на ардуину. Ещё вариант -- собрать шестнадцатиразрядный счётчик и с ардуины просто подавать на него такты для полного перебора адресов. В любом случае, это решаемо даже в виде макета, "на соплях".


Что до разъемов -- стандарт Atari (Sega его расширение для нескольких кнопок) это правда де-факто стандарт и таких геймпадов и джоев на любой барахолке до сих пор наверное пруд пруди.Это вот такая (https://cxem.net/comp/comp212.php) у них схема?


Шальная мысль -- а если сделать 4 слоя, физически не получится все чипы утрамбовать в одну 100х100 ? =) Какая то часть площади как раз освободится от межплатных разъемов.Не, там только ВМ80+2хВВ55 почти всю плату займут... Это надо будет очень сильно трамбовать.

svofski
27.05.2020, 18:25
Не, там только ВМ80+2хВВ55 почти всю плату займут... Это надо будет очень сильно трамбовать.

Чипы с двух сторон, ноги с одной стороны вперемешку с ногами с другой стороны? Ну это так, в этом нет большого практического смысла, уж точно не для удобства наладки. Просто было бы ржачно иметь такой ультракомпактный Вектор-06ц.

Расширитель портов итд, это сразу становится не "просто загрузить какой-нибудь ардуиной", уж проще ПЗУ.

А не бывает SRAM, которая с одной стороны параллельная, а с другой SPI? Вряд ли конечно.

Раз уж тут мозговой штурм, вот еще наверняка нереалистичная, не прикольная идея: Ардуина держит БЛК и подсовывает процессору инструкции, которыми тот запишет код загрузчика в бутрам. Выгода в том, что не нужно захватывать шину адреса, достаточно только подсунуть нужные коды инструкций на шину данных в соответствующих машинных циклах, а для этого теоретически у Ардуины пинов должно хватить. Быстродействия может не хватить. Придется делать начальный загрузчик начального загрузчика на FPGA :D

- - - Добавлено - - -


Это вот такая у них схема?
Вроде да, кстати MSX то же самое https://www.msx.org/wiki/General_Purpose_port
Почему-то на этой странице написано, что Сега не то. Но у меня Сега и то, проверено и в Сеге и в C64 и в MSX и в Шадках.

Improver
27.05.2020, 19:39
вот еще наверняка нереалистичная, не прикольная идея: Ардуина держит БЛК и подсовывает процессору инструкции, которыми тот запишет код загрузчика в бутрам.Кстати, тут нет ничего нереалистичного. Хорошая идея. :)

Ещё вариант: снимаем U2 (вк28) и зануляем шину данных, идущую на процессор, тогда он будет читать nop-ы, просто перебирая адреса, как счётчик. Останется только в нужные моменты подавать данные на память для записи.

И в обоих случаях можно будет тормозить скорость процессора, через "ready", или через прерывания.

svofski
28.05.2020, 13:44
Ещё вариант: снимаем U2 (вк28) и зануляем шину данных, идущую на процессор, тогда он будет читать nop-ы, просто перебирая адреса, как счётчик. Останется только в нужные моменты подавать данные на память для записи.
Следующее за занижением напряжения и щелканьем по лампам надругательство над Калькулятором — это использование его в качестве 16-разрядного счетчика :D

svofski
29.05.2020, 11:24
А тайминги у этого Вектора будут совпадать с оригиналом?

electroscat
29.05.2020, 11:41
Другую часть я начал рисовать, но она пока ещё не доведена до релиза, получается нечто среднее между точной репликой и на ПЛИС. Возможно в скором времени доделаю...

Это очень интересно!

Improver
29.05.2020, 11:54
А тайминги у этого Вектора будут совпадать с оригиналом?Тайминги у Вектора, фактически, тормозились видеокартой через сигнал доступности памяти на READY на процессор. В своей схеме графической платы я немного подсократил этот сигнал, он будет тормозить только во время обращения видео к памяти, но можно всё привести к соответствию, если на вывод MEM_RDY подключить сигнал MX2 с графической платы. А если же собрать только две платки по схеме выше, процессорную и ввода-вывода без подключения графической платы, то торможения вообще не будет. Но, правда, ещё пока до конца не известно, как на всё это повлияет ГФ24 и ВК28... В общем, тут ещё есть простор для экспериментов и теоретических измышлений. :)

svofski
29.05.2020, 13:48
Оригинальные тайминги жалко потерять, без них Вектор как бы не совсем уже Вектор. Турбо режим это хорошо, но для меня совместимость с оригиналом — критичная особенность. Это просто моя личная хотелка, конечно.

Improver
29.05.2020, 14:07
Можно сделать кнопку "Турбо"... :)

electroscat
29.05.2020, 14:51
получается нечто среднее между точной репликой и на ПЛИС. Возможно в скором времени доделаю...
Вы планируете мелкую логику в последствии в плис прошить? Это было бы очень удобно, и сильно бы уменьшило размеры. У меня небольшие навыки работы с плис есть, есть желание развиваться в этом направлении, если вы не против, хотел бы поучаствовать. Чем могу готов помогать. Интересен вектор в миниатюре,. Есть ещё вопрос, вы не рассматриваете вариант оснастить вектор мат. сопроцессором, из серии интела. Наверняка их можно купить на Али. Это с одной стороны не лишит комп совместимости с оригиналом, а с другой - расширит математические возможности, не будет необходимости писать сложные подпрограммы деления, плюс к быстродействию.
Ну и ещё, мелькала идея интернета для вектора, не только у меня, на форуме встречал. Реализовать упрощенные протоколы, под псевдографику, обрабатывать то все может Ардуино с вайфаем, а вектору класть в определенную область памяти например готовые задания на отрисовку псевдографики и текста. То есть ничего сверхестественного, приходит информация для текстового буфера на один экран, плюс информация о управляющих клавишах. Стандартные системные запросы все это выводят на экран. А для Ардуино это просто все подготовить.

Improver
29.05.2020, 16:30
Вы планируете мелкую логику в последствии в плис прошить?Не, только в том случае, если этой мелкой логики наберётся столько, что понять там "что и куда" будет сложно, а пока что там почти всё из набора КР580, обвязки не так много. К тому же есть проект Вектора на Altera DE (https://zx-pk.ru/threads/8635-vektor-06ts-altera-de1.html), не вижу смысла двигаться в том же направлении. Путь будет некая альтернатива.


Есть ещё вопрос, вы не рассматриваете вариант оснастить вектор мат. сопроцессором, из серии интела.Это i8231, или аналог от АМД AM9511? Интересное предложение, до этого на Вектор его ещё не ставили, надо будет посмотреть как... Возможно даже это надо будет сделать отдельным модулем, который можно будет подключить к любому Вектору.


Ну и ещё, мелькала идея интернета для вектора, не только у меня, на форуме встречал. Реализовать упрощенные протоколы, под псевдографику...Интернет для Вектора? Забавная идея, но, думаю, она немного выходит за рамки этого проекта.

electroscat
29.05.2020, 22:04
К тому же есть проект Вектора на Altera DE (https://zx-pk.ru/threads/8635-vektor-06ts-altera-de1.html), не вижу смысла двигаться в том же направлении. Путь будет некая альтернатива.
Altera DE это как бы вектор, но уже не вектор... :) А я имею в виду не собрать вектор на Плис, а собрать в Плис все ЛА, ЛН, ТМ, всю логику и все что можно, типа регистры сдвига разные и мультиплексоры т.д. - все в отдельных корпусах просто засунуть в один, для уменьшения размеров. А остальное, конечно, да, это все должно быть 580 серией, я так же это вижу.

Это i8231, или аналог от АМД AM9511?

А разве есть разница, аналог от АМД или от ИНТЕЛ будет ведь иметь идентичный набор доп. команд, если он аналог. Я так глубоко не копал, не знаю таких тонкостей, посмотрю на досуге. Да, было бы круто расширить ассемблер 8080, и иметь возможность подключить эту штуку к любому вектору.


Интернет для Вектора? Забавная идея, но, думаю, она немного выходит за рамки этого проекта.

Да, согласен. Думаю целесообразно было бы такую тему создать. Если есть ещё кто то, кому интересно, отпишитесь в личку может, если есть интерес к теме.

KTSerg
30.05.2020, 05:55
... Думаю целесообразно было бы такую тему создать. Если есть ещё кто то, кому интересно, отпишитесь в личку может, если есть интерес к теме.
Я обдумывал эту тему, когда подключал к Вектору WiFi.
Но как-то пришел к мысли, что во всём интернете, Вектору будет доступна максимум только его собственная картотека.
Т.к. современные страницы сплошь используют всякие Джава, Акив-Х, и прочую лабуду.
А если останется только картотека, то значительно проще ограничиться реализацией FTP.
Думал было-бы интересно адаптировать какие-то игрушки под он-лайн вариант, но пользователей реалов слишком мало, а с эмулятора в интернет не выйти :(
Пытался продвинуть идею для расширения возможностей эмуляторов. Реализовать возможность "Вектора" обращаясь к своим портам, связаться с виртуальными контроллерами, которые реализованы в виде отдельных программ (драйверов).
Тогда при "подключении" к эмулируемому Вектору виртуального контроллера, не требовалось бы внесения изменений в сам эмулятор.
И можно было-бы написав программу контроллера, подключить к эмулируемому Вектору любую периферию, эоть модем, хоть сетевуху, любой другой контроллер какой фантазия позволит придумать.
Но идея не пошла...
А у меня самого знаний не хватает, что-бы предложить способ, как эмулятору общаться с программой виртуального контроллера.

Improver
30.05.2020, 07:31
А я имею в виду не собрать вектор на Плис, а собрать в Плис все ЛА, ЛН, ТМ, всю логику и все что можно, типа регистры сдвига разные и мультиплексоры т.д. - все в отдельных корпусах просто засунуть в один, для уменьшения размеров.Пожалуй, единственное место, где это будет оправдано -- это сама графическая плата. :) На ней сконцентрирована вся логика, и замена всего на ПЛИС + память + видеоЦАП значительно упростит конструкцию. Можно подумать в этом направлении...

electroscat
30.05.2020, 23:14
Но как-то пришел к мысли, что во всём интернете, Вектору будет доступна максимум только его собственная картотека.

Да, совершенно верно, это картотека программ, какие то информационные страницы, специально сформированные для вектора, возможно какие то подобия чатов, и переделки популярных геймов в онлайн.


А если останется только картотека, то значительно проще ограничиться реализацией FTP.

Да, это разумно. Все остальное можно уже по FTP заставить работать.



Думал было-бы интересно адаптировать какие-то игрушки под он-лайн вариант, но пользователей реалов слишком мало, а с эмулятора в интернет не выйти :(

Тут есть моменты.. Пользователи реалов есть, я регулярно монирорю авито на предмет продажи векторов, И их не мало появляется и продается, если цена лояльна. Так же есть заявки н акомплектующие и т.д. Вопрос только в том, как всех обьединить.. Многие и не знают о существовании подобных рессурсов.

Ну и в целом, да, если бы эмуляторы могли связывать вектор с сетью, было бы конечно гораздо проще.

- - - Добавлено - - -


Пожалуй, единственное место, где это будет оправдано -- это сама графическая плата. :) На ней сконцентрирована вся логика, и замена всего на ПЛИС + память + видеоЦАП значительно упростит конструкцию. Можно подумать в этом направлении...

Очень хорошо, я посмотрю, что с этим можно сделать если вы не против. :)

b2m
31.05.2020, 19:52
Я обдумывал эту тему, когда подключал к Вектору WiFi.
И как? Подключил? Мне просто интересно, это был только концепт или что-то реальное?


современные страницы сплошь используют всякие Джава, Акив-Х, и прочую лабуду.
Ничего из перечисленного сейчас не используется. Исключительно JavaScript (а это совсем не Java). Но от этого, конечно, не легче. Гораздо сложнее реализовать W3C стандарты в отношении JS,CSS,DOM, и т.п.


А если останется только картотека, то значительно проще ограничиться реализацией FTP.
Ой-ли? Для FTP соединения нужны два канала, и куча команд перед тем, как файл начнёт передаваться (и не забываем анализ ответов на команды). Для HTTP нужно лишь соедениться, выплюнуть GET и если файл найден, он тут-же вернётся по тому-же соединению обратно. Пропустить заголовок ответа сложности не составит.


но пользователей реалов слишком мало, а с эмулятора в интернет не выйти :(
Если есть готовая реализация подключения к интернету, могу добавить её в свой эмуль. Нужно лишь описание и работающий на реале пример программы.


Пытался продвинуть идею для расширения возможностей эмуляторов...
Но идея не пошла...
Что-то такое припоминаю. Но способов взаимодействия с внешней программой пока никто не предложил. Наиболее простой вариант - это расширение в виде .dll, которую будет подгружать эмулятор. Нужно лишь договориться об API.

Improver
01.06.2020, 09:16
Очень хорошо, я посмотрю, что с этим можно сделать если вы не против.Совершенно не против, даже за, и готов помогать посильно... :)

Improver
10.06.2020, 12:29
Немного поправил схему:

https://s8.hostingkartinok.com/uploads/thumbs/2020/06/fb475237349fb8157df62e89cadce4e0.png (https://hostingkartinok.com/show-image.php?id=fb475237349fb8157df62e89cadce4e0)

Изменения такие:

- Переделал подключение джойстиков на разъём D9 (как нарисовано тут (https://www.msx.org/wiki/File:MSX_Joystick_Schematic_Circuit.png)). Правда, из-за того, что эти разъёмы в полтора раза шире, чем DIN, пришлось частично пожертвовать вторым джойстиком -- он не имеет своего разъёма, но его можно подключить к плате через стандартный "хвостик" для COM-порта.

- Заменил дешифратор Д64 на 74HC138, теперь он выдаёт сигналы для портов до 1Fh включительно. Собственно, это в дальнейшем упростит подключение квази-дисков (на порты 10h-13h) и аудиочипа (порты 14h-17h). Остальные порты стандартно используются флоповодами, может тоже пригодятся...

- Немного переделал схему управления памятью. Теперь первоначальную запись загрузчика можно делать самим процессором по такому алгоритму:
1. Переключаем перемычку JP1 в положение 2-3.

2. На разъём JV1 подключаем внешнее ПЗУ или ардуину с программой распаковки в память загрузчика:
- DB0..DB7 -- шина данных
- A0..A14 -- адресные линии. Можно подключить меньше, для ПЗУ на 512кб, например, достаточно будет А0..А8.
- /BLK (выв.10) -- на вывод СЕ на ПЗУ
- +5В/масса -- питание ПЗУ

3. Включаем схему, процессор грузит из подключённого ПЗУ программу, которая размещает загрузчик по нужным адресам (8000h-BFFFh).

4. Выключаем всё и возвращаем перемычку JP1 в положение 1-2.
Обновление загрузчика будет выполнятся также, как и планировалось ранее: запустили программу, сняли перемычку (совсем), зарузили новый загрузчик...

Вот, кстати, примерно набросал вариант, как будет выглядеть этот "загрузчик загрузчиков": 72828
Программа работает с адреса 8100h, очищает память по адресам 0000h-80FFh,C000h-FFFFh и грузит с магнитофона файлы в формате ROM (проверок пока никаких нет, но для загрузчика нужно грузить данные с нулевого блока), после чего подвисает для возврата джампера и перезагрузки. Можно глянуть в эмуляторе, как она работает. Далее её надо будет "завернуть" в программу распаковки по нужному адресу, и, наверно, дополнить каким-нибудь примитивным тестом системы, чтобы он на начальном этапе хотя бы помигал индикатором РУС, если всё в порядке. :)

Новая схема в протеусе, разводка плат, гербер-файлы на две платы и картинка в архиве: CPUVektor4.7Z -- новая схема тут (https://zx-pk.ru/threads/33133-vektor-06ts-novodel-(ne-altera).html?p=1111238&viewfull=1#post1111238)

electroscat
10.06.2020, 15:27
У меня по конструкции платы вектора предложение, можно ли разьем "ВУ" и разьем "ПУ" расположить на плате типа как isa или pci на материнских платах PC? У меня всегда с этим были проблемы в векторовской конструкции, когда был вектор 25 лет назад, из "ВУ" выводился шлейф который ветвился на 3 разьема, в него включались квазидиск, контроллер флоповода и один разьем болтался запасной, я мечтал тогда о контроллере жесткого дика. В следствии того что комп приходилось все время сворачивать - разворачивать - конструкция со шлейфом где то видимо потеряла контакт, и вся эта конструкция начала глючить и реагировать на малейшее движение. В виду всего этого, предлагаю разместить на плате 2 - 3 например гребенки 50 пин (по 20 с каждой стороны) или например разьемов, как на ардуино, которые как раз на гребенки одеваются. Можно будет несколько контроллеров разных на эти разьемы одевать, по аналогии с PC. Причем, можно сделать ПУ и ВУ на одной гребенке, чтобы каждому контроллеру можно было и то и то сразу завести. Будет универсальная конструкция. После можно будет какой нибудь корпус для этого стандартный придумать, с оговоренными размером и конфигурацией плат контроллеров. Причем, микро, мини и стандартных размеров.. Как то так.

Improver
10.06.2020, 16:08
можно ли разьем "ВУ" и разьем "ПУ" расположить на плате типа как isa или pci на материнских платах PC?Можно, тем более, что сейчас разъём "ВУ" ещё в проекте. Разъём "ПУ" пока сделал стандартным Векторовским, но, мне кажется, что чем дальше, тем сложнее будет их найти, поэтому тоже надо будет придумывать некий новый стандарт. А разъёмы типа ISA или PCI тоже имеют свои минусы, в них например, плату можно подключить только одной стороной и перпендикулярно, что будет значительно увеличивать габариты всей конструкции. В любом случае, нужно найти хорошие, доступные, компактные и удобные разъёмы, а потом дело дойдёт и до корпусов.

Improver
07.09.2021, 11:30
Доработал схему графической платы, вот что получилось:

https://s1.hostingkartinok.com/uploads/thumbs/2021/09/a565e4c544e5b8940f1b0addb680118b.png (https://hostingkartinok.com/show-image.php?id=a565e4c544e5b8940f1b0addb680118b)

Изменения такие:

1. Заменил основной генератор на микросхему ICS501. Как показала практика, предыдущий вариант схемы генератора на 2И-НЕ не может нормально работать высоких на частотах, 12 МГц он просто не вытягивает, хотя Протеус при моделировании проблем не показал.

2. Изменил циклы работы с памятью. В предыдущем варианте, как и на оригинальном Векторе, память работала так: два такта генератора (3 МГц) был открыт доступ процессора к памяти, и два такта память работала на вывод видео. После того, как я потыкал осликом в основную схему (https://zx-pk.ru/threads/33133-vektor-06ts-novodel-(ne-altera).html?p=1111238&viewfull=1#post1111238), пришла идея сделать по-другому, теперь процессор пишет в память (если есть обращения на запись) всего за полтакта, а во вторую половину такта память переключается на вывод видео. Собственно, такой вариант позволяет процессору работать вообще без задержек (в режиме "турбо").

Собственно, осталось только собрать эту схему и проверить в реале. :)

Архив со схемой, разводкой платы и гербер-архивом для её изготовления: 76084