Разделы
Публикации
Популярные
Новые
Главная » Сопряжение цифровых, аналоговых сигналов

1 ... 11 12 13 14 15 16 17 ... 59

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

10.11. Обработка [ферывания

Метод 2: векторное прерывание. Наиболее эффективным (и, следовательно, быстродействующим) способом прерывания, особенно при наличии в системе большого числа прерывающих устройств, является прерывание по вектору, при котором прерывающее устройство сообщает центральному процессору свое имя. Как было показано выше, в некот^>ых машинах это выполняется автоматически, при этом переход к ячейке, указанной прерывшощим устройством, совершается аппаратным путем: по такому принципу работает ЭВМ PDP-11. В ЭВМ с простейшей архитектурой (например, NOVA) программный опрос периферийных устройств производится с помощью команды типа IQ (interrupt query - запрос прерываний). С помощью этой команды вырабатывается импульс по линии ПРВ общей шины, в ответ на который устройстю, запросившее прерывание, подает свой код на линии данных. Затем этот код может быть занесен программой в один из регистров. Будем считать, что в МС-16 он аппаратным путем записывается в АК. Как это вьшолняется, иллюстрирует программа 10.5.

RET:

TEMP: ACSAVE: CASAVE: TABLE:

STA ACSAVE SHL

STA CASAVE IQ

ADD TABLE STA TEMP

JMP @TEMP

LDA CASAVE SHR

LDA ACSAVE IE

JMP @0 0

(начальный адрес (начальный адрес (начальный адрес (и т. д.)

} программа обработки векторного прерывания ; значение счетчика команд в момент прерывания 5 запомнить содержимое аккумулятора

; запомнить состояние р:13ряда переноса

; код прерывающего устройства*

; прибавить к первому адресу таблицы входов

S подготовить косвенный переход к программе обработки

1 перейти к программе обработки через вход в таблицу для устройства, запрос1шшего прерывание

восстаноенть разряд переноса ; восстановить содержимое А К J снова разрешить прерывания

; вернуться к прерванной программе

; временное хранение программы обработки для устройства 0) программы обработки для устройства 1) программы обработки для устройства 2)

Программа 10.5



Исполнение программы начинается с временного запоминания со* Держимого AR и состояния разряда переноса. Затем команда запроса прерывания получает адрес устройства, вызвавшего прерывание, и помещает его в АК. Теперь мы должны перейти к подпрограмме обслуживания прерывания для данного устройства. Это делается с помощью косвенного перехода через таблицу, в которой содержатся начальные адреса различных подпрограмм. Код устройства используется как смещение, которое добавляется к первому адресу таблицы. Сумма кода устройства и начального адреса таблицы определяет соответствующий данному устройству адрес входа в таблицу, по которому осуществляется косвенный переход к началу соответствующей подпрограммы. Эта программа обычно начинается с чтения регистра состояния, после чего она выполняет необходимые действия и возвращается к ячейке RET, где восстанавливается содержимое АК и состояние разряда переноса и возобновляется прерванная программа,

Приоритет прерываний. Что произойдет, если несколько периферийных устройств одновременно затребуют прерывания? В частности, что не позволяет одновременно всем периферийным устройствам подать иа шину свои адресные коды, когда ЦП вырабатывает сигнал опроса прерываний? Давайте снова обратимся к схеме на рис. 10.5, на которой показана основная часть схемы прерываний интерфейса. Если данное устройство запрашивало прерывание, и на линию ППР данной интерфейсной схемы подается НИЗКИЙ уровень, то по сигналу ОПР адресный код этого устройства будет выведен на шину. Сигнал ППР является особым в том смысле, что он не является общим для всех устройств, а начинаясь на ЦП, проходит последовательно через интерфейсную схему каждого устройства, образуя так называемую скользящую цепочку . Логическая схема интерфейса реагирует на этот сигнал следующим образом: если запрос на прерывание отсутствует, сигнал ППР передается на следующее устройство без изменения, а при наличии запроса на выходную линию ППР данной интерфейснойсхемы подается НИЗКИЙ уровень. Таким образом, из всех устройств, выработавших требования, на сигнал опроса ответит лишь то, которое электрически наиболее близко расположено к ЦП.

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

