- •Оглавление
- •Организация системы ввода-вывода вычислительной системы ...... 10
- •Способы обмена информацией между устройствами
- •Аппаратные интерфейсы вычислительных систем ..................................... 68
- •Интерфейс rs-485 ........................................................................................... 175
- •Введение
- •Организация системы ввода-вывода вычислительной системы
- •Основы архитектурной организации вычислительной системы
- •1.1.2 Достоинства и недостатки Принстонской архитектуры
- •1.1.1 Принципы Фон-Неймановской архитектуры
- •1.1.3 Достоинства и недостатки Гарвардской архитектуры
- •Организация вычислительной системы. Элементы вычислительного ядра и системы ввода-вывода
- •1.2.1 Процессор и память
- •1.2.2 Контроллер ввода-вывода
- •1.2.3 Процессор ввода-вывода
- •1.2.4 Интерфейс и протокол
- •1.2.5 Порт ввода-вывода
- •1.2.5.1 Адресное пространство портов ввода-вывода: единое с оперативной памятью и раздельное
- •1.2.5.2 Организация конфигурируемых параллельных портов вводавывода
- •Принципы организации систем ввода-вывода
- •1.3.1 Организация свв универсальных эвм
- •1.3.2.1 Порты ввода-вывода
- •1.3.2.2 Дискретные порты ввода-вывода
- •1.3.2.3 Однонаправленные порты
- •1.3.2.4 Двунаправленные порты и порты с альтернативной функцией
- •1.3.2.7 Устройства сопряжения с объектом (усо) управляющих эвм
- •Способы обмена информацией между устройствами вычислительной системы
- •Программно управляемые:
- •В режиме прямого доступа (без участия центральных процессоров).
- •Синхронный обмен данными
- •Асинхронный обмен данными с программной проверкой готовности
- •Асинхронный обмен данными с аппаратной проверкой готовности
- •2.3.1 Система прерываний
- •2.3.4 Аппаратный полинг
- •2.3.5 Характеристики систем прерываний
- •2.3.6 Контроллер прерываний 8259a
- •Организация обмена в режиме прямого доступа
- •2.4.1 Общие принципы организации пдп
- •Аппаратные интерфейсы вычислительных систем
- •Характеристики аппаратных интерфейсов
- •Функции аппаратных интерфейсов
- •Классификация аппаратных интерфейсов
- •Системные интерфейсы.
- •Стандартные периферийные интерфейсы.
- •Малые периферийные интерфейсы.
- •Понятие интерфейсных систем
- •Реализация аппаратных интерфейсов: проблемы и технические решения
- •3.5.1 Электромагнитные помехи
- •3.5.2 Характеристики линии связи
- •3.5.3.1 Коаксиальный кабель
- •3.5.3.2 Витая пара
- •3.5.3.3 Плоский кабель
- •3.5.3.4 Полосковые линии связи
- •3.5.5 Симметричная и несимметричная схема передачи сигналов
- •3.5.5.1 Дифференциальный сигнал
- •3.5.5.3 Симметричная передача сигнала
- •3.5.6.1 Потенциальный код без возвращения к нулю
- •3.5.6.2 Метод биполярного кодирования с альтернативной инверсией
- •3.5.6.3 Потенциальный код с инверсией при единице
- •3.5.6.4 Биполярный импульсный код
- •3.5.6.5 Манчестерский код
- •3.5.6.6 Потенциальный код 2b1q
- •3.5.7 Приемопередатчик последовательного интерфейса
- •3.5.8 Особенности параллельных интерфейсов
- •3.5.9 Мультиплексирование, конвейеризация, блочная передача
- •3.5.10.2 Реализация гальванической изоляции дискретного выхода модуля ввода-вывода sdx-09
- •3.5.10.3 Реализация гальванической изоляции дискретного входа модуля ввода-вывода sdx-09
- •3.5.10.4 Реализация гальванической изоляции rs-232 в контроллере sdk-1.1
- •3.5.10.5 Технология iCoupler фирмы Analog Devices
- •3.5.11 Горячее подключение и автоконфигурирование
- •3.5.11.1 Горячее подключение
- •3.6 Внутрисистемный интерфейс amba
- •3.6.3 Периферийный интерфейс amba apb
- •Idle – устройство не готово, шина находится в исходном состоянии.
- •3.7 Системные интерфейсы
- •3.7.1 Интерфейс pci
- •3.7.2 Интерфейс pci Express
- •3.8 Стандартные периферийные интерфейсы
- •3.8.1 Интерфейс scsi
- •3.8.1.8 Команды scsi
- •3.8.3 Сравнение sas и параллельного scsi
- •3.8.4 Сравнение sas и sata
- •3.9 Малые периферийные интерфейсы
- •3.9.1 Интерфейс rs-232
- •3.9.1.1 Сигнальные линии последовательного интерфейса
- •3.9.1.2 Управление потоком
- •3.9.1.3 Разъемы и кабели
- •3.9.1.4 Формат последовательной передачи данных
- •3.9.1.5 Работа с последовательным каналом
- •3.9.2.1 Типы подключения к шине spi
- •3.9.2.2 Режимы работы шины spi
- •3.9.2.3 Достоинства шины spi
- •3.9.2.4 Недостатки шины spi 1. Больше линий, чем в i2c.
- •3.9.3 Интерфейс Centronics
- •3.9.4.1 Физический интерфейс Serial ata
- •3.10 Контроллерные сети
- •3.10.1 Интерфейс rs-485
- •3.10.1.1 Согласование и конфигурация линии связи
- •3.10.1.2 Защитное смещение
- •(Верхняя диаграмма), передача данных (средняя диаграмма), приѐм данных от устройства (нижняя диаграмма).
- •3.10.3 Интерфейс i2c
- •3.10.3.1 Концепция шины i2c
- •3.10.3.2 Реализация монтажного и и монтажного или
- •3.10.3.3 Принцип работы шины i2c
- •3.10.3.5 Подтверждение
- •3.10.3.6 Синхронизация
- •3.10.3.7 Форматы обмена данными по шине i2c (7-битный адрес)
- •3.10.3.8 Арбитраж
- •3.10.3.9 Достоинства шины i2c
- •3.10.4.1 Модель передачи данных
- •3.10.4.2 Протокол
- •3.11 Сети передачи данных систем обработки данных. Беспроводные сенсорные сети
- •3.11.1 Сети передачи данных
- •3.11.2 Беспроводные сенсорные сети
- •Приложение а. Система ввода-вывода учебного лабораторного стенда sdk-1.1
- •А.2 Состав стенда
- •А.3 Вычислительное ядро и система ввода-вывода
- •А.3.5.1 Матричная клавиатура
- •А.3.5.2 Жидкокристаллический индикатор
- •А .3.5.3 Светодиодные индикаторы
- •А.3.5.4 Звукоизлучатель
- •А.3.5.5 Дискретные входы-выходы
- •Приложение б. Комплекс лабораторных работ для учебного лабораторного стенда sdk-1.1 б.1 Лабораторная работа № 1 «Дискретные порты ввода-вывода»
- •Б.2 Лабораторная работа № 2 «Таймеры. Система прерываний»
- •Б.2.3.2 Пояснения для вариантов заданий с использованием звукового излучателя
- •(Слева) на принципиальной электрической схеме контроллера sdk-1.1
- •Б.3 Лабораторная работа № 3 «Последовательный интерфейс rs-232. Uart»
- •Б.4 Лабораторная работа № 4 «Клавиатура»
- •Б.5 Лабораторная работа № 5 «Жидкокристаллический индикатор»
- •Б.6 Лабораторная работа № 6 «Последовательный интерфейс i2c»
- •Приложение в. Проектирование и разработка программы
- •Приложение г. Требования к оформлению программ на языке Си г.1 Соглашения по идентификаторам
- •Г.2 Соглашения по самодокументируемости программ
- •Г.3 Соглашения по читаемости программ
- •Литература
Асинхронный обмен данными с аппаратной проверкой готовности
2.3.1 Система прерываний
Прерывание в классической трактовке – прекращение выполнения текущей команды или последовательности команд для обработки некоторого события обработчиком прерывания, с последующим возвратом к выполнению прерванной программы.
Прерывание можно определить как механизм межпроцессного взаимодействия, включающий в себя механизмы передачи данных (тип прерывания) и управления (пуск/останов текущего процесса).
Система прерываний является неотъемлемой частью любой вычислительной системы и предназначена для обеспечения быстрой реакции процессора на ряд ситуаций, требующих его внимания, которое может возникать как в самом процессоре, так и за его пределами.
Прерывания следует рассматривать не только и не столько как реакцию процессора на аномальные ситуации, а как естественный процесс, с помощью которого реализуется поддержка большинства необходимых механизмов, таких как виртуальная память, ввод/вывод и т. п. По образному выражению Питера Нортона: "Прерывание – это движущая сила компьютера".
Система прерываний представляет собой комплекс аппаратных и программных средств. Аппаратные средства системы прерываний обычно называются блоком или контроллером прерываний. В ПК это PIC (Programmable Interrupt Controller), т.е. отдельная микросхема 8259A. В некоторых случаях контроллер прерываний интегрируется в кристалл микропроцессора. Программные средства систем прерываний представляют собой специальные программы – обработчики прерываний (interrupt handler).
Назначение системы прерывания – реагировать на определенные события путем прерывания работы процессора по выполнению программы и переключения процессора на выполнение другой программы, обслуживающей соответствующую ситуацию. В момент возникновения определенного события (причины) формируется сигнал прерывания, который поступает в процессор и инициирует специальную операцию – операцию прерывания, обеспечивающую прерывание одной программы и переключение процессора на выполнение другой программы.
2.3.2 Классификация прерываний В зависимости от источника возникновения сигнала прерывания делятся на:
Асинхронные или внешние (аппаратные) – события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, внешнего интерфейса, АЦП и др.
Внутренние – события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции. Такого рода прерывания еще называются исключительными ситуациями (exceptions).
Программные (частный случай внутреннего прерывания) – инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения драйверов и операционной системы.
Аппаратные прерывания могут возникать в произвольные моменты времени и являются асинхронными по отношению к выполняемой программе.
С помощью аппаратных прерываний осуществляется взаимодействие процессора с периферийными устройствами, а также сообщается о различных ошибках аппаратуры (например, ошибка памяти, ошибка передачи по шине и т.
п.) или об аварийном отключении питания. Во втором случае иногда такие прерывания называют исключительными ситуациями (exceptions).
Реагируя на аппаратное прерывание, процессор должен идентифицировать его источник, сохранить минимальный контекст прерываемой программы и переключаться на специальную программу – обработчик прерывания (interrupt handler), который может быть оформлен как процедура или задача.
Действия обработчика прерывания, называемые обслуживанием прерывания, заключается в том, чтобы правильно отреагировать на прерывание конкретного источника (например, поместить символ нажатой клавиши в буфер, произвести инкремент системных часов и т. п.).
После завершения обслуживания прерывания процессор возвращается к выполнению прерванной программы, и она должна продолжиться таким образом, как будто прерывания не было.
К основным ситуациям, возникающим вне процессора и приводящим к прерыванию, относятся:
Запросы от управляемого объекта (являются типичными для управляющих систем), т.е. запросы от ВУ:
ВУ, готовые к обмену, требуют реакции процессора для организации программно управляемой передачи данных.
Завершение работы ВУ или КВВ по передаче данных.
Особая (аварийная) ситуация в ВУ или КВВ.
Запросы прерываний от других процессоров для обеспечения синхронизации вычислительных процессов, протекающих в рамках многопроцессорной системы.
Программные прерывания, в отличие от аппаратных, появляются синхронно по отношению к выполняемой программе.
Причинами программных прерываний могут служить особые ситуации, возникающие при выполнении программы, препятствующие нормальному продолжению программы и требующие специального обслуживания (переполнение, нарушение защиты памяти, отсутствие нужной страницы в оперативной памяти и т.п.), а также специальные команды типа INT n ( n – номер прерывания), являющиеся генераторами программных прерываний. Эти команды обычно используются для вызова определенных функций ОС.
Обработка исключительных ситуаций (exception handling) – механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы и приводят к невозможности (бессмысленности) дальнейшей отработки программой еѐ базового алгоритма. В русском языке также применяется более короткая форма термина: «обработка исключений».
Во время выполнения программы могут возникать ситуации, когда состояние данных, УВВ или компьютерной системы в целом делает дальнейшие вычисления в соответствии с базовым алгоритмом невозможным или бессмысленными. Классические примеры подобных ситуаций:
Нулевое значение знаменателя при выполнении операции целочисленного деления. Результата у операции быть не может, поэтому ни дальнейшие вычисления, ни попытка использования результата деления не приведут к решению задачи.
Ошибка при попытке считать данные с внешнего устройства. Если данные не удаѐтся ввести, любые дальнейшие запланированные операции с ними бессмысленны.
Исчерпание доступной памяти. Если в какой-то момент система оказывается не в состоянии выделить достаточный для прикладной программы объѐм оперативной памяти, программа не сможет работать нормально.
Появление сигнала аварийного отключения электропитания системы. Прикладную задачу, по всей видимости, решить не удастся, в лучшем случае (при наличии какого-то резерва питания) прикладная программа может озаботиться сохранением данных.
Появление на входе коммуникационного канала данных, требующих немедленного считывания. Чем бы ни занималась в этот момент программа, она должна перейти к чтению данных, чтобы не потерять поступившую информацию.
2.3.3 Функции системы прерываний и их реализация Функции системы прерываний: 1. Прием и хранение запросов прерываний от многих источников.
Выделение наиболее приоритетного запроса из множества поступивших.
Проверка возможности обработки запросов центральным процессором (проверка замаскированности запросов или сравнение уровня приоритетности запросов с так называемым порогом прерываний).
Сохранение состояния (контекста) прерываемой программы.
Вызов обработчика прерываний.
Собственно обработка прерываний (выполнение программы обработки прерываний).
Восстановление состояния (контекста) прерванной программы и возобновление ее выполнения.
Этапы 1-5 выполняются аппаратными средствами компьютера автоматически при появлении запроса прерывания. Этап 7 также выполняется аппаратно по команде возврата из обработчика прерывания.
Процедура опроса источников прерываний с целью выделения наиболее приоритетного (полинг/polling) может быть реализована как на аппаратном, так и на программном уровнях.
Программный полинг (уже был рассмотрен ранее) реализуется специальной программой, которая последовательно опрашивает триггеры запросов, объединенных, как правило, в единый регистр с целью поиска первого установленного бита.
Аппаратный полинг может быть реализован либо на основе многотактной схемы, в основу которой положен двоичный счетчик, либо с помощью однотактной схемы, которую обычно называют дейзи-цепочка (будет рассмотрен далее).
Отношение процессора к поступившим запросам прерываний может быть выражено с помощью одного из двух механизмов:
Механизм масок.
Порог прерываний.
Механизм масок основан на использовании специального бита для каждого запроса прерываний, с помощью которого разрешается или запрещается обработка прерываний, связанных с этим запросом. В процессоре семейства Intel функцию маски выполняет бит IF, с помощью которого разрешается (IF=1) или запрещается (IF=0) обработка запросов внешних прерываний (как правило, от ВУ). При сброшенном флаге IF принято говорить, что прерывание замаскировано.
Запросы прерываний от ВУ формируются с помощью PIC (Programmable Interruption Controller), который связан линией запроса с CPU. Запросы от PIC поступают в CPU на внешний вход INTR.
Для управления прерываниями используется маска прерываний (см. рис. ниже), представляющая собой двоичное слово M = m1 m2 … mk с числом разрядов, равным числу маскируемых причин прерывания. Если разряд маски mk = 0, то прерывание по причине k запрещено (замаскировано), если разряд маски mk = 1, то прерывание по причине k разрешено (не замаскировано). Маска прерываний хранится в процессоре, куда она загружается командой УСТАНОВИТЬ МАСКУ А, где А – адрес. По этой команде слово с адресом А загружается в качестве маски в процессор и определяет отношение процессора к сигналам прерывания. Если все разряды маски равны нулю, процессор не реагирует ни на одну причину прерывания.
В простейших процессорах используется следующий способ маскирования прерываний. В систему команд компьютера вводятся две системные команды ЗАПРЕТИТЬ ПРЕРЫВАНИЯ и РАЗРЕШИТЬ ПРЕРЫВАНИЯ, выполнение которых приводит к запрещению и разрешению прерываний одновременно по всем причинам.
Команды, маскирующие прерывания, относятся к группе привилегированных команд.
Рис. 22. Обобщенная схема блока обработки запросов прерываний
На рисунке селектор уровня/фронта внешнего сигнала запроса прерывания выбирает событие, по которому вырабатывается запрос прерывания от внешнего сигнала («внешнее прерывание»). Возможны следующие настройки: по перепаду (фронт или спад сигнала) или по уровню. При возникновении запроса прерывания в регистре флагов (Interrupt Flag, IF) устанавливается бит, соответствующий источнику. Логика маскирования прерываний разрешает или запрещает выработку запросов от определенных источников или от всех источников сразу. Для разрешения прерывания необходимо установить в «1» соответствующий бит регистра масок (Interrupt Enable, IE) и бит общего разрешения прерываний (Global Interrupt Enable, GIE). Логика маскирования никак не влияет на немаскируемый запрос прерывания (Non-Maskable Interrupt, NMI). Приоритетная логика (Interrupt Priority, IP) вырабатывает вектор для наиболее приоритетного запроса и передает его вычислительному ядру синхронно с сигналом запроса прерывания; отслеживает приоритет запроса, находящегося в обработке и вытесняет (прерывает) данных запрос, если пришел другой запрос с более высоким приоритетом.
Порог прерываний представляет собой собственный приоритет процессора, точнее, уровень приоритета выполняемой им программы, и отражается с помощью специального поля в слове состояний процессора.
В интерфейсе «общая шина» типа Unibus выделяются специальные линии запросов прерывания от ВУ и линии разрешения прерываний, которые являются однонаправленными. По линии запросов сигналы передаются от ВУ к CPU, по линии разрешения прерываний – от CPU к ВУ. (В данном случае под ВУ понимается не столько само внешнее устройство, сколько его контроллер (блок управления)). Эти линии обычно называются линиями арбитража. Для каждого уровня приоритета используются две линии.
Линии арбитража связаны со специальным блоком процессора, называемым арбитром. Основной функцией арбитра является выделение наиболее приоритетного запроса и сравнение его уровня приоритетности с собственным приоритетом CPU (порогом прерываний). В случае, если уровень приоритета запроса от ВУ оказывается ниже порога прерываний, обслуживание этого запроса откладывается до момента снижения порога прерывания до требуемого уровня.
Обработчик прерывания должен выполнять действия, связанные с появлением запроса данного типа, и поместить адрес начала этой программы в специальной таблице адресов прерываний. Программа-обработчик, как правило, должна начинаться с сохранения состояния тех регистров процессора, которые будут ею изменяться, и заканчиваться восстановлением состояния этих регистров. Программа-обработчик должна завершаться специальной командой, указывающей процессору на необходимость возврата в прерванную программу.
