Опубликован: 24.04.2009 | Доступ: свободный | Студентов: 978 / 217 | Оценка: 4.39 / 4.28 | Длительность: 18:45:00
Специальности: Программист
Лекция 2:

Введение в архитектуру ввода/вывода встроенных систем

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Аннотация: Лекция рассматривает архитектуру ввода-вывода встроенных систем.


Выше представлена часть фотошаблона печатной платы (PCB) для встроенной системы. Различные цвета линий соответствуют различным медным слоям на PCB. Светло-желтые прямоугольники являются шелкографией, которая помечает места, где припаивают устройства. Сероватые точки являются монтажными отверстиями. Фотография с разрешения Henrik Christophersen.

Введение в архитектуру ввода/вывода встроенных систем

Чтобы понять, как оборудование ввода/вывода (В/В) соединяется с процессором, и как программное обеспечение общается с этими устройствами В/В, рассмотрим сейчас архитектуру В/В, которая аналогична тому, что можно найти в современных встроенных устройствах.

Процессоры должны пересылать данные в память и в устройства ввода/вывода (В/В) по шине, как показано на рисунке 2.1. Шина содержит адресную информацию, значение данных для пересылки, и информацию о статусе шины, которая указывает операцию, выполняемую шиной (т.е., чтение или запись).

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

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

Архитектура с одной шиной использовалась в первых компьютерах. Современные системы являются более сложными и содержат фактически иерархию различных шин

Рис. 2.1. Архитектура с одной шиной использовалась в первых компьютерах. Современные системы являются более сложными и содержат фактически иерархию различных шин

Пример шины микропроцессора первого поколени

Чтобы понять, как шины действуют в компьютере, и как они используются в оборудовании В/В, мы начнем с рассмотрения шины микропроцессора первого поколения. Шина ISA (Industry Standard Architecture) была введена на первых ПК компании IBM в начале 1980-х. Шина ISA использовалась для соединения плат, вставляемых в ПК первого поколения. ISA поддерживает пересылку 8-битных и 16-битных данных. PC/104 является промышленной версией этой шины, которая позволяет платам располагаться стеком и взаимосвязываться, что еще используется в некоторых встроенных системах. Более поздние версии расширяют шину ISA до 32-битной шины, называемой Extended Industry Standard Architecture (EISA).

Устройство, которое инициирует передачу по шине называется мастером шины или инициатором. Шина ISA используется для передачи данных между памятью, устройствами В/В, и процессором. Сигнал синхронизации шины используется для привязки по времени для передачи по шине. Синхронизация шины ISA обычно находится в диапазоне от 4 до 8 Мгц. Синхронизация шины ISA независима от синхронизации процессора, они имеют разную частоту. Типичный цикл шины ISA требует от 5 до 6 синхроимпульсов шины. Шина ISA содержит адресную шину, шину данных, и несколько линий состояния шины. Адресная шина содержит адрес памяти или выбранного устройства В/В, а шина данных содержит значение для передачи. Каждое устройство В/В должно иметь уникальный адрес В/В. Схема декодирования адреса в каждом устройстве проверяет адресную шину и определяет, когда адрес устройства присутствует в шине.

Пример декодера 4-битного адреса, созданного с помощью вентиля AND, показан на рисунке 2.2. При использовании цифровых логических вентилей простой декодер адреса состоит из большого вентиля AND, который имеет все адресные линии в качестве входов, с инверторами, добавленными на адресных битах, которые заданы на нижнем уровне в двоичном значении адреса устройства. Логическая диаграмма простого декодера адреса для 4-битного адреса (A3..A0) показана ниже. Выход вентиля AND будет на верхнем уровне только когда во входах присутствует значение адреса 0xA. Схема реального декодера адреса должна будет проверять все биты адреса на шине адреса (если только некоторые адреса не являются алиасами). В реальном устройстве должно декодироваться более чем 4 линии шины адреса. Типичным является от 16 до 32 линий адреса и будет требоваться несколько уровней вентилей, так как большинство технологий логических вентилей могут поддерживать только от 4 до 5 входов на логический вентиль.

Схема простого декодера адреса для 4-битного адреса = 0xA

Рис. 2.2. Схема простого декодера адреса для 4-битного адреса = 0xA

Четыре основные линии состояния шины указывают на тип цикла передачи шины, чтение памяти (MEMR), запись в память (MEMW), чтение В/В (IOR), или запись В/В (IOW). В шине ISA все эти линии состояния шины будут активными на нижнем уровне (т.е., низкий уровень сигнала указывает тип передачи). Только один из этих сигналов состояния будет обычно активным (т.е., низким) в любое заданное время. Шина ISA имеет ряд других сигнальных линий, но мы обсудим только основные.

