Разделы
Публикации
Популярные
Новые
|
Главная » Сопряжение цифровых, аналоговых сигналов 1 ... 9 10 11 12 13 14 15 ... 59 лений, выполняемых в ЦП, ЭВМ оперируют отрезками данных, организованных в форме машинных слов . Длина слова может изменяться от 4 до 32 и более бит, причем в современных мини-ЭВМ наиболее часто используются 16-разрядные слова. Восемь бит образуют один байт. Иногда используются полубайты, равные четырем битам. В состав центрального процессора входит арифметический блок, который может выполнять такие операции, как сложение, дополнение, сравнение, перемещение, сдвиг и т. д. над данными, которые хранятся в регистрах или во внутренней памяти машины. Программный счетчик содержит номер текущей ячейки выполняемой программы. После каждой операции его содержимое нормально увеличивается на единицу, однако может принимать и новое значение по команде условного или безусловного перехода. Схема управления шиной обеспечивает связь центрального процессора с памятью и с устройствами ввода/вывода. Большинство ЭВМ имеет также стековый регистр (ниже он будет рассмотрен более подробно) и регистр условий, или флажков (переноса, нуля и знака), которые проверяются при выполнении команды условного перехода. Внутренняя (оперативная) память. В состав любой ЭВМ входит быстродействующее запоминающее устройство с произвольной выборкой (ЗУПВ), которое выполняется на магнитных или полупроводниковых элементах. В больших мини-ЭВМ объем оперативного запоминающего устройства (ОЗУ) может достигать 128К 16-разрядных слов и более, однако наиболее распространенной является величина 32К- (При описании объема памяти К означает не 1000, а 1024, или 2 , поэтому 64К слов памяти в действительности равны 65 536 словам. Строчная буква к иногда используется для обозначения множителя 1000.) Запись и чтение информации в такой памяти можно производить за 1 мкс и даже быстрее. Магнитная память является неразрушаемой (после выключения питания информация сохраняется), в то время как полупроводниковая память разрушаема (когда питание-перестает подаваться, информация стирается). Некоторые ЭВМ, в частности встроенные микропроцессорные системы,используют постоянные запоминающие устройства (ПЗУ), которые всегда являются неразрушае-мыми и служат для хранения часто используемы^ программ. Почти все современные ЭВМ хранят в ПЗУ по крайней мере одну программу, которая предназначена для начальной загрузки, т. е. для запуска машины при первоначальном включении питания, когда в ОЗУ еще ничего це записано. Для того чтобы записать или считать информацию в памяти, ЦП адресуется к требуемому слову. В большинстве ЭВМ адресация к памяти производится словами, при этом она начинается со слова О и проходит все значения до последнего слова, содержащегося в ОЗУ. В некоторых ЭВМ адресация к машинным словам производится байтами (8-разрядными группами), что дает преимущество при операциях с символами (буквами^ цифрами и т. п.), так как один символ обычно Занимает один байт. В машинах с большим с^ъемом памяти для того, чтобы задать адрес любой ячейки, могут потребоваться два или даж^ три байта. Поскольку в реальной программе большинство обращений производятся последовательно к соседним ячейкам, все ЭВМ имеют упрощенные адресные режимы. К этим режимам относятся: относительная адресация, которая определяет адрес в соответствии с его расстоянием от текущей команды, индексная адресация, использующая содержимое регистра, которое указывает ячейку памяти, страничная адресация, которая использует укороченные адреса для обращения К ячейкам памяти внутри небольшой области (страницы), и непосредственные команды, которые всегда обращаются к следующему слову. Во время исполнения программы команды и данные хранятся в ОЗУ. Центральный процессор отыскивает команды в памяти, определяет их значение и выполняет соответствующие действия, часто используя при этом данные, которые хранятся в какой-то другой с^ласти памяти. ЭВМ общего назначения хранит программы и данные в одном и том же ОЗУ и фактически даже не знает, как отличить одно от другого. Если программа работает неправильно и считывает вместо команды данные или наоборот, то могут происходить забавные вещи. Внешние накопители. ЭВМ, предназначенные для создания программ или выполнения расчетов, в отличие от встроенных управляющих процессоров обычно имеют один или несколько носителей информации массовой памяти , т. е. внешней памяти большого объема. Такие носители, в качестве которых обычно используются жесткие или гибкие магнитные диски или магнитные ленты, могут хранить информацию от нескольких сотен тысяч (гибкие диски) до нескольких миллионов байтов (жесткие диски, ленты). Большие жесткие диски могут иметь объем памяти до 200 млн. байт. Обычно носители информации внешних ЗУ имеют малое быстродействие, причем самым медленным и дешевым носителем является магнитная лента, время (вращения к которой достигает несколько секунд и более. Наиболее быстрыми и дорогостоящими являются жееткие диски, время обращения к которым составляет величину порядка нескольких миллисекунд. После того как данные размещены в памяти, передача их происходит быстро, типичное значение скорости составляет 10000-100 ООО байт в секунду. Программы, файлы данных, файлы диаграмм обычно хранятся в массовом ЗУ того или иного типа и вводятся в ЗУПВ только при выполнении вычислений. На одном диске могут одновременно держать свои программы многие пользователи: большой диск может вместить в себя целую Британскую Энциклопедию. Ввод/вывод буквенно-цифровой информации. Хорошо, если есть мощная ЭВМ, которая за одну секунду может производить миллионы сложных вычислений, однако от нее будет очень мало пользы, если все свои результаты она будет держать про себя . Связь между человеком и машиной осуществляется с помощью различных перифе- рийных устройств, которые составляют неотъемлемую часть любой вычислительной системы. К числу периферийных устройств относятся буквенно-цифровые видеотерминалы (экранный пульт с клавиатурой), построчно-печатающие устройства, графопостроители или графические видеотерминалы и т. д. Эти устройства главным образом ориентированы на программирование и обработку числовой информации. С их помощью составляют и отлаживают программы, получают распечатки, вводят данные, играют в космическую войну и получают результаты. Перечисленные периферийные устройства вместе с соответствующими интерфейсными блоками можно приобрести у многих поставщиков, включая изготовителей ЭВМ (основной стойки). Ввод/вывод в реальном времени. Для управления экспериментом или технологическими процессами, при регистрации данных, а также в случае каких-либо необычных приложений, таких, как, например, синтез речи или музыки, необходимо иметь преобразователи аналоговой информации в цифровую и наоборот, которые могли бы взаимодействовать с машиной в реальном масштабе времени , т. е. по мере возникновения событий. Здесь имеется практически неограниченный выбор, для многих применений можно порекомендовать универсальный комплект коммутируемых АЦП, ряд быстродействующих ЦАП и некоторые цифровые порты для обмена цифровой информацией. Эти периферийные устройства общего назначения выпускаются промышленностью для широкого потребителя. Если же требуются какие-то нестандартные свойства, как, например, улучшенные характеристики (повышенное быстродействие, большое число каналов) или наличие специализированных функций (генерация звуковых сигналов, частотный синтез, формирование временных интервалов и т. д.), то обеспечивать их придется самому пользователю. Для этого необходимо знать способы сопряжения внешних устройств с шиной ЭВМ, а также технику программирования (последнее, правда, полезно в любом случае). Шина данных. Для обеспечения связи между ЦП и различными периферийными устройствами во всех ЭВМ имеется шина, которая представляет собой совокупность линий, являющихся общими для всех подключенных к ней устройств и служащих для обмена цифровыми словами. (В принципе многие шины позволяют также осуществлять связь и между различными периферийными устройствами, однако эта возможность используется нечасто.) Нередко та же самая шина используется для связи блока ЦП с оперативной памятью. Применение общей шины в значительной степени упрощает внутренние связи, и, если вы немножко позаботитесь о конструировании и применении шины, у вас не будет никаких проблем. Шина состоит из группы информационных линий (обычно этих линий столько, сколько разрядов имеет машинное слово - 4, 8 или 16 для микро-ЭВМ и 16, 24 или 32 для большинства мини-ЭВМ), нескольких адресных линий (АДР), которые определяют, кто на линии должен говорить , а кто слушать , и группы управляющих линий (УПР), с помощью которых задается выполняемое действие (передача данных в ЦП или из него, обработка в режиме прерывания, передача информации по каналу прямого доступа в память (ПДП) и т. д.) Все информационные линии, а также и некоторые другие являются двунаправленными . Для их возбуждения используются вентили с открытым коллектором или с тремя состояниями. В первом случае к каждой линии (обычно на конце) подключается нагрузочный резистор, который служит также в качестве согласующего сопротивления линии^, подавляющего отраженный сигнал (см. разд. 13.Ш). При использовании вентилей с тремя состояниями подключение внешней нагрузки не требуется, однако, если линия имеет большую протяженность, согласование все же может оказаться необходимым. Такое использование вентилей с открытым коллектором или с тремя состояниями не следует путать с монтажным ИЛИ. При нормальной работе в каждый момент времени данные на шину подает только одно устройство, а схемы с открытым коллектором или с тремя состояниями используются здесь лишь для того, чтобы другие устройства могли отключить свои шинные формирователи (линейные передатчики). Каждая ЭВМ имеет жестко регламентированный протокол, который определяет, какое устройство и в какой момент времени будет выводить данные на шину. Если этого не сделать, то возникнет полная неразбериха, когда все устройства, если можно так выразиться, будут кричать одновременно . (Люди, имеющие дело с ЭВМ, не в состоянии воспрепятствовать очеловечиванию вычислительных машин, периферийных устройств и т. д. С инженерами, всю жизнь возящимися с триггерами и вентилями, дело обстоит еще хуже. Естественно, авторы тоже не составляют исключения ) Между шинами различных ЭВМ существует одно важное различие: они могут быть синхронными либо асинхронными. Оба типа в настоящее время широко используются в мини-ЭВМ. Что это в действительности означает, будет видно при подробном рассмотрении передачи данных по шине. система команд эвм 10.2. Язык ассемблера и машинный язык Для того чтобы сделать понятной оставшуюся часть главы, рассмотрим гипотетическую ЭВМ, использующую 16-разрядкые машинные слова. Эту машину мы назовем МС-16, наделим ее простым набором команд и шиной ввода/вывода, а затем рассмотрим на ней несколько примеров программирования и сопряжения с внешними устройствами. Эти примеры помогут проследить идею программирования на уровне машинного языка , которое в корне отличается от программирования на языке высокого уровня, таком, как, например, Фортран. Поскольку аналогичным образом работают и реальные машины, зна- комство с данной главой облегчит читателю изучение документации на различные ЭВМ. Для начала определим, что представляет собой слово на языке ассемблера. Как отмечалось выше, ЦП вычислительной машины интерпретирует слова программы в качестве команд ЭВМ и выполняет назначенные задания. Машинный язык и состоит из набора этт команд, каждая из которых может занимать одно или несколько ма-иинных слов. Например, приращение на единицу содержимого регистра будет представлять собой команду в одно слово (однооперандную команду), в то время как сложение содержимого ячейки памяти с содержимым регистра является двухоперандной командой, в которой первое слово задает выполняемую операцию, а второе определяет ячейку памяти. К сожалению, не существует какого-либо стандартного машинного языка, поскольку различные ЭВМ используют различные языки. Программирование на машинном языке представляет собой очень утомительную работу, так как здесь приходится иметь дело со столбцами двоичных чисел, в которых каждый бит должен быть абсолютно правильным. Для того чтобы облегчить эту задачу, изготовителями ЭВМ поставляется программа, называемая ассемблером. Ассемблер позволяет составлять программы, используя для обозначения команд и символьных имен легко запоминающуюся мнемонику. Символьные имена выбираются программистом и служат для обозначения ячеек памяти и переменных. Программа, составленная на языке ассемблера, фактически представляющая собой не более чем ряд загадочных строчек из букв и чисел, обрабатывается затем с помощью другой программы, называемой ассемблером, в результате чего формируется программа на машинном языке ( объектный код ), которая может быть выполнена с помощью ЭВМ. Каждая строчка на языке ассемблера преобразуется в несколько слов (от одного до четырех) на машинном языке. Для конкретности рассмотрим язык ассемблера МС-16 и выполним несколько примеров. 10.03. Набор команд МС-16 МС-16 использует 16-разрядные слова, один 16-разрядный аккумулятор (или регистр ) с разрядом переноса и следующий набор команд на языке ассемблера: Значение команды Описание операции занести в память содер- АК-* (ш); АК не изменяется жимое аккумулятора (АК) загрузка в аккумулйтор (т) -> АК; (т) не изменяется сложение АК+(га)- АК; (т) ие изменяется вычитание АК-(ш)--АК; (т) ие изменяется конъюнкция АК И (ш)-*АК (поразрядно); (т) не изменяется дизъюнкция АК ИЛИ (т) -*- АК (поразрядно); (т) не изменяется
лриращение иа J и пере-код, если О уменьшение на 1 и пере- код, если О дополиеиие отрицание очистка сдвиг влево сдвиг вправо безусловный переход переход, если нуль переход, если ие нуль переход по плюсу переход по минусу переход по переносу переход по переносу ввод вывод переход к подпрограмме запрос на прерывание включить прерывания отключить прерывания (m)-f-l -*(тп); переход к следующей команде, если результат нулевой (т)-1-(т); переход к следующей команде, если результат нулевой дополнение АК до I (инверсия) -* АК отрицание (дополнение АК до 2) - АК О-* АК содерлшмое А К циклически сдвигается влево иа I бит содержимое АК циклически сдвигается вправо , переход к команде с меткой переход к команде с меткой , если АК = 0 переход AKytO переход АК>0 переход АК<0 переход к команде с меткой , если бит переноса= I переход к команде с меткой , если бит переноса=О чтение с устройства устр в АК вывод данных из АК в устройство устр переход к подпрограмме подпр адрес устройства, запросившего прерывание- АК pav=?pemeHHe прерываний запрещение прерываний к команде с меткой , если к команде с меткой , если к команде с меткой , если Несколько пояснений: символ (т) означает содержимое ячейки памяти с адресом т , а не адрес этой ячейки. Например, команда: LDA 1000 означает: взять число из ячейки памяти с номером ЮСЮ и занести его в аккумулятор . По команде циклический сдвиг все разряды операнда сдвигаются на одну позицию, причем последний разряд переходит по кольцу в противоположный конец регистра. В сдвиге участвует разряд переноса, вместе с которым аккумулятор образует 17-разрядный регистр сдвига. Таким образом, при циклическом сдвиге влево каждый разряд аккумулятора смещается на одну позицию влево, при этом содержимое разряда переноса загружается в младший значащий разряд (МЗР), а старший значащий разряд (СЗР) попадает в позицию разряда переноса. Команда JSR выполняет переход к подпрограмме с меткой подпр и помещает адреовозврата в первую ячейку подпрограммы, т. е. в ячейку подпр (в больших машинах вместо этого для хранения адреса возврата при вызове подпрограммы используется стек [магазин]. В этом случае для хранения переменных может быть использован другой стек. Такая организация позволяет сделать подпрограмму перезапускаемой, т. е. дает ей возможность обращаться к самой себе а также к подпрограмме, которая ее вызывала). Наконец, перед любой отсылкой к памяти (т, метка, подпр) может стоять символ @ , означающий косвенную адресацию. Например, команда LDA @ const означающая идти к ячейке const , читает содержимое этой ячейкн, а затем переходит к ячейке, которая определяется этим содержимым, и уже содержимое последней заносит в аккумулятор, т. е. ((const)) АК. 10.04. Пример программирования Для того чтобы получить представление о том, чем программирование на языке ассемблера отличается от программирования на более известных языках высокого уровня, например Бейсике или Фортране, рассмотрим пример. Предположим, что число N должно увеличиваться на 1, в случае если оно равно другому числу М. Эта операция является типичным элементарным шагом в более крупной программе и на языке Фортран выполняется с помощью одной команды. IF(N. EQ. M)N = N + 1 На языке МС-16 это делается с помощью программы 10.1. Программа ассемблера преобразует этот набор мнемонических символов в команды на машинном языке, используя для каждой строки одно или два машинных слова. Перед выполнением программы результирующий машинный код записывается в последовательные ячейки памяти. Заметьте, что в программе необходимо определить ячейки для хранения двух переменных и единичной константы (в этом случае перед командой записывается символьное имя и двоеточие). Для пометки команд можно также использовать символьные метки (в данном примере метка NEXT). Обычно так делается только в том случае, когда есть переход к данной ячейке (JNZ NEXT). Давая определенным ячейкам понятные вам содержательные имена и добавляя комментарии (отделенные LDA N ; получить п SUB М 5 вычесть m JNZ NEXT ; проверить N = M? LDA N ; да, снова получить п ADD С1 ; прибавить единицу STA N ; запомнить результат NEXT: ; продолжение программы ; последний исполняемый оператор N: в ; здесь хранится переменная п М: в J здесь хранится переменная m CI: 1 ; константа 1 Программа 10.1 ТОЧКОЙ с запятой), вы существенно упростите себе работу и получите возможность разобраться в том, что было написано неделю назад. Программирование на языке ассемблера может оказаться достаточно трудоемким, однако оно часто используется для составления коротких подпрограмм, к которым обращаются программы на языках высокого уровня при управлении вводом и выводом информации. Программы на ассемблере выполняются быстрее, чем программы, компилированные с языков высокого уровня, и по этой причине он используется также в тех случаях, когда важным фактором является быстродействие (например, при глубоком вложении циклов в громоздком расчете). В любом случае нельзя по-настоящему понять принципы сопряжения ЭВМ с внешними устройствами, не представляя себе природу организации ввода/вывода на языке ассемблера. Соответствие между мнемоническим языком ассемблера и машинным языком исполняемых команд рассматривается в разд. П.4 на примере программирования микро-ЭВМ 8085. СИГНАЛЫ ШИНЫ и СОПРЯЖЕНИЕ С ВНЕШНИМИ УСТРОЙСТВАМИ Шина типовой 16-разрядной мини-ЭВМ содержит порядка 50 сигнальных линий, служащих для передачи данных, адресов и сигналов управления. Чтобы понять принципы ее построения, попробуем построить типовую шину, начав с выбора сигнальных линий, необходимых для обеспечения обмена данными в простейшей форме (под управлением программы), и вводя дополнительные сигнальные линии по мере необходимости. Для того чтобы сделать предмет более понятным и интересным, в процессе рассмотрения дадим несколько полезных примеров. 10.05. Основные сигналы шины: данные, адрес, строб Простейшая шина вводаУвывода должна иметь линии данных (ДАННЫЕ) (для передачи данных), линии адреса (АДР) (для идентификации устройства ввода/вывода) и несколько линий для стробов (СТРОБ), которые сообщают о том, что данные выведены на шину. Для повышения быстродействия шина ДАННЫЕ обычно имеет столько линий, сколько разрядов содержится в машинном слове, что позволяет передавать сразу целиком все слово. Число адресных линий зависит от того, используется ли эта шина также для адресации к внутренней памяти. В ЭВМ PDP-il, в которой одна и та же шина служит для выполнения всех операций, имеется 18 адресных линий. В то же время в машине типа NOVA, которая имеет отдельную шину памяти, шина ввода/вывода содержит только 6 адресных линий, что позволяет использовать для обращения к внешним устройствам до 64 кодов. Собственно передача данных синхронизируется с помощью импульсов, которые поступают по дополнительным стробирующим линиям, Стро-бирование может быть выполнено двумя способами: либо с помощью разделенных линий ВВОД и ВЫВОД, служащих для синхронизации передачи данных в соответствующем направлении, либо при помощи одной линии СИНХР и одной линии ВВОД/ВЫВОД. В последнем случае направление передачи определяется уровнем сигнала на линии ВВОД/ВЫВОД, а синхронизация осуществляется импульсом .СИНХР. 10.06. Передача данных под управлением программы: вывод Простейший метод обмена данными по шине ЭВМ носит название программы ввода/вывода. Это означает, что данные передаются с помощью программных операторов IN (ВВОД) или OUT (ВЫВОД) (направления ВВОДА и ВЫВОДА относятся к той небольшой категории вещей, относительно которых среди изготовителей ЭВМ существует согласие: ВВОД всегда означает передачу в направлении к ЦП, а ВЫВОД - в направлении из ЦП). Весь процесс вывода данных представляет собой предельно простую и понятную операцию: центральный процессор подает на соответствующие линии общей шины адрес приемника и передаваемые данные. По истечении выдержки времени (нескольких сотен наносекунд), достаточной для того, чтобы адрес мог быть дешифрован соответствующей схемой приемника, ЦП вырабатывает импульс ВЫВОД: при этом информация на линиях ДАННЫЕ и АДР действительна на интервале, который начинается за 250 НС до возникновения этого импульса и заканчивается через 250 нс после его снятия (в некоторых ЭВМ достоверность ДАННЫХ и АДРЕСА на обоих фронтах стробирующего импульса не гарантируется). Для того чтобы установить связь по шнне, периферийное устройство (в рассматриваемом случае графический дисплей) анализирует состояние линий ДАННЫЕ и АДР. После обнаружения своего адреса оно считывает данные с информационных линий в буферный регистр, используя в качестве тактирующего сигнала импульс ВЫВОД. Для вывода данных больше никаких действий не требуется. Рассмотрим пример, приведенный на рис. 10 2. Здесь показана схема графического дисплея, причем регистру X присвоен адрес 112, а регистру Y - адрес 113. Схема 8131 представляет собой 6-разрядный адресный компаратор, который вырабатывает на выходе НИЗКИЙ уровень, когда 6 старших разрядов Аг-А? совпадают с сигналами на эталонных входах, т. е. когда на шине АДР присутствуют адреса 112- 115 (здесь можно было бы использовать и вентили, но применение адресного компаратора позволяет сделать схему более компактной). В интерфейсных схемах каждому периферийному устройству обычно присваивается несколько последовательных адресов, которые используются для обращения к различным регистрам, как это и сделано в рассмотренном примере. Остальные адресные разряды дешифруются при помощи 3-входовых схем ИЛИ-НЕ, которые вырабатывают ВЫСОКИЙ уровень на индивидуальных адресных выходах 112 и 113 (другой способ дешифрации адреса будет описан ниже). Эти сигналы открывают схемы И, которые тактируют 6-разрядные D-регистры МЗР 500 . 250нс 250 нс 5 СЗР СЗР вывод Хорошая замена 8131 i А-J-I nUL I-Ч ]п Z?,-- s t> 74 LSI 74 6 в D 1 МЗР г4> 74L3174 D112 ВЬ1Х0Д j- D113 ВЫХОД 5 MKC 660600 r4> 74LS174 6 6 6 6 6 6 C3P M3P 0-л > 74LS174 jDAC-80 (12разрйдньш ЦАП) 5 мкс Q о о Q о Q 6 6 6 6 л 6 h--Bi М-ВО ()2-разрядньш ЦАП) 8131 Рис. 10 2, Интерфейс графического дисплея, использующий два выходных порта. 1 ... 9 10 11 12 13 14 15 ... 59 |
© 2004-2024 AVTK.RU. Поддержка сайта: +7 495 7950139 в тональном режиме 271761
Копирование материалов разрешено при условии активной ссылки. |