Важная информация
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Вариант контроллера PS/2 для БК

  1. #1
    Member
    Регистрация
    29.01.2013
    Адрес
    Москва
    Сообщений
    50
    Благодарностей: 101

    По умолчанию Вариант контроллера PS/2 для БК


    Пустая панелька и кучка деталей вокруг нее не используются. Были нужны для отладки.

    История создания и описание


    Это эмулятор ВП1-14 и прилегающих регистров БК с использованием ПС/2 клавиатуры. Изначально планировался полноценный контроллер ПС/2, с двусторонним обменом с БК сканкодами, новым вектором прерывания, программным управлением фичами. Но в мелкую ЦПЛД оно не влезло, ставить большую – совсем не экономно, а дополнять плату еще 5-6 корпусами регистров – лень (надо заказывать ПП, а это опять не экономно). И, главное – нафиг оно никому не надо. В итоге получилась урезанная версия, однако, эмулирующая ВП1-14 и еще несколько сопутствующих битов АП БК.
    Теоретически, доработать до полноценного контроллера можно, но вот нужно ли?
    Основные элементы конструкции:
    - АТМЕГА8, работающая на 16 МГц;
    - CPLD на 64 макроячейки EPM7064SLC-10;
    - 74LS27;
    - кварц на 16 МГц и несколько дискретных элементов;
    - два разъема ДИН-64

    Основные задачи, решаемые устройством:
    - клава БК, даже новая, ущербная и дребезжащая. Кроме того, после ПС-шной раскладки, работать на ней неудобно. Говорят, пленки и сами клавиши уже в дефиците. А кое-где исчезли и ВП1-14.
    - существующая схема подключения ПС/2 клавы не предполагает замены ВП1-14, и обрабатывает «СТОП» через реле, что не очень здорово.
    - это была единственная периферия БК, не смоделированная автором на новой элементной базе. Таким образом, кроме ВМ1, вся обвязка БК может быть выполнена на кЕтайских комплектующих.
    [свернуть]

    Технические характеристики


    Со стороны ПС/2:
    - сброс и инициализация клавы; двусторонний обмен с ней
    - обработка всех поступающих сканкодов, в т.ч. такого ада, как Break и PrintScreen.
    - возможность выбора переключения раскладки по ctrl-shift и alt-shift
    - автоповтор при нажатой клавише
    - зажигание светодиодов, куда ж без них )))
    Со стороны БК:
    - обработка клавиши «СТОП» двумя способами: выдачей вектора VIRQ 000004 и импульсом (подробнее – ниже)
    - Эмуляция регистров ВП1-14: 177660 и 177662
    - эмуляция бита 06 регистра 177716 (клавиша нажата) и 012го бита того же регистра – блокировка прерывания от «СТОП»)
    - выдача векторов прерывания – 4, 60, 274
    - перезагрузка БК по CTRL-ALT-DEL
    [свернуть]

    Соответствие клавиш БК – ПС


    Esc – КТ
    F1 – ПОВТ
    F2 – -|->
    F3 – |<--
    F4 – |-->
    F5 – ИНД СУ
    F6 – БЛК РЕД
    F7 – ШАГ
    F8 – СБР
    F9-F12 – ничего
    Printscreen – ничего не происходит, но запрос обрабатывается.
    Scroll Lock – ничего не происходит, но светодиодик зажигается и гаснет
    Pause/Break – «СТОП»
    CapsLock – он и есть капслок
    Ctrl – СУ
    Alt – АР2
    Insert – хз что за клавиша, посылает код 13
    Home – ВС
    Page Up – хз что за клавиша, посылает код 16
    Page Down – хз что за клавиша, посылает код 7
    Delete – |<--
    END – хз что за клавиша, посылает код 6
    Numlock – перевод циферной клавиатуры в клаву управления, светодиод зажигается.
    В режиме нумлок клавиши соответствуют тому, что на них нарисовано. Клавиша 5 – КТ.
    CTRL-ALT-DELETE работает для любого DELETE – и отдельного, и на циферной клавиатуре. Нумлок не влияет.
    WIN LEFT – РУС, с переключением раскладки клавы
    WIN RIGHT – ЛАТ, с переключением раскладки клавы
    В основном соответствует клавишам по эмулятору Калмыкова. Но некоторые, кажущиеся более логичными вещи – заменены

    Теоретически, раскладка изменяема - в рамках записей таблицы перекодировки в ЕЕПРОМ. Но не все клавиши там прошиты, большинство управляющих клавиш обрабатываются программно и изменить их нельзя.
    [свернуть]

    Доработка БК


    К сожалению, просто включить в МПИ и радоваться не получилось. Мысль была, что при нажатой клавише ШАГ, в регистре 662 будет 0, но при этом 0 будет и в бите 06 регистра 716. Это оказалось совсем не так. С регистром 716 проблем не было, а в 662 было рандомное число.
    Вообщем, ВП1-14 придется отключить. Причем, одна из ВП1-14 срала на шину, даже при отключенном (и подтянутом к +5В) выводе 30 (CS). Посему, просто отсоедините вывод 42 ВП1-14 от +5В. Можете посадить его на выключатель.
    Плохая новость в том, что без ВП1-14 БК не запустится. Для запуска необходимо подключить данное устройство (ну или обратно подключить ВП1-14).
    Если у Вас нет ВП1-14, то и не надо. Убедитесь только, что резистор R4 (во всех БК он R4) запаян.
    Следующая проблема – клавиша «СТОП». Эмуляция по VIRQ – это, конечно, здорово, но проблема в том, векторное прерывание – оно маскируемо и зачастую БК этим балуется. Например, при загрузке с магнитной ленты. Вероятно, при работе с дисководом тоже. Так что просто так Вы уже не выйдете. Если не охота дорабатывать, и кнопка «СТОП» есть на основной клаве (без ВП1-14 она работает), можете пользоваться ей. Если хочется аутентичности при работе с ПС/2 клавой, необходимо вывод 1 D1.1 (ЛН1) БК соединить со свободным выводом МПИ, а со стороны устройства к этому же выводу присоединить вывод 16 АТМЕГи. Таким образом контроллер будет посылать короткий импульс на вход Д1.1, имитируя нажатие клавиши «СТОП». По-другому никак – ни HALT, ни его засинхронизированная на CLC версия на МПИ не выведены.
    При этом нужно выбрать режим работы контроллера перемычкой (проверяется при включении, менять в процессе работы нельзя)
    Также перемычкой на тех же условиях выбирается способ переключения раскладки CTRL-SHIFT или ALT-SHIFT.
    [свернуть]

    Схема устройства



    Несмотря на кажущуюся сложность, все вполне паябельно МГТФом (с его зачисткой) за 1 вечер, если делать один разъем МПИ. Если делать елку и 2 – то за 2 вечера. Главное не запутаться в выводах ПЛИС и МПИ.
    [свернуть]

    Известные косяки


    Все основные косяки связаны с особенностями архитектуры БК и/или его ПО.
    - клавиша "/"/"|" (в русской раскладке ПС "") - при переводе в "РУС" БК выдает букву Э. Это связано с особенностью драйвера БК, который код слеша в русском режиме не воспринимает. А локально переводить из рус в лат и потом обратно - слишком много чести. Прямой слэш всегда есть в английской раскладке )))
    - если программа БК не обрабатывает ЛАТ/РУС, а Вы переключили раскладку (например, в мониторе БК11), Вы получите английскую раскладку БК ))) Лечится обратным переводом раскладки. В БК ВП1-14 передает всего 128 кодов, а остальное делает драйвер. Контроллер клавы же переключает раскладку внутри себя каждый раз, он не знает, что там на стороне БК и знать не может.
    - косяк с таймингами шины. Из-за того, что разные процессоры и разные платы показали разное время задержки СИНКа и ДИНа, пришлось сделать переключатель таймингов и вывести их наружу. Подбирать экспериментально на конкретном экземпляре БК. На БК-10 с 3 МГц у меня пошло при TIM0 – замкнут, TIM1 – рамкнут. На БК-11 с 4 МГц и на ней же с 6 МГц - TIM0 – замкнут, TIM1 – замкнут. Но, чую, что дело не в частотах, а в конкретной плате и процессоре. Возможно, БК при неправильных таймингах не будет даже запускаться (но врядли). Как проверить – запустить в бейсике программу:
    10 ? oct$(PEEK(&O177662))
    20 goto 10
    И нажимать на клавиши – должны высвечиваться коды клавиш. Если будет выдавать ошибку – это не Ваши тайминги, возьмите другие (всего 4 варианта и есть). Проверить в течение нескольких минут для уверенности.
    Заодно проверить и 177716:
    10 ? oct$(PEEK(&O177716))
    20 goto 10
    При нажатии и отпускании любой буквенной клавиши значение должно меняться.
    Еще можно проверить в играх, и вообще по работе подобрать наиболее удачный вариант. Тайминги можно менять при включенной БК и работающих программах. Учитываем, что замкнуто – 0, разомкнуто – 1. 0(TIM1)0(TIM0) – самоe быстрое, для 6 МГц, и далее – по убывающей. 01 – типа 4 МГц (хотя на 4х и при 00 работало), 10 – 3 МГц, 11 – предположим, 2 МГц. Если работает – оставляйте. Лучше не будет, не пытайтесь. Это, значит, именно Ваш.
    - поскольку реализован запрет прерывания от «СТОПа», как в БК11(М) (которого нет в БК-10), при работе через вектор 000004, при операциях с 012м битом регистра 177716 возможно отключение прерывания по СТОП. Лечение – или пользуйтесь режимом импульса, или не лазьте в этот бит )))

    Косяки с пс/2 клавами.
    Несмотря на то, что устройство обеспечивает принудительную инициализацию клавиатуры, даже если она не ответила с первого раза, не все клавиатуры смогли запуститься с ним.
    Были проверены:
    Genius KB220e (разъем ПС/2) - совместима
    Logitech (разъем УСБ) – не запустилась
    Genius KB06X (разъем ПС/2) – пустилась, работала, но не мигала светодиодами. Однако с ПС она тоже вела себя странно, есть подозрение на неисправность самой клавиатуры.
    [свернуть]

    Варианты поставки


    Исходников не будет.
    Прошивка для АТмеги8 (программа и ЕЕПРОМ (перекодировка ПС-БК), писать и то, и другое):
    PS2_BK_ATMEGA.zip
    Прошивка ЕПМ7064:
    ps2_cpld.zip
    Фьюзы АТМЕГИ:

    Некоторые узлы ПЛИС (может, помогут кому в дальнейших разработках):
    Узел задержки управляющих сигналов (SYNC_RES(ET) - импульс сброса защелок адреса после переднего фронта SYNCa):

    Узел управления векторного прерывания (одного, в ус-ве соединены последовательно для двух прерываний (4 и 60/274) - см.ниже):

    Общая схема для информации - остальные узлы стандартные, смысла приводить их нет:

    Проект закрыт, развития не будет.
    [свернуть]
    Последний раз редактировалось kisser81; 21.11.2016 в 12:30.

  2. Эти 7 пользователя(ей) поблагодарили kisser81 за это полезное сообщение:
    CodeMaster (22.09.2016), Ewgeny7 (22.09.2016), hobot (22.09.2016), MM (22.09.2016), Terra (22.09.2016), vazman (22.09.2016), Vslav (22.09.2016)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Veteran Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    1,291
    Благодарностей: 1764

    По умолчанию

    > Учитывая крайне сильную заинтересованность народа
    А разве есть сильная заинтересованность? У меня сейчас челнок плат готовится в производство, я хотел туда платку аналогичного проекта на STM32+EPM3032 - делает точно то же самое, но с USB клавой и в формате замены самой 014-ой - садится на ее место. А раз такой проект появился уже готовый, то задумался, стОит ли мне изготавливать платку под мой.

  5. Этот пользователь поблагодарил Vslav за это полезное сообщение:
    Ewgeny7 (22.09.2016)

  6. #3
    Veteran Аватар для MM
    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    1,140
    Благодарностей: 557

    По умолчанию

    1. Звонок на МПИ БК - он вовсе не меньше, чем на др. ДПП с 1801/1806 сериями, т.е. Ч_У_Д_О_В_И_Щ_Н_Ы_Й. Например, SYNC на БК0011/М имеет отрицательную иголку единицы нс - т.е., если кратко - от Б22 до входа в новодел - резистор МЛТ-0.125 200 ом, далее конденсатор КМ5А 51 пф ( не менее )на общий, - далее - стандартное обрабатывание сигнала SYNC в соответствии с ГОСТ( для пассивного устройства ). Внутри БИС 1801-й серии с входом "SYNC" используются конструктивные особенности структур для реализации аналогичной цепочки ( черепашье быстродействие ).
    В самой БК0011М применяется цепочка из R66 100 ом и С51 330 пф .
    2. Если ВП1-014 при установленном фиксированном "+5в." на выв.30 "CS" срет на МПИ по своим рабочим битам ( особенно в БК0010 , в БК0011-там немного навеса есть на эти адреса )- то ВП1-014 - безусловно под замену. Рекомендуемый способ отключения ВП1-014-- в разрез выв. 30 и др.элементов конструктива М-ЭВМ установить резистор МЛТ-0.125 2 ком, и проволоку от выв. 30 ВП1-014 вывести на свободный контакт разъема МПИ. Для отключения ВП1-014 на этот контакт разъема МПИ достаточно подать сигнал +5в. 10 ма. Подавать "+5 в." следует до прихода цикла SYNC. Аналогичным образом можно поступить и с сигналом нажатия клавиши - для БК0011М это выв. 07 Д2.5 561ПУ4 - трек до него перерезается, в разрез монтируется резистор МЛТ-0.125 ~10 ком. Проволоку от выв.07 561ПУ4 так же протягивают на свободный контакт разъема МПИ. При работе от внешнего блока PS/2 блок должен сам выставлять уровни на эту проволоку, при отключении блока PS/2 - освобождатьэту проволоку от сигналов "0в." и "+5в." 9 (3-е состояние ). По клавише "Стоп"- просто вывести в блок PS/2 эту линию от 1801ВМ1- кнопка бывет полезна вне зависимости от фантазий программера (т.е. как на БК0010 ). Для БК0011М - это выв. 01 ДД1 555ЛН1. Подавать импульсы длительностью менее 1 цикла SYNC - в районе ~1 мкс.
    3. Думается, для придания большей привлекательности тиражному новоделу блока "PS/2" его надо оформить в виде плока Бейсика для БК0011/М,с оставлением 1 шт. колодки РС24-7 под нужды пользователя и установления 1 шт. разъема PS/2. Дополнительные сигналы с ДПП БК подать через доп. разъем типа ОНП-КГ-56-10 ( сигналы DOUT, INIT, VIRQ, IAKI, IAKO, Press, Halt, CSWP014, 0v). Следует так же проработать вариант работы БК при отключении новодела со своей стандартной клавой на ВП1-014 ( в части внешнего VIRQ ).
    4. Пожелание пользователей. Нельзя ли сделать программу-конфигуратор кодов клавиш - что бы пользователь сам мог настроить код каждой кнопки при соотвествующих режимах ? Основные вызовы в таком конфигараторе следует использовать от БК0010 ( 1801РЕ2-017 ) .
    Ну и как максимум - переключаемые раскладки...
    Коллекционирование радиодеталей : http://collectingrd.kxk.ru/

  7. Этот пользователь поблагодарил MM за это полезное сообщение:
    hobot (22.11.2016)

  8. #4
    Veteran
    Регистрация
    16.12.2008
    Адрес
    Kharkov, Ukraina
    Сообщений
    1,085
    Благодарностей: 213

    По умолчанию

    Вот, похоже, без ПЛИС не как не обойтись. Та же фигня.

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

    Схему не видать. Очков для нашего форума не купил. Продают?)
    Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR...

  9. #5
    Member
    Регистрация
    29.01.2013
    Адрес
    Москва
    Сообщений
    50
    Благодарностей: 101

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    >стОит ли мне изготавливать платку под мой
    Vslav, если в предложении нет смайлов, не значит, что в нем нет сарказма. Надеюсь, я сохранил кучу времени разработчикам (для) БК и показал примерный объем рынка ))))
    Цитата Сообщение от MM Посмотреть сообщение
    Ч_У_Д_О_В_И_Щ_Н_Ы_Й
    ММ, упор был на минимальные переделки БК, даже за счет усложнения самого устройства. И никаких аналоговых вставок в цифровые цепи. Отключить ВП1-14 оказалось проще всего по питанию. В таком режиме на выводе 20 благодаря R4 устанавливается высокий уровень, который транслируется на АП2. А уже в устройстве отдельно устанавливается бит 06, и АП2 не мешает, т.к. ОК.
    Никаких доработок не будет, а уж тем более - тиража (см. выше). Клава ПС/2 подключена - и достаточно. Если Vslav подключит USB - то вопрос с клавами будет решен на всю оставшуюся БКшную жизнь.
    Цитата Сообщение от OrionExt Посмотреть сообщение
    похоже, без ПЛИС не как не обойтись
    Ну почему же - если завести SYNC на прерывание STM32 72МГц, то, вероятно, он сможет обрабатывать БКшные транзакции. Цепь трансляции Iaki-Iako еще требуется, но там и прерываний порядочно
    Цитата Сообщение от OrionExt Посмотреть сообщение
    Схему не видать
    Кто ж знал, что даже файл во вложении будет откорректирован? У меня не такой большой опыт публикаций здесь. Заменил на внешнюю ссылку.

  10. #6
    Member Аватар для svinka
    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    95
    Благодарностей: 21

    По умолчанию

    Цитата Сообщение от MM Посмотреть сообщение
    1. стандартное обрабатывание сигнала SYNC в соответствии с ГОСТ( для пассивного устройства ).
    Здесь пожалуйста поподробней. Мне ли одному кажется, что в ГОСТе на эту тему - ошибка

  11. #7
    Veteran Аватар для MM
    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    1,140
    Благодарностей: 557

    По умолчанию

    Цитата Сообщение от svinka Посмотреть сообщение
    Здесь пожалуйста поподробней. Мне ли одному кажется, что в ГОСТе на эту тему - ошибка
    http://www.forum.pk-fpga.ru/viewtopi...824a5fd899da42
    ( IE8 что-то не позволяет просмотреть это пост, в отличии от состояния форума ПК-ФПГА на 2015 год ).
    На МПИ имеет место огромные перекрестные помехи ( "звон" ), заметные только счастливым обладателям многоканальных осликов с частотой дискретизации от 1 ггц/канал. Впрочем, на аналоговые ослы от 200 честных мегагерц ( полосы пропускания ) тоже заметны, но видятся как "незначительные возмущения" ).
    *
    Если не сложно, пожалуйста, приведите цитату ( лучше - скриншот ) участка ГОСТ МПИ с ошибкой. К-во разрядов адреса за ошибку не считать.
    Коллекционирование радиодеталей : http://collectingrd.kxk.ru/

  12. #8
    Member Аватар для svinka
    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    95
    Благодарностей: 21

    По умолчанию

    3.4.4 Сигнал ОБМ на линии "Синхронизация обмена" вырабатывается ведущим. Передний фронт этого сигнала служит признаком выдачи адреса на шину обмена информацией. Сигнал ОБМ сохраняет активный уровень до окончания текущего цикла обращения к магистрали.

    выделил

  13. #9
    Veteran Аватар для MM
    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    1,140
    Благодарностей: 557

    По умолчанию

    Цитата Сообщение от svinka Посмотреть сообщение
    3.4.4 Сигнал ОБМ на линии "Синхронизация обмена" вырабатывается ведущим. Передний фронт этого сигнала служит признаком выдачи адреса на шину обмена информацией. Сигнал ОБМ сохраняет активный уровень до окончания текущего цикла обращения к магистрали.

    выделил
    Предположим, сигнал ОБМ из цитаты эквивалентен сигналу СИА из ТО МС1201.03 :


    Не будет ли возможности выделить на диаграмме сомнительный участок ?
    Коллекционирование радиодеталей : http://collectingrd.kxk.ru/

  14. #10
    Member Аватар для svinka
    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    95
    Благодарностей: 21

    По умолчанию

    да очень просто. На диаграмме пассивного устройства до перехода СИА в низкий уровень на шине ДА адрес уже как 75нс готовенький. Более того, этот переход СИА в низкий -признак того что адрес очень быстро уберут (25нс). 75нс - это после успокоения всех звонов, кстати.

    Правильно, по-моему, так (для ОБМ в ГОСТ):

    Низкий уровень этого сигнала служит признаком выдачи адреса на шину обмена информацией
    Последний раз редактировалось svinka; 23.09.2016 в 01:01.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 30
    Последнее: 08.01.2017, 20:24
  2. Ответов: 4
    Последнее: 19.06.2016, 22:30
  3. Львовский вариант 48к
    от Smus в разделе Unsorted
    Ответов: 71
    Последнее: 14.04.2015, 22:12
  4. NK-DOS (вариант MS-DOS под TR-DOS)
    от Nomy Graphics в разделе Оси
    Ответов: 30
    Последнее: 03.09.2007, 16:59
  5. INT. Возможный вариант.
    от James DiGreze в разделе Unsorted
    Ответов: 0
    Последнее: 21.02.2006, 19:30

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •