Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка пргр МП.docx
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
16 Мб
Скачать
☆

1.2.5 Порт ввода-вывода

Порт можно определить как точку, через которую осуществляется взаимодействие с каким-либо блоком в системе ввода-вывода, многоразрядный вход или выход устройства. Порт ввода-вывода – это логическая адресуемая единица СВВ, которая характеризуется: адресом, форматом данных и набором операций, которые к этому порту можно применять. Взаимодействие может осуществляться как программным путем, так и аппаратным (порт – разъем устройства).

В случае программного взаимодействия совокупность портов нумеруется и представляет собой адресное пространство (т.е. к каждому порту доступ осуществляется по его адресу). Различают порты ввода, вывода и двунаправленные (ввода-вывода). Управление блоками СВВ через порты осуществляется путем записи в них или чтения из них данных. При обращении к порту на линии системного интерфейса выставляется его адрес, который распознается специальным блоком – адресным декодером (или селектором адресов, что то же самое), – расположенным в устройстве, к которому приписан данный порт. Адресный декодер затем инициирует процесс обмена данными (запись или чтение, в зависимости от управляющих сигналов), см. первый пример на рис. выше. Надо сказать, что кроме наличия «нужного» адреса на линиях системного интерфейса для начала процесса обмена с устройством необходимы еще определенные значения управляющих сигналов («чтение», «запись», «Chip-Select» и т.п.). Одному и тому же устройству может соответствовать несколько портов, идущих друг за другом (диапазон адресов) или иначе (вразброс по адресному пространству портов), через которые осуществляется доступ к разным механизмам устройства или к различным частям одного механизма (например, один порт представляет собой регистр адреса внутренней памяти устройства, а через другой пересылаются данные).

Примеры: COM-порт в PC/AT, пространство портов ввода-вывода, порт контроллера ПДП (DMA).

На рис. ниже изображены два примера взаимодействия с устройством через порты. Первый пример иллюстрирует механизм распознавания номеров (адресов) портов, к которым происходит обращение через системный интерфейс. Этот механизм был описан в предыдущем параграфе. Второй пример показывает, как через один и тот же порт может осуществляться доступ к разным ячейкам внутренней памяти устройства. В примере по каждому факту записи через порт адрес ячейки внутренней памяти, в которую будет производиться следующая запись, увеличивается на единицу. Факт записи устанавливается следующим образом: селектором адреса выделяется адрес порта устройства в виде активного сигнала на выходе (т.е. на выходе блока СА), этот сигнал объединяется по «И» с сигналом записи системного интерфейса. На рисунке довольно абстрактно изображена работа с блоком памяти: изображены не все сигналы, не конкретизированы их источники, показано, что из памяти осуществляется чтение из остальной части устройства и др. – это не принципиально для примера, его цель – показать, как можно организовать доступ к разным ресурсам устройства через один и тот же порт. Вместо памяти можно с таким же успехом поставить несколько блоков, которые будут поочередно выбираться тем же счетчиком (СЧ на рисунке), а вместо доступа по записи можно организовать доступ по чтению или двусторонний обмен (чтение и запись).

Рис. 4. Примеры аппаратной реализации портов ввода-вывода

Необходимо отметить, что формат данных, передаваемых через порт, не ограничивается форматом данных, пересылаемых через системный интерфейс. Под форматом данных подразумевается как их разрядность, так и положение значащих разрядов. Пусть, например, шина данных системного интерфейса имеет разрядность 8 бит, а в порт записываются четырехбитные данные, причем эти четыре бита могут быть выделены маской 00111100b (единицы соответствуют выделяемой тетраде). В этом случае необходимо считать данными при обмене через порт только эти разряды. Или пусть у нас 14разрядный порт, а шина данных - 8-разрядная: данные будут считаться записанными в порт только тогда, когда по одному и тому же адресу будут записаны сначала младшие 8 разрядов (одна операция с 8-битной шиной данных), а затем – старшие 6 (в виде записи байта, из которого только 6 бит принимаются за данные).