Как клавиатура передает сигналы
Клавиатура PC представляет собой унифицированное устройство со стандартным разъемом и последовательным интерфейсом связи с системной платой. В качестве датчиков нажатия клавиш применяют механические контакты (открытые или герконовые), кнопки на основе токопроводящей резины, емкостные датчики. Клавиатура содержит внутренний контроллер, выполненный обычно на микросхеме из семейства MCS-48 фирмы Intel, осуществляющий сканирование матрицы клавиш, управление индикаторами, внутреннюю диагностику и связь с системной платой последовательным интерфейсом по линиям KB-Data и KB-Clock.
Основных типа клавиатур:
1. Клавиатура XT - 83 клавиши, в оригинале без индикаторов. Впоследствии к ним добавили индикаторы состояния NumLock и CapsLock, управляемые внутренним контроллером по нажатию соответствующих клавиш.
2. Клавиатура AT- 84 клавиши, которая отличалась от XT появлением дополнительной клавиши SYSREQ и индикаторов Num Lock, Caps Lock, Scroll Lock.
3. Расширенная клавиатура (Enhanced) - 101/102 клавиши, применяемая в большинстве моделей AT и PS/2, ставшая современным стандартом. Некоторые расширенные клавиатуры (например, "Microsoft Natural") имеют 104 или 105 клавиш, появились и 122-клавишные модели.
Клавиши расширенной клавиатуры разделены на 4 группы:
Рекомендуемые файлы
презентация про ГОСТ Р 21.1101-2009 (Локальные измерительно-вычислительные системы) Ответы на сертификацию Google Рекламы по проведению кампаний для приложений 2021 Ноябрь- цифровая клавиатура (Numeric Keypad), при выключенном индикаторе NumLock (или включенном NUMLOCK и нажатии SHIFT) используемая для управления курсором и экраном;
- выделенные клавиши управления курсором и экраном, дублирующие эти функции цифровой клавиатуры.
Емкостные клавиатуры. Нижняя часть такой клавиатуры является одной большой обкладкой конденсатора. Клавиша нажимает на пружину, которая в свою очередь нажимает на толкатель. Толкатель передает усилие на емкостную ячейку. Емкостная ячейка посылает сигнал, который интерпретируется микропроцессом 8048, установленным в клавиатуре. Он пересылает идентификатор клавиши, называемый скан-кодом в ПК. ПК определяет, какая клавиша была нажата.
Интерфейс клавиатуры. Интерфейс клавиатуры ПЭВМ, начиная с AT , построен на контроллере i 8042 (или на логически эквивалентном контроллере, интегрированным в микросхемы чипсета, обычно, в южный мост или аналогичный по назначению хаб) и обеспечивает двустороннюю связь с клавиатурой. Причем передача информации к клавиатуре используется для управления индикаторами ее состояния и программирования параметров (автоповтор, набор скан-кодов).
Клавиатура подключается к системному блоку одним из двух видов разъема: обычным 5-контактным (розеткой на системном блоке и вилкой на клавиатуре) DIN , применяемым и в бытовой радиоаппаратуре, или малогабаритным (розеткой на системном блоке) mini - DIN , появившимся в компьютерах семейства PS /2 и получившим аналогичное название. На этот же разъем через плавкий предохранитель поступает и напряжение питания клавиатуры +5 В. Вид разъемов со стороны системного блока и назначение контактов приведены на рисунок 1.46.
Рисунок 1.46 – Разъем подключения клавиатуры
Питание от разъема клавиатуры (через специальные переходники) часто используется при подключении к параллельному порту внешних накопителей или адаптеров локальных сетей. Если при этом предохранитель не выдержит тока, потребляемого этими устройствами (особенно, при включении), то это вызовет, естественно, и отказ клавиатуры – ее индикаторы не будут мигать при включении.
На рисунок 1.47 приведена структурная схема контроллера (одной из его модификаций VIA 82 C 42).
Рисунок 1.47– Структурная схема контроллера клавиатуры
Каждый раз при нажатии клавиши замыкается контакт, находящийся на пересечении строки Х и колонки У матрицы. Сигнал, который при этом вырабатывается, читается процессором 8048 и преобразуется в специальный код, называемый кодом сканирования, который посылается для интерпретации центральному процессору. Каждые 3-5 мс ИС 8048 сканирует матрицу клавиатуры, проверяя колонки по одной, проверяя, какая из линий имеет низкий уровень. Сначала сканируется первая колонка, и состояние контактов каждого ряда в этой колонке читается и сохраняется в памяти. Если замкнуть контакт, то эта точка /пересечение колонки и строки/ будет иметь потенциал 0 вольт. Сканирование продолжается, пока не будут прочитаны все четыре колонки. Каждый код сканирования запоминается в буфере ИС 8048. таким образом, этот буфер отражает состояние всей клавиатуры.
На этом сканирование не прекращается. Далее матрица проверяется на наличие "фантомного состояния контактов " /несколько контактов в прямоугольной области матрицы нажаты одновременно и закодированы неверно/. Если два замкнутых контакта находятся в одной колонке, и одна из двух строк, содержащих замкнутый контакт, имеет еще один замкнутый контакт, возникает "фантомное состояние контакта". Такое состояние распознается ИС 8048 и обычно игнорируется.
Принимаются только "законные" нажатия клавиш /включая двойные и тройные комбинации, когда одна или две клавиши замкнуты, а третья нажимается. Поскольку процесс сканирования выполняется за 3-5 мс, а интервал между нажатиями клавиш составляет 20-50 мс, то матрица сканируется по крайней мере однажды за это время, и неправильный ввод отбрасывается.
Во время сканирования, когда воспринимается замыкание контакта, процессор 8048 ждет несколько миллисекунд, чтобы дать возможность замыканию зафиксироваться. Одна из трудностей при работе с механическими переключателями /клавишами/ состоит в том, что они не замыкаются сразу. Электрически они "подпрыгивают" /переходные процессы/ несколько раз прежде, чем будет достигнут плотный контакт.
Этот "дребезг" дает шумовые выбросы, которые могут быть интерпретированы как значимые сигналы, вызывая такие эффекты, как появление четырех или пяти повторений символа от одного нажатия клавиши.
Чтобы учесть это, процессор 8048 дает небольшую (несколько миллисекунд) задержку, прежде, чем закодировать нажатие клавиши и послать прерывание.
Каждое нажатие клавиши вырабатывает свой код. Специальные функции и символы верхнего регистра можно получить нажатием клавиш Shift, Ctrl, Alt и одного или более символов. BIOS центрального процессора проверяет наличие сигнала специальной клавиши (Shift/Ctrl/Alt) при нажатии других клавиш. Этот сигнал и код сканирования символьной клавиши в результате порождают специальную функцию или символ верхнего регистра.
Процессор 8048 вырабатывает код сканирования при нажатии клавиши и при ее освобождении.
Если держать клавишу нажатой более половины секунды, то 8048 вырабатывает соответствующий код сканирования 10 раз за каждую секунду.
Вы здесь: Главная Статьи Статьи ИТ Как работает клавиатура компьютераКак работает клавиатура компьютера
В большинстве компьютерных систем клавиатура является панелью управления, через которую оператор вводит данные и указывает компьютеру, что с ними делать. В основной массе компьютеров клавиатура, снабженная буквами и цифрами, напоминает печатную машинку.
Когда вы нажимаете на клавишу печатной машинки, символ - к примеру, буква «А» -ударяет в чернильную ленту, и буква отпечатывается на бумаге. Клавиатура компьютера сложнее и многограннее; одна и та же клавиша может соответствовать нескольким символам и командам. Клавиша просто запускает электронный сигнал.
Под клавишами большинства клавиатур находятся два набора проводков - горизонтальных и вертикальных. Когда компьютер включен, микропроцессор клавиатуры посылает электрические импульсы по вертикальным проводкам в поисках сигнала. Когда на клавишу нажимают, проводки под ней соприкасаются, замыкая электрическую цепь. Это указывает микропроцессору на то, что клавиша была нажата; микропроцессор проверяет горизонтальные проводки, чтобы выяснить местонахождение клавиши, и посылает информацию в компьютер.
Сигнал компьютеру. Контакт двух проводков под клавишей замыкает электрическую цепь, посылая сигнал назад в микропроцессор (фиолетовый цвет). Микропроцессор знает, какая клавиша нажата, потому что каждая клавиша активизирует только одну пару проводков. В нашем случае клавиша обозначает букву «А», и микропроцессор генерирует ее цифровой код: 10100001.
Сложное устройство. Когда клавиша нажата, пересекающиеся под ней проводки посылают сигнал в микропроцессор клавиатуры. Микропроцессор регистрирует сигнал и ожидает следующего; в это время освобожденная клавиша возвращается на место при помощи пружины.
Пуск и сканирование. Когда компьютер выключен, микропроцессор клавиатуры (фиолетовый цвет) посылает электрические импульсы (маленькие розовые стрелки) по вертикальным проводкам (черный цвет), расположенным под клавишами (зеленый цвет). Он сканирует слева направо (большая красная стрелка) со скоростью 1000 раз в сек.
Клавиша нажата. Нажатие клавиши (слева) заставляет соприкоснуться вертикальные и горизонтальные проводки, по которым рассылаются сканирующие сигналы.
Организация и использование клавиатуры
В большинстве компьютеров клавиши организованы в QWERTY (справа). Это название происходит от букв, расположенных слева в первом ряду клавиатуры. Компоновка букв QWERTY была специально разработана у первых машин для замедления темпа быстро печатающих людей, чтобы в их машинах не создавались пробки. В клавиатуре компьютера имеется четыре вида клавиш. Клавиши данных вводят буквы, цифры и знаки препинания; клавиши шифтов производят заглавные буквы; контрольные клавиши курсора передвигают курсор по экрану; функциональные клавиши позволяют оператору запускать общие команды всего одним нажатием клавиши.
Клавиатура компьютера — устройство для ввода информации в компьютер и подачи управляющих сигналов. Содержит стандартный набор клавиш печатной машинки и некоторые дополнительные клавиши — управляющие и функциональные клавиши, клавиши управления курсором и малую цифровую клавиатуру.
Стандартная клавиатура ПЭВМ имеет несколько групп клавиш:
алфавитно-цифровые и знаковые клавиши ESC, TAB, ENTER, BackSp;
Функциональные клавиши (F1…F10);
Служебные клавиши для управления перемещением курсора (стрелки Up, Down, Left, Right, Home, End, PgDn, PgUp и клавиша, обозначенная [] );
Служебные клавиши для управления редактированием (Ins, Del)
Служебные клавиши для фиксации регистров (CapsLock, ScrollLock, NumLock);
Разные вспомогательные клавиши (PrtSc)
Можно выделить 3 уровня представления и обработки сигналов, поступающих с клавиатуры – физический, логический и функциональный.
Физический уровень имеет дело с сигналами, которые поступают в системный блок при нажатии и отпускании клавиш. На электронном уровне клавиатура IBM/PC представляет собой небольшой самостоятельный компьютер. Внутри блока клавиатуры размещается микропроцессор, который выполняет задачу слежения за нажатиями и отпусканиями клавиш и передачи их состояния. Микропроцессор выполняет следующие функции:
последовательно опрашивает состояния клавиши, считывая введенный сигнал и вырабатывая двоичный скан-код клавиши;
управляет световыми индикаторами клавиатуры;
проводит внутреннюю диагностику неисправностей;
осуществляет взаимодействие с центральным процессором через порт ввода-вывода клавиатуры. Порты устройств представляют собой некие электронные схемы, содержащие один или несколько регистров ввода-вывода и позволяющие подключать периферийные устройства компьютера к внешним шинам микропроцессора.
Клавиатура имеет встроенный буфер— промежуточную память малого размера, куда помещаются введённые скан-коды символов. В случае переполнения буфера нажатие клавиши будет сопровождаться звуковым сигналом — это означает, что символ не введён (отвергнут). Работу клавиатуры поддерживают специальные программы, "зашитые" в BIOS, а также драйвер клавиатуры, который обеспечивает возможность ввода русских букв (кириллица и латиница), управление скоростью работы клавиатуры и др. Часть задачи обслуживания клавиатуры со стороны системы BIOS заключается в отслеживании, нажата ли в текущий момент триггерная клавиша (клавиша управления регистрами, например,CAPSLOCK).
В качестве датчиков нажатия клавиш применяют механические контакты (открытые или герконовые), кнопки на основе токопроводящей резины, емкостные датчики и датчики на эффекте Холла. Независимо от типов применяемых датчиков нажатия клавиш, все они объединяются в матрицу. Клавиатура содержит внутренний контроллер, выполненный на микросхеме, осуществляющий сканирование матрицы клавиш, управление индикаторами, внутреннюю диагностику и связь с системной платой. Внутренний контроллер клавиатуры способен определить факты нажатия и отпускания клавиш, при этом можно нажимать очередную клавишу, даже удерживая несколько ранее нажатых. При нажатии клавиши клавиатура передает идентифицирующий ее скан-код. При удержании клавиши в нажатом положении через некоторое время клавиатура начинает автоповтор передачи скан-кода нажатия этой клавиши.
Фирма IBM выпускает емкостные клавиатуры. Нижняя часть такой клавиатуры является одной большой обкладкой конденсатора. Клавиша нажимает на пружину, которая в свою очередь нажимает на толкатель. Толкатель передает усилие на емкостную ячейку. Емкостная ячейка посылает сигнал, который интерпретируется микропроцессом, установленным в клавиатуре. Он пересылает идентификатор клавиши, называемый скан-кодом в ПК, который определяет, какая клавиша была нажата.
Под компьютерной клавиатурой находится решетка проводников. Каждая клавиша расположена над пересечением двух проводников и при нажатии замыкает электрическую цепь. Поскольку ток при этом проходит как по вертикальному, так и по горизонтальному проводнику решетки, микропроцессору, встроенному в клавиатуру, достаточно следить лишь за строками решетки, которых меньше, чем «столбцов». Микропроцессор проверяет, не нажата ли какая-нибудь клавиша, посылая ток по каждой строке тысячи раз в секунду. Такое опрашивание происходит непрерывно независимо от того, работает оператор с клавиатурой или нет.
Получив после непрерывного опрашивания решетки миллионы отрицательных результатов, микропроцессор, возможно, обнаружит наконец строку, цепь которой замкнута. Чтобы выяснить, какая из множества клавиш, находящихся в этой строке, вызвала замыкание цепи, микропроцессор, запомнив номер строки, начинает теперь опрашивать столбцы.
Поскольку лишь одна клавиша может замкнуть одновременно цепи строки и столбца, микропроцессор однозначно определяет ее, как только обнаруживает активный столбец. Запомнив нажатую клавишу, микропроцессор передает ее «код» компьютеру. В поисках новой нажатой клавиши микропроцессор «игнорирует» уже обнаруженную до тех пор, пока оператор не отпустит ее. Таким образом, клавиатура фиксирует новые удары по клавишам, хотя первая нажатая клавиша еще не отпущена.
В основе кодирования поступающих от клавиатуры сигналов лежит обычная нумерация клавиш по порядку от 1 до N, где N – общее число клавиш на клавиатуре (102-104).
Клавиатура представляет собой совокупность датчиков, воспринимающих давление на клавиши и замыкающих определенную электрическую цепь, со стандартным разъемом (PS/2, USB) и интерфейсом для подключения к системной плате компьютера. Длительное время выпускались клавиатуры с механическими датчиками. Современные клавиатуры – мембранного типа. Переключатель представляет собой набор мембран: активная – верхняя, пассивная – нижняя, разделяющая. Внутри корпуса клавиатуры помимо датчиков расположены электронные платы дешифрации сигнала. Обмен данными между клавиатурой и системной платой осуществляется 11-битовыми блоками (8 разрядов плюс служебная информация) по 2-проводному кабелю (сигнал и земля). Клавиатура содержит внутренний контроллер, позволяющий производить самотестирование в момент подключения (одновременная индикация светодиодов «NumLock», «CapsLock», «ScrollLock»), управляющий индикаторами и обеспечивающий связь с системной платой ПК посредством последовательного интерфейса. Принцип работы. Принцип работы клавиатуры заключается в сканировании переключателей клавиш. Замыканию и размыканию любого из переключателей соответствует уникальный цифровой код (scan code) размером 1 байт. На системной плате прием и обработку сигналов от клавиатуры выполняет специальная микросхема – контроллер клавиатуры.Внутренний микропроцессор клавиатуры обрабатывает специальный сигнал, поступающий к нему после нажатия любой клавиши и, преобразуя его, последовательно передает центральному процессору сканируемый код. Каждое нажатие клавиши формирует два кода: один по нажатию, другой – по освобождению клавиши.
На логическом уровне, реализуемом базовой системой ввода - вывода, происходит трансляция поступающего с клавиатуры скан-кода в 2-байтовый код. Скан-коды передаются от клавиатуры в компьютер по фактам нажатия и отпускания клавиш. При нажатии клавиши передается ее скан-код - номер, идентифицирующий ее расположение на клавиатуре. При отпускании клавиши клавиатура передает 2 байта: младший из двух байтов содержит ASCII-код, соответствующий изображенному на клавише знаку. Это байт называют главным. Старший байт – вспомогательный - содержит исходный скан-код нажатой клавиши. Генерируемый код определяется тем, к какой группе относится клавиша и нажата ли одна клавиша или комбинация из нескольких. При нажатии функциональной или служебной клавиши или одновременном нажатии некоторых клавиш главный байт содержит не ASCII-код, а 0, что позволяет проверить важный факт, что нажатая клавиша не относится к алфавитно-цифровой группе. Вспомогательный байт при этом содержит уникальный номер, совпадающий со скан-кодом нажатой клавиши или он соответствует определенной комбинации одновременно нажатых клавиш. Сочетание главного и вспомогательного кода, когда первый из них равен 0, называют расширенным ASCII-кодом.
Когда микропроцессор клавиатуры посылает сигнал компьютеру, он лишь сообщает расположение нажатой клавиши. Чтобы обработать сигнал, компьютер должен перевести его код в смысловое значение, соответствующее данной клавише. В специальном электронном списке - таблице перекодировки - каждому коду, описывающему расположение клавиши, поставлено в соответствие двоичное число, служащее кодом определенного символа, например буквы или цифры.В дальнейшем в процессе обработки данных используется именно это двоичное число. Таблица перекодировки может храниться в постоянной памяти компьютера. Обычно она определяет значения клавиш согласно стандартным функциям большинства компьютеров: например, вводу числовых данных или обработке текстов с использованием определенного алфавита.Блок клавиатуры не связывает с клавишами никаких конкретных значений. Вместо этого, блок клавиатуры идентифицирует по ее номеру или коду сканирования. При нажатии клавиши блок клавиатуры передает ее код сканирования центральному процессору. Когда клавиша отпускается, клавиатура снова передает ее код, но увеличенный на 128 (или шестнадцатиричное значение 80). Таким образом, имеются различные коды для нажатия и освобождения клавиш. Клавиатура IBM/PC передает сигналы не только о нажатии, но и об освобождении клавиши.
При нажатии любой клавиши в системный блок посылается код, соответствующий её порядковому номеру, который называется также скан-кодом. При отпускании клавиши также генерируется её номер, увеличенный на 128 (дополнительный скан-код).
На функциональном уровне отдельным клавишам программным путем сопоставляются определенные функции, которые реализуются при нажатии этих клавиш. Клавишам могут приписываться последовательности символов или команды смены режимов, смены дисплейных окон и т.д.
После нажатия клавиши клавиатура посылает процессору сигнал прерывания и заставляет процессор приостановить свою работу и переключиться на программу обработки прерывания клавиатуры. При этом клавиатура в своей собственной специальной памяти запоминает, какая клавиша была нажата (обычно в памяти клавиатуры может храниться до 20 кодов нажатых клавиш, если процессор не успевает ответить на прерывание). После передачи кода нажатой клавиши процессору эта информация из памяти клавиатуры исчезает.
Кроме нажатия клавиатура отмечает также и отпускание каждой клавиши, посылая процессору свой сигнал прерывания с соответствующим кодом. Таким образом, компьютер "знает", держат клавишу или она уже отпущена. Это свойство используется при переходах на другой регистр, например при написании заглавных букв. Кроме того, если клавиша нажата дольше определенного времени, т.н. "порог повтора" - обычно около половины секунды, то клавиатура генерирует повторные коды нажатия этой клавиши.
Когда процедура обслуживания клавиатуры обрабатывает коды, принимаемые от клавиатуры, она постоянно проверяет появление одной из четырех особых комбинаций, которые обслуживаются специальным образом. Фактически, эти четыре комбинации рассматриваются как команды, по которым должно начинаться выполнение определенных служебных процедур. Эти четыре комбинации: Ctrl-NumLock, PrtSc, Ctrl-Alt-Del и Ctrl-Break.
Ctrl-NumLock - эта комбинация используется системой BIOS для управления состоянием захвата, которое программам обнаружить трудно, поскольку в этом состоянии программы не выполняются. В состоянии захвата система BIOS выполняет короткий цикл, ожидая нажатия клавиши, которое выводит систему из этого состояния. В этом состоянии распознаются и обслуживаются все прерывания.
Команда распечатки экрана или PrtSc предназначена для вывода содержимого экрана на устройство печати.
Комбинация клавиш Ctrl-Alt-Del используется для перезапуска или для перезагрузки системы. Когда встречается такая комбинация, процедура обслуживания клавиатуры передает управление программе проверки системы и запуска работы операционной системы. Эту комбинацию клавиш можно использовать в любой момент времени для перезапуска системы, если произошло какое-либо отклонение от нормального функционирования. В некоторых случаях IBM/PC необходимо бывает выключить, а затем снова включить и уже после этого пытаться ее перезапустить.
Комбинация Ctrl-Break предназначена для прерывания текущей операции. В отличие от остальных трех специальных комбинаций она может отрабатываться программно.
Процедуры системы BIOS в ПЗУ могут распознавать отличие повторных нажатий клавиши от повторения сигнала удерживаемой в нажатом состоянии клавиши, путем анализа кодов сканирования освобожденной клавиши. Если для одной и той же клавиши получены два кода нажатой клавиши и между ними не было кода освобожденной клавиши, значит клавиша удерживается процедурами системы BIOS для подавления функции повторения тех клавиш, которым она не нужна, таких как, например, клавиша смещения (shift).
Блок клавиатуры сообщает, что происходит с клавиатурой: какие клавиши нажимаются, какие освобождаются и, через определенный промежуток времени, какие удерживаются в нажатом состоянии. Система BIOS в ПЗУ интерпретирует получаемую от блока клавиатуры информацию, придавая ей определенный смысл. Блок клавиатуры занимается физической стороной, механизмом функционирования клавиатуры, а программы системы BIOS в системном блоке выполняют все логические операции по интерпретации действий клавиатуры.
На основании предыдущих наработок с автоматом состояний сделаем очень полезный модуль. Он позволит нам расширить сферу применения отладочного комплекта при помощи подключенной клавиатуры. Благо, для этого имеется специальный разъем. До эпохи тотального применения интерфейса USB , при подключении клавиатуры и мыши к вычислительным устройствам применялся интерфейс PS/2 .
Внешний вид клавиатуры и напряжений в интерфейсе PS/2 Внешний вид клавиатуры и напряжений в интерфейсе PS/2Он передавал коды нажатых клавиш используя две сигнальных линии. Одна тактирующая линия, вторая информационная. Код нажатой клавиши представляет собой восьмибитное число. Линия данных передает биты последовательно один за другим, сопровождая каждый бит фронтом тактового импульса.
На стороне вычислителя встает задача принять последовательность бит для дальнейшего использования. Что мы наблюдаем в сигнальных линиях. На линии данных при отсутствии информации выставлена единица.
Детальное рассмотрение кадра данных и проектируемого автомата состояний Детальное рассмотрение кадра данных и проектируемого автомата состоянийПеред началом передачи кода нажатой клавиши выставляется так называемый стартовый бит уровня логического нуля. Далее передаются 8 бит кода начиная с младшего бита, заканчивая старшим. После идет бит четности. Он служит для проверки целостности кода. Завершает последовательность стоп бит . Его уровень единица. Каждый бит сопровождается передним фронтом тактового сигнала.
Зная каким образом решаются такие задачи, проектируем граф состояний. В начальном состоянии startbit ожидается появление стартового бита уровня логического нуля. Если приходят единицы, то остаемся в этом состоянии. Как только ноль появился, то переходим в состояние data считывания кода нажатой клавиши. Находимся в этом состоянии 8 тактов по числу бит в коде. Сохраняем каждый приходящий бит в регистре для хранения кода. Автоматически переходим в новое состояние parity , где считывается бит четности. В этой учебной задаче мы его никак не будем обрабатывать. В последнем состоянии stop считываем стоповый бит. Проверим его уровень и только если он единичный, то выставим принятый код на выход устройства. Нулевой стоповый бит говорит о какой-то ошибке. В этом случае код нажатой клавиши не выставляем, но все равно переходим в начальное состояние ожидания стартового бита.
Разработанный граф состояний довольно простой. Давайте представим как будет выглядеть схема контроллера интерфейса.
Каждый новый бит попадет на вход регистра, где формируется код нажатой клавиши. У этого регистра есть вход разрешения, который управляется из автомата состояний. Это позволяет писать только те биты, которые нужно. А какие биты писать нужно, решается на основании счетчика приходящих бит и уровня информационной линии. Также автомат состояний управляет процессом выставления кода на выход модуля и появлением сигнала о готовности кода.
Код контроллера
Пишем код контроллера интерфейса. Так как будем показывать коды клавиш на индикаторах , то описываем их линии активации. У интерфейса две линии. Данные и сигнал. На выходе модуля сигнал о готовности кода и сам код.
Опишем все возможные состояния автомата.
Для работы модуля пригодится несколько регистров. Это регистр текущего состояния, регистр для накопления бит кода клавиши, регистр счетчика бит. Также пригодятся два провода для передачи сигналов с двух линий интерфейса передачи данных.
Обнулим состояние всех регистров, в том числе и регистра состояния автомата.
На индикаторы отправляются соответствующие сигналы для их активации.
Отправляем сигналы со входа модуля в провода.
В процедурном блоке описываем поведение автомата состояний по приходу переднего фронта тактового импульса от клавиатуры. В состоянии ожидания стартового бита если приходит нулевой, то переходим к считыванию информационных бит. Если на входе единица, то информации нет, остаемся в ожидании. Сбрасываем состояние регистра кода и убираем с выхода сигнал о готовности кода.
В состоянии приема информационных бит каждый такт увеличивается счетчик бит, очередной бит смещает собой вправо все содержимое сдвигового регистра. Сигнала о готовности кода все еще нет. Если количество бит восемь, то следующее состояние будет прием бита четности. Сбрасываем счетчик бит. Если бит еще не восемь, то остаемся в этом же состоянии.
В состоянии проверки бита четности ничего не проверяем, готовности кода нет, следующее состояние это стоп бит.
При приеме последнего бита следующим состоянием будет начальное. Если стоп бит единица, что правильно, то на светодиоды выставляем содержимое регистра кода. Готовность единица. Если стоп бит не единица, то содержимое регистра светодиодов оставляем как было, сигнала готовности не будет.
Моделируем разработанный контроллер.
В тестовом модуле имитируем сигнал клавиатуры.
Тактовый сигнал идет постоянно. После стартового бита идут 4 нуля, потом 4 единицы. Каждый новый приходящий бит увеличивает счетчик бит на единицу. При этом в регистре кода его содержимое смещается от каждого приходящего бита. Как только стоп бит единица то на выход выставляется сигнал готовности кода и сам код нажатой клавиши.
Эксперимент
Проводим эксперимент. Постоянно нажимаем единицу. Каждый раз меняется содержимое регистра. Это значит неправильно считывается уровень сигнала. И сейчас будет еще один важный урок.
Дребезг бывает не только на механических переключателях. Несогласованная линия передачи данных при смене состояния дает затухающие колебания.
Иногда вычислитель воспринимает этот звон как многократно появляющийся передний фронт.
Для устранения дребезга подойдет ранее разработанный модуль. Просто ставим его на сигнальные линии с клавиатуры. Необходимо снизить в нем период ожидания. Импульсы с клавиатуры гораздо более быстрые, чем способности человека нажимать клавишу. Ничего не остается как сделать это примерно на глаз.
В этом выпуске мы ознакомились с понятием автомата состояний, научились его проектировать и применять, ознакомились с интерфейсом передачи данных с клавиатуры и получили весьма наглядный урок, касающийся искажений сигнала в линиях. Нам опять помог наш полезный модуль борьбы с дребезгом.
Исходный код
Видео-обзор с канала YouTube
Поддержите статью лайком если понравилось и подпишитесь чтобы ничего не пропускать.
« Когда мы нажимаем клавишу на клавиатуре, она нажимает на резиновую кнопку в форме купола, которая в свою очередь электрически соединяет верхний и нижний слои в этой точке, и сигнал отправляется на ИС УДАРА. ИС обрабатывает сигнал и отправляет его на компьютер через порт PS2 или USB. "- EngineeringGarage (ctrl + f, чтобы найти его)
Сигнал передается в двоичный процессор? (например, буква "а" = 00000001)?
2 ответа 2
Все, что отправлено на процессор, является двоичным. Это также шестнадцатеричный, десятичный и восьмеричный тоже. Двоичный код - это просто самое простое представление для "работы" с операциями внутри процессора и интегральными схемами. Биты могут располагаться бок о бок, как в параллельной шине, или взяты по одной за раз (последовательно), но когда они взяты как группа, данные, которые они представляют, могут быть показаны любым удобным для вас способом. Процессор использует двоичные представления, арифметику и логику, но фактические данные, с которыми он работает, будут либо группой битов, которые, если смотреть в одну сторону, являются "просто" последовательностью 1 и 0, а другим способом - буквой "a". ,
Если вы посмотрите на любую заданную строку данных на ЦП в данный момент, то это будет либо 1, либо 0, но для того, чтобы получить какую-либо полезную информацию, вам понадобится либо группа, либо серия битов, которая составляет байт или последовательность байт.
Когда вы нажимаете клавишу тогда, когда вы говорите, что сигнал посылается через различные интегральные схемы, пока сигнал в ЦП фактически не говорит a key was pressed, can you run some code to find out what? в этот момент процессор сообщит операционной системе, которая, в свою очередь, обнаружит драйвер, ответственный за чтение устройства клавиатуры, который, в свою очередь, исчезнет и (через процессор и другие микросхемы) запросит устройство, спрашивая, какая клавиша была нажата.
Что касается того, что возвращается как "нажатие клавиши", то это не что иное, как данные. Это одновременно шестнадцатеричный, десятичный, двоичный и символ "А".
В общем, ответ - да, но, конечно, более глубокий ответ не может быть таким простым, как "да", не так ли!
Теперь информация ("сигнал") о том, что одна или несколько клавиш не работают, кодируется парой цифр на ИС клавиатуры. Что, конечно, двоичное число (не может быть ничего другого!). И . ничего не отправляется! Чего ждать? Да это правильно.
Клавиатура будет отправлять и ретранслировать до трех раз, если компьютер обнаружит ошибку CRC, поэтому передача также является не просто запуском, а несколько более сложным протоколом.
Читайте также: