Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.docx
Скачиваний:
5
Добавлен:
31.01.2023
Размер:
573.93 Кб
Скачать
      1. Основные параметры плоттеров

Носитель

  • Тип носителя (media type) напрямую влияет на эксплуатационные расходы: чем дороже и "экзотичнее" носитель, тем они выше.

  • Максимальный размер листа (max. media size) при использовании нарезанных заранее или максимальная ширина листа носителя (max. Media width) при использовании рулонного носителя больше фактических соответственно размера рабочего поля носителя (image size) или ширины рабочего поля (image width), т.е. пространства, где плоттер рисует, на размер полей по краям листа (border, margins) из-за необходимости его перемещения в процессе создания изображения.

  • Формат листа (drawing size) определяет максимальный стандартный формат, который может быть вписан в размер рабочего поля.

  • Длина носителя (media length) для рулонных плоттеров зависит от его толщины (чем тоньше носитель, тем он длиннее), так как допустимый диаметр рулона ограничен. Иногда можно встретить параметр - максимальная толщина носителя (max. media thickness). Понятно, что малая толщина носителя сужает возможности использования плоттера.

Параметры точности

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

  • Механическая точность (mechanical resolution, resolution) имеет смысл только для перьевых плоттеров и характеризует то, с какой точностью их механическая система способна позиционировать пишущий узел. Она всегда существенно лучше фактической точности, обеспечиваемой плоттером, поскольку, с одной стороны, центр пишущего элемента совсем необязательно попадет строго в установленную позицию, а, с другой пятно, создаваемое пишущим элементом, имеет ненулевые размеры.

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

  • Разрешение печати (resolution). Этот параметр используется в растровых плоттерах и измеряется числом точек на дюйм (dots per inch, dpi) в зарубежным плоттерах и числом точек на миллиметр - в отечественных. Чем величина больше, тем разрешение выше.

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

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

  • Погрешность остановки пера (end point accuracy) характеризует величину погрешности позиционирования пишущего узла перьевых плоттеров, возникающую при установке пишущего узла в начальную точку вектора после холостого перемещения, происходящего на максимальной скорости.

Производительность

  • Скорость печати, или перемещения носителя (media travel speed). Эта характеристика присуща растровым плоттерам, и обычно определяет максимально технически возможную скорость печати уже подготовленной информации. В то же время для высокопроизводительных плоттеров узкое место это процессы пересылки графической информации и ее интерпретация в плоттере и реальная скорость печати с учетом этих процессов ниже. Поэтому тип интерфейса (interface, input ports) – весьма важный параметр, характеризующий не только то, каким образом можно подключать плоттер, но и скорость печати. Стандартными для плоттеров является последовательный интерфейс RS-232C и более быстрый параллельный интерфейс Centronics. Для высокопроизводительных растровых плоттеров с большими объемами передаваемой информации желательно наличие нескольких одновременно работающих стандартных интерфейсов.

  • Максимальная скорость взаимного перемещения пишущего узла и носителя (max. speed). Этот параметр, приводимый для перьевых плоттеров, часто только вводит в заблуждение. Техническая возможность перемещать пишущий узел с большой скоростью и реальная скорость рисования - это, как говорится, две большие разницы. Реальная скорость рисования определяется максимальной скоростью нанесения непрерывной линии пишущим узлом (max. plotting speed) и максимальным ускорением перемещения (acceleration) пишущего узла. Максимальная скорость нанесения непрерывной линии указана на упаковке пишущего узла, а не в технических характеристиках плоттера и определяется, например, скоростью истечения чернил! А максимальное ускорение, которое может быть придано пишущему узлу, сродни термину "приемистость автомобиля" и влияет на потери времени при изменении направления пишущего узла, что происходит постоянно. На потери времени также влияет скорость поднятия/опускания пера (pen response time).

Память

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

Стандартный буфер - это оперативная память в плоттере стандартной конфигурации. Современные модели плоттеров большлго формата имеют стандартный буфер (memory) емкостью (memory capacity, standard buffer size) от 1 Мбайт. В некоторых моделях плоттеров можно устанавливать дополнительные блоки памяти, так называемое расширение буфера (memory upgrade, optional buffer) емкостью до 64 Мбайт. У высокопроизводительных плоттеров с несколькими каналами приема информации также должна быть дополнительная дисковая память (disk) - встроенный жесткий диск, на который записывается графическая информация.

Для перьевых плоттеров размер памяти определяет только способность работать в режиме off-line (т.е. автономно) после загрузки файла чертежа.

Для растровых плоттеров это жизненно важный параметр, так как он, в конечном счете, определяет разрешение и формат изображения, обеспечиваемые плоттером.

Чертежные характеристики

  • Цветовая палитра (colour palette). Для цветных растровых плоттеров этот параметр характеризует максимально возможное количество цветов, с которым способен работать плоттер, но количество одновременно отображаемых цветов всегда меньше и определяется числом цветов однородной заливки (area fill colours).

  • Число типов линий (line types). Этот параметр используется для характеристики векторной графики и определяет для некоторых плоттеров количество встроенных ("зашитых" в постоянной памяти или задаваемых внутренней программой) типов линий. Наличие встроенных типов линий не означает, что чертеж не может содержать и большего чем указано, числа линий, так как ряд компьютерных программ готовит данные для вывода на плоттер, не используя встроенные типы линий.

  • Число штриховок (area fill types, hatch types). Ряд перьевых и растровых плоттеров способны закрашивать замкнутые области путем штрихования, и этот параметр характеризует количество встроенных (аппаратно реализованных) видов штриховок. Он, как и число типов линий, не относится к числу критичных, поскольку далеко не все программные средства используют возможности встроенного управления штрихованием, а создают штриховку самостоятельно. Еще несколько параметров, характеризующих исключительно перьевые плоттеры.

  • Давление на пишущий элемент (pen force). Параметр определяет применимость дял данного плоттера того или иного носителя и пишущего элемента. Излишне высокое давление на пишущий элемент может привести к замятию или прорезанию носителя, а также порче пишущего элемента, а недостаточное - к потере непрерывности рисуемых линий.

  • Типы пишущих элементов (pen type). Чем больше список применяемых типов пишущих элементов (а в их число могут входить фломастеры, шариковые стержни и рапидографы с различными характеристиками), тем проще будет найти расходные материалы для плоттера. Ну, и конечно, тип пишущего узла оказывает критическое влияние на реальную производительность плоттера.

  • Число пишущих элементов в карусели (No. of pens). Это параметр определяет возможное число одновременно отображаемых цветов или ширину линий на чертеже.

  • Грифеледержатель (pencil holder). Специфический для карандашно-перьевых плоттеров параметр. Он описывает характеристики карандашного пишущего узла. Если грифеледержатель имеет бункер на несколько грифелей, то это существенно повышает автономность работы плоттера, так как замена исписавшегося грифеля при этом производится автоматически, без прерывания работы.

  • Тип лезвий (cutting kit). Специфический для режущих плоттеров параметр. Он аналогичен параметру типы пишущих узлов.

  • Наработка на отказ (MTBF - mean time before failure). Если данный параметр присутствует в документации, это уже говорит о высоком качестве устройства, так как, если он низок, его вряд ли будут афишировать. Сегодня можно считать, что надежность плоттеров, поставляемых на рынок солидными фирмами, составляет десятки тысяч часов.

УСТРОЙСТВА СВЯЗИ С ОБЪЕКТОМ

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

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

Первая схема включения операционного усилителя, которую мы рассмотрим, будет неинвертирующая или, как ещё говорят, включение в режиме повторителя. В этой схеме нет никаких внешних компонентов. Выход ОУ соединён с его входом ‘-’. Входной сигнал подаётся на вход ‘+’, а выходной сигнал, естественно, снимается с выхода ОУ. Естественно уровни всех напряжений по умолчанию измеряются по отношению к так называемому «общему» уровню, который принимается за 0 или за «землю».

Как работает эта схема? Если считать, что схема находится в рабочем режиме, то в силу выше сказанных допущений разность уровней напряжения на входах ОУ должна быть равна нулю или ну очень близкой к нулю. Если она будет заметной для ОУ, то на выходе его, учитывая очень большой коэффициент усиления, появиться очень большое напряжение. А мы считаем, что ОУ находится в рабочем режиме и выходное напряжение не выходит за рабочие границы. Следовательно, на выходе ОУ сформируется напряжение равное или очень близкое к входному напряжению. То есть операционный усилитель при таком включении имеет коэффициент ПЕРЕДАЧИ равный единице или очень близкий к 1. Чтобы оценить реальные цифры выходного напряжения можно задаться конкретным значением коэффициента усиления и вычислить это выходное напряжение. Пусть коэффициент УСИЛЕНИЯ ОУ равен 1000000 и на его вход «+» подается напряжение +1 вольт. Несложно вычислить значение выходного напряжения. Оно при таком коэффициенте усиления будет равно 0.999999 вольта, то есть коэффициент передачи очень близок к 1. Зачем может понадобиться такая схема включения в реальности? Здесь надо напомнить о втором параметре, упомянутом выше. Это значение входного тока, а оно очень мало. И если допустить, чисто теоретически, что он равен 0, то входное сопротивление такой схемы для источника сигнала, который подключён к входу «+», равно бесконечности. А это означает, что подключение входа этого усилителя к источнику сигнала не вызовет изменение выходного напряжения источника вне зависимости от значения его внутреннего сопротивления. В этом случае говорят о «развязке» источника сигнала и нагрузки. Для множества датчиков сигналов это имеет принципиальное значение и влияет на точность измерения параметров физических величин в измерительных системах, системах контроля и управления. Это не единственный вариант использования такой схемы включения ОУ. Нарисуйте самостоятельно схему по моему описанию и постарайтесь понять методику расчёта её параметров.

Выход ОУ подключён к цепочке из двух резисторов, другой конец которой подключён к «земле». Средний выход цепочки подключён к входу «-» ОУ. Зная закон Ома для участка цепи, закон Кирхгофа и, учитывая допущения изложенные выше, попытайтесь рассчитать выходное напряжение ОУ, если на вход «+» подаётся напряжение минус 2 вольта, а значения сопротивлений обоих резисторов равно 1 кОм. Для этого не потребуется много времени, и лучше пока не читать дальше эти лекции, а попытаться решить эту задачу самостоятельно. Я специально оставлю несколько пустых страниц, чтобы у читателя не было на экране готового решения. Конечно, оно будет приведено, но Вы проверите себя, как Вы умеете ПРИМЕНЯТЬ знание каких то законов. Конкретно эти законы Вам известны из школьного курса физики.

Итак. Нам известно, что если ОУ находится в рабочем режиме, то напряжения на входах «+» и «-» очень близки или можем для упрощения расчётов считать одинаковыми. Но если на вход «+» подано напряжение – 2 вольта, то и на входе «-» за счёт работы самого ОУ сформируется такое же напряжение – 2 вольта. Это напряжение снимается со средней точки цепочки из двух резисторов. Это напряжение создаётся за счёт протекания тока по цепочке, в том числе и через резистор, подключённый другим выводом к «земле». Ток, который протекает от «большего» потенциала к «меньшему», в нашем случае от «земли» к средней точке цепочки резисторов, равен 2 мА. По закону Кирхгофа, известному Вам и учитывая наше допущение о значении входных токов ОУ, можно сказать, что значение тока через второй, условно верхний, по схеме резистор будет тоже равен 2 мА. И он тоже создаёт падение напряжения на этом верхнем резисторе в размере 2 вольта. Следовательно, ОУ должен сформировать на своём выходе напряжение равное -4 вольта. Таким образом, получается, что при таком СООТНОШЕНИИ номиналов резисторов коэффициент передачи ОУ равен двум со знаком плюс. Если изменить это соотношение резисторов, то кроме «развязки», о которой было сказано выше, мы получаем усиление входного сигнала в известное и весьма точное, определяемое точностными параметрами резисторов, значение коэффициента передачи. Причём надо понимать, что на значение этого коэффициента влияет не сами номиналы резисторов, а именно их отношение. При интегральном или тонкоплёночном исполнении группы резисторов это отношение номиналов выдержать проще, чем при их объёмном исполнении. Если немного подумать, то можно вывести и простую формулу для вычисления этого коэффициента передачи, как функцию номиналов резисторов. Предлагаю Вам это сделать самостоятельно. Надо сказать, в том числе и из этой формулы будет видно, что получить с помощью такой схемы включения коэффициент передачи меньше единицы не получится. Таким образом, в этой простой схеме ОУ выполняет ОПЕРАЦИЮ УМНОЖЕНИЯ на постоянный, заданный соотношением резисторов, коэффициент не меньше единицы. В случае необходимости иметь возможность изменять коэффициент передачи схема должна быть дополнена резисторами с соответствующими номиналами и рядом ключей, позволяющих изменять в ручном, автоматическом или программном режиме соотношение этих резисторов в цепочке. Именно таким образом и работают различного рода многопредельные измерительные приборы в составе систем различного назначения.

Другая схема включения ОУ, получившая название «инвертирующая» схема включения, использует всегда большее количество компонентов, но и позволяет выполнять большее количество ОПЕРАЦИЙ. Опять прошу Вас нарисовать эту схему по моему описанию для лучшего понимания принципов её функционирования. Минимальная схема при таком включении содержит ОУ и 2 резистора. Вход «+» подключён к «земле». Выход ОУ через резистор «обратной связи» подключён к входу «-». На этот же вод «-» через другой резистор подаётся входное напряжение. Для примера расчёта коэффициента передачи зададимся параметрами резисторов и входного напряжения. Пусть входное напряжение будет равно +1 вольт, а резисторы имеют одинаковый номинал в 1 кОм. Я опять оставлю пустое место на странице, чтобы Вы проверили свои способности по применению известных законов с учётом наших допущений по параметрам ОУ.

Я очень надеюсь, что хоть какая-то часть читателей выполнила эту работу самостоятельно. Этим она подтвердила тот факт, что Вы не просто числитесь в Электротехническом университете, а умеете на практике применять законы Ома и Кирхгофа. Если не сделали этого самостоятельно, то жаль.

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

На этом не ограничиваются возможности включения ОУ в «инвертирующем» режиме. Если на вход «-» подключить ещё несколько резисторов с необходимыми номиналами и на другие входы резисторов подать выходы других источников сигналов, то ОУ будет выполнять ОПЕРАЦИЮ УМНОЖЕНИЯ сигналов от различных источников с необходимыми, может быть и разными коэффициентами, и одновременно ОПЕРАЦИЮ СУММИРОВАНИЯ результатов умножения. Причем, в отличие от более привычного сейчас последовательного выполнения этих операций в цифровом процессоре, ОУ выполняет эти операции параллельно. Поэтому в литературе встречаются понятия вычислительные машины ПОСЛЕДОВАТЕЛЬНОГО действия, подразумевая цифровые вычислительные машины и вычислительные машины ПАРАЛЛЕЛЬНОГО действия, подразумевая аналоговые вычислительные машины.

После того, как мы познакомились с ОУ, можно переходить к рассмотрению одного из типов преобразователя кода в напряжение, построенного на основе операционного усилителя и других элементах. В качестве других элементов, конечно, выступает набор резисторов, а также программно управляемых ключей и источника, как говорят, опорного напряжения. Например, для создания 8-и разрядного преобразователя двоичного кода в напряжение понадобиться ОУ, 8 входных резисторов с номиналами, отношения которых пропорционально степени 2 (1, 2, 4, 8, 16,….128) , один резистор обратной связи, источник опорного напряжения и 8 ключей. Все «весовые» резисторы одним своим выводом, как и резистор обратной связи, подключены к входу «-» ОУ. Другой вывод резистора обратной связи, как и положено, подключён к выходу операционного усилителя. Другие выводы весовых резисторов подключены через аналоговые ключи к источнику опорного напряжения. В зависимости от значения бита (0 или 1) ключ разомкнут (0) или замкнут (1). Старший бит байта, значение которого преобразуется в напряжение, подключён на вход управление ключом, связанного с резистором, имеющим наименьший номинал (1) и, следовательно, самый большой «вес» в токе, который протекает через резистор обратной связи. Самый младший бит байта управляет ключом, связанным с резистором, имеющим самый большой номинал (128), вносящий самый маленький ток в общую сумму. Для управления ключами в состав такого преобразователя обычно входит регистр. После записи байта информации в этот регистр через какое то время, которое можно назвать задержкой срабатывания преобразователя, на его выходе появляется уровень напряжения, значение которого пропорционально записанному в него двоичному коду. Для получения разумной погрешности преобразования, не превышающей половины веса младшего разряда, приходится подождать некоторое время, которое зависит от быстродействия входящих в состав преобразователя компонентов. Это прежде всего сам операционный усилитель и аналоговые ключи, от времени переключения и установления аналогового сигнала на выходе которых зависит быстродействие устройства. В зависимости от разрядности таких преобразователей и, соответственно, области применения время установления может отличаться на 4-5 порядков. Предлагаю Вам самостоятельно найти некоторую область применения преобразователей кода в аналоговый сигнал и оценить требуемые технические характеристики преобразователей в этой области по разрядности и быстродействию.

УСТРОЙСТВА СВЯЗИ С ОБЪЕКТОМ

( продолжение)

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

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

Другим важным компонентом систем управления объектами, как было сказано, являются различного рода преобразователи аналогового сигнала в код (АЦП). Разновидностей таких преобразователей значительно больше, чем ЦАП. Мы рассмотрим только некоторые из них.

Начнём с самого простого преобразователя, который получил название «следящий». Структурная схема такого преобразователя состоит из 4 – х блоков: генератор, реверсивный счётчик, преобразователь кода в напряжение и аналоговый компаратор. Новым блоком, который раньше не встречался в ранее рассмотренных схемах, является компаратор. Обычно он разрабатывается на основе операционного усилителя, но в отличие от него выходной сигнал компаратора формируется как цифровой. Значение выходного сигнала (0 или 1) определяется разностью уровней входных аналоговых сигналов на входах «+» и «-» этого компаратора. За счёт большого коэффициента усиления операционного усилителя, на основе которого построен компаратор, его чувствительность может достигать нескольких микровольт. Функционирование остальных блоков читателям должно быть знакомо. При необходимости структурную схему построения следящего аналого-цифрового преобразователя можно посмотреть в доступных источниках. Его функционирование описывается следующим образом. Входной аналоговый сигнал (напряжение) подаётся на вход «+» компаратора, а на другой вход «-» компаратора подаётся выходной сигнал преобразователя кода в напряжение. В зависимости от разницы входных сигналов компаратора на его выходе формируется цифровой сигнал 0 или 1. Этот сигнал поступает на управляющий вход реверсивного счётчика, который увеличивает или уменьшает хранящейся в нём код, в зависимости от уровня сигнала на управляющем входе, с каждым тактом работы генератора, выход которого подключён к счётному входу счётчика. Таким образом, в случае постоянного уровня входного напряжения, поданного на вход такого преобразователя, через некоторое время, которое определяется значением этого уровня, значением кода в счётчике в момент подачи на вход этого уровня и, соответственно, уровнем напряжения на выходе ПКН, частотой генератора и быстродействием компаратора напряжение на выходе ПКН будет отличаться от входного уровня на величину не больше кванта преобразователя. Значение кода в счётчике будет соответствовать значению входного уровня на данный момент времени и может быть прочитано программой через контроллер, который обеспечит передачу кода из счётчика в процессор, синхронизируя момент передачи с тактом работы генератора. В случае изменения уровня входного сигнала в ту или другую сторону компаратор, вырабатывая соответствующий выходной сигнал, обеспечит изменение кода в счётчике в необходимую сторону, тем самым отслеживая изменяющийся уровень входного сигнала. И если скорость изменения входного сигнала не будет превышать некоторое значение, то код на выходе счётчика всегда будет соответствовать уровню входного сигнала, то есть он будет «следить» за ним. Однако, если скорость изменения входного сигнала превысит некоторое значение, то значение кода будет отставать от истинного значения, что приведёт к ошибке в оценке уровня входного сигнала выше допустимой. Такой же нежелательный эффект будет иметь место, если использовать этот преобразователь в составе с коммутатором каналов, позволяющим использовать данный комплект для кодирования уровней, поступающих от разных источников. Причём выбор источника сигнала, уровень которого требуется измерить, может быть произвольный. В этом случае время выхода преобразователя на режим «слежения» за уровнем входного сигнала может занять неопределённое и возможно очень большое время. Поэтому данный тип аналого-цифрового преобразователя используется в основном только для кодирования сигнала от одного источника с ограничением по скорости изменения уровня входного сигнала.

Значительно более применяемым на практике типом преобразователя является преобразователь напряжения в код «поразрядного уравновешивания». В его состав входит регистр кода, цифроаналоговый преобразователь, компаратор, генератор и устройство управления. Структурная схема во многом похожа на схему предыдущего преобразователя, но вместо счётчика используется регистр и более сложное устройство управления, анализирующее сигнал от компаратора. Основной положительной характеристикой этого преобразователя для систем управления является способность вне зависимости от уровня входного сигнала, в том числе и в многоканальном режиме использования, найти его цифровой эквивалент достаточно большой разрядности за фиксированное, известное заранее, и весьма небольшое время. Это достигается за счёт логики работы устройства управления этого преобразователя. Суть этой логики состоит в следующем. После получения сигнала о запуске процесса преобразования, который, кстати, отсутствовал в преобразователе, рассмотренном ранее, устройство управления устанавливает в регистре код, который соответствует середине возможного диапазона измеряемого сигнала. После получения ответа от компаратора, который сравнивает уровень входного сигнала с уровнем сигнала от ЦАП, устройство управления принимает решение оставить значение этого разряда в 1 или сбросить его в 0. Одновременно следующий, более младший разряд регистра, устанавливается в 1. На следующих тактах работы генератора процесс определения значения очередных цифр кода повторяется. Таким образом, после заданного количества тактов работы, которое определяется разрядностью получаемого выходного кода, процесс преобразования считается законченным и в контроллер этого преобразователя посылается соответствующий сигнал. Процессор, получив об этом информацию тем или иным способом, может прочитать это код. Очень желательно, чтобы за время преобразования входной сигнал не изменялся. В противном случае прочитанный процессором код может не соответствовать уровню входного сигнала на момент запуска процесса преобразования. Появится так называемая динамическая ошибка результата преобразования. Для существенного уменьшения такой ошибки, если не полного её исключения, на входе преобразователя устанавливают дополнительное устройство, которое обычно называют как «устройство выборки и хранения» (УВХ). Его основное назначение, когда не требуется преобразование, следить за уровнем входного сигнала, а по сигналу запуска процесса преобразования сохранять на время преобразования этот уровень. После окончания преобразования УВХ возвращается на режим слежения за входным сигналом. Таким образом код, полученный после окончания преобразования, соответствует входному сигналу на момент запуска процесса преобразования, что позволяет при необходимости более качественно получить информацию о характере изменения входного сигнала во времени. Если время выхода УВХ на режим слежения за входным сигналом относительно небольшое, то вполне возможно применение такой схемы включения и в случае многоканального режима его работы.

