Доступ к внешним устройствам 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Доступ к внешним устройствам



С точки зрения центрального процессора и исполняющейся на нем про­граммы, внешние устройства представляют собой наборы специализирован­ных ячеек памяти или, если угодно, регистров. У микроконтроллеров эти ячейки памяти представляют собой регистры центрального процессора. У процессоров общего назначения регистры устройств обычно подключаются к шинам адреса и данных ЦПУ. Устройство имеет адресный дешифратор. Если выставленный на шине адрес соответствует адресу одного из регистров устройства, дешифратор подключает соответствующий регистр к шине дан­ных (рис. 6.1). Таким образом, регистры устройства получают адреса в фи­зическом адресном пространстве процессора.

Рис. 7.1 Подключение внешнего уастройства к шине

Два основных подхода к адресации этих регистров:

- это отдельное адресное пространство ввода-вывода;

- отображенный в память ввод-вывод (memory-mapped I/O), когда память и регистры внешних устройств размещаются в одном адресном пространстве.

В первом случае для обращения к регистрам устройств используются специальные команды in и out.

Во втором случае могут использоваться любые команды, способные работать с операндами в памяти.

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

Любопытный гибридный подход, сочетающий преимущества обоих вышена­званных, предоставляют микропроцессоры с системой команд SPARC v9. У этих процессоров команды имеют поле, служащее селектором адресного пространства. Этот селектор, в частности, может использоваться для выбора адресного пространства памяти или ввода-вывода. Благодаря этому, с одной стороны, можно применять для работы с регистрами портов любые команды работы с памятью, как при отображенном в память вводе-выводе, и в то же время полностью задействовать адресное пространство памяти.

Два основных подхода к выделению адресов внешним устройствам:

-это фиксированная адресация, когда одно и то же устройство всегда имеет одни и те же адреса регистров,

- географическая адресация, когда каждому разъему периферийной (или системной, если внешние устройства подключаются непосредственно к ней) шины соответствует свой диапазон адресов (рис. 6.2). Географически можно распределять не только адреса регистров, но и другие ресурсы — линии запроса прерывания, каналы ПДП.

Рис. 7.2 Фиксированная и географическая адресация

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

Большинство периферийных шин современных ПК такие, как PCI, S-Bus и др., реализуют географическую адресацию.

Многие современные конструктивы требуют, чтобы кроме регистров управ­ления и данных устройства имели также конфигурационные регистры, через обращение к которым ОС может получить информацию об устройстве: фирму-изготовителя, модель, версию, количество регистров и т. Д. Наличие таких регистров позволяет ОС без вмешательства (или с минимальным вме­шательством) со стороны администратора определить установленное в сис­теме оборудование и автоматически подгрузить соответствующие управ­ляющие модули.

Простые внешние устройства

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

Порт вывода представляет собой регистр и несколько выходных контактов. В литературе вход-ные и выходные контакти микросхем обычно называют просто входами и выходами. Количество выходов порта, как правило, соответствует, и никогда не превосходит количества битов в регистре. Если в бит регистра записан ноль, напряжение на виходе порта будет низким, а если единица, то, соответственно, высоким. Большинство современных микропроцессорных комплектов используют так называемые ТТЛ-совместимие напряжения, когда нулю соответствует напряжение 0 В, а единице — 5 В.

Применения порта вывода многообразны. Например, к нему можно присоединить светодиод и получить лампочку, миганием которой можно программно управлять (такне диоды часто используются при отладке программ для микроконтроллеров — вместо диагностической печати).

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

Другое столь же простое устройство — зто порт ввода. Порт ввода также состо­ит из регистра и нескольких входных линий, соответствующих битам реги­стра (рис. 7.3).

Бит регистра имеет значение 0, если на вход подано низкое напряжение и, наоборот, единицу — если высокое.

Регистр порта ввода часто называют регистром-защелкой, потому что основная его функция — зафиксировать напряжения на входах в определенньїй момент времени и передать их центральному процессору в виде однозначно определенных значений.

Рис. 7.3 Порт ввода

Разработчики микросхем часто совмещают входы портов ввода и выводы портов вывода, создавая таким образом комбинированное устройство — порт ввода-вывода. Такое устройство должно быть существенно сложнее, чем простая комбинация порта ввода и порта вывода. (рис. 7.4).

Рис.7.4 Принципиальная схема порта ввода-вывода

