Разделы
Публикации
Популярные
Новые
|
Главная » Сопряжение цифровых, аналоговых сигналов 1 ... 12 13 14 15 16 17 18 ... 59 при]одится задавать область памяти для каждой подпрограммы или же всю программу ассемблировать одновременно. Нет необходимости говорить о том, насколько это примитивно. Редакторы, Каким же образом составляются и вводятся в машину реальные программы, которые затем будут компилироваться, ассемблироваться и, наконец, выполняться? Жизнь значительно улучшилась с тех времен, когда все программы перфорировались на картах, а затем с грохотом вводились в машину с помощью гигантского считывающего устройства. Программа, которая носит название редактора, позволяет распечатывать команды' и создавать таким образом файл текста. Хорошие редакторы дают возможность программисту во время печати просматривать файл; они также содержат очень удобные команды, которые позволяют отыскивать слова, изменять текст, циклически сдвигать его и т. п. Программа редактора не вникает в содержимое редактируемого текста: им может быть программа, сонет или книга {например, та, которую вы сейчас держите в руках). Он лишь создает файл текста в соответствии с ключевыми командами. Затем этот текст может быть распечатан, скомпилирован, ассемблирован (или опубликован). Впоследствии текстовый файл можно снова вызывать и редактировать, если требуется внести изменения в программе или по каким-либо другим причинам. Хороший редактор имеет для программиста большую ценность. Интерпретаторы. Языки типа Бейсика и APL работают иначе, чем упоминавшиеся выше компилируемые языки. Они не компилируют из исходной программы программу на языке ассемблера, а смотрят на оператор и выполняют соответствующие машинные команды. При использовании такой интерпретирующей программы Исходный код остается нетронутым и может легко модифицироваться. Фактически для языков типа Бейсика используются простейшие редакторы, позволяющие производить вход в программу и ее модификацию. Обычно интерпретируемые языки работают намного медленнее, чем компилируемые. Однако поскольку в данном случае не требуется производить компиляцию, ассемблирование и увязывание отдельных частей программы, последняя может быть запущена сразу же после загрузки, а результирующая простота команд делает интерпретатор более легким в использовании. Поскольку работа интерпретаторов не требует обращения к редакторам, компиляторам, ассемблерам, загрузчикам, а также выполнения различных промежуточных пересылок из внешней памяти в оперативную память машины и наоборот, они чаще всего применяются в системах, которые не используют быстродействующие внешние запоминающие устройства (диски). Например, БЕЙСИК часто используют в микропроцессорах. to. 16. Операционные системы, файлы и использование памяти Операционные системы (ОС), Как можно было понять из пре* дыдущего материала, часто бывает нужно запускать различные про'* граммы в различные моменты времени и производить между ними обмен данными. Так, например, при составлении и отработке программы сначала вводится в действие редактор, который создает файл текста по командам от клавиатуры. Далее этот текстовый файл временно запоминается в оперативной памяти, после чего приходит в действие программа компилятора, которая из этого текстового файла, содержащегося в ОЗУ, формирует файл на языке ассемблера. Полученный файл затем снова помещается в ОЗУ, и запускается ассемблер, который вырабатывает из него перемещаемый файл на машинном языке. Наконец, связывающая программа объединяет этот перемещаемый машинный код с другими ассемблированными и стандартными библиотечными программами, формируя рабочую программу на машинном языке, которая и будет выполняться. Для того чтобы произвести все эти операции, необходимо иметь некую вышестоящую программу, которая получает нужные программы с дисков, помещает их в оперативную память и передает управление соответствующим программам. Кроме того, желательно, чтобы в каждую программу не нужно было вводить команды, необходимые для обращения к дискам (обработка прерываний, загрузка регистров состояний и команд и т. п.). Эти задачи выполняет операционная система-гигантская программа, которая следит за загрузкой и исполнением программ пользователя (тех, которые вы пишете) и сервисных программ (редактора, компилятора, ассемблера, отладчика и т. п.), а также выполняет обработку прерываний, управляет вводом/выводом, созданием файлов и манипуляциями с ними. В состав операицонной системы входит монитор связи с оператором (вы даете ему указания запустить редактор, скомпилировать программу или начать ее выполнение) и большое число системных вызовов , которые позволяют работающей программе прочитать (или записать) строчку текста на каком-то внешнем устройстве, определить текущую дату, передать управление другой программе, перейти в режим перекрытия программ и т. п. Хорошие операционные системы выполняют всю громоздкую работу по управлению вводом/ выводом, включая спулинг (подкачку), который заключается в промежуточном запоминании (буферировании) входной и выходной информации и позволяет одновременно с работой программы производить ввод или вывод данных от какого-либо устройства. При работе под управлением ОС программисту не нужно думать о прерываниях, поскольку заботу о них взяла на себя операционная система: она воздействует на исполняемую программу только в том случае, когда последняя должна принять участие в обработке прерываний от какого-то определенного устройства. Наконец, работа по обеспечению правильного разделения времени (одновременного обслуживания большого числа пользователей одной машиной) представляет собой результат системного программирования в его высшем проявлении. Файлы, Данные, записанные системой на устройства внешней (массовой) памяти (диски, ленты), организуются в файлы. В виде файлов аналогичным образом хранятся также программы пользователя, сервисные программы (редактор, ассемблер, компилятор, отладчик и т. п.) и библиотеки. Хотя носители информации во внешних накопителях физически могут разделяться на блоки или сектора удобного размера (обычно по 256 слов в блоке), сами по себе файлы могут иметь любую длину. Адресацию к блокам, секторам и т. п. обеспечивает операционная система: по заданному имени файла она выбирает требуемые данные. Из-за ограниченного объема книги мы не будем останавливаться на всех интересных подробностях, связанных с организацией файлов. Мы лишь хотим, чтобы читатель понял, что все программы (редактор, компилятор и т. п., а также исходный текст пользователя, скомпилированные программы и даже данные) размещаются на носителе внешней памяти в виде поименованных файлов и система по мере надобности может выбирать их оттуда. В процессе своей нормальной работы операционная система обычно выполняет огромное количество операций по пересылке файлов. Использование памяти. Файлы хранятся во внешней (массовой) памяти, но выполняемая программа должна находиться в оперативном запоминающем устройстве машины. Простые, автономно работающие программы (не использующие операционную систему) фактически могут быть помещены в любую часть ОЗУ, за исключением особых областей, которые зарезервированы для выполнения специальных функций и имеются в любой ЭВМ. В частности, нижняя часть памяти (ячейки с младшими номерами) обычно служит в качестве векторного пространства для прерываний или используется под область нулевой страницы для косвенной однобайтной адресации. Некоторые машины имеют специальные ячейки для автоувеличения . Наконец, в ряде X ЭВМ некоторая область ОЗУ используется для адресации к периферийным устройствам (ввод/вывод с расширением памяти). Операционные системы вносят дополнительные требования. В большинстве случаев под ОС отводится верхняя область ОЗУ (ячейки со старшими номерами), в которой размещакутся буфера, стеки, а также сама программа ОС. Операционная система может также использовать и нижнюю часть ОЗУ. При работе под управлением ОС последняя выполняет распределение памяти для программ пользователя. Здесь важно понять, что распределение памяти не является совершенно Произвольным, особенно в случае использования канала прямого доступа, когда данные поступают в ОЗУ под управлением внешнего устройства. Принцип передачи данных. Малые вычислительные системы обычно используют средства внешней памяти (ленты или диски), а так- же диалоговые (интерактивные) устройства или устройства для получения машинного документа (твердой копии), как, например, буквенно-цифровые терминалы, печатающие устройства, графопостроители и г. п. Все эти устройства в большом ассортименте выпускаются промышленностью и могут быть подключены практически к любой ЭВМ. Поскольку для каждой ЭВМ существует определенная структура шины и предписанный ею протокол обмена сигналами, для подключения периферийного устройства к конкретной машине необходимо построить или приобрести соответствующий интерфейсный блок. Эти блоки, выполняемые обычно в виде интерфейсных карт, имеют конструкцию, которая позволяет устанавливать их в стойке ЭВМ и подключать с помощью кабеля к периферийным устройствам. Несовместимость. К несчастью, общий дефицит совместимости между различными ЭВМ характерен также и для периферийных устройств. Так, например, блок управления магнитной лентой вы не сможете подключить к интерфейсу накопителя на магнитных дисках, а видеотерминал - к интерфейсу графопостроителя. Дело еще осложняется тем, что периферийные устройства, выпускаемые различными фирмами, используют различные сигналы и условия передачи и не являются в общем случае совместимыми по подключению. (Вскоре мы покажем несколько удачных исключений из этой в целом весьма мрачной ситуации.) В целях повышения пропускной способности некоторые периферийные устройства передают данные в интерфейсный блок и принимают их от него по-разному, еще больше увеличивая всеобщую несовместимость. Так, например, в целях достижения максимальной скорости передачи пересылка слов между накопителем на магнитной ленте и его интерфейсным блоком производится в параллельном двоичном формате (все биты каждого слова передаются одновременно), а для пересылки данных в ОЗУ (или получения их из ОЗУ) интерфейсный блок использует канал прямого доступа. С другой стороны, терминалы с клавиатурой почти всегда используют последовательный формат побитной передачи буквенно-цифровой информации, при котором каждый знак передается в виде закодированной строки двоичных разрядов. Соответствующий интерфейсный блок постоянно осуществляет связь с ЦП посредством прерываний или программным путем. Вполне возможно, что новый стандарт на быструю передачу по параллельной шине (ШЕЕ 48-1975, известный также как GPIB и HPIB) и приведет, в конце концов, к стандартизации условий интерфейса для скоростных периферийных устройств, однако в настоящее время параллельная скоростная передача информации имеет наибольшую несовместимость при спорадическом обращении к интерфейсу (за исключением накопителей на магнитной ленте, которые почти всегда одинаково используют одинаковые условия передачи данных). 10.17. Буквенно-цифровые коды и последовательная передача Как уже упоминалось выше, передача информации между средне-скоростными периферийными устройствами и ЭВМ производится, как правило, последовательно по одной линии и использует 8-элемент-ный код ASCII (Американский стандартный код для обмена информацией). Существует также ряд других буквенно-цифровых кодов, например 8-элементный двоично-десятичный код EBCDIC, применяющийся главным образом в больших машинах, код Холлерита, служащий для записи информации в перфокартах, 5-элементный код Бодо, который долгое время являлся стандартным кодом для телетайпов, но в настоящее время почти полностью вышел из употребления. Кроме того, существуют несколько алфавитно-цифровых кодов, которые используются для обмена данными с определенными устройствами ввода/ вывода, например код ИБМ Selectric, имеющий две версии- коррес-пондентную и двоично-десятичную. В этих случаях при вводе и выводе информации необходимо производить программное кодопреобра-зование. Код ASCII. ASCII является наиболее распространенным буквенно-цифровым кодом- он повсеместно используется в мини- и микро-ЭВМ. Семиэлементные коды символов ASCII приведены в таблице на рис. 10 7 (восьмой разряд либо используется в качестве паритетного, либо полагается равным нулю). Таблица организована в виде вертикальных столбцов, которые соответствуют различным комбинациям трех старших разрядов кода и содержат по 16 строк, определяемых четырьмя младшими разрядами. Так, например, букваМ- это 1001101 в двоичном коде, 115 - в восьмеричном и 4D - в шестнадцатеричном. Таблица имеет одно удобное свойство: для того чтобы получить код строчной буквы, нужно взять соответствующий код прописной буквы и устл-новить в 1 разряд 6. Для целых чисел значение кода ASCII равно самому числ плюс десятичное число 48. Большинство знаков препинания расположены в столбце 2, непечатающиеся управляющие символы составляют первые 32 знака алфавита ASCII. Эти знаки используются для управления печатью или же интерпретируются как команды в тех Программах, которые ожидают приема буквенно-цифровых символов, например, редакторами текста. К наиболее часто используемым управляющим символам относятся NULL (нуль)-символ, содержащий нули во всех разрядах и применяющийся для разделения цепочки символов, а также и для других целей, CR (возврат каретки) и LF (перевод строки), устанавливающие при печати начало новой строки, FF (перевод формата), использующийся для перехода к новой странице, ESC .(авторегистр 2), служащий часто в качестве разделителя команд, ЕТХ конец текста, называемый также управляющее С ), который многими операционными системами интерпретируется как указание прервать выполнение программы. Клавиатуры, работающие в коде ASCII, обычно содержат клавишу CTRL. Если она нажата, то при манипуляциях буквенными клавишами (столбцы 4 и 5) будут вырабатываться Глсша 10
Пусто Начало заголовка Начало текста Конец текста Конец передачи Кто там? Подтверждение Звонок Возврат на шаг Горизонтальная табуляция Перевод строки Вертикальная табуляция Перевод формата Возврат каретки Выход Вход 1/0 DLE Авторегистр 1/1 DC1 К 1/3 DQ 3 > Символы управления 1/4 DC4 4 1/5 NAK Отрицание 1 /6 SYN Синхронизация 1/7 ЕТВ Конец блоков 1 /8 CAN Аннулирование 1/9 ЕМ Конец носителя 1/10 SUB Замена 1/11 ESC Авто регистр 1/12 FS Разделитель файлов 1/13 GS Разделитель групп 1/14 RS Разделитель записей 1/15 US Разделитель элементов 7/15 DEL Забой рнс. 10.7, Код ASCII, (С разрешения Американского национального стандарта ХЗ.4-1977, авторские права с 1977 г. за Американским Национальным институтом стандартов. Копии можно приобрести в Американском Национальном институте стандартов, 1430, Бродвей, Нью-Йорк, 10018), соответствующие управляющие символы из столбцов 1 и 2. Кроме того, обычно для символов CR, LF, ESC, а иногда и NULL используются отдельные клавиши, К сожалению, код ASCII не позволяет печатать индексы, показа-тели степени и буквы греческого алфавита. Очень жаль, что здесь отсутствуют такие буквы, как пи, мю, омега, а также символы показателя степени, которые часто используются в технических текстах. Конечно, для изменения шрифта или алфавита можно использовать управляющий символ, получив который специальная программа обработки слов будет уже иначе интерпретировать следующие после него знаки кода ASCII, распечатывая их на печатающем устройстве или графопостроителе в тш алфавите, который задал пользователь. Последовательная побитная передача. Данные в коде ASCII (так же как и в любом другом буквенно-цифровом коде) могут передаваться либо в виде параллельных 8-разрядных групп (по восьми независимым линиям), либо как строчки из 8 бит, следующих друг за другом. Клавиатуры ASCII обычно имеют 8-разрядньгй параллельный выход, совместимый с уровнями ТТЛ. При передаче данных на терминалы и из терминалов в коде ASCII из соображений удобства используется последовательный формат, С помощью устройств, носящих название модемов (модуляторов - демодуляторов), последовательность битов преобразуется в сигналы зву^совой частоты (и наоборот), которые передаются затем по телефонной линии (с помощью тонального устройства присоединения; для передачи может быть использован и обычный телефонный аппарат). В данном случае применение последовательного формата наиболее оправданно. При последовательной связи используется стандартный протокол побитной передачи и фиксированные значения скоростей. Данные передаются асинхронно и содержат стартовый и стоповый биты (иногда два стоповых): которые добавляются в начале и в конце каждого 8-разрядного символа ASCII, образуя группу из 10 разрядов. Фиксированные скорости, используемые приемником и передатчиком, могут иметь следующие значения: 110 (при двух стоповых битах), 150, 300, 600, 1200, 2400, 4800, 9600 и 19 200 Бод (т. е. периодов тактовой частоты в секунду). Принцип асинхронной последовательной передачи иллюстрируется на рис. 10.8. СТАРТ V ЛКИВНАЯ ШЗА ЛОГИЧЕСКАЯ I СТОЙ ARИBHЯ нйЖ'Зв i?a i7i Ui uj плт МЗР Ш паритетный бит Рнс. 10,8. Временная диаграмма последовательной пережачи байта ннформа-цнн по интерфейсу RS-232C. Когда информация не передается, передатчик находится в состоянии активной паузы (передача токовой посылки, если воспользоваться телеграфной терминологией). Каждый передаваемый символ начинается со стартового бита, за которым следуют 8 бит кода ASCII, и заканчивается стоповым битом; длительность последнего должна быть не менее одного периода тактовой частоты (при передаче на скорости ПО Бод-#~ два периода), но может быть и больше. На приемной сторо* не УАПП (универсальный асинхронный приемопередатчик) или ана- логичное ему устройство (см. разд. 8.27 и 11.9), работающее на той же скорости, синхронизируется по каждой 10-разрядной группе и преобразует входную последовательность битов в 8-разрядную параллельную группу данных. Поскольку при передаче каждого символа приемник синхронизируется по стартовому и стотвощ бита* , поддерживать тактовую частоту с высокой точностью нет необходн-мости. Тактовые генераторы приемника и передатчика должны лишь обеспечивать сохранение синхронизма на время передачи одного символа в пределах долей периода, т. е. требуемые точность и стабильность частоты должны составлять величину порядка нескольких процентов. Каждый символ завершается стоповым битом, который устанавливает систему в состояние паузы, если сразу не начинается передача следующего символа. Существуют программируемые формирователи рабочих тактовых сигналов (т. е. программируемые делители частоты), которые из входного высокочастотного сигнала вырабатывают набор тактовых последовательностей с частотами, соответствующими стандартным скоростям передачи. Требуемая частота из этого набора выбирается с помощью двоичного кода. Дуплекс и полудуплекс. Буквенно-цифровые терминалы (эти терминалы кроме клавиатуры содержат дисплей или печатающее устройство) могут осуществлять связь с машиной в режиме дуплекса либо полудуплекса. В дуплексном режиме клавиатура и печатающее устройство работают совершенно независимо и подключаются к машине с помощью индивидуальных последовательных линий. Это обычная организация связи, при которой каждый символ, полученный ЭВМ, передается обратно на терминал и распечатывается. При полудуплексной работе принятые символы машина обратно не передает. Токовая петля и интерфейс RS-232C. Существуют два способа передачи сигналов в коде АЗСП. Первый способ, который используется на телетайпах, а также предусматривается в качестве дополнительной возможности в большинстве терминалов, представляет собой коммутацию тока 20 мА (иногда 60 мА) с заданной частотой, соответствующей скорости передачи. Более широкое распространение имеет второй способ, при котором данные передаются стандартными биполярными уровнями интерфейса EIA RS-232, который был рассмотрен в разд. 9.17. Этот интерфейс стандартизирует даже разъемы (25-контактный сверхминиатюрный разъем типа D) и распайку выводов, что делает совместимыми по подключению все устройства, использующие интерфейс RS-232C. Среди глобальной несовместимости, царящей в промышленности электронных вычислительных средств, это кое-что значит. 10.18. Сопряжение с цифровыми устройствами Когда разработчик начинает проектировать интерфейс, предназна* ченный для ввода в машину чисел от внешнего прибора, он<>бнаружи-вает, какой разнобой царит в этой области: разные приборы выводят данные различными способами. Приборы, разрешающая способность которых не превышает нескольких цифр (или битов), как, например, З'г-знаковый цифровой вольтметр, обычно все цифры выводят одновременно (символы параллельно, биты параллельно). Другие приборы, как, например, 8-знаковый счетный частотометр, последовательно выводят каждую цифру (символы последовательно, биты параллельно), часто со скоростью обновления показаний внутреннего индикатора. В качестве иллюстрации на рис. 10.9 приведена схема интерфейса для получения данных от 8-знакового счетчика. На рисунке представлена законченная схема интерфейсного блока, предназначенного для сопряжения с шичой МС-16, содержащая флажки состояний, а также схемы прерывания и выборки устройства. Счетчик, показанный в левом нижнем углу, последовательно выводит на интерфейс цифры с адресами (О-7) и вырабатывает импульс СТРОБ, когда данные поданы на шину. Счетчик начинает с младшей значащей цифры (МЗЦ) и завершает полный цикл выводом старшей цифры (цифра 7). Последовательно вводимые цифры запоминаются с помощью восьми 4-разрядных D-регистров типа 74LS173, которые имеют выходы с тремя состояниями и раздельно тактируются сигналами от дешифратора адреса цифры. Здесь используется дешифратор 1 из 8 типа 74LS138, который по адресному коду и стробирующему импульсу вырабатывает тактирующие сигналы для каждой цифры. Таким образом, состояние счетчика запоминается на восьми регистрах, выходы которых объединены в две группы по 4 цифры (16 бит). Машина может считать эти восемь цифр с помощью двух последовательных команд ввода с адресными кодами, отличающимися в двух младших разрядах. Шесть старших разрядов адреса задаются в интерфейсе с помощью шести однополюсных ключей, выполненных в виде одной стандартной ИМС (в двухрядном корпусе DIP). Дешифрация адреса проиеходит следующим образом: если шесть старших разрядов адреса, действующих на линиях Аа-Ат, совпадают с адресным кодом устройства, заданным с помощью ключей, на выходе 6-разрядного компаратора возникнет НИЗКИЙ уровень, который по совпадению с импульсом ВВОД откроет стробируемый дешифратор 1 из 8 типа 74LS138. Последний дешифрует два младших разряда адреса и вырабатывает раздельные сигналы разрешения ввода данных, соответствующие двум смежным адресным кодам устройства. Такой способ дешифрации адреса является общепринятым, поскольку различным регистрам одного и того же интерфейсного блока обычно присваивается несколько последовательных адресов. * Когда от счетчика принята последняя цифра очередной группы, устанавливается флажок состояния (ГОТОВО), который может быть считан по команде ввода, обращенной к устройству с адресным кодом КУ + 2, где КУ - код устройства, заданный с помощью ключей. Кроме того, сигнал ГОТОВО вырабатывает запрос на прерывание, используя обычную схему прерываний. Заметим, что во время опроса прерываний адресный код устройства поступает на линии данных с тех Все рЕЗИсторьг по 10 ком У> Рис, 10.9. Интерфейс цифрового вольтметра: последовательные цифры преобразуются в параллельные слова. 1 ... 12 13 14 15 16 17 18 ... 59 |
© 2004-2024 AVTK.RU. Поддержка сайта: +7 495 7950139 в тональном режиме 271761
Копирование материалов разрешено при условии активной ссылки. |