Автор: Кондратьев А.В.
Следующим типовым устройством ПЭВМ, вроде бы и несложным, но доставляющим, порою, хлопоты исследователю, является клавиатура.
В общем-то устройство несложное. Особенно ноне уже устаревшие модели, подключаемые к порту PS/2. Как показывают многочисленные экспериментальные данные микросхема управления «клавы» сканирует нажатия клавиш и передаёт в последовательном коде в порт. Тактовая частота этой передачи кратна (в подавляющем числе случаев) » 6,3 или 10 кГц. Хотя автору попались в самые последние года пара экземпляров, тактовая частота которых лежала в районе 20 кГц.
Все клавиатуры при нажатии и удерживании любой клавиши начинают (после некоторой паузы) повторять передачу кода клавиши «до бесконечности». В обычном режиме это, как правило, через несколько секунд приводит к переполнению буфера контроллера и нарушению работы. Появляется звуковой сигнал системного «динамика» - «писк». Суть тест-режима (самого общепринятого) заключается в блокировании команды переполнения буфера, что позволяет, при нажатой клавише, обеспечить бесконечную передачу по кабелю «клавы» выбранного символа.
Как и всегда, для правильного последующего расчёта результата, необходимо создать постоянное чередование импульсов в кодовом пакете. Для кодов клавиатуры таких комбинаций может существовать две:
10101010 (55) клавиша « +; = »
01010101 (АА) в типовых таблицах – не применяется
Общая таблица скан-кодов приведена в таблице 14.1
Таблица 14.1 - Скан-коды клавиатуры
Клавиша |
Скан-код |
Клавиша |
Скан-код |
Клавиша |
Скан-код |
Клавиша |
Скан-код |
---|---|---|---|---|---|---|---|
1 |
16 |
2 |
1E |
3 |
26 |
4 |
25 |
5 |
2E |
6 |
36 |
7 |
3D |
8 |
3E |
9 |
46 |
0 |
45 |
- |
4E |
+ |
55 |
Backspace |
66 |
Tab |
0D |
Q |
15 |
W |
1D |
E |
24 |
R |
2D |
T |
2C |
Y |
35 |
U |
3C |
I |
43 |
O |
44 |
P |
4d |
[ |
54 |
] |
5B |
Enter |
5A |
Ctrl(L) |
14 |
A |
1C |
S |
1B |
D |
23 |
F |
2B |
G |
34 |
H |
33 |
J |
3B |
K |
42 |
L |
4B |
; |
4C |
' |
52 |
` |
0E |
Shift(L) |
12 |
\ |
61 |
Z |
1A |
X |
22 |
C |
21 |
V |
2A |
B |
32 |
N |
31 |
M |
3A |
, |
41 |
. |
49 |
/ |
4A |
Shift(R) |
59 |
Alt(L) |
11 |
Space |
29 |
Caps Lock |
58 |
Esc |
76 |
F1 |
05 |
F2 |
06 |
F3 |
04 |
F4 |
0C |
F5 |
03 |
F6 |
0B |
F7 |
83 |
F8 |
0A |
F9 |
01 |
F10 |
09 |
F11 |
78 |
F12 |
07 |
Scroll Lock |
7E |
*[numpad] |
7C |
Num Lock |
77 |
7[numpad] |
6C |
8[numpad] |
75 |
9[numpad] |
7D |
-[numpad] |
7B |
4[numpad] |
6B |
5[numpad] |
73 |
6[numpad] |
74 |
+[numpad] |
5A |
1[numpad] |
69 |
2[numpad] |
72 |
3[numpad] |
7A |
0[numpad] |
70 |
.[numpad] |
71 |
Alr(R) |
E0-11 |
Ctrl(R) |
E0-14 |
Print Screen |
E0-12-E0-7C |
Insert |
E0-70 |
Delete |
E0-71 |
Left |
E0-6B |
Home |
E0-6C |
End |
E0-69 |
Up |
E0-75 |
Down |
E0-72 |
PageUp |
E0-7D |
PageDown |
E0-7A |
Right |
E0-74 |
Enter[numpad] |
E0-5A |
/[numpad] |
E0-4A |
Таким образом, при реализации тест-режима и, например, положенном на клавишу «+» грузике в кабеле «клавы» будет присутствовать бесконечная последовательность пакетов импульсов. При этом период следования импульсов в пакете (то есть тактовая частота), будет равна 6,10 или 20 кГц, а частота следования пакетов будет много ниже. Формат данных приведён на рисунке 14.1
Для обмена данными в кабеле клавиатуры служат две линии – KBData и KBSync. При передаче скан-кодов клавиатура выставляет очередной разряд данных на линии KBData и подтверждает передачу переводом из «1» в «0» сигнала на линии KBSync.
Контроллер может сигнализировать о своей неготовности передавать/принимать данные низким уровнем на линии KBSync. Все остальное время, когда нет данных для передачи, обе линии имеют высокий уровень сигнала.
Как следует из вышеприведённого, в спектре ПЭМИН кабеля клавиатуры следует ожидать частотных составляющих с тактовой частотой 1/76,04·10-6=13,15 кГц. Причём из-за наличия двух, сдвинутых по фазе, сигналов с разными (но кратными!) периодами, чётные и нечётные частотные составляющие будут отличаться по амплитуде.
Как и следует ожидать, ПЭМИН линии синхроданных неинформативен, в принципе. Но отличить один ПЭМИН от другого совсем непросто. Кабель один, сигналы синхронны…
Практически единственный способ – подобрать скан-код с минимальным числом логических «1» в посылке. Таковыми являются клавиши «F3» и F9» (03 и 01 в hex-коде). Код «00» не используется.
Осциллограмма скан-кода «F3» приведена ниже.
Строго «по энергетике», если измерить все частотные составляющие ПЭМИН с кодом «=» и, например, кодом «F9», то разность в показаниях приёмника на КАЖДОЙ из частотных составляющих и есть истинно информационная часть энергии ПЭМИН. Причём это максимум максиморум. Работа достаточно сложная и утомительная, если нет возможности поручить её «автомату». Сами-то составляющие ПЭМИН для столь низких частот выявляются не без труда. Так ещё и разности «ловить»…
В практике СИ, в подавляющем числе случаев, просто измеряют уровни ПЭМИН (ничего не вычитая) и считают параметр защищённости. Можно и так, «с запасом», но знать истинное положение дел специалист обязан.
В заключение рассмотрения - «распиновка» разъемов AT- и PS/2-клавиатуры.
«Картинки» на приёмнике выглядит далеко не так «классически», однако и он вполне узнаваем. Вот примеры
На спектре хорошо видно возрастание амплитуды компонент с уменьшением частоты.
Есть ещё особенности измерений «клавы» в этой частотной области (от десятков кГц и далее). Дело в том, что клавиатура, в обычном размещении, находится неподалеку от системного блока. А в верхней части СБ находится импульсный блок питания – мощнейший источник ПЭМИН и по «Е», и по «Н» компонентам. В «свете» такого театрального софита, тускловатый «свет» клавиатуры узреть – особое искусство! Поэтому предлагаю следующий приём. Отодвиньте «клаву» от СБ как можно дальше. Лучше – на удлинителе PS/2. Эдак метра на 2-2,5.
Разместите антенну так, чтобы на неё наводилось как можно меньше от СБ (сигнал, при полосе приёмника больше 10 кГц – сплошной спектр). И вот около так сориентированной, неподвижной антенны, начинайте крутить «клаву» и её кабель (не наоборот!). Тогда у Вас будет много больше шансов обнаружить сигналы ПЭМИН именно клавиатуры, увидеть компоненты ПЭМИН на экране анализатора воочую.
Всё вышеизложенное относилось к клавиатуре с интерфейсом PS/2. Но сейчас их массово заменяют клавиатуры с интерфейсом USB.
Вообще этот интерфейс достаточно подробно рассматривался совместно с принтерами. Однако будет нелишним дать некоторое «целеуказание» и относительно клавиатуры.
Вспомним построение пакетов для интерфейса USB, учитывая, что клавиатура подключается, строго, с low-speed (то есть, фактически по интерфейсу USB 1.0).
Sync |
PID |
Data |
CRC16 |
EOP |
Максимальный размер полезной нагрузки DATA (payload) для low-speed устройств составляет 8 байт. То есть это, как раз, то, что требует скан-код клавиатуры.
Увидеть сигнал (именно данные) в линии USB оказалось не такой уж простой задачей. Тем не менее – вот что выявилось именно в кабеле типовой USB «клавы» модели GENIUS KB-06XE, конкретно в линии (проводе) «data +» (рисунок 14.10)
Эти две осциллограммы меняют друг друга с неустановленной (хаотической) периодичностью, причём «картинки» сигналов не зависят от нажатой клавиши клавиатуры (или ненажатой никакой). Никаких иных изменений в «переменной» части пакета (фрейма) выявить не удалось.
Периодичность следования этих пакетов жёстко стабилизирована (рис. 14.11), а длительность каждого составляет (видно на осциллограммах) около 34 ±1 мкс.
Пакеты следуют каждые 4 мс. Однако необходимо отметить, что окончание каждого пакета всё время «дрожит», причём заметно, классический «джиттер». Поэтому спектральная картинка несколько размыта и становится чёткой лишь при достаточно длительном усреднении.
Кроме того, следует учитывать, что из-за разных периодов следования импульсов и разной их длительности спектр носит характер некоторой смеси из спектра сплошного и линейчаатого. Тем не менее лепестковый характер спектра, естественный для бесконечной последовательности пакетов и кратный в своих «лепестках» средней длительности пакета, сохраняется весьма наглядно. Только «нули» функции сглажены джиттером и неременным периодом следования отдельных импульсов. Однако сама картинка вполне характерна. При более тонком частотном разрешении спектр начинает разрешаться на «линии», обусловленные частотой следования пакетов (250 Гц) (рис. 14.13)Таким образом, при простейшем и незасинхронизованном с истинной передачей скан-кода просмотре осциллограмм, выявить и визуализовать участки фрейма (пакета), отвечающий за передачу данных, не удалось. Тем не менее, можно утверждать, что ПЭМИН кабеля клавиатуры всё равно будет вот такой и никакой другой. Понятно, на каких частотах его искать, понятно, что он будет носить характер сплошного (во всяком случае, при частотном разрешении приёмника более 0,3 кГц). И понятно, какую величину подставлять при расчётах в качестве тактовой (минимальный период импульсов в пакете в эксперименте составил 1,322 мкс). Измерить это, при любых СИ, имея осциллограф, хотя бы с 200 МГц полосой – задача тривиальная. Тест-режим, по сути – любой, можно нажимать клавиши (любые), можно не нажимать ничего. Пакеты по интерфейсу передаются всё равно. И, в первом приближении, считаем их информативными (пока не доказано обратное).
Приведённые осциллограммы и спектры получены с помощью осциллографа АКИП-4108/2, подключённому к тому же компьютеру, на котором выполнялись измерения (надо заметить – весьма функциональный повтор разработки фирмы «PICO Technology» нашими. Не хуже китайцев :) ) .
Спектр явно уходит далеко за 1 МГц (больше не позволил осциллограф, а подключать анализатор большого смысла не было). Остальное обусловлено уже кабелем, как случайной антенной и степенью его экранирования.
Для иных режимов интерфейса USB нужен уже осциллограф с полосою в многие ГГц.
Как именно считать сплошной спектр и, при этом, остаться в рамках действующих НМД – разговор отдельный и не для открытого обсуждения, увы… Однако в последующих публикациях придётся к нему вернуться, деваться некуда. Попытаюсь «остаться в рамках дозволенного»…