Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТСИ.docx
Скачиваний:
84
Добавлен:
23.04.2019
Размер:
356.72 Кб
Скачать
  • Прием из кабеля сигналов, кодирующих битовый поток.

  • Выделение сигналов на фоне шума. Эту операцию могут выполнять различные специализированные микросхемы или сигнальные процессоры DSP. В результате в приемнике адаптера образуется некоторая битовая последовательность, с большой степенью вероятности совпадающая с той, которая была послана передатчиком.

  • Если данные перед отправкой в кабель подвергались скремблированию, то они пропускаются через дескремблер, после чего в адаптере восстанавливаются символы кода, посланные передатчиком.

  • Проверка контрольной суммы кадра. Если она неверна, то кадр отбрасывается, а через межуровневый интерфейс наверх, протоколу LLC передается соответствующий код ошибки. Если контрольная сумма верна, то из MAC-кадра извлекается кадр LLC и передается через межуровневый интерфейс наверх, протоколу LLC. Кадр LLC помещается в буфер оперативной памяти.

    1. Интерфейсы клавиатуры и мыши.

Первое – это описание контактов разъема PS2. В разъеме MINIDIN 6 контактов, но используются только 4 из них.

Слева нарисован разъем, который вставляется. Он устанавлявается на шнур мыши или клавиатуры. Справа нарисован разъем устанавливаемый на материнскую плату компьютера. Нумерация контактов у них, естественно зеркальная, потому, что при вставлянии одного разъема в другой сигналы одного имени должны совпадать.  Сигналы интерфейса:

  1. Data (передаваемые данные)

  2. Not Implemented (не используетя)

  3. Ground (Земля)

  4. VCC (+5V) (Питание)

  5. Clock (сигнал синхронизации передаваемых данных)

  6. Not Implemented (не используется).

Второе – это электрический интерфейс. Клавиатура (или мышь) подключена к контроллеру на материнской плате по схеме «открытый коллектор». Что это такое? Схему можно нарисовать примерно так:

Схема «открытый коллектор» используется когда одним сигналом могут управлять несколько устройств. В нашем случае это контроллер на материнской плате и контроллер внутри клавиатуры. Они могут передавать данные навстречу друг другу. Например Клавиатура посылает коды нажатых клавиш, а компьютер посылает в клавиатуру команду зажечь светодиоды CAPS/NUM/SCROLL LOCK. В исходном состоянии, когда данные не передаются, оба сигнала Data и Clock находятся в логической единице (на них напряжение +5В). Такое состояние будет если оба контроллера снимут управляющее напряжение с транзисторов (ClockOut и DataOut) и они закрыты. Так как транзисторы закрыты, то сигналы «подтянуты вверх» к напряжению питания резисторами. Читать текущее состояние сигналов оба контроллера могут прямо с контактов DataIn и ClockIn. Управлять линией очень легко. Контроллер подает управляющее напряжение на базу транзистора (сигналы DataOut и ClockOut), он открывается, через него течет ток и соответствующий сигнал Data или Clock получается «притянут к земле», на нем получается логический ноль. Что делать если оба контроллера захотят одновременно передать навстречу друг другу? Ну во-первых, ничего страшного на физическом уровне не случится, ведь «притянутый к земле» сигнал «притянуть» еще раз не получится. Во-вторых, конечно это проблема для уровня передачи данных. Оба контроллера, как два вежливых собеседника, должны уметь слушать друг друга и дослушать до конца. Это обеспечивается специальным протоколом. Например контроллер, перед передачей своих данных не должен начинать передачу данных если состояние сигналов недавно менялось.

Третье - это протокол. При передаче от устройства (PS2 клавиатуры или PS2 мыши) к компьютеру используется следующий протокол. Устройство не начинает передачу, если Clock не находился в «1» по крайней мере 50 микросекунд. Устройство передает последовательно:

  1. старт бит – всегда ноль;

  2. 8 бит данных;

  3. бит четности;

  4. стоп бит – всегда единица.

Устройство устанавливает/меняет сигнал Data когда Clock находится в логической единице. Контроллер на материнской плате читает данные, когда Clock находится в логическом нуле. Примерно так:

Частота сигнала Clock примерно 10-16.7кГц. Время от фронта сигнала Clock до момента изменения сигнала Data не менее 5 микросекунд. Так написано в той статье, на которую я сделал ссылку в начале. Четно говоря я очень сомневаюсь, что производители придерживаются этих значений.  Контроллер материнской платы может сигнализировать устройству о невозможности приема опустив сигнал Clock в логический ноль. На практике этого по моему тоже никто не делает. При передаче в обратную сторону команд от контроллера на материнской плате компьютера к клавиатуре или мыши протокол отличается от описанного выше. Последовательность передаваемых бит здесь хитрее:

  1. хост контроллер опускает сигнал Clock в ноль на время примерно 100 микросекунд;

  2. хост контроллер опускает сигнал Data в ноль формируя старт бит;

  3. хост контроллер отпускает сигнал Clock в логическую единицу, клавиатура фиксирует старт бит;

  4. далее клавиатура генерирует сигнал Clock, а хост контроллер подает передаваемые биты;

  5. после того, как хост контроллер передал все свои биты, включая бит четности и стоп бит, клавиатура посылает последний бит «ноль», который является подтверждением приема.

Поскольку одним сигналом управляют два устройства, то довольно трудно понять, кто в данный момент времени управляет сигналом. Именно по этому диаграмма нарисована двумя цветами. Красный цвет – сигнал управляется хост контроллером, а синий – сигнал управляется клавиатурой.

Четвертое - это коды и команды, которые посылают мыши, клавиатуры и контроллер компьютера. Это довольно сложная тема... Пожалуй опишу все это в следующей статье.