PDA

Просмотр полной версии : Вектор 06Ц: внешнее ПЗУ на шине "ВУ"



KTSerg
12.10.2020, 07:32
У svofski "Лешадок помпе" сидит на шине "ВУ", и эмулирует ПЗУ загрузчика.
Захотелось аналогично подключить внешнее ПЗУ загрузчика, так сказать без разборки Вектора, но относительно простыми средствами рассыпухи микросхем логики.

Первое что обнаружил, это сигнал CAS подаётся на "ВУ" только при наличии активного сигнала "БЛК" от внешнего устройства.
...

Добавлено:

Сообщение с вариантом схемы модуля внешнего ПЗУ с автостартом модуля.
Воспринимается пользователем как полная подмена штатного ПЗУ Вектора.
https://zx-pk.ru/threads/32321-vektor-06ts-vneshnee-pzu-na-shine-quot-vu-quot.html?p=1152018&viewfull=1#post1152018

Во вложении упрощенная схема без автостарта/автосброса, не требующая доработок самого Вектора. Запускается последовательным нажатием ВВОД+БЛК и СБР+БЛК. Отключается после очередного СБР+БЛК.

Improver
12.10.2020, 08:22
Первое что обнаружил, это сигнал CAS подаётся на "ВУ" только при наличии активного сигнала "БЛК" от внешнего устройства.Безусловно, на "первом" Векторе CAS на ВУ формируется в РЕ3, на "втором" -- логикой (Д97.3 в частности), в обоих случаях без БЛК сигнала CAS на ВУ не будет.

Потом (если это не так, то старшие товарищи меня поправят), на Векторах без доработок на ПЗУ 32кБ, при адресе обращения <1000h сигнал разрешения ПЗУ имеет приоритет по отношению к БЛК и блокирует обращение на чтение к памяти...

Как можно сформировать полноценный адрес из двух байт до чтения данных, если такая фигня с RAS/CAS ???Только подключаться к процессору напрямую, но тогда будет конфликт со встроенным ПЗУ. Другой вариант: написать свою прошивку ПЗУ для Вектора, которая будет проверять и передавать управление на внешнее ПЗУ на шине ВУ. :)

Нет, понятно, что можно по сбросу системы сбрасывать регистры формирующие адрес, но это-же просто полный...Адрес формируется в процессоре, при сбросе он =0000h, если что...

KTSerg
12.10.2020, 08:58
Безусловно, на "первом" Векторе CAS на ВУ формируется в РЕ3, на "втором" -- логикой (Д97.3 в частности), в обоих случаях без БЛК сигнала CAS на ВУ не будет.

Потом (если это не так, то старшие товарищи меня поправят), на Векторах без доработок на ПЗУ 32кБ, при адресе обращения <1000h сигнал разрешения ПЗУ имеет приоритет по отношению к БЛК и блокирует обращение на чтение к памяти...
Только подключаться к процессору напрямую, но тогда будет конфликт со встроенным ПЗУ. Другой вариант: написать свою прошивку ПЗУ для Вектора, которая будет проверять и передавать управление на внешнее ПЗУ на шине ВУ. :)
Адрес формируется в процессоре, при сбросе он =0000h, если что...
:):):)

Я решил сделать это так...
Запускается Вектор, ВВОД+БЛК - рестарт и запуск штатного загрузчика, сброс схемы моего ПЗУ в режим готовности.
СБР+БЛК - сброс и переход к выполнению программы из ОЗУ, моя схема формирует "БЛК" и начинает выдавать на ШД содержимое из своего (внешнего) ПЗУ.
Когда нужно перейти на выполнение реальной программы из ОЗУ, ещё раз нажимаем СБР+БЛК - сброс Вектора и начало выполнения программы из ОЗУ, моя схема внешнего ПЗУ отключается и переходит в спячку до следующего нажатия ВВОД+БЛК.

Фактически на ШАПП посадил две микросхемы регистров и записываю в них содержимое ШАПП по RAS и CAS соответственно.
Такая была идея... , "но что-то пошло не так"...
По данным логгера вижу, что программа из внешнего ПЗУ начинает выполняться, но потом, после начала записи данных в ОЗУ, зацикливается, т.к. команды из ПЗУ читаются не из тех адресов.

ivagor
12.10.2020, 10:30
Фактически на ШАПП посадил две микросхемы регистров и записываю в них содержимое ШАПП по RAS и CAS соответственно.
И все? А "перепутывание" и инверсии?

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

Можно по схеме посмотреть, но вот тут (https://zx-pk.ru/threads/28207-vremennye-diagrammy-vektora.html?p=970706&viewfull=1#post970706) есть сразу в более удобном виде

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

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

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

Заканчиваю капитанить, но все же еще один момент. Если объем пзу<=16 Кб, то можно взять младшую половину адреса с ШАВВ, а старшие 6 бит - стробированные RASом, т.е. в этом случае можно обойтись без CAS.

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


Если объем пзу<=16 Кб, то можно взять младшую половину адреса с ШАВВ, а старшие 6 бит - стробированные RASом, т.е. в этом случае можно обойтись без CAS.
Хотя нет, самый старший бит адреса нужен и без CAS не обойтись. Тем более сейчас стал смутно вспоминать, что вроде ШАВВ в векторе берут со старшей половины адреса

Improver
12.10.2020, 10:33
Фактически на ШАПП посадил две микросхемы регистров и записываю в них содержимое ШАПП по RAS и CAS соответственно.Там достаточно одной микросхемы, можно запоминать только один байт (8бит) по сигналу RAS, а по сигналу CAS формировать полный адрес, я так делал в своей схеме КД (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=996956&viewfull=1#post996956).

KTSerg
12.10.2020, 10:33
И все? А "перепутывание" и инверсии?

Можно по схеме посмотреть, но вот тут (https://zx-pk.ru/threads/28207-vremennye-diagrammy-vektora.html?p=970706&viewfull=1#post970706) есть сразу в более удобном виде

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

Заканчиваю капитанить, но все же еще один момент. Если объем пзу<=16 Кб, то можно взять младшую половину адреса с ШАВВ, а старшие 6 бит - стробированные RASом, т.е. в этом случае можно обойтись без CAS.

Перепутывание сделано уже с выхода регистров. Инверсия только одного бита, до записи в регистры.

К сожалению, на сколько я понял, младший байт адреса ШАПП состоит в основном из CAS, и только младшие два бита из RAS.

Со старшим байтом адреса вообще проблем нет, его можно взять с ШАВВ, даже записывать никуда не надо, только инвертировать.

ivagor
12.10.2020, 10:59
первый CAS приходит уже после того как прочитана первая команда программы из памяти, т.е. после сигнала "ЧТЗУ".
Как можно сформировать полноценный адрес из двух байт до чтения данных, если такая фигня с RAS/CAS ???
Сигнал чтения из памяти можно взять из слова состояния

KTSerg
12.10.2020, 12:19
Сигнал чтения из памяти можно взять из слова состояния
Слово состояния я уже использую, для того, чтобы отличать чтение ПЗУ (кода программы) от чтения данных из ОЗУ по тем-же адресам.

ivagor
12.10.2020, 14:14
Слово состояния я уже использую, для того, чтобы отличать чтение ПЗУ (кода программы) от чтения данных из ОЗУ по тем-же адресам.
Каким образом, если не секрет? M1 позволяет опознать чтение кода команды, что хватит для однобайтовых, а как с многобайтовыми типа lxi?

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

И еще не понимаю, зачем различать чтение пзу от чтения данных из озу по тем же адресам. Разве только для какой-то новой прошивки, в которой возможность читать из под пзу востребована. Можно детектить код команды и если, например команда mov a,m то следующее за чтением кода команды обращение (чтение) относится к озу. Можно завести под это дело отдельную пзушку и детектить и обрабатывать все команды, но это пожалуй чересчур.

KTSerg
12.10.2020, 15:46
Каким образом, если не секрет? M1 позволяет опознать чтение кода команды, что хватит для однобайтовых, а как с многобайтовыми типа lxi?
...
Поскольку штатные загрузчики ничего не читают из ОЗУ с адресов, где сами находятся, то пока подробности этой фичи упущу...
Да суть именно такая, ловлю в слове состояния подготовку к чтению команды, отлавливаю определённый код команды, при совпадении снимаю блокировку со следующего чтения для ОЗУ и отключаю на это время ПЗУ.

KTSerg
06.04.2022, 12:30
Параллельно с тестированием внешней ПЗУ, размышляю, о возможности конфликта между ним и квазидиском, так как оба являются источниками сигнала БЛК.
Если внешняя ПЗУ будет 32К, то проявится та-же проблема, когда данные файла os.com читаются с тех-же адресов КД, что и внешняя ПЗУ. Предположительно и решение может подойти аналогичное - контроль сигнала СТЕК, отключать ПЗУ при его активности.
Но мне интересно применение внешнего ПЗУ и для целей тестирования Вектора, когда сама программа находится именно на внешней ПЗУ подключенной к разъёму "ВУ". Когда теоретически возможно тестирование всей памяти.
Эта тема уже не однократно поднималась. Идеи были разные. Надо думать...

ivagor
06.04.2022, 13:12
Вроде уже вспоминал где-то, что есть дос FPH51N Филиппова/Фролова, у которого диск A - ПЗУ. Подробностей сейчас не помню, вроде там обращение было примерно аналогично квазу, возможно b2m помнит лучше.

Improver
06.04.2022, 17:25
Параллельно с тестированием внешней ПЗУ, размышляю, о возможности конфликта между ним и квазидиском, так как оба являются источниками сигнала БЛК.Конфликта по ШД не будет, если КД отключён, т.е. по OUT 10h записана конфигурация "0", а также сразу после сброса -- там конфигурация обнуляется аппаратно.

Единственное, на что нужно обратить внимание, чтобы в схеме ПЗУ сигнал БЛК формировался элементом с открытым коллектором, тогда и там проблем не будет. Кстати, у меня так два КД работают с БЛК...


Но мне интересно применение внешнего ПЗУ и для целей тестирования Вектора, когда сама программа находится именно на внешней ПЗУ подключенной к разъёму "ВУ". Когда теоретически возможно тестирование всей памяти.Теоретически как раз не возможно -- сигнал БЛК отключает внутреннюю память, а без него внешнее ПЗУ не заработает. :(

KTSerg
06.04.2022, 18:14
Конфликта по ШД не будет, если КД отключён, т.е. по OUT 10h записана конфигурация "0", а также сразу после сброса -- там конфигурация обнуляется аппаратно.
А если КД включен и с него нужно загрузить в ОЗУ Вектора файл os.com, в адреса, по которым находится работающая внешняя ПЗУ ?

Единственное, на что нужно обратить внимание, чтобы в схеме ПЗУ сигнал БЛК формировался элементом с открытым коллектором, тогда и там проблем не будет. Кстати, у меня так два КД работают с БЛК...
Я пошел обходным путём, впаял по диоду около разъёмов, в разрыв сигнала БЛК, на всех платах, получилась некая имитация выхода с ОК.


Теоретически как раз не возможно -- сигнал БЛК отключает внутреннюю память, а без него внешнее ПЗУ не заработает. :(
Это не совсем так.
Есть циклы чтения команд, есть циклы обращения к памяти.
Если в циклах чтения команд активировать БЛК, а в циклах обращения к памяти БЛК отключать, то программа будет читаться из внешней памяти а запись/чтение данных будет происходить в память Вектора.
Если утрировать и упростить ситуацию, то так работает КД, когда МикроДос расположен на КД в адресном пространстве экранной области. При этом МикроДос работает с данными, расположенными в ОЗУ Вектора, в другом адресном пространстве.

Improver
06.04.2022, 22:42
А если КД включен и с него нужно загрузить в ОЗУ Вектора файл os.com, в адреса, по которым находится работающая внешняя ПЗУ ?Думаю, такая ситуация не должна происходить, судя по описанию работы ПЗУ выше. Т.е. после БЛК+ВВОД стандартным загрузчиком может быть загружен OS.COM с КД в память, но в это время ПЗУ будет выключено. После БЛК+СБРОС включается ПЗУ, а квази-диск отключается, так ведь?

Может покажете Вашу схему ПЗУ на ВУ? Обдумаем тогда совместно...


Я пошел обходным путём, впаял по диоду около разъёмов, в разрыв сигнала БЛК, на всех платах, получилась некая имитация выхода с ОК.Тоже вариант.


Если в циклах чтения команд активировать БЛК, а в циклах обращения к памяти БЛК отключать, то программа будет читаться из внешней памяти а запись/чтение данных будет происходить в память Вектора.Да, такое возможно, но, мне кажется, схема ПЗУ с таким разделением доступа по циклам будет достаточно сложна, проще будет разделить память по сигналу СТЕК, он хотя бы есть на ВУ. :)

KTSerg
07.04.2022, 05:10
Думаю, такая ситуация не должна происходить, судя по описанию работы ПЗУ выше. Т.е. после БЛК+ВВОД стандартным загрузчиком может быть загружен OS.COM с КД в память, но в это время ПЗУ будет выключено. После БЛК+СБРОС включается ПЗУ, а квази-диск отключается, так ведь?
...
Не, совсем не то.
Штатным загрузчиком совсем ничего не загружается.
Нажимаем ВВОД+БЛК, можно сразу БЛК+СБР, при этом активируется внешняя ПЗУ подключенная к ВУ.
И начинает выполняться программа из внешней ПЗУ.
Для целей загрузчика достаточно если схема подключения внешней ПЗУ будет почти всегда держать активным сигнал БЛК - для чтения программы из ПЗУ, и отключая его в циклах "запись" и "стек" - для записи данных в ОЗУ и общения с КД.
После загрузки программы с внешнего носителя в память Вектора, ещё раз жмём БЛК+СБР и внешняя ПЗУ совсем отключается.

Improver
07.04.2022, 08:00
Не, совсем не то.
Штатным загрузчиком совсем ничего не загружается.Тогда мне не понятно, как это работает. Как можно отключить внутреннее ПЗУ с шины ВУ, после БЛК+ВВОД? На ПЗУ сиграл БЛК не влияет... Я думал, там стоит, например, триггер, которрый сбрасывается при "вводе" и устанавливается на первый "сброс" и включает подмену памяти по типу квази-диска. В общем, надо схему, хоть какую-нибудь...

KTSerg
07.04.2022, 08:31
Тогда мне не понятно, как это работает. Как можно отключить внутреннее ПЗУ с шины ВУ, после БЛК+ВВОД? ...
:)
Не сразу после БЛК+ВВОД, с после БЛК+ВВОД и БЛК+СБР.
Внутреннее ПЗУ отключается не с шины ВУ, а сам Вектор его отключает. Он думает, что нужно начать выполнять программу из своего ОЗУ, а я в это время подсовываю ему на ШД коды программы из внешнего ПЗУ, подключенного к шине на разъёме ВУ.

Improver
07.04.2022, 09:04
Не сразу после БЛК+ВВОД, с после БЛК+ВВОД и БЛК+СБР.Тогда кто там будет грузить OS.COM с КД? Сама прошивка из внешнего ПЗУ? Ну тогда этот момент надо просто предусмотреть в прошивке. :)

KTSerg
07.04.2022, 09:14
Тогда кто там будет грузить OS.COM с КД? Сама прошивка из внешнего ПЗУ? Ну тогда этот момент надо просто предусмотреть в прошивке. :)
Ну да.
К примеру, нашелся Вектор с родным штатным ПЗУ, в котором загрузка только с магнитофона... а вскрывать и перепаивать/менять штатную ПЗУ, по разным причинам, не хочется...
Подключаешь "бутерброд" из всевозможных контроллеров и блока внешнего ПЗУ, и получаешь "модернизированную" версию Вектора, с возможностью загрузки из всего, что душе угодно (предусмотренного во внешней ПЗУ).

Improver
07.04.2022, 09:32
KTSerg, хорошо, но схему "ПЗУ на ВУ" увидеть всё-таки хотелось бы. Я могу нарисовать свою, исходя из описанной логики работы она будет достаточно простой и без ПЛИС, думаю, даже хватит двух-трёх корпусов обычной логики на управление, плюс две восьмибитные защёлки на адрес, но не хотелось бы мешать реализации Ваших идей. :)

KTSerg
07.04.2022, 09:49
KTSerg, хорошо, но схему "ПЗУ на ВУ" увидеть всё-таки хотелось бы. Я могу нарисовать свою, исходя из описанной логики работы она будет достаточно простой и без ПЛИС, думаю, даже хватит двух-трёх корпусов обычной логики на управление, плюс две восьмибитные защёлки на адрес, но не хотелось бы мешать реализации Ваших идей. :)
Схема конечно есть, и она очень простая. Даже спаяна в железе на макетной плате... но не взлетело :(
Для выяснения причин, нужно было анализировать/сканировать одновременно много каналов, купленный логгер этого не мог сделать. Вот и пошел обходным путём, сначала сделал и протестировал сканер на 36 каналов, а сейчас навесил на него схему внешнего ПЗУ... изучаю...
Постоянно меняется часть связанная с формированием сигнала БЛК. Так как идут активные эксперименты.
Помимо описанной ранее ситуации с возможностью работы внешнего ПЗУ в качестве альтернативного загрузчика, очень хотелось-бы реализовать возможность работы внешнего ПЗУ в качестве носителя программы для тестирования всего объёма памяти Вектора.
Об этом я уже не однократно писал.
Очень полезно было-бы иметь возможность протестировать память, когда загрузчик не может ни чего загрузить, из-за сбоя ОЗУ.
А тут фактически загруженная "в теневую память" программа, расположенная не в ОЗУ, и тестируй на здоровье, так как и грузить то ничего не нужно :) При этом в самом Векторе ковырять ничего не нужно...

Improver
07.04.2022, 11:19
тестируй на здоровье, так как и грузить то ничего не нужно При этом в самом Векторе ковырять ничего не нужно...А вывод результатов тестирования как? Допустим, внутренняя память Вектора не исправна, значит картинки на ТВ не будет. Внешний логический анализатор? Вариант, но он делает ПЗУ на ВУ не самодостаточным... Раз уж там есть ПЛИС, может сделать ещё вывод на простой двухстрочный ЖКИ?

KTSerg
07.04.2022, 12:18
А вывод результатов тестирования как? Допустим, внутренняя память Вектора не исправна, значит картинки на ТВ не будет. Внешний логический анализатор? Вариант, но он делает ПЗУ на ВУ не самодостаточным... Раз уж там есть ПЛИС, может сделать ещё вывод на простой двухстрочный ЖКИ?
Хотелось-бы повторяемости, значит без ПЛИС.
Варианты вывода результатов обсуждались в теме по "Тестовое ПЗУ".
Предложений накидали много. Возможны и шириной линий бордюра, и миганием Рус/Лат, и выдавать тики на магнитофонный выход, и вывод на разъём "ПУ"... может ещё чего запамятовал...
Если делать самодостаточный модуль тестирования ОЗУ, на него можно 8 светодиодв прилепить, привязать их к портам, переключать номер линии. Но светодиоды можно и к ПУ подключить, тут уже и порты стандартные.

KTSerg
08.04.2022, 07:07
Добрался до "полевых испытаний", и вдруг оказалось, что для 02-го, единственное отличие ПЗУ-х это наличие во внешнем загрузчике контроллера HDD, а он (сам контроллер) почему-то не работает, хотя убирал в рабочем состоянии.
А на простом Векторе уже стоит ПЗУ на 32К, там всё есть, и отличить, с какой ПЗУ что-то грузится сложно. Сначала нужно установленную в Вектор ПЗУ с загрузчиком переписать на версию с минимальными возможностями.
Всё какие-то "палки в колёса", как езда на велосипеде по бурелому...

KTSerg
09.04.2022, 07:49
Так.
Модуль "внешнего ПЗУ на разъёме ВУ" работает.
Причём на простом Векторе вообще не капризный, работает как часы.
А вот на 02-ом пришлось задрать тактовую до 200МГц и использовать в буферизации сигналов шины Вектора два регистра (пробовал и один и три) последовательно (не помню как их в хелпах называют).
В простой Вектор поставил на место штатного ПЗУ загрузчик 512байт, и внешним загрузчиком грузился с ЛВС, 0-модема, ПЗУ-на ПУ.
На 02-ом, подключил КД, закатал на него МикроДос, и с ПЗУ на ВУ грузится с КД.
Обнаружился интересный эффект... т.к. на 02-ом есть автозапуск, который срабатывает когда штатный загрузчик заканчивает загрузку и пытается моргнуть индикатором Рус/ЛАТ, то при использовании внешнего загрузчика - автозапуск не происходит, просто мигает Рус/Лат, как на простом Векторе. Нажимаешь БЛК/СБР - видно, что внешнее ПЗУ уходит в спячку, а загруженная программа стартует.

Много слов... на эмоциях...
Эксперимент показал, что схема работает, для использования в качестве альтернативного загрузчика.
Можно перепаять железный вариант.
В принципе, если во внешнее ПЗУ залить тест ОЗУ, который для чтения ОЗУ использует операции со стеком, а не LDAX/LHLD (и другие не стековые), то и тест ОЗУ сможет тестировать всё адресное пространство ОЗУ, т.к. внешняя ПЗУ отключается на время активности сигнала СТЕК.

Пошел паять железо...

ivagor
09.04.2022, 08:08
т.к. внешняя ПЗУ отключается на время активности сигнала СТЕК.
Интересно, т.е. нельзя стеком (например POPом) прочитать из внешнего ПЗУ?

KTSerg
09.04.2022, 08:15
Интересно, т.е. нельзя стеком (например POPом) прочитать из внешнего ПЗУ?
В данном случае нет, а что, нужно читать РОР-ом из внешнего ПЗУ?

ivagor
09.04.2022, 09:04
KTSerg, осторожно поздравляю с укрощением внешнего загрузчика, в принципе очень полезная для реальщиков штука. Но и шадок и данный вариант требуют циклона, не знаю насколько они доступны сейчас и будут в обозримом будущем.
Насчет чтения стеком из внешнего пзу - не то, чтобы это было позарез надо, просто отметил для себя.

KTSerg
09.04.2022, 10:18
... Но и шадок и данный вариант требуют циклона, не знаю насколько они доступны сейчас и будут в обозримом будущем.
...
Проект на Альтере, просто из-за относительной простоты модификации схемы... задолбался проводки перепаивать на пакетной плате...

Реальная схема, на данный момент содержит:
ПЗУ W27C512 - 1шт (64Кб просто была под рукой)
74 нс574 - 2шт (ИР37) (сохранять RAS, CAS)
ТМ2 - 2шт (активация/деактивация модуля)
ЛН1 - 1шт
74ас32 - 2шт (лог И)
светодиод - 2шт (индикация состояния модуля)
микрик с фиксацией - 1шт (совсем отключить модуль)

ivagor
09.04.2022, 11:03
Т.е. будет вариант без плис? Если да, то круто, дополнительный респект.

KTSerg
09.04.2022, 11:31
Т.е. будет вариант без плис? Если да, то круто, дополнительный респект.
:)
"Внешнее ПЗУ на разъёме ВУ", в том числе и как загрузчик, изначально и задумывался без ПЛИС на рассыпухе.
На ПЛИС пришлось делать, что-бы понять, почему не заработало, и как правильно сформировать сигнал БЛК.

KTSerg
10.04.2022, 09:40
В железе модуль внешнего ПЗУ тоже работает!
И с КД грузит.
Текущая на данный момент, рабочая схема в прицепе.

ivagor
10.04.2022, 10:13
Получается в свое время можно было обходиться без замены загрузчика в векторе, если добавить подобный блок пзу к квазу или КНГМД. И "официальные" возможности расширения вектора довольно значительные, а тут оказывается еще и скрытые резервы были.

KTSerg
11.04.2022, 05:49
Фактически на ШАПП посадил две микросхемы регистров и записываю в них содержимое ШАПП по RAS и CAS соответственно.
И все? А "перепутывание" и инверсии?
Так и не понятно, почему на всех схемах Вектора ШАП на разъёме "ВУ" обозначена как инверсная...
При сохранении ШАП в регистрах по RAS/CAS нужно инвертировать только ШАП7. А если предполагается использовать ПЗУ до 8КБ включительно, то ШАП7 вообще не нужен, а оставшиеся биты ШАП используются в прямом виде.
Упускаю тот факт, что для записи в регистры, сами управляющие сигналы RAS/CAS нужно инвертировать, но это просто от используемых регистров зависит. Есть регистры, которые спадом фиксируют инфу. Хотя справедливости ради, нужно сказать, что для данного применения такие регистры не подходят. Лучше использовать регистры с фиксацией по фронту и инвертировать RAS/CAS.

Improver
11.04.2022, 09:59
Так и не понятно, почему на всех схемах Вектора ШАП на разъёме "ВУ" обозначена как инверсная...Смею процитировать это:

В двух словах:
RA = {a9,a10,a11,a12,a13,a1,a2,~a14}
CA = {a3,a4,a5,a6,a7,a8,a16,~a15}
Но, по большому счёту, это не проблема -- думаю, проще будет пересортировать прошивку ПЗУ в соответствии с этим порядком адресных линий, чем аппаратно что-то исправлять.

А в общем схема мне нравится, думаю, её надо повторить... :)

KTSerg
11.04.2022, 10:11
... -- думаю, проще будет пересортировать прошивку ПЗУ в соответствии с этим порядком адресных линий, чем аппаратно что-то исправлять.
Не самый удобный вариант - сортировать прошивку.

Когда прошивка стандартная, а сортировка выполнена схемно, то можно взять уже готовую ПЗУ с другого компа, вотнкуть в модуль и оно будет работать. В противном случае нужно больше манипуляций для замены одного ПЗУ на другое.
Я вот например вынул ПЗУ загрузчика из простого Вектора (там загрузчик на 32К), воткнул в модуль и протестировал. Не задумываясь, что данные нужно перемешать и ПЗУ перепрошить...
Микросхема ПЗУ, это не ОЗУшка, при разводке платы для которой можно и шину адреса перемешать, и в шине данных биты перемешать, для удобства разводки платы... Можно конечно и для ПЗУ перемешать, потом утилиту написать, для преобразования файла перед прошивкой его в ПЗУ данной конкретной платы... если раз и на всегда... а если ещё раз понадовится прошивку поменять, а утилита затеряется... снова разбираться в мешанине и новую утилиту писать...


А в общем схема мне нравится, думаю, её надо повторить... :)
Спасибо на добром слове.
Не очень мне нравится КиКад... схемы рисовать... может из-за того, что пользуюсь им раз в несколько лет...

Improver
11.04.2022, 11:33
Не самый удобный вариант - сортировать прошивку.Это да, если вручную...

Я ещё раз взгянул на схему -- там адреса уже пересортированы, так что проблем, оказывается, нет.:)

Но есть маленькое предложение... Вывод А15 на U1 (ПЗУ) можно было бы подключить через джампер и переключать "верхние/нижние" 32 кб. памяти на ПЗУ, записывать туда разные прошивки. Можно, конечно, сделать и программное переключение, но особой необходимости в этом нет.

KTSerg
11.04.2022, 12:07
Это да, если вручную...

Я ещё раз взгянул на схему -- там адреса уже пересортированы, так что проблем, оказывается, нет.:)

Но есть маленькое предложение... Вывод А15 на U1 (ПЗУ) можно было бы подключить через джампер и переключать "верхние/нижние" 32 кб. памяти на ПЗУ, записывать туда разные прошивки. ...
Можно и джампер поставить, тут нет ограничений фантазии.
У меня первоначально вообще использовалось только 4КБ, и старшие 4 бита адреса были заземлены. Но когда перепаивал схему, вспомнил, что у меня есть готовая ПЗУ на 32КБ с загрузчиком в простом Векторе. Для неё и развёл адреса. И ещё одна микросхема "ИЛИ" освободилась, я в ней старшие биты ШАВВ смешивал, для отключения сигнала БЛК на адресах выше 4КБ.

Перелопатил тест ОЗУ, используя для чтения памяти команду POP PSW.
В эмуляторе вроде работает. Не понятно только как на реальном Векторе протестировать неисправность ОЗУ... коротить и резать дорожки не очень хочется...

KTSerg
12.04.2022, 21:16
В схеме модуля внешнего ПЗУ, похоже есть избыточный контроль.
В приведённой ранее схеме, отслеживается состояние трёх бит (шины данных) в слове состояния, для отключения сигнала БЛК:
D1 - цикл записи, нужен.
D2 - цикл со стековой операцией, нужен.
D6 - цикл чтения из порта ввода-вывода, скорее всего не нужен.

Думаю контроль состояния бита D6 можно исключить из схемы, тогда можно будет избавиться от одной из двух микросхем "ИЛИ", т.к. в одной из них используется только один элемент.
На свой плате уже сделал такую доработку, испытаю по возможности.
Сейчас "крыша едет" от контроллера HDD... который работать отказывается :(

Improver
12.04.2022, 23:48
D1 - цикл записи, нужен.
D2 - цикл со стековой операцией, нужен.
А что если вместо них использовать ЗПЗУ и СТЕК с шины ВУ? Может тогда и ещё один триггер можно будет убрать...

KTSerg
13.04.2022, 05:06
А что если вместо них использовать ЗПЗУ и СТЕК с шины ВУ? Может тогда и ещё один триггер можно будет убрать...
Активный фронт (спад) этих сигналов приходит после спада сигнала CAS. А если не отключить БЛК ДО прихода CAS, то ОЗУ Вектора не получит вторую часть адреса вовремя. С этим уже сталкивался, когда на ПЛИСе БЛК запаздывал, и запись в ОЗУ Вектора сразу крашилась.
БЛК нужно выставлять во время активного уровня сигнала "СТРОБ СОСТ.", т.к. в некоторых циклах CAS приходит практически одновременно со спадом этого "СТРОБ СОСТ.".

Протестировал схему без контроля D6, всё работает.
Нужно удалить из схемы "U7B", и прокинуть ШД2 дальше на U7C.9, выложу исправленный вариант.
В принципе могу и кикадовскую выложить, если нужно.
Только я не нашел в стандартной библиотеке разъёма на 45 контактов, модифицировал первый попавшийся 40-ка контактный, и сохранил его вроде как в пользовательской библиотеке, но я понятия не имею, что это и где его искать, чтобы проект вообще открылся после переноса его на другой комп. Вроде видел какой-то текстовый "либ" в папке с проектом, но уверенности нет.

Вот блин, оказывается, что в схеме 6 элементов 2ИЛИ, а не 5 как я думал... от корпуса не отделаться...
Просто раньше вместо двух 2ИЛИ (последовательно получался один 3ИЛИ) я использовал три диода и резистор, получался импровизированный 3ИЛИ ;) ... резюк подтягивал вход приёмника сигнала к "0", а через диоды приходили "1".

Improver
13.04.2022, 07:14
Вот блин, оказывается, что в схеме 6 элементов 2ИЛИ, а не 5 как я думал... от корпуса не отделаться...В таких случаях можно использовать одиночные элементы логики, например 2ИЛИ 74LVC1G32 (https://www.chipdip.ru/product/sn74lvc1g32dbvr).

KTSerg
13.04.2022, 07:56
В таких случаях можно использовать одиночные элементы логики, например 2ИЛИ 74LVC1G32 (https://www.chipdip.ru/product/sn74lvc1g32dbvr).
Или два диода и резистор ;)

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

Прикол...
С подключенным модулем внешнего ПЗУ с внешним загрузчиком, на 02-ом Векторе, записал на КД os.com.
Забыл отключить модуль внешнего ПЗУ, перезагрузил Вектор... Штатный загрузчик обнаружил на КД os.com, загрузил его, ... произошел автозапуск, ... дело в свои руки взял внешний загрузчик, очистил экран, нарисовал новую загрузочную сетку, ... обнаружил на КД os.com, и честно отработал свой хлеб - снова загрузил с КД данные, заполнил загрузочную сетку и стал мигать РУС/ЛАТ-ом, что пора нажать БЛК+СБР ... все довольны ... :)

ivagor
13.04.2022, 10:21
KTSerg, а как сейчас конструктивно оформлено одновременное подключение модуля ПЗУ, кваза и контроллера HDD (может еще и КНГМД) к вектору? Может сфотографировать или словами описать?

Improver
13.04.2022, 10:53
Прикол...Може стоит изменить логику включения внешнего ПЗУ? Например, сделать так, чтобы она включалось после двухкратного подряд нажатия на БЛК-ВВОД...

KTSerg
13.04.2022, 11:29
KTSerg, а как сейчас конструктивно оформлено одновременное подключение модуля ПЗУ, кваза и контроллера HDD (может еще и КНГМД) к вектору? Может сфотографировать или словами описать?

Вот в 20-ом году выкладывал фотки, своего варианта расширителя шины "ВУ".
Там 5 разъёмов, пока хватает.
https://zx-pk.ru/threads/29486-vektor-06ts-rasshiritel-sistemnoj-shiny-elka.html?p=1081252&viewfull=1#post1081252

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


Може стоит изменить логику включения внешнего ПЗУ? Например, сделать так, чтобы она включалось после двухкратного подряд нажатия на БЛК-ВВОД...
Мне кажется, что микрика/выключателя достаточно.

Improver
13.04.2022, 16:36
Мне кажется, что микрика/выключателя достаточно.Может быть... А можно было бы сделать схему вот так, например:
77210
Тем более, что есть один неиспользуемый триггер. :)

KTSerg
13.04.2022, 19:44
Может быть... А можно было бы сделать схему вот так, например:
77210
Тем более, что есть один неиспользуемый триггер. :)
И что за сигнал получим на выходе?
Вроде просто делитель частоты.
Схема не самоблокитуется, с количеством нажатий ВВОД можно запутаться.
Если использовать СБРОС с контакта 41 разъёма ВУ, ни чего не получится, скорее всего, так как каждое нажатие ВВОД (сигнал "ввод сист." ), формирует сигнал "СБРОС".
Если использовать СБР.СИСТ с 36 контакта, можно думать.
Похоже, что это схема из симулятора. Собери весь узел формирования сигнала готовности. Который фактически является основой сигнала БЛК.

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

Improver
13.04.2022, 22:19
И что за сигнал получим на выходе?
Вроде просто делитель частоты.Да, именно -- делитель частоты со сбросом, на выходе которого после двух нажатий БЛК-ВВОД будет лог.1 (или лог.0, если надо). А дальше этот сигнал можно использовать в Вашей схеме для разблокировки внешнего ПЗУ и формирования БЛК.


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


Если использовать СБРОС с контакта 41 разъёма ВУ, ни чего не получится, скорее всего, так как каждое нажатие ВВОД (сигнал "ввод сист." ), формирует сигнал "СБРОС".
Если использовать СБР.СИСТ с 36 контакта, можно думать.Элементы U2 и U3 как раз обеспечивают то, чтобы сброс триггеров не происходил при одновременном появлении сигналов ВВОД и СБРОС. Тут ещё, для защиты от рассинхрона сигналов, на выходе U2 неплохо бы добавить конденсатор на массу, 0,1 мкф или около того...


Похоже, что это схема из симулятора. Собери весь узел формирования сигнала готовности. Который фактически является основой сигнала БЛК.Я это обязательно сделаю, но немного позже -- сейчас пока у меня нет возможности этим заняться.



Не знаю.
Если есть желание, экспериментируй, отговаривать не буду.Ну... Я просто предложил альтернативный вариант, рассмотреть его или отвергнуть -- Ваше право.

KTSerg
14.04.2022, 04:28
...
Элементы U2 и U3 как раз обеспечивают то, чтобы сброс триггеров не происходил при одновременном появлении сигналов ВВОД и СБРОС. Тут ещё, для защиты от рассинхрона сигналов, на выходе U2 неплохо бы добавить конденсатор на массу, 0,1 мкф или около того...
...
Сингал "СБРОС" (41 контакт) зависит от сигнала "ВВОД СИСТ." (39 контакт) , но они не одновременные.
"ВВОД СИСТ." - это шина клавиши "ВВОД+БЛК":
нажали "ВВОД+БЛК" - появился сигнал "ВВОД СИСТ.", через некоторое время появился сигнал "СБРОС" (41 контакт);
отпустили "ВВОД+БЛК" - сигнал "ВВОД СИСТ." пропал, а сигнал "СБРОС" (41 контакт) ещё некоторое время остаётся в активном состоянии "0".

То-же самое и с сигналом "СБРОС СИСТ." (36 контакт) - это шина клавиши "СБР+БЛК".
Сигнал "СБРОС СИСТ." (36 контакт), также формирует сигнал "СБРОС" (41 контакт), и тоже с задержкой.
Когда отпускаем "СБР+БЛК" - пропадает сигнал "СБРОС СИСТ." (36 контакт) - а сигнал "СБРОС" (41 контакт) ещё некоторое время остаётся в активном состоянии "0".

Improver
14.04.2022, 05:15
KTSerg, да, всё так, но есть один ньюанс: схема клавиатуры Вектора (и герконовой, и ёмкостной) сигнал "ВВОД СИСТ." не выдаёт без "СБРОС СИСТ.", возможны или оба сигнала, или только сброс. Вот их и использовать...

KTSerg
14.04.2022, 06:02
KTSerg, да, всё так, но есть один ньюанс: схема клавиатуры Вектора (и герконовой, и ёмкостной) сигнал "ВВОД СИСТ." не выдаёт без "СБРОС СИСТ.", возможны или оба сигнала, или только сброс. Вот их и использовать...

Уточню.
Вектор сам формирует сигнал "СБРОС" после появления входных для него (выходных с клавиатуры) сигналов "ВВОД СИСТ." или "СБРОС СИСТ.".

Так как и "ВВОД СИСТ.", и "СБРОС СИСТ." для Вектора входные, то они не зависят друг от друга и могут быть по отдельности.
Ещё раз, эти два сигнала "ВВОД СИСТ." и "СБРОС СИСТ." - отражают состояние клавиш и всё.
По любому из них, с задержкой формируется "СБРОС".

Improver
14.04.2022, 07:51
Так как и "ВВОД СИСТ.", и "СБРОС СИСТ." для Вектора входные, то они не зависят друг от друга и могут быть по отдельности.Не совсем так. "ВВОД СИСТ." всегда одновременно вызывает и "СБРОС СИСТ." и отдельно от сброса быть не может, так что полностью независимыми их не назовёшь. Посмотрите схему Вектора, чтобы в этом убедиться: в ёмкостной клавиатуре связь обеспечивается резисторами R55-R72-R73, а в герконовой диодом VD9.

KTSerg
14.04.2022, 08:56
Кажется до меня дошло, в чём задумка, активации при двойном ВВОД.

Пытался в Протеусе смоделировать, но вразумительных результатов пока не получил.

Замаялся жать кнопками зависимые ВводСист.->Сброс и СбросСист.->Сброс... очень внимание отвлекает от наблюдения за работой схемы.

Не смог нагуглить, есть ли в Протеусе готовый модуль/элемент/примитив "Delay" - для формирования задержки сигнала.
Понятно, что смоделировать можно огромным количеством способов.
Просто думал может уже готовый есть. Т.к. Протеусом пользуюсь так-же "часто" как и КиКадом...

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


Не совсем так. "ВВОД СИСТ." всегда одновременно вызывает и "СБРОС СИСТ." и отдельно от сброса быть не может, так что полностью независимыми их не назовёшь. Посмотрите схему Вектора, чтобы в этом убедиться: в ёмкостной клавиатуре связь обеспечивается резисторами R55-R72-R73, а в герконовой диодом VD9.
Посмотрел.
Да согласен. Ошибался, что они независимы. И при нажатии ВВОД+БЛК синхронно формируется и сигнал "СБРОС СИСТ.".
Может именно из-за синхронности я им и не стал пользоваться. Так как использовать "СБРОС" с задержкой относительно "ВВОД СИСТ." для моих целей оказалось удобнее.

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

Но тогда в предложенном варианте, не имеет смысла заводить любой СБРОС на вход "R" триггеров. Так как ВВОД - порождает оба СБРОСа, один синхронно второй с небольшой задержкой. Значит делитель будет сбрасываться после каждого сигнала ВВОД, и досчитать до 2-ух ему не удастся.
Сбрасывать или блокировать счетчик нужно сигналом из самой схемы готовности модуля. Типа когда она уже сработала, может самим сигналом БЛК/ON_BLK, к которому ещё не подмешаны результаты контроля битов слова состояния.

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

Идею с активацией модуля внешнего ПЗУ при помощи двукратного последовательного нажатия ВВОД+БЛК, скорее всего, можно реализовать ТОЛЬКО подавая на шину разъёма "ВУ" внешний сигнал "СБРОС СИСТ." .
Так как нажатие ВВОД+БЛК однозначно активирует штатное ПЗУ загрузчика. А отключить его можно только сигналом "СБРОС СИСТ." . И только после отключения штатного ПЗУ, можно активировать внешнее ПЗУ.

Но.
Снова прихожу к необходимости отключения кнопкой внешнего ПЗУ.
Так как вполне может сложиться ситуация, когда пользователь, многократно нажимает ВВОД+БЛК с клавишами для загрузки из конкретного устройства, а при включенном внешнем ПЗУ, это будет приводить к путанице, т.к. в нём скорее всего будет другая прошивка, с другим набором устройств.

В мою схему скорее всего тоже нужно внести изменение, что-бы схема сама всегда после нажатия ВВОД+БЛК - подавала внешний сигнал "СБРОС СИСТ." - для перезапуска Вектора, отключения штатного ПЗУ (не давая ему ни чего сделать) и активации самого модуля внешнего ПЗУ.

Тогда будет всё очень просто, и для пользователя почти не заметно:
При выключенном модуле, всегда работает штатное ПЗУ загрузчика;
При включенном модуле, нажатие ВВОД+БЛК сразу активирует внешнее ПЗУ, СБР+БЛК - отключает модуль и запускает программу в ОЗУ.
Это будет очень похоже на обычную работу клавиш ВВОД+БЛК и СБР+БЛК.

Думаю этот вариант наиболее корректен в использовании.

Improver
14.04.2022, 10:03
Так как ВВОД - порождает оба СБРОСа, один синхронно второй с небольшой задержкой. Значит делитель будет сбрасываться после каждого сигнала ВВОД, и досчитать до 2-ух ему не удастся.Эта небольшая разница может легко компенсироваться упомянутым конденсатором на выходе U2, и сброс триггеров будет только при одиночном нажатии БЛК-СБРОС.


Так как нажатие ВВОД+БЛК однозначно активирует штатное ПЗУ загрузчика.А вот этот момент я упустил... Точно же, внутреннее ПЗУ Вектора не отключается сигналом БЛК, как ОЗУ. Значит, без сброса тут не обойтись.


В мою схему скорее всего тоже нужно внести изменение, что-бы схема сама всегда после нажатия ВВОД+БЛК - подавала внешний сигнал "СБРОС СИСТ." - для перезапуска Вектора, отключения штатного ПЗУ (не давая ему ни чего сделать) и активации самого модуля внешнего ПЗУ.Это превосходное решение! Единственная проблема -- это надо будет как-то обеспечить небольшую задержку выдачи внешнего "СБРОС СИСТ." после завершения сигнала от нажатия БЛК-ВВОД, но эта проблема решаема.

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

Есть проблема серьёзней: с ёмкостной клавиатурой подача внешнего сигнала "СБРОС СИСТ." приведёт к тому, что выход микросхемы D13 будет коротиться на "0", возможен даже выход её из строя. Нужно будет делать диодную развязку в самом Векторе... С герконовой клавиатурой такой проблемы не будет.

KTSerg
15.04.2022, 06:20
Собрал в Протеусе новую схемку автоматического формирования сигнала "СБРОС СИСТ.", для активации внешней ПЗУ после нажатия ВВОД+БЛК.
В Протеусе работает, буду собирать в железе.

С формированием задержки сигнала в Протеусе оказалось всё до безобразия просто... видимо любой компонент может формировать задержку, если ему прописать нужный параметр... Взял элемент "НЕ", прописал ему параметры, и он стал задерживать сигнал хоть на мсек. Для реальной схемы это не применимо, но пригодилось для симуляции сигнала "СБРОС".

KTSerg
17.04.2022, 13:36
Печальные результаты сборки в железе схемы автосброса...

Оказалось, что при отпускании клавиш (ВВОД+БЛК) - герконы шумят как симфонический оркестр...
И продолжаться этот шум может и 10мс и 20мс...
Собранная схема автосброса инициализируется низким уровнем сигнала "ВВОД СИСТ." , и ожидается, что он закончится раньше чем закончится сигнал "СБРОС" - это нормальная работа алгоритма сброса Вектора.

Но оказывается, что если "ВВОД СИСТ." шумит более ~10мс, то уже заканчивается "СБРОС" и процессор начинает выполнять первые команды, я в схеме автосброса этот момент отлавливаю, генерирую "СБРОС СИСТ.", и тут приходит шум от "ВВОДА" и крашит состояние схемы перезапуска.
Пришлось значительно усложнить схему, но и это не помогло.
Пытался погасить шум на схеме внешнего ПЗУ, но гашение шума приводит к удлинению сигнала "ВВОД СИСТ.", и схема перестает работать.

Причем, для обладателей емкостных клавиатур, такой проблемы не будет, так как сигнал "ВВОД СИСТ." формируется с выхода микросхемы, и он всегда будет без шума. А вот с герконовой клавой попадос...

Мне не нравится идея лепить одновибратор на RC-цепочке, чтобы переждать шум сигнала "ВВОД"...

Подытожу... я психанул... перерезал на клаве дорожки от геркона клавиши "ВВОД", и подключил в разрыв микросхему 74hc132, нашел у себя мелкую для поверхностного монтажа только такую. Хотел 74hc14, но она нашлась только большая в DIP корпусе.
Сейчас сигнал "ВВОД СИСТ." - чистенький, как слеза... схема автосброса модуля внешнего ПЗУ срабатывает стабильно.
Переведу дух, начну обратно удалять из схемы все излишки, которыми пытался шум обойти/гасить...

Improver
17.04.2022, 18:04
Но оказывается, что если "ВВОД СИСТ." шумит более ~10мс, то уже заканчивается "СБРОС" и процессор начинает выполнять первые команды, я в схеме автосброса этот момент отлавливаю, генерирую "СБРОС СИСТ.", и тут приходит шум от "ВВОДА" и крашит состояние схемы перезапуска.Странно,как же тогда Вектор работает -- такой дребезг неизбежно должен приводить к проблемам при перезапусках... Вообще, насколько я помню схему, в Векторе сигналы ВВОД и СБРОС (системные) пропускаются через триггеры с тактовой частотой 50Гц, т.е. они удерживаются 1/50 сек = 20мс, так что шум короче этого времени должен подавляться. Там проблема, скорее всего, в другом: на герконовой клавиатуре при нажатии БЛК-ВВОД сигнал "СБРОС СИСТ." формируется через диод, а это значит его уровень будет ~ +1В от уровня сигнала "ВВОД СИСТ.", и, соответственно, при отпускании клавиш он раньше станет равным лог.1, со всеми вытекающими последствиями.


Причем, для обладателей емкостных клавиатур, такой проблемы не будет, так как сигнал "ВВОД СИСТ." формируется с выхода микросхемы, и он всегда будет без шума.Для обладателей ёмкостных клавиатур приготовлена другая проблема, о чём я уже писал.


Подытожу... я психанул... перерезал на клаве дорожки от геркона клавиши "ВВОД", и подключил в разрыв микросхему 74hc132Эм... А разве 74132 с ОК на выходе? Там хотя бы диод с резистором надо бы впаять на выход, просто так коротить на 0 его не желательно.


Переведу дух, начну обратно удалять из схемы все излишки, которыми пытался шум обойти/гасить...Хорошо, ждём новую схему... :)

KTSerg
17.04.2022, 18:51
Странно,как же тогда Вектор работает -- такой дребезг неизбежно должен приводить к проблемам при перезапусках...
Вообще, насколько я помню схему, в Векторе сигналы ВВОД и СБРОС (системные) пропускаются через триггеры с тактовой частотой 50Гц, т.е. они удерживаются 1/50 сек = 20мс, так что шум короче этого времени должен подавляться.
СБРОС - сформирован Вектором именно как тут написано, и он чистый. А "ВВОД СИСТ." - чисто клавиша.
Тот вариант схемы, что я выкладывал, не предусматривает перезапуска, а работает по принципу самого Вектора, и не зависит от дребезга.
В схеме авторестарта я формирую "СБРОС СИСТ.", а "ВВОД СИСТ." продолжает шуметь.

Там проблема, скорее всего, в другом: на герконовой клавиатуре при нажатии БЛК-ВВОД сигнал "СБРОС СИСТ." формируется через диод, а это значит его уровень будет ~ +1В от уровня сигнала "ВВОД СИСТ.", и, соответственно, при отпускании клавиш он раньше станет равным лог.1, со всеми вытекающими последствиями.
Не, я вижу шум от отпускания клавиши "ВВОД" на сигнале "СБРОС СИСТ.", попавший на него через диод.
Когда пытался гасить шум в схеме модуля, то видел, что полученный "ВВОД" стал чище, а "СБРОС СИСТ." всё так-же с шумом, и можно было оценить результативность "фильтра".
Применяя 74hc14 или 74hc132 (если верить даташитам содержащих "Schmitt−Trigger" ), получал довольно чистый сигнал, но фронт (переход состояния) формировался значительно позднее чем нужно.