Таким образом, даже такое простое устройство, как порт ввода-вывода, имеет целых три регистра: два регистра данных (многие реализации портов размещают зти два регистра по одному адресу: при чтении обращение происходит к защелке порта ввода, а при записи — к регистру порта вывода) и один управляющий. Более сложные устройства обычно также имеют один или несколько регистров данных и один или несколько управляющих регистров. Устройства, передающие и принимающие большие обьемы данных (контроллеры жестких дисков, сетевые интерфейсы, видеоадаптеры) часто вместо одного регистра данных снабжаются буфером памяти, отображенным на адреса памяти процессора.

Порты передачи данных

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

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

При синхронной передаче выставляется дополнительный сигнал, либо тем или иным способом передаём синхросигналы по тем же проводам, что и данные. Реальные способы совмещения кодирующих и синхронизующих сигналов в одном проводе сложны.

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

При ассинхронном обмене данными передающее устройство посылает специальньїй стартовый символ, сигнализирующий о том, что сейчас пойдут дан­ные, и с фиксированным интервалом выставляет на своих выходах символы данных. Передаваемый за один прием блок данных обычно невелик по объему — ведь необходимо считаться с опасностью того, что часы приёмника и передатчика, посредством которых они отмеряют интервал между последовательными порциями данных, недостаточно точны и могут разойтись. Обычно блок данных состоит из фиксированного количества символов и называется кадром или фреймом. Кадр обычно завершается одним или несколькими стоповыми символами. Не обнаружив зтих символов (или обнаружив на месте зтих символов неверные значення), приемник может понять, что его часы все-таки разошлись с часами передатчика.

Асинхронная передача позволяет сзкономить на проводах (не требуется стробирующих сигналов) и при зтом избежать сложньгх способов кодирования, характерних для совмещенной синхронной передачи, однако стартовые и стоповые символы составляют значительную часть потока передаваемьк данных и создают ощутимые накладные расходы.

Ассинхронная передача данных удобна в ситуациях, когда обьем передаваемыіх данных невелик, а потребность в их передаче возникает в труднопредсказуемые моменти. Обычно асинхронные порты работают на небольших скоростях, не более нескольких килобит в секунду.

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

Как синхронные, так и асинхронные порты бывают следующих типов (рис. 7.5):

· симплексные (передавать данные может только одно устройство);

· полудуплексные (оба устройства могут принимать и переда­вать данные, но не способны делать зто одновременно, например, пото­му, что прием и передача идут по одному проводу);

· полнодуплексные или просто дуплексные (оба устройства спо­собны одновременно передавать и принимать данные, чаще всего — по различным проводам).

Рис. 7.5 Симплексные, полудуплексные и полнодуплексные порты

Еще одна практически важная классификация портов передачи данных — зто деление их на последовательные и параллельные порты (рис. 7.6).

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

Параллельный порт имеет несколько линий передачи данных, обычно 8 (чтобы можно би­ло передать за один прием один байт), а иногда и больше.

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

 

Рис. 7.6 Последовательные и паралельные порты

 

Порт RS232

Протокол последовательного асинхронного обмена RS232/ССІТТ \/24 широко применяется для подключения к компьютеру алфавитно-цифровых терминалов, низкоскоростных печатающих устройств, позиционных устройств ввода (мышей, планшетов), низкоскоростного телекоммуникационного оборудования и т. д..

Такие порты используются для передами данных за пределы корпуса компьютера, позтому кроме линии передами данных предусмотрен также провод, передающий опорное нулевое напряжение. Вместо ТТL--совместимых напряже­ний, RS232 использует в качестве 1 напряжения в диапазоне от -25 до -З В, а в качестве 0 — соответственно, в диапазоне от +3 до +25 В (рис. 7.7).

RS232 предполагает двусторонний обмен данными. Для зтой цели предусмотрено две линии данных — для приема и для передачи, обозначаемые ТХ и RХ. В соответствии со стандартом, устройства делятся на два типа: «компьютеры» и «терминалы». Различие между ними состоит в том, что "компьютер" передает данные по линии ТХ, а получает по линии RХ, а "терминал" — наоборот. Для соединения двух "компьютеров" необходим специальньїй, так называемый нуль-модемньїй кабель, в котором провода ТХ и RХ перекрещены. Любопытно, что стандартные порт ІВМ РС являются "терминалами", а не "компьютерами".

Рис.7.7 Диапазон напряжений RS232

Обмен данными осуществляется кадрами, состоящими из стартового бита, се­ми или восьми битов данных (младший бит передается первым), возможно — контрольного бита четности, и одного или двух стоповых битов. Игнорируя ошибки четности или вообще не проверяя четность, можно использовать зтот бит для передачи данных, и получить, таким образом, девять битов данных в одном кадре.

Минимальная скорость передачи составляет 300 бит/с, последующие допустимые скорости получаются удвоением предыдущей— 600 бит/с, 1200, 2400 и т. д. Современные реализации RS232 поддерживают скорости 115 200 бит/с и более. Скорость и вариации формата кадра определяются настройками приемника и передатчика. Необходимо, чтобы у соединенных портом устройств эти настройки совпадали, однако протокол сам по себе не предоставляет средств для их согласования.

Протокол RS232 весьма прост и легко может быть реализован программными средствами с использованием двух бит порта ввода-вывода.

 

Шины

Описанные в предьщущем разделе порты передачи данных соединйют друг с другом два устройства. Однако часто оказнвается целесообразно подключить к одному порту передачи данных несколько устройств, причем необязательно однотипних. Каждая передаваемая по такому порту порция данных обязана сопровождаться указанием, какому из подключенных устройств она предназначена — адресом или селектором устройства. Такие многоточечные порты называются шинами (bus) (рис. 7.7). Шины бывают синхронные и асинхронные, а также последовательные и параллельные. При описаний шин термины "синхронный" и "асинхронный" используют в ином значений, чем при описаний портов. Асинхронними называют шины, в которых ведомое устройство не выставляет (или не обязано виставлять) сигнал завершення операции, а синхрон­ными, соответственно, шины, где ведомый обязан зто делать.

Рис. 7.7 Шины

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

Основной недостаток шын состоит в том, что в каждый момент времени только одно устройство на шине может передавать данные. Если у двухточечныїх портов часто оказывается целесообразньм реализовать полнодуплексньїй обмен данными при помощи двух комплектов линий (один на прием, другой на передачу, как в описанном выше RS232), то в случае шинной топологии зто невозможно. Позтому шинs бывают только полудуплексные или симплексные.

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

Если передачу данных могут инициировать несколько устройств (как, например, в случае системной шины с несколькими процессорами и/или контроллерами ПДП), шинная топология оказывается наиболее естественным выбором. Такая конфигурация требует решения еще одной проблемы: обеспечения, арбитража доступа к шине со сторони возможных инициаторов обмена — задатчиков шины (рис. 7.8). Методы арбитража отличаются большим разнообразием.

Рис. 7.8 Шины с несколькими задатчиками

 

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

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

Связь центральньїх процессоров с банками ОЗУ и внешними устройствами в подавляющем большинстве современных компьютеров осуществляется параллельными стробируемыми шынами.

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

Рис.7.9 Системные и периферийные шины

 

Шина РСІ

Шина РСІ (Peripheriat Component Interconnect), разработанная фирмой Іпіеі, в настоящее время используется в вычислительных системах разного уровня, начиная от персональних компьютеров с архитектурами х86 и РоwегМас и заканчивая старшими моделями серверов Suп Fіге. В конструктиве РСІ исполняется множество различных периферийных устройств— сетевые карты, адаптеры SCSI, графические и звуковые карты, платы видеоввода и видеовывода и др.

РСІ не рассчитана на использование в качестве системной шины. Напротив, спецификации шины предполагают ее подключение к процессорам и памяти через специальное устройство, мост системной шины (host-to-РСІ bгіdge) (рис. 7.10). Зто позволяет использовать РСІ в системах, основанных на раз­личных процессорах, таких, как х86, Роwer, SPARС.

РСІ предусматривает как монтаж устройств на материнскую плату системы, так и их исполнение в виде плат расширения. Шина допускает подключение не болеє 4 устройств.

По исходным спецификациям, не более трех из них может подключаться через внешние разьемы, однако зто не мешает многим поставщикам оборудования изготавливать платы с четырьмя внешними разьемами без мостов. Предусмотренный стандартом способ обхода указанного ограничения состоит в установке в системе нескольких адаптеров РСІ, через собственные мосты системной шины или через РСI-to-РСІ. Bгіdge. Допустимы также мосты, подключающие другие периферийные шины, например ISA, USВ и т. д,

 

Рис. 7.10 Мост системной шины



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 449; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.115.99 (0.055 с.)