Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
рыбак.docx
Скачиваний:
35
Добавлен:
21.09.2019
Размер:
2.35 Mб
Скачать

2.5.1. Контроллеры устройств. Регистры устройств и их адресация.

Устройства ввода-вывода обычно состоят из двух частей:

  • механическая (не надо понимать дословно) - диск, принтер, монитор

  • электронная - контроллер или адаптер

Если интерфейс между контроллером и устройством стандартизован (ANSI, IEEE или ISO), то независимые производители могут выпускать совместимые как контроллеры, так и устройства. Например: диски IDE или SCSI.

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

Контроллер - специализированное техническое устройство, предназначенное для управления другими устройствами путем получения информации в виде цифровых данных или аналого-дискретного сигнала от внешнего устройства (ЭВМ, датчики или иное устройство), преобразования этой информации по специальному алгоритму и выдачи управляющих воздействий в виде цифрового или аналого-дискретного сигнала. Чаще всего контроллеры представляют собой программируемые устройства, имеющие в своем составе программируемые логические интегральные схемы (ПЛИС) или специализированные процессоры.

Примеры контроллеров:

- контроллер информационной шины (PCI, SCSI и т. п.);

- контроллер видеомонитора (видеоадаптер);

- контроллер газораспределительной системы и системы зажигания в автомобиле; - контроллер управления стиральной машиной, кондиционером и т. д.

Простые регистры, служащие для связи центрального процессора с периферийными устройствами, получили более подходящее в данном случае название: регистры ввода—вывода. Эти регистры позволяют обмениваться информацией лишь со встроенными периферийными устройствами самой микросхемы. Такими, как таймеры, компараторы, каналы последовательной передачи информации, система прерывания, АЦП и т. д.

Каждый регистр ввода—вывода имеет свой номер, то есть адрес в адресном пространстве ввода—вывода. Номера регистров могут иметь значение от $00 до $3F. Это означает, что максимально возможное количество РВВ равно 64. Однако реальное количество регистров любого микроконтроллера всегда меньше. Разные микроконтроллеры имеют разный набор регистров ввода—вывода.

Каждый регистр ввода—вывода, помимо номера, имеет свое уникальное имя.

С программной точки зрения, устройство (или его контроллер) обычно представлено одним или несколькими регистрами. Регистр устройства — это адресуемое машинное слово, используемое для обмена данными или сигналами между устройством и процессором. Можно выделить два основных типа регистров.

1)         Регистр данных служит для обмена данными. Запись данных в такой регистр (если она возможна) означает вывод данных на устройство, чтение данных из регистра — ввод с устройства.

2)         Регистр управления и состояния содержит два типа двоичных разрядов (битов). Биты состояния служат для передачи процессору информации о текущем состоянии устройства (например, флагов готовности и ошибки, сигналов прерывания). Биты управления служат для передачи на устройство команд, позволяющих задать выполняемую операцию, запустить выполнение операции, установить режимы работы устройства и т.п.

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

- Отображение регистров устройств на память. При этом способе для устройств отводится определенная часть адресного пространства памяти, а для работы с устройствами можно использовать те же команды, что и для работы с основной памятью (например, команду MOV).

- Адресация регистров через порты ввода/вывода. Для портов отводится отдельное адресное пространство, и для работы с ними имеются специальные команды (например, IN и OUT).

Первый способ удобнее для программирования, поскольку позволяет использовать более широкий набор команд. Однако этот способ труднее реализовать на аппаратном уровне, поскольку аппаратура должна определять, относится ли конкретный адрес к памяти или к устройству, и по-разному обрабатывать эти два случая.