Важная информация
RSS лента

Очередной клон Spectrum-a

Периферия

Рейтинг: 3.00. Голосов: 2.
Как и обещал расскажу про ps/2 клавиатуру.
У меня эмулятор клавиатуры вынесен на отдельную плату. На этой же плате реализован бипер и музыкальный сопроцессор. Вся эта периферия реализована на CPLD Altera MAX2, а опрос клавиатуры производит микроконтроллер. В моём случае это stm32f103c8. Знаю, что это мягко говоря, излишне, просто он у меня был. Забегая наперёд, скажу, что достаточно микроконтроллера с 8-10 свободными ножками и одним внешним пребыванием, например attiny2313 и старше.
Порт сопроцессора и бипер просто описаны на языке verilog, как комбинационная логика, то есть я просто описал схему обычного спектрума. А вот клавиатура немножко по-сложнее.
Она состоит из дух частей: микроконтроллёра, который опрашивает клавиатуру и эмулятора матрицы клавиатуры, которая представляет из себя 40-разрядный регистр.
Сразу скажу, со стороны мк всё сделано максимально просто, никакой обратной связи, только опрос кнопок. При каждом тактовом импульсе клавиатуры, срабатывает внешнее прерывание мк, в котором последовательно собирается байт скан кода. А в основном цикле программы идёт опрос двух флагов: флаг готовности скан кода, который устанавливается, когда собраны все восемь его бит, и флаг кода отжатия, который устанавливается при получении кода отжатия клавиш (f0). Далее, если флаг готовности установлен, то на выходном порте мк формируется номер клавиши в двоичном коде, проверяется флаг отжатия, если установлен, то на ножке данных устанавливается единица, если нет, то нуль. Затем формируется стробирующий импульс. И так далее по кругу.
Со стороны cpld по спадающему фронту стробирующего импульса просто идёт запись нуля или единицы в соответствующий бит 40-разрядного регистра, который с помощью логической развязки соединён с шиной адреса и данных процессора.
Выглядит это всё вот так (извиняюсь за качество снимка):
Нажмите на изображение для увеличения. 

Название:	IMG_20190203_200241.jpg 
Просмотров:	530 
Размер:	51.1 Кб 
ID:	67947
Также на этой плате выведен порт кемпстон джойстика, тоже сделан на ПЛИС. Пока его не тестировал. В планах сделать его на стрелках клавиатуры.
Кто-то скажет, зачем такие сложности? Всё просто - никаких waito-в на любой частоте. Хоть на ста мегагерцах. МК будет неспешно собирать скан коды, а ПЛИС имитировать матрицу спектрумовской клавиатуры, то есть, просто замыкание и размыкание соответствующих линий процессора.
P.S.Если кому-то будет интересно, могу поделиться схемами, платами и прошивками. Могу даже переписать прошивка для avr микроконтроллера. Правда, схему рисовал с головы и плата двухсторонняя. Не каждый возьмется за её изготовление.
Метки: Нет Добавить / редактировать метки
Категории
Без категории

Комментарии

  1. Аватар для nihirash
    Я бы кемпстон сделал бы все таки не на клавиатуре, а на разъем атари-совместимого джойстика(как вариант включать в него сеговский).

    В плане описания конфигурации, как мне кажется, еще проще, в плане игры - тоже удобно и приятно играть.
  2. Аватар для AndrejChoo
    Порт кемпстон на этой плате вынесен на отдельный разъём. Просто пока сам джойстик не делал.
    Надо посмотреть схемы в сети, пока только видел на 5 кнопок. Может быть есть ещё какие-варианты? Поделитесь схемкой.
  3. Аватар для nihirash
    Цитата Сообщение от AndrejChoo
    Порт кемпстон на этой плате вынесен на отдельный разъём. Просто пока сам джойстик не делал.
    Надо посмотреть схемы в сети, пока только видел на 5 кнопок. Может быть есть ещё какие-варианты? Поделитесь схемкой.
    https://8bit.yarek.pl/hardware/zx.jo.../index-de.html

    Теоретически - до 3х кнопок(не считая направлений), но не вспомню хотя бы одну игру, что использовала бы это.

    Стандарт был, вроде, все таки под однокнопочный джойстик с 4 направлениями.
  4. Аватар для AndrejChoo
    Наконец-то пришли музыкальные сопроцессоры ay-3-8910. Пришли, естественно, б/ушки с али, попались от микрочипа. Поставил первый попавшийся в свою плату - заработал сразу.
    Я переживал, что может не за пуститься на чуть завышенной частоте. Опасения не оправдались.
  5. Аватар для AndrejChoo
    Также проверил бипер. Тоже всё окей.

Трекбэков