Ещё один принцип построения схемы АЦП, получивший название «АЦП непосредственного считывания» рассмотрим далее. Этот принцип построения используется в системах, где время преобразования аналогового сигнала в цифровой код является основным параметром, который требуется минимизировать, даже за счёт уменьшения разрядности получаемого выходного кода. Примером таких систем сбора и обработки данных, систем управления технологическими объектами являются системы, где будет использоваться кодирование и обработка различных видеосигналов, особенно в реальном времени. В таких системах время кодирования в некоторых случаях требуется порядка наносекунд и менее. Принцип работы такого рода преобразователя основан на одновременном сравнении уровня входного сигнала с множеством аналоговых уровней, образованных в схеме такого АЦП с помощью источника опорного напряжения и резистивного делителя напряжения. Сравнение производится параллельно соответствующим количеством компараторов. Преобразование такого многоразрядного кода в обычный двоичный код можно выполнить с помощью комбинационной схемы. Например, для получения 8 – разрядного кода требуется «всего лишь» 255 резисторов, соединённых последовательно, и 255 компараторов. Каждый из компараторов сравнивает уровень входного сигнала с уровнем, снимаемым с соответствующего выхода резистивного делителя. И эти 255 бит подаются на вход комбинационной схемы, которая и формирует этот 8 – разрядный код. Быстродействие такой схемы в первую очередь определяется быстродействием компараторов, а во вторую комбинационной схемы. Количество резисторов и компараторов можно значительно сократить за счёт усложнения схемы управления и включения в её состав УВХ. Такого рода АЦП будет носить уже название «конвейерный». Можете самостоятельно поинтересоваться его структурной схемой. Для кодирования быстро протекающих процессов, когда быстродействия процессора недостаточно для регулярного программного запуска процесса преобразования, в состав самого АЦП или его контроллера включают дополнительные блоки. К этим блокам можно отнести программируемый таймер со своим генератором, обеспечивающий запуск процесса преобразования через заданные интервалы времени и буферные запоминающие устройства, позволяющие запомнить все данные об этом процессе с последующей передачей этих данных на обработку либо в режиме программного обмена либо в режиме прямого доступа к памяти.

Принципы построения других АЦП, таких как «развёртывающие», «комбинированные», «интегрирующие» и так далее возможно будут изложены в других дисциплинах, связанных с информационно-измерительными системами и приборами.

КЛАВИАТУРА

Клавиатура – это основное, по крайней мере, пока, средство для ввода информации пользователем в персональных ЭВМ (ПЭВМ). Знание её особенностей является необходимым фактором умения общаться с компьютером.

В клавиатурах различных ПЭВМ можно выделить следующие группы клавиш.

Группа 1. Алфавитно-цифровые и знаковые клавиши (А,...,Z,a,…,z, А,…,Я, а,…,я, 0,…,9, +,…,#), а также специальные клавиши (Esc,…, BackSpace), каждой из которых в дальнейшем соответствует простой ASCII код.

Группа 2. Функциональные клавиши (F1,…F12). Им в дальнейшем соответствует расширенный ASCII код.

Группа 3. Служебные клавиши для управления перемещением курсора и редактированием (Up,…,Del). Им в дальнейшем соответствует расширенный ASCII код.

Группа 4. Служебные для смены регистров и модификации кодов других клавиш (Alt, Ctrl, Shift).

Группа 5. Служебные клавиши для фиксации «регистров» (CapsLock, ScrollLock, NumLock).

Группа 6. Вспомогательные клавиши (PtrSc, SysRq,…).

Клавишам 4,5 и 6 групп не соответствуют никакие ASCII коды.

Обычно различают три уровня представления и обработки сигналов от клавиатуры: физический, логический и функциональный.

На физическом уровне рассматриваются как процессы, происходящие внутри самой клавиатуры, так и процесс передачи информации из клавиатуры в порт контроллера клавиатуры или обратно.

На логическом уровне рассматривается процесс обработки прерывания от клавиатуры, как основного способа сообщения процессору о появлении новой информации в порту контроллера клавиатуры.

На функциональном уровне отдельным клавишам или комбинациям из нажатых и отпущенных в определенной последовательности клавиш программным путём сопоставляются определённые функции, которые реализуются при манипуляции с этими клавишами. Например, любой ASCII-код, кроме нуля, можно ввести нажатием клавиши Alt и последующим её удержанием в нажатом состоянии и набором десятичного номера этого кода на дополнительной цифровой клавиатуре (при включённом режиме NumLock) и последующим отпусканием клавиши Alt. Другим примером служит самая известная комбинация последовательно нажимаемых и не отпускаемых клавиш, которая приводит

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

За время своего существования клавиатура, как периферийное устройство, подключённое к компьютеру, прошла путь от электромеханического устройства до сенсорного устройства в некоторых моделях. Достаточно давно и по настоящее время в качестве устройства управления клавиатурой используются однокристальные микро-ЭВМ, содержащие внутри почти все блоки, характерные для ЦП. К таким блокам можно отнести процессор, генератор, постоянное запоминающее устройство, оперативную память, различные контроллеры с портами ввода/вывода, модем. После включения питания в клавиатуру, как и в большинство других устройств, подключенных к процессору, поступает сигнал RESET, который используется для инициализации работы, клавиатурный процессор аналогично центральному процессору начинает выполнять программу, находящуюся в «своём» ПЗУ. Обычно эта программа выполняет тестирование аппаратных средств, подключённых к клавиатурному процессору, и устанавливает порты «своих» устройств в необходимое начальное состояние. После этого основной задачей клавиатурного процессора становится наблюдение за состоянием клавиш. Блок клавиш реализован в виде матрицы, входы/выходы которой подключены к определённым портам ввода/вывода встроенных контроллеров. Этот процесс обычно называют сканированием, поскольку он выполняется регулярно и достаточно часто, чтобы процессор смог своевременно определить изменение состояния клавиш. Каждая клавиша имеет условный номер, и в задачу процессора входит определение номера клавиши, которая изменила своё состояние (нажата или отпущена). Этот номер клавиши, который обычно называют скэн-кодом (скан-кодом), клавиатурный процессор должен передать через модем в порт контроллера клавиатуры, подключённого через системную шину к центральному процессору. Для уменьшения вероятности появления ошибок в определении номера клавиши, изменившей своё состояние, клавиатурный процессор принимает решение о её номере после нескольких циклов сканирования, запоминая результаты предыдущих циклов опроса в своей оперативной памяти. Определив скэн-код нажатой или отпущенной клавиши, клавиатурный процессор передаёт его в порт модема для передачи в контроллер клавиатуры. Обычно в модемах используется последовательная передача данных бит за битом, поскольку частота формирования новых данных сравнительно невысока. В зависимости от типа клавиатуры её связь с контроллером клавиатуры, в состав которого входит аналогичный модем, осуществляется по проводам (проводная клавиатура) или другим способом (беспроводная клавиатура), например через инфракрасный порт. Последующая передача данных из клавиатуры через модем возможна только после чтения центральным процессором данных из порта контроллера клавиатуры, о чём процессор сообщает ответной передачей клавиатурному процессору. Если эти данные из порта не были прочитаны, а у клавиатурного процессора появилась новая информация о состоянии клавиш, то он записывает эти не переданные пока скэн-коды в свой внутренний буфер, расположенный также в своей оперативной памяти. Эти данные будут в дальнейшем передаваться после чтения данных центральным процессором из порта клавиатуры. Таким образом, второй задачей клавиатурного процессора является контроль наличия поступившей через модем информации и выполнение необходимых действий после её появления, чтения и последующего анализа.

В литературе приводится порядка десяти команд, которые центральный процессор может передать клавиатурному процессору для исполнения. В качестве примера одной из таких команд можно привести команду установки или сброса, в зависимости от передаваемых с командой данных, разрядов порта, выходные сигналы которого используются для управления индикаторами клавиатуры (CapsLock, NumLock и т.д.). Ещё одним примером такой команды является команда, которая в зависимости от передаваемых в ней данных, может изменить два параметра работы клавиатурного процессора, связанных со временем задержки включения режима автоматического повторения передачи скэн-кода нажатой и удерживаемой в этом положении клавиши и частоты повторения передачи этого скэн-кода, что имитирует серию быстрых нажатий. Значения этих параметров хранятся в оперативной памяти клавиатурного процессора и по умолчанию устанавливаются в средние значения либо самим клавиатурным процессором при начале его работы либо центральным процессором при инициализации процесса обмена информацией с клавиатурой. В качестве значений по умолчанию для времени задержки устанавливается время 0.5 секунды (возможные ещё значения 0.25, 0.75 и 1.0 сек), а для частоты автоматического повторения 10 Гц (возможны ещё множество значений от 2 до 30 Гц). Это даёт возможность пользователю выбрать и установить удобные для него временные параметры при работе с клавиатурой. При возможности доступа к портам ввода/вывода из программ пользователя это можно сделать в любое время. В случае невозможности доступа к портам это можно сделать через панель управления клавиатурой, используя соответствующие средства операционной системы.

Как было сказано раньше, основным способом приёма информации от клавиатуры является программный обмен с использованием системы прерывания. Это означает, что как только в порту контроллера клавиатуры появляется новый скэн-код (основной или дополнительный), так сразу же контроллер клавиатуры передает требование прерывания в контроллер прерывания на выделенный для него вход. Обычно этот запрос не замаскирован, и на соответствующий вход центрального процессора поступает запрос на внешнее аппаратное прерывание. Этому запросу при программировании контроллера прерывания назначен номер 9. В оперативной памяти компьютера в таблице векторов прерываний в строчке 9 (это 4 байта начиная с адреса 36) записан адрес точки входа в подпрограмму обработки прерываний от клавиатуры. Эта подпрограмма обычно является частью BIOS или операционной системы.

Если говорить коротко, то эта подпрограмма обработки прерываний выполняет следующие укрупнённые действия:

- читает скэн-код из порта с номером 96;

- передаёт через порт 97 в клавиатурный контроллер информацию о взятии скэн-кода;

- анализирует принятый код и при необходимости изменяет биты статуса в области данных BIOS;

- преобразует и при возможности помещает принятый скэн-код и дополнительный байт в буфер клавиатуры, расположенный в оперативной памяти; при отсутствии места в буфере с использованием соответствующих средств выдаётся звуковой сигнал;

- выполняется выход из подпрограммы обработки прерывания.

Младший из двух байтов, полученных в результате преобразования, для клавиш первой группы содержит уже ASCII-код, соответствующий изображённому на клавише символу. В старшем байте записан полученный скэн-код нажатой клавиши для возможного последующего анализа какой либо программой. Если в первом байте записан ноль, то соответствующий код называется расширенным ASCII-кодом. В этом случае старший байт может соответствовать определённой комбинации одновременно нажатых клавиш. Это позволяет проверить тот факт, что нажатая в данный момент клавиша не относится к группе 1. Информацию о состоянии клавиш Ins, CapsLock, ScrollLock, Alt, Ctrl (левая и правая по отдельности ), Shift (правая и левая по отдельности) хранится в двух определённых байтах оперативной памяти. Информация в этих байтах при необходимости изменяется в случае нажатия пользователем соответствующей клавиши и используется подпрограммой для формирования правильного ASCII-кода символа.

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

Чтение информации из буфера с изменением соответствующего смещения осуществляется с помощью программного прерывания средствами BIOS или операционной системы.

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

#include <conio.h>

#include <dos.h>

#include <stdio.h>

void interrupt far keyboard(...); //4

void interrupt (far *oldvect)(...); //5

unsigned char t=0; //6

void main(void)

{

unsigned char s[30]; //9

clrscr(); /10

fflush(stdin); //11

oldvect=_dos_getvect(0x09); //12

_dos_setvect(0x09,keyboard); //13

while((t)!=129) ; //14

_dos_setvect(0x09,oldvect); //15

gets(s); //16

puts(s); //17

fflush(stdin); //18

getch(); //19

}

void interrupt far keyboard(...) //21

{

t=inportb(0x60); //22

printf("%d ",t); //23

_chain_intr(oldvect); //24

}

Первые 3 строки кода не требуют комментариев.

Строка 4 содержит прототип функции с именем keyboard, которая судя по ключевым словам, стоящим перед её именем, принадлежит к функциям обработки прерываний.

Строка 5 содержит описание переменной с именем oldvect, которая судя по ключевым словам, стоящим перед её именем, будет использоваться как «дальний» указатель на функцию обработки прерывания.

Строка 6 содержит описание и инициализацию глобальной переменной с именем t, значение которой затем формируется в функции keyboard (), и используется не только в ней, но и в главной функции main ().

Символьный массив s[30], объявленный в главной функции в строке 9, послужит для демонстрации аккуратного вмешательства в систему прерываний. В него попадёт информация, набранная на клавиатуре и сохранённая на время «вмешательства» в буфере клавиатуры области данных BIOS.

Далее в строках 10 и 11 следуют вызовы функций для очистки экрана и входного клавиатурного буфера.

В строке 12 с помощью библиотечной функции _dos_getvect () читается содержимое строки 9 таблицы векторов прерывания (ТВП), и это значение сохраняется в переменной с именем oldvect.

В строке 13 также с помощью библиотечной функции _dos_setvect () формируется новое значение в строке 9 ТВП, которое указывает на новую точку входа в случае прерывания с вектором 9. Эта новая информация в строке 9 ТВП после вызова будет указывать на функцию с именем keyboard ().

Строка 14 содержит оператор цикла с условием выхода из него только при значении глобальной переменной t равной 1. Значение этой переменной, напомню, будет формироваться в подпрограмме обработки прерываний keyboard (). Таким образом, если не нажимать ни на какую клавишу, то программа будет исполнять только данный оператор цикла. В случае нажатия на клавишу или её отпускания вызовется прерывание по вектору с номером 9, и произойдет переход на подпрограмму с именем keyboard ().

Начав своё выполнение со строки 22 процессор с помощью библиотечной функции inportb () прочитает содержимое порта с номером 0х60, относящийся к контроллеру клавиатуры, в котором находится скэн-код нажатой или отпущенной клавиши, переданного туда из клавиатуры и скопирует его значение в переменную t.

В строке 23 это значение для визуального контроля будет выведено на экран.

Библиотечная функция с именем _chain_intr () , вызываемая в строке 24 позволит продолжить работу, передав управление стандартной подпрограмме обработки прерывания от клавиатуры, чтобы не нарушать работу операционной системы. Это выполняется путем передачи ей в качестве параметра значения «старой» точки входа, сохранённой в переменной oldvect. Таким образом эта программа незаметно перехватили аппаратное прерывание, скопировав значение из порта клавиатуры в некоторую переменную и передав управление стандартной подпрограмме позволили ей выполнить её функции. Прочитать код из порта, проанализировать его, сообщить клавиатурному процессору о возможности посылки нового кода в порт, записать при необходимости скэн-код и ASCII-код в буфер клавиатуры, разблокировать систему прерываний, вернуться в фоновую прерванную программу.

Оператором фоновой программы, куда вернётся управление, будет опять оператор цикла, где состоится анализ значения переменной с именем t, где хранится скэн-код последней нажатой или отпущенной клавиши. И если это будет скэн-код не равный 1, то описанные процессы снова повторятся. Проблем не будет до тех пор, пока в буфере клавиатуры будет место для записи очередного скэн-кода и ASCII-кода. Если до заполнения буфера клавиатуры пользователь нажмёт клавишу Esc, скэн-код которой при нажатии равен 1, то в операторе цикла выполнится условие выхода из него и программа перейдёт к строке 15.

В этой строке произойдёт восстановление «старого» стандартного вектора прерываний в строке 9 ТВП .

В строке 16 используется библиотечная функция чтения строки символов из входного буфера, где накопилась информация о ранее нажатых клавишах. Эти символы будут прочитаны из буфера, записаны в массив s [], и как «эхо-печать» появятся на экране. Если пользователь в числе нажатых клавиш, нажимал клавишу Enter, то процесс чтения информации из буфера закончится с появлением этого символа, а остальные символы не будут прочитаны из буфера. Программа перейдёт к строке 17. Если такого символа не будет в ранее нажатых клавишах, то программа будет ждать его ввода, находясь в строке 16.

В строке 17 производится контрольный вывод введённой ранее строки из символьного массива s[].

В строке 18 освобождается входной буфер.

В строке 19 ожидается ввод любого символа для завершения работы программы.

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

‘p’ ‘a’ ‘v’ ‘l’ ‘o’ ‘v’ ‘Enter’ ‘s’ ‘m’ ‘Esc’.

25 153 30 158 47 175 38 166 24 152 47 175 28 156 31 159 50 178 1 129 pavlov

pavlov

Как видно из примера при каждом нажатии на клавишу на экран выводится её скэн-код, а при отпускании он же, но увеличенный на 128. Символы, введённые после нажатия клавиши «Enter», были записаны в буфер клавиатуры, но не были прочитаны функцией gets (), и соответственно, не выведены на экран функцией puts ().

ПРЯМОЙ ДОСТУП К ПАМЯТИ

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

В некоторых системах возможна организация прямого доступа в режиме память – память. Этот процесс, если он реализован в системе, значительно ускоряет копирование большого объёма информации из одного участка памяти в другой или заполнение некоторого участка памяти одинаковой информацией, как это иногда требуется при обнулении элементов масства. Такая потребность может возникнуть при создании копии массива для последующей модификации оригинала или копии. Также такая возможность, если она реализована, может быть использована при необходимости перемещении массива в другое место памяти, с последующим освобождением этого участка памяти, как это может происходить при использовании функции языка СИ realloc(), в случае просьбы со стороны программы увеличить размер выделяемой памяти под массив.

При использовании режима ПДП следует выделить 3 этапа:

- подготовка,

- собственно обмен данными,

- завершение.

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

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

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

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

Этап подготовки складывается из программирования определённого канала КПДП, к которому подключено некоторое устройство со своим контроллером и регистра управления контроллера этого устройства.

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

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

Следующим регистром, значение которого необходимо сформировать программно, является регистр счёта байт (слов). Фактически в него требуется записать значение объёма информации, которой требуется обменяться между устройством или его контроллером и оперативной памятью. Информация из этого регистра также в начале второго этапа копируется в текущий счётчик оставшихся для передачи байт (слов) и может быть использована повторно, аналогично предыдущему регистру. Значение счётчика на этапе обмена после каждой передачи будет уменьшаться на 1 (на 2 в случае передачи слова).

Следующий регистр, называемый в литературе как регистр временного хранения данных, используется во время передачи память – память для временного хранения передаваемого данного.

Регистры управления и режима используются для задания требуемого режима работы канала. В качестве примеров режимов работы можно привести: режим чтения из памяти; режим записи в память; режим память – память; режим передачи по одному байту (слову); режим групповой передачи байт (слов); направление изменения адресов в процессе будущей передачи данных; разрешение или запрещение режима автоматической инициализации после завершения передачи последнего байта (слова); маскирование запросов на ПДП по каким то каналам и так далее.

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

Завершающим шагом подготовки процесса ПДП после программирования регистров КПДП является запись информации в контроллер устройства, с которым будет далее осуществляться обмен. В этой информации устройству следует сообщить о завершении программирования КПДП, то есть о его готовности начать по сигналу от периферийного устройства управление системной шиной с целью обмена данными с оперативной памятью. Также устройству следует сообщить о возможности или невозможности сообщить процессору об успешном или неуспешном завершении будущего этапа обмена путём вызова прерывания работы процессора. Если устройство способно работать на вывод и ввод через один канал КПДП, то необходимо также сообщить о виде операции обмена с ним. На этом этап подготовки процесса обмена с использованием прямого доступа к памяти заканчивается, и процессор может продолжать свою работу по другим своим процессам, не связанным с этим процессом.

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

Для этого периферийное устройство через свой контроллер или сам контроллер, если так задумано, запрашивает прямой доступ, посылая на соответствующий вход контроллера ПДП, связанный с определённым каналом (например, канал № 3), сигнал с названием DREQ 3.

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

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

Контроллер ПДП ответным сигналом с название DACK (для этого примера DACK 3), предназначенным для запросившего ПДП устройства, сообщает ему о подтверждении запроса и готовности организовать обмен данными между контроллером устройства и оперативной памятью или наоборот. Контроллер ПДП, используя регистр текущего адреса канала 3, устанавливает на системной шине адрес ячейки оперативной памяти, в которую надо произвести запись. Также он вырабатывает для контроллера устройства и оперативной памяти управляющие сигналы, по которым устройство передаёт данные на шину, и по выставленному адресу в оперативную память производится запись имеющейся на шине данных информации. Контроллер устройства снимает данные с системной шины после снятия соответствующего управляющего сигнала и сигнал запроса DREQ 3, если не был запрограммирован режим блочной передачи данных. В ответ на снятие этого сигнала КПДП снимает сигнал DACK 3. Если КПДП был запрограммирован на передачу данных из памяти в контроллер устройства, контроллер ПДП, используя текущий регистр адреса канала 3, выставляет адрес на системную шину и соответствующие управляющие сигналы для чтения информации из оперативной памяти. Эта информация из оперативной памяти передаётся на шину данных и только тогда КПДП выставляет управляющий сигнал для контроллера устройства, по которому эта информация с шины данных записывается в порт данных устройства. Контроллер устройства снимает сигнал запроса на ПДП DREQ 3, если не был запрограммирован режим блочной передачи данных. В ответ на снятие этого сигнала КПДП снимает сигнал DACK 3. В процессе обмена данными значение в текущем счётчике уменьшается. После обмена данными значение в регистре текущего адреса изменяются на соответствующее значение в зависимости от запрограммированного на этапе подготовки режима обмена.

В случае снятия запроса на ПДП DREQ 3 и не появления за это время новых запросов КПДП снимает сигнал HOLD и арбитр шины передаёт управление этой шиной процессору. Если же на этапе подготовки для этого канала был задан режим обмена не одиночными байтами (словами), а режим блочной передачи данных, то контроллер устройства не снимает сигнал DREQ 3. А КПДП, после изменения регистра текущего адреса и текущего счётчика, использует следующий цикл шины для организации обмена очередной порцией данных, не давая процессору возможности его использовать для себя. Такой блочный способ обмена позволяет устройству, без многократного ожидания предоставления прямого доступа, выполнить обмен определенной группой данных за несколько меньшее время, чем в режиме обмена одиночными байтами (словами). Ещё большее сокращение времени на обмен данными в режиме блочной передачи достигается в вычислительных системах, где и оперативная память выполняет не пассивную роль в процессе обмена, а активно участвует в этом процессе следующим образом. В первом цикле шины, который используется для обмена в режиме блочной передачи данных, контроллер оперативной памяти получает начальный адрес ячейки памяти, начиная с которой будет выполняться обмен. Естественно об этом контроллер памяти должен быть уведомлен. При последующих циклах обмена этот адрес контроллер памяти будет изменять самостоятельно после выполнения записи/чтения данных. Это позволяет КПДП не тратить время цикла шины на установку этого адреса на шине. На остальных циклах, кроме первого, по соответствующим управляющим сигналам, по шине будут передаваться только данные.

Переход к этапу завершения ПДП в случае нормального течения процесса происходит тогда, когда при очередной передаче данных значение текущего счётчика станет равно 0. Это свидетельствует о том, что КПДП выполняет последний цикл обмена из запрограммированного количества. Об этом КПДП и сообщает в текущем последнем цикле обмена контроллеру устройства путем передачи сигнала с названием EOP. По этому сигналу контроллер устройства понимает, что процесс обмена данными заканчивается. Он устанавливает бит завершения операции в своём регистре состояния и, если контроллеру устройства, на этапе подготовки при его программировании, было разрешено вызвать аппаратное прерывание при завершении процесса обмена, то он устанавливает соответствующий сигнал требования прерывания. Естественно, в контроллере прерывания этот запрос не должен быть замаскирован, в таблице векторов прерываний в соответствующей строке должна содержаться информация о точке входа в подпрограмму обработки прерываний по этому вектору и сама подпрограмма должна быть загружена в память, начиная с указанного места. Если контроллеру устройства запретили вызывать прерывание при получении сигнала EOP, то установив бит завершения операции, контроллер больше ничего не делает. Вся ответственность за выявление факта завершения операции обмена ложится на программу, которая должна периодически читать содержимое регистра состояния этого контроллера и анализировать значение соответствующего бита. В некоторых системах, где требуется регулярный обмен данными и где контроллер устройства хочет, но не может обменяться данными с памятью по причине незавершения предыдущего обмена, он устанавливает определённый бит в регистре состояния и вызывает прерывание раньше завершения операции, поскольку данные могут быть потеряны. Об этом подпрограмма обработки прерывания узнает путём анализа соответствующего бита регистра состояния контроллера устройства. Чтобы исключить такую неприятную ситуацию в современных контроллерах устройств имеются буферные запоминающие устройства требуемого объёма, где эта информация сначала собирается, а затем передаётся в нужную сторону.

Соседние файлы в предмете Организация ЭВМ и вычислительных систем