«А.О. Ключев, Д.Р. Ковязина, Е.В. Петров, А.Е. Платунов ИНТЕРФЕЙСЫ ПЕРИФЕРИЙНЫХ УСТРОЙСТВ Учебное пособие Санкт-Петербург 2010 Ключев А.О., Ковязина Д.Р., Петров Е.В., Платунов А.Е. Интерфейсы периферийных устройств. – ...»
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ
А.О. Ключев, Д.Р. Ковязина,
Е.В. Петров, А.Е. Платунов
ИНТЕРФЕЙСЫ ПЕРИФЕРИЙНЫХ УСТРОЙСТВ
Учебное пособие
Санкт-Петербург
2010 Ключев А.О., Ковязина Д.Р., Петров Е.В., Платунов А.Е. Интерфейсы периферийных устройств. – СПб.: СПбГУ ИТМО, 2010. – 290 с.
Учебное пособие посвящено вопросам организации интерфейсов периферийных устройств. В пособии рассматриваются: организация системы ввода-вывода, способы обмена информацией между устройствами вычислительной системы, аппаратные интерфейсы вычислительных систем. В приложениях к учебному пособию помещены справочные данные и задания к выполнению лабораторных работ с использованием учебного лабораторного стенда SDK-1.1.
Для подготовки бакалавров и магистров по направлению 23.01. «Информатика и вычислительная техника»; по программам подготовки магистров 23.01.00.33 «Проектирование встроенных вычислительных систем» и 23.01.00.34 «Системотехника интегральных вычислителей. Системы на кристалле».
Рекомендовано к печати ученым советом факультета КТиУ, протокол № от 16.11.2010 г.
В 2009 году Университет стал победителем многоэтапного конкурса, в результате которого определены 12 ведущих университетов России, которым присвоена категория «Национальный исследовательский университет».
Министерством образования и науки Российской Федерации была утверждена Программа развития государственного образовательного учреждения высшего профессионального образования «Санкт-Петербургский государственный университет информационных технологий, механики и оптики» на 2009– годы.
Санкт-Петербургский государственный университет информационных технологий, механики и оптики, А.О. Ключев, Д.Р. Ковязина, Е.В. Петров, А.Е. Платунов, 2010.
Оглавление ВВЕДЕНИЕ
ОРГАНИЗАЦИЯ СИСТЕМЫ ВВОДА-ВЫВОДА ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ...... ОСНОВЫ АРХИТЕКТУРНОЙ ОРГАНИЗАЦИИ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ
1. 1.1.1 Принципы Фон-Неймановской архитектуры
1.1.2 Достоинства и недостатки Принстонской архитектуры
1.1.3 Достоинства и недостатки Гарвардской архитектуры
ОРГАНИЗАЦИЯ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ. ЭЛЕМЕНТЫ ВЫЧИСЛИТЕЛЬНОГО ЯДРА И
1. СИСТЕМЫ ВВОДА-ВЫВОДА1.2.1 Процессор и память
1.2.2 Контроллер ввода-вывода
1.2.3 Процессор ввода-вывода
1.2.4 Интерфейс и протокол
1.2.5 Порт ввода-вывода
ПРИНЦИПЫ ОРГАНИЗАЦИИ СИСТЕМ ВВОДА-ВЫВОДА
1. 1.3.1 Организация СВВ универсальных ЭВМ
1.3.2 Организация СВВ управляющих ЭВМ
СПОСОБЫ ОБМЕНА ИНФОРМАЦИЕЙ МЕЖДУ УСТРОЙСТВАМИ
ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫСИНХРОННЫЙ ОБМЕН ДАННЫМИ
2. АСИНХРОННЫЙ ОБМЕН ДАННЫМИ С ПРОГРАММНОЙ ПРОВЕРКОЙ ГОТОВНОСТИ............ 2. АСИНХРОННЫЙ ОБМЕН ДАННЫМИ С АППАРАТНОЙ ПРОВЕРКОЙ ГОТОВНОСТИ............... 2. 2.3.1 Система прерываний
2.3.2 Классификация прерываний
2.3.3 Функции системы прерываний и их реализация
2.3.4 Аппаратный полинг
2.3.5 Характеристики систем прерываний
2.3.6 Контроллер прерываний 8259A
ОРГАНИЗАЦИЯ ОБМЕНА В РЕЖИМЕ ПРЯМОГО ДОСТУПА
2. 2.4.1 Общие принципы организации ПДП
2.4.2 DMA-контроллеры персонального компьютера
АППАРАТНЫЕ ИНТЕРФЕЙСЫ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ
ХАРАКТЕРИСТИКИ АППАРАТНЫХ ИНТЕРФЕЙСОВ
ФУНКЦИИ АППАРАТНЫХ ИНТЕРФЕЙСОВ
КЛАССИФИКАЦИЯ АППАРАТНЫХ ИНТЕРФЕЙСОВ
ПОНЯТИЕ ИНТЕРФЕЙСНЫХ СИСТЕМ
РЕАЛИЗАЦИЯ АППАРАТНЫХ ИНТЕРФЕЙСОВ: ПРОБЛЕМЫ И ТЕХНИЧЕСКИЕ РЕШЕНИЯ......
3.5.1 Электромагнитные помехи3.5.2 Характеристики линии связи
3.5.3 Виды линий связи
3.5.4 Сбалансированная схема
3.5.5 Симметричная и несимметричная схема передачи сигналов
3.5.6 Виды кодирования
3.5.7 Приемопередатчик последовательного интерфейса
3.5.8 Особенности параллельных интерфейсов
3.5.9 Мультиплексирование, конвейеризация, блочная передача
3.5.10 Устройства гальванической изоляции в аппаратных интерфейсах............. 3.5.11 Горячее подключение и автоконфигурирование
ВНУТРИСИСТЕМНЫЙ ИНТЕРФЕЙС AMBA
3. 3.6.1 Внутрисистемный интерфейс AMBA AHB
3.6.2 Системный интерфейс AMBA ASB
3.6.3 Периферийный интерфейс AMBA APB
СИСТЕМНЫЕ ИНТЕРФЕЙСЫ
3. 3.7.1 Интерфейс PCI
3.7.2 Интерфейс PCI Express
СТАНДАРТНЫЕ ПЕРИФЕРИЙНЫЕ ИНТЕРФЕЙСЫ
3. 3.8.1 Интерфейс SCSI
3.8.2 Интерфейс SAS
3.8.3 Сравнение SAS и параллельного SCSI
3.8.4 Сравнение SAS и SATA
МАЛЫЕ ПЕРИФЕРИЙНЫЕ ИНТЕРФЕЙСЫ
3. 3.9.1 Интерфейс RS-232
3.9.2 Интерфейс SPI
3.9.3 Интерфейс Centronics
3.9.4 Интерфейс SATA
3.10 КОНТРОЛЛЕРНЫЕ СЕТИ
3.10.1 Интерфейс RS-485
3.10.2 Интерфейс 1-Wire
3.10.3 Интерфейс I2C
3.10.4 Интерфейс USB
3.11 СЕТИ ПЕРЕДАЧИ ДАННЫХ СИСТЕМ ОБРАБОТКИ ДАННЫХ. БЕСПРОВОДНЫЕ СЕНСОРНЫЕ
СЕТИ3.11.1 Сети передачи данных
3.11.2 Беспроводные сенсорные сети
ПРИЛОЖЕНИЕ А. СИСТЕМА ВВОДА-ВЫВОДА УЧЕБНОГО ЛАБОРАТОРНОГО СТЕНДА
SDK-1.1А.1 НАЗНАЧЕНИЕ СТЕНДА
А.2 СОСТАВ СТЕНДА
А.3 ВЫЧИСЛИТЕЛЬНОЕ ЯДРО И СИСТЕМА ВВОДА-ВЫВОДА
А.3.1 Микроконтроллер ADuC812
А.3.2 Внешняя память программ и данных
А.3.3 Порты ввода-вывода
А.3.4 Расширитель портов ввода-вывода
А.3.5 Периферийные устройства, подключенные к расширителю портов вводавывода
А.3.6 Аналоговый ввод-вывод
А.3.7 I2C-устройства
А.3.8 Последовательные и параллельные интерфейсы
ПРИЛОЖЕНИЕ Б. КОМПЛЕКС ЛАБОРАТОРНЫХ РАБОТ ДЛЯ УЧЕБНОГО
ЛАБОРАТОРНОГО СТЕНДА SDK-1.1Б.1 ЛАБОРАТОРНАЯ РАБОТА № 1 «ДИСКРЕТНЫЕ ПОРТЫ ВВОДА-ВЫВОДА»
Б.1.1 Задание
Б.1.2 Порты ввода-вывода
Б.1.3 Описание работы
Б.1.4 Требования к выполнению работы
Б.1.5 Содержание отчета
Б.1.6 Литература
Б.1.7 Варианты заданий
Б.2 ЛАБОРАТОРНАЯ РАБОТА № 2 «ТАЙМЕРЫ. СИСТЕМА ПРЕРЫВАНИЙ»
Б.2.1 Задание
Б.2.2 Таймеры-счетчики
Б.2.3 Описание работы
Б.2.4 Особенности обработки прерываний в стенде SDK-1.1
Б.2.5 Требования к выполнению работы
Б.2.6 Содержание отчета
Б.2.7 Литература
Б.2.8 Варианты заданий
Б.3 ЛАБОРАТОРНАЯ РАБОТА № 3 «ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС RS-232. UART».... Б.3.1 Задание
Б.3.2 Особенности последовательного интерфейса в микроконтроллере с ядром MCS-51
Б.3.3 Организация буферизированного последовательного ввода-вывода в стенде SDK-1.1
Б.3.4 Организация программы
Б.3.5 Организация обработчика прерывания UART
Б.3.6 Описание работы
Б.3.7 Требования к выполнению работы
Б.3.8 Содержание отчета
Б.3.9 Литература
Б.3.10 Варианты заданий
Б.4 ЛАБОРАТОРНАЯ РАБОТА № 4 «КЛАВИАТУРА»
Б.4.1 Задание
Б.4.2 Матричная клавиатура
Б.4.3 Описание работы
Б.4.4 Требования к выполнению работы
Б.4.5 Содержание отчета
Б.4.6 Литература
Б.4.7 Варианты заданий
Б.5 ЛАБОРАТОРНАЯ РАБОТА № 5 «ЖИДКОКРИСТАЛЛИЧЕСКИЙ ИНДИКАТОР»
Б.5.1 Задание
Б.5.2 Описание работы
Б.5.3 Требования к выполнению работы
Б.5.4 Содержание отчета
Б.5.5 Литература
Б.5.6 Варианты заданий
ЛАБОРАТОРНАЯ РАБОТА № 6 «ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС I2C»
Б.6.1 Задание
Б.6.2 Описание работы
Б.6.3 Требования к выполнению работы
Б.6.4 Содержание отчета
Б.6.5 Литература
Б.6.6 Варианты заданий
ПРИЛОЖЕНИЕ В. ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА ПРОГРАММЫ
ПРИЛОЖЕНИЕ Г. ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ПРОГРАММ НА ЯЗЫКЕ СИ........ Г.1 СОГЛАШЕНИЯ ПО ИДЕНТИФИКАТОРАМ
Г.1.1 Подбор идентификаторов
Г.1.2 Написание идентификаторов
Г.2 СОГЛАШЕНИЯ ПО САМОДОКУМЕНТИРУЕМОСТИ ПРОГРАММ
Г.2.1 Комментарии
Г.2.2 Спецификация функций
Г.2.3 Спецификация программного файла или модуля
Г.3 СОГЛАШЕНИЯ ПО ЧИТАЕМОСТИ ПРОГРАММ
Г.3.1 Лесенка
Г.3.2 Длина строк программного текста
Г.3.3 Прочие рекомендации
ЛИТЕРАТУРА
КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
Введение При изучении систем ввода-вывода и интерфейсов периферийных устройств необходимо представлять основные принципы построения средств вычислительной техники, которые во многом определяются той элементной базой, на которой строятся вычислительные системы общего и специализированного назначения. С этой точки зрения весь период развития вычислительной техники от первого компьютера до современных вычислительных машин можно разбить на два этапа. Первый – это этап до появления современных интегральных схем и микропроцессоров. Второй – после их появления и начала выпуска персональных компьютеров (ПК).
На первом этапе компьютеры разрабатывались и изготавливались на своей собственной элементной базе, их устройства (процессор, ОЗУ, устройства управления и т.п.) имели архитектуру и структуру, присущую только данному компьютеру или одному семейству, связь между устройствами и узлами осуществлялась с помощью интерфейсов, используемых только этим типом вычислительной машины. Стандарты применялись, но в основном касались ПУ, а не внутренних устройств. Поэтому машины разных фирм были не совместимы по элементной базе, устройствам и конструктивам. Это относилось как к большим, так и к малым вычислительным машинам. Это машины типа БЭСМ-1 (2,6), «Урал», «Наири», IBM 360 (370), ЕС ЭВМ-1033 (1040, 1060), DEC PDP-11, СМ-1 (2,3,4) и т.д. Каждый тип компьютера был в определенной степени уникален [96].
На втором этапе изменился принцип построения вычислительной техники.
Она стала основываться на правиле трех «М»: модульность, микропрограммируемость и магистральность. Модуль представляет собой функционально полное и конструктивно законченное устройство, серийно выпускаемое и программно (микропрограммно) управляемое (настраиваемое).
Вычислительные системы собираются на основе этих модулей с помощью каналов связи – универсальных или специализированных интерфейсов [96].
На втором этапе существенно возросла роль стандартизации, без которой разработка и выпуск вычислительных систем общего назначения стал просто невозможен, а специализированного назначения – практически невозможен.
В последнее время существенно возросли роль и значение систем вводавывода и интерфейсов вследствие усиления значимости коммуникационной составляющей по сравнению с вычислительной составляющей в информационно-управляющих системах.
Учебное пособие посвящено рассмотрению роли и места систем вводавывода и интерфейсов в вычислительных системах, изложению принципов их построения и функционирования. Оно содержит материалы о современных стандартных внутрисистемных, системных, периферийных интерфейсах, а также лабораторные работы, способствующие изучению этих материалов, приобретению студентами навыков проектирования и низкоуровневого программирования подсистем ввода-вывода микропроцессорных систем различного назначения на примере программирования учебного лабораторного стенда SDK-1.1.
Учебное пособие предназначено для студентов, специализирующихся в области вычислительной техники и программирования. Знание интерфейсов позволит разработчику аппаратуры более грамотно подойти к выбору варианта, соответствующего поставленной задаче. Знания материалов этого пособия необходимы системным интеграторам. Без этих знаний они не смогут подобрать требуемый набор устройств и оптимально объединить их в систему. Сведения учебного пособия помогут системным программистам разрабатывать собственные драйверы периферийных устройств или адаптировать чужие разработки.
1 Организация системы ввода-вывода вычислительной системы 1.1 Основы архитектурной организации вычислительной системы В основе архитектуры современных вычислительных машин (ВМ) лежит представление алгоритма решения задачи в виде программы последовательных вычислений. Согласно стандарту ISO 2382/1-84, программа для ВМ – это упорядоченная последовательность команд, подлежащая обработке.
Вычислительная машина, где определенным образом закодированные команды программы хранятся в памяти, известна под названием ВМ с хранимой в памяти программой. Идея принадлежит создателям вычислителя ENIAC Эккерту, Мочли и фон-Нейману. Еще до завершения работ над ENIAC они приступили к новому проекту – EDVAC, главной особенностью которого стала концепция хранимой в памяти программы, на долгие годы определившая базовые принципы построения последующих поколений вычислительных машин. Относительно авторства существует несколько версий, но поскольку в законченном виде идея впервые была изложена в 1945 году в статье Джона фонНеймана (John von Neumann «First Draft of a Report on the EDVAC»), именно его фамилия фигурирует в обозначении архитектуры подобных машин, составляющих подавляющую часть современного парка ВМ и вычислительных систем (ВС).
Типичная фон-Неймановская вычислительная машина содержит: память, устройство управления, арифметико-логическое устройство и устройства ввода и вывода. На рис. ниже представлена модифицированная структура фонНеймановской ВМ, так как первоначально память не разделялась на основную и вторичную (внешнюю) и не было портов ввода-вывода.
В любой ВМ имеются средства для ввода программ и данных к ним.
Информация поступает из подсоединенных к ЭВМ периферийных устройств (ПУ) ввода. Результаты вычислений выводятся на периферийные устройства вывода. Связь и взаимодействие ВМ и ПУ обеспечивают порты ввода и порты вывода. Термином порт обозначают аппаратуру сопряжения периферийного устройства с ВМ и управления им.
Введенная информация сначала запоминается в основной памяти, а затем переносится во вторичную память, для длительного хранения. Чтобы программа могла выполняться, команды и данные должны располагаться в основной памяти (ОП), организованной таким образом, что каждое двоичное слово хранится в отдельной ячейке, идентифицируемой адресом, причем соседние ячейки памяти имеют следующие по порядку адреса.
Рис. 1. Структура фон-Неймановской вычислительной машины Устройство управления (УУ) – важнейшая часть ВМ, организующая автоматическое выполнение программ (путем реализации функций управления) и обеспечивающая функционирование ВМ как единой системы. Для пояснения функций УУ ВМ следует рассматривать как совокупность элементов, между которыми происходит пересылка информации, в ходе которой эта информация может подвергаться определенным видам обработки. Основной функцией УУ является формирование управляющих сигналов, отвечающих за извлечение команд из памяти в порядке, определяемом программой, и последующее исполнение этих команд.
Еще одной неотъемлемой частью ВМ является арифметико-логическое устройство (АЛУ). АЛУ (или операционное устройство, ОУ) обеспечивает арифметическую и логическую обработку двух входных переменных, в результате которой формируется выходная переменная.
УУ и АЛУ (ОУ) тесно взаимосвязаны и их обычно рассматривают как единое устройство, известное как центральный процессор (ЦП) или просто процессор.
принципы построения ЭВМ.
1.1.1 Принципы Фон-Неймановской архитектуры представления данных и команд.
2. Принцип хранимой программы.
3. Однородность памяти и адресации; принцип линейности памяти.
Память машины рассматривается как вектор, состоящий из одинаковых ячеек, способных принимать любые значения. Значение в ячейке с точки зрения процессора является последовательностью битов фиксированной длины без каких-либо ограничений. Ячейки памяти идентифицируются адресами:
числами от нуля до максимально возможной для данной машины величины.
Адреса служат указателями для процессора, откуда следует извлекать значение или куда помещать значение.
Отсутствие различий между командами и данными означает, что по двоичному коду, взятому из некоторой ячейки памяти невозможно определить, представляет ли он машинную команду или данные некоторого типа. В связи с этим, тип слова (команда или данные) определяется не способом кодирования, а способом использования (интерпретацией). Из однородности памяти следует, что команды и данные располагаются в единой общей памяти и одинаково адресуются. Принцип использования единой памяти принято называть Принстонской архитектурой по наименованию института, в котором она была разработана. В отличие от этого принципа при построении некоторых ЭВМ используется раздельная память для программ и данных. Архитектура с разделением памяти получила название Гарвардской архитектуры ЭВМ.
4. Принцип последовательного программного управления.
Программа состоит из набора команд, которые выполняются процессором друг за другом в определенной последовательности (в порядке возрастания их адресов). Естественная последовательность выполнения команд может нарушаться при выполнении команд переходов (условных и безусловных), циклов, вызовов, возвратов и т.п. Кроме того, последовательность команд может нарушаться особыми случаями, приводящими к прерыванию программы.
Управляющее устройство (может называться счетчиком команд) содержит адрес команды, назначаемой для выполнения процессором.
5. Пассивность памяти и активность процессора.
Ячейка памяти всегда содержит какое-то значение. Полученное ячейкой значение не может быть изменено иначе как при выполнении специальной команды процессора, предназначенной для этого действия. Процессор всегда выполняет некоторую команду, закодированную последовательностью битов в ячейке и извлеченную из памяти.
1.1.2 Достоинства и недостатки Принстонской архитектуры Основное преимущество Принстонской архитектуры – упрощение устройства ВМ, так как реализуется обращение только к одной общей памяти.
Кроме того, использование единой области памяти позволяло оперативно перераспределять ресурсы между областями программ и данных, что существенно повышало гибкость вычислительной системы с точки зрения разработчика программного обеспечения. Размещение стека в общей памяти облегчало доступ к его содержимому. В разные моменты времени одна и та же область памяти может использоваться и как память программ и как память данных. Для того, чтобы программа могла работать в произвольной области памяти, ее необходимо модернизировать перед загрузкой, т.е. работать с нею как с обычными данными. Эта особенность архитектуры позволяет наиболее гибко управлять работой ВС, но создает принципиальную возможность искажения управляющей программы, что понижает надежность работы аппаратуры.
Экономичность неймановских (Принстонских) ВМ определяется минимальностью затрат оборудования на реализацию вычислительного процесса по сравнению с ВМ с ненеймановской архитектурой.
Неслучайно поэтому Принстонская (фон-Неймановская) архитектура стала основной архитектурой универсальных компьютеров, включая персональные компьютеры.
1.1.3 Достоинства и недостатки Гарвардской архитектуры Основной особенностью Гарвардской архитектуры является использование раздельных адресных пространств для хранения команд и данных.
Первым компьютером, в котором была использована идея гарвардской архитектуры, был Марк I. Разработан и построен в 1941 году по контракту с IBM молодым гарвардским математиком Говардом Эйкеном и ещ четырьмя инженерами этой компании на основе идей англичанина Чарльза Бэббиджа. Для хранения инструкций в Марк I использовалась перфорированная лента, а для работы с данными – электромеханические регистры. И такое разделение объяснялось, прежде всего, существующими тогда технологиями производства памяти: память для хранения данных с возможностью их перезаписи была малой емкости и дорого стоила, поэтому ее невозможно было использовать для хранения программ. В некотором смысле так было проще (смотрите историю вычислительной техники).
Гарвардская архитектура почти не использовалась до конца 70-х годов, пока производители микроконтроллеров (МК) не поняли, что она дает определенные преимущества разработчикам автономных систем управления.
Дело в том, что, судя по опыту использования микропроцессорных систем (МПС) для управления различными объектами, для реализации большинства алгоритмов управления такие преимущества Принстонской архитектуры как гибкость и универсальность не имеют большого значения. Анализ реальных программ управления показал, что необходимый объем памяти данных МК, используемый для хранения промежуточных результатов, как правило, на порядок меньше требуемого объема памяти программ. В этих условиях использование единого адресного пространства приводило к увеличению формата команд за счет увеличения числа разрядов для адресации операндов.
Применение отдельной небольшой по объему памяти данных способствовало сокращению длины команд и ускорению поиска информации в памяти данных.
Кроме того, Гарвардская архитектура обеспечивает потенциально более высокую скорость выполнения программы по сравнению с Принстонской за счет возможности реализации параллельных операций. Выборка следующей команды может происходить одновременно с выполнением предыдущей, и нет необходимости останавливать процессор на время выборки команды. Этот метод реализации операций позволяет обеспечивать выполнение различных команд за одинаковое число тактов, что дает возможность более просто определить время выполнения циклов и критичных участков программы.
Однако такая организация сложнее по сравнению с Принстонской, так как заставляет процессор обслуживать обмен по двум шинам одновременно.
Кроме того, такая схема реализации доступа к памяти имеет один очевидный недостаток – высокую стоимость. При разделении каналов передачи адреса и данных на кристалле процессора последний должен иметь почти в два раза больше выводов (так как шины адреса и данных составляют основную часть выводов микропроцессора). Способом решения этой проблемы стала идея использовать общую шину данных и шину адреса для всех внешних данных, а внутри процессора использовать шину данных, шину команд и две шины адреса. Такую концепцию стали называть модифицированной Гарвардской архитектурой. Разделение шин в модифицированной Гарвардской структуре осуществляется при помощи раздельных управляющих сигналов: чтения, записи или выбора области памяти (например, микроконтроллер ADuC812).
Большинство производителей современных 8-разрядных МК используют Гарвардскую архитектуру. Однако Гарвардская архитектура является недостаточно гибкой для реализации некоторых программных процедур.
Поэтому сравнение МК, выполненных по разным архитектурам, следует проводить применительно к конкретному приложению.
В Гарвардской архитектуре принципиально невозможно производить операцию записи в память программ, что исключает возможность случайного разрушения управляющей программы в случае неправильных действий над данными. Эти особенности определили области применения этой архитектуры построения микропроцессоров. Гарвардская архитектура применяется в микроконтроллерах, где требуется обеспечить высокую надежность работы аппаратуры и в сигнальных процессорах, где эта архитектура кроме обеспечения высокой надежности работы устройств позволяет обеспечить высокую скорость выполнения программы.
Существуют гибридные модификации архитектур, сочетающие достоинства как Гарвардской, так и Принстонской (фон-Неймановской) архитектур. Современные CISC-процессоры обладают раздельной кэш-памятью 1-го уровня для инструкций и данных, что позволяет им за один такт получать одновременно как команду, так и данные для е выполнения, т.е. процессорное ядро, формально, является Гарвардским, но с программной точки зрения выглядит как Принстонское, что упрощает написание программ. Обычно в данных процессорах одна шина используется и для передачи команд, и для передачи данных, что упрощает конструкцию системы. Современные варианты таких процессоров могут иногда содержать встроенные контроллеры сразу нескольких разнотипных шин для работы с различными типами памяти – например, DDR RAM и Flash. Тем не менее, и в этом случае шины, как правило, используются и для передачи команд, и для передачи данных без разделения, что делает данные процессоры еще более близкими к Принстонской архитектуре при сохранении плюсов Гарвардской архитектуры.
1.2 Организация вычислительной системы. Элементы вычислительного ядра и системы ввода-вывода вычислительной системы.
Под вычислительной системой (ВС) в рамках данного курса понимается комплекс технических средств (аппаратно-программных), предназначенный для автоматизации обработки информации.
Рис. 2. Структура некоторой гипотетической вычислительной системы (ВС) Выделенная система на рис. выше (обозначена «1») – простая однопроцессорная система.
Ввод/вывод организуется с помощью ЦП программным методом (с помощью программ ввода/вывода). Может быть несколько контроллеров ввода/вывода. Количество внешних устройств, подключаемых к контроллеру ввода/вывода, может быть различным; характерна шинная организация, где присутствует универсальный интерфейс, объединяющий элементы ядра и системы ввода/вывода.
Достоинства: простота, прозрачность, дешевизна.
Недостатки: надежность, время, низкая производительность.
Архитектура такой системы (простая однопроцессорная система) применялась в первых минимашинах. Сейчас применяется в несложных микроконтроллерах (с 8-разрядными или 16-разрядными ядрами).
Вычислительная система делится на две части:
1. Вычислительное ядро (то оборудование и программные средства, которые непосредственно участвуют в решении заданной задачи).
2. Система ввода-вывода (элементы, обеспечивающие общение вычислительного ядра с внешней средой).
К ядру относятся те элементы, которые непосредственно выполняют вычислительную работу. Поскольку в оперативной памяти обычно хранятся данные, непосредственно использующиеся в вычислительном процессе, этот элемент вычислительной системы («ОП» на рис. выше) однозначно можно отнести к ее ядру. Также к ядру ВС бесспорно относятся центральные процессоры («П» на рис. выше), так как они производят основные вычисления.
Кроме того, к ядру относятся те элементы ВС, которые обеспечивают взаимосвязь процессора и оперативной памяти (кэш-память), специальные процессоры (математический сопроцессор), специализированные блоки, отвечающие за синхронизацию, диспетчеризацию, обеспечивающие безопасность рабочих блоков.
Процессоры ввода-вывода («ПВВ» на рис. выше) занимают пограничное положение, и в одних случаях их целесообразно включить в ядро, а в других – в систему ввода-вывода. Например, если в системе процессор ввода-вывода имеет собственную (локальную) память, из которой он выбирает команды и в которой содержатся промежуточные результаты его вычислений, а с центральным процессором он непосредственно не сопряжен, то такой процессор, безусловно, относится к подсистеме ввода-вывода. В случае, когда процессор ввода-вывода разделяет одну и ту же память с центральным вычислителем, его нельзя однозначно отнести к подсистеме ввода-вывода.
К системе ввода-вывода также обычно относят контроллеры ввода-вывода и внешние устройства, которыми они управляют.
Определим понятия, обозначения которых даны на рис. выше.
1.2.1 Процессор и память Процессор – элемент вычислительной системы, устройство для выборки команд из памяти и выполнения действий, предписанных командами;
устройство, осуществляющее процесс обработки информации. В ряде случаев процессором также называют программные средства, предназначенные для обработки информации (например, текстовый процессор, языковой процессор).
Процессоры (в смысле устройств) можно классифицировать по разным критериям, например: по способу организации функционирования (конвейерные, матричные), характеру обрабатываемой информации, по назначению и т.д. Например, различают:
Универсальные (общего назначения) и специализированные (ПВВ, графические, процессоры обработки сигналов) процессоры. Первые призваны решать различные задачи и имеют широкую область применения, тогда как вторые ориентированы на решение узкого круга задач. Универсальные процессоры характеризуются: способностью обрабатывать большое число команд; системой команд (СК): если система команд позволяет решить любую задачу, то процессор универсальный. Нужно анализировать систему команд на ее сбалансированность, формы данных, способы адресации. Хотя универсальность процессора – вопрос относительный.
Центральные, периферийные и сервисные процессоры. Центральный процессор осуществляет общее управление вычислительной системой:
производит основную обработку данных, обмен ими с другими элементами ВС, а также управляет работой элементов ВС.
Периферийный процессор выполняет лишь часть функций вычислительной системы: управляет и обменивается данными с устройствами ввода-вывода (процессор ввода-вывода), может участвовать в вычислительном процессе (обрабатывать часть данных).
Сервисный (обслуживающий) процессор обычно не участвует в основном вычислительном процессе и выполняет функции контроля и обслуживания: выполняет инструментальные функции (доставка и отладка программного обеспечения, настройка оборудования), осуществляет контроль правильности функционирования системы, измерение параметров окружающей среды (температура, влажность), напряжения питания и т.п. В ВС один и тот же процессор может выполнять функции как периферийного, так и сервисного процессора.
Программируемость процессора – не обязательное свойство.
Процессоры могут быть:
Непрограммируемые, не программно реализованные.
Программируемые и программно реализованные.
Непрограммируемые, но программно реализованные.
Программируемые, но не программно реализованные.
Программируемый процессор – процессор, у которого есть система команд. Его можно настроить на решение той или иной задачи.
Функции непрограммируемого процессора раз и навсегда зафиксированы.
Процессоры могут строиться как аппаратные блоки или по принципу программно управляемых устройств.
Микропроцессор – процессор в интегральном исполнении, реализованный в рамках одной или нескольких интегральных микросхем; программируемый процессор в интегральном исполнении.
Микроконтроллер следует понимать как контроллер, построенный на основе микропроцессорной элементной базы. Микроконтроллеры могут быть однокристальными, одноплатными, программируемыми, логическими, промышленными, универсальными и т.д. Микроконтроллер в одном кристалле содержит микропроцессор и набор периферийных устройств и контроллеров:
контроллер прерываний, таймеры, контроллер сети, контроллер последовательного канала, контроллер памяти, контроллер ПДП и т.д.
Память – совокупность устройств, предназначенных для хранения программ, обрабатываемой информации (данных), промежуточных или окончательных результатов вычислений.
Важнейшие характеристики памяти – емкость, быстродействие и стоимость. Емкость ЗУ определяется предельным количеством информации, размещаемым в ЗУ, и исчисляется в кило-, мега- и гигабайтах. Быстродействие ЗУ характеризуется затратами времени на чтение запись информации при обращении к ЗУ. Стоимость ЗУ – это затраты средств в денежном выражении на хранение всего объема информации, определяемого емкостью ЗУ. Для сравнения качества ЗУ различных типов используется характеристика, называемая удельной стоимостью и равная стоимости ЗУ, деленной на емкость ЗУ. Удельная стоимость имеет размерность, например, доллар/МБ.
В зависимости от назначения и особенностей реализации устройств памяти, по-разному подходят и к вопросам их классификации.
Критерии классификации:
1. По назначению.
2. По виду физического носителя (технология производства).
3. По организации доступа (адресный: произвольный, прямой (циклический), последовательный; ассоциативный доступ).
4. По возможности записи и перезаписи.
5. По энергозависимости/энергонезависимости.
6. По типу интерфейса.
7. По типу организации адресного пространства.
8. По удалнности и доступности для центрального процессора (первичная, вторичная, третичная память).
Для системы ввода/вывода характерно то, что:
Память проявляется как категория внешних устройств.
В составе обеспечивающих устройств, применяется буферная память, чтобы можно было выравнивать скорость работы различных составов системы ввода/вывода.
1.2.2 Контроллер ввода-вывода Контроллер – устройство, управляющее функционированием отдельных блоков вычислительной системы и внешних устройств, например: вводомвыводом информации, доступом к памяти, к накопителям на магнитных дисках, дисплеям.
Контроллеры ввода-вывода (контроллеры периферийных устройств, КВВ) делятся на:
1. Устройства сопряжения стандартного интерфейса ВС с интерфейсом ВУ (функция преобразования), которые называются адаптерами;
2. Локальные устройства управления конечным оборудованием ВУ (функция управления).
Адаптер является средством сопряжения какого-либо устройства с какойлибо шиной или интерфейсом вычислительной системы. Контроллер служит тем же целям сопряжения, но при этом подразумевается его некоторая активность – способность к самостоятельным действиям после получения команд от обслуживающей его программы.
Внешние (периферийные) устройства – устройства обработки информации, управляемые процессорами или контроллерами ввода-вывода. К ним относятся устройства подготовки данных, устройства ввода и вывода информации, внешние накопители информации (ВЗУ), аппаратура передачи данных, различные преобразователи информации и т.д.
В смысле данного определения к контроллерам можно также отнести и периферийные процессоры. По сути, это они и есть, так как процессоры мы определили как любые устройства – элементы ВС, - обрабатывающие информацию. А поскольку контроллеры находятся в функциональном плане на периферии (см. определение), то их совершенно правильно было бы отнести к периферийным процессорам. Однако мы все-таки будем различать термины контроллер и процессор ввода-вывода. Сузим последнее понятие и, в рамках данного курса, процессорами ввода-вывода будем называть только те устройства обработки информации, которые могут самостоятельно выбирать команды из памяти (программируемые устройства, которые могут самостоятельно организовывать вычислительный процесс). Примеры ПВВ:
акселераторы 2D- и 3D-графики; элементы внешней памяти; звуковая карта;
сетевая карта. Процессоры ввода-вывода определяются по критерию сложности, но эта граница тоже расплывчата. Если устройство имеет программу, которая выполняется независимо от ЦП или является устройством с множеством сложных функций, то его можно отнести к ПВВ.
Контроллерами ввода-вывода будем называть устройства (или обособленные сложные блоки устройств), не способные самостоятельно избирать команды и для осуществления своих функций требующие управления извне. Простым примером такого устройства может быть контроллер последовательного канала. Для того чтобы он начал передавать посылку по линии связи, обычно требуется отдать ему определенную команду (в большинстве случаев это запись передаваемых данных в порт контроллера).
Далее, несмотря на то, что контроллер самостоятельно принимает посылки, поступающие по линии связи, выделяет из них данные и сохраняет в своем внутреннем буфере, дальнейшие действия по приему посылок он не способен выполнять, пока из его буфера не будут забраны принятые ранее данные.
Режимы работы этого контроллера (скорость, количество стоп-бит, контроль четности и т.п.), опять-таки, задаются извне: путем записи в порты контроллера соответствующих значений.
Программируемый КВВ – это устройство, режим работы которого задается программно с помощью управляющих слов (например, устройство, обеспечивающее работы COM-портов), т.е. они конфигурируются извне (задания режимов работы извне).
1.2.3 Процессор ввода-вывода В вычислительной технике под процессором понимается устройство обработки информации. Несмотря на то, что в основе современных процессоров могут лежать различные модели вычислений исторически сложилось так, что чаще всего используется модель на базе машины ФонНеймана.
Рис. 3. Структура процессора ввода-вывода Intel В отличии от обычного процессора, процессор ввода-вывода предназначен для работы в рамках системы ввода-вывода с целью увеличения производительности системы. Увеличение производительности происходит за счет разгрузки центрального процессора и организации параллельной работы СВВ и основного процессора.
В качестве примеров процессоров ввода-вывода можно представить:
Сетевой контроллер.
Контроллер жесткого диска.
В качестве примера процессора ввода-вывода можно рассмотреть Intel 80333. В состав этого процессора входит:
Ядро Intel XScale.
Контроллер памяти.
Контроллер UART.
Контроллер I2C.
Контроллер DMA.
Мосты PCIe – PCI-X.
Контроллер и арбитр периферийной шины.
Контроллер прерываний.
Порты ввода-вывода (GPIO).
Для сравнения, в большинстве современных микроконтроллеров (таких например, как Freescale Coldfire V2 или NXP LPC1700) выделенного процессора ввода-вывода нет, а есть только контроллеры ввода-вывода.
1.2.4 Интерфейс и протокол Интерфейс – в широком смысле стык, граница раздела двух взаимодействующих систем, устройств или программ. Также интерфейс можно определить как соглашение о взаимодействии объектов: перечень средств взаимодействия, их параметры, в случае аппаратных интерфейсов – параметры сигналов, способы доступа к средствам взаимодействия, правила взаимодействия и т.д.
Выделяют интерфейсы:
1. Аппаратный (устройство-устройство) – совокупность алгоритмов обмена и технических средств, обеспечивающих обмен между устройствами. Примеры: PCI, RS-232, I2C, Ethernet.
2. Программный – соглашение о связях в программной среде между программными модулями. Примеры: Win32, POSIX, API любого программного модуля (интерфейс прикладного программирования – набор функций, предоставляемый для использования в прикладных программах).
3. Пользовательский (ВС – пользователь) – сценарии, по которым строится общение оператора с вычислительной системой, и стиль их реализации.
Примеры: «дружественный интерфейс человек-компьютер», WIMP (window, icon, menu, pointers), стиль организации работы в программном комплексе Microsoft Office.
Аппаратный интерфейс – совокупность алгоритмов обмена и технических средств, обеспечивающих обмен между устройствами. В семиуровневой сетевой модели OSI аппаратный интерфейс соответствует физическому и частично канальному уровню, которые определяют физическую и логическую организацию аппаратного интерфейса.
Все множество аппаратных интерфейсов в рамках структуры, изображенной на рисунке выше, можно поделить по их назначению (типу сопрягаемых объектов) на 6 иерархических уровня:
1. Внутрисистемный («A» на рис. выше) – это группа интерфейсов, которая обеспечивает взаимодействие компонент ядра ВС. Интерфейсы этого уровня должны, очевидно, удовлетворять критерию максимальной производительности, например, интерфейс между процессором и памятью, в интерфейсной системе AMBA шина AHB.
2. Системный («B» на рис. выше) – группа интерфейсов, сопрягающих как элементы ядра ВС, так и элементы подсистемы ввода-вывода. Служат для развития системы (ISA, PCI, PCI Express), т.е. наращивания характеристик вычислительного ядра. Является компромиссом при создании дешевой вычислительной структуры.
3. Уровень стандартных интерфейсов ввода-вывода («C» на рис. выше) – группа интерфейсов, объединяющая контроллеры ввода-вывода с процессорами ввода-вывода. Характеристики этих интерфейсов сильно отличаются от характеристик первых двух групп: критерием является удобство и эффективность управления большим числом периферийных устройств. Рассматривается протокол обмена между ведущим и ведомым (интерфейс SCSI, SAS).
4. Уровень малых периферийных интерфейсов («D» на рис. выше), которые сопрягают контроллеры (процессоры) ввода-вывода непосредственно с внешними устройствами (RS-232, SPI, Centronics, SATA), из этого вытекают особенности организации этой группы интерфейсов. Для каждого внешнего устройства требуется свой оптимальный интерфейс.
5. Контроллерные сети. Примеры: 1-Wire, IC, USB. На рисунке выше не 6. Сети передачи данных (СПД) систем обработки данных (СОД). На рисунке выше не отображены.
Протокол (от греч. protkollon – первый лист, приклеенный к свитку манускрипта) – документ, содержащий запись всего происходившего.
Протоколирование – ведение записей, с информацией о произошедших событиях.
Протокол – правила взаимодействия двух и более систем при передаче данных.
1.2.5 Порт ввода-вывода Порт можно определить как точку, через которую осуществляется взаимодействие с каким-либо блоком в системе ввода-вывода, многоразрядный вход или выход устройства. Порт ввода-вывода – это логическая адресуемая единица СВВ, которая характеризуется: адресом, форматом данных и набором операций, которые к этому порту можно применять. Взаимодействие может осуществляться как программным путем, так и аппаратным (порт – разъем устройства).
В случае программного взаимодействия совокупность портов нумеруется и представляет собой адресное пространство (т.е. к каждому порту доступ осуществляется по его адресу). Различают порты ввода, вывода и двунаправленные (ввода-вывода). Управление блоками СВВ через порты осуществляется путем записи в них или чтения из них данных. При обращении к порту на линии системного интерфейса выставляется его адрес, который распознается специальным блоком – адресным декодером (или селектором адресов, что то же самое), – расположенным в устройстве, к которому приписан данный порт. Адресный декодер затем инициирует процесс обмена данными (запись или чтение, в зависимости от управляющих сигналов), см. первый пример на рис. выше. Надо сказать, что кроме наличия «нужного» адреса на линиях системного интерфейса для начала процесса обмена с устройством необходимы еще определенные значения управляющих сигналов («чтение», «запись», «Chip-Select» и т.п.). Одному и тому же устройству может соответствовать несколько портов, идущих друг за другом (диапазон адресов) или иначе (вразброс по адресному пространству портов), через которые осуществляется доступ к разным механизмам устройства или к различным частям одного механизма (например, один порт представляет собой регистр адреса внутренней памяти устройства, а через другой пересылаются данные).
Примеры: COM-порт в PC/AT, пространство портов ввода-вывода, порт контроллера ПДП (DMA).
На рис. ниже изображены два примера взаимодействия с устройством через порты. Первый пример иллюстрирует механизм распознавания номеров (адресов) портов, к которым происходит обращение через системный интерфейс. Этот механизм был описан в предыдущем параграфе. Второй пример показывает, как через один и тот же порт может осуществляться доступ к разным ячейкам внутренней памяти устройства. В примере по каждому факту записи через порт адрес ячейки внутренней памяти, в которую будет производиться следующая запись, увеличивается на единицу. Факт записи устанавливается следующим образом: селектором адреса выделяется адрес порта устройства в виде активного сигнала на выходе (т.е. на выходе блока СА), этот сигнал объединяется по «И» с сигналом записи системного интерфейса. На рисунке довольно абстрактно изображена работа с блоком памяти: изображены не все сигналы, не конкретизированы их источники, показано, что из памяти осуществляется чтение из остальной части устройства и др. – это не принципиально для примера, его цель – показать, как можно организовать доступ к разным ресурсам устройства через один и тот же порт. Вместо памяти можно с таким же успехом поставить несколько блоков, которые будут поочередно выбираться тем же счетчиком (СЧ на рисунке), а вместо доступа по записи можно организовать доступ по чтению или двусторонний обмен (чтение и запись).
Рис. 4. Примеры аппаратной реализации портов ввода-вывода Необходимо отметить, что формат данных, передаваемых через порт, не ограничивается форматом данных, пересылаемых через системный интерфейс.
Под форматом данных подразумевается как их разрядность, так и положение значащих разрядов. Пусть, например, шина данных системного интерфейса имеет разрядность 8 бит, а в порт записываются четырехбитные данные, причем эти четыре бита могут быть выделены маской 00111100b (единицы соответствуют выделяемой тетраде). В этом случае необходимо считать данными при обмене через порт только эти разряды. Или пусть у нас 14разрядный порт, а шина данных - 8-разрядная: данные будут считаться записанными в порт только тогда, когда по одному и тому же адресу будут записаны сначала младшие 8 разрядов (одна операция с 8-битной шиной данных), а затем – старшие 6 (в виде записи байта, из которого только 6 бит принимаются за данные).
1.2.5.1 Адресное пространство портов ввода-вывода: единое с оперативной памятью и раздельное Устройства ввода-вывода могут быть отображены в адресном пространстве оперативной памяти (memory-mapped I/O). Это называется вводом-выводом, управляемым памятью. Если устройства реагируют на обращения, как обычные компоненты памяти, они могут быть использованы для ввода-вывода, управляемого памятью. Единое адресное пространство портов ввода-вывода и оперативной памяти используется в большинстве современных микроконтроллеров с RISC-ядром: NXP LPC2000, LPC1700, Freescale Coldfire V2, Fujitsu и т. д.
Используется одна и та же адресная шина для обращения к основной памяти и устройствам ввода-вывода. Ввод-вывод, управляемый памятью, обеспечивает дополнительную гибкость программирования. Для доступа к порту ввода-вывода, расположенному в адресном пространстве памяти, могут использоваться любые работающие с памятью команды. Например, команда MOV позволяет пересылать данные между портом и любым регистром.
Команды AND, OR и TEST могут использоваться для манипулирования отдельными битами в регистрах управления и состояния периферийных устройств. Ввод-вывод, управляемый памятью, может использовать для адресации портов ввода-вывода полный набор команд и режимов адресации памяти.
Достоинства Не нужно во время схемотехнического проектирования кристалла процессора включать отдельные модули для организации и управления работой с портами ввода-вывода. Таким образом, микросхема процессора проще, производительнее, дешевле, может потреблять меньше электроэнергии и меньше по размерам.
При сегодняшних технологиях производства микроконтроллеров вопрос экономии памяти не стоит уже так остро, как несколько лет назад. Поэтому разделение по этой причине адресных пространств основной памяти и портов ввода-вывода не имеет такой значимости.
Недостатки В случае микропроцессоров с единым адресным пространством операции ввода-вывода могут замедлять операции обращения к основной памяти.
В процессорах семейства Intel x86 используется раздельное адресное пространство оперативной памяти и портов ввода-вывода. В таком случае есть специальный класс инструкций в системе команд для взаимодействия с устройствами ввода-вывода. Например, в процессорах семейства Intel x86 это команды IN и OUT, при помощи которых можно читать и писать от 1 до байтов из/в УВВ. Существует два вида команд ввода-вывода:
1. Команды, выполняющие пересылку отдельного элемента (байта, слова или двойного слова) в регистр или из регистра (для x86 IN, OUT). Они адресуют порты ввода-вывода либо напрямую, по адресу одного из портов, задаваемому непосредственно в команде, либо косвенно, при помощи адреса в регистре. Эти команды синхронизируют выполнение программы с работой внешнего аппаратного обеспечения. Буферы записи процессора очищаются, а выполнение программы откладывается до тех пор, пока не будет получен сигнал готовности (ready) последнего 2. Команды, пересылающие строки элементов (строки байт, слов или двойных слов), расположенных в памяти. Эти команды называются «строковыми командами ввода-вывода» или «блочными командами ввода-вывода» (для x86 INS, OUTS).
Кроме того, для отдельного адресного пространства может быть отдельная шина адреса.
Достоинства Экономичное решение для процессоров со скромными емкостями памяти и адресными пространствами. Меньшая разрядность адреса дает меньшую разрядность команды. Раздельное адресное пространство – решение проблемы замедления обращения к основной памяти из-за активного ввода-вывода.
Недостатки Ограничение в командах: чаще всего только загрузить из порта вводавывода в регистр процессора и обратно. Любая арифметическая, логическая операция над данными порта превращается как минимум в три инструкции.
Недостатком дополнительного адресного пространства является уменьшение регулярности процессов обращения к памяти, что в свою очередь усложняет оптимизацию архитектуры микроконтроллера с точки зрения увеличения производительности.
1.2.5.2 Организация конфигурируемых параллельных портов вводавывода Порты ввода-вывода (GPIO) современных микроконтроллеров являются сложными, многофункциональными устройствами. Практически каждый GPIO можно настроить как порт ввода (тогда он будет иметь высокое входное сопротивление) или порт вывода (тогда, мы получим возможность выдавать на этот порт значения логического нуля и единицы). В некоторых микроконтроллерах есть возможность притягивать выход микроконтроллера к нулю или логической единице с помощью внутренних резисторов. Таким образом, мы можем выбирать схему подключения: с открытым коллектором, с закрытым коллектором, при этом подтянутую к логической «1» или логическому «0».
Рис. 5. Пример реализации одного из портов ввода-вывода в Microchip PIC В некоторых микроконтроллерах есть возможность настраивать порты ввода-вывода таким образом, чтобы при возникновении фронта или спада импульса вырабатывалось прерывание.
Часть выводов микроконтроллера может работать не только как простые битовые порты ввода-вывода, но и как выходы и входы различных контроллеров (АЦП, ЦАП, UART, I2C, CAN, SPI и т.д), т.е. такие порты ввода-вывода обладают альтернативной функцией.
1.3 Принципы организации систем ввода-вывода В основе организации систем ввода-вывода лежат следующие принципы:
1. Принцип программного управления элементами СВВ.
2. Адресуемость элементов СВВ (прозрачность доступа для программиста).
3. Многоуровневая организация СВВ.
4. Параллельность работы элементов СВВ.
Первое положение распространяет принцип программного управления на элементы системы ввода-вывода. Каждое устройство в системе способно выполнять команды, на основе которых строится алгоритм работы с ним и реализуется часть поставленной перед вычислительной системой задачи.
В соответствии со вторым принципом, устройства (элементы) СВВ можно адресовать, т.е. организовать доступ к конкретному устройству по его адресу (номеру). Совокупность устройств можно, таким образом, видеть как группу адресов, если угодно, адресное пространство. Это адресное пространство (или пространства) может быть отдельным, а может входить в другое адресное пространство (например, пространство адресов ячеек памяти).
Принцип многоуровневой организации СВВ, с одной стороны, обеспечивает гибкость системы, сбалансированность по сложности и стоимости ее компонент, облегчает изменение ее конфигурации: добавление и замену отдельных модулей без перепроектирования всей системы. С другой стороны, многоуровневая организация СВВ позволяет осуществить декомпозицию задачи ввода-вывода.
Смысл четвертого положения заключается в том, что различные элементы СВВ как отдельные устройства (группы устройств) могут работать параллельно. В некоторых случаях это ключевым образом влияет на производительность системы, позволяя выполнять больший объем вычислений (ввода-вывода, преобразования информации) за фиксированный промежуток времени. Однако в большинстве случаев значительного повышения производительности добиться не удается. Это объясняется тем, что зачастую выполнение задачи не удается распараллелить вследствие специфики алгоритма даже при наличии такой возможности. Пусть, например, два устройства вводавывода могут получать и обрабатывать данные одновременно, но данные, полученные через одно устройство, должны, вследствие алгоритма работы системы, предшествовать данным, полученным от другого устройства – пока не будут получены данные от первого устройства, результаты работы второго не будут востребованы. В этом случае эффективность параллельной работы этих устройств сильно снижается, так как позволяет устранить лишь потерю информации, введенной во второе устройство до завершения обработки данных в первом. Эту ситуацию стоит сравнить со случаем, когда алгоритм работы системы организован так, что для использования данных от второго устройства не требуется наличия данных от второго.
1.3.1 Организация СВВ универсальных ЭВМ В основе создания СВВ универсальных ЭВМ лежат следующие критерии:
Обеспечение максимальной загрузки ЦП.
Обеспечение решения задач для широкого круга пользователей.
Обеспечение эффективной системы внешней памяти.
Обеспечение комфортных условий работы для операторов.
Для ПК несколько иной порядок: 2, 4, 1, 3. При этом добавляется еще один критерий – стоимость (точнее сказать доступность для широких слов населения). В настоящее время ПК позиционируется в основном как компьютер для офиса или домашний мультимедийный центр развлечений.
В состав периферийного оборудования типового ПК как правило входит:
1. Набор средств для взаимодействия оператора и компьютера (дисплей, манипуляторы и т. д.).
2. Устройства внешней памяти, их как минимум две группы:
а) устройства быстродействующей памяти с несменным носителем б) устройства со сменным носителем.
3. Устройства для получения жесткой копии, читаемой оператором 4. Коммуникационные устройства (модемы, сетевые контроллеры)ю 5. Мультимедийные устройства.
Рассмотрим пример организации современного ПК на базе чипсета H57.
СВВ на базе такого чипсета содержит:
1. До 8 портов PCIEx1 (PCI-E 2.0, но со скоростью передачи данных 2. До 4 слотов PCI.
3. 6 портов Serial ATA II на 6 устройств SATA300 (SATA-II, второе поколение стандарта), с поддержкой режима AHCI и функций вроде NCQ, с возможностью индивидуального отключения, с поддержкой eSATA и разветвителей портов.
4. Возможность организации RAID-массива уровней 0, 1, 0+1 (10) и 5 с функцией Matrix RAID (один набор дисков может использоваться сразу в нескольких режимах RAID: например, на двух дисках можно организовать RAID 0 и RAID 1, под каждый массив будет выделена своя 5. 14 устройств USB 2.0 (на двух хост-контроллерах EHCI) с возможностью индивидуального отключения.
6. MAC-контроллер Gigabit Ethernet и специальный интерфейс (LCI/GLCI) для подключения PHY-контроллера (i82567 для реализации Gigabit Ethernet, i82562 для реализации Fast Ethernet).
7. High Definition Audio.
1.3.2 Организация СВВ управляющих ЭВМ Управляющие ЭВМ имеют следующую специфику:
Ориентация на задачи управления.
Минимально возможное энергопотребление.
Повышенная наджность.
Сравнительно небольшие вычислительные ресурсы (память, быстродействие).
5. Интерфейс оператора минимален или отсутствует вообще.
В управляющих ЭВМ, как правило, используют специализированные процессоры для встраиваемых применений и устройства сопряжения с объектом (УСО) для работы с реальным объектом в условиях агрессивной окружающей среды.
1.3.2.1 Порты ввода-вывода Каждый процессор для встраиваемых применений имеет некоторое количество внешних линий ввода-вывода, подключенных к внешним выводам микросхемы и называемых внешними портами. Одиночные (одноразрядные, состоящие из одной линии) порты ввода-вывода объединяются в группы обычно по 4, 8 или 16 линий, которые называются параллельными портами.
Разрядность параллельных портов может быть нестандартной, например, 5разрядный порт у микроконтроллера PIC16F84.
Через порты процессорное ядро взаимодействует с различными внешними устройствами: считывает значения входных сигналов и устанавливает значения выходных сигналов.
Во встраиваемых системах в качестве внешних устройств чаще всего рассматриваются датчики, исполнительные устройства, устройства вводавывода данных оператором, устройства внешней памяти.
По типу сигнала различают порты:
1. Дискретные (цифровые) – используются для ввода-вывода дискретных значений логического «0» или «1».
В большинстве современных процессоров для встраиваемых применений поддерживается как независимое управление каждой линией параллельного порта, так и групповое управление всеми разрядами. Так как схемотехника отдельных линий в рамках одного 4-, 8- или 16-разрядного порта одинакова, то дальше будут рассматриваться устройство и функционирование одиночного разряда.
2. Аналоговые – через них вводятся сигналы на вход АЦП или других аналоговых схем и выводятся выходные сигналы ЦАП или других аналоговых схем.
Аналоговые порты (или перестраиваемые порты в аналоговом режиме) используются подключения внешних сигналов к ЦАП, АЦП или аналоговым компараторам, встроенным приемопередатчикам. В режиме работы с ЦАП, АЦП или компаратором порты обычно позволяют вводить сигнал в диапазоне от 0В- до Uпит+ (индексы + и – означают чуть больше и чуть меньше, примерно на 200-300мВ). В режиме приемопередатчика параметры сигналов определяются конкретным интерфейсом. В большинстве случаев аналоговые или цифровые линии подключения к приемопередатчикам вообще не называют портами, хотя они по схемотехнике и по месту в структуре процессора близки к универсальным портам ввода-вывода. Реализация входных и выходных каскадов зависит от схемы АЦП, компаратора, ЦАП или приемопередатчика.
3. Перестраиваемые – настраиваются на аналоговый или цифровой режим работы.
По направлению передачи сигнала различают:
1. Однонаправленные порты, предназначенные только для ввода (входные порты, порты ввода) или только для вывода (выходные порты, порты вывода).
2. Двунаправленные порты, направление передачи которых определяется в процессе программно управляемой настройки схемы.
3. Порты с альтернативной функцией. Отдельные линии этих портов связаны со встроенными периферийными устройствами, такими, как таймер, контроллеры последовательных приемопередатчиков. Если соответствующий периферийный модуль не задействован, то линии можно использовать как обычные порты, если модуль активизирован, то связанные с ним линии автоматически или «вручную» (программно) конфигурируются в соответствии с функциональным назначением и не могут быть использованы в качестве универсальных портов вводавывода. В некоторых случаях порты могут использоваться только для связи с периферийным модулем (например, входы АЦП в некоторых процессорах).
По алгоритму обмена различают порты:
1. С программно управляемым (программным) вводом-выводом:
установка и считывание данных определяется только ходом вычислительного процесса. Нет защиты от повторного считываниязаписи одного и того же (неизменившегося) значения на выводе и считывания-записи во время переходного процесса на выводе.
2. Со стробированием: каждая операция ввода-вывода подтверждается импульсом синхронизации (стробом) со стороны источника сигнала (при выводе – процессор, при вводе – внешнее устройство). Считывание информации приемником происходит только по стробу, что позволяет защититься от приема данных во время переходного процесса входного сигнала. Пример: порт PSP (Parallel slave port) в ОКМЭВМ PICmicro.
3. С полным квитированием. Данный режим чаще всего используется для обмена данными с другой вычислительной системой по параллельной шине. Кроме сигналов синхронизации со стороны передатчика используются сигналы подтверждения (готовности к следующему обмену) со стороны приемника. Это позволяет управлять интенсивностью обмена обеим взаимодействующим сторонам и предотвращает потерю данных, когда одна из них перегружена. Пример порта с квитированием – порт LPT персонального компьютера. Во встроенных модулях процессоров данный режим чаще всего реализуется программно-аппаратно.
1.3.2.2 Дискретные порты ввода-вывода В большинстве современных процессоров для встраиваемых применений поддерживается как независимое управление каждой линией параллельного порта, так и групповое управление всеми разрядами. Так как схемотехника отдельных линий в рамках одного 4-, 8- или 16-разрядного порта одинакова, то дальше будут рассматриваться устройство и функционирование одиночного разряда.
1.3.2.3 Однонаправленные порты Схема однонаправленного порта ввода представлена на рис. ниже.
Внешние данные считываются через вывод порта (ножку микросхемы), проходят через триггер Шмитта (ТШ) или схему защиты от дребезга (СЗД) и по внутреннему сигналу чтения фиксируются в регистре данных, с выхода которого, в свою очередь, данные считываются процессором.
ТШ (используется в большинстве процессоров для встроенного применения) имеет гистерезис по уровню входного напряжения и предотвращает многократное переключение входных схем при пологом фронте сигнала или помехах.
СЗД (например, в семействе Zilog Z8) вводит инерционность переключения и отсекает реакцию на короткие по длительности импульсы. Используется для защиты от помех.
К входу также могут подключаться так называемые «резисторы поддержки» логической «1» (Pull-up) или логического «0» (Pull-down). Эти резисторы предназначены для переведения входов в устойчивое состояние «0»
или «1» и предотвращения произвольных переключений от помех в моменты, когда на них (входы) не подается внешний сигнал, например, неиспользуемых и не подключенных к внешним схемам входов («открытых входов»). Через специальные управляющие регистры «схемы поддержки» могут быть отключены полностью или включены в режим Pull-up или Pull-down.
Все перечисленные блоки: триггер Шмитта, СЗД и «схемы поддержки» – используются для защиты от случайных переключений в результате помех и помогают снизить энергопотребление, которое резко возрастает в момент переключений входных схем.
Порты вывода бывают:
С двухтактной выходной схемой (комплементарные).
С однотактной выходной схемой и внутренней нагрузкой.
С открытым выходом (открытым коллектором или стоком).
Порты вывода с двухтактной выходной схемой являются самыми распространенными и реализованы, например, в семействах Atmel AVR, Microchip PICmicro, AMD AM186, Motorola HC08, HC11 и многих других.
Рассмотрим функционирование данной схемы.
Выходные данные записываются в регистр-защелку данных по внутреннему сигналу записи #WR и через простейшую логическую схему управляют выходными транзисторами. Если в регистр записано значение «1», то открыт верхний по схеме транзистор, а нижний закрыт: на выводе порта Vcc (логическая «1»). Если в регистр записано значение «0», то открыт нижний по схеме транзистор, а верхний закрыт: вывод порта соединен с минусовой шиной питания, т.е. там установлен «0».
На схеме верхний регистр управляет сигналом #OE – «разрешение выходов». Если в регистр записан «0», то схема работает, как было описано выше. Если записана «1», то оба транзистора закрываются и схема переводится в «высокоомное» состояние (Z-состояние). В этом состоянии выходное сопротивление порта очень высокое и он фактически «оторван» от микропроцессора. Это необходимо:
Если к выходному порту подключены выходы других схем и необходимо разделять линии передачи данных с этими устройствами.
Например: наш процессор используется как периферийный контроллер и его выходной порт подключен к периферийной шине другого процессора (мастера), к этой же шине подсоединены еще несколько периферийных контроллеров.
В схемах двунаправленных портов (см. ниже).
Достоинство:
Максимальные значения втекающего (в состоянии «0») и вытекающего (в состоянии «1») тока выхода составляют 2-6мА для каскадов с нормальной нагрузочной способностью (например, Fujitsu MB90) и 5-30мА для каскадов с повышенной нагрузочной способностью (например, PICmicro, AVR).
Встречаются отдельные микросхемы со сверхвысокой нагрузочной способностью – до 60-90мА (например, PIC17). Большой выходной ток позволяет непосредственно с ножки, без схем усиления и согласования сигнала, управлять достаточно мощной нагрузкой: светодиодами, реле, мощным электронным ключом (транзистор, тиристор). Это значительно упрощает схему устройств.
Недостатки:
При программировании необходимо управлять дополнительным битовым регистром «разрешение выхода».
Значительное энергопотребление и уровень помех при переключении.
Последний особенно зависит от скорости переключения. Для ограничения токов в момент переключений иногда используют специальные демпфирующие схемы. Однако они снижают быстродействие портов. Наибольшее применение демпфирующие схемы находят в портах ПЛИС в силу их особо высокого быстродействия.
Относительно сложная внутренняя схема, повышающая сложность и стоимость микросхемы в целом. Однако на нынешнем этапе, в связи с успехами технологии производства микросхем, это уже не является проблемой.
Порты вывода с однотактной выходной схемой и внутренней нагрузкой применяются, например, в семействе MCS-51. Они имеют более простую внутреннюю схему.
Когда в регистр-защелку записано значение «1», транзистор закрыт и на выходе через резистор RL устанавливается Vcc – логическая «1». Когда же в регистр-защелку записан «0», открывается транзистор и соединяет выход с минусовой шиной питания, т.е. там устанавливается «0». При этом резистор RL оказывается подключенным между шинами питания. Во избежание высокого тока через резистор и его перегрева сопротивление делают достаточно высоким 10-100кОм. Высокое сопротивление резистора позволяет непосредственно соединять несколько выходов, не опасаясь их встречного включения, так как если «0» на одном из выходов «подсадит» «1» на другом, то мощность, выделяемая на «подсаженном» резисторе будет мала, он не перегреется и каскад не выйдет из строя.
Достоинства:
Необходимо управлять только одним регистром.
Простая схема.
Возможность без дополнительных схем организовать подключение на одну внешнюю шину несколько таких выходов. Легко построить квазидвунаправленный порт ввода-вывода (см. ниже).
Недостаток:
Малый вытекающий ток (в состоянии «1»), ограниченный резистором RL – сотни мкА. Это не дает управлять относительно мощными нагрузками без дополнительных каскадов усиления либо требует обеспечивать, чтобы активным был сигнал со значением «0» («управление нулем»).
Порты вывода с открытым выходом (открытым коллектором или стоком) Применяются во многих семействах микропроцессоров, например, AMD Am186 (там это один из режимов порта), PICmicro. Выходной каскад построен по однотактной схеме с внешней нагрузкой. Принцип функционирования аналогичен описанному для однотактного выходного каскада.
Достоинства:
Внешнее напряжение питания нагрузки Vcc ext может быть иным – большим или меньшим, чем питание микропроцессора. Это может быть удобным для сопряжения схем с различными уровнями логической «1», например, 3,3В и 5В. Если внешнее напряжение достаточно высокое, то можно непосредственно управлять высоковольтной нагрузкой.
Например, анонсирован микроконтроллер семейства PICmicro допускающий подключение внешнего напряжения Vcc ext до 15В при питании ядра 2-6В.
Необходимо управлять только одним регистром.
Простая схема.
Возможность без дополнительных схем организовать подключение на одну внешнюю шину несколько таких выходов. При этом можно подбирать требуемое сопротивление RL, например, стандарт I2C требует чтобы сопротивление было 2.2кОм. Легко построить квазидвунаправленный порт ввода-вывода (см. ниже).
Недостатки:
Требуется внешняя нагрузка.
Малый вытекающий ток (в состоянии «1»), ограниченный внешним нагрузочным резистором.
1.3.2.4 Двунаправленные порты и порты с альтернативной функцией Самой простой схемой двунаправленного порта является квазидвунаправленный порт со схемой, аналогичной схеме порта вывода с однотактным выходным каскадом.
Регистр-защелка данных Регистр входных данных (на схеме не показан) подключен к внешнему выводу порта. Перед считыванием входных данных необходимо предварительно записать «1» в регистр-защелку выходных данных. Это закроет транзистор и исключит влияние порта вывода на входной сигнал. Резистор R L останется подключенным к входному сигналу и будет являться для него дополнительной нагрузкой, но, так как сопротивление резистора велико (10-100кОм), даже на маломощный входной сигнал данная нагрузка не окажет заметного влияния.
Схема квазидвунаправленного порта применяется в семействе MCS-51.
Более часто используется схема переключаемого двунаправленного порта с комплементарным выходным каскадом.
Она объединяет схемы порта ввода и порта вывода с двухтактной выходной схемой, описанные выше. Переключение порта в режим ввода осуществляется записью «1» в регистр «вход/выход». В этом случае (как было указано при описании порта вывода) оба транзистора переводятся в закрытое состояние и порт вывода не влияет на входной сигнал. В двунаправленных портах резисторы pull-up и pull-down подключаются только в режиме ввода, для чего на вход соответствующей схемы управления подключается выход регистра «вход/выход» («1» - ввод).
Рис. 12. Переключаемый двунаправленный порт с комплементарным выходным каскадом Кроме исполнения функции порта ввода-вывода внешние выводы микросхемы могут быть задействованы для связи с внутренними периферийными модулями микропроцессора, а также с подсистемами процессорного ядра, схем памяти и управления (с контроллером прерываний, блоком интерфейса внешней памяти и т.п.). Данные функции называются альтернативными. Обычно, когда вывод порта используется для выполнения альтернативной функции, основные схемы переводятся в состояние ввода или вообще отключаются.
1.3.2.5 Аналого-цифровой преобразователь Модуль аналого-цифрового преобразования (АЦП, Analog-to-digital converter, ADC) предназначен для ввода в процессор аналоговых сигналов с датчиков физических величин и преобразования значения напряжения этих сигналов в двоичный код с целью дальнейшей программной обработки [28, 32, 77, 91, 100]. Простейшим одноразрядным двоичным АЦП является компаратор.
Характеристики:
1. Разрядность АЦП характеризует количество дискретных значений, которые преобразователь может выдать на выходе.
2. Разрешение АЦП – минимальное изменение величины аналогового сигнала, которое может быть преобразовано данным АЦП. Обычно измеряется в вольтах, поскольку для большинства АЦП входным сигналом является электрическое напряжение.
3. Частота дискретизации.
4. Скорость преобразования.
5. Точность.
Пример:
Диапазон входных значений = от 0 до 10В (опорное напряжение) Разрядность двоичного АЦП 12 бит: 212 = 4096 уровней квантования Разрешение двоичного АЦП по напряжению: (10-0)/4096 = 0,00244В = 2,44мВ На практике разрешение АЦП ограничено отношением сигнал/шум входного сигнала. При большой интенсивности шумов на входе АЦП различение соседних уровней входного сигнала становится невозможным, т.е.
ухудшается разрешение. При этом реально достижимое разрешение описывается эффективной разрядностью (effective number of bits – ENOB), которая меньше, чем реальная разрядность АЦП. При преобразовании сильно зашумлнного сигнала младшие разряды выходного кода практически бесполезны, так как содержится шум.
Наиболее часто путаемыми характеристиками АЦП являются разрешающая способность и точность, хотя эти две характеристики реального АЦП крайне слабо связаны между собой. Разрешение не идентично точности, 12-разрядный АЦП может иметь меньшую точность, чем 8-разрядный. Для АЦП разрешение представляет собой меру того, на какое количество сегментов может быть поделен входной диапазон измеряемого аналогового сигнала (например, для 8-разрядного АЦП это 256 сегментов). Точность же характеризует суммарное отклонение результата преобразования от своего идеального значения для данного входного напряжения. Т.е., разрешающая способность характеризует потенциальные возможности АЦП, а совокупность точностных параметров определяет реализуемость такой потенциальной возможности. АЦП преобразует входной аналоговый сигнал в выходной цифровой код. Для реальных преобразователей, изготавливаемых в виде интегральных микросхем, процесс преобразования не является идеальным: на него оказывают влияние как технологический разброс параметров при производстве, так и различные внешние помехи. Поэтому цифровой код на выходе АЦП определяется с погрешностью. В спецификации на АЦП указываются погрешности, которые дает сам преобразователь. Их обычно делят на статические и динамические. При этом именно конечное приложение определяет, какие характеристики АЦП будут считаться определяющими, самыми важными в каждом конкретном случае.
В большинстве применений АЦП используют для измерения медленно изменяющегося, низкочастотного сигнала (например, от датчика температуры, давления, от тензодатчика и т.п.), когда входное напряжение пропорционально относительно постоянной физической величине. Здесь основную роль играет статическая погрешность измерения. В спецификации АЦП этот тип погрешности определяют аддитивная погрешность (Offset), мультипликативная погрешность (Full-Scale), дифференциальная нелинейность (DNL), интегральная нелинейность (INL), погрешность квантования и апертурная погрешность.
Аналоговый сигнал является непрерывной функцией времени, в АЦП он преобразуется в последовательность цифровых значений. Следовательно, необходимо определить частоту выборки цифровых значений из аналогового сигнала. Частота, с которой производятся цифровые значения, получила название частоты дискретизации АЦП.
Непрерывно меняющийся сигнал с ограниченной спектральной полосой подвергается оцифровке (т.е. значения сигнала измеряются через интервал времени T – период дискретизации), и исходный сигнал может быть точно восстановлен из дискретных во времени значений путм интерполяции.
Точность восстановления ограничена ошибкой квантования. Однако в соответствии с теоремой Котельникова-Шеннона точное восстановление возможно, только если частота дискретизации выше, чем удвоенная максимальная частота в спектре сигнала.
Поскольку реальные АЦП не могут произвести аналого-цифровое преобразование мгновенно, входное аналоговое значение должно удерживаться постоянным, по крайней мере, от начала до конца процесса преобразования (этот интервал времени называют «время преобразования»). Эта задача решается путм использования специальной схемы на входе АЦП – устройства выборки-хранения – УВХ. УВХ, как правило, хранит входное напряжение в конденсаторе, который соединн со входом через аналоговый ключ: при замыкании ключа происходит выборка входного сигнала (конденсатор заряжается до входного напряжения), при размыкании – хранение. Многие АЦП, выполненные в виде интегральных микросхем, содержат встроенное УВХ.
Полученное в результате преобразования значение записывается в регистр данных (РД). АЦП, интегрированные в кристалл процессора, обычно строят по схеме последовательного приближения. Время преобразования обычно составляет несколько десятков микросекунд, в зависимости от частоты тактирования АЦП. Завершение процесса преобразования отмечается установкой флага, и если разрешено, вырабатывается запрос прерывания. В современных управляющих процессорах и микроконтроллерах наиболее распространены АЦП с разрядностью 8, 10, реже 12 и совсем редко 14 и 16 бит.
Аналоговый коммутатор выбирает один из возможных аналоговых входов (выводов) и подключает его к входу внутреннего АЦП для преобразования. При последовательной выборке каналов создается имитация многоканального АЦП.
Применение действительно многоканальных АЦП резко повышает энергопотребление и стоимость процессора и обычно не используется (Если требуется несколько каналов и высокая скорость преобразования, то используют микросхему внешнего АЦП).
Код выбора канала может формироваться программно, т.е. программист «вручную» переключается между каналами, или аппаратно (автоматически), последовательно перебирая каналы (режим сканирования).
Для большего удобства использования модуля АЦП в режиме сканирования могут быть реализованы несколько регистров данных (Fujitsu MB90, Intel 8051GB) по одному на канал. Программисту будет достаточно считывать данные из регистра, соответствующего требуемому каналу. При этом код выбора канала параллельно подается на адресные входы блока регистров данных.
Источник опорного напряжения Vref и коммутатор Vref Опорное напряжение Vref определяет диапазон значений напряжения на аналоговых входах и разрешающую способность АЦП, равную Vref/2n, где n – разрядность АЦП. Если значение напряжения на входе невелико, то точность преобразования может быть увеличена путем уменьшения Vref. Диапазон допустимых значений Vref обычно находится в рамках значения напряжения питания процессора.
Могут быть использованы опорные источники следующего типа:
1. Внешний, подключаемый через специальный вывод микросхемы.
2. Внутренний, фиксированный или программируемый с помощью встроенного ЦАП.
Подключение к АЦП внешнего или внутреннего источников выполняется с помощью коммутатора Vref.
Коммутатор сигнала запуска АЦП позволяет выбрать способ запуска процесса преобразования, а также определяет один из возможных режимов работы АЦП:
1. Периодического преобразования. В этом режиме АЦП запускается периодическим сигналом от основного тактового генератора или встроенного таймера.
2. Если сигнал запуска подать на двоичный счетчик, выходами подключенный к управляющим входам аналогового коммутатора и адресным линиям блока регистров данных, то таким образом легко реализовать режим последовательного сканирования каналов.
3. Внешнего запуска. Запуск осуществляется внешним сигналом, что позволяет четко определить момент считывания значения аналогового напряжения со входа.
4. Программно управляемого запуска, по установке специального бита.
Блок управления модулем АЦП конфигурирует и синхронизирует функционирование других (вышеперечисленных) блоков, управляется программно через регистры специального назначения.
Аналоговый компаратор Аналоговый компаратор используется для сравнения напряжения двух внешних аналоговых сигналов или для сравнения напряжения внешнего аналогового сигнала с образцовым напряжением, вырабатываемым внутри процессора. Могут быть запрограммированы различные уровни образцового напряжения. Результат сравнения кодируется битом в регистре специального назначения, например, «1» – вход A больше или равен B, «0» – вход A меньше B. В случае изменения соотношения изменяется значение бита, а также может быть установлен флаг и выработан запрос прерывания.
Структура блока аналогового компаратора приведена ниже.
Аналоговый коммутатор входов выбирает аналоговые сигналы для сравнения. Первый сигнал берется с внешнего входа AIN1, в качестве второго берется сигнал с внешнего входа AIN2 или эталонное внутреннее напряжение, которое вырабатывается с помощью ЦАП.
ЦАП – программируемый генератор эталонного напряжения.
Регистр данных – программно доступный регистр, в битах которого сохраняются результаты сравнения одного или нескольких компараторов.
Схема фиксации перепада определяет изменение одного из бит в регистре данных (выхода одного из компараторов) и вырабатывает по этому событию запрос прерывания.
Пример использования аналогового компаратора:
1. Контроль превышения допустимых значений температуры, давления, тока, напряжения и других физических величин. Физическая величина преобразуется в напряжение с помощью датчика и контролируется с помощью аналогового компаратора. Порог сравнения устанавливается встроенным генератором образцового напряжения.
2. Обнаружение (формирование) фронтов внешних сигналов.
3. Встроенные схемы контроля напряжения питания системы.
В настоящее время известно большое число методов преобразования напряжение-код. Эти методы существенно отличаются друг от друга потенциальной точностью, скоростью преобразования и сложностью аппаратной реализации.
Рис. 14. Классификация АЦП по методам преобразования В основу классификации АЦП положен признак, указывающий на то, как во времени разворачивается процесс преобразования аналоговой величины в цифровую. В основе преобразования выборочных значений сигнала в цифровые эквиваленты лежат операции квантования и кодирования. Они могут осуществляться с помощью либо последовательной, либо параллельной, либо последовательно-параллельной процедур приближения цифрового эквивалента к преобразуемой величине.
Параллельные АЦП АЦП этого типа осуществляют квантование сигнала одновременно с помощью набора компараторов, включенных параллельно источнику входного сигнала. На рисунке показана реализация параллельного метода АЦпреобразования для 3-разрядного числа. С помощью трех двоичных разрядов можно представить восемь различных чисел, включая нуль. Необходимо, следовательно, семь компараторов. Семь соответствующих эквидистантных опорных напряжений образуются с помощью резистивного делителя.
Если приложенное входное напряжение не выходит за пределы диапазона от 5/2h, до 7/2h, где h=Uоп/7 – квант входного напряжения, соответствующий единице младшего разряда АЦП, то компараторы с 1-го по 3-й устанавливаются в состояние «1», а компараторы с 4-го по 7-й – в состояние «0».
Подключение приоритетного шифратора непосредственно к выходу АЦП может привести к ошибочному результату при считывании выходного кода.
Рассмотрим, например, переход от трех к четырем, или в двоичном коде от к 100. Если старший разряд вследствие меньшего времени задержки изменит свое состояние раньше других разрядов, то временно на выходе возникнет число 111, т.е. семь. Величина ошибки в этом случае составит половину измеряемого диапазона.
Так как результаты АЦ-преобразования записываются, как правило, в запоминающее устройство, существует вероятность получить полностью неверную величину. Решить эту проблему можно, например, с помощью устройства выборки-хранения (УВХ). Некоторые интегральные микросхемы сверхскоростными УВХ, имеющими время выборки порядка 0,1 нс. Другой путь состоит в использовании кода Грея, характерной особенностью которого является изменение только одной кодовой позиции при переходе от одного кодового значения к другому. Наконец, в некоторых АЦП (например, МАХ1151) для снижения вероятности сбоев при параллельном АЦ-преобразовании используется двухтактный цикл, когда сначала состояния выходов компараторов фиксируются, а затем, после установления состояния приоритетного шифратора, подачей активного фронта на синхровход выходного регистра в него записывают выходное слово АЦП.
Благодаря одновременной работе компараторов параллельный АЦП является самым быстрым. Например, восьмиразрядный преобразователь типа МАХ104 позволяет получить 1 млрд. отсчетов в секунду при времени задержки прохождения сигнала не более 1,2 нс. Недостатком этой схемы является высокая сложность. Действительно, N-разрядный параллельный АЦП сдержит 2N-1 компараторов и 2N согласованных резисторов. Следствием этого является высокая стоимость и значительная потребляемая мощность.
АЦП последовательного приближения АЦП последовательного приближения (successive approximation architecture, SAR), или АЦП с поразрядным уравновешиванием содержит компаратор, вспомогательный ЦАП и регистр последовательного приближения.
АЦП преобразует аналоговый сигнал в цифровой за N шагов, где N – разрядность АЦП.
На каждом шаге определяется по одному биту искомого цифрового значения, начиная от старшего значащего разряда (СЗР) и заканчивая младшим значащим разрядом (МЗР). Последовательность действий по определению очередного бита заключается в следующем. На вспомогательном ЦАП выставляется аналоговое значение, образованное из битов, уже определнных на предыдущих шагах; бит, который должен быть определн на этом шаге, выставляется в 1, более младшие биты установлены в 0. Полученное на вспомогательном ЦАП значение сравнивается с входным аналоговым значением. Если значение входного сигнала больше значения на вспомогательном ЦАП, то определяемый бит получает значение 1, в противном случае 0. Таким образом, определение итогового цифрового значения напоминает двоичный поиск. АЦП этого типа обладают одновременно высокой скоростью и хорошим разрешением. Однако при отсутствии устройства выборки хранения погрешность будет значительно больше (представьте, что после оцифровки самого большого разряда сигнал начал меняться).
Характеристика АЦП последовательного приближения: невысокая скорость преобразования, невысокая цена и низкое энергопотребление.
1.3.2.6 Цифро-аналоговый преобразователь Цифро-аналоговый преобразователь (digital-analog converter, DAC) предназначен для преобразования числа, представленного, как правило, в виде двоичного кода, в напряжение или ток, пропорциональные этому числу.
Схемотехника цифро-аналоговых преобразователей весьма разнообразна. На рисунке ниже представлена общая классификация ЦАП по способам преобразования входного кода и схемам формирования выходного сигнала [28, 32, 77, 91, 100].
Дальнейшую классификацию цифро-аналоговых преобразователей можно провести по ряду специфических признаков, например:
1. По роду выходного сигнала: преобразователи с токовым выходом или с выходом по напряжению.
2. По типу цифрового интерфейса: с последовательным вводом или параллельным вводом.
3. По числу ЦАП на кристалле: одноканальные и многоканальные.
4. По быстродействию: низкого, среднего и высокого быстродействия.
5. По разрядности.
Матрица R-2R – самый распространенный метод цифро-аналогового преобразования. Матрица работает по принципу деления входного напряжения на входах. Матрица имеет число входов по числу разрядов регистра данных. На каждый вход через ключ может быть подано опорное напряжение Vref или 0В.
Ключи управляются разрядами регистра данных: «1» – на матрицу подается Vref, «0» – подается 0В.
Коммутатор опорного напряжения Vref позволяет выбрать внешний или встроенный источник опорного напряжения.
В регистр данных записывается цифровой код. Регистр данных определяет разрядность ЦАП.
Рис. 18. Модуль ЦАП с типом преобразования «Матрица R-2R»
На практике ЦАП применяется для управления различными исполнительными устройствами (приводами) и системами: электродвигателями постоянного тока с переменной скоростью вращения, источниками питания с управляемым напряжением, различными индикаторами и т.п. С помощью ЦАП можно синтезировать аналоговые сигналы различной формы, например, синусоидальной.
1.3.2.7 Устройства сопряжения с объектом (УСО) управляющих ЭВМ Устройства сопряжения с объектом (УСО), которые также называют модулями ввода-вывода, выполняют функции адаптера датчиков и исполнительных устройств. Они имеют специальные аппаратные каскады сопряжения с оконечными устройствами и поддерживают алгоритмы управления ими. УСО могут выполнять функции первичной обработки данных с датчиков: фильтрацию, усреднение и накопление. УСО являются подчиненными по отношению к логическим контроллерам и самостоятельно не реализуют каких-либо алгоритмов контроля объекта управления. По способу взаимодействия с логическим контроллером УСО делятся на:
Локальные, конструктивно совмещенные с логическим контроллером.
Удаленные, или сетевые, взаимодействующие с логическим контроллером по сетевому каналу, конструктивно независимые от логических контроллеров.
В отличие от УВВ УСО работает с реальным объектом в условиях помех, высоких напряжений и больших токов (например, управление двигателем переменного тока). Как правило, это устройство гальванически развязано с объектом управления. В качестве УСО могут выступать дискретные (битовые) входы и выходы, аналоговые входы и выходы и т.п. Без гальванической развязки управляющий вычислительный комплекс будет постоянно сбоить из-за помех или сгорит при появлении повышенного напряжения на входе УСО.
Устройство сопряжения с объектом является водоразделом, отделяющим «тепличный» мир вычислительного устройства от достаточно агрессивной окружающей среды. УСО должно не только сопрягать различные уровни сигналов, например 24В, необходимые для включения реле, и 5В (TTL-уровень) на выходе битового порта ввода-вывода микроконтроллера, но и не пропускать высокие напряжения во внутренние цепи контроллера.
В некоторых системах (например, в медицинских) главным является сохранение объекта управления, так как от этого напрямую зависит жизнь человека. Такие системы тестируются на степень защиты человека от электрической травмы из-за некорректной работы УСО.
2 Способы обмена информацией между устройствами вычислительной системы В данной главе рассматривается обмен между ядром вычислительной системы и элементами системы ввода-вывода. Обмен производится с точки зрения программы, выполняющейся на центральных процессорах, которая взаимодействует с блоками СВВ через порты ввода вывода.
Все многообразие способов такого обмена можно разделить на несколько видов:
1. Программно управляемые:
Асинхронный с программной проверкой готовности (программный полинг, «по опросу»).
Асинхронный с аппаратной проверкой готовности (обмен по 2. В режиме прямого доступа (без участия центральных процессоров).
2.1 Синхронный обмен данными Синхронный обмен данными предполагает отсутствие ситуации неготовности обменивающихся сторон. Например, при чтении данных из порта предполагается, что устройство всегда готово передать их читающей стороне.
При записи в порт, наоборот, устройство всегда готово принять данные.
При синхронном обмене им полностью управляет программа, а элемент СВВ, с которым происходит взаимодействие, никак не может повлиять на ход обмена. Т.е., даже если устройство работает с задержками, то эти задержки учитывает программа, которая с ним взаимодействует, но само устройство не имеет никакой возможности сообщить программе о своей готовности или неготовности.
Основные достоинства:
рассматриваемых в данном разделе.
Синхронный обмен требует минимум аппаратного обеспечения.
Основной минус: синхронный обмен сложно (или вообще невозможно) организовать с асинхронными устройствами (т.е. с устройствами, имеющими разное время выполнения операций и/или множество производимых операций с сильно различающимися временами выполнения).
2.2 Асинхронный обмен данными с программной проверкой готовности Асинхронный обмен с программной проверкой готовности предполагает возможность программно оценить степень готовности элемента СВВ, к которым происходит взаимодействие. Обычно для этих целей служит программно доступный (через порт) регистр состояния устройства. Перед тем, как передать данные устройству или забрать их из него, программа имеет возможность определить, готово ли само устройство к этой операции, прочитав значение из порта состояния.
Простым примером может служить работа с контроллером последовательного канала (UART) «по опросу»: перед тем, как прочитать данные из порта данных контроллера, необходимо проверить, являются ли эти данные результатом приема посылки и не забирались ли они программой ранее.
Проще говоря, необходимо проверить данные на достоверность. Перед тем же, как записывать данные для передачи в буфер контроллера, необходимо убедиться, что в буфере есть место, т.е. что запись новых данных в буфер не приведет к уничтожению ранее помещенных и еще не переданных данных.
Очевидно, что такой способ обмена требует дополнительных усилий со стороны программы на опрос готовности. Потенциально возможна ситуация выхода устройства из строя («вечная неготовность»), поэтому необходимо соответствующим образом строить алгоритм работы с ним, чтобы программа не «зависала» в бесконечном цикле, дожидаясь готовности со стороны устройства (см. рисунок).
Рис. 19. Нерекомендуемый подход к обмену с устройством Типичный алгоритм асинхронного обмена с программным опросом готовности (фрагмент программы) изображен на рисунке. Очевидно, такой способ позволяет избежать ситуации «зависания» программы, а также провести диагностику причины (длительной) неготовности устройства и установить факт его выхода из строя.