Большинство сигналов шины управляются с помощью логических устройств с тремя состояниями. Вспомните, что логика с тремя состояниями имеет третье состояние, которое является высоким импедансом или отсутствием соединения, как видно на рисунке 2.3. Буфер с тремя состояниями имеет дополнительную управляющую линию, которая заставляет его действовать в точности как обычный буфер или переходить в состояние высокому импедансу (Z используется для импеданса), т.е. отсоединяться. Это позволяет нескольким устройствам управлять шиной, но только по очереди. Только одно устройство в данный момент времени включает свое управление с тремя состояниями, чтобы заставить свои выводы задавать сигналы шины высокими или низкими. Это возможно, так как каждому устройству В/В задан свой собственный уникальный диапазон адресов В/В, на которых оно отвечает.

Буфер с тремя состояниями. Для управления большинством сигналов шины должны использоваться выходы логического вентиля с тремя состояниями

Рис. 2.3. Буфер с тремя состояниями. Для управления большинством сигналов шины должны использоваться выходы логического вентиля с тремя состояниями

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

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

Первые ПК имели предварительно заданные диапазоны адресов В/В для обычных устройств В/В на шине ISA, как показано в таблице 2.1. Чтобы сэкономить несколько вентилей и несколько микросхем в схемах декодирования адреса на платах В/В ISA, конструкторы первых ПК кодировали только нижние 10 битов адреса В/В. Для современных устройств VLSI несколько вентилей больше не являются существенной заботой конструктора, но это задание адресов продолжает использоваться в современных ПК, чтобы обеспечить обратную программную совместимость.

Таблица 2.1. Стандартное задание адресов в/в ПК
Диапазон адресов в/в Устройство в/в
000h - 00Fh контроллер DMA
020h – 021h контроллер прерываний
040h- 043h таймер
060h- 063h контроллер клавиатуры
070h – 071h часы реального времени
080h – 083h регистр страниц DMA
0A0h – 0AFh 2-ой контроллер прерываний
0C0h – 0CFh 2-ой контроллер DMA
0E0h – 0FFh зарезервировано
200h – 207h игровой адаптер
278h - 27Fh параллельный принтер (LPTx:)
2E8h - 2EFh последовательный порт 4 (COM4:)
2F8h - 2FFh последовательный порт 2 (COM2:)
378h - 37Fh параллельный принтер (LPT1:)
3B0h - 3BBh адаптер MDA
3BCh - 3BFh параллельный принтер (LPTx:)
3C0h - 3CFh адаптер VGA/EGA
3D0h - 3DFh адаптер CGA
3E8h - 3EFh последовательный порт 3 (COM3:)
3F0h - 3F7h контроллер флоппи-диска
3F8h - 3FFh последовательный порт 1 (COM1:)

Примечание: Первые ПК декодировали только нижние 10 битов адреса В/В.

Пример операции записи В/В шины ISA

Рис. 2.4. Пример операции записи В/В шины ISA

Цикл записи ISA показан на рисунке 2.4. Сначала мастер шины (обычно процессор) посылает адрес памяти или В/В по линиям системного адреса (SAx). После завершения одного полного цикла синхронизации шины для стабилизации схем декодирования адреса, мастер-устройство посылает данные по линиям системных данных (SDx) и задает уровень линии состояния записи В/В (IOWR) как низкий. Все линии остаются стабильными в течение нескольких циклов синхронизации шины, чтобы обеспечить распространение сигнала и настройку.

Затем сигнал IOWR поддерживается высоким, а целевое устройство (обычно устройство В/В) сохраняет значение шины данных на положительной волне сигнала IOWR. Значение шины данных должно сохраняться в целевом устройстве с помощью регистра, так как оно присутствует только в течение нескольких циклов синхронизации, прежде чем в шине данных появится другое значение. Вспомните, что регистры можно создавать, используя по одному D-триггеру на бит и соединяя все входы.

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

Цикл чтения ISA показан на рисунке 2.5. Сначала мастер шины (обычно процессор) посылает адрес памяти или В/В по линиям системного адреса (SAx). После завершения одного полного цикла синхронизации шины для стабилизации схем декодирования адреса, мастер-устройство задает сигнал линии состояния чтения В/В (IOR) как низкий. Целевое устройство воспринимает свой уникальный адрес в шине адреса (используя схему декодера адреса для проверки своего адреса), и воспринимая сигнал состояния IOR, указывающий на цикл чтения В/В, он включает свои драйверы шины данных с тремя состояниями и посылает данные по линиям системных данных (SDx). Все линии остаются стабильными в течение нескольких циклов синхронизации шины, чтобы обеспечить распространение сигнала и настройку. IOR затем поддерживается высоким, и мастер-устройство сохраняет значение шины данных. Мастер-устройство затем освобождает адресную шину, а целевое устройство освобождает шину данных, выключая свои драйверы с тремя состояниями, чтобы задать для следующего цикла шины.

Пример операции чтения В/В шины ISA

Рис. 2.5. Пример операции чтения В/В шины ISA

Прерывания и циклы DMA могут запрашиваться устройствами по шине ISA с помощью линий Interrupt Request IRQx и линий запроса DMA DRQx. Сигнал сброса (RESET DRV) можно использовать для инициализации устройств при включении питания.

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Роман Пархоменко
Роман Пархоменко
Россия, Sankt Piterburg, 182, 1997
Олег Корсак
Олег Корсак
Латвия, Рига