раллельных приоритетов, каждый из которых имеет свой собственны; последовательный приоритет. Например, PDP-ll использует пять па* раллельных уровней запросов по шине. Отметим важный момент: при

удалении из ЭВМ интерфейсной вставки на неиспользованном разъ еме должны быть установлены перемычки, замыкающие линии ППР,



Как уже было сказано выше, в ЭВМ с более сложной структурой обеспечивается автоматическое векторное прерывание. В этом случае при возникновении прерывания ЦП автоматически осуществляет лереход к векторной области памяти, а точнее, к олределенн(*й ячейке в этой области, номер которой определяется адресом устройства, вш-вавшего прерывание. Номерг текущей* тФт при этом записывается в стек, что позвешяет производить прерывание в прерывании . В таких машинах нет необходимости выполнять команду опроса, использующуюся в МС-16. Подобная организация иногда называется полностью векторным прерыванием .

10.12. Прямой доступ к памяти

Существуют ситуации, когда информация должна с высокой скоростью передаваться в периферийное устройство или забираться из него. Классическими примерами являются быстродействующие устройства внешней памяти типа накопителей на магнитных лентах и дисках, а также устройства сбора данных, работающие в реальном масштабе времени, как, например, многоканальные анализаторы амплитуды импульсов. Передача данных с прерыванием программы в подобных устройствах была бы затруднительна и, вероятно, выполнялась бы слишком медленно. Так, например, для стандартного накопителя на магнитной ленте с плотностью записи 800 байт на дюйм и со скоростью движения ленты 75 дюйм в 1 с, скорость считывания данных составляет один байт за 16 мкс (напомним, что 1 байт равен 8 бит). При таких значениях скорости считывания в случае передачи по прерываниям потеря данных будет происходить, по всей вероятности, даже в том случае, если кроме накопителя на магнитной ленте к системе не подключено никаких других внешних устройств. При наличии же нескольких подобных устройств ситуация становится совершенно безнадежной. Накопители на магнитных лентах и дисках не могут останавливать передачу, не завершив ее до конца, поэтому необходимо иметь метод, который бы надежно обеспечивал быструю реакцию и высокую общую скорость передачи слов. Но иногда даже и для устройств с низкой средней скоростью передачи данных требуется, чтобы время ожидания (т. е. время от момента запроса до начала фактической передачи данных) было малым.

Для решения этих проблем используется прямой доступ к памяти - способ передачи, при котором данные от периферийного устройства поступают непосредственно в ячейки ОЗУ. В некоторых мини-ЭВМ такая передача осуществляется под управлением специальной схемы, расположенной в ЦП. Однако это не столь важно. Суть же данного метода заключается в том, что при передаче не затрагиваются программные средства: данные передаются по шине в ОЗУ без вмешательства программы. Единственное влияние на работающую программу состоит

1> 1 дюйм = 25,4 мм.- Прим. перев.



ЛИШЬ В некотором увеличении времени ее исполнения, поскольку при прямом доступе происходит захват циклов шины, которые могли бы служить для обращения к ОЗУ при выполнении программы. Прямой доступ использует более сложное интерфейсное оборудование и его не следует применять без особой необходимости. Тем не менее читателю будет полезно узнать, что можно .сделать с его помощью, поэтому мы вкратце рассмотрим, каким образом организуется интерфейс прямого доступа. Что же касается подробностей, то они являются достаточно сложными и определяются конкретной реализацией. Их можно найти в соответствующей документации на конкретную ЭВМ.

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

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



)ia этот запрос, определяет по регистру состояний интерфейса о том, что данные уже находятся в ОЗУ, и переходит к следующей задаче. Таким образом, для задания режима прямого доступа использовался способ программно-управляемого ввода/вывода, собственно прямой доступ применялся для быстрой передачи данных, а сообщение о завершении задания передавалось в машину по прерыванию. Такая иерархия ввода/вывода является обычной, особенно для устройств массовой памяти. Максимальная скорость передачи данных по каналу прямого доступа составляет величину порядка миллиона слов в секунду.

10.13. Синхронизация асинхронной передачи

Описанный выше протокол ввода/вывода определяет синхронный обмен информацией, данные поступают на шину или считываются с шины синхронно со стробирующими сигналами, вырабатываемыми в ЦП. Такая схема привлекает своей простотой, однако она может создать трудности при использовании шины значительной длины. Из-за больших задержек в распространении сигналов данные во время операции ввода должны подаваться на шину не слишком быстро, чтобы обеспечить надежную передачу. Действительно, передавая данные по синхронной шине, внешнее устройство даже не знает о том, приняты они или нет. Это может показаться серьезным недостатком, однако в действительности здесь нет ничего страшного: вычислительные системы, использующие синхронные шины, работают прекрасно.

Альтернативным методом является применение асинхронной шины, по которой передача информации В ЦП происходит примерно следующим образом: центральный процессор подает на шину адрес устройства и потенциальный {г не импульсный) сигнал на специальную линию (будем называть ее ВВОД), который означает, что данные вводятся в ЦП. Адресуемое устройство подает данные на шину и вырабатывает потенциальный сигнал, означающий, что данные можно принимать (будем называть его ДАННЫЕ ГОТОВЫ). После того как ЦП получит этот сигнал, он считает данные с шины и снимет сигнал ВВОД. Когда интерфейс обнаружит, что на линии ВВОД действует НИЗКИЙ уровень, он очистит линии ДАННЫХ и линию ДАННЫЕ ГОТОВЫ. Это можно представить себе таким образом. ЦП сказал: Дайте данные , на что периферийное устройство ответило: Пожалуйста, вот они . После этого ЦП говорит: Все в порядке, я их получил , а периферийное устройство отвечает: Замечательно! Пойду снова спать .

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



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

В ЭВМ, которые используют для адресации к оперативной памяти ту же шину, что и для связи с внешними устройствами, применение асинхронного способа дает дополнительное преимущество, так как позволяет применять ЗУ, работающие с различными скоростями. Асинхронные шины используются в некоторых мини-ЭВМ, например в PDP-11, в то время как в микро-ЭВМ и в большинстве мини-ЭВМ применяются синхронные шины. Иногда в синхронных шинах имеется линия готовности, подавая на которую НИЗКИЙ уровень можно приостанавливать дальнейшую активность шииы для того, чтобы завершить медленную операцию.

Следует помнить, что периферийное устройство, подключенное к ЭВМ, взаимодействует лишь со своим интерфейсным блоком, а уже последний устанавливает связь с ЦП по шине ЭВМ. На уровне взаимодействия периферийное устройство-интерфейс передаются данные, флажки, стробирующие сигналы и т. п. Обычно здесь используется асинхронная передача данных, что позволяет каждому периферийному устройству работать со своей собственной скоростью.

10.14. Подключение периферийных устройств к ЭВМ

Интерфейсные схемы обычно выполняются на платах (интерфейсных картах) с печатным или навесным монтажом (см. гл. 12), которые могут быть установлены в стойке ЭВМ. Для этой цели в стойках, как правило, предусматривается несколько неиспользуемых пазов с разъемами (или возможность наращивания для установки дополнительных плат), на которые подано питание и на часть контактов этих разъемов отведены сигналы с шины. Остальные контакты могут использоваться для вывода сигналов с интерфейсной платы в периферийное устройство, которым эта плата управляет. В каждой ЭВМ применяются платы стандартных размеров в пределах от 1254X2540 мм до 40X40 см. На одной стороне каждой платы располагается печатная вставка, которая непосредственно вставляется в разъем, содержащий от 50 до 200 контактов.

Стандартные интерфейсные блоки для управления такими распространенными периферийными устройствами, как накопители на магнитных лентах и дисках или видеотерминалы выполняются на печатных платах, конструктивно совместимых со стойкой ЭВМ. Кабели, идущие от периферийного устройства, подключаются к интерфейсной карте либо через розетку разъема, расположенную спереди карты, либо через соответствующий разъем на задней панели. В любом случае здесь обычно применяется плоский кабель и предусматриваются меры, предотвращающие взаимные наводки информационных и стробирующих сигналов. Неплохим методом является заземление проводов кабеля через один. При другом способе плоский кабель накладывается на гибкую зазем-



ленную металлическую пластинку, что позволяет снизить индуктивность и взаимную связь при постоянном сопротивлении кабеля. В обоих случаях можно использовать удобные многоконтактные разъемы, которые легко подключаются к кабелю простой навивкой. Альтернативой плоскому кабелю является кабель, составленный из витых пар, в каждой из которых один провод служит для передачи сигнала, а второй заземляется. Существуют различные конфигурации кабелей с витыми парами, включающие новейший лентоподобный плоский кабель, содержащий через каждые полметра плоские ненавитые участки, служащие для облегчения установки разъемов с навивкой, используемых для обычного лентообразного плоского кабеля. Поскольку протокол передачи данных по шинам ЭВМ предусматривает стробирование, выполнять все сигнальные линии из витых пар, как правило, нет необходимости. Их следует использовать только для линий, по которым передаются синхронизирующие импульсы и прочие стробирующие и разрешающие сигналы. На длинных линиях нужно устанавливать согласующие резисторы и применять линейные приемники и передатчики (см. разд. 9.15-9.17).

Аналогичным образом лучше всего строить и нестандартные интерфейсные блоки собственной конструкции. Для этой цели либо производят разводку большой печатной платы, либо используют универсальные интерфейсные карты, выпускаемые фирмами Douglas, MDB и др. На этих пустых платах имеются места для установки ИМС и других компонентов, которые соединяются между собой с помощью навесного монтажа (более подробно см. в гл. 12). В некоторых универсальных интерфейсных картах имеется встроенная схема управления шиной, включающая обработку прерываний и даже прямой доступ. При использовании таких плат кабель от внешнего устройства может подключаться либо непосредственно к самой интерфейсной карте, либо к разъему на задней панели. В некоторых машинах неудобно производить соединение со стороны задней панели и нужно использовать прямое подключение кабеля, желательно при помощи плоского кабельного разъема.

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

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

Интерфейсная схема, расположенная в машинной стойке, запоминает слово, полученное от ЦП по команде OUT, и устанавливает флажок ДАННЫЕ НА ШИНЕ, в ответ на который от внешней схемы



интерфейса поступит сигнал ДАННЫЕ ПРИНЯТЫ. Ввод данных в машину производится аналогично. Флажок в этом случае указывает, что буфер может принять данные, которые считываются с шины по входному сигналу СТРОБ. Кабель, соединяющий две части интерфейса, имеет значительно меньшую длину по сравнению с общей длиной всеп>

I А шт

% ПРИНЯТЫ S Во


i БУФЕР I СВОЬОДЕН

СТРОБ Во


интерфейс в мзш.не-

Рис, 10.6.

-внешняя часть

