А что если вместо них использовать ЗПЗУ и СТЕК с шины ВУ? Может тогда и ещё один триггер можно будет убрать...
Вид для печати
Активный фронт (спад) этих сигналов приходит после спада сигнала CAS. А если не отключить БЛК ДО прихода CAS, то ОЗУ Вектора не получит вторую часть адреса вовремя. С этим уже сталкивался, когда на ПЛИСе БЛК запаздывал, и запись в ОЗУ Вектора сразу крашилась.
БЛК нужно выставлять во время активного уровня сигнала "СТРОБ СОСТ.", т.к. в некоторых циклах CAS приходит практически одновременно со спадом этого "СТРОБ СОСТ.".
Протестировал схему без контроля D6, всё работает.
Нужно удалить из схемы "U7B", и прокинуть ШД2 дальше на U7C.9, выложу исправленный вариант.
Скрытый текст
В принципе могу и кикадовскую выложить, если нужно.
Только я не нашел в стандартной библиотеке разъёма на 45 контактов, модифицировал первый попавшийся 40-ка контактный, и сохранил его вроде как в пользовательской библиотеке, но я понятия не имею, что это и где его искать, чтобы проект вообще открылся после переноса его на другой комп. Вроде видел какой-то текстовый "либ" в папке с проектом, но уверенности нет.[свернуть]
Вот блин, оказывается, что в схеме 6 элементов 2ИЛИ, а не 5 как я думал... от корпуса не отделаться...
Скрытый текст
Просто раньше вместо двух 2ИЛИ (последовательно получался один 3ИЛИ) я использовал три диода и резистор, получался импровизированный 3ИЛИ ;) ... резюк подтягивал вход приёмника сигнала к "0", а через диоды приходили "1".[свернуть]
В таких случаях можно использовать одиночные элементы логики, например 2ИЛИ 74LVC1G32.
Или два диода и резистор ;)
- - - Добавлено - - -
Прикол...
С подключенным модулем внешнего ПЗУ с внешним загрузчиком, на 02-ом Векторе, записал на КД os.com.
Забыл отключить модуль внешнего ПЗУ, перезагрузил Вектор... Штатный загрузчик обнаружил на КД os.com, загрузил его, ... произошел автозапуск, ... дело в свои руки взял внешний загрузчик, очистил экран, нарисовал новую загрузочную сетку, ... обнаружил на КД os.com, и честно отработал свой хлеб - снова загрузил с КД данные, заполнил загрузочную сетку и стал мигать РУС/ЛАТ-ом, что пора нажать БЛК+СБР ... все довольны ... :)
KTSerg, а как сейчас конструктивно оформлено одновременное подключение модуля ПЗУ, кваза и контроллера HDD (может еще и КНГМД) к вектору? Может сфотографировать или словами описать?
Вот в 20-ом году выкладывал фотки, своего варианта расширителя шины "ВУ".
Там 5 разъёмов, пока хватает.
https://zx-pk.ru/threads/29486-vekto...=1#post1081252
- - - Добавлено - - -
Мне кажется, что микрика/выключателя достаточно.
Может быть... А можно было бы сделать схему вот так, например:
Вложение 77210
Тем более, что есть один неиспользуемый триггер. :)
И что за сигнал получим на выходе?
Вроде просто делитель частоты.
Схема не самоблокитуется, с количеством нажатий ВВОД можно запутаться.
Если использовать СБРОС с контакта 41 разъёма ВУ, ни чего не получится, скорее всего, так как каждое нажатие ВВОД (сигнал "ввод сист." ), формирует сигнал "СБРОС".
Если использовать СБР.СИСТ с 36 контакта, можно думать.
Похоже, что это схема из симулятора. Собери весь узел формирования сигнала готовности. Который фактически является основой сигнала БЛК.
Не знаю.
Если есть желание, экспериментируй, отговаривать не буду.
Если получится более удобный в использовании вариант, буду только рад.
Да, именно -- делитель частоты со сбросом, на выходе которого после двух нажатий БЛК-ВВОД будет лог.1 (или лог.0, если надо). А дальше этот сигнал можно использовать в Вашей схеме для разблокировки внешнего ПЗУ и формирования БЛК.
Вряд ли можно запутаться в двух нажатиях, но можно также добавить светодиод, показывающий его состояние -- это же просто идея, а не окончательная схема. :)
Элементы U2 и U3 как раз обеспечивают то, чтобы сброс триггеров не происходил при одновременном появлении сигналов ВВОД и СБРОС. Тут ещё, для защиты от рассинхрона сигналов, на выходе U2 неплохо бы добавить конденсатор на массу, 0,1 мкф или около того...
Я это обязательно сделаю, но немного позже -- сейчас пока у меня нет возможности этим заняться.
Ну... Я просто предложил альтернативный вариант, рассмотреть его или отвергнуть -- Ваше право.
Сингал "СБРОС" (41 контакт) зависит от сигнала "ВВОД СИСТ." (39 контакт) , но они не одновременные.
"ВВОД СИСТ." - это шина клавиши "ВВОД+БЛК":
нажали "ВВОД+БЛК" - появился сигнал "ВВОД СИСТ.", через некоторое время появился сигнал "СБРОС" (41 контакт);
отпустили "ВВОД+БЛК" - сигнал "ВВОД СИСТ." пропал, а сигнал "СБРОС" (41 контакт) ещё некоторое время остаётся в активном состоянии "0".
То-же самое и с сигналом "СБРОС СИСТ." (36 контакт) - это шина клавиши "СБР+БЛК".
Сигнал "СБРОС СИСТ." (36 контакт), также формирует сигнал "СБРОС" (41 контакт), и тоже с задержкой.
Когда отпускаем "СБР+БЛК" - пропадает сигнал "СБРОС СИСТ." (36 контакт) - а сигнал "СБРОС" (41 контакт) ещё некоторое время остаётся в активном состоянии "0".
KTSerg, да, всё так, но есть один ньюанс: схема клавиатуры Вектора (и герконовой, и ёмкостной) сигнал "ВВОД СИСТ." не выдаёт без "СБРОС СИСТ.", возможны или оба сигнала, или только сброс. Вот их и использовать...
Уточню.
Вектор сам формирует сигнал "СБРОС" после появления входных для него (выходных с клавиатуры) сигналов "ВВОД СИСТ." или "СБРОС СИСТ.".
Так как и "ВВОД СИСТ.", и "СБРОС СИСТ." для Вектора входные, то они не зависят друг от друга и могут быть по отдельности.
Ещё раз, эти два сигнала "ВВОД СИСТ." и "СБРОС СИСТ." - отражают состояние клавиш и всё.
По любому из них, с задержкой формируется "СБРОС".
Не совсем так. "ВВОД СИСТ." всегда одновременно вызывает и "СБРОС СИСТ." и отдельно от сброса быть не может, так что полностью независимыми их не назовёшь. Посмотрите схему Вектора, чтобы в этом убедиться: в ёмкостной клавиатуре связь обеспечивается резисторами R55-R72-R73, а в герконовой диодом VD9.
Кажется до меня дошло, в чём задумка, активации при двойном ВВОД.
Пытался в Протеусе смоделировать, но вразумительных результатов пока не получил.
Замаялся жать кнопками зависимые ВводСист.->Сброс и СбросСист.->Сброс... очень внимание отвлекает от наблюдения за работой схемы.
Не смог нагуглить, есть ли в Протеусе готовый модуль/элемент/примитив "Delay" - для формирования задержки сигнала.
Понятно, что смоделировать можно огромным количеством способов.
Просто думал может уже готовый есть. Т.к. Протеусом пользуюсь так-же "часто" как и КиКадом...
- - - Добавлено - - -
Посмотрел.
Да согласен. Ошибался, что они независимы. И при нажатии ВВОД+БЛК синхронно формируется и сигнал "СБРОС СИСТ.".
Может именно из-за синхронности я им и не стал пользоваться. Так как использовать "СБРОС" с задержкой относительно "ВВОД СИСТ." для моих целей оказалось удобнее.
- - - Добавлено - - -
Но тогда в предложенном варианте, не имеет смысла заводить любой СБРОС на вход "R" триггеров. Так как ВВОД - порождает оба СБРОСа, один синхронно второй с небольшой задержкой. Значит делитель будет сбрасываться после каждого сигнала ВВОД, и досчитать до 2-ух ему не удастся.
Сбрасывать или блокировать счетчик нужно сигналом из самой схемы готовности модуля. Типа когда она уже сработала, может самим сигналом БЛК/ON_BLK, к которому ещё не подмешаны результаты контроля битов слова состояния.
- - - Добавлено - - -
Идею с активацией модуля внешнего ПЗУ при помощи двукратного последовательного нажатия ВВОД+БЛК, скорее всего, можно реализовать ТОЛЬКО подавая на шину разъёма "ВУ" внешний сигнал "СБРОС СИСТ." .
Так как нажатие ВВОД+БЛК однозначно активирует штатное ПЗУ загрузчика. А отключить его можно только сигналом "СБРОС СИСТ." . И только после отключения штатного ПЗУ, можно активировать внешнее ПЗУ.
Но.
Снова прихожу к необходимости отключения кнопкой внешнего ПЗУ.
Так как вполне может сложиться ситуация, когда пользователь, многократно нажимает ВВОД+БЛК с клавишами для загрузки из конкретного устройства, а при включенном внешнем ПЗУ, это будет приводить к путанице, т.к. в нём скорее всего будет другая прошивка, с другим набором устройств.
В мою схему скорее всего тоже нужно внести изменение, что-бы схема сама всегда после нажатия ВВОД+БЛК - подавала внешний сигнал "СБРОС СИСТ." - для перезапуска Вектора, отключения штатного ПЗУ (не давая ему ни чего сделать) и активации самого модуля внешнего ПЗУ.
Тогда будет всё очень просто, и для пользователя почти не заметно:
При выключенном модуле, всегда работает штатное ПЗУ загрузчика;
При включенном модуле, нажатие ВВОД+БЛК сразу активирует внешнее ПЗУ, СБР+БЛК - отключает модуль и запускает программу в ОЗУ.
Это будет очень похоже на обычную работу клавиш ВВОД+БЛК и СБР+БЛК.
Думаю этот вариант наиболее корректен в использовании.
Эта небольшая разница может легко компенсироваться упомянутым конденсатором на выходе U2, и сброс триггеров будет только при одиночном нажатии БЛК-СБРОС.
А вот этот момент я упустил... Точно же, внутреннее ПЗУ Вектора не отключается сигналом БЛК, как ОЗУ. Значит, без сброса тут не обойтись.
Это превосходное решение! Единственная проблема -- это надо будет как-то обеспечить небольшую задержку выдачи внешнего "СБРОС СИСТ." после завершения сигнала от нажатия БЛК-ВВОД, но эта проблема решаема.
- - - Добавлено - - -
Есть проблема серьёзней: с ёмкостной клавиатурой подача внешнего сигнала "СБРОС СИСТ." приведёт к тому, что выход микросхемы D13 будет коротиться на "0", возможен даже выход её из строя. Нужно будет делать диодную развязку в самом Векторе... С герконовой клавиатурой такой проблемы не будет.
Собрал в Протеусе новую схемку автоматического формирования сигнала "СБРОС СИСТ.", для активации внешней ПЗУ после нажатия ВВОД+БЛК.
В Протеусе работает, буду собирать в железе.
С формированием задержки сигнала в Протеусе оказалось всё до безобразия просто... видимо любой компонент может формировать задержку, если ему прописать нужный параметр... Взял элемент "НЕ", прописал ему параметры, и он стал задерживать сигнал хоть на мсек. Для реальной схемы это не применимо, но пригодилось для симуляции сигнала "СБРОС".
Печальные результаты сборки в железе схемы автосброса...
Оказалось, что при отпускании клавиш (ВВОД+БЛК) - герконы шумят как симфонический оркестр...
И продолжаться этот шум может и 10мс и 20мс...
Собранная схема автосброса инициализируется низким уровнем сигнала "ВВОД СИСТ." , и ожидается, что он закончится раньше чем закончится сигнал "СБРОС" - это нормальная работа алгоритма сброса Вектора.
Но оказывается, что если "ВВОД СИСТ." шумит более ~10мс, то уже заканчивается "СБРОС" и процессор начинает выполнять первые команды, я в схеме автосброса этот момент отлавливаю, генерирую "СБРОС СИСТ.", и тут приходит шум от "ВВОДА" и крашит состояние схемы перезапуска.
Пришлось значительно усложнить схему, но и это не помогло.
Пытался погасить шум на схеме внешнего ПЗУ, но гашение шума приводит к удлинению сигнала "ВВОД СИСТ.", и схема перестает работать.
Причем, для обладателей емкостных клавиатур, такой проблемы не будет, так как сигнал "ВВОД СИСТ." формируется с выхода микросхемы, и он всегда будет без шума. А вот с герконовой клавой попадос...
Мне не нравится идея лепить одновибратор на RC-цепочке, чтобы переждать шум сигнала "ВВОД"...
Подытожу... я психанул... перерезал на клаве дорожки от геркона клавиши "ВВОД", и подключил в разрыв микросхему 74hc132, нашел у себя мелкую для поверхностного монтажа только такую. Хотел 74hc14, но она нашлась только большая в DIP корпусе.
Сейчас сигнал "ВВОД СИСТ." - чистенький, как слеза... схема автосброса модуля внешнего ПЗУ срабатывает стабильно.
Переведу дух, начну обратно удалять из схемы все излишки, которыми пытался шум обойти/гасить...
Странно,как же тогда Вектор работает -- такой дребезг неизбежно должен приводить к проблемам при перезапусках... Вообще, насколько я помню схему, в Векторе сигналы ВВОД и СБРОС (системные) пропускаются через триггеры с тактовой частотой 50Гц, т.е. они удерживаются 1/50 сек = 20мс, так что шум короче этого времени должен подавляться. Там проблема, скорее всего, в другом: на герконовой клавиатуре при нажатии БЛК-ВВОД сигнал "СБРОС СИСТ." формируется через диод, а это значит его уровень будет ~ +1В от уровня сигнала "ВВОД СИСТ.", и, соответственно, при отпускании клавиш он раньше станет равным лог.1, со всеми вытекающими последствиями.
Для обладателей ёмкостных клавиатур приготовлена другая проблема, о чём я уже писал.
Эм... А разве 74132 с ОК на выходе? Там хотя бы диод с резистором надо бы впаять на выход, просто так коротить на 0 его не желательно.
Хорошо, ждём новую схему... :)
СБРОС - сформирован Вектором именно как тут написано, и он чистый. А "ВВОД СИСТ." - чисто клавиша.
Тот вариант схемы, что я выкладывал, не предусматривает перезапуска, а работает по принципу самого Вектора, и не зависит от дребезга.
В схеме авторестарта я формирую "СБРОС СИСТ.", а "ВВОД СИСТ." продолжает шуметь.
Не, я вижу шум от отпускания клавиши "ВВОД" на сигнале "СБРОС СИСТ.", попавший на него через диод.Цитата:
Там проблема, скорее всего, в другом: на герконовой клавиатуре при нажатии БЛК-ВВОД сигнал "СБРОС СИСТ." формируется через диод, а это значит его уровень будет ~ +1В от уровня сигнала "ВВОД СИСТ.", и, соответственно, при отпускании клавиш он раньше станет равным лог.1, со всеми вытекающими последствиями.
Когда пытался гасить шум в схеме модуля, то видел, что полученный "ВВОД" стал чище, а "СБРОС СИСТ." всё так-же с шумом, и можно было оценить результативность "фильтра".
Применяя 74hc14 или 74hc132 (если верить даташитам содержащих "Schmitt−Trigger" ), получал довольно чистый сигнал, но фронт (переход состояния) формировался значительно позднее чем нужно.
Да, я видел, и согласен, что это проблема.Цитата:
Для обладателей ёмкостных клавиатур приготовлена другая проблема, о чём я уже писал
Единственное оправдание, что обладатели емкостных клавиатур, уже хоть раз свой Вектор но вскрывали, что-бы обслужить/восстановить эту клаву. Значит если появится желание повторить, предложенный мною модуль внешнего ПЗУ, в версии именно с авторестартом, то впаять один диод в разрыв шины сигнала "СБРОС СИСТ.", думаю не будет большой проблемой.
А уже выложенный вариант, доработок вообще не требует.
Там не ОК, там "Schmitt−Trigger" - для подавления шума гистерезисом.Цитата:
Эм... А разве 74132 с ОК на выходе? Там хотя бы диод с резистором надо бы впаять на выход, просто так коротить на 0 его не желательно.
Вроде допилил схему.
Собрал в железе - работает и на простом Векторе и на 02-ом.
Не хотелось лепить схему на RC-цепочках, но пришлось собрать на них узел для подавления шума герконов.
Узлы автозапуска и шумоподавления добавили схеме сложности, и корпусов микросхем.
Желательно все неиспользуемые выводы "R" и "S" (триггеров ТМ2) притянуть к "+5".
Убрал со своей герконовой клавы доработку шумодава, узел в схеме модуля с этой задачей вполне справляется.
Хотя для обладателей емкостных клав он (узел шумодава в схеме модуля) скорее всего будет не актуален.
Но для использования этой схемы модуля с автозапуском, на Векторе с емкосной клавой, нужно будет в клаве впаять диод (катодом к клаве) в разрыв шины "СБРОС СИСТ." .
При штатной работе "модуля внешнего ПЗУ":
При нажатии ВВОД+БЛК - загорается светодиод D2, после отпускания ВВОД+БЛК - D2 гаснет, загорается светодиод D3. После СБР+БЛК - D3 тоже гаснет.
Фактически D2 - индикатор нажатия/удержания "ВВОД+БЛК", D3 - индикатор работы модуля (подмены ПЗУ).
Работа этого варианта схемы модуля, воспринимается как подмена штатного ПЗУ. Так как не нужно дополнительно что-то нажимать, да ещё в какой-то последовательности...
Просто:
ВВОД+БЛК - вместо штатного ПЗУ отрабатывает ПЗУ установленное на модуле.
СБР+БЛК - запускается программа из ОЗУ Вектора.
На старший адрес ПЗУ, повесил джампер. Не пропадать-же добру...
Залил в ПЗУ "загрузчик" и "тест 64Кб ОЗУ" Вектора. Джампером можно выбрать.
Во вложении схема.
Посмотрел я схему... Извиняюсь, но два каскада инверторов и RC-цепочек для гашения дребезга контактов, плюс три триггера для автосброса -- это что-то за гранью добра и зла... В общем, решил нарисовать что-то по-проще, и вот что у меня получилось:
https://i.ibb.co/QKL88pN/VU-ROM.png
Кратко, как работает схема:
1. Дребезг на линии "ВВОД СИСТ." гасится триггером U13:A, даже если дребезг продлится дольше, чем будет завершен сигнал "СБРОС", то это существенно не повлияет на работу схемы.
2. Триггер U13:B устанавливается в "1" сигналом "СБРОС", как только этот сигнал будет снят, триггер ожидает появления и окончания сигнала "СТРОБ", по завершении которого выдаётся сигнал "СБРОС СИСТ.".
3. Сигнал "СБРОС СИСТ." удерживается триггером U13:B до появления сигнала "СБРОС", после которого он инверсным выходом "/Q" разрешает сброс U13:A. В случае герконовой клавиатуры сигнал "СБРОС" будет сгенерирован схемой Вектора, а в случае ёмкостной потребуется нажать вручную "БЛК-СБРОС".
4. Все дальнейшие сигналы "СБРОС", "СБРОС СИСТ." и "СТРОБ" не влияют на выход схемы, до очередного появления сигнала "ВВОД СИСТ.", после чего цикл повторяется с п.1.
5. Перемычка JP4, фактически, отключает схему подключения внешнего ПЗУ -- при её отключении будет работать только внутреннее ПЗУ Вектора.
Вся остальная часть схемы оставлена, практически, без изменений, за исключением того, что я убрал ненужный элемент U7C (по схеме из pzu_vu_2.PNG) -- чип ПЗУ и так будет блокирован отсутствием сигнала /СЕ, нет смысла в дополнительном каскаде. Ещё бы из схемы убрать один триггер, но я пока не придумал, как...
И ещё, симулятор показывает, что данная схема при подаче питания будет включать внешнее ПЗУ: тогда будет срабатывать автосброс, а дальше триггерами U16 (они же U4 по схеме из pzu_vu_2.PNG) будет подключаться ПЗУ. Возможно, надо перемычку JP4 перенести в другое место, или просто после включения Вектора нажимать "БЛК-ВВОД", что, собственно, и так приходится делать.
Скорее всего может и заработать.
Я перебрал много вариантов работающих в симуляторе, но почему-то очень не стабильно работающих на реальном Векторе.
Единственное, что обязательно нужно исправить в предложенной схеме, это перенести формирование сигнала БЛК с выхода U14: C, на выход U14: D. Так как нельзя совмещать сигнал БЛК с сигналом RD_PZU.
Если БЛК будет активным только при чтении ПЗУ, то мы потеряем CAS, который без БЛК не попадает на "ВУ", а значит не сможем сформировать шину адреса для ПЗУ.
Попалась на глаза схема платы EPOS - расширения ВУ. И вспомнил, что на ней сигнал "СБРОС СИСТ." (также как и многие другие) проходит через ВА86. :(
Значит автосброс модуля не будет работать если используется плата EPOS.
Ещё одно ограничение для автосброса.
Поскольку герконовоя клава встречается очень редко, а тех, кто решит собрать и когда-либо использовать модуль внешнего ПЗУ - ещё меньше, то подумалось, что модуль может обойтись без автосброса. Проще схема - меньше мороки со сборкой.
В первом сообщении темы, выложу схему без автосброса.
Да, в этом есть смысл, спасибо.
Исправил схему:
https://i.ibb.co/RhXxyGf/VU-ROM.png
В таком варианте можно даже вместо ЧТЗУ использовать более адекватный сигнал CAS. :)
Да, и в этом варианте автосброс тоже не сработает. Но, думаю, лучше ориентироваться на схему с автосбросом -- она не намного сложнее, и помех особых не создаст. Единственное, надо бы проверить ток, который будет идти через диод D4 при автосбросе, главное, чтобы он не превысил предельно допустимый ток на выходе ВА86 или ТМ8 (в ёмкостной клавиатуре), возможно не помешает поставить последовательно с ним небольшой резистор.
Собрал-таки я модуль внешнего ПЗУ, по своей схеме. Правда, есть небольшие изменения, вот окончательный вариант схемы:
https://s1.hostingkartinok.com/uploa...452c0a728d.png https://s1.hostingkartinok.com/uploa...51218b36d6.png
Отличий от предыдущего варианта мало: добавил резистор в цепь сброса для ограничения тока до 0,01А, чтобы не спалить схему Вектора, и подключил вывод 4 триггера U16:A к линии сброса, чтобы при начальном включении не было конфликтов.
И, собственно, схема работает -- всё отключается/подключается, как задумано, программы из ПЗУ грузятся. Дребезг клавиатуры на ёмкостном варианте проверить не могу по причине его отсутствия, но, по идее он должен подавляться. Автосброс не могу проверить по той же причине, но на герконовой клавиатуре, по расчётам, линия "СБРОС СИСТ." должна просаживаться до 2В, этого, скорее всего, будет недостаточно для логического "0", но там можно закоротить резистор R11 перемычкой JP5.
А теперь ложка дёгтя: плата конфликтует с квази-диском, т.е. если её ставить в Вектор одну, то всё работает, а вместе с КД -- нет. По какой причине я пока ещё не понял, возможно линия БЛК через диод не достаточно зануляется, хотя на КД подтяжки к +5В нет и там на БЛК стоит элемент с открытым коллектором.
А я что-то уже не помню, почему в формировании RD_PZU используется CAS, а не из ЧТЗУ...