Inferno
#04
22 июня 2003 |
|
Железо - Расширенная клавиатура для sinclair-совместимых персональных компьютеров.
РАСШИРЕННАЯ КЛАВИАТУРА ДЛЯ SINCLAIR-СОВМЕСТИМЫХ ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРОВ (p) Shaitan (c) Алхасов С.М. Бородавкин В.И. Кожемякин В.В. Представляем вашему вниманию очень древ- нюю, но не бесполезную железку, разрабо- танную еще в 1991 году в стенах лабортарии Таганрогского Радиотехнического Института. На сколько мне известно в те далекие вре- мена большинство дипломных работ в ТРИ бы- ло посвещено именно разработке дополни- тельных устройства для SPECCY. Вобщем не буду долго разлагольствовать. Далее идет "фирменный" текст описания расширеной кла- виатуры без существенных изменений (мы за- менили только корявые фразы, да убрали немнго лишнего текста). 1. ВВЕДЕНИЕ Одной из особенностей Sinclair- совместимых персональных компьютеров (ПК) является клавиатура, содержащая рекордно малое количество клавиш - 40 шт. В резуль- тате отдельные клавиши выполняют до 5-6 функций. В случае использования ПК в ка- честве игрового это обстоятельство являет- ся безусловно желательным, т.к. для заг- рузки игры и управления используется не- большое количество клавиш, что удешевляет конструкцию ПК. При попытке использовать ПК для разработ- ки программ, т.е. в качестве учебного или инструментального, пользователь в первую очередь сталкивается с тем обстоятель- ством, что для набора многих символов, ключевых слов и команд приходится совер- шать довольно сложные манипуляции с клави- шами. Со временем пользователь привыкает к этому, однако возможность набирать некото- рые наиболее часто используемые символы, ключевые слова и команды нажатием одной клавиши остается заманчивой и кажется поч- ти недоступной. Кроме того, клавиатура ПК не позволяет работать одной рукой, что в некоторых слу- чаях является больший неудобством. Напри- мер, почти все команды работы с TR-DOS требуют нажатия клавиш CAPS SHIFT + SYMBOL SHIFT и затем SYMBOL SHIFT и требуемую ко- манду, что проделать одной рукой очень сложно или, например, для удаления непра- вильно набранного символа требуется однов- ременно нажать две клавиши в противополож- ных углах клавиатуры. Дополнительно необходимо учесть, что в каждом конкретном случае использования ПК желателен вполне определенный набор дополнительных клавиш и место их располо- жения на клавишном поле. Например, при ис- пользовании ПК в качестве калькулятора - это знаки математических операций, при программировании - это может быть другой набор клавиш, при работе с TR-DOS третий и т.д. Таким образом, желательно, чтобы каждый пользователь мог сам сформировать необхо- димый набор дополнительных клавиш и их расположение на свои выбор. 2. АНАЛИЗ ВАРИАНТОВ РАСШИРЕНИЯ КЛАВИАТУРЫ В настоящее время существуют несколько реализации расширенной клавиатуры, из- вестных авторам данной разработки, но, к сожалению, они имеют на наш взгляд ряд не- достатков. Надо заметить, что набор допол- нительных клавиш, установленных в некото- рых вариантах "фирменных" компьютеров не является оптимальным, т.к. думаем, что трудно не согласиться, что команды TR.VIDEO, INV.VIDEO, GRAPHICS и др. ис- пользуются пользователями не столь часто, чтобы их выносить на отдельные клавиши. Таким образом, видимо не следует слепо ко- пировать тот набор дополнительных клавиш у их расположение, который установлен в "фирменном" ПК, что к сожалению делают ав- торы некоторых разработок. При разработке расширенной клавиатуры возможны два основных подхода: а) Первый заключается в расширении матри- цы клавиатуры с 8*5 до 8*6 или 8*7, что аппаратно очень несложно, но требует неко- торой доработки платы ПК, т.к. необходимо задействовать дополнительные неисполь- зуемые разряды данных на шинном формирова- теле (мультиплексоре) клавиатуры, что пот- ребует увеличения количества проводников от ПК к клавиатуре. В этом случае подвер- гается изменению драйвер клавиатуры в ПЗУ, что требует модернизации фирменной прошив- ки ПЗУ. Кроме того, это обстоятельство мо- жет быть неудобным при установке новой версии прошивки ПЗУ, т.к. придется самому дорабатывать драйвер клавиатуры. Надо заметить, что с такой клавиатурой могут не работать некоторые программы, ко- торые используют свой драйвер клавиатуры. Однако, если пользователь имеет достаточно опыта, чтобы самому доработать драйвер клавиатуры, то он, в этом случае, может запрограммировать любой набор дополнитель- ных клавиш и их расположение на клавиату- ре. б) Второй способ заключается в аппаратной эмуляции нажатия нескольких клавиш путем нажатия одной клавиши. В этом случае, как правило, не требуется дорабатывать плату ПК, а тем более программное обеспечение. Но многие реализации к сожалению очень сложны и не обладают гибкостью, т.е. воз- можностью определения необходимого набора дополнительных клавиш. Во многих случаях такая возможность к сожалению обеспечи- вается только путем изменения схемы, что неудобно в случае наличия готовой печатной платы. При наборе многих команд и символов на обычной клавиатуре требуется последова- тельно нажимать определенные клавиши. DELETE - это нажатие клавиши CAPS SHIFT и затем продолжая удерживать ее нажатие кла- виши 0. Как правило, во многих реализациях эмулируется одновременное нажатие этих клавиш, что приводит к верному результату, но имеет ряд недостатков, т.к. таким обра- зом невозможно сэмулировать набор некото- рых команд и символов, например, тех кото- рые набираются через режим [Е]. Реализа- ция, позволяющая эмулировать последова- тельное нажатие клавиш, является более гибкой, хотя очень часто приводит к боль- шой аппаратной избыточности. 3. ОПИСАНИЕ ПРИНЦИПИАЛЬНОЙ СХЕМЫ И ПРИНЦИПА РАБОТЫ РАСШИРЕННОЙ КЛАВИАТУРЫ Приведенная ниже реализация свободна от многих из указанных недостатков, не тре- бует никакой доработки платы ПК и программного обеспечения. Данная реализация содержит 16 дополни- тельных клавиш, которые могут быть запрог- раммированы на практически любые команды, ключевые слова и символы и собрана на 4-х ИМС. Назначение дополнительных клавиш и их расположение (может быть любое) опреде- ляется прошивкой ПЗУ микросхема D4. Ниже будет показано, каким образом любой поль- зователь достаточно просто может сам зап- рограммировать назначение и расположение дополнительных клавиш. Расширенная клавиатура состоит из за- дающего генератора на ИМС D1.1-D1.3, счёт- чика на ИМС D3.1, простейшего дешифратора на ИМС D1.4, мультиплексора на ИМС D2, элемента задержки на ИМС D3.2, матрицы до- полнительной клавиатуры 2*8 кнопки К0-К15, ПЗУ на ИМС D4. В исходном состоянии, до нажатия дополни- тельных клавиш, счётчик D3.1 перебирает в цикле (сканирует) двоичные коды от 0000 до 1111. Младший разряд определяет столбец матрицы клавиатуры, а старшие 3 разряда определяют строку матрицы клавиатуры. При нажатии клавиши счётчик продолжает скани- ровать клавиатуру, пока не будет выставлен код нажатой клавиши, при этом "нуль" через соответствующий вход мультиплексора D2 бу- дет пропущен на вход и заблокирует работу счётчика D3.1 через вход 2, зафиксировав код нажатой клавиши. Одновременно будет разблокирован элемент задержки, реализо- ванный на счётчике D3.2, а также разрешена выборка ПЗУ - ИМС D4 (вход 20). На адрес- ные входы ПЗУ А4-А7 подаётся четырёхраз- рядный код нажатой клавиши, на остальные входы подаются адресные разряды с основной клавиатуры (A0-АЗ и А8, А9), а также с элемента задержки (А10). В зависимости от кода нажатой клавиши и кода на адресных входах основной клавиату- ры, на выходах ПЗУ будет установлена информация в соответствия с прошивкой, ко- торая через диоды VD3-VD7 будет подана на выходы данных основной клавиатуры, таким образом будет сэмулировано нажатие одной или нескольких клавиш. По прошествии вось- ми тактов на выходе 14 счётчика D3.2 будет выставлена "1", которая подаётся на вход А10 ПЗУ, при этом выбирается вторая стра- ница ПЗУ, в которой могут быть сэмулирова- ны нажатия других клавиш. Таким образом, может быть получена пос- ледовательность нажатия двух групп клавиш, что позволяет сэмулировать ввод любых ко- манд и символов на основной поле клавиату- ры, и даже ввод двух отдельных команд. На- пример, команд RUN и ENTER нажатием одной клавиши, что может быть полезный при час- том запуске бейсиковых программ. Резисторы R1 и R2 и конденсатор С1 яв- ляются времязадающими элементами генерато- ра, частота которого должна быть в преде- лах нескольких килоГерц. Диоды VD1 И VD2 служат для защиты от замыкания входа и вы- хода элемента D1.4 при случайном одновре- менном нажатии двух клавиш из разных столбцов. Резистор R3 служит для формиро- вания на выходе 3 мультиплексора D2 "1" при отпущенных клавишах. Использование од- ного резистора вместо восьми на входах мультиплексора объясняется особенностью конкретного типа мультиплексора. Резисторы R4-R9 служат для формирования "1" на адресной шине A8, A11-A15, т.к. диоды на основном поле клавиатуры блокирут прохождение "1". Диоды VD3-VD7 служат для устранения конфликта на выходе ПЗУ при од- новременной нажатии клавиш на дополнитель- ном и основном полях клавиатуры. 4. ПРОГРАММИРОВАНИЕ НАЗНАЧЕНИЯ ДОПОЛНИТЕЛЬНЫХ КЛАВИШ Для формирования таблицы, которая будет прошита в ПЗУ, пользователь должен четко представлять каким образом происходит оп- рос клавиатуры в ПК. Процессор под управ- лением программы драйвера клавиатуры выс- тавляет по очереди "0" на адресных разря- дах A3-A15, которые подаются через диоды на клавиатуру и при этой считывает инфор- мацию по 5-ти младшим разрядам шины данных (D0-D4). Если все эти разряды равны "1", то значит нажата клавиша, которая находит- ся на пересечении адресного разряда (А8- А15) на котором в данный момент находится "0" и соответствующим разрядом данных. В зависимости от номеров разрядов адреса и данных, а также предыдущего состояния компьютера формируется код нажатой клави- ши. Таблица соответствия номеров разрядов и клавиш │ А8 A9 A10 A11 A12 A13 А14 A15 ────┼─────────────────────────────────── D0 │ CS A Q 1 0 P ENTER SPACE D1 │ Z S W 2 9 O L SS D2 │ X D E 3 8 I К M D3 │ C F R 4 7 U J N D4 │ V G Т 5 6 Y H В Следовательно, если мы хотим сэмулировать нажатие клавиши, то необходимо при возник- новении "0" на соответствующем адресном разряде - сформировать "0" на соответ- ствующем разряде данных. Ниже приведена таблица соответствия раз- рядов адреса и данных ПЗУ с разрядами ад- реса и данных ПК. ПЗУ A10 А9 А8 А7 А6 А5 А4 Z A15 А14 СЗ С2 С1 СО задер ПК код клавиши A3 А2 А1 А0 D0 D1 D2 D3 D4 A8 A11 A13 A12 D0 D1 D2 D3 D4 ПК ПК Выбор столь неупорядоченного соответствия разрядов ПЗУ и ПК связан с некоторыv упро- щением разводки платы клавиатуры, хотя в общем случае это соответствие может быть установлено совершенно произвольно. Разряды адреса А9, A10 ПК к ПЗУ не подключены, т.к. функции, выполняемые кла- вишами, подключенными к этим разрядам по нашему мнению, к часто-используемым. Но если потребуется сэмулировать и их, то по- требуется либо заменить другие адресные разряды, которые не будут использоваться, разрядами А9, A10, либо установить ПЗУ большего объема (например, 2764), подклю- чив к дополнительным разрядам адреса ПЗУ разряды А9, A10 ПК. Используя приведенные выше таблицы теперь мы ножем сэмулировать нажатие любых кла- виш. Пример 1. Если мы хотим сэмулировать нажатие допол- нительной клавиши К10 команду "курсор вверх", которая формируется нажатием кла- виши CAPS SHIFT, а затем с ее удержанием нажатием клавиши 7 основного поля кла- виатуры, то нам необходимо "прошить" в ПЗУ следующие три ячейки: Адрес: Данные: ЗА7 : FE - нажатие клавиши CAPS SHIFT 7А7 : FE - удержание клавиши CAPS SHIFT 7АЕ : F7 - нажатие клавиши 7 Пример 2: Если мы хотим сэмулировать нажатием до- полнительной клавиши К12 символ "*", то необходимо "прошить" в ПЗУ следующие три ячейки: Адрес: Данные: 1CF : FD - нажатие клавиши SYMBOL SHIFT 5CF : ED - удержание клавиши SYMBOL SHIFT и нажатие В Для эмуляции удержания клавиши SYMBOL SHIFT и клавиши B используется одна ячей- ка, т.к. обе эти клавиши находятся на од- ной адресной линейке А15. Пример 3: Для эмуляции дополнительной клавиши КО - набора ключевого слова PAPER необходимо "прошить" в ПЗУ следующие три ячейки: Адрес: Данные: З0Е : FE - нажатие клавиши CAPS SHIFT 10F : FD - нажатие клавиши SYMBOL SHIFT 70F : F6 - удержание клавиши CAPS SHIFT и нажатие клавиши С Пример 4: Очень удобной на наш взгляд является эму- ляция одновременного нажатия клавиш CAPS SHIFT и SYMBOL SHIFT и дальнейшего удержа- ния клавиши SYMBOL SHIFT, назовём эту кла- вишу "Режим Е". Она удобна тем, что при ее нажатии и отпускании ПК переводится в "ре- жим Е", а при удержании позволяет набирать ключевые слова и символы, написанные сбоку клавиш, например, команды управления TRDOS. Если при этом эта клавиша будет на- ходиться недалеко от клавиш управлении ТRDOS, то будет очень удобно набирать эти ключевые слова одной рукой. Пусть мы хотим запрограммировать дополни- тельную клавишу К2 на "режим Е", то необ- ходимо "прошить" следующие ячейки ПЗУ: Адрес: Данные: 12F : FD - нажатие клавиши SYMBOL SHIFT 327 : FE - нажатие клавиши CAPS SHIFT 52F : FD ┐ 52E : FD │ 52D : FD ├ удержание SYMBOL SHIFT 52B : FD │ 527 : FD │ 42F : FD ┘ Необходимость программирования шести яче- ек для эмуляции удержания клавиши SYMBOL SHIFT обусловлена тем, что одновременно с этой клавишей может выть нажата любая дру- гая клавиша основного поля клавиатуры. При этом, если не будут прошиты соответ- ствующие ячейки, то может возникнуть неод- нозначность нажатия клавиши. Таким обра- зом, из приведённых выше примеров видно, что данная реализация расширенной кла- виатуры обладает большими возможностями и ещё большим резервом возможностей, реали- зовать которые могут пользователи по своему усмотрению. В качестве возможного назначения дополни- тельных клавиш и их расположения предла- гаем следующий вариант: K0 ; K8 + K1 ) K9 - K2 режим Е K10 Вверх K3 ( К11 , K4 " К12 * K5 DELETE К13 / K6 - К14 Вниз K7 EDIT К15 - Ниже приведена прошивка ПЗУ для такого состава и расположения дополнительных кла- виш. По всем неуказанным адресам должен быть код FF, т.о. их программировать не надо. К0 ; 10F FD 50F FD 70D FD K1 ) 11F FD 51F FD 71Е FD K2 режим Е 12F FD 327 FE 425 FD 527 FD 52В FD 52D FD 52Е FD 52F FD КЗ ( 13F FD 53F FD 73Е FB К4 " 14F FD 54F FD 74D FE К5 del 357 FE 757 FE 75E FE К6 - 367 FE 767 FE 76B EF К7 Edit 377 FE 777 FE 77B FE K8 + 18F FD 58F FD 68F FB К9 - 19F FD 59F FD 69F F7 К10 Вверх ЗA7 FE 7A7 FE 7AE F7 К11 , 1BF FD 5BF F5 К12 * 1CF FD 5CF ED К13 / 1DF FD 5DF FD 7D7 EF К14 Вниз 3EF FE 7E7 FE 7EE EF К15 - 3F7 FE 7F7 FE 7FE FB В заключении хотелось вы cказать несколь- ко слов об изменениях в схеме, которые мо- гут некоторым пользователям прийтись по вкусу. Например, можно отключить вывод 20 ПЗУ от элемента задержки D3.2, и дополнительной 17-й клавишей формировать на ней логичес- кий "0" либо "1", а ПЗУ "прошить" так, чтобы при "0" дополнительные клавиши вы- полняли одни функции, а при "1"- другие. Таким образом это позволит получить 32 до- полнительные команды, правда при этом нельзя будет получить последовательность нажатия клавиш, но и этого ограничения можно избежать установкой ПЗУ большего объема. А вот собственно и схема описанного выше девайса. D1.1 D1.2 D1.3 D3.1 ┌───┐3 ┌───┐4 ┌───┐10 ┌──────┐ ┌1┤1 o─┬5┤1 o─┬8┤1 o─┬──1─>CLK Q0├3─A─╖ ├2┤ │ ├6┤ │ ├9┤ │┌───2─┤EN Q1├4─B─╢ │ └───┘ │ └───┘ │ └───┘││ │ Q2├5─C─╢ │ R1 │ R2 ═╪═C1 ││ ┌7─┤RST Q3├6─D─╢ └─░░░░──┴─░░░░──┘ 15нФ ││─┴─ └──────┘ ║ 20K 100K ││┌──────────┬──M─╢ D1.4 +5V │││ D3.2 └───┐║ ┌───┐ │ │││ ┌──────┐ │║ ┌12┤1 O─11─E─┐ ░ R3 ││└─9─>CLK Q0├11 │║ ├13┤ │ │ ░ 20K │└─10─┤EN Q1├12 │║ │ └───┘ │ │ │ │ Q2├13 │║ │ │ ├──────┴──15─┤RST Q3├14─┘║ │ D1-1561ле5, │ │ D3-1561ие10└──────┘ ║ │ 1561ле7. └────────────────────────E─║ │ │ ║ └──────────────────────────────────────A─║ │F ║ ╔══╤════╤═══════╪════════════════════════╝ ║ A E F ║ ─┼─ ─┼─ └─────────┐ ║ / / D3 │ ║ │VD1 │VD2 ┌──┬───┬─┐ │ ║ ─┼────┼─13─┤X0│DC │X├3──┘ ║ ─┼────┼─14─┤X1│ │ │ ║ ─┼────┼─15─┤X2│ │ │ ║ ─┼────┼─12─┤X3│ │ │ ║ ─┼────┼──1─┤X4│ │ │ ║ ─┼────┼──5─┤X5│ │ │ ║ ─┼────┼──2─┤X6│ │ │ ║ ─┼────┼──4─┤X7│ │ │ ║ ├──┤ │ │7,8 ║ ├─6─ODE│ │ ├──┐ ║─B───────11─┤V1│ │ │ ─┴─ ║─C───────10─┤V2│ │ │16 ║─D────────9─┤V3│ │ ├──+5 V ║ └──┴───┴─┘ ║ D3-1561кп2 ║ ║ D4 ШД ║ ┌───┬─┬──┐ VD3 КОМПЬЮТЕРА ║─G────────8─┤A0 │ │D0├9───I<─────── Data0 ║─H────────7─┤A1 │ │D1├10──I<─────── Data1 ║─I────────6─┤A2 │ │D2├11──I<─────── Data2 ║─J────────5─┤A3 │ │D3├13──I<─────── Data3 ║─A────────4─┤A4 │ │D4├14──I<─────── Data4 ║─B────────3─┤A5 │ │D5├15─ VD7 ║─C────────2─┤A6 │ │D6├16─ АДРЕСА ║─D────────1─┤A7 │ │D7├17─ КОМПЬЮТЕРА ║─K───────23─┤A8 │ │ │ ╓─J───── Adr08 ║─L───────22─┤A9 │ │ │ ╟─I───── Adr11 ║─M───────19─┤A10│ │ │ ╟─G───── Adr12 ║ │ │ │ │ ╟─H───── Adr13 ║ ├─18─o/CE│ │ │ ╟─K───── Adr14 ║─F───────20─o/OE│ │ │ ╟─L───── Adr15 ║ +5V─21─┤Vpp│ │ │ ║ ║ └───┴─┴──┘ ║ ║ 573рф2(5) ║ ╚═╤════╤════╤════╤════╤════╤╝ ░R4 ░R5 ░R6 ░R7 ░R8 ░R9 ░20K ░20K ░20K ░20K ░20K ░20K │ │ │ │ │ │ ├────┴────┴────┴─┬──┴──┬─┴──+5V │ +│ │ │ VD8 R10 ═╪═ ═╪═ └───>I────░░░────┴─────┴────┐ АЛ307 470 C2 С3 ─┴─ 10МкФ 0.15МкФ (4 шт.) * VD1-VD7 - КД522 Ниже приводим сборочный чертеж печатной платы рассширенной клавиатуры. (Ред.: На наш взгляд такое рассположение элементов не совсем удачное, так как соединительные дорожки получаются немного длиноваты.) ┌───────────────────────────┐ │ ─VD2─ │ │ │ ─VD1─ C2 │ │ ─R2── │ │ │ ─C1── + │ │ ─R1── │ │ ┌────────────┐ │ │ │D1(ЛЕ5,ЛА7) < │ │ └────────────┘ │ │ ┌────────────┐ │ │ │D1(КП2) < │ │ └────────────┘ │ │ ┌────────────┐ │ │ │D1(ИЕ10) < │ │ └────────────┘ │ │ ─R3── │ │ ┌────────┐ │ │ │ D4 │ │ │ │ │ │ │ │573РФ2 │ │ │ │ (РФ5) │ │ │ │ │ │ │ └────────┘ │ │ ─C3── │ │ │ │ ─R6── │ │ ─R7── │ │ ─R9── │ │ ─R8── │ │ ─R5── │ │ ─R4── │ │ │ │ ─VD7─ │ │ ─VD6─ │ │ ─VD5─ │ │ ─VD4─ │ │ ─VD3─ │ │ │ │ │ R10 │ │ │ │ │ │ │ │ │ │VD8 │ │ │ │ │ │ └───────────────────────────┘ Желаем успехов в сборке и приятной работы с данным устройством
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября