Введение в архитектуру ввода/вывода встроенных систем
Выше представлена часть фотошаблона печатной платы (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 входов на логический вентиль.
Четыре основные линии состояния шины указывают на тип цикла передачи шины, чтение памяти (MEMR), запись в память (MEMW), чтение В/В (IOR), или запись В/В (IOW). В шине ISA все эти линии состояния шины будут активными на нижнем уровне (т.е., низкий уровень сигнала указывает тип передачи). Только один из этих сигналов состояния будет обычно активным (т.е., низким) в любое заданное время. Шина ISA имеет ряд других сигнальных линий, но мы обсудим только основные.
Большинство сигналов шины управляются с помощью логических устройств с тремя состояниями. Вспомните, что логика с тремя состояниями имеет третье состояние, которое является высоким импедансом или отсутствием соединения, как видно на рисунке 2.3. Буфер с тремя состояниями имеет дополнительную управляющую линию, которая заставляет его действовать в точности как обычный буфер или переходить в состояние высокому импедансу (Z используется для импеданса), т.е. отсоединяться. Это позволяет нескольким устройствам управлять шиной, но только по очереди. Только одно устройство в данный момент времени включает свое управление с тремя состояниями, чтобы заставить свои выводы задавать сигналы шины высокими или низкими. Это возможно, так как каждому устройству В/В задан свой собственный уникальный диапазон адресов В/В, на которых оно отвечает.
Рис. 2.3. Буфер с тремя состояниями. Для управления большинством сигналов шины должны использоваться выходы логического вентиля с тремя состояниями
Таким образом выводы нескольких вентилей с тремя состояниями, связанные вместе, выполняют ту же логическую функцию, что и мультиплексор, они соединяют один из нескольких вводов с одним выходом. Входы поступают из различных устройств, а выходом в данном случае будет шина.
Два устройства, отвечающие на одном и том же адресе во время операции чтения, будут создавать конфликт шины, приводящий к неправильным значениям шины данных. Ошибка проектирования или дефект в управляющей логике с тремя состояниями устройства может закоротить шину данных и вызвать сбой компьютера. Некоторые более старые платы ISA имели переключатели или перемычки, которые использовались для задания адреса устройства, чтобы избежать конфликта адресации. Это часто требуется, когда в системе используется несколько устройств одного типа.
Первые ПК имели предварительно заданные диапазоны адресов В/В для обычных устройств В/В на шине ISA, как показано в таблице 2.1. Чтобы сэкономить несколько вентилей и несколько микросхем в схемах декодирования адреса на платах В/В ISA, конструкторы первых ПК кодировали только нижние 10 битов адреса В/В. Для современных устройств VLSI несколько вентилей больше не являются существенной заботой конструктора, но это задание адресов продолжает использоваться в современных ПК, чтобы обеспечить обратную программную совместимость.
Примечание: Первые ПК декодировали только нижние 10 битов адреса В/В.
Цикл записи ISA показан на рисунке 2.4. Сначала мастер шины (обычно процессор) посылает адрес памяти или В/В по линиям системного адреса (SAx). После завершения одного полного цикла синхронизации шины для стабилизации схем декодирования адреса, мастер-устройство посылает данные по линиям системных данных (SDx) и задает уровень линии состояния записи В/В (IOWR) как низкий. Все линии остаются стабильными в течение нескольких циклов синхронизации шины, чтобы обеспечить распространение сигнала и настройку.
Затем сигнал IOWR поддерживается высоким, а целевое устройство (обычно устройство В/В) сохраняет значение шины данных на положительной волне сигнала IOWR. Значение шины данных должно сохраняться в целевом устройстве с помощью регистра, так как оно присутствует только в течение нескольких циклов синхронизации, прежде чем в шине данных появится другое значение. Вспомните, что регистры можно создавать, используя по одному D-триггеру на бит и соединяя все входы.
Мастер-устройство затем освобождает адресную шину и шину данных, выключая свои драйверы с тремя состояниями, чтобы задать для следующего цикла шины. В конце цикла шины новое значение данных будет сохранено в регистре вывода данных целевого устройства для использования внешними устройствами В/В.
Цикл чтения ISA показан на рисунке 2.5. Сначала мастер шины (обычно процессор) посылает адрес памяти или В/В по линиям системного адреса (SAx). После завершения одного полного цикла синхронизации шины для стабилизации схем декодирования адреса, мастер-устройство задает сигнал линии состояния чтения В/В (IOR) как низкий. Целевое устройство воспринимает свой уникальный адрес в шине адреса (используя схему декодера адреса для проверки своего адреса), и воспринимая сигнал состояния IOR, указывающий на цикл чтения В/В, он включает свои драйверы шины данных с тремя состояниями и посылает данные по линиям системных данных (SDx). Все линии остаются стабильными в течение нескольких циклов синхронизации шины, чтобы обеспечить распространение сигнала и настройку. IOR затем поддерживается высоким, и мастер-устройство сохраняет значение шины данных. Мастер-устройство затем освобождает адресную шину, а целевое устройство освобождает шину данных, выключая свои драйверы с тремя состояниями, чтобы задать для следующего цикла шины.
Прерывания и циклы DMA могут запрашиваться устройствами по шине ISA с помощью линий Interrupt Request IRQx и линий запроса DMA DRQx. Сигнал сброса (RESET DRV) можно использовать для инициализации устройств при включении питания.