nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 06:55



Reply to topic  [ 20 posts ]  Go to page Previous  1, 2
PS2 клавиатура для старых самопальных компов 
Author Message
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
fifan wrote:
...только запись в порт/чтение из порта ВВ55 длиться всего 500 нс - успеваем опрашивать PS/2, перкодировать коды клавиатуры, отправить их в порт?

А и не надо! Технология такая: есть 3 байта в ОЗУ, которые отражают текущее состояние порта A, B и C. Когда приходит чтение - тупо отдаем соответствующий байт. А вот когда идет запись, во время самой записи хватаем что есть на шине, делаем черное дело, и пишем байтики в ОЗУ где храниться состояние. PS/2 - полностью в фоне + использование таблиц для уменьшения действий вычислений. Вот так я это вижу. А между записю (любой, как по MOV так и по OUT) и последующим чтением полюбому 4-5 тактов целевой системы (он должен прочитать опкод чтения, ведь так?). А если взять Мегу и распедалить ее до 24МГц (есть у меня человечек, сказал что на его опыте из 10 Мег 8515, которые по идее 16МГц, 8 заработали стабильно на 24МГц, 1 подглючивала интерфейсом и одна не запустилась). Ну а ежели сразу взять быструю мегу? А частоты PS/2 настолько мелкие, что даже если сам опрос будет прерываться чтением/записью целевой системой и то он все успеет.
Caro wrote:
HardWareMan wrote:
каково типичное время реагирования на прерывание у разных быстрых чипов (AVR/PIC/etc..)?
Порядка 4..5 тактов.

Т.е. если принять во внимание, что фактическое чтение (ширина строба чтения) всего 1 такт (это наихудший вариант, для ВМ80), то это будет в наихудшем варианте 3,5МГц = 285нс. Это время при 16МГц займет 0,286/(1/16)=4,5 такта. Мдэмс. Мега потратит их тока на реагирование, ниокаком полезном действии речи и быть не может. Нужен камень, что шустрее раза в три. 33МГц...


27 Jan 2009 07:43
Profile
Senior

Joined: 10 Dec 2008 08:39
Posts: 155
Location: Стокгольм, Швеция
Reply with quote
Post 
Я вот что подумал:
1. Берем подходящую по быстродействию ПЛИС и реализуем на ней клавиатурный PS/2 порт, задача которого - настроить клавиатуру в нужный режим и регистрировать клавиатурные события.
2. Сформировать "виртуальную" битовую матрицу клавиатуры в ОЗУ ПЛИС так, чтобы при каждом клавиатурном событии бит, соответствующий клавиши переходил в состояние "нажата" и в состояние "отпущена".
3. На той же ПЛИС реализуем модель ВВ55 - порты, коды настройки и т.п., но при чтении/записи портов мы будем делать следующее:
a) считываем данные, которые послал нам ЦП,
б) берем нашу виртуальную матрицу и сигналы сканирования и логикой формируем сигнал отклика.
в) выставляем отклик в соответствующий "порт".

Вот. При этом для процессора клавиатура будет выглядеть как стандартная матрица.

_________________
С уважением, Сергей.


27 Jan 2009 23:49
Profile
Fanat

Joined: 21 Nov 2002 11:09
Posts: 88
Location: E-burg/Russia
Reply with quote
Post 
Вполне реально сделать контроллер клавиатуры для Специалиста на ATMega48, по той же схеме, что и для РК86.
Попробую, благо Специалист у меня есть. О результате расскажу :)


28 Jan 2009 00:26
Profile WWW
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Post 
В моей схеме время от подачи сигналов на ПЛМ, декодирования номера строки/столбца, запроса ППЗУ, ответа номера столбца/строки и подачи готового номера нажатой клавиши приблизительно 42,8 * 2 нс = 85,6 нс = 0, 0856 мкс. Здесь еще нужно добавить время выборки из ППЗУ (под руками данных нет).
Когда писал программу я учитывал только опрос/ответ по схеме ( спасибо HardWareMan'у за разъяснения): PA+PC -> PB и PB -> PA+PC, а если происходит другая схема сканирования, то тут у меня пас...


28 Jan 2009 02:14
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Приподниму этот топик (ибо сегодня искал довольно долго) и перенесу сюда цитату по сабжу из топика Galaksija.
HardWareMan wrote:
Ты не забывай, что вся трудность как раз не в эмуляции ВВ55, а в скорости выдачи данных. Напомню:
1. Цикл обращения в ВВ55. ВМ80 активирует строб примерно на 1-1,5 такта F2 (проверял осциллом, когда свой SVGA Spec делал). При условии, что у Специалиста F2=2МГц, и данные должны быть выданы до перехода 0=>1 на F2, то времени у нас от 500нс до 250нс. Не густо, если учесть что у AVR 1MIPS и он работает на 16МГц, то получается примерно 62,5нс на команду. Стало быть, в 250нс уместится всего 4 команды (в 500 8 соответственно, но мы учитываем наитяжелейший случай). А теперь вспомним время реакции на прерывание - кто-то тут говорил 4 такта (те самые 4 инструкции, не?). Выход: аппаратный слэйв порт (как у 8042) или более быстрый камень (ATXMega, например, или Cortex STM32, но тут вообще комбайн намутить можно).
2. Как происходит опрос ВВ55, в частности клавы? Выставляем 0 на матрицу и сразу же читаем ее. Итог: последовательность STA/LDA. Между фактическими обращениями всего 4 такта, правильно (цикл M1 от LDA). Так сколько времени на апдейт данных? Вывод: нужно заранее хранить все возможные данные от матрицы, чтобы тупо выдавать их по таблице лукапа. А это 2^12 ячеек на 6 бит (первый режим опроса) или 2^6 ячеек на 12 бит (второй вариант опроса), мы же все еще про спец говорим, правильно? Справедливо заметить, что клавиатура Ориона и РК в этом отношении максимально выгодна: всего 256 ячеек на каждый вариант.
Это 2 критических узла эмулятора клавиатуры на ВВ55. Все остальное время можно кушать данные с PS2, парсить их, строить таблички и т.д. и т.п.

PS Как жуткий вариант, можно использовать CS как запрос на прерывание, а потом тупо следить за битами RD/WR в однокомандном цикле (фактически 2 команды, т.к. 2 бита). Может проканать.

_________________
iLavr


18 Nov 2016 04:44
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 20 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 38 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.