Просмотр полной версии : Новый реверс Вектора 06Ц.01 и возможная реинкарнация
Здравствуйте, коллеги.
На форуме зарегистрировался почти сегодня, но с Вектором знаком более 30 лет. Мой экземпляр нашелся у Родителей спустя десятилетия,
во внешне хорошем состоянии, но с достаточной коррозией. Для решения проблемы было решено полностью демонтировать 2/3 аппарата
с левой стороны, что дало интересные возможности: вместо восстановления экземпляра я решил совместить известные сканы схем и
доступную для анализа PCB и восстановить и схему и имеющуюся топологию в KiCad. Это первый этап для интересной, как мне кажется,
задумки - сделать реплику на современных SMD компонентах. Я смотрел на имеющиеся 2014 и 2017 версии, но меня там не сильно
привлекали как раз обилие DIP и разветвленность проектов: стремление включить большинство известных доработок.
Мой подход в следующем:
цель проекта - реплика Вектора на CMOS аналогах 580 серии в QFP/PLCC и 74HC/HCT в SO исполнении.
возможно применеие Altera EPM7000S как gluе logic, но это будет мой первый ПЛИС проект.
это любительский just-for-fun проект, я не считаю себестоимость и затраты для тиражирования.
элементная база выбирается сообразно целей проекта.
вся документация и сопровождение ведется в OpenSource инструментарии (ну может старый Quartus 13 сюда не попадает, но синтезаторы для ПЛИС - это отдельная песня).
вся документация будет доступна под открытой лицензией. Пока используется CC BY-NC-SA.
Как происходило:
по "желтым" сканам из картотеки (я еще не сильно ориентируюсь, но это должно быть детище svofski совместно с коллегами, как то Tim0xA сотоварищи - огромное им за это спасибо!) схема перенесена в KiCad.
по ходу процесса были порождены соответствующие символы в библиотеке элементов (155 серия, ибо я бомблю с буржуинских обозначений AND/OR, КР565РУ6, СНП34-90-Р-В, СНП34-30-Р-В, что-то еще).
по схеме и имеющейся PCB была разведена топология, максимально близкая к оригиналу, прозвонка использовалась для уточнения схемы. Нормы по дорожкам 0.8/0.2 и 0.4/0.2, первый типоразмер для основной разводки, второй для дорожек между DIP 2.5мм. На плате в оригинале есть множество чудесатых форм площадок, что неудобно в CAD.
нумерация/refdes элементов полностью соответствуют оригиналу.
я не умею multiple bus в KiCad, поэтому сигналы шин префиксируются указанием на оригинальную шину и номер ввода на схеме и реальным назначением сигнала, например ~A22_BAIO5 - это 22 ввод в комбинированную шину адреса, которая обозначается второй (2) на оригинальной схеме и который является (~) инвертированным (B) буферизированным сигналом адреса (A) ввода-вывода (IO) бит 5 (5).
в библиотеке футпринтов были допилены соответствующие элементы с шагом 2.5.
общий шаг при переразводке PCB был строго 1.25, кроме пары диагональных мест.
Что есть сейчас:
sch/pcb документация по Вектору, снятая по тому, что есть в действительности на моем экземпляре.
первый проект KiCad c единой схемой на листе A3 + память отлельно и разводкой PCB соответствующей оригиналу, на PCB возможны косяки с шелкографией, ибо не проверял, но и ERC и проверки PCB проходят. Понятно, что это не гарантирует от всех ошибок.
второй проект в KiCad с той же топологией PCB, которая использовалась для обеспечения неизменности, но со схемой уже разделенной по функциональным блокам. Это больше для структурирования и понимания схемотехники Вектора на верхнем уровне: оригинальная схема не помогала в этом совсем.
767527675376754
Improver
27.12.2021, 08:52
megov, посмотрите мой проект (https://zx-pk.ru/threads/33133-vektor-06ts-novodel-(ne-altera).html), там, фактически, я ставил те же цели, что и Вы, и он ещё в разработке, тестирую в железе...
Sandro, Если вы про проект со схемой и PCB существующего Вектора - он в 7zip архиве приложен к сообщению, если под проектом имеется ввиду реплика Вектора, то такой проект, как любой другой, на ранних этапах находится в головах и черновых записях.
- - - Добавлено - - -
Improver, Глянул на Ваш проект - интересно, но подходы немного разные. Я не собираюсь (по крайней мере пока) сильно менять функциональную часть машины.
Это во многом перенос +/- как есть на новые компоненты со "скруглением углов" там, где это потребуется. Например нет РЕ3/ИР13 в 74HC/HCT серии, ВА86/87 будут
заменены на соответствующие функциональные аналоги в 74HC серии и т. д. Я собираюсь и вовсе не использовать ГФ24/ВМ80/ВК28 - их нет в SMD вариантах,
поэтому CPU будет 8085 в TQFP44. Таймер и ВВ55 есть в SO24 и TQFP44, такими достаточно долгое время баловалась OKI. Из остального остается только память
и мелкая логика, которая есть в SO корпусах в 74HC/HCT сериях.
Менять ли память на статическую - для меня под вопросом, поскольку я не планирую сильно влезать в видеоподсистему, а значит 32 бита надо где-то взять.
У DRAM есть распространенные чипы с x16 организацией и 2мя CAS на отдельные байты, пара таких и обеспечит 32 бита шины.
Надеюсь объяснил свою позицию и подходы.
CPU будет 8085
Если уж менять процессор, то может сразу на z80?
Если уж менять процессор, то может сразу на z80?
Как один из вариантов. Но Z80 с точки зрения логики шины сильнее отличается от BM80, могу не осилить.
8085 явно ближе и, кроме того, прямо сейчас у меня уже есть 1821ВМ85. Поэтому как только распаянный Вектор
соберется обратно, можно попробовать посмотреть на работы орионовцев на этом направлении.
Там был дизайн, который пин-в-пин вставлятся в панельку ВМ80, вот его и можно быстро развести и попробовать.
Вплоть до МГТФа на макетке.
Поэтому как только распаянный Вектор
соберется обратно, можно попробовать посмотреть на работы орионовцев на этом направлении.
Там был дизайн, который пин-в-пин вставлятся в панельку ВМ80, вот его и можно быстро развести и попробовать.
На мой взгляд проще отталкиваться от векторовских вариантов (1 (http://www.sensi.org/scalar/ware/569/),2 (http://www.sensi.org/scalar/ware/570/),3 (http://www.sensi.org/scalar/ware/571/)) замены на z80.
Но Z80 с точки зрения логики шины сильнее отличается от BM80, могу не осилить.
8085 явно ближе и, кроме того, прямо сейчас у меня уже есть 1821ВМ85.
Есть пара серьезных проблем одинаковых при замене в векторе 8080 хоть на 8085 и z80:
1. Сигнал "СТЕК" (его отсутствие)
2. Другие тайминги некоторых критичных для программирования палитры и обмена с магнитофоном команд.
Если уж бороться с этими проблемами, то 1) для z80 есть примеры решения и 2) z80 дает больше плюшек в программном плане.
Хотя при замене на 8085 можно плюнуть на квазидиск и ориентироваться на ПК-6128Ц, но это уже совсем другая история.
Improver
27.12.2021, 17:24
megov, Ваш проект тоже будет интересен, но, забегая немного вперёд, хочу поинтересоваться:
1. Почему за основу взяли первый Вектор, а не 02-й? Посмотрите его схему -- там было исправлено несколько проблем, зачем их повторять в своём проекте?
2. Чем Вы планируете заменить К155РУ2? Или оставите её как есть, в DIP корпусе?
1. Почему за основу взяли первый Вектор, а не 02-й? Посмотрите его схему -- там было исправлено несколько проблем, зачем их повторять в своём проекте?
У меня в наличии есть мой 06Ц.01 с которого я и начинал когда-то свою трудовую деятельность. :v2_dizzy_roll:
Он распаян на 2/3 и его восстановление (а я буду запаивать обратно и запускать поблочно) поможет в понимании что и как работает.
Поэтому на переделки 06Ц.02 я буду смотреть уже в процессе дизайна, скорее всего и использую их тоже.
2. Чем Вы планируете заменить К155РУ2? Или оставите её как есть, в DIP корпусе?
Я пока так далеко не думал, возможно подберу какой-нибудь мелкий чип статической памяти с x8, правда все они с двунаправленной шиной.
Improver
27.12.2021, 18:59
Я пока так далеко не думал, возможно подберу какой-нибудь мелкий чип статической памяти с x8, правда все они с двунаправленной шиной.Советую подумать уже сейчас, ибо эта микруха самая проблемная в плане замены -- из того, что можно найти, всё либо нерационально дорого, либо по характеристикам не подходит, либо требует существенного изменения схемы. Ну и есть ещё вариант на ПЛИС...
Мда. Посидел в KiCad часа три-четыре, накидал и начал разводить замечательные pin-to-pin схему/схемы включения 8085 в сокет 8080, найденные у орионовцев.
Параллельно думал над указанной ivagor проблемой со STACK, который теоретически хотелось бы тоже эмулировать на 8085.
И как-то одно с другим совпало, и я прифигел, что у орионовцев не подключены на сокете 8080 INT/INTE,
а потом прифигел еще больше, увидев на 8085 никуда не идущие IO/~M, S0 и S1!!! :eek:
Фиг с ним с INT/INTЕ, мало ли компов без прерываний, но как без IO/~M то в порты писать!!! Неужели?!
И таки да, у них MMIO на 64 кбайтах адресного пространства!
Потом нашел описание, где говорилось, что нет контроллера прерываний, нет декодирования слова состояния
и нет отдельного IO, оно отображается на память. И все - для упрощения конструкции. Нет, с точки зрения элементной базы
создатели Ориона правы, как и были правы создатели Вектора - куча доступной рассыпухи решает, я тоже в 88-90 году будучи
школьником в областном центре офигевал от ВВ55/ВТ57/ВГ75/ВН59/ГФ24 в "простом радиолюбительском компьютере всего
на 29 микросхемах".
В результате возвращаемся к тому, что интел правильно писал тогда в MCS80/85 Reference Manuals о том, что замена одного CPU на другой
проходит не на уровне pin-to-pin (или около) замены, а поперек набора системной логики. И, если STACK можно попробовать вытащить
на мелкой ПЛИС из сигналов цикла шины и (!) опкодов на этапе Opcode Fetch, то "вталкивать фарш обратно", пытаясь выставить на шину
данных под активный SYNC собранное из разных источников синтетическое слово состояния - я не готов.
А без этого невозможна замена в сокете 8080 на 8085. Ну кроме отдельных, специфических машин.
:v2_dizzy_vodka4:
Один из плохо исследованных векторов усовершенствования Вектора — изготовление pin-to-pin совместимой замены 8080 на ПЛИС.
У меня максимум из того что есть, и, пока относительно понятно как использовать, это EPM7128S, а туда, насколько я понимаю, softcore от 8080 не влезет ни при каких условиях.
NEO SPECTRUMAN
28.12.2021, 03:14
pin-to-pin совместимой замены 8080 на ПЛИС.
зочем?
это можот для вм1 актуально :v2_dizzy_roll:
зачем пока заменять 8080 не есно
Один из плохо исследованных векторов усовершенствования Вектора — изготовление pin-to-pin совместимой замены 8080 на ПЛИС.
Вектора - да, но в принципе успешный эксперимент был (https://zx-pk.ru/threads/23349-potaktovyj-klon-i8080-na-fpga-cpld.html), только там сейчас похоже ссылки протухли. Но проц Vslava остался, если что.
у орионовцев не подключены на сокете 8080 INT/INTE
Насколько помню в варианте радио они формировали INTE для совместимости по звуку. В вариантах установки z80 в вектор формируют (с той или иной степенью успешности) все необходимые сигналы, в т.ч. стек. Для 8085 это тоже более-менее возможно, но тут я лучше дальше не буду развивать, чтобы на слове не поймали (в плисе я бы скорее всего сделал, но в плисе то все сделают). Вопрос скорее в другом, сколько времени будет потрачено на проект. Одно дело реверс и воспроизведение, а тут уже модификация.
зочем?
Ничто из того, что мы тут творим, не имеет практического смысла. Но если эту ерунду из головы выбросить, смыслов в переносе процессора на современную элементную базу может быть несколько. Совместимость с современными компонентами, можно сделать целиком трехвольтовый Вектор, низкое энергопотребление, удобное питание, компактность платы. При этом пока этот процессор основан на реверсе Vslav, сохраняется его идейное труъ. А когда надоест забивать себе голову твердыми знаками, это откроет интересные дополнительные возможности пятачка поиграть с альтернативными процессорами, или расширениями системы команд.
Согласен с svofski. У меня это just for fun в чистом виде. Про трехвольтовый Вектор я задумывался, когда находил на EBay 4Мбит FPM память в TSOP44 с организацией 256Kx16 и 2мя CAS, но 3.3V.
Что, навскидку, позволяет из 2х чипов собрать x32 банк. Да, расточительно - не весь объем без доработок будет использован, да - надо почесать репку как воткнуть память с двунаправленной шиной
вместо раздельных входов/выходов. Но зато вся память Вектора умещается в 1 квадратный дюйм.
Я новичок на сайте, но мне кажется, что мы тут понемногу скатываемся во флейм, что неправильно.
Поэтому я предлагаю следующее:
- оставить данную тему только для обсуждения реверса и sch/pcb из первого сообщения. Как минимум я не уверен в цельности KiCad проекта в части символов и футпринтов,
много было сделано специально под реверс, типа DIP40 с шагом 2.5. Коллеги, если кто сможет, гляньте, как проект открывается на других машинах и не потерялись ли они по дороге?
- есть второй шаг: сначала схема была перенесена одним листом и восстановлена топология, сверяясь с живым образцом - это то, что было в первом сообщении. Далее,
в процессе анализа для себя я переразбил схему на иерархические листы по функциональным модулям, но уже используя PCB как контроль того, что при разбиении не внесено ошибок.
Если интересно я выложу модифицированный проект сюда.
- открыть новую тему для разрабатываемой мной реплики и все обсуждения концепта, подходов, прогресса и результата вести там.
- если сообществу будет интересно, я могу сделать обзор восстановления Вектора: на плате остались только РУ6 и ИР13, поэтому обратная поблочная запайка с
контролем работоспособности вполне может потянуть на "методичку" и быть полезной.
К слову сказать, наверное возможно и обратное -- собрать на трехвольтовой плате-дочке исторический КР580ВМ80А вместе с преобразователями питания для тех напряжений, которые ему нужны, схемами сопряжения внешних сигналов с 3.3В и синим светодиодом.
megov, в первом сообщении ссылки на архив и PDF слиплись.
Было бы здорово выложить сорцы на какой-нибудь гит. Для коллаборативной работы (надежды мало, но вдруг) удобно - багрепорты, пулреквесты, вот это вот все.
Ссылки слиплись только в тексте, архив с проектом нормально скачался. У меня проект открылся. Выглядит круто. ERC и DRC показывают 0 ошибок. 3д модели похоже дюймовые, на больших чипах видно разъезд с дырочками.
Очень сомневаюсь в пуллреквестах, но гитлаб и гитхаб удобней для просмотра и документации. Там и pdf сразу видно и описание можно сделать в маркдауне, и даже опубликовать его в виде гитбука.
Отлично! Это мой первый KiCad проект ушедший за пределы локалхоста. :v2_dizzy_vodka2:
Про 3d модели знаю, что дюймовые - специально не корректировал, времени жалко.
Там еще КМки в футпринтах сделаны правильные, как на оригинальной плате: с 3-4мя разными расстояниями
между выводами (выкуси, JEDEC!), а 3D модели показывают погоду на Марсе. Как разберусь, так и СНП34-XX можно
будет сбацать в родных бежево-коричневых и ярко-синих оттенках.
Нули по ERC/DRC делались специально: какая-никакая, но проверка. Сейчас вряд ли кто-нибудь будет
заказывать плату с этих герберов и собирать на ней копию, даже я. Размер великоват для "просто попробовать".
Но, как основа для дальнейшего развития, если схема корректно перенесена, если на разводке нет расхождений
со схемой (что странно в CAD, но возможно), если нет расхождений с оригинальной платой (а для этого даже
трассировка делалась не так, как оптимальнее, а так как было в исходнике), то почему бы и да?
Я пробежался по материалам перед началом работ и, почему-то, нигде не нашел точных инженерных данных
по тому, как оно было as is. В картотеке сканы схем, в сообществе уже переработки "по мотивам" в виде проектов
2014 и 2017 годов. Возможно, плохо искал. Но, тем не менее целью было (1) документирование того, как есть,
и (2) на этой основе начало собственного проекта.
По git мысли смешанные. Внутренний формат KiCad хоть и текстовый, но он далек от языков программирования,
поэтому для публикации - ок, можно. Но я слабо себе представляю 3-way diff и ручное разрешение конфликтов
слияния для таких исходных файлов. Кстати для Verilog/VHDL как раз представляю. Надо подумать в эту сторону.
NEO SPECTRUMAN
31.12.2021, 01:51
процессора на современную элементную базу может быть несколько. Совместимость с современными компонентами
так тогда это автоматически станет не спецтрум вектор
и милярды свидетелей ла3 скажут свое фи
в том числе и мну :)
а вот для вм1 иззо объективных причин можно было бы сделать и исключениё
да и если оно совместить с реальным вм80 на плате
с переключением програнмо
вот это было бы интересно
и милярды свидетелей ла3 скажут свое фи
И тут megov достанет штангенциркуль, померит шаг и он окажется 2.5. Чтобы сохранить лицо свидетелям ла3 тут же придется собрать себе по Вектору.
Бзз!
Пока всё как и говорит svofski - я специально со штангелем лазал по живому аппарату, чтобы разводку PCB сделать как она есть в реале.
При современном подходе там процентов 30 топологии переделывается/упрощается легко даже с 155ла3.
И, да, с шагом 2.5, хотя общий знаменатель для платы = 1.25мм и дорожки 0.8 и 0.4 там где между пинов DIP надо пройти.
С репликой, уж извините, мне на лярдов последователей пофиг. Я тоже могу затереть за ламповый звук,
но девайс будет на OKI 82cXX, 74HC и Altera 7128S. Ибо JFF а не какая-то там коммерция!
Кстати, за ламповую 1ЛБ553, никто на схеме не находил веселых косяков, уже не допустимых, начиная с ТТЛШ? :D
- - - Добавлено - - -
И еще вдогонку, я ж начерчу Вектор для 74HC в SO-14/SO-16, там не без трудностей, конечно же, но точно ламповый будет. Пусть кто попробует возразить!
- - - Добавлено - - -
Дополнение: процом в реплике будут или 80c85 или Z80 в SSOP/QFP.
Присылаем новостя.
Для будущего веселья приехали 80C85 в QFP44 и SSOP40, 82С55 в QFP44 и 82С53 в SOIC24.
Где-то рядом запас EPM7128SQ в приятном корпусе.
https://c.radikal.ru/c23/2202/d3/42e670679dd8t.jpg (http://radikal.ru/fp/9s4o1x3dkkjl3)
Без фоток приехали братья NEC 41256L-12 в корпусе который я без словаря не вспомню - 4х сторонний SOJ с шагом 1.27. Прикольные!
Ожидаются 82С54 в SOJ24(28?), 82С55 в SSOP40 и Z84C006 в SSOP40 и, возможно, в QFP44.
Как я все это разнообразие разводить буду - пока не знаю! :D
Но реплика будет делаться именно по этому направлению: 580 сотоварищи в современных корпусах,
gluе logic в EPM7xxx и, если не влезет во внешних 74HC(T), до памяти еще надо домыслить.
UncleDim
16.08.2023, 17:45
в корпусе который я без словаря не вспомню - 4х сторонний SOJ
т.е. plcc))
А вот и не совсем... В целом, в общем подходе, PLCC.
Но если PLCC24/28/32 - штуки простые и обыденные, то PLCC18 у которого 2x4 + 2x5 выводов по сторонам - зверюга не совсем распространенная.
- - - Добавлено - - -
Дабы оживить веселье и подкинуть дрожжей, сами знаете куда... :v2_dizzy_priest:
Я таки доковырял изложение D36 и D37 в DNF (ежели не запутался в этой вашей академической computer science - я электрик!). D37 нормально укладывается в комбинаторную GAL16V8 без вопросов, а с D36 были веселые грабли. Ибо обратная связь там выбешивала не только меня но любой нормальный компилятор логики. Удалось решить следующим трюком: перевести GAL в registered mode, затактировать от 12МГц и получить нормальное логическое выражение для бита A4 D36, который и переключает полубанки этого ROM. Отъело ячейку с триггером в GAL и выходной ногой. Я не знаю, можно ли как в CPLD, в GAL не только завернуть выход триггера обратно в схему и отраутить на ногу другой выход, но, походу - нельзя совсем. Отчего логика перестала влезать в 20V8 и 16V8, ибо все 8 выходов РЕ3 D36 рабочие. Проблема решается либо 22V10, либо отсаживанием сигнала WVR, как наиболее простого для формирования - на жОскую логику. Мне хавтило одного элемента ЛЕ1 и 2xЛИ1. Фоток и схем пока нет, ибо это было сделано на выходных и сейчас на этапе перваривания.
http://ipic.su/img/img7/tn/gal-vector.1696378767.jpg (http://ipic.su/img/img7/fs/gal-vector.1696378767.jpg)
В планах плата с деталями наоборот, втыкающаяся в панельки D36 и D37. Дополнительно заводятся на нее MEM, DBIN и 12MHz, выходят все сигналы все двух РЕ3 и READY на процессор.
PS2: второй слой - инкапсуляция, как у нас говорят, процессора: почти ничто не мешает разрезать схему Вектора на сам Вектор и процессорный узел со стандартными ША/ШД/~MEMR/~MEMW/~IORD/~IOWR. И для этого уже спаян "инкапсулированный ВМ80" и готовятся гости из 8085 и Z80... :v2_dizzy_christmas:
http://ipic.su/img/img7/tn/vm80-incap.1696379013.jpg (http://ipic.su/img/img7/fs/vm80-incap.1696379013.jpg)
- - - Добавлено - - -
Что касается замены К155РУ2, то коллега Improver был прав - это самая злобная в части замены микросхема. Нет мелких быстрых RAM с раздельными входами и выходами, двухпортовая память (например от Cypress) вся большая по размеру, излишня по емкости и труднодоставаема. А вот с РУ2 получилось, что их у меня есть - и наших РУ2 пару десятков и тамошних EL7489 в керамике + Tesla MH7489. Как-то 50 штук на Мешке прикупил.
Что касается замены К155РУ2
Еще есть 531РУ9 - аналогичные, только чуть более быстрые, что для вектора не важно.
- - - Добавлено - - -
Нет мелких быстрых RAM с раздельными входами и выходами
Есть 185РУ9 - 64x9, выход с ОК, как и у 155РУ2 и 531РУ9. У нее один лишний бит в ширину и 2 лишних разряда адреса.
Есть 185РУ9 - 64x9, выход с ОК, как и у 155РУ2 и 531РУ9. У нее один лишний бит в ширину и 2 лишних разряда адреса.
Мне бы размером поменьше. 185РУ9 вообще в широком DIP28! А вот 133РУ2 уже лучше, только найти их, в отличие от 155х мне совсем не удалось.
185РУ9 вообще в широком DIP28!
Что делать, плата за раздельный вход и выход. Если сравнить с двумя 155РУ2, то разница по площади вряд ли большая. Ну и если 155РУ2 доступны, то нет проблем, если не доступны - теоретические альтернативы есть.
А вот 133РУ2 уже лучше, только найти их, в отличие от 155х мне совсем не удалось.
Существует ли РУ2 в 133 серии? Например здесь (https://mikron.ru/products/high-rel-ic/standart-logic/s-133/) нет, только РУ5 и РУ7. Попробовал посмотреть в других местах - тоже только РУ5 и 7.
Если сравнить с двумя 155РУ2, то разница по площади вряд ли большая.
Две РУ2 мне нравятся больше, поскольку при разводке можно растащить корпуса, если это будет необходимо. Я когда фикс для длины синхроимпульса делал специально набрал 74LVC1G74 и 74LVC2G00DCU в VSOP8, что позволило разместить 2 триггера заменяемой D3(ТМ2), 4 NAND и 2 триггера укоротилки/задержки и 14 ног мезонина на площади в полтора DIP14.
Попробовал посмотреть в других местах - тоже только РУ5 и 7.
Поиск находит только в таких странных местах, как таблицы аналогов в журналах соцлагеря, типа Amaterske Radio за 1986 и румынский Tehnium 9/83. Понятно, что может быть из разряда легенд.
Однако оригинальная SN5489 должна существовать, где-то у меня был Fairchildовский каталог начала 80х - надо посмотреть. Доставаемость, правда нулевая будет.
Вот и возвращаемся к тому, что для LUT палитры ничего мелкого и нет. Еще одну CPLD городить неохота и выигрыша по месту не даст. РУ2 - наше всё.
LeoN65816
05.10.2023, 08:04
А вот 133РУ2 уже лучше, только найти их,
Дык, это же серия-военка, где ж ты её возьмешь? :o
Вот и возвращаемся к тому, что для LUT палитры ничего мелкого и нет.
Исчо 531РУ8, SN74189.
Исчо 531РУ8, SN74189.
Выходы не с ОК, придется менять схему и дополнительно что-то приделывать.
Improver
05.10.2023, 16:17
Выходы не с ОКВыходы с ОК на 530РУ2 и 531РУ9 (оно же 74289) (https://www.qrz.ru/reference/kozak/ttl/ttlh132.shtml), но не вижу смысла менять шило на мыло, если 155РУ2 такие же и по характеристикам, и по размерам, и по цене. Да и 155РУ2 всё же легче найти, мне кажется.
Есть ещё варианты статической памяти с двумя независимыми входами и выходами (и для данных, и для адреса), можно было бы поставить, полностью разделив вывод графики и программирование палитры, но что-то их найти сейчас не могу... Да и стоят дорого, как я помню.
531РУ9
Странно, что хотя бы про нее никто не упомянул (https://zx-pk.ru/threads/34017-novyj-revers-vektora-06ts-01-i-vozmozhnaya-reinkarnatsiya.html?p=1186473&viewfull=1#post1186473).
- - - Добавлено - - -
варианты статической памяти с двумя независимыми входами и выходами (и для данных, и для адреса), можно было бы поставить, полностью разделив вывод графики и программирование палитры, но что-то их найти сейчас не могу
Из советского ретро 1802ИР1, их даже использовали кое-где для палитры. Но выход не ОК и противоречит направленности megov на сокращение площади платы.
Improver
05.10.2023, 17:34
Но выход не ОК и противоречит направленности megov на сокращение площади платы.Сокращение платы, может, и полезно, но не повлияет на размеры корпуса Вектора. :) Ещё можно глянуть схему Вектора-Турбо (https://zx-pk.ru/threads/20615-vektor-turbo.html), там "палитра" собрана на IS61C256+74ALS245 (и ЦАП на ADV7120)...
И ещё по поводу выходов с ОК: они совсем не обязательны, я собирал видео-ЦАП и по классической схеме (https://zx-pk.ru/threads/8739-vektor-06ts-videovykhod-podklyuchenie-k-tv.html?p=981527&viewfull=1#post981527), но без ОК, и по схеме R2R (https://zx-pk.ru/threads/8739-vektor-06ts-videovykhod-podklyuchenie-k-tv.html?p=1138143&viewfull=1#post1138143) и всё работало без заметных искажений в цветопередаче на изображении.
Improver
05.10.2023, 22:08
Из советского ретро 1802ИР1, их даже использовали кое-где для палитры.Нашёл... Не советское ретро, но похоже на 1802ИР1, я имел в виду вот такую память: CY7C131 (https://www.alldatasheet.com/datasheet-pdf/pdf/226603/CYPRESS/CY7C131-15JC.html). Данные там на 8 бит, значит одного чипа хватит, быстродействие превосходное, и корпус можно выбрать компактный, типа plcc или pqfp...
Ох вы тут и понаписали...
Но вкину ортогонально:
http://ipic.su/img/img7/tn/4bit-implant.1696635248.jpg (http://ipic.su/img/img7/fs/4bit-implant.1696635248.jpg)
Эта хрень умеет быть поллинейкой РУ6 (3бита из проводочков и один в панельке снизу).
Посему - чипы с совмещенными DI/DO, а такие все, кроме олдовых однобитных, должны нормально работать в Векторе.
Поллинейкой - ибо DRAM 4х биный, а у меня только одна линейка РУ6 а панельках.
Но, в целом, есть прямая дорога набрать стандартную память их 4x30 пин simm или 1x72 пин simm с совмещенными DI/DO
(а там их нет раздельных by design!).
Первый вариант, понятно - не вариант. второй - возможен. Но, коллеги, давайте себе не врать! У нас 32х битная машина!
А то, что там проц ковыряется в 8 битах, ну, то такое.. :v2_dizzy_snowball:
НО. Наставить 512k статики и в RAM и в кваз - вне конкуренции.
Ковыряю понемногу реинкарнацию. Проблем пока две.
1. Сильно хочется уйти от x32 организации памяти к x8, на худой конец к x16. Но при x8 стандартный 60-70ns DRAM в принципе не лезет в тайминги, отведенные для доступа видеоадаптера. У "средних" РУ6 задержка от спада /CAS до данных в паспорте 120ns, поэтому 4 обращения в x8 DRAM точно не влезут. С x16 можно повоевать. Поэтому пока двинулся в другом направлении - использовать емкую, но небыструю SRAM 512Kx8 с 55ns с прицелом в ней же и кваз разместить. Впритык в окно доступа видеоадаптера 4 обращения влезают, пока в симуляции в ModelSim. Обращения будут сопровождаться 4мя latch сигналами, разнесенными во времени, почти также как защелкиваются сейчас все 4 ИР13, но не одновременно. Для выравнивания, 3 из 4х байт будут временно защелкиваться в промежуточных регистрах, как пример - защелкивание атрибута знакоместа в спектрум-совместимых, только тут ждать надо меньше - до окончания выборки всех 32 бит. Данные четвертой страницы сохранять не надо, по четвертому стробу все будет писаться в выходные сдвиговые, но уже не ИР13, а 74HC165PW. Пока, в теории, схема выглядит правдоподобной. Отвечаю, зачем такие извращения:
- планирую уместиться в EPM7128S, что ограничивает меня и по ячейкам и по пинам, регистры в синтезе особенно дороги. Посему, все регистрово-простое, что можно вынести в отдельные корпуса, я вынесу. И даже не буду в синтез вносить, как например пиксельные сдвиговые, они изначально планировались на отдельных чипах, отдавать >=32 ячеек из 128 за такое я не готов.
- x8 занимает меньше места и отпадает необходимость в выходном демультиплексоре на КП2 до CPU.
Где есть резервы:
- мастер клок у меня 48МГц, чтобы иметь возможность уплотниться где надо или подвинуть сигналы (а 3 RC цепочки в стандартной схеме есть - на CPU клоке, на сбросе PSW и на 512 точках растра).
- не пытаться впихнуть кота в коробку, забить на кваз и поставить любые Cache SRAM x8 с доступом 10-25ns. Необходимости в защелках перед пиксельным сдвигом это не отменяет, но с таймингами становится проще.
2. Переход от DRAM к SRAM помогает во временной области, за RAS/CAS можно спокойно 2 обращения сделать, а с учетом меньшего времени доступа SRAM чипов, то и все 4. Но грабли начинаются в другом - во входном адресном мультиплексоре. Если его делать в CPLD, то туда надо завести 16 линий адреса CPU + 8 линий начала экрана ВВ55 на входы счетчиков скроллинга и вывести 8 бит мультиплексированной шины адреса памяти. Итого 32 бита и 32 пина CPLD из 84х. Это с учетом того, что все видеосчетчики внутри CPLD, как и задумывалось. Для SRAM выводить обратно надо все 16 бит адреса и ноги CPLD становятся узким местом. Да можно сэкономить 2-3 пина, поскольку убираются /CAS0-CAS3 + /CASE, но для адресации кваза добавляются еще 3 бита адреса, формируемых между основной памятью и страницами кваза. Пока промежуточное решение - вытащить входной адресный мультиплексор в логику (SN74CBT16233DGVR), а резерв в CPLD придержать, еще не делались дешифраторы IO, логика кваза и всякое остальное.
* SN74CBT16233DGVR под вопросом, он конечно прикольный и все-в-одном, но по разводке будет проще 4шт КП11 в TSSOP-16 применить (да, я знаю, что родных КП11 в TSSOP нет, но мы все же поняли, да?).
Напоминашки:
- не надо спрашивать "зачем" и искать коммерческую или иную целесообразность. Все, что я делаю - это just for fun. Вектор-06Ц был моим первым компом.
- хоть и паяльник я держать умею с детства, но на жизнь зарабатываю я написанием кода. Посему и тут и там могу быть некомпетентен. ;)
- цель проекта сделать современную реплику Вектора. Не программную эмуляцию (с этим коллеги преуспели), не синтез всего в FPGA (привет первопроходцу svofsky), а просто милый маленький девайс. Типа iMac. В цельной алюминиевой коробке. ;) :D
PS: Невзначай появилось имя проекта. Неоригинальное, но на силксринах уже отпечатанное: Vector06c-Neo.
PS2: Коллеги, у кого нибудь есть в читаемом виде сканы наших даташитов на РУ6/РУ5/РУ7 с диаграммами и таблицами таймингов? Все что находится либо пережато и нечитаемо, либо новодел pdfный из 2х страничек к которому доверия никакого. Заранее, спасибо!
- - - Добавлено - - -
CY7C131-15JC. Данные там на 8 бит, значит одного чипа хватит, быстродействие превосходное, и корпус можно выбрать компактный, типа plcc или pqfp...
Все, конечно, здорово... но! У меня есть CY7C131E-55JXI в PLCC52. Да, прикольно. Да SRAM и двухпортово. Но на этой площади 2x 155РУ2 точно уместятся, толкаться не будут и доп. согласования не попросят.
Не, чипы прикольные, я не спорю, но они не про то.
;) А вот на них сделать non-wait шлюз с "программным арбитражем и семафорами" ("с блек-джеком и дамами с пониженной социальной ответственностью" (c) Bender@Futurama) - это интересно.
А с другой стороны подвесить можно всякое. GPU например на FT812, как коллега TSLabs сделал с ZX-Evo.
Может быть можно память организовать на 30-пиновых SIMM-модулях?
А это всё то же самое будет. Если по пунктам:
1. 30 пиновый симм это 8 бит DRAM, как правило 70 ns и чаще всего сделанный из двух 1Мx4 чипов (или 256Кх4 для 256К), т .е. та же самая x8 организация и мультиплексирование адреса по RAS/CAS.
Соответственно, проблемы остаются, хоть 70ns это почти в 2 раза меньше чем CAS latency в 120 ns для 565РУ6Г, но 4 полных обращения в окно времени для видеоадаптера влезать не будет.
2. Можно поставить 2 или 4 штуки и получить 16 бит за обращение. По времени уже может успеть. Но смысла нет - уж проще сразу рассчитывать на 72 пиновый FPM симм, там x32 шина данных.
3. К 30 пиновым симмам нет нигде разъемов хронически, на 72 пина кое где можно найти. По 8-10 штук у меня припасено, конечно же, но все равно - дефицит и дорого. На авито видел всего одно
предложение по 600 руб за 30 пин сокет. :mad:. Распайку с дохлых материнок не предлагать, нету уже таких, по крайней мере в товарных количествах.
4. Размеры резко увеличиваются. Можно победить прямой запайкой SOJ на будущую плату. Например одного чипа x16 с 4-8Мб FPM 72pin хватит.
5. Скорее всего встанет проблема рефреша: 8 бит будет мало, надо 9 или 10. Откуда брать - пока непонятно: сейчас надо обойти 128 строк для РУ6 (и 256 для РУ5 в классическом квазе).
При отображении делается 32*256=8192 обращений за время кадра в 20 миллисекунд, получаем 2.44мкс на обращение и 2.44 * 256 строк = 625мкс период рефреша, что укладывается в лимит DRAM.
У 4116 он 4 мс, у наших я данных не нашел, но думается, что не меньше 2 мс. Продлить на 4 кадра? 2.44мкс * 1024 строки = 2.5 мс. По периоду успеваем, для более емких и современных там от 16мс.
А вот как совместить перебор этих двух старших разрядов адреса с необходимостью видеоадаптеру таки ходить при каждом обращении по одинаковым адресам в каждом кадре?
Я пока не придумал. Можно попытаться впихнуть еще одно обращение в окне видеоадаптера, уже только с передачей одного только адреса строки и RAS (RAS-only refresh) или
использовать бордюры и обратный ход, но и то и другое приведет к необходимости отделять адрес рефреша от адреса видео и еще одному счетчику на 9-10 бит.
Вот я это все просуммировал и решил уйти на SRAM в варианте CY62148E (512Кx8, 55ns) или CY7C1021 (128Kx16, 15ns). Пока целюсь в первый, там 3.5 обращения по 61нс укладываются в окно,
а 4 можно уложить, подвинув спад MX2 на полтакта (C1_6M) раньше. По моим прикидкам там поседние полцикла проца, стробы чтения/записи IO и памяти уже должны быть неактивны, ШД свободна и
можно отключить шину адреса CPU от памяти немного раньше. А если не получится, то со вторым чипом все вообще проходит со свистом - 15 ns доступа и 16 бит шина, т. .е хватит 2х обращений.
DRAM с tRAS<=80 ns, который типичен для simm 30 pin позволяет в рамках 666 нс (4 такта 6 МГц) выбрать страничным доступом 4 байта видео и еще остается время на один доступ проца и все это с соблюдением таймингов даташита. Т.е. это турбопроц 6 МГц + в два раза больше видео, чем нужно для вектора.
А для стандартного вектора 3 МГц достаточно скорости (правда с небольшим нарушением паспортных данных) одной линейки 565РУ5В (страничная выборка видео) или 565РУ7В (слоговая выборка видео).
Проблему рефреша можно решить радикально, отвязав его от видео и от размера счетчиков. Видео само по себе, а на бордюре сбоку рефреш в режиме cas-before-ras (годится для западных dram начиная с 41256 или наших с 565РУ7).
Т.е. память не ограничивает, если трудности и возникают, то снаружи памяти.
У меня по результатам расшифровки циклограмм с D36/РЕ3 получается не 4, а три такта 6МГц в течении которых MX2=0 и, следовательно, доступ в память со стороны видеоадаптера в течении окна в 500ns. Про страничный доступ - да, спасибо, что напомнили, 3 RAS строба можно сэкономить. Кроме того я точно не планировал набирать банки из x1, а сразу смотрел бы на что-то x16, типа HM5118160, такие у меня после ZX-Evo остались, а там и CAS-before-RAS и RAS-onle рефреши есть. Скрытого и внутренних счетчиков, правда, нет.
- - - Добавлено - - -
Текущий цикл чтения видео из SRAM выглядит так:
http://ipic.su/img/img7/tn/SRAM_VIDEO_READ.1699547382.png (http://ipic.su/img/img7/fs/SRAM_VIDEO_READ.1699547382.png)
Пояснения:
с0_24М - с2_3М - клок от 24МГц вниз (С1-С4 как раз выходы D35/ИЕ7)
Т - фазы ВМ80, addr+ALATCH - немультиплексированная ША, cyc_mx2 - MX2
nvramrd - строб чтения от видео, nsramrd/wr - стробы чтения/записи в память,
vplane - счетчик плоскостей, дающий изменяющиеся A13+A14 в адресе,
DATA - ШД, LATCH_X0_* - стробы записи в выходные регистры по плоскостям,
pixctr - счетчик пикселей для справки, wvrTB - старый строб записи в выходные регистры (из тестбенча),
DELAY - симуляция задержки доступа в память с гранулярностью в 1 master clock (20.85ns)
LATCH_CTR - счетчик на 6 MCLK для формирования LATCH_X0_*,
cx - состояние выходов D35 входов D36 без A4, фактически номер цикла в D36/РЕ3.
CPU и память написаны как тестбенчи в верилоге, криво и косо, но какое-то представление дают.
Данные выдаваемые на ШД - это слайс битов адреса [11:4] для отладки, живых данных в видеопамяти никаких нет.
CPU умеет циклы, соответствующие опкодам и дергать стробами чтения/записи в память и IO, действительного
исполнения кода там нет. Писалось все на коленке.
- - - Добавлено - - -
Вдогонку: есть ли где наиболее полная раскладка IO портов по Вектору?
Про стандартные 00h-0Fh + 10h кваз + где-то около 18h-1Ch ВГ93 + 20h второй кваз - я помню. В вот дальше?
Идеи 3:
- ROM диск отсадить с ПУ/ВВ55 куда нибудь вдаль и без ВВ55, на защелках (2-3 порта)
- сделать аналог 80h из PC - POST регистр (1 порт). На ввод можно дип свичей организовать для конфигурации.
- куда нибудь воткнуть ВВ51 (2 порта ВВ51 + переключалку бодрейта)
есть ли где наиболее полная раскладка IO портов по Вектору?
Не нашел, где этот файл сейчас выложен в сети, поэтому прилагаю к посту (составил Tim0xA).
Дополнение: в файле упомянут кировский вариант расширения квазидиска, который не взлетел. Сейчас в эмуляторах и даже в железе поддерживаются расширения Баркаря (http://caglrc.cc/scalar/ware/785/).
CPU и память написаны как тестбенчи в верилоге, криво и косо, но какое-то представление дают.
vm80a Vslav-a можно в тестбенче завести.
куда нибудь воткнуть ВВ51 (2 порта ВВ51 + переключалку бодрейта)
Где-то мы это уже обсуждали. С последовательным портом без FIFO и прерываний Вектор не много сможет сделать полезного. 16550 чуть-чуть повышает теоретическую полезность.
Я сейчас делаю эмулятор Вектора на 5" LCD-модуле с ESP32S3 и была шальная идея -- насколько реально сделать Вектор по максимуму из оригинального чугуна, но чтобы плата вписывалась в размер платы модуля примерно 14x9 см. Типа если максимально уплотнить плату, сделать ее на столько слоев, сколько нужно, а не насколько кажется экономически разумно, мелкую логику запихнуть или в tssop-ы под большими чипами, или в cpld, две стороны монтаж. Иными словами, если отбросить разум, какой минимально возможный размер Вектора c труъ кр580+вв55+ви53 в принципе.
Типа если максимально уплотнить плату, сделать ее на столько слоев, сколько нужно, а не насколько кажется экономически разумно, мелкую логику запихнуть или в tssop-ы под большими чипами, или в cpld, две стороны монтаж. Иными словами, если отбросить разум, какой минимально возможный размер Вектора c труъ кр580+вв55+ви53 в принципе.
Так это как раз и была моя основная идея в данном начинании. Ну, может быть еще плюсом замена ВВ55+ВИ53 на аналоги в SO/PLCC/TQFP и абстрагирование процессора до модуля с ША+ШД+MEM/IO/RD/WR+CLK+READY+RESET.
Тогда появляется возможность использовать 8085 и Z80 тоже в SO-40/TQFP-44. Причем весь ассортимент комплектующих у меня есть. В планах также оставить СНП34 по ВУ/ПУ и интегрировать адаптер PS/2 клавиатуры на атмеге или (тоже проект зреет) USB клавиатуры на китайце CH558/CH559.
Где-то мы это уже обсуждали. С последовательным портом без FIFO и прерываний Вектор не много сможет сделать полезного.
Про ВН59 тоже думается... ;) Ну и, опять же, лишний последовательный порт еще никогда никому не мешал.
- - - Добавлено - - -
vm80a Vslav-a можно в тестбенче завести.
Я пока нуб в синтезе, поэтому сначала надо самому поковыряться и собрать все грабли.
USB клавиатуры на китайце CH558/CH559.
Это по-моему оптимальный вариант. PS/2 клавиатура свое уже пожила.
Это по-моему оптимальный вариант. PS/2 клавиатура свое уже пожила.
Дык уже:
http://ipic.su/img/img7/tn/IMG_20231109_221836.1699557699.jpg (http://ipic.su/img/img7/fs/IMG_20231109_221836.1699557699.jpg)
Нарисовал схему в KiCad, развел, заказал, платы приехали... А вот с прошивкой, пока все пока застопорилось.
Есть"the девборда" CH559, SDK с примерами и тулчейн, ядро внутри C51 (если ничего не напутал), добрые люди перевели даташит с китайского на английский,
что-то собирается и шьется по USB, блинк, короче работает.
Но инициализацию USB хоста этого чуда китайской инженерной мысли я так и не победил. Событие есть, но ни VID ни PID я прочитать пока не смог.
HW отладки нет, ком-порт какой-то вроде я прикрутил, туда и вывожу дебаг.
Примеры, как и всегда с китайским кодом - тупое наслоение всяких фекалий с комментами на китайском, отключенными по #if 0 блоками и прочим весельем.
Доведу Vector06c-neo до прототипа - вернусь доделывать это чудо.
Немного о том, зачем туда полез. USB хосты есть не везде, навскидку есть в некоторых 4XX камнях у STM32, но это совсем из пушки по воробьям, там
весь Вектор cо Спектрумом вместе в non-uniofied multiprocessor mode можно наэмулить. :v2_dizzy_roll: Столько дури не надо в простом адаптере.
Да и дорого и сложно сейчас с STM32. А вот CH558/559 показались перспективными, дешевыми и прямо просились заюзать.
Общий дизайн прост и прям, как ЖД рельса: СР559 делает USB хост, общается с HID, достает скан-коды и как-то их мапит в матрицу 16x8.
Матрица отображает, собственно, матричную клавиатуру с контактами! А вот отдается она в аналоговый матричный коммутатор (МТ8816),
на который и заведены строки и столбцы от обслуживаемого ретокомпа. Модуль делался универсальным: маппинг задается прошивкой,
подтяжки и развязывающие диоды можно ставить или не ставить уже по схемотехнике ретрокомпа, 5 дополнительных выходов с коммутацией
nmos транзисторами на землю тоже выведены - это наши УС/CC/РУС/ВВОД/СБР.
При таком подходе быстродействие контроллера может быть любым, не надо извращаться как с атмегой в известных схемах, пытаясь успеть от скана
до чтения значений из порта.
Вот это не оно разве? https://www.youtube.com/watch?v=po3FBdY0GS4 https://github.com/atc1441/CH559sdccUSBHost Утверждается, что все работает уже. Но я лично взял бы Pi Pico для этого просто потому что экосистема значительно более вменяемая.
Вот это не оно разве? https://www.youtube.com/watch?v=po3FBdY0GS4 https://github.com/atc1441/CH559sdccUSBHost Утверждается, что все работает уже. Но я лично взял бы Pi Pico для этого просто потому что экосистема значительно более вменяемая.
Этих товарищей я, конечно же видел, правда не помню, почему не начал основываться на их коде - мои платы уже полгода лежат,
а задумке и попытке накодить еще больше. Возможно,была мысль, что контроллер-то все равно осваивать самому,
плюс я сильно не люблю бездумное копи-паст программирование.
Остальная механика на стороне ретро у меня другая, т.е. все равно курить даташит и пробовать.
RPi Pico лежат две штуки, ждут. Но это ровно тоже самое, что поставить STM32F411 (если я правильно вспомнил конкретный младший
чип с USB хостом у CТМ) - из пушки по мелким птичкам.
PS: Про ком порт в Векторе. Если даже сделать телетайп-стай 75 бод на ВВ51, то это все равно будет полезно. Скорости хватит, а каналы во внешний
мир лишними никогда не бывают. Вспомните тот же kernel debugger у Майкрософта в Win 9x, когда весь инструментарий был на соседней машине
вовне пациента ;)
Извините за частичный оффтоп, но если уж хочется usb-клавиатуру и некий канал связи с внешним миром, то использование для этого соответствующего микроконтроллера в принципе может позволить еще и эмулировать контроллеры fdd и hdd (и наверно еще что-нибудь, надо подумать). Как понимаю это не соответствует идеологии данного проекта, но мне подобное решение представляется очень хорошим вариантом, если нужен максимум функционала и удобства при минимуме размера. Возможно кто-нибудь использует подобный подход в своем вариант реинкарнации вектора.
Возможно,была мысль, что контроллер-то все равно осваивать самому,
плюс я сильно не люблю бездумное копи-паст программирование.
Вот именно, что осваивать самому гораздо приятней контроллер с осмысленной документацией, поддерживаемым SDK и вменяемыми коллегами.
- - - Добавлено - - -
Извините за частичный оффтоп, но если уж хочется usb-клавиатуру и некий канал связи с внешним миром, то использование для этого соответствующего микроконтроллера в принципе может позволить еще и эмулировать контроллеры fdd и hdd (и наверно еще что-нибудь, надо подумать).
Видеовыход, например https://github.com/holmatic/video_if_ql_vga
Мдя. Плохо пока дизайн лезет в EPM128S. Еще нет регистра кваза (+6LC) и, собственно, маппера кваза (+?LC), 3х8 буферов временного запоминания байт видео перед сдвигами, возможные 2LC на попарно-пиксельные задержки для 512x256 и схему подстановки ПЗУ (2-3LC).
Занято 116/128LC. Пинов тоже мало остается 76/84. Поблочно ситуация следующая:
- D35/ИЕ7 - 6LC, нормально, поскольку клок не 12, а 48МГц.
- D36/РЕ3 - 9LC, средне, надо смотреть, что там Квартус напилил.
- D4-D5/старшее видео - 9LC, средне, должно быть 7 бит счетчиков и 7LC, туда я внес и D5.1 делящий до 7812.5Гц
- D6-D7/младшее видео - 9LC, триггеров 8, одна ячейка могла уйти на обратные связи.
- 4 сдвига по 8 бит - 32 LC, на симуляции пока неясно, как работают, тестбенч не написан.
- декодер IO съел 8LC, хотя чисто комбинаторный.
- мультиплексор RAM - 16LC. Фигня спорная. Втаскивать или не втаскивать всю CPU ША в CPLD - это открытый вопрос.
8 бит для декодера IO нужны все равно, для маппера кваза как RAM нужны еще минимум 2х бит адреса (A13/A14?),
дополнительно прямо тут есть идея как задешево сделать a-la Speccy 128 - 2 комплекта каждой страницы экрана.
Выводить все равно - 18 бит адреса SRAM для 512к чипа.
- счетчики скроллера D24/D25 - 16LC. Вообще на пустом месте... Понятно, конечно, что синтез на счетчиках с предзагрузкой
делает 8LC на загрузке и 8LC для счета.
Пока мысли следующие - вынести адресный мультиплексор CPU/Video и счетчики скроллера в жесткую логику,
второй кандидат - IO декодер, его отправить в GAL22V10.
Хоть и сумбурно, но, как-то так.
- - - Добавлено - - -
Пошел курить RTL Viewer и Chip Planner.
RPi Pico лежат две штуки, ждут. Но это ровно тоже самое, что поставить STM32F411 (если я правильно вспомнил конкретный младший
чип с USB хостом у CТМ) - из пушки по мелким птичкам.
ну так если они уже есть в наличии - попробуйте TinyUSB (https://github.com/raspberrypi/tinyusb). Работает как положено. Я адаптировал к спектруму в связке с CPLD - никаких вайтов и внутренних сигналов - тупо вместо родной матрицы клавиатуры..
Спасибо ivagor, svofski и backa за пинки в стороны RP2040/STM32F401.
Исходная идея с CH558/559 была найти максимально дешевый USB хост под клавиатуру. По пять штук чипы с али стоили по 80 рублей за старший. Оттого и занялся.
Сейчас курю даташит на RP2040, очень интересно они там напилили. Я не сильно шарю в контроллерах, но есть ощущение, что разработчики туда "дрожжей-то подкинули".
Выделенная QSFP под флеш с прямым исполнением, два M0 Core (и я пока не понимаю как там с ними работать, особенно при синхронизации), ну и PIO приколен изрядно.
Дабы не уходить от темы, вкину идею, применительно к Вектору (сама идея не моя, где-то встречал а просторах): что, если ловить конечным автоматом на PIO все записи
в видеопамять (как делал коллега Improver) и получить, тем самым, зеркало видеопамяти в SRAM RP2040. А отдавать оттуда куда-нибудь в UVC device. Там правда в спеке UVC 1.5
я не нашел прямых RGB форматов, поэтому придется в YUV конвертить, видимо.
Нафига? Уйти от стандартного видеовыхода и не пытаться вложить 312p/15625/50 в какой-то из VGA/VESA форматов (тем более что с 50 герцами кадровой и у ZX Evo были трудности
с подбором мониторов). Дрова для видеокамеры есть в любой системе сейчас, отдельного моника/ТV не надо. Компы есть везде.
Посему, вопросов к коллегам ровно два:
- стоит ли идея воплощения?
- сохранить ли при этом классический видеовыход?
- - - Добавлено - - -
Вдогонку. Вчера прикидывал простой апскейлинг разрешений Вектора на VGA/VESA форматы. Как там в мультике про щенка в деревне? "Много думал" (С)
Если я правильно понимаю задумку Темиразова с Соколовым, то оба растра, и 256x256 и 512x256 должны быть квадратными, с соотношением сторон 1:1
и квадратными пикселями для основного разрешения и 1:2 для 512 pix. Что ложится на стандартные 4:3 и целочисленный дабблинг не очень хорошо.
Из того, что более-менее целочисленно подошло для основного разрешения - 1024x768@60Hz с пиксельклоком в 65MHz, что уже напрягает. Вертикально - 3x,
горизонтально тоже 3x c полями по 128 точек слева и справа. Соотношение сторон должно сохраниться. Но в эту схему плохо помещается 512х256.
Горизонтально можно сделать 2х и попасть нормально, но уплывет соотношение сторон.
Есть еще VESA 768x576@60Hz. По вертикали имеем двойное сканирование в 512 линий всегда и по 32 неиспользуемых линии сверху и снизу.
По горизонтали - 512 точек в 512 режиме 2x для 256 точек и по 128 точек поля. Вроде в обоих случаях растр будет 1:1. Но вот какова поддержка
такого разрешения на устройствах?
Так и возникла идея хватать записи в видеопамять и делать из них нечто типа video-over-usb, которое в стандарте зовется UVC.
Вектор это только 50Гц. Любая попытка прикрутить его к 60 Гц приведет к морю слез. Зачем это нужно? Все телевизоры, которые понимают PAL сигнал, понимают 50Гц. Внутри себя они наверняка все приводят к 60, потому что они родом из NTSC-вселенной, где все кратно 60. Это крайне досадно, но раз уж они это делают -- пусть их, зачем самому пытаться в это встрять? Лучше никак не получится.
Пипико с задачей зеркалирования фреймбуфера наверное справится, если получится найти нужное количество пинов ввода-вывода. Если это делать на уровне записи в видеопамять и регистры, я чего-то так с ходу не представляю как это будет устроено. Если просто семплировать выходы РУ2 по внутреннему Векторовскому пиксельклоку, на первый взгляд задача выполнимая. И по-моему это более универсальное решение, которое можно распространить не только на Вектор.
Про QSPI (не уверен, что такое QSFP) под флеш в пипико не стоит особенно мечтать, логически она вся суть внутренний ресурс и присосаться к ней по-моему никак особенно не получится. Но можно реализовать что-то свое на PIO. Сделать дополнительную память на PSRAM по-моему тоже не получится. Вернее это можно, но будет страшно медленно. Если надо больше памяти, все-таки с esp32 сейчас трудно поспорить.
Два ядра на rp2040 -- проще не бывает. Берешь и запускаешь функцию во втором ядре и она там работает, пока не перестанет. Все настолько просто. Разумеется у двух ядер полная свобода вставлять друг другу палки в колеса. Чтобы было аккуратно для синхронизации есть специально оборудованные очереди.
Про правильное соотношение сторон по-моему лучше забыть, двух согласных по этому поводу на этом форуме во всяком случае не найдешь.
Сделать из Вектора USB-вебкамеру, это было бы ржачно.
> Сделать из Вектора USB-вебкамеру, это было бы ржачно.
Дык идея-то и пришла, именно в таком воплощении.
За QSPI vs QSFP, сорри, опечатался. В наших краях это как раз SFP/SFP+/QSFP/SFP28 и всё такое вплоть до ста гигабит в одной струе ;)
Тут, скорее про то, что разработчики поступили правильно - совсем обособив флеш. Везде, где встречал - наоборот: втащить! А ежели не лезет,
так у нас и постарше камушки есть... Сегментация рынка, туды её.
Я еще не весь мануал скурил, но с помощью PIO переварить обращения, я думаю, что можно.
Никто не запрещает воткнуть 3х 74164 на входе и латчить их по обращениям CPU, а уж из них последовательно добывать адрес и данные на запись.
Я так пытался эмулировать slave-side интеловские 8041/42 на атмеге... :D
- - - Добавлено - - -
Да, 50Гц - не обсуждается. Должно быть.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot