Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Улучшение параметров ОЗУ



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

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

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

Например, если необходимо в 8 раз увеличить частоту чтения информации из памяти, то надо соединить нужное количество микросхем памяти для увеличения разрядности шины данных в 8 раз, а затем применить на выходах данных схему (рис. 12.16) на основе 8-разрядного регистра сдвига. 8-разрядный код, читаемый из памяти, записывается в сдвиговый регистр, а затем сдвигается семь раз с частотой, в 8 раз большей, чем частота опроса памяти. И запись, и сдвиг производятся одним тактовым сигналом с генератора. Восемь тактовых импульсов отсчитываются синхронным счетчиком. Для управления работой регистра сдвига применен элемент 3ИЛИ-НЕ, выдающий положительный импульс в течение первой 1/8 периода опроса памяти. Этот же сигнал используется как строб чтения из памяти (своим задним фронтом он переключает адреса памяти).


Рис. 12.16. Увеличение частоты чтения информации

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

Схема, показанная на рис. 12.17, ускоряет частоту записи в память в 4 раза.


Рис. 12.17. Увеличение частоты записи информации

В данном случае в качестве регистра сдвига удобно использовать обычный параллельный регистр, срабатывающий по фронту, у которого выходы трех разрядов соединены со входами следующих разрядов. При этом из одного 8-разрядного регистра мы получаем два 4-разрядных регистра сдвига. 2-разрядная входная информация записывается в эти два 4-разрядных регистра сдвига, затем переписывается в параллельный регистр и только потом записывается в память. Для отсчета четырех импульсов тактового генератора применен 2-разрядный счетчик на двух JK-триггерах, включенных в счетном режиме, что позволяет несколько повысить быстродействие по сравнению со стандартными микросхемами счетчиков. Сигнал с выхода второго триггера записывает информацию в параллельный регистр, а также используется в качестве строба записи в память "Зап.".

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

Схема энергонезависимой памяти (рис. 12.18) довольно проста, хотя и имеет ряд неочевидных особенностей.


Рис. 12.18. Энергонезависимая оперативная память

Дело в том, что управляющие сигналы памяти –WR и –CS имеют активный низкий уровень, а при выключении питания все входные сигналы памяти, естественно, станут нулевыми. Это приведет к искажению записанной в память информации. Поэтому необходимо обеспечить, чтобы при выключении питания сигналы на входах –WR и –CS были пассивными, то есть имели уровень логической единицы. Для этого обычно используются логические элементы с выходами ОК, нагрузочные резисторы которых присоединяются не к пропадающему напряжению питания памяти Uип, а к сохраняющемуся напряжению питания памяти Uпам. Для получения напряжения Uпам используется простая схема на двух диодах (лучше брать диоды Шоттки с меньшим падением напряжения), которая передает на выход Uпам напряжение источника питания Uип (если питание включено) или напряжение от гальванической батареи 3–4,5 В (если питание выключено).

Для большей гарантии от пропадания информации во время переходных процессов (при постепенном нарастании Uип и при постепенном его уменьшении) необходимо управлять прохождением сигналов WR и CS на память с помощью управляющего сигнала "Сброс". Этот сигнал равен нулю при напряжения Uип менее 4,7–4,8 В и равен единице при нормальном напряжении Uип = 5 В (временная диаграмма приведена на рисунке). В результате такого решения память отключается от остальной схемы при недостаточном напряжении питания (сигналы -WR и –CS равны единице) и подключается к остальной схеме при нормальном напряжении питания.

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

 

 

13. Лекция: Применение ЦАП и АЦП: версия для печати и PDA В лекции рассматриваются принципы работы аналого-цифровых и цифро-аналоговых преобразователей, о типах микросхем ЦАП и АЦП, их алгоритмах работы, параметрах, типовых схемах включения, а также о способах реализации на их основе некоторых часто встречающихся функций.
Как уже отмечалось во второй лекции, цифро-аналоговые преобразователи (ЦАП, DAC — "Digital-to-Analog Converter") и аналого-цифровые преобразователи (АЦП, ADC — "Analog-to-Digital Converter") главным образом применяются для сопряжения цифровых устройств и систем с внешними аналоговыми сигналами, с реальным миром. При этом АЦП преобразует аналоговые сигналы во входные цифровые сигналы, поступающие на цифровые устройства для дальнейшей обработки или хранения, а ЦАП преобразует выходные цифровые сигналы цифровых устройств в аналоговые сигналы (см.рис. 2.12). ЦАП и АЦП применяются в измерительной технике (цифровые осциллографы, вольтметры, генераторы сигналов и т.д.), в бытовой аппаратуре (телевизоры, музыкальные центры, автомобильная электроника и т.д.), в компьютерной технике (ввод и вывод звука в компьютерах, видеомониторы, принтеры и т.д.), в медицинской технике, в радиолокационных устройствах, в телефонии и во многих других областях. Применение ЦАП и АЦП постоянно расширяется по мере перехода от аналоговых к цифровым устройствам. В качестве ЦАП и АЦП обычно применяются специализированные микросхемы, выпускаемые многими отечественными и зарубежными фирмами. Сразу же надо отметить, что для грамотного и профессионального использования микросхем ЦАП и АЦП совершенно не достаточно знания цифровой схемотехники. Эти микросхемы относятся к аналого-цифровым, поэтому они требуют также знания аналоговой схемотехники, существенно отличающейся от цифровой. Практическое применение ЦАП и АЦП требует расчета аналоговых цепей, учета многочисленных погрешностей преобразования (как статических, так и динамических), знания характеристик и особенностей аналоговых микросхем (в первую очередь, операционных усилителей) и многого другого, что далеко выходит за рамки этой книги. Существует обширная литература, специально посвященная именно вопросам применения ЦАП и АЦП. Поэтому в данной лекции мы не будем говорить о специфике выбора и принципах включения конкретных микросхем ЦАП и АЦП мы будем рассматривать только основные особенности методов соединения ЦАП и АЦП с цифровыми узлами. Нас будет в первую очередь интересовать организация цифровых узлов, предназначенных для соединения с ЦАП и АЦП. Применение ЦАП В общем случае микросхему ЦАП можно представить в виде блока (рис. 13.1), имеющего несколько цифровых входов и один аналоговый вход, а также аналоговый выход. Рис. 13.1. Микросхема ЦАП На цифровые входы ЦАП подается n-разрядный код N, на аналоговый вход — опорное напряжение Uоп (другое распространенное обозначение — UREF). Выходным сигналом является напряжение Uвых (другое обозначение — UO) или ток Iвых (другое обозначение — IO). При этом выходной ток или выходное напряжение пропорциональны входному коду и опорному напряжению. Для некоторых микросхем опорное напряжение должно иметь строго заданный уровень, для других допускается менять его значение в широких пределах, в том числе и изменять его полярность (положительную на отрицательную и наоборот). ЦАП с большим диапазоном изменения опорного напряжения называется умножающим ЦАП, так как его можно легко использовать для умножения входного кода на любое опорное напряжение. Кроме информационных сигналов, микросхемы ЦАП требуют также подключения одного или двух источников питания и общего провода. Обычно цифровые входы ЦАП обеспечивают совместимость со стандартными выходами микросхем ТТЛ. Чаще всего в случае, если ЦАП имеет токовый выход, его выходной ток преобразуется в выходное напряжение с помощью внешнего операционного усилителя и встроенного в ЦАП резистора RОС, один из выводов которого выведен на внешний вывод микросхемы (рис. 13.2). Поэтому, если не оговорено иное, мы будем в дальнейшем считать, что выходной сигнал ЦАП — напряжение UO. Рис. 13.2. Преобразование выходного тока ЦАП в выходное напряжение Суть преобразования входного цифрового кода в выходной аналоговый сигнал довольно проста. Она состоит в суммировании нескольких токов (по числу разрядов входного кода), каждый последующий из которых вдвое больше предыдущего. Для получения этих токов используются или транзисторные источники тока, или резистивные матрицы, коммутируемые транзисторными ключами. В качестве примера на рис. 13.3 показано 4-разрядное (n = 4) цифро-аналоговое преобразование на основе резистивной матрицы R–2R и ключей (в реальности используются ключи на основе транзисторов). Правому положению ключа соответствует единица в данном разряде входного кода N (разряды D0…D3). Операционный усилитель может быть как встроенным (в случае ЦАП с выходом по напряжению), так и внешним (в случае ЦАП с выходом по току). Рис. 13.3. 4-разрядное цифро-аналоговое преобразование Первым (левым по рисунку) ключом коммутируется ток величиной UREF/2R, вторым ключом — ток UREF/4R, третьим — ток UREF/8R, четвертым — ток UREF/16R. То есть токи, коммутируемые соседними ключами, различаются вдвое, как и веса разрядов двоичного кода. Токи, коммутируемые всеми ключами, суммируются и преобразуются в выходное напряжение с помощью операционного усилителя с сопротивлением RОС=R в цепи отрицательной обратной связи. При правом положении каждого ключа (единица в соответствующем разряде входного кода ЦАП) ток, коммутируемый этим ключом, поступает на суммирование. При левом положении ключа (нуль в соответствующем разряде входного кода ЦАП) ток, коммутируемый этим ключом, на суммирование не поступает. Суммарный ток IO от всех ключей создает на выходе операционного усилителя напряжение UO=IO RОС=IOR. То есть вклад первого ключа (старшего разряда кода) в выходное напряжение составляет UREF/2, второго — UREF/4, третьего — UREF/8, четвертого — UREF/16. Таким образом, при входном коде N = 0000 выходное напряжение схемы будет нулевым, а при входном коде N = 1111 оно будет равно –15UREF/16. В общем случае выходное напряжение ЦАП при RОС = R будет связано со входным кодом N и опорным напряжением UREF простой формулой UВЫХ = –N • UREF 2-n где n — количество разрядов входного кода. Знак минус получается из-за инверсии сигнала операционным усилителем. Эту связь можно проиллюстрировать также табл. 13.1.
Таблица 13.1. Преобразование ЦАП в однополярном режиме
Входной код N Выходное напряжение UВЫХ
000…000
000…001 -2-n UREF
100…000 -2-1 UREF
111…111 -(1-2-n) UREF

Некоторые микросхемы ЦАП предусматривают возможность работы в биполярном режиме, при котором выходное напряжение изменяется не от нуля до UREF, а от –UREF до +UREF. При этом выходной сигнал ЦАП UВЫХ умножается на 2 и сдвигается на величину UREF. Связь между входным кодом N и выходным напряжением UВЫХ будет следующей:

UВЫХ=UREF(1–N•21–n)

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

Таблица 13.2. Преобразование ЦАП в биполярном режиме
Входной код N Выходное напряжение UВЫХ
000…000 UREF
011…111 2-n UREF
100…000
111…111 -(1-21-n) UREF

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

Иногда бывает необходимо уменьшить количество разрядов ЦАП. Для этого нужно подать сигналы логического нуля на нужное число младших разрядов ЦАП (но никак не старших разрядов). На рис. 13.4 показано, как из 10-разрядного ЦАП можно сделать 8-разрядный, подав нули на два младших разряда. Увеличение количества разрядов ЦАП представляет собой гораздо более сложную задачу, требующую построения сложных аналоговых схем, поэтому оно встречается довольно редко. Значительно проще подобрать микросхему с нужным или с большим, чем нужно, количеством разрядов.


Рис. 13.4. Уменьшение разрядности ЦАП


Рис. 13.5. Преобразование последовательности кодов в выходное напряжение

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

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

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

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

В простейшем случае в качестве источника входных кодов ЦАП можно использовать обычный двоичный счетчик (рис. 13.6). Выходное напряжение ЦАП будет нарастать при этом на величину 2-nUREF с каждым тактовым импульсом, формируя пилообразные выходные сигналы амплитудой UREF. Длительность каждой ступеньки равна периоду тактового генератора Т, а период всего выходного сигнала равен 2nТ. Количество ступенек в периоде выходного сигнала равно 2n. Если в данной схеме использовать синхронные счетчики с синхронным переносом, то входной регистр ЦАП не нужен, так как все разряды счетчика переключаются одновременно. Если же используются асинхронные счетчики или синхронные счетчики с асинхронным переносом, то входной регистр ЦАП необходим.


Рис. 13.6. Генератор пилообразного аналогового сигнала

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


Рис. 13.7. Генерация сигналов произвольной формы

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

Как и в предыдущем случае, выходной сигнал ЦАП будет состоять из ступенек, высота которых кратна 2-nUREF. Амплитуда выходного сигнала не превышает UREF. Если адреса памяти перебираются счетчиком, то период выходного аналогового сигнала равен 2mT, где T — период тактового сигнала чтения из памяти "–Чт.", а m — количество адресных разрядов памяти.


Рис. 13.8. Вычисление кодов выборок периодического сигнала

Если надо вычислить коды выборок для генерации какого-то периодического сигнала, то необходимо его период разделить на 2m частей и вычислить соответствующие 2m значений этого сигнала Ui. Затем надо пересчитать значения сигнала в коды по формуле Ni =2nUi/A где A — амплитуда сигнала, и взять ближайшее целое значение кода. Нулевое значение сигнала даст при этом нулевой код 000…000, максимальное значение сигнала (равное амплитуде А) даст максимальный код 111…111. В результате подачи этих кодов на ЦАП с периодом Т будет генерироваться аналоговый сигнал требуемой формы с амплитудой, равной UREF и с периодом TВЫХ=2mТ. Пример такого вычисления проиллюстрирован рис. 13.8.

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

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

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


Рис. 13.9. Аттенюатор аналогового сигнала на ЦАП

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

UВЫХ=–UВХ•N2-n

то есть выходной сигнал пропорционален входному (с инверсией), а коэффициент пропорциональности определяется входным цифровым кодом N. Коэффициент пропорциональности изменяется в данном случае от нуля и почти до единицы с шагом, равным 2-n.

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


Рис. 13.10. Управляемый усилитель входного сигнала

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

В этом случае выходной ток ЦАП равен величине UВХ/RОС, а так как в качестве опорного напряжения используется выходное напряжение, то получается, что выходное напряжение связано со входным по формуле

UВЫХ=–UВХ•N2-n/N

То есть коэффициент пропорциональности между выходным и входным напряжениями обратно пропорционален коду N. Код N может меняться в этом случае от 1 до (2n–1), что соответствует коэффициенту усиления от примерно единицы до 2n. Например, при 10-разрядном ЦАП коэффициент усиления схемы может достигать 1024.

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


Рис. 13.11. Последовательное включение аттенюатора и усилителя

Используя последовательное включение схем рис. 13.9 и рис. 13.10, можно обеспечить приведение к стандартному уровню входного напряжения, изменяемого в очень широких пределах (рис. 13.11). Такая задача часто встречается в аналого-цифровых системах. Коэффициент передачи всей схемы будет равен отношению входных кодов обоих ЦАП N/M и может быть установлен с высокой точностью как в диапазоне от 0 до 1 (аттенюатор), так и в диапазоне от 1 до 2n (усилитель). На схеме не показаны входные регистры обоих ЦАП, но они также нужны.

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


Рис. 13.12. Схема управляемого сдвига аналогового сигнала

Схема сдвига (рис. 13.12) включает в себя преобразователь цифрового кода в выходное напряжение и аналоговый сумматор на операционном усилителе. Величина напряжения сдвига входного сигнала будет равна UREF•2-nN . Поскольку применяются два инвертирующих операционных усилителя, инверсии входного сигнала на выходе в данном случае не будет. Если нужен как положительный, так и отрицательный сдвиг, то необходимо применять ЦАП с биполярным выходным сигналом.

Применение АЦП

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

Часто микросхема АЦП имеет также вход для подачи тактового сигнала CLK, сигнал разрешения работы CS и сигнал, говорящий о готовности выходного цифрового кода RDY. На микросхему подается одно или два питающих напряжения и общий провод. В целом микросхемы АЦП сложнее, чем микросхемы ЦАП, их разнообразие заметно больше, и поэтому сформулировать для них общие принципы применения сложнее.


Рис. 13.13. Микросхема АЦП

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

Выходной цифровой код N (n-разрядный) однозначно соответствует уровню входного напряжения. Код может принимать 2n значений, то есть АЦП может различать 2n уровней входного напряжения. Количество разрядов выходного кода n представляет собой важнейшую характеристику АЦП. В момент готовности выходного кода выдается сигнал окончания преобразования RDY, по которому внешнее устройство может читать код N.

Управляется работа АЦП тактовым сигналом CLK, который задает частоту преобразования, то есть частоту выдачи выходных кодов. Предельная тактовая частота — второй важнейший параметр АЦП. В некоторых микросхемах имеется встроенный генератор тактовых сигналов, поэтому к их выводам подключается кварцевый генератор или конденсатор, задающий частоту преобразования. Сигнал CS разрешает работу микросхемы.

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


Рис. 13.14. Компаратор напряжения

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


Рис. 13.15. АЦП последовательного типа

Существует два основных принципа построения АЦП: последовательный и параллельный.

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

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

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

  • В первом такте входной сигнал сравнивается с половиной опорного напряжения.
  • Если входной сигнал меньше половины опорного напряжения, то на следующем такте он сравнивается с четвертью опорного напряжения (то есть половина опорного напряжения уменьшается на четверть). Одновременно в регистр последовательных приближений записывается старший разряд выходного кода, равный нулю.
  • Если же входной сигнал больше половины опорного напряжения, то на втором такте он сравнивается с 3/4 опорного напряжения (то есть половина увеличивается на четверть). Одновременно в регистр последовательных приближений записывается старший разряд выходного кода, равный единице.
  • Затем эта последовательность сравнений повторяется нужное число раз с уменьшением на каждом такте вдвое ступени изменения эталонного напряжения (на третьем такте — 1/8 опорного напряжения, на четвертом — 1/16 и т.д.). В результате опорное напряжение в каждом такте приближается к входному напряжению. Всего преобразование занимает n тактов. В последнем такте вычисляется младший разряд.

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

Второй тип АЦП — АЦП параллельного типа — работает по более простому принципу. Все разряды выходного кода вычисляются в них одновременно (параллельно), поэтому они гораздо быстрее, чем последовательные АЦП. Правда, они требуют применения большого количества компараторов (2n–1), что вызывает чисто технологические трудности при большом количестве разрядов (например, при 12-разрядном АЦП требуется 4095 компараторов).

Схема такого АЦП (рис. 13.16) включает в себя резистивный делитель из 2n одинаковых резисторов, который делит опорное напряжение на (2n–1) уровней.


Рис. 13.16. 3-разрядный АЦП параллельного типа

Входное напряжение сравнивается с помощью компараторов с уровнями, формируемыми делителем напряжения. Выходные сигналы компараторов с помощью шифратора преобразуются в n-разрядный двоичный код. Шифратор выдает на выход номер последнего из сработавших (то есть выдавших сигнал логической единицы) компараторов. Например, в случае 3-разрядного АЦП (на рисунке) при величине входного напряжения от 0 до 1/8 опорного напряжения выходной код будет 000, при входном напряжении от 1/8 до 2/8 опорного напряжения сработает первый компаратор, что даст выходной код 001, при входном напряжении от 2/8 до 3/8 опорного напряжения сработают компараторы 1 и 2, что даст выходной код 010, и т.д. Процесс преобразования происходит в параллельном АЦП очень быстро, поэтому частота преобразования может достигать сотен мегагерц.

Для повышения быстродействия в параллельном АЦП иногда применяется конвейерный принцип: выходной код компараторов записывается в (2n–1)-разрядный параллельный регистр, показанный на рис. 13.16. Выходной код шифратора также записывается в n-разрядный параллельный регистр. Оба регистра в этом случае тактируются одним и тем же тактовым сигналом. Это снижает требования к быстродействию компараторов и шифратора. Правда, выходной код АЦП задерживается из-за таких регистров на два периода таковой частоты.

Громоздкость структуры параллельного АЦП приводит к тому, что в некоторых АЦП применяется смешанный параллельно-последовательный принцип. Это несколько снижает быстродействие подобного АЦП по сравнению с обычным параллельным АЦП, но зато позволяет получить большое число разрядов, не увеличивая количество компараторов до (2n–1).

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

На рис. 13.17 показано четыре возможных случая соотношения динамического диапазона АЦП (от 0 до UREF или от UREF1 до UREF2) и входного сигнала. В случаях а и б входной сигнал меньше динамического диапазона, поэтому АЦП будет работать правильно, но не будет использовать всех своих возможностей. В случае в входной сигнал слишком большой, поэтому часть его значений не будет преобразована. Только в случае г АЦП действительно будет работать как n-разрядный и будет преобразовывать все значения входного сигнала. Для согласования входного сигнала с динамическим диапазоном АЦП можно применять усилители, аттенюаторы, схемы сдвига. В некоторых случаях согласование может быть достигнуто простым выбором величин опорных напряжений.


Рис. 13.17. Соотношение входного сигнала и динамического диапазона АЦП


Рис. 13.18. Уменьшение количества разрядов выходного кода АЦП

Иногда бывает необходимо уменьшить количество разрядов АЦП. В этом случае нужное количество младших разрядов выходного кода микросхемы просто не используется. На рис. 13.18 показано использование 10-разрядного АЦП в качестве 8-разрядного.

Обратная задача — увеличение разрядности АЦП — встречается чаще. Существует ряд типичных схемотехнических решений по объединению нескольких микросхем АЦП для увеличения количества разрядов выходного кода, но большинство этих решений требует сложных расчетов результирующих погрешностей преобразования и применения аналоговых узлов. Мы не будем их здесь рассматривать. Отметим только, что при возникновении задачи увеличения разрядности надо прежде всего попытаться найти микросхему с нужным количеством разрядов, и только потом рассматривать возможности объединения нескольких микросхем АЦП.

Рассмотрим несколько типичных схем включения АЦП, используемых в аналого-цифровых системах.


Рис. 13.19. Фиксатор превышения входным сигналом установленного порога

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

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

АЦП также применяется в схемах вычисления амплитуды входного аналогового сигнала. Для такого вычисления можно использовать уже рассмотренную схему вычислителя экстремального значения входного кода (см. рис. 8.9). В качестве источника последовательности входных кодов в данном случае выступает АЦП (рис. 13.20).


Рис. 13.20. Вычислитель амплитуды аналогового сигнала

В регистр со входом разрешения записи записывается код с выхода АЦП по сигналу RDY в том случае, если текущее значение кода больше значения кода, записанного ранее в регистр. В результате уже после одного периода входного сигнала в регистре будет код амплитуды входного сигнала. За период преобразования АЦП должны успеть сработать компаратор кодов и регистр.

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


Рис. 13.21. Включение буферной памяти для запоминания кодов с выходов АЦП

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

Схема включения АЦП в этом случае показана на рис. 13.21. В качестве строба записи в буферную память используется сигнал RDY с АЦП. Подробнее организацию буфера мы уже рассматривали в предыдущей лекции.

Конечно, в реальных аналого-цифровых устройствах все гораздо сложнее, в них требуются схемы синхронизации процесса записи со входным сигналом, схемы предварительной обработки аналогового сигнала, но суть остается той же — буферная память, записывающая последовательность кодов с выхода АЦП. Чем больше объем памяти, тем больший фрагмент входного аналогового сигнала она может запомнить. Например, если память имеет организацию 64Кх8 и работает с 8-разрядным АЦП, то при частоте преобразования АЦП 10 МГц буфер сможет хранить в себе фрагмент аналогового сигнала длительностью 6,5536 мс.

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


Рис. 13.22. Увеличение вдвое частоты преобразования входного сигнала с помощью двух АЦПс буферами

Идея схемы очень проста: используется два АЦП и два буфера, которые работают по очереди, например, четные выборки входного сигнала обрабатывает один АЦП со своим буфером, а нечетные — другой АЦП со своим буфером. В результате запоминание кодов входного сигнала осуществляется с частотой вдвое больше частоты преобразования каждого из АЦП. Например, если каждый АЦП и каждый буфер работают с частотой 10 МГц, то результирующая частота преобразования составит 20 МГц.

Тактовые сигналы АЦП и сигналы RDY на выходах АЦП должны быть сдвинуты один относительно другого на половину периода тактового сигнала. Чтение зарегистрированных кодов из обоих буферов также должно быть организовано по очереди: первый код читается из первого буфера, второй — из второго, третий — опять из первого, четвертый — из второго и т.д. Объем обоих буферов в данном случае складывается. Например, при организации каждого буфера 64Кх8 результирующий буфер будет иметь организацию 128Кх8.

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

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

Такой подход позволяет с помощью сравнительно простых аппаратных средств получить высокую точность преобразования, не зависящую от многих параметров используемых компонентов и от характеристик окружающей среды. Измерение временных интервалов и частоты следования импульсов осуществляется простейшими цифровыми схемами, примеры которых приведены в лекциях 9, 10. Измерения эти могут осуществляться с высокой точностью вследствие того, что существует очень хороший временной эталон — кварцевый генератор. Отметим, что достоинством ПНЧ является также возможность простой передачи его выходного цифрового сигнала на большие расстояния.


Рис. 13.23. АЦП с промежуточным преобразованием

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

 

14. Лекция: Разработка простых цифровых устройств: версия для печати и PDA В лекции подробно рассматриваются примеры разработки простых цифровых устройств — клавиатуры и вычислителя контрольной суммы, начиная от анализа функций устройств и выделения основных узлов до проектирования принципиальных схем узлов и устройства в целом.
В предыдущих лекциях были рассмотрены базовые элементы цифровой схемотехники и простейшие приемы проектирования узлов на их основе. Но для разработки сложных устройств и систем всех этих знаний порой оказывается недостаточно. Чтобы создать сложное устройство, необходимо еще владеть приемами системотехники, то есть уметь на основании анализа функций, которые должно выполнять устройство в целом, спроектировать его структуру, сформулировать принципы взаимодействия узлов, четко определить все задачи, которые должен решать каждый из узлов, выработать требования к отдельным узлам. Возможно, в результате всех этих шагов будет изменена сама первоначальная задача, будут переформулированы требования к создаваемому устройству, к его месту в системе, к принципам его взаимодействия с другими устройствами. И только потом, после всей этой предварительной работы уже можно переходить к разработке узлов, собственно к схемотехнике. Приемы системотехники сформулировать, формализовать, описать, даже перечислить гораздо сложнее, чем приемы схемотехники. Да и пользы от такой формализации зачастую немного. Проектирование сложного, надежно работающего цифрового устройства с минимальными аппаратными затратами сродни искусству и требует от разработчика определенных способностей, даже таланта. Научить этому практически невозможно. Более того, попытка научить системотехнике может даже принести вред, так как ограничит творческие способности разработчика несколькими жесткими стандартными алгоритмами. Однако можно показать несколько простейших примеров разработки, продемонстрировать последовательность шагов, которые необходимы при проектировании, которые могут встретиться в процессе создания устройств некоторых распространенных типов. Исходя из этих примеров, разработчик может в дальнейшем попробовать по аналогии создать что-то свое, более или менее совершенное, но обязательно работоспособное. Поэтому в данной лекции как раз и будут подробно рассмотрены несколько простых примеров проектирования сравнительно сложных устройств на всех этапах: от анализа решаемой задачи до создания полной принципиальной схемы. Примеры эти, конечно, не отражают и малой доли всех реально встречающихся задач, но относятся к различным классам цифровых устройств. Разработка клавиатуры Различные клавиатуры с большим количеством клавиш (кнопок) широко используются в цифровых системах: в компьютерах, контроллерах, измерительных приборах, в бытовой технике. Основная задача любой клавиатуры довольно проста: она должна при любом нажатии на клавишу выдавать код номера этой клавиши и сигнал флага нажатия клавиши (строб этого кода). Получив этот сигнал флага, внешнее устройство читает код нажатой клавиши и предпринимает требуемые действия. Главная задача при проектировании клавиатуры состоит в минимизации аппаратных затрат и в обеспечении надежного срабатывания в любой ситуации. Существует масса схемотехнических решений этой задачи — от примитивных до сложнейших. Клавиатуры могут быть механическими, квазисенсорными или сенсорными, клавиатуры могут иметь жесткую логику работы или быть интеллектуальными, даже допускать перепрограммирование. Мы будем в качестве примера рассматривать самую простую механическую клавиатуру с жесткой логикой работы. Количество клавиш полноразмерной клавиатуры компьютера превышает сотню, поэтому мы будем проектировать клавиатуру на максимальное количество клавиш, равное 128. Естественно, клавиатура должна иметь защиту от дребезга механических контактов и должна корректно обрабатывать ситуацию одновременного нажатия нескольких клавиш. Примем, например, что при одновременном нажатии нескольких клавиш клавиатура должна выдавать код только одной из них. Примем также, что максимально возможный темп нажатия клавиш на клавиатуре не должен превышать 20 нажатий в секунду (это довольно много). Таким образом, основные требования к проектируемому устройству сформулированы. Начнем разработку. Очень часто удобным и эффективным приемом является начало разработки устройства "с конца". То есть проектирование начинается исходя из требуемого результата, из тех сигналов, которые устройство должно выдавать вовне и принимать извне. И только в конце проектирования разрабатывается та часть устройства, которая выполняет требуемую функцию. Такой подход гарантирует, что разработанное устройство не будет чрезмерно избыточным, не будет делать ничего лишнего, а также то, что оно корректно будет взаимодействовать с другими устройствами и системами. Этот принцип проектирования не универсален, порой выдержать его в течение всего процесса разработки трудно, но попробовать его применить к любому устройству никогда не помешает. В нашем случае необходимо сначала определиться, что должна выдавать вовне клавиатура. Обычно это задается техническим заданием, но мы примем, что наша клавиатура должна выдавать 7-разрядный двоичный номер нажатой клавиши (так как 27 = 128) и сопровождать его положительным сигналом флага нажатия. Сигнал флага и код клавиши должны сохраняться до тех пор, пока нажата клавиша. За это время (несколько миллисекунд) внешнее устройство должно успеть проанализировать сигнал флага и прочитать выходной код клавиатуры. Обычно данное требование не слишком жесткое. Альтернативное решение — сохранение кода нажатой клавиши и сигнала флага до момента чтения выходного кода внешним устройством — конечно же, снижает требование к быстродействию читающего внешнего устройства, однако оно может привести к тому, что некоторые нажатия клавиш останутся без реакции, не будут обработаны. Также необходимо определиться, как клавиатура будет вести себя при одновременном нажатии нескольких клавиш. Наиболее сложные, интеллектуальные клавиатуры выдают последовательно коды всех нажатых клавиш, запоминая их в буферной памяти. Но мы примем, что клавиатура должна выдавать только код одной из одновременно нажатых клавиш (первой по установленному порядку). Нажатия всех остальных клавиш одновременно с данной просто игнорируются. При проектировании механической клавиатуры важно решить, как будет обрабатываться неизбежно присутствующий дребезг механических контактов клавиш. Его можно обрабатывать как внутри клавиатуры, так и вне ее (то есть перенести эту функцию на внешнее устройство). Оба эти подхода имеют свои преимущества. Но наша клавиатура будет обрабатывать дребезг контактов самостоятельно. Принцип обработки выбираем очень простой: первое зафиксированное замыкание контактов клавиши считается началом нажатия, а конец нажатия определяется тогда, когда контакты будут разомкнуты в течение заданного интервала времени. В результате временная диаграмма работы разрабатываемой клавиатуры может быть упрощенно представлена в виде рис. 14.1. Здесь сигнал флага начинается при фиксации единичного сигнала с клавиши (это может быть как во время дребезга, так и после его окончания). После выставления флага фиксируется выходной код клавиши. После отпускания клавиши (нулевой сигнал), через время задержки tзад снимается сигнал флага. Время задержки должно быть заведомо больше времени дребезга контактов. Выходной код может сохраняться после отпускания клавиши до следующего нажатия, а может и сниматься. Рис. 14.1. Временная диаграмма работы клавиатуры Дальнейшая разработка невозможна без выбора принципа преобразования сигналов от нажатия клавиш в код номера нажатой клавиши. Простейшим путем построения подобного преобразователя является использование приоритетных шифраторов (рис. 14.2). Каждая клавиша дает свой логический сигнал, сигналы от всех клавиш преобразуются шифратором в код номера клавиши. Однако такой простейший подход хорош только при небольшом количестве клавиш (до 8 или до 16), так как при большом количестве входов приоритетный шифратор получается довольно сложным. При малом количестве клавиш дребезг контактов обычно устраняется отдельно для каждой клавиши с помощью RS-триггера (как это показано на рисунке). Это решение простое, но требующее больших аппаратурных затрат. Рис. 14.2. Простейший преобразователь для клавиатуры Другим путем построения преобразователя является использование так называемой коммутационной матрицы, состояние которой периодически опрашивается с частотой тактового генератора. Коммутационная матрица представляет собой две группы пересекающихся проводников (строки и столбцы), во всех точках пересечения которых находятся клавиши. В данном случае каждая клавиша не формирует своего отдельного логического сигнала, а только коммутирует (соединяет) одну из строк матрицы с одним из ее столбцов. Наиболее универсальная схема преобразователя, легко наращиваемая и достаточно простая, приведена на рис. 14.3. Для опроса коммутационной матрицы применяется счетчик, тактируемый генератором. Старшие разряды счетчика используются для выбора одной из строк матрицы с помощью дешифратора (на выбранную строку поступает сигнал логического нуля, на невыбранную — сигнал логической единицы). Младшие разряды счетчика используются для опроса столбцов матрицы с помощью мультиплексора. Сигнал с опрашиваемого столбца подается на выход мультиплексора. Признаком нажатия клавиши является нулевой сигнал на выходе мультиплексора. В этот момент на выходах счетчика присутствует код номера нажатой клавиши. Такая схема легко позволяет строить клавиатуры на большое количество клавиш (до 256, как на рисунке, и даже больше), однако она требует довольно большого времени для полного опроса клавиатуры (так как количество тактов опроса равно полному количеству клавиш). Рис. 14.3. Преобразователь с опросом всех клавиш Совмещение двух рассмотренных подходов позволяет создавать достаточно большие клавиатуры с малыми аппаратурными затратами и малым временем опроса. При таком комбинированном методе (рис. 14.4) также используется коммутационная матрица с клавишами на всех пересечениях строк и столбцов, но опрашиваются не все клавиши по очереди, а только строки (или столбцы) матрицы. Для опроса, как и в предыдущем случае, применяются генератор, счетчик и дешифратор. Положение же нажатой клавиши в строке (или в столбце) определяется с помощью шифратора. Код нажатой клавиши образуется из выходного кода счетчика (старшие разряды) и кода с выхода шифратора (младшие разряды). В нашем случае клавиатура имеет 128 клавиш, то есть коммутационная матрица должна состоять из 16 строк, опрашиваемых дешифратором 4–16 (ИД3), и 8 столбцов, сигналы с которых обрабатываются шифратором 8–3 (ИВ1). Счетчик должен иметь 4 разряда (ИЕ7). Эти 4 разряда и 3 разряда с выхода шифратора дадут 7-разрядный номер нажатой клавиши. Полный цикл опроса клавиатуры будет занимать 16 тактов генератора (по числу строк). Признаком нажатия одной из клавиш будет отрицательный сигнал на выходе –GS шифратора. Если нажато несколько клавиш в разных строках, то обрабатываться будет та клавиша, строка которой будет опрошена первой. Если нажато несколько клавиш в одной строке, то шифратор выдаст код клавиши, соответствующей большему номеру входа. Надо также учитывать, что шифратор ИВ1 выдает инверсный номер входа, на который пришел нулевой сигнал, — эта особенность может потребовать применения трех выходных инверторов (на рисунке не показаны). Рис. 14.4. Преобразователь с опросом строк клавиш Оценим, какой должна быть частота тактового генератора. Мы приняли, что максимальная скорость нажатия равна 20 раз в секунду. Значит, за 1/20 секунды надо успеть опросить всю клавиатуру, то есть все 16 строк. Таким образом, минимально допустимая тактовая частота составляет 16•20 = 320 Гц. Но надо заложить и запас на обработку дребезга контактов. Поэтому примем тактовую частоту опроса равной 400 Гц. Она может быть и больше, но чрезмерно увеличивать ее (например, выше 1 кГц) не стоит, так как при быстром переключении микросхем увеличивается потребляемый схемой ток. Понятно, что генератор должен быть не кварцевым, так как кварцевые резонаторы на низкие частоты не выпускаются, а делитель частоты резко усложнит схему. К тому же точная выдержка частоты генератора в данном случае совершенно не нужна. Выходной сигнал "–Нажатие", конечно же, будет иметь короткие паразитные импульсы. Во-первых, они будут возникать из-за дребезга контактов нажатой в данный момент клавиши. Во-вторых, они могут появляться из-за переходных процессов при переключении счетчика и дешифратора. Эти паразитные импульсы надо исключать. Чтобы исключить действие паразитных импульсов из-за переходных процессов при переключении счетчика и дешифратора достаточно применить стробирование или тактирование сигнала "–Нажатие" в середине каждого тактового интервала. Для этого из схемы преобразователя надо вывести сигнал "–Такт". Исключение коротких выходных импульсов из-за дребезга контактов клавиш сложнее. Прежде всего, на время нажатия клавиши целесообразно остановить опрос строк с помощью сигнала "–Запрет". Затем надо обработать сигнал "?Нажатие" по принципу, показанному на рис. 14.1. Будем считать, что при дребезге контактов длительность кратковременного размыкания не превышает периода тактового генератора (2,5 мс при тактовой частоте 400 Гц). Тогда задержка окончания сигнала флага нажатия (см. рис. 14.1) должна быть не менее одного периода тактового сигнала. Для выработки задержки можно использовать цепочку триггеров, тактируемых сигналом "–Такт". Схема выработки выходных сигналов клавиатуры приведена на рис. 14.5. Рис. 14.5. Схема выработки выходных сигналов клавиатуры Триггер Т1 перебрасывается в единицу (на инверсном выходе) тогда, когда в середине тактового интервала (по положительному фронту сигнала "–Такт") сигнал "–Нажатие" нулевой. Своим выходным сигналом триггер Т1 перебрасывает в единицу триггер Т2, который уже никак не связан с сигналом "–Нажатие", не реагирует ни на какой дребезг этого сигнала. Выходной сигнал триггера Т2 используется в качестве сигнала флага нажатия клавиатуры. Инверсный сигнал с выхода триггера Т2 используется в качестве сигнала "–Запрет", останавливающего опрос строк клавиатуры. Цепочка триггеров Т3 и Т4, тактируемая сигналом "Такт", служит для задержки снятия сигнала флага после отпускания клавиши (когда сигнал "–Нажатие" становится равным единице). После установки флага в единицу, сигнал флага начинает записываться по фронту сигнала "–Такт" в триггеры Т3 и Т4, но только в том случае, когда сигнал "–Нажатие" установлен в единицу. В результате на инверсном выходе триггера Т4 появится сигнал логического нуля при нахождении сигнала "–Нажатие" в единице в моменты двух последовательных положительных фронтов сигнала "–Такт". Сигнал с выхода Т4 сбрасывает сигнал флага в нуль, после чего вся схема переходит в исходное состояние и ждет следующего нулевого сигнала "–Нажатие". Если кратковременное размыкание при дребезге контактов клавиш длится более 2,5 мс, то можно увеличить количество триггеров в последовательной цепочке (Т3 и Т4), что приведет к увеличению задержки снятия сигнала флага на целое число тактов генератора. Таким образом, схема полностью разработана. Отметим, что низкая тактовая частота работы схемы позволяет нам не рассчитывать задержек микросхем, то есть использовать только первый уровень представления, логическую модель. А эффекты, связанные с переходными процессами при переключении микросхем, мы устранили, обеспечив временной сдвиг на половину периода генератора между тактовыми сигналами схемы преобразователя (рис. 14.4) и схемы выработки выходных сигналов (рис. 14.5). Все резисторы, примененные в схеме, должны быть номиналом около 1 кОм. Разработка вычислителя контрольной суммы Различные контрольные суммы широко применяются в цифровых устройствах и системах для контроля правильности хранения или передачи массивов информации. Суть этого метода контроля проста: к хранимому или передаваемому информационному массиву присоединяется небольшой контрольный код (обычно от 1 разряда до 32 разрядов), в котором в свернутом виде содержится информация обо всем массиве. При чтении или получении этого массива еще раз вычисляется тот же самый контрольный код по тому же самому алгоритму. Если этот вновь вычисленный код равен тому коду, который был присоединен к массиву, то считается, что массив сохранен или передан без ошибок. Логика здесь следующая: контрольный код (он же контрольная сумма) гораздо меньше контролируемого массива, поэтому вероятность искажения контрольной суммы гораздо меньше, чем вероятность искажения массива. Если же исказятся как массив, так и контрольная сумма, то вероятность того, что эти искажения не будут замечены при повторном подсчете контрольной суммы, крайне мала. Существует, правда, вероятность, что массив будет искажен в нескольких местах таким образом, что контрольная сумма от этих искажений никак не изменится, но такая вероятность также обычно мала. Контрольные суммы применяются при хранении данных в памяти (оперативной и постоянной), при хранении данных на магнитных носителях (дисках, лентах), в локальных и глобальных сетях пере



©2015 studenchik.ru Все права принадлежат авторам размещенных материалов.