Для обладателей ёмкостных клавиатур приготовлена другая проблема, о чём я уже писал
Да, я видел, и согласен, что это проблема.
Единственное оправдание, что обладатели емкостных клавиатур, уже хоть раз свой Вектор но вскрывали, что-бы обслужить/восстановить эту клаву. Значит если появится желание повторить, предложенный мною модуль внешнего ПЗУ, в версии именно с авторестартом, то впаять один диод в разрыв шины сигнала "СБРОС СИСТ.", думаю не будет большой проблемой.
А уже выложенный вариант, доработок вообще не требует.


Эм... А разве 74132 с ОК на выходе? Там хотя бы диод с резистором надо бы впаять на выход, просто так коротить на 0 его не желательно.

Там не ОК, там "Schmitt−Trigger" - для подавления шума гистерезисом.

KTSerg
20.04.2022, 19:43
Вроде допилил схему.
Собрал в железе - работает и на простом Векторе и на 02-ом.

Не хотелось лепить схему на RC-цепочках, но пришлось собрать на них узел для подавления шума герконов.
Узлы автозапуска и шумоподавления добавили схеме сложности, и корпусов микросхем.
Желательно все неиспользуемые выводы "R" и "S" (триггеров ТМ2) притянуть к "+5".
Убрал со своей герконовой клавы доработку шумодава, узел в схеме модуля с этой задачей вполне справляется.
Хотя для обладателей емкостных клав он (узел шумодава в схеме модуля) скорее всего будет не актуален.
Но для использования этой схемы модуля с автозапуском, на Векторе с емкосной клавой, нужно будет в клаве впаять диод (катодом к клаве) в разрыв шины "СБРОС СИСТ." .

При штатной работе "модуля внешнего ПЗУ":
При нажатии ВВОД+БЛК - загорается светодиод D2, после отпускания ВВОД+БЛК - D2 гаснет, загорается светодиод D3. После СБР+БЛК - D3 тоже гаснет.
Фактически D2 - индикатор нажатия/удержания "ВВОД+БЛК", D3 - индикатор работы модуля (подмены ПЗУ).

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

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

Во вложении схема.

Improver
25.04.2022, 15:53
Во вложении схема.Посмотрел я схему... Извиняюсь, но два каскада инверторов и RC-цепочек для гашения дребезга контактов, плюс три триггера для автосброса -- это что-то за гранью добра и зла... В общем, решил нарисовать что-то по-проще, и вот что у меня получилось:

https://i.ibb.co/QKL88pN/VU-ROM.png (https://ibb.co/QKL88pN)

Кратко, как работает схема:
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 перенести в другое место, или просто после включения Вектора нажимать "БЛК-ВВОД", что, собственно, и так приходится делать.

KTSerg
26.04.2022, 05:03
Посмотрел я схему...
В общем, решил нарисовать что-то по-проще, и вот что у меня получилось:
...
Скорее всего может и заработать.
Я перебрал много вариантов работающих в симуляторе, но почему-то очень не стабильно работающих на реальном Векторе.

Единственное, что обязательно нужно исправить в предложенной схеме, это перенести формирование сигнала БЛК с выхода U14: C, на выход U14: D. Так как нельзя совмещать сигнал БЛК с сигналом RD_PZU.
Если БЛК будет активным только при чтении ПЗУ, то мы потеряем CAS, который без БЛК не попадает на "ВУ", а значит не сможем сформировать шину адреса для ПЗУ.

Попалась на глаза схема платы EPOS - расширения ВУ. И вспомнил, что на ней сигнал "СБРОС СИСТ." (также как и многие другие) проходит через ВА86. :(
Значит автосброс модуля не будет работать если используется плата EPOS.
Ещё одно ограничение для автосброса.
Поскольку герконовоя клава встречается очень редко, а тех, кто решит собрать и когда-либо использовать модуль внешнего ПЗУ - ещё меньше, то подумалось, что модуль может обойтись без автосброса. Проще схема - меньше мороки со сборкой.

В первом сообщении темы, выложу схему без автосброса.

Improver
26.04.2022, 09:58
Единственное, что обязательно нужно исправить в предложенной схеме, это перенести формирование сигнала БЛК с выхода U14: C, на выход U14: D. Так как нельзя совмещать сигнал БЛК с сигналом RD_PZU.Да, в этом есть смысл, спасибо.

Исправил схему:
https://i.ibb.co/RhXxyGf/VU-ROM.png (https://ibb.co/RhXxyGf)

В таком варианте можно даже вместо ЧТЗУ использовать более адекватный сигнал CAS. :)


Значит автосброс модуля не будет работать если используется плата EPOS.
Ещё одно ограничение для автосброса.Да, и в этом варианте автосброс тоже не сработает. Но, думаю, лучше ориентироваться на схему с автосбросом -- она не намного сложнее, и помех особых не создаст. Единственное, надо бы проверить ток, который будет идти через диод D4 при автосбросе, главное, чтобы он не превысил предельно допустимый ток на выходе ВА86 или ТМ8 (в ёмкостной клавиатуре), возможно не помешает поставить последовательно с ним небольшой резистор.

Improver
21.07.2022, 09:55
Собрал-таки я модуль внешнего ПЗУ, по своей схеме. Правда, есть небольшие изменения, вот окончательный вариант схемы:

https://s1.hostingkartinok.com/uploads/thumbs/2022/07/76fe47636e8e4c37a41f01452c0a728d.png (https://hostingkartinok.com/show-image.php?id=76fe47636e8e4c37a41f01452c0a728d) https://s1.hostingkartinok.com/uploads/thumbs/2022/07/6ffeaedd9d40028420a37951218b36d6.png (https://hostingkartinok.com/show-image.php?id=6ffeaedd9d40028420a37951218b36d6)

Отличий от предыдущего варианта мало: добавил резистор в цепь сброса для ограничения тока до 0,01А, чтобы не спалить схему Вектора, и подключил вывод 4 триггера U16:A к линии сброса, чтобы при начальном включении не было конфликтов.

И, собственно, схема работает -- всё отключается/подключается, как задумано, программы из ПЗУ грузятся. Дребезг клавиатуры на ёмкостном варианте проверить не могу по причине его отсутствия, но, по идее он должен подавляться. Автосброс не могу проверить по той же причине, но на герконовой клавиатуре, по расчётам, линия "СБРОС СИСТ." должна просаживаться до 2В, этого, скорее всего, будет недостаточно для логического "0", но там можно закоротить резистор R11 перемычкой JP5.

А теперь ложка дёгтя: плата конфликтует с квази-диском, т.е. если её ставить в Вектор одну, то всё работает, а вместе с КД -- нет. По какой причине я пока ещё не понял, возможно линия БЛК через диод не достаточно зануляется, хотя на КД подтяжки к +5В нет и там на БЛК стоит элемент с открытым коллектором.

KTSerg
21.07.2022, 10:52
А я что-то уже не помню, почему в формировании RD_PZU используется CAS, а не из ЧТЗУ...