кабеля шины, особенно если не используются все 16 разрядов слова. Подобная конструкция, в частности, удобна при обработке аналоговых сигналов низкого уровня, поскольку в этом случае линейная схема, подверженная влиянию помех, удалена от цифровой интер(сной схемы, расположенной в машине. Это также позволяет обеспечить чистоту* аналоговых уровней земли.

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



основные понятия системы программного обеспечения

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

После рассмотрения общих понятий, связанных с программными средствами и системами программирования, мы вернемся в конце главы к вопросам ввода/вывода, уделяя основное внимание последовательному (побитному) вводу/выводу, в частности интерфейсу RS-232C ASCn.

10.15. Программи^ювание

Язык ассемблера. Как уже упоминалось в этой главе, центральный процессор ЭВМ предназначен для того, чтобы распознавать определенные команды и выполнять требуемые задачи. Программирование непосредственно на языке конкретной машины производится крайне редко. Оно лишь иногда применяется при отладке и отыскании неисправностей в аппаратуре и выполняется с использованием ламп и ключей иа передней панели машины. Вместо этого программы пишутся на мнемоническом языке ассемблера (как в примере программирования на МС-16), который затем преобразуется в машинный язык с помощью программы, называемой ассемблером. Язык ассемблера очень близок к машинному языку: каждая команда прямо преобразуется в одну или несколько строк машинного кода. Программирование на языке ассемблера позволяет получать наиболее эффективные машинные программы и дает возможность выполнять специальные операции, например формировать команды ввода/вывода, что не позволяют делать языки высокого уровня. Однако, как показывает пример МС-16, программирование на языке ассемблера представляет собой очень трудоемкую работу, и для большинстеа вычислительных задач, особенно связанных с большим количеством числовых операций, целесообразнее использовать компилирующие или интерпретирующие языки высокого уровня, такие, как ФОРТРАН и БЕЙСИК, обращаясь при необходимости к стандартным программам на языке ассемблера.



J 44 Глот 10

Компиляторы. Фортран, Алгол, ПЛ-1, Кобол и Паскаль явля* ются примерами наиболее распространенных компилирующих языков высокого уровня. Составим программу, содержащую команду алгебраического типа, например

Х=:(- B-f SQRT(B*B-4*А*С))/2А.

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

Загрузчики и библиотеки. Программы на языке ассемблера (исходные и полученные от компилятора) преобразуются в машинные коды с помощью транслирующей программы - ассемблера (фактически она вырабатывает еще не абсолютный, а так называемый перемещаемый машинный код). Кроме того, существуют специальные программы, предназначенные для выполнения определенных команд на языках высокого уровня. Так, например, программы, составленные на Фортране, могут использовать функциональные подпрограммы типа SQRT, а также пакет программ ввода/вывода, необходимых для выполнения операторов READ (чтение) и WRITE (запись). Все бюрократические процедуры, связанные с получением соответствующих подпрограмм из библиотеки (в перемещаемой форме), выполняет так называемая связывающая программа, или, иначе, перемещаемый загрузчик. Эта же программа формирует затем связующие переходы и обращения, согласуя в ОЗУ все эти разрозненные программы. Перемещаемый загрузчик определяет окончательные числовые значения ассемблированного кода, которые уже будут использоваться для обращений к памяти и в качестве адресов переменных. Это может быть сделано только после того, как перемещаемый загрузчик будет знать, какова длина каждой программы и какая программа какую программу вызывает. Именно по этой причине код, вырабатываемый ассемблером, так же как и компануемые подпрограммы, находящиеся в различных библиотеках, должен иметь перемещаемую форму. (Используемые подпрограммы обычно размещаются в нескольких библиотеках. Существует, например, библиотека Фортрана, системная библиотека, может также существовать библиотека собственных часто используемых подпрогра1у1м, таких, как подпрограммы ввода/вывода, подпрограммы генераторов случайных чисел и т. п.). В некоторых системах микро-ЭВМ перемещаемые загрузчики не используются, поэтому программисту самому



1 ... 11 12 13 14 15 16 17 ... 59
© 2004-2025 AVTK.RU. Поддержка сайта: +7 495 7950139 в тональном режиме 271761
Копирование материалов разрешено при условии активной ссылки.
Яндекс.Метрика