Микропрограммные автоматы на ПЗУ
Микропрограммные автоматы представляют собой следующий шаг по пути усложнения интеллекта цифровых схем. На основе микропрограммных автоматов можно строить устройства, которые работают по довольно сложным алгоритмам, выполняют различные функции, определяемые входными сигналами, выдают сложные последовательности выходных сигналов. При этом алгоритм работы микропрограммного автомата может быть легко изменен заменой прошивки ПЗУ.
В отличие от рассматривавшихся ранее устройств на "жесткой" логике, принцип работы которых однозначно определяется используемыми элементами и способом их соединения, микропрограммные автоматы с помощью одной и той же схемы могут выполнять самые разные функции. То есть они гораздо более гибкие, чем схемы на "жесткой" логике. К тому же проектировать микропрограммные автоматы с точки зрения схемотехники довольно просто. Недостатком любого микропрограммного автомата по сравнению со схемами на "жесткой" логике является меньшее предельное быстродействие и необходимость составления карты прошивки ПЗУ с микропрограммами, часто довольно сложными.
Наиболее распространенная структура микропрограммного автомата (рис. 11.15) включает в себя всего лишь три элемента: ПЗУ, регистр, срабатывающий по фронту, и тактовый генератор.
Рис. 11.15. Структура микропрограммного автомата
ПЗУ имеет (L+M) адресных разрядов и N разрядов данных. Регистр применяется с количеством разрядов (N + L). Разряды данных ПЗУ записываются в регистр по положительному фронту тактового сигнала с генератора. Часть этих разрядов (М) используется для образования адреса ПЗУ, другая часть (N-M) служит для формирования выходных сигналов. Входные сигналы (L) поступают на входы регистра и используются совместно с частью выходных разрядов ПЗУ для получения адреса ПЗУ.
Схема работает следующим образом. В каждом такте ПЗУ выдает код данных, тем самым определяя не только состояние выходных сигналов схемы, но и адрес ПЗУ, который установится в следующем такте (после следующего положительного фронта тактового сигнала).
На этот следующий адрес влияют также и входные сигналы. То есть в отличие от формирователя последовательности сигналов, рассмотренного в предыдущем разделе, в данном случае адреса могут перебираться не только последовательно (с помощью счетчика), но и в произвольном порядке, который определяется прошивкой ПЗУ, называемой микропрограммой.
Условием правильной работы схемы будет следующее. За один период тактового сигнала должны успеть сработать регистр и ПЗУ. Иначе говоря, сумма задержки регистра и задержки выборки адреса ПЗУ не должна превышать периода тактового сигнала. Отметим также, что входные сигналы микропрограммного автомата нельзя подавать непосредственно на адресные входы ПЗУ (без регистра), так как их асинхронное (по отношению к тактовому сигналу) изменение может вызвать переходный процесс на выходах данных ПЗУ именно в тот момент, когда выходные сигналы ПЗУ записываются в регистр. В результате в регистр может записаться неверная информация, что нарушит работу всей схемы. Регистр же синхронизирует изменения входных сигналов с тактовым сигналом, в результате чего все разряды кода адреса ПЗУ меняется одновременно — по положительному фронту тактового сигнала. Регистр должен обязательно срабатывать по фронту, использование регистра-защелки не допускается, так как он может вызвать лавинообразный переходный процесс.
Возможности такой простой схемы оказываются очень большими. Например, микропрограммный автомат может выдавать последовательности выходных сигналов в ответ на определенное изменение входных сигналов. Он может также временно остановить выдачу выходных сигналов до прихода входных сигналов. Он может анализировать длительность входного сигнала и в зависимости от нее выдавать те или иные выходные сигналы. Он может также и многое другое.
Сформулируем несколько элементарных функций, из которых могут складываться алгоритмы работы микропрограммного автомата (рис. 11.16):
Рис. 11.16. Элементарные функции микропрограммного автомата: последовательный перебор (а), циклическое повторение (б) и остановка (в)
Последовательный перебор адресов ПЗУ (например, для выдачи последовательности выходных сигналов). Периодическое повторение последовательности адресов ПЗУ (например, для повторения последовательности выходных сигналов).Остановка в каком-то адресе ПЗУ (например, для ожидания изменения входного сигнала).Временное отключение реакции на входные сигналы (например, для того, чтобы закончить отработку реакции на предыдущее изменение входных сигналов). Эта функция на рисунке не показана.В качестве примера рассмотрим выполнение некоторых элементарных функций микропрограммным автоматом, показанным на рис. 11.17.
Рис. 11.17. Пример практической схемы микропрограммного автомата на ПЗУ
ПЗУ имеет организацию 64х8 (это могут быть две микросхемы РЕ3 или одна микросхема РТ18), количество разрядов регистра равно десяти (это могут быть две микросхемы ИР27). Схема имеет два входных сигнала и четыре выходных сигнала. Такая организация микропрограммного автомата хороша тем, что его микропрограмма (то есть карта прошивки ПЗУ) очень наглядна, легко составляется и читается.
FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF |
FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF |
FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF |
FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF | FF |
Прежде всего, легко заметить, что выбор той или иной строки таблицы производится старшими разрядами кода адреса ПЗУ, то есть входными сигналами микропрограммного автомата.
Таким образом, любое изменение входных сигналов приводит к переходу в карте прошивки на другую строку. Например, строка 00 будет соответствовать нулевым входным сигналам микропрограммного автомата, а строка 30 — единичным входным сигналам.
11 | 22 | 33 | 44 | 55 | 66 | 77 | 88 | 99 | AA | BB | CC | DD | EE | FF | 00 |
11 | 22 | 33 | 44 | 55 | 66 | 77 | 88 | 99 | 55 | BB | CC | DD | EE | FF | 00 |
10 | 21 | 32 | 43 | 54 | 65 | 76 | 87 | 98 | A9 | BA | CB | DC | ED | FE | 0F |
10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | A0 | B0 | C0 | D0 | E0 | F0 | 00 |
on_load_lecture()
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование |
Вторая сверху (первая) строка таблицы демонстрирует циклическое повторение группы тактов. Если, например, работа начинается с адреса 10, то микропрограммный автомат последовательно будет перебирать адреса 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, а затем вернется в адрес 15 и будет постоянно повторять группу адресов 15, 16, 17, 18, 19. В данном случае мы считаем, что входной сигнал "Вх. 1" постоянно равен единице, а входной сигнал "Вх. 2" постоянно равен нулю, что и соответствует второй сверху строке таблицы.
Посмотрим теперь, что будет делать автомат, если входной сигнал "Вх. 2" постоянно равен нулю, а входной сигнал "Вх.1" меняет свое состояние с нуля на единицу и обратно. Такое переключение входных сигналов приводит к переходу между нулевой и первой строками таблицы с микропрограммой. Допустим, автомат начинает работу с адреса 00 (сигнал "Вх. 1" равен нулю). Идет последовательный перебор адресов нулевой строки. Даже если в течение первых девяти тактов сигнал "Вх. 1" будет меняться, на выходных сигналах автомата это никак не отразится, так как коды первых девяти адресов в нулевой и первой строках полностью совпадают. Поэтому можно сказать, что в этих первых девяти тактах мы отключили реакцию нашего автомата на входной сигнал "Вх. 1" за счет дублирования кодов.
Допустим теперь, что изначально нулевой входной сигнал "Вх. 1" стал равен единице в адресе 0А и далее не меняется. Это приведет к тому, что вместо адреса 0В автомат перейдет в адрес 1В. Затем он пройдет адреса 1С...1F, перейдет в адрес 10, дойдет до адреса 19 и начнет повторять цикл 15...19. Если же, например, в адресе 18 сигнал "Вх. 1" снова станет равен нулю, то вместо адреса 19 автомат попадет в адрес 09 и далее будет выполнять микропрограмму нулевой строки.
Третья сверху (вторая) строка таблицы, которая соответствует входным сигналам Вх. 1 = 0, Вх.2 = 1, показывает пример остановки автомата в каждом адресе и ожидание прихода входного сигнала.
Например, автомат находится в адресе 23. Следующим адресом в коде данной ячейки указан 3. Значит, если входные сигналы остаются неизменными, то автомат перейдет опять же в адрес 23 и будет оставаться в нем постоянно. Но если входной сигнал "Вх.2" станет равным нулю, автомат перейдет в адрес 03 и начнет выполнять микропрограмму нулевой строки. То есть переключение входного сигнала "Вх.2" из нуля в единицу при нулевом уровне "Вх.1" останавливает выполнение микропрограммы нулевой строки до обратного перехода входного сигнала "Вх.2" в нуль.
Наконец нижняя (третья) строка таблицы демонстрирует переход из любого адреса строки в нулевой адрес этой же строки. Пусть, например, выполняется микропрограмма нулевой строки ("Вх. 1" и "Вх. 2" — нулевые) и в адресе 06 оба входных сигнала переходят в единицу. Автомат попадает в адрес 37, а из него — в адрес 30, где и остается постоянно до изменения входных сигналов. Если затем оба входных сигнала снова станут нулевыми, то автомат перейдет в адрес 00 и начнет снова выполнять микропрограмму нулевой строки таблицы.
Иногда бывает необходимо перевести автомат в какой-то определенный адрес. Ведь при включении питания в регистре может оказаться произвольный код. Для такой инициализации автомата можно, например, использовать регистр, имеющий вход сброса R, на который подается внешний сигнал, и тогда по этому сигналу автомат попадет в нулевой адрес. Но можно пойти и другим путем: составить микропрограмму таким образом, что автомат при включении питания сам перейдет за несколько тактов в нужный адрес независимо от того, в какой адрес он попал при включении питания.
Рассмотрим теперь пример проектирования простейшего микропрограммного автомата.
Пусть нам необходимо формировать с помощью микропрограммного автомата последовательность из трех выходных сигналов в ответ на положительный фронт одного входного сигнала (рис. 11.18).
Рис. 11.18. Диаграмма работы проектируемого микропрограммного автомата
Второй выходной сигнал "вложен" в первый, а третий "вложен" во второй. Причем до тех пор, пока данная последовательность не закончится, входной сигнал может произвольно менять свое состояние, на работе схемы это никак не должно сказываться. А после окончания данной последовательности микропрограммный автомат снова должен ждать положительного фронта входного сигнала и начинать по нему выработку новой последовательности.
Все временные сдвиги в выходной последовательности (t) примем для простоты одинаковыми и равными 1 мкс. Это значительно облегчает выбор тактовой частоты микропрограммного автомата, она должна быть равной 1 МГц (период 1 мкс). В этом случае полная длина генерируемой последовательности составит всего 6 тактов (один такт соответствует переходу всех выходных сигналов в единицу).
Для формирования 6-тактовой последовательности необходимо не менее 3 адресных разрядов ПЗУ (так как 22 = 4, а 23 = 8). Еще один разряд адреса ПЗУ потребуется для входного сигнала схемы. Итого необходимо 4 адресных разряда ПЗУ.
Для формирования трех выходных сигналов требуется три разряда данных ПЗУ. Еще три разряда данных ПЗУ нужно для задания следующего адреса при отработке выходной последовательности. Итого необходимо шесть разрядов данных ПЗУ.
Рис. 11.19. Спроектированный микропрограммный автомат
Посчитаем требуемую разрядность выходного регистра. ПЗУ выдает шесть разрядов данных. Имеется один входной сигнал. Итого регистр должен фиксировать 7 сигналов, значит, он должен быть 7-разрядным.
Итак, все расчеты закончены. Полученная схема микропрограммного автомата приведена на рис. 11.19. Она включает в себя тактовый генератор с частотой 1 МГц, микросхему ПЗУ типа РЕ3, у которой не используется один разряд адреса и два разряда данных, а также 8-разрядный регистр ИР27, у которого не используется один разряд. Для простоты на рисунке не показаны резисторы на выходах данных типа ОК микросхемы ПЗУ.
Теперь необходимо составить микропрограмму для спроектированной схемы.
Она должна включать в себя ожидание положительного фронта входного сигнала, отработку последовательности выходных сигналов с временным отключением входного сигнала, ожидание нулевого уровня входного сигнала и переход на новое ожидание положительного фронта входного сигнала. Полученная микропрограмма с необходимыми комментариями представлена в табл. 11.9.
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 38 | Ожидание полож. фронта Вх. |
8 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 19 | Пришел положительный фронт входного сигнала. Отработка последовательности. Входной сигнал равен единице. |
9 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0A | |
A | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 03 | |
B | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0C | |
C | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1D | |
D | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 3D | Ожидание Вх.=0 |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0A | Вх. стал равен нулю до окончания последовательности |
2 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 03 | |
3 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0С | |
4 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 18 | Переход на ожидание фронта |
5 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 38 | Переход на ожидание фронта |
6 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 38 | Не используемые ячейки |
7 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 38 | |
E | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 38 | |
F | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 38 |
Все неиспользуемые микропрограммным автоматом ячейки заполнены командами перехода в начальное состояние схемы с пассивными (единичными) выходными сигналами. Таким решением обеспечивается правильное начало работы микропрограммного автомата при любом начальном адресе (при любом начальном коде в регистре).
Начальный сброс автомата не используется.
Последний микропрограммный автомат, который мы рассмотрим в данном разделе, предназначен для дешифрации (декодирования) последовательного кода Манчестер-II, применяющегося для последовательной передачи данных на большие расстояния, в частности, в локальных сетях. Этот код уже упоминался в лекции 7 (см. рис. 7.16 и 7.17). Там был рассмотрен кодировщик кода Манчестер-II.
Дешифрация (декодирование) этого кода гораздо сложнее кодирования (рис. 11.20). Она требует выделения "правильных", информационных фронтов в середине битовых интервалов (помечены на рисунке кружками) и отсечение "неправильных" фронтов между битовыми интервалами (помечены на рисунке крестиками). Для этого нужно после первого (информационного) фронта в течение временного интервала 0,75Т не реагировать на приходящие фронты входного сигнала, а затем снова обрабатывать любой приходящий фронт, снова выдерживать интервал 0,75Т и т.д. При приходе "правильных", информационных фронтов (в середине битовых интервалов) необходимо формировать выходные синхросигналы, по которым фиксируется (в регистре) информация из сигнала в коде Манчестер-II.
Рис. 11.20. Декодирование кода Манчестер-II
Таким образом, алгоритм декодирования довольно сложен. Его можно, конечно, выполнить с помощью одновибраторов и триггеров. Но можно воспользоваться и микропрограммным автоматом, который, в отличие от одновибратора, не требует настройки, не чувствителен к помехам и тактируется сигналом кварцевого генератора.
Схема такого микропрограммного автомата (рис. 11.21) очень проста, она включает в себя ПЗУ типа РЕ3, регистр ИР27 и тактовый генератор с частотой, в 8 раз превышающей частоту прихода битов в коде Манчестер-II. Например, при длительности битового интервала 1 мкс (скорость передачи информации 1 Мбит/с) частота генератора должна быть равной 8 МГц. Схема практически не отличается от схемы, рассмотренной в предыдущем примере, хотя выполняемая ею функция гораздо сложнее.
Помимо синхросигнала ( его обычно обозначают RxC или С), микропрограммный автомат выдает также сигнал огибающей информационного пакета (Р), то есть сигнал, активный при наличии передачи информации в коде Манчестер-II и пассивный при отсутствии передачи информации (см. рис. 11.20). Сигнал С (RxC) стробирует запись сигнала данных RxD, представляющего собой просто входной сигнал в коде Манчестер-II, пропущенный через регистр.
Рис. 11.21. Микропрограммный автомат для декодирования кода Манчестер-II
Мы не будем подробно рассматривать составление микропрограммы для декодирования кода Манчестер-II, так как это заняло бы слишком много места. Достаточно только внимательно изучить табл. 11.10, содержащую микропрограмму с комментариями, чтобы понять, что в ней присутствуют и отключение реакции на входной сигнал, и выдержка временных интервалов (задержка), и переходы в заданные адреса, и остановки для ожидания положительного и отрицательного фронтов входного сигнала.
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | Задержка и ожидание положительного фронта входного сигнала |
0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | |
0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | |
1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | |
1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | Снятие Р и ожидание входного сигнала |
1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | Выставление R*C и переход на обработку положительного фронта входного сигнала |
1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | |
1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | |
1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | |
1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | Снятие R*C и задержка с отключением входа |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | |
0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | |
0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | Переход на ожидание положительного фронта |
1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | Снятие R*C и задержка с отключением входа |
1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | |
1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | |
1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | |
1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | Переход на ожидание положительного фронта |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | Задержка и ожидание отрицательного фронта входного сигнала |
1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | |
1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | |
1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | Снятие Р и ожидание входного сигнала |
0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | Выставление R*C и переход на обработку отрицательного фронта входного сигнала |
0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | |
0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | Переход на ожидание положительного фронта |
ПЗУ как универсальная комбинационная микросхема
Одно из самых распространенных применений микросхем ПЗУ — замена ими сложных комбинационных схем. Такое решение позволяет существенно упростить проектируемое устройство и снизить количество используемых комбинационных микросхем, а иногда даже уменьшить потребляемый ток и увеличить быстродействие схемы.
Суть предлагаемого подхода сводится к следующему. Если рассматривать адресные входы микросхемы ПЗУ как входы комбинационной схемы, а разряды данных — как выходы этой комбинационной схемы, то можно сформировать любую требуемую таблицу истинности данной комбинационной схемы. Для этого всего лишь надо составить таблицу прошивки ПЗУ, соответствующую нужной таблице истинности. В этом случае не надо ни подбирать логические элементы, ни оптимизировать их соединения, ни думать о том, можно ли вообще построить заданную комбинационную схему из стандартных микросхем. Важно только, чтобы количество требуемых входов не превышало количества адресных разрядов ПЗУ, а количество требуемых выходов не превышало разрядности шины данных ПЗУ.
В качестве примера рассмотрим довольно сложную комбинационную схему (рис. 11.5), имеющую восемь входов и четыре выхода. Функция схемы сводится к следующему. Прежде всего она распознает два различных 5-разрядных входных кода (11001 и 10011) в случае, когда на входе разрешения "–Разр." присутствует нулевой сигнал, а при приходе сигналов "–Строб 1" и "Строб 2" схема выдает на выход отрицательные импульсы. Причем первый выходной сигнал вырабатывается в случае, когда входной код равен 11001 и пришел сигнал "–Строб 1", второй выходной сигнал — при том же коде, но по входному сигналу "–Строб 2". Третий и четвертый выходной сигналы вырабатываются при входном коде 10011 и при приходе соответственно управляющих сигналов "–Строб 1" и "–Строб 2". То есть логика работы довольно сложная и разнообразных логических элементов требуется немало.
Рис. 11.5. Пример комбинационной схемы, заменяемой ПЗУ
Рис. 11.6. Включение ПЗУ для замены комбинационной схемы, показанной на рис. 11.5
Но всю эту схему можно заменить всего лишь одной микросхемой ПЗУ, например, типа РТ4, имеющей 8 адресных входов и 4 выхода данных (рис. 11.6). При этом пять разрядов входного кода подаются на младшие разряды адреса ПЗУ (А0...А4), входной сигнал "Разр." — на адресный вход А5, сигнал "–Строб 1" — на вход А6, сигнал "–Строб 2" — на вход А7. Младший разряд данных памяти D0 используется для первого выходного сигнала, D1 — для второго выходного сигнала, D2 — для третьего выходного сигнала, D3 — для четвертого выходного сигнала. Микросхема ПЗУ всегда выбрана (управляющие сигналы –CS1 и –CS2 — нулевые). На выходах данных памяти включены резисторы, так как тип выходов микросхемы РТ4 — ОК.
Составим карту прошивки ПЗУ. Активные выходные сигналы — нулевые, а пассивные — единичные. Значит, в большинстве ячеек ПЗУ будут записаны коды F (все выходные сигналы пассивны). Активному (нулевому) первому выходному сигналу при пассивных остальных будет соответствовать двоичный код данных 1110 (16-ричный код — Е), активному второму выходному сигналу будет соответствовать двоичный код 1101 (16-ричный — D), активному третьему выходному сигналу — двоичный код 1011 (или В), активному четвертому выходному сигналу — двоичный код 0111 (или 7). То есть только содержимое четырех ячеек памяти будет отличаться от F.
Например, код Е будет записан в ячейку с таким адресом, пять младших разрядов которого (A0...А4) равны селектируемому входному коду 11001, разряд А5 равен нулю (сигнал "Разр." активен), разряд А6 равен нулю (сигнал "Строб 1" активен), а разряд А7 равен единице (сигнал "Строб 2" пассивен). Таким образом, получаем двоичный код адреса 10011001 (или в 16-ричном коде 99). Точно так же код D будет записан в ячейку с адресом 01011001 (то есть 16-ричное 59), код В — в ячейку с адресом 10010011 (то есть 93), а код 7 — в ячейку с адресом 01010011 (то есть 53).
Получившаяся карта прошивки ПЗУ приведена в табл. 11.2. Она полностью совпадает с таблицей истинности заменяемой комбинационной схемы.
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | 7 | F | F | F | F | F | D | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | B | F | F | F | F | F | E | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
Однако использование ПЗУ для замены комбинационных схем имеет и довольно серьезные недостатки. Дело в том, что микросхемы ПЗУ еще больше, чем комбинационные микросхемы, чувствительны к моменту изменения входных сигналов (адресных разрядов). На выходах данных микросхем ПЗУ при любом изменении входного кода адреса могут появляться короткие паразитные импульсы. Поэтому лучше всего использовать ПЗУ для замены таких комбинационных схем, которые работают в статическом режиме и в которых короткие импульсы не имеют значения.
Рис. 11.7. Методы синхронизации выходных сигналов ПЗУ с помощью сигнала CS (а) и выходного регистра (б)
Можно также применять методы синхронизации выходных сигналов ПЗУ (рис. 11.7) с помощью управляющих сигналов выбора микросхемы CS (а) или же с помощью выходных триггеров и регистров (б). Суть синхронизации состоит в том, что выходные сигналы ПЗУ надо разрешать или фиксировать с помощью синхросигнала только тогда, когда все переходные процессы внутри микросхемы, вызванные сменой кода адреса, уже закончились и паразитные импульсы на выходах гарантированно отсутствуют.
Микросхемы ПЗУ могут заменять собой любые комбинационные микросхемы: дешифраторы, шифраторы, компараторы кодов, сумматоры, мультиплексоры, преобразователи кодов и т.д. Однако при подобной замене всегда стоит подумать, не лучше ли использовать уже готовые микросхемы, чем изготавливать новые (программировать ПЗУ). Микросхемы ПЗУ могут оказаться медленнее стандартных комбинационных микросхем и потреблять больший ток питания. К тому же они могут требовать выходных резисторов, если микросхемы имеют выходы ОК или при использовании входов CS у микросхем с выходами 3С. Другое дело, когда ПЗУ выполняет функцию, отличающуюся от функции стандартной комбинационной микросхемы. Простейший пример — дешифратор с положительными, а не с отрицательными (как в стандартных сериях) активными выходными сигналами.
on_load_lecture()
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет- Университет Информационных Технологий - дистанционное образование |
Рис. 11.6. Включение ПЗУ для замены комбинационной схемы, показанной на рис. 11.5
Но всю эту схему можно заменить всего лишь одной микросхемой ПЗУ, например, типа РТ4, имеющей 8 адресных входов и 4 выхода данных (рис. 11.6). При этом пять разрядов входного кода подаются на младшие разряды адреса ПЗУ (А0...А4), входной сигнал "Разр." — на адресный вход А5, сигнал "–Строб 1" — на вход А6, сигнал "–Строб 2" — на вход А7. Младший разряд данных памяти D0 используется для первого выходного сигнала, D1 — для второго выходного сигнала, D2 — для третьего выходного сигнала, D3 — для четвертого выходного сигнала. Микросхема ПЗУ всегда выбрана (управляющие сигналы –CS1 и –CS2 — нулевые). На выходах данных памяти включены резисторы, так как тип выходов микросхемы РТ4 — ОК.
Составим карту прошивки ПЗУ. Активные выходные сигналы — нулевые, а пассивные — единичные. Значит, в большинстве ячеек ПЗУ будут записаны коды F (все выходные сигналы пассивны). Активному (нулевому) первому выходному сигналу при пассивных остальных будет соответствовать двоичный код данных 1110 (16-ричный код — Е), активному второму выходному сигналу будет соответствовать двоичный код 1101 (16-ричный — D), активному третьему выходному сигналу — двоичный код 1011 (или В), активному четвертому выходному сигналу — двоичный код 0111 (или 7). То есть только содержимое четырех ячеек памяти будет отличаться от F.
Например, код Е будет записан в ячейку с таким адресом, пять младших разрядов которого (A0...А4) равны селектируемому входному коду 11001, разряд А5 равен нулю (сигнал "Разр." активен), разряд А6 равен нулю (сигнал "Строб 1" активен), а разряд А7 равен единице (сигнал "Строб 2" пассивен). Таким образом, получаем двоичный код адреса 10011001 (или в 16-ричном коде 99). Точно так же код D будет записан в ячейку с адресом 01011001 (то есть 16-ричное 59), код В — в ячейку с адресом 10010011 (то есть 93), а код 7 — в ячейку с адресом 01010011 (то есть 53). Получившаяся карта прошивки ПЗУ приведена в табл. 11.2.
Она полностью совпадает с таблицей истинности заменяемой комбинационной схемы.
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | 7 | F | F | F | F | F | D | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | B | F | F | F | F | F | E | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F |
Однако использование ПЗУ для замены комбинационных схем имеет и довольно серьезные недостатки. Дело в том, что микросхемы ПЗУ еще больше, чем комбинационные микросхемы, чувствительны к моменту изменения входных сигналов (адресных разрядов). На выходах данных микросхем ПЗУ при любом изменении входного кода адреса могут появляться короткие паразитные импульсы. Поэтому лучше всего использовать ПЗУ для замены таких комбинационных схем, которые работают в статическом режиме и в которых короткие импульсы не имеют значения.
Рис. 11.7. Методы синхронизации выходных сигналов ПЗУ с помощью сигнала CS (а) и выходного регистра (б)
Можно также применять методы синхронизации выходных сигналов ПЗУ (рис. 11.7) с помощью управляющих сигналов выбора микросхемы CS (а) или же с помощью выходных триггеров и регистров (б). Суть синхронизации состоит в том, что выходные сигналы ПЗУ надо разрешать или фиксировать с помощью синхросигнала только тогда, когда все переходные процессы внутри микросхемы, вызванные сменой кода адреса, уже закончились и паразитные импульсы на выходах гарантированно отсутствуют.
Микросхемы ПЗУ могут заменять собой любые комбинационные микросхемы: дешифраторы, шифраторы, компараторы кодов, сумматоры, мультиплексоры, преобразователи кодов и т.д. Однако при подобной замене всегда стоит подумать, не лучше ли использовать уже готовые микросхемы, чем изготавливать новые (программировать ПЗУ). Микросхемы ПЗУ могут оказаться медленнее стандартных комбинационных микросхем и потреблять больший ток питания. К тому же они могут требовать выходных резисторов, если микросхемы имеют выходы ОК или при использовании входов CS у микросхем с выходами 3С. Другое дело, когда ПЗУ выполняет функцию, отличающуюся от функции стандартной комбинационной микросхемы. Простейший пример — дешифратор с положительными, а не с отрицательными (как в стандартных сериях) активными выходными сигналами.
В общем случае ПЗУ можно рассматривать как преобразователь входного кода (кода адреса) в выходной код (код данных) по произвольному закону, задаваемому разработчиком. Это позволяет не только преобразовывать друг в друга различные стандартные коды, но и выполнять множество других функций, например, использовать ПЗУ как простейший табличный вычислитель. Для этого нужно на адресные разряды ПЗУ подать код входного числа (аргумента), а на выходах разрядов данных получить код выходного числа (функции). Такой табличный вычислитель имеет очень высокое быстродействие по сравнению с другими типами вычислителей (время вычисления функции равно задержке выборки адреса ПЗУ).
В качестве простейшего примера рассмотрим вычислитель для возведения в квадрат 4-разрядного двоичного числа (рис. 11.8). Вычислитель выполнен на микросхеме ПЗУ типа РЕ3, у которого использованы четыре разряда адреса и восемь разрядов данных. Он позволяет получать двоичные коды квадратов любых чисел в диапазоне от 0 (или в двоичном коде 0000, в 16-ричном коде 0) до 15 (или в двоичном коде 1111, в 16-ричном коде F), которые принимают значения от 0 (или в двоичном коде 00000000, в 16-ричном — 00) до 225 (или в двоичном коде 11100001, в 16-ричном — E1).
Рис. 11.8. Вычислитель квадратов входных чисел
Карта прошивки ПЗУ вычислителя квадратов (табл. 11.3) будет очень проста: код данных в каждой ячейке равен квадрату кода адреса этой ячейки. Используется всего 16 ячеек памяти, содержимое остальных 16 ячеек не имеет значения (что обозначено в таблице ХХ).
00 | 01 | 04 | 09 | 10 | 19 | 24 | 31 | 40 | 51 | 64 | 79 | 90 | A9 | C4 | E1 |
XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX |
Недостаток любого табличного вычислителя на ПЗУ — это необходимость увеличения вдвое требуемого объема памяти при увеличении разрядности входного числа на единицу. Например, при 8-разрядных входных числах требуется ПЗУ с количеством ячеек 256, при 16-разрядных входных числах — ПЗУ с количеством ячеек 64К, а при 32-разрядных входных числах — ПЗУ с количеством ячеек 4Г. Такие большие объемы очень трудно реализовать на серийно выпускаемых микросхемах. Поэтому табличные вычислители на ПЗУ обычно строятся только для разрядности входных чисел не более 16.
Одно из наиболее распространенных применений ПЗУ как преобразователя кодов — это построение на их основе всевозможных индикаторов, отображающих на экране буквы и цифры.
ПЗУ в данном случае переводит код (номер) буквы или цифры в ее изображение. Конечно, в данном случае заменить ПЗУ комбинационной схемой совершенно невозможно, так как букв и цифр очень много, а их изображения очень разнообразны.
Простейший пример данного применения ПЗУ — это управление знаковым семисегментным индикатором, знакомым всем по калькуляторам, кассовым аппаратам, электронным часам, весам и т.д. В семисегментных индикаторах изображение всех цифр от 0 до 9 строится всего из семи сегментов (отрезков линий) (рис. 11.9).
Рис. 11.9. Дешифратор знакового семисегментного индикатора на ПЗУ
Чтобы отобразить в виде цифры 4-разрядный двоичный код, надо этот код преобразовать в 7-разрядный код, каждому разряду которого будет соответствовать один сегмент индикатора. То есть коду 0000 должно соответствовать изображение нуля (6 сегментов, расположенных по периметру), а коду 0001 — изображение единицы (два правых вертикальных сегмента). Для повышения универсальности индикатора удобно дополнить десять цифр еще и шестью буквами, использующимися в 16-ричном коде (A, B, C, D, E, F). Семь сегментов индикатора позволяют сделать и это, правда, изображения букв получаются не слишком качественными.
40 | 79 | 24 | 30 | 19 | 12 | 02 | 78 | 00 | 10 | 08 | 03 | 46 | 21 | 06 | 0E |
XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX | XX |
ПЗУ позволяют также формировать и более сложные изображения букв и цифр — матричные. Такие изображения используются, например, в табло типа "бегущая строка", на экранах мониторов, в больших рекламных табло. Каждая буква, цифра, другой знак располагается в данном случае на прямоугольной матрице, называемой знакоместом и состоящей из нескольких строк и нескольких столбцов точечных элементов изображения, которые могут зажигаться независимо друг от друга.
Чем больше строк и столбцов в знакоместе, тем более качественное изображение букв и цифр можно получить. Минимально возможный размер знакоместа — 5 столбцов на 7 строк, то есть всего 35 элементов изображения.
ПЗУ в данном случае содержит в себе информацию об изображениях всех возможных букв и цифр (обычно этот набор включает в себя 256 символов). Но выходной код ПЗУ имеет мало разрядов, поэтому каждый такой код, соответствующий одному адресу, представляет собой информацию об изображении не целого символа, а только одной его строки (или столбца). Информация о целом символе занимает в ПЗУ столько ячеек, сколько в изображении символа имеется столбцов (или строк). Пример матричного знакогенератора на ПЗУ приведен на рис. 11.10.
Рис. 11.10. Матричный знакогенератор на ПЗУ
В данном случае используется знакоместная матрица из 8 строк и 8 столбцов. В каждую ячейку ПЗУ записывается код изображения одной из 8 строк одного из 256 символов. Изображение одного символа занимает 8 последовательно расположенных ячеек в ПЗУ. Для букв и цифр правый столбец знакоместа не используется, он служит для отделения знаков друг от друга, но для специальных символов (например, для графических) он может и использоваться. В случае матричного светодиодного индикатора перебор строк может осуществляться 3-разрядным счетчиком с дешифратором 3–8 на его выходе. В случае телевизионного монитора перебор строк осуществляется с помощью генератора вертикальной развертки изображения.
Составление карты прошивки такого ПЗУ непросто, оно обычно производится с помощью специальных программ на компьютере. Но принцип составления прост. Например, если активному (зажженному) элементу изображения соответствует единичный сигнал, то для нулевой строки символа "М", показанного на рисунке, в ПЗУ надо записать 10000010, для первой строки — код 11000110, для второй — код 10101010, для третьей — 10010010 и т.д.
ПЗУ в генераторах импульсных последовательностей
Следующее важнейшее применение ПЗУ — это построение генераторов сложных последовательностей цифровых импульсов. Такие генераторы широко используются в самых разных измерительных системах, в устройствах автоматики, в телевизионных системах, в схемах управления линейными или матричными индикаторами и т.д.
Задача в данном случае ставится следующим образом. Необходимо сформировать последовательность из нескольких сигналов различной длительности, сдвинутых относительно друг друга на различные временные интервалы. Причем последовательность эта может быть как разовой (однократно начинающейся по внешнему сигналу), так и периодической, непрерывно повторяющейся.
Наиболее распространенная структура генератора последовательностей выходных сигналов на ПЗУ включает в себя тактовый генератор нужной частоты, счетчик с требуемым числом разрядов, ПЗУ и выходной регистр (рис. 11.11). Счетчик перебирает адреса ПЗУ, ПЗУ последовательно выдает на выходы данных все записанные в него коды. Выходной регистр, тактируемый тем же тактовым сигналом, что и счетчик, служит для предотвращения появления в выходных сигналах паразитных импульсов и для обеспечения одновременного переключения всех выходных сигналов (что особенно важно в случае, когда используются несколько параллельно включенных микросхем ПЗУ для увеличения разрядности шины данных).
Рис. 11.11. Пример структуры генератора последовательностей сигналов на ПЗУ
Рис. 11.12. Временная диаграмма формируемых выходных сигналов
Рассмотрим пример. Пусть необходимо непрерывно формировать периодическую последовательность из шести выходных сигналов в соответствии с временной диаграммой рис. 11.12. Получить такую последовательность можно, конечно, с помощью комбинационных схем, включенных на выходе счетчика, или с помощью множества одновибраторов, запускающих друг друга, но и то, и другое решение чересчур громоздко и сложно как в проектировании, так и в настройке. Применение же ПЗУ значительно упрощает задачу.
Следующее важнейшее применение ПЗУ — это построение генераторов сложных последовательностей цифровых импульсов. Такие генераторы широко используются в самых разных измерительных системах, в устройствах автоматики, в телевизионных системах, в схемах управления линейными или матричными индикаторами и т.д.
Задача в данном случае ставится следующим образом. Необходимо сформировать последовательность из нескольких сигналов различной длительности, сдвинутых относительно друг друга на различные временные интервалы. Причем последовательность эта может быть как разовой (однократно начинающейся по внешнему сигналу), так и периодической, непрерывно повторяющейся.
Наиболее распространенная структура генератора последовательностей выходных сигналов на ПЗУ включает в себя тактовый генератор нужной частоты, счетчик с требуемым числом разрядов, ПЗУ и выходной регистр (рис. 11.11). Счетчик перебирает адреса ПЗУ, ПЗУ последовательно выдает на выходы данных все записанные в него коды. Выходной регистр, тактируемый тем же тактовым сигналом, что и счетчик, служит для предотвращения появления в выходных сигналах паразитных импульсов и для обеспечения одновременного переключения всех выходных сигналов (что особенно важно в случае, когда используются несколько параллельно включенных микросхем ПЗУ для увеличения разрядности шины данных).
Рис. 11.11. Пример структуры генератора последовательностей сигналов на ПЗУ
Рис. 11.12. Временная диаграмма формируемых выходных сигналов
Рассмотрим пример. Пусть необходимо непрерывно формировать периодическую последовательность из шести выходных сигналов в соответствии с временной диаграммой рис. 11.12. Получить такую последовательность можно, конечно, с помощью комбинационных схем, включенных на выходе счетчика, или с помощью множества одновибраторов, запускающих друг друга, но и то, и другое решение чересчур громоздко и сложно как в проектировании, так и в настройке. Применение же ПЗУ значительно упрощает задачу.
Достаточно провести несложные расчеты и составить карту прошивки ПЗУ.
Расчеты сводятся к следующему.
Прежде всего определяем минимально возможную тактовую частоту (с целью минимизации требуемого объема ПЗУ). Для этого надо выделить максимальный временной интервал (дискрет времени), который укладывается целое число раз во все временные сдвиги, задержки, длительности требуемой диаграммы. В нашем случае этот дискрет равен одному делению по оси времени. Например, если длительность этого деления равна 250 нс, то и период тактового сигнала надо выбирать 250 нс, то есть тактовая частота будет равна 4 МГц. Можно, конечно, выбрать ее и кратной 4 МГц, например, 8 МГц, 12 МГц, но тогда потребуется вдвое или втрое больший объем ПЗУ. Если бы нам надо было формировать только три верхних сигнала (Выход 0, Выход 1, Выход 2), то период тактовой частоты можно было бы брать вдвое больше (в нашем примере — 500 нс), так как для этих сигналов все длительности кратны двум делениям.
Второй расчет сводится к определению количества ячеек и разрядности ПЗУ. Шесть выходных сигналов схемы требуют шести разрядов данных ПЗУ. Длительность последовательности равна 20 тактам (или 14 в 16-ричном коде), то есть не равна 2n, поэтому счетчик придется сбрасывать в нуль через каждые 20 тактов, для чего потребуется еще один разряд данных ПЗУ. Итого потребуется 7 разрядов. А для перебора 20 тактов последовательности потребуется 5-разрядный счетчик, так как 24 = 16 (недостаточно), а 25 = 32 (достаточно). Значит, разрядность шины адреса ПЗУ также должна быть не менее пяти, то есть минимальные требования к организации ПЗУ — это 32х8, значит, подойдет микросхема ПЗУ типа РЕ3.
Наконец, третий расчет касается условий правильной работы схемы. Генератор последовательности будет работать правильно, если за период тактового сигнала успеют сработать счетчик и ПЗУ. То есть сумма задержки полного переключения счетчика и задержки выборки адреса ПЗУ не должна превышать периода тактового сигнала.
Рис. 11.13. Первый вариант схемы генератора последовательности сигналов на ПЗУ
Таким образом, один из возможных вариантов схемы генератора последовательности импульсов (рис. 11.13) будет включать в себя тактовый генератор, пятиразрядный счетчик на основе ИЕ19, ПЗУ типа К155РЕ3 и 8-разрядный выходной регистр ИР27. Так как счетчик срабатывает по отрицательному фронту тактового сигнала, а регистр — по положительному фронту тактового сигнала, необходимо включить инвертор. На схеме для простоты не показаны резисторы на выходах данных типа ОК микросхемы ПЗУ.
Из схемы видно, что существует еще одно дополнительное условие правильной работы, связанное с использованием сигнала сброса. За период тактового сигнала должен успеть сработать регистр (записать в себя сигнал сброса с выхода ПЗУ), должен сброситься счетчик и должно выдать код ПЗУ. То есть сумма задержек регистра, сброса счетчика и выборки адреса ПЗУ не должна превышать периода тактового сигнала.
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1F |
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 17 |
2 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 16 |
3 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 16 |
4 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 04 |
5 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 24 |
6 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 01 |
7 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 21 |
8 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 23 |
9 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 23 |
A | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 26 |
B | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 26 |
C | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 24 |
D | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 04 |
E | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 21 |
F | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 01 |
10 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 13 |
11 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 13 |
12 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 17 |
13 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 5F |
Седьмой сигнал (Выход 6) используется в качестве сброса счетчика, он равен нулю от нулевого такта до 18 (в 16-ричном коде — 12) такта и равен единице в последнем девятнадцатом такте (в 16-ричном коде — 13).
Этим единичным сигналом счетчик будет сбрасываться в нуль, то есть работа схемы после 19 такта будет возобновляться с нулевого такта.
Пусть нам требуется более высокое быстродействие схемы. Например, период тактового генератора должен быть равен 100 нс и даже меньше. В этом случае асинхронный счетчик типа ИЕ19 уже не подойдет из-за своего низкого быстродействия. Надо использовать 5-разрядный синхронный счетчик. Можно, конечно, включить две микросхемы 4-разрядных счетчиков типа ИЕ17, но можно обойтись и одним 4-разрядным счетчиком, если задействовать оставшийся свободным выход данных ПЗУ и оставшийся свободным разряд регистра (рис. 11.14). При этом без всякого ущерба для быстродействия можно использовать синхронный счетчик с асинхронным переносом ИЕ7, так как нужна всего одна микросхема счетчика.
Рис. 11.14. Второй вариант схемы генератора последовательности с 4-разрядным синхронным счетчиком ИЕ7
Карта прошивки ПЗУ генератора последовательностей остается той же самой, что и в предыдущем случае, но добавляется один (седьмой) разряд шины данных ПЗУ. Этот разряд должен быть равен нулю в пятнадцати тактах с нулевого до 14 (в 16-ричном коде — Е), в четырех тактах с 15 (F в 16-ричном коде) по 18 (12 в 16-ричном коде) он должен быть равен единице (код данных увеличится на 80), а в последнем 19 такте (13 в 16-ричном коде) он снова должен быть равен нулю. В результате адреса ПЗУ будут перебираться от 0 до 15 (старший разряд адреса равен нулю), затем от 16 до 19 (старший разряд адреса станет равен единице, а счетчик после переполнения считает с нуля), а затем снова от нулевого адреса (счетчик сбросится сигналом "Выход 6", а старший разряд адреса памяти станет нулевым). Получающаяся в результате карта прошивки ПЗУ приведена в табл. 11.6.
00 | 1F | 17 | 16 | 16 | 04 | 24 | 01 | 21 | 23 | 23 | 26 | 26 | 24 | 04 | 21 | 81 |
10 | 93 | 93 | 97 | 5F | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ |
on_load_lecture()
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет- Университет Информационных Технологий - дистанционное образование |
Достаточно провести несложные расчеты и составить карту прошивки ПЗУ.
Расчеты сводятся к следующему.
Прежде всего определяем минимально возможную тактовую частоту (с целью минимизации требуемого объема ПЗУ). Для этого надо выделить максимальный временной интервал (дискрет времени), который укладывается целое число раз во все временные сдвиги, задержки, длительности требуемой диаграммы. В нашем случае этот дискрет равен одному делению по оси времени. Например, если длительность этого деления равна 250 нс, то и период тактового сигнала надо выбирать 250 нс, то есть тактовая частота будет равна 4 МГц. Можно, конечно, выбрать ее и кратной 4 МГц, например, 8 МГц, 12 МГц, но тогда потребуется вдвое или втрое больший объем ПЗУ. Если бы нам надо было формировать только три верхних сигнала (Выход 0, Выход 1, Выход 2), то период тактовой частоты можно было бы брать вдвое больше (в нашем примере — 500 нс), так как для этих сигналов все длительности кратны двум делениям.
Второй расчет сводится к определению количества ячеек и разрядности ПЗУ. Шесть выходных сигналов схемы требуют шести разрядов данных ПЗУ. Длительность последовательности равна 20 тактам (или 14 в 16-ричном коде), то есть не равна 2n, поэтому счетчик придется сбрасывать в нуль через каждые 20 тактов, для чего потребуется еще один разряд данных ПЗУ. Итого потребуется 7 разрядов. А для перебора 20 тактов последовательности потребуется 5-разрядный счетчик, так как 24 = 16 (недостаточно), а 25 = 32 (достаточно). Значит, разрядность шины адреса ПЗУ также должна быть не менее пяти, то есть минимальные требования к организации ПЗУ — это 32х8, значит, подойдет микросхема ПЗУ типа РЕ3.
Наконец, третий расчет касается условий правильной работы схемы. Генератор последовательности будет работать правильно, если за период тактового сигнала успеют сработать счетчик и ПЗУ. То есть сумма задержки полного переключения счетчика и задержки выборки адреса ПЗУ не должна превышать периода тактового сигнала.
Рис. 11.13. Первый вариант схемы генератора последовательности сигналов на ПЗУ
Таким образом, один из возможных вариантов схемы генератора последовательности импульсов (рис. 11.13) будет включать в себя тактовый генератор, пятиразрядный счетчик на основе ИЕ19, ПЗУ типа К155РЕ3 и 8-разрядный выходной регистр ИР27. Так как счетчик срабатывает по отрицательному фронту тактового сигнала, а регистр — по положительному фронту тактового сигнала, необходимо включить инвертор. На схеме для простоты не показаны резисторы на выходах данных типа ОК микросхемы ПЗУ.
Из схемы видно, что существует еще одно дополнительное условие правильной работы, связанное с использованием сигнала сброса. За период тактового сигнала должен успеть сработать регистр (записать в себя сигнал сброса с выхода ПЗУ), должен сброситься счетчик и должно выдать код ПЗУ. То есть сумма задержек регистра, сброса счетчика и выборки адреса ПЗУ не должна превышать периода тактового сигнала.
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1F |
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 17 |
2 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 16 |
3 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 16 |
4 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 04 |
5 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 24 |
6 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 01 |
7 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 21 |
8 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 23 |
9 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 23 |
A | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 26 |
B | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 26 |
C | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 24 |
D | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 04 |
E | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 21 |
F | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 01 |
10 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 13 |
11 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 13 |
12 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 17 |
13 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 5F |
Седьмой сигнал (Выход 6) используется в качестве сброса счетчика, он равен нулю от нулевого такта до 18 (в 16-ричном коде — 12) такта и равен единице в последнем девятнадцатом такте (в 16-ричном коде — 13).
Этим единичным сигналом счетчик будет сбрасываться в нуль, то есть работа схемы после 19 такта будет возобновляться с нулевого такта.
Пусть нам требуется более высокое быстродействие схемы. Например, период тактового генератора должен быть равен 100 нс и даже меньше. В этом случае асинхронный счетчик типа ИЕ19 уже не подойдет из-за своего низкого быстродействия. Надо использовать 5-разрядный синхронный счетчик. Можно, конечно, включить две микросхемы 4-разрядных счетчиков типа ИЕ17, но можно обойтись и одним 4-разрядным счетчиком, если задействовать оставшийся свободным выход данных ПЗУ и оставшийся свободным разряд регистра (рис. 11.14). При этом без всякого ущерба для быстродействия можно использовать синхронный счетчик с асинхронным переносом ИЕ7, так как нужна всего одна микросхема счетчика.
Рис. 11.14. Второй вариант схемы генератора последовательности с 4-разрядным синхронным счетчиком ИЕ7
Карта прошивки ПЗУ генератора последовательностей остается той же самой, что и в предыдущем случае, но добавляется один (седьмой) разряд шины данных ПЗУ. Этот разряд должен быть равен нулю в пятнадцати тактах с нулевого до 14 (в 16-ричном коде — Е), в четырех тактах с 15 (F в 16-ричном коде) по 18 (12 в 16-ричном коде) он должен быть равен единице (код данных увеличится на 80), а в последнем 19 такте (13 в 16-ричном коде) он снова должен быть равен нулю. В результате адреса ПЗУ будут перебираться от 0 до 15 (старший разряд адреса равен нулю), затем от 16 до 19 (старший разряд адреса станет равен единице, а счетчик после переполнения считает с нуля), а затем снова от нулевого адреса (счетчик сбросится сигналом "Выход 6", а старший разряд адреса памяти станет нулевым). Получающаяся в результате карта прошивки ПЗУ приведена в табл. 11.6.
00 | 1F | 17 | 16 | 16 | 04 | 24 | 01 | 21 | 23 | 23 | 26 | 26 | 24 | 04 | 21 | 81 |
10 | 93 | 93 | 97 | 5F | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ | ХХ |
ОЗУ для временного хранения информации
Главное применение микросхем оперативной памяти, непосредственно следующее из ее названия, - это временное хранение цифровой информации, всевозможных массивов кодов, таблиц данных, одиночных чисел и т.д. Цель такого хранения информации состоит в том, чтобы в любой момент иметь возможность быстро ее прочитать для дальнейшей обработки, записи в энергонезависимую память (в ПЗУ, на магнитные носители) или для другого использования. Записанная в оперативную память и непрочитанная затем информация не имеет смысла, так как при выключении питания она безвозвратно пропадет.
Другим словами, временное хранение предполагает, что к памяти имеется возможность доступа от какого-то устройства или от какой-то другой части схемы как с операцией записи, так и с операцией чтения (считывания). В зависимости от того, в каком порядке может записываться или читаться информация, существуют две разновидности ОЗУ:
ОЗУ с параллельным или произвольным доступом (это наиболее универсальная схема);ОЗУ с последовательным доступом (это более специфическая схема).Параллельный или произвольный доступ наиболее прост и обычно не требует никаких дополнительных элементов, так как именно на этот режим непосредственно рассчитаны микросхемы памяти. В этом режиме можно записывать информацию в любой адрес ОЗУ и читать информацию из любого адреса ОЗУ в произвольном порядке. Однако параллельный доступ требует формирования довольно сложных последовательностей всех входных сигналов памяти. То есть для записи информации необходимо сформировать код адреса записываемой ячейки и только потом подать данные, сопровождаемые управляющими сигналами –CS и –WR (см. рис. 12.2). Точно так же необходимо подавать полный код адреса читаемой ячейки при операции чтения. Этот режим доступа чаще всего применяется в компьютерах и контроллерах, где самыми главными факторами являются универсальность и гибкость использования памяти для самых разных целей.
Последовательный доступ к памяти предполагает более простой порядок общения с памятью. В этом случае не надо задавать код адреса записываемой или читаемой ячейки, так как адрес памяти формируется схемой автоматически. Для записи информации надо всего лишь подать код записываемых данных и сопроводить его стробом записи. Для чтения информации надо подать строб чтения и получить читаемые данные. Автоматическое задание адреса при этом осуществляется внутренними счетчиками, меняющими свое состояние по каждому обращению к памяти. Например, десять последовательных циклов записи запишут информацию в десять последовательно расположенных ячеек памяти. Недостаток такого подхода очевиден: мы не имеем возможности записывать или читать ячейки с произвольными адресами в любом порядке. Зато существенно упрощается и ускоряется процедура обмена с памятью (запись и чтение). Мы будем в данном разделе рассматривать именно этот тип памяти, этот тип доступа.
Можно выделить три основных типа оперативной памяти с последовательным доступом:
память типа "первым вошел - первым вышел" (FIFO, First In - First Out);память магазинного, стекового типа, работающая по принципу "последним вошел - первым вышел" (LIFO, Last In - First Out).память для хранения массивов данных.Два первых типа памяти подразумевают возможность чередования операций записи и чтения в памяти. При этом память FIFO выдает читаемые данные в том же порядке, в котором они были записаны, а память LIFO - в порядке, обратном тому, в котором они были записаны в память. Память FIFO можно сравнить со сдвиговым регистром, на выходе которого данные появляются в том же порядке, в котором они были в него записаны. А память LIFO обычно сравнивают с магазином для подачи патронов в автомате или пистолете, в котором первым выдается патрон, вставленный в магазин последним. Память с принципом LIFO используется, в частности, в компьютерах (стек), где она хранит информацию о параметрах программ и подпрограмм.
Для памяти FIFO требуется хранение двух кодов адреса (адрес для записи и адрес для чтения), для памяти LIFO достаточно одного кода адреса.
Хранение массивов в памяти предполагает, что сначала в память записывается целиком большой массив данных, а потом этот же массив целиком читается из памяти. Эта память также может быть устроена по двум принципам (FIFO и LIFO). В первом случае (FIFO) записанный массив читается в том же порядке, в котором и был записан, во втором случае (LIFO) - в противоположном порядке (начиная с конца). В обоих этих случаях для общения с памятью требуется хранить только один код адреса памяти.
Рассмотрим несколько примеров схем, реализующих перечисленные типы памяти с последовательным доступом.
Рис. 12.5. Функциональная схема памяти типа FIFO
На рис. 12.5 представлена функциональная схема памяти типа FIFO на микросхемах с раздельными шинами входных и выходных данных. Адреса памяти задаются двумя счетчиками - счетчиком записи и счетчиком чтения, выходные коды которых мультиплексируются с помощью 2-канального мультиплексора. Запись данных осуществляется по стробу записи "–Зап.", чтение данных - по стробу чтения "–Чт.". Своим задним фронтом сигнал "–Зап." переключает счетчик записи, а задний фронт сигнала "–Чт." переключает счетчик чтения. В результате каждая следующая запись осуществляется в следующий по порядку адрес памяти. Точно так же каждое следующее чтение производится из следующего по порядку адреса памяти.
Перед началом работы необходимо сбросить счетчики в нуль сигналом "Сброс". При отсутствии операций записи и чтения память находится в состоянии чтения (сигнал –WR равен единице), а на адресные входы памяти подается код адреса записи со счетчика записи. При подаче строба записи "–Зап." производится запись входных данных по адресу из счетчика записи. Входные (записываемые) данные должны выставляться раньше начала сигнала "–Зап.", а заканчиваться после этого сигнала. При подаче строба чтения "–Чт." мультиплексор переключается на передачу адреса чтения, и на выходе памяти появляется информация, которая считывается из адреса чтения, задаваемого счетчиком чтения. Действительными выходные (читаемые) данные будут по заднему (положительному) фронту сигнала "–Чт.".
Запись начинается с нулевого адреса памяти и производится по последовательно нарастающим адресам. Точно так же чтение начинается с нулевого адреса памяти и производится по последовательно нарастающим адресам. Операции записи и чтения могут чередоваться. Временные диаграммы циклов записи и чтения показаны на рис. 12.6.
Рис. 12.6. Временные диаграммы циклов записи (а)и чтения (б) для памяти типа FIFO
В качестве счетчиков можно использовать нужное количество микросхем ИЕ7, в качестве мультиплексора - микросхемы КП11, в качестве памяти - К155РУ7 или любые другие нетактируемые микросхемы памяти с раздельными шинами входных и выходных данных.
Условия правильной работы схемы следующие. Длительность сигнала "–Зап." не должна быть меньше минимально допустимой длительности сигнала –WR памяти. Длительность сигнала "–Чт." не должна быть меньше суммы задержки переключения мультиплексора и задержки выборки адреса памяти. Период следования сигнала "-Зап." не должен быть меньше суммы задержки переключения счетчика записи и длительности сигнала "–Зап.". Период следования сигнала "-Чт." не должен быть меньше суммы задержки переключения счетчика чтения и длительности сигнала "–Чт.".
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет- Университет Информационных Технологий - дистанционное образование |
Хранение массивов в памяти предполагает, что сначала в память записывается целиком большой массив данных, а потом этот же массив целиком читается из памяти. Эта память также может быть устроена по двум принципам (FIFO и LIFO). В первом случае (FIFO) записанный массив читается в том же порядке, в котором и был записан, во втором случае (LIFO) - в противоположном порядке (начиная с конца). В обоих этих случаях для общения с памятью требуется хранить только один код адреса памяти.
Рассмотрим несколько примеров схем, реализующих перечисленные типы памяти с последовательным доступом.
Рис. 12.5. Функциональная схема памяти типа FIFO
На рис. 12.5 представлена функциональная схема памяти типа FIFO на микросхемах с раздельными шинами входных и выходных данных. Адреса памяти задаются двумя счетчиками - счетчиком записи и счетчиком чтения, выходные коды которых мультиплексируются с помощью 2-канального мультиплексора. Запись данных осуществляется по стробу записи "–Зап.", чтение данных - по стробу чтения "–Чт.". Своим задним фронтом сигнал "–Зап." переключает счетчик записи, а задний фронт сигнала "–Чт." переключает счетчик чтения. В результате каждая следующая запись осуществляется в следующий по порядку адрес памяти. Точно так же каждое следующее чтение производится из следующего по порядку адреса памяти.
Перед началом работы необходимо сбросить счетчики в нуль сигналом "Сброс". При отсутствии операций записи и чтения память находится в состоянии чтения (сигнал –WR равен единице), а на адресные входы памяти подается код адреса записи со счетчика записи. При подаче строба записи "–Зап." производится запись входных данных по адресу из счетчика записи. Входные (записываемые) данные должны выставляться раньше начала сигнала "–Зап.", а заканчиваться после этого сигнала. При подаче строба чтения "–Чт." мультиплексор переключается на передачу адреса чтения, и на выходе памяти появляется информация, которая считывается из адреса чтения, задаваемого счетчиком чтения.
Действительными выходные (читаемые) данные будут по заднему (положительному) фронту сигнала "–Чт.".
Запись начинается с нулевого адреса памяти и производится по последовательно нарастающим адресам. Точно так же чтение начинается с нулевого адреса памяти и производится по последовательно нарастающим адресам. Операции записи и чтения могут чередоваться. Временные диаграммы циклов записи и чтения показаны на рис. 12.6.
Рис. 12.6. Временные диаграммы циклов записи (а)и чтения (б) для памяти типа FIFO
В качестве счетчиков можно использовать нужное количество микросхем ИЕ7, в качестве мультиплексора - микросхемы КП11, в качестве памяти - К155РУ7 или любые другие нетактируемые микросхемы памяти с раздельными шинами входных и выходных данных.
Условия правильной работы схемы следующие. Длительность сигнала "–Зап." не должна быть меньше минимально допустимой длительности сигнала –WR памяти. Длительность сигнала "–Чт." не должна быть меньше суммы задержки переключения мультиплексора и задержки выборки адреса памяти. Период следования сигнала "-Зап." не должен быть меньше суммы задержки переключения счетчика записи и длительности сигнала "–Зап.". Период следования сигнала "-Чт." не должен быть меньше суммы задержки переключения счетчика чтения и длительности сигнала "–Чт.".
Функциональная схема памяти типа LIFO (рис. 12.7) проще по структуре, чем схема памяти FIFO, так как она содержит только один счетчик и не требует мультиплексирования. В данном случае считаем, что используется память с двунаправленной шиной входных/выходных данных.
Рис. 12.7. Функциональная схема памяти типа LIFO
Счетчик адреса необходим реверсивный, с раздельными тактовыми входами прямого и обратного счета (например, ИЕ7). После проведения цикла записи по заднему фронту сигнала "–Зап." счетчик увеличивает свой выходной код (адрес памяти) на единицу. Перед проведением цикла чтения по переднему фронту сигнала "–Чт." счетчик уменьшает свой выходной код на единицу.
Такая организация перебора адресов позволяет организовать чтение из памяти в порядке, обратном порядку записи в память.
Например, пусть исходное состояние счетчика 2. Пусть мы производим три цикла записи: первый - в адрес 2, второй - в адрес 3, третий - в адрес 4. После третьего цикла записи счетчик будет выдавать код 5. Затем проведем три цикла чтения: первый - из адреса 4 (перед чтением адрес уменьшился на единицу), второй - из адреса 3, третий - из адреса 2. После третьего цикла чтения счетчик будет выдавать код 2. Мы вернулись в исходное состояние, прочитав записанную информацию в обратном порядке.
Исходное состояние счетчика в данной схеме вообще-то не слишком важно, так как не важен текущий адрес памяти, в который производится запись и из которого потом производится чтение. Однако в случае, когда используется начальный сброс счетчика в нулевое состояние (по сигналу "Сброс"), можно довольно просто организовать контроль за переполнением памяти LIFO из-за слишком большого количества записанной в нее информации. Для контроля переполнения можно использовать выходной сигнал переноса старшего счетчика (>15).
Временные диаграммы циклов записи и чтения приведены на рис. 12.8.
В цикле записи по сигналу "-Зап." открывается входной буфер АП5 и входные (записываемые) данные поступают на входы/выходы памяти. Одновременно по этому же сигналу память переходит в режим записи. В результате в текущий адрес памяти записываются входные данные, после чего адрес увеличивается на единицу. Входные данные должны начинаться до начала сигнала "-Зап." и заканчиваться после его конца.
В цикле чтения по сигналу "-Чт." адрес уменьшается на единицу, после чего открывается выходной буфер АП5, который выдает на выход схемы читаемую из памяти информацию. Применение выходного буфера не обязательно, однако он предотвращает прохождение на шину выходных данных информации, записываемой в память в цикле записи. Выходные данные действительны по заднему фронту сигнала "-Чт.".
Рис. 12.8. Временные диаграммы циклов записи (а) и чтения (б) для памяти типа LIFO
Условия правильной работы схемы следующие. Длительность сигнала записи должна быть не меньше минимально допустимой длительности сигнала –WR памяти. Период следования сигналов "–Зап." не должен быть меньше суммы времени срабатывания счетчиков и длительности сигнала "–Зап.". Длительность сигнала чтения должна быть не меньше суммы времени срабатывания счетчика, времени выборки адреса памяти и задержки выходного буфера данных. Период следования сигналов "–Чт." также не должен быть меньше этой же суммы. Память должна быть нетактируемой, например, КР541РУ2.
Наконец, третий тип памяти для временного хранения данных - память для хранения массивов данных. Рассмотрим вариант схемы такой памяти типа FIFO (рис. 12.9).
Адреса памяти в данном случае задаются одним единственным счетчиком, который работает в режиме только прямого счета. Перед началом работы необходимо сбросить счетчик (сигнал "Сброс"). Затем производится запись массива данных. При этом после каждого цикла записи по заднему фронту сигнала "–Зап." выходной код счетчика увеличивается на единицу. После окончания записи всего массива снова надо сбросить счетчик в нуль (сигнал "Сброс"), а затем производить чтение массива, начиная с нулевого адреса. При этом после каждого цикла чтения по заднему фронту сигнала "–Чт." выходной код счетчика опять же увеличивается на единицу. В результате массив данных читается в том же порядке, что и был записан. Контроль за длиной записываемого и читаемого массивов возлагается на внешнее по отношению к приведенной схеме устройство.
Рис. 12.9. Функциональная схема памяти для хранения массивов данных
Для данной схемы должна использоваться нетактируемая память (например, КР541РУ2) с двунаправленной шиной входных/выходных данных. Считаем, что данные подаются на схему и читаются из схемы также по двунаправленной шине данных.
Между памятью и этой шиной включается двунаправленный буфер (типа АП6), который может понадобиться, например, для обеспечения большого выходного тока и малого входного тока со стороны внешней двунаправленной шины данных (это типичная ситуация при построении микропроцессорных и компьютерных систем). Буфер этот открывается на передачу данных в память по сигналу "–Зап." (сигнал –EZ становится равным нулю, сигнал T также нулевой) и открывается для чтения данных из памяти по сигналу "–Чт." (сигнал –EZ становится равным нулю, сигнал T равен единице).
Условия правильной работы схемы следующие. Длительность сигнала записи "–Зап." должна быть не менее минимальной длительности сигнала –WR памяти. Входные (записываемые) данные должны начинаться до начала сигнала "–Зап.", а заканчиваться после его окончания. Длительность сигнала чтения "–Чт." не должна быть меньше суммы задержки буфера и времени выборки адреса памяти. Действительными читаемые данные будут по заднему фронту сигнала "–Чт.". За период следования сигналов "–Зап." и "–Чт." схема должна успевать выполнить операцию записи и чтения соответственно, кроме того, должен успеть полностью переключиться счетчик адреса памяти.
ОЗУ как информационный буфер
Второе важнейшее применение микросхем оперативной памяти состоит в организации разнообразных информационных буферов, то есть буферной памяти для промежуточного хранения данных, передаваемых между двумя устройствами или системами. Суть информационного буфера состоит в следующем: передающее устройство записывает передаваемые данные в буфер, а принимающее устройство читает принимаемые данные из буфера (рис. 12.10).
Рис. 12.10. Включение буферной памяти
Такое промежуточное хранение позволяет лучше скоординировать работу устройств, участвующих в обмене данными, повысить их независимость друг от друга, согласовать скорости передачи и приема данных.
Пусть, например, в качестве первого устройства выступает компьютер, а в качестве второго - кабель локальной сети. Компьютеру значительно удобнее выдавать данные со скоростью, определяемой его собственным быстродействием, но в локальную сеть надо передавать данные со строго определенной скоростью, задаваемой стандартом на сеть (например, 100 Мбит/с). Кроме того, компьютер, по возможности, не должен отвлекаться на контроль за текущим состоянием сети, за ее занятостью и освобождением. Поэтому буферная память в данном случае необходима. И точно так же она нужна при приеме данных из локальной сети в компьютер.
Главное отличие буферной памяти от памяти для временного хранения информации, рассмотренной в предыдущем разделе, состоит в том, что к информационному буферу всегда имеют доступ не одно внешнее устройство, а два (или даже более). Из-за этого иногда существенно усложняется как схема задания адреса микросхемы памяти, так и схема разделения потоков данных (записываемых в память и читаемых из памяти).
Рис. 12.11. Двунаправленный информационный буфер
Информационные буферы бывают однонаправленными (входными или выходными) и двунаправленными (то есть входными и выходными одновременно - рис. 12.11). Например, буферная память сетевого адаптера двунаправленная, так как она буферирует и информацию, передаваемую в сеть из компьютера, и информацию, принимаемую из сети в компьютер. Двунаправленные буферы всегда сложнее проектировать из-за большего количества потоков данных.
Информационные буферы могут обеспечивать периодический обмен между устройствами или непрерывный обмен между ними. Примером буфера с непрерывным режимом обмена может служить контроллер видеомонитора, информация из которого постоянно выдается на видеомонитор, но может изменяться по инициативе компьютера.
Информационные буферы с периодическим режимом обмена могут быть организованы по типу FIFO или по типу LIFO.
В случае FIFO массив данных читается из памяти одним устройством в том же порядке, в каком он был записан в память другим устройством. Выпускаются даже специальные микросхемы быстродействующей буферной памяти типа FIFO, которые не имеют адресной шины и представляют собой, по сути, многоразрядный сдвиговый регистр. В отличие от обычной микросхемы сдвигового регистра, где читать вдвигаемую информацию можно только тогда, когда она продвинется по всем ячейкам регистра, информацию с выходов буфера FIFO можно начинать читать с выходов сразу же после того, как она начала записываться в его входы. Но мы будем рассматривать здесь только буферы на обычных, традиционных микросхемах памяти, как более универсальные.
В случае информационного буфера LIFO массив данных читается из памяти в порядке, противоположном тому, в котором он был записан в память. Такое решение иногда позволяет проще организовать схему перебора адресов памяти.
Тем самым, разнообразие информационных буферов огромно. Мы же рассмотрим здесь всего три примера схем буферной памяти.
Первая схема - это простейший однонаправленный буфер с периодическим режимом обмена по принципу FIFO (рис. 12.12). Одно устройство записывает информацию в буфер, на другое устройство выдается информация из буфера. Память всегда записывается полностью, по всем адресам, и читается также полностью. Строб записи "–Зап." поступает в режиме записи с частотой, необходимой для записи, строб чтения "–Чт." поступает при чтении с частотой, необходимой для чтения. Шины данных для записи и чтения в память в случае, показанном на рисунке, отдельные.
При таких условиях необходим всего лишь один счетчик для перебора адресов памяти, причем счетчик, работающий только в режиме прямого счета и имеющий вход начального сброса в нуль.
Рис. 12.12. Однонаправленный буфер типа FIFO
Перед началом работы устройство, производящее запись в память, сбрасывает счетчик в нуль сигналом "–Сброс" и устанавливает режим записи в память, перебрасывая в нуль управляющий триггер (единица на инверсном выходе). Затем начинается процесс записи: записываемые данные поступают с однонаправленного входного буфера (АП5) и записываются в память сигналом "–Зап.", который своим задним фронтом переключает адреса памяти. Полная процедура записи включает в себя столько циклов записи, сколько имеется ячеек у используемой памяти.
После окончания процедуры записи устройство, производившее запись, разрешает чтение из памяти, устанавливая в единицу триггер положительным фронтом сигнала "Пуск" (нуль на инверсном выходе). При этом разрешается прохождение сигнала "–Чт.". Адреса памяти переключаются по заднему фронту сигнала "–Чт.", и по этому же фронту данные, читаемые из памяти, фиксируются в выходном регистре, срабатывающем по фронту (например, ИР27). Выходной регистр выполняет две функции: он не пропускает на выход данные, записываемые в память (по сигналу -WE запрещается запись в триггер), а также обеспечивает одновременность изменения всех разрядов читаемых данных. Выходная информация из-за этого регистра задерживается на один период сигнала "–Чт.", что необходимо учитывать. Если взять регистр со входом сброса в нуль, то можно сделать, чтобы при процедуре записи в память на выходе схемы был нулевой код.
После окончания чтения всего объема памяти вырабатывается сигнал переноса счетчика –Р, который снова переводит всю схему в режим записи, сбрасывая триггер в нуль (единица на инверсном выходе). После этого записывающее внешнее устройство снова может начинать процедуру записи в память.
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет- Университет Информационных Технологий - дистанционное образование |
Шины данных для записи и чтения в память в случае, показанном на рисунке, отдельные.
При таких условиях необходим всего лишь один счетчик для перебора адресов памяти, причем счетчик, работающий только в режиме прямого счета и имеющий вход начального сброса в нуль.
Рис. 12.12. Однонаправленный буфер типа FIFO
Перед началом работы устройство, производящее запись в память, сбрасывает счетчик в нуль сигналом "–Сброс" и устанавливает режим записи в память, перебрасывая в нуль управляющий триггер (единица на инверсном выходе). Затем начинается процесс записи: записываемые данные поступают с однонаправленного входного буфера (АП5) и записываются в память сигналом "–Зап.", который своим задним фронтом переключает адреса памяти. Полная процедура записи включает в себя столько циклов записи, сколько имеется ячеек у используемой памяти.
После окончания процедуры записи устройство, производившее запись, разрешает чтение из памяти, устанавливая в единицу триггер положительным фронтом сигнала "Пуск" (нуль на инверсном выходе). При этом разрешается прохождение сигнала "–Чт.". Адреса памяти переключаются по заднему фронту сигнала "–Чт.", и по этому же фронту данные, читаемые из памяти, фиксируются в выходном регистре, срабатывающем по фронту (например, ИР27). Выходной регистр выполняет две функции: он не пропускает на выход данные, записываемые в память (по сигналу -WE запрещается запись в триггер), а также обеспечивает одновременность изменения всех разрядов читаемых данных. Выходная информация из-за этого регистра задерживается на один период сигнала "–Чт.", что необходимо учитывать. Если взять регистр со входом сброса в нуль, то можно сделать, чтобы при процедуре записи в память на выходе схемы был нулевой код.
После окончания чтения всего объема памяти вырабатывается сигнал переноса счетчика –Р, который снова переводит всю схему в режим записи, сбрасывая триггер в нуль (единица на инверсном выходе).
После этого записывающее внешнее устройство снова может начинать процедуру записи в память.
Условия правильной работы схемы следующие. Длительность сигнала "–Зап." не должна быть меньше минимальной длительности сигнала –WR памяти. Период следования сигналов "–Зап." не должен быть меньше суммы длительности сигнала "–Зап." и задержки переключения счетчика. Период следования сигналов "–Чт." не должен быть меньше суммы времени выборки адреса памяти и задержки переключения счетчика. Память должна быть нетактируемой (например, КР541РУ2).
Более сложную структуру имеет двунаправленный буфер с периодическим режимом обмена типа LIFO. Он позволяет выдавать и принимать массивы данных произвольной длины (а не фиксированной длины, как в предыдущем случае) с заданной скоростью. Такая задача возникает, в частности, при проектировании адаптеров локальных сетей. Несмотря на то, что данные читаются из буфера в порядке, обратном тому, в котором они были записаны в буфер, на обмене информацией между двумя буферами это никак не отражается.
Пусть, например, устройство 1 передает информацию в устройство 2, а в качестве промежуточного устройства (устройство 3) выступает кабель сети (рис. 12.13).
Рис. 12.13. Обмен между двумя устройствами через два буфера типа LIFO
Устройство 1 записывает в буфер 1 массив в прямом порядке, буфер 1 выдает этот массив в устройство 3 (сеть) в обратном порядке, буфер 2 принимает массив из сети в обратном порядке, а устройство 2 читает принятую информацию опять же в прямом порядке: то есть читается информация в том же порядке, в каком она и писалась. То же самое происходит и при передаче информации из устройства 2 в устройство 1.
Схема буфера LIFO (рис. 12.14) включает в себя, помимо памяти и двунаправленного буфера, реверсивный счетчик (типа ИЕ7) и реверсивный регистр сдвига (типа ИР24), служащий для преобразования параллельного кода в последовательный при передаче в сеть и последовательного кода в параллельный при приеме из сети.
Режимы работы буфера задаются двумя триггерами, один из которых разрешает режим передачи в сеть, а другой - режим приема из сети.
Рис. 12.14. Двунаправленный буфер типа LIFO
Перед началом работы оба триггера сброшены в нуль, счетчик также сброшен в нуль сигналом "Сброс". Сначала в память записывается передаваемый в сеть массив данных. Запись производится сигналом "–Зап.", задний фронт которого увеличивает выходной код счетчика (адрес памяти) на единицу. После окончания записи массива сигналом "Разр.пер." разрешается передача массива в сеть. В режиме передачи по сигналу строба передачи (TxC) перебираются адреса памяти в обратном порядке (счетчик работает в режиме обратного счета). Данные, читаемые из памяти, записываются в сдвиговый регистр и выдаются в сеть в последовательном коде (TxD). После того как счетчик досчитает до нуля, вырабатывается сигнал переноса <0, который сбрасывает в нуль триггер передачи. То есть в сеть выдается весь массив, записанный в память, независимо от его длины, причем массив выдается в обратном порядке.
В режиме приема информации из сети записывается единица в триггер разрешения приема по сигналу "Разр. пр.". Принимаемые из сети данные в последовательном коде RxD записываются в сдвиговый регистр, а из него уже в параллельном коде - в память. Запись производится по сигналу строба приема RxC, задним фронтом которого переключается счетчик, работающий в режиме инверсного счета. После окончания приема по сигналу "Конец приема" сбрасывается триггер разрешения приема. После этого производится чтение информации из памяти по сигналу "–Чт.". Задним фронтом этого сигнала переключается счетчик, работающий в режиме прямого счета. То есть массив читается в порядке, обратном тому, в котором он пришел из сети.
Условия правильной работы данной схемы аналогичны тем, что были сформулированы для предыдущих рассмотренных схем буферов. Сигналы стробов записи и чтения должны иметь такую длительность, чтобы осуществлять соответственно запись в память и чтение из памяти.
Период следования этих сигналов должен быть таким, чтобы успевали производиться операции записи и чтения, а также успевал переключаться счетчик.
Наконец, последняя схема, которую мы рассмотрим, это буфер с непрерывным режимом работы: с одним из устройств такой буфер общается непрерывно, а с другим - только в момент обращения со стороны этого устройства. В данном случае уже необходимо иметь два счетчика адреса памяти, выходные коды которых надо мультиплексировать с помощью мультиплексора.
Примем для простоты, что буфер - однонаправленный и передающий, то есть одно устройство только записывает в память информацию (в нужные моменты), а на другое устройство постоянно выдается читаемая из всех подряд адресов памяти информация (рис. 12.15).
Рис. 12.15. Передающий буфер с непрерывным режимом работы
Счетчик чтения непрерывно перебирает адреса памяти с частотой тактового генератора. Читаемая из памяти информация записывается в выходной регистр и выдается на выход. В момент записи по сигналу "–Зап." мультиплексор подает на адресные входы памяти выходной код счетчика записи. На память подается сигнал –WR, вложенный в сигнал "–Зап." (он начинается после начала сигнала "–Зап." и заканчивается раньше этого сигнала ). Это достигается применением цепочки из двух инверторов и элемента 2И-НЕ. Такая последовательность сигналов позволяет записать в память входные данные по адресу записи со счетчика записи и не изменять содержимое ячеек памяти с другими адресами.
Перед началом записи памяти счетчик записи сбрасывается в нуль по сигналу "Сброс". После каждой операции записи по заднему фронту сигнала "–Зап." код на выходе счетчика записи увеличивается на единицу. То есть для того чтобы записать всю память, необходимо сбросить счетчик и произвести столько циклов записи, сколько ячеек имеется в памяти.
Условия правильной работы схемы следующие. Счетчики должны быть синхронными для быстрого переключения. Память должна быть нетактируемая и с раздельными входами и выходами данных.
Емкость конденсатора должна быть такой, чтобы формируемый импульс –WR имел достаточную длительность для записи информации в память. За длительность сигнала "–Зап." должен успеть сработать мультиплексор, и должна записаться информация в память. Выходной регистр должен срабатывать по фронту. Длительность периода тактового сигнала должна быть не меньше суммы задержки выборки адреса памяти и задержки переключения счетчика чтения. За период следования сигнала "–Зап." должна успеть записаться информация в память, и должен переключиться счетчик записи.
Недостаток приведенной организации буфера состоит в том, что при проведении цикла записи в память на выходе схемы будет не та информация, которая должна читаться из памяти в данный момент. Преодолеть этот недостаток можно двумя путями.
Первый путь состоит в том, что надо производить запись в память только в те моменты, когда выходная информация буфера не важна. Например, если речь идет о буфере контроллера видеомонитора, то запись в память можно производить только во время кадрового гасящего импульса, когда на экране ничего не отображается.
Второй путь более сложен. Он состоит в том, чтобы разделить во времени запись в память и чтение из памяти. Например, в первой половине такта (то есть периода тактового генератора) производится запись в память (если есть внешний сигнал записи), а во второй половине такта всегда производится чтение информации из памяти и запись ее в выходной регистр. Соответственно мультиплексор в первой половине периода подает на адресные входы памяти адрес записи, а во второй половине - адрес чтения. Временную привязку момента записи к ближайшей первой половине такта можно осуществить с помощью микропрограммного автомата. При таком решении запись в память можно производить в любой момент без искажения читаемой информации, однако существенно (минимум вдвое) возрастают требования к быстродействию всех микросхем.
Улучшение параметров ОЗУ
При применении оперативной памяти часто встает задача улучшить ее характеристики. О совместном включении нескольких микросхем с целью увеличения разрядности шины адреса и шины данных уже говорилось. Здесь же мы остановимся на задаче повышения быстродействия памяти, то есть увеличения предельной тактовой частоты, с которой можно записывать информацию в память и читать информацию из памяти.
Наверное, самое распространенное и самое простое решение, позволяющее повысить быстродействие памяти, состоит в применении сдвиговых регистров. Сдвиговые регистры всегда имеют существенно большее быстродействие, чем память, так как они имеют гораздо более простую структуру. Частота следования тактовых импульсов этих регистров может достигать десятков и сотен мегагерц, тогда как память с такими параметрами найти трудно.
Увеличение быстродействия памяти достигается с помощью сдвиговых регистров очень просто: уменьшение в несколько раз разрядности шины данных памяти позволяет во столько же раз увеличить частоту записи информации в память или чтения информации из памяти.
Например, если необходимо в 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.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.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.
000…000 | 0 |
000…001 | -2-n UREF |
… | … |
100…000 | -2-1 UREF |
… | … |
111…111 | -(1-2-n) UREF |
on_load_lecture()
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет- Университет Информационных Технологий - дистанционное образование |
Рис. 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 . Поскольку применяются два инвертирующих операционных усилителя, инверсии входного сигнала на выходе в данном случае не будет. Если нужен как положительный, так и отрицательный сдвиг, то необходимо применять ЦАП с биполярным выходным сигналом.
Разработка клавиатуры
Различные клавиатуры с большим количеством клавиш (кнопок) широко используются в цифровых системах: в компьютерах, контроллерах, измерительных приборах, в бытовой технике. Основная задача любой клавиатуры довольно проста: она должна при любом нажатии на клавишу выдавать код номера этой клавиши и сигнал флага нажатия клавиши (строб этого кода). Получив этот сигнал флага, внешнее устройство читает код нажатой клавиши и предпринимает требуемые действия.
Главная задача при проектировании клавиатуры состоит в минимизации аппаратных затрат и в обеспечении надежного срабатывания в любой ситуации. Существует масса схемотехнических решений этой задачи — от примитивных до сложнейших. Клавиатуры могут быть механическими, квазисенсорными или сенсорными, клавиатуры могут иметь жесткую логику работы или быть интеллектуальными, даже допускать перепрограммирование. Мы будем в качестве примера рассматривать самую простую механическую клавиатуру с жесткой логикой работы.
Количество клавиш полноразмерной клавиатуры компьютера превышает сотню, поэтому мы будем проектировать клавиатуру на максимальное количество клавиш, равное 128. Естественно, клавиатура должна иметь защиту от дребезга механических контактов и должна корректно обрабатывать ситуацию одновременного нажатия нескольких клавиш. Примем, например, что при одновременном нажатии нескольких клавиш клавиатура должна выдавать код только одной из них. Примем также, что максимально возможный темп нажатия клавиш на клавиатуре не должен превышать 20 нажатий в секунду (это довольно много). Таким образом, основные требования к проектируемому устройству сформулированы. Начнем разработку.
Очень часто удобным и эффективным приемом является начало разработки устройства "с конца". То есть проектирование начинается исходя из требуемого результата, из тех сигналов, которые устройство должно выдавать вовне и принимать извне. И только в конце проектирования разрабатывается та часть устройства, которая выполняет требуемую функцию. Такой подход гарантирует, что разработанное устройство не будет чрезмерно избыточным, не будет делать ничего лишнего, а также то, что оно корректно будет взаимодействовать с другими устройствами и системами. Этот принцип проектирования не универсален, порой выдержать его в течение всего процесса разработки трудно, но попробовать его применить к любому устройству никогда не помешает.
В нашем случае необходимо сначала определиться, что должна выдавать вовне клавиатура. Обычно это задается техническим заданием, но мы примем, что наша клавиатура должна выдавать 7-разрядный двоичный номер нажатой клавиши (так как 27 = 128) и сопровождать его положительным сигналом флага нажатия. Сигнал флага и код клавиши должны сохраняться до тех пор, пока нажата клавиша. За это время (несколько миллисекунд) внешнее устройство должно успеть проанализировать сигнал флага и прочитать выходной код клавиатуры. Обычно данное требование не слишком жесткое.
Альтернативное решение — сохранение кода нажатой клавиши и сигнала флага до момента чтения выходного кода внешним устройством — конечно же, снижает требование к быстродействию читающего внешнего устройства, однако оно может привести к тому, что некоторые нажатия клавиш останутся без реакции, не будут обработаны.
Также необходимо определиться, как клавиатура будет вести себя при одновременном нажатии нескольких клавиш. Наиболее сложные, интеллектуальные клавиатуры выдают последовательно коды всех нажатых клавиш, запоминая их в буферной памяти. Но мы примем, что клавиатура должна выдавать только код одной из одновременно нажатых клавиш (первой по установленному порядку). Нажатия всех остальных клавиш одновременно с данной просто игнорируются.
При проектировании механической клавиатуры важно решить, как будет обрабатываться неизбежно присутствующий дребезг механических контактов клавиш. Его можно обрабатывать как внутри клавиатуры, так и вне ее (то есть перенести эту функцию на внешнее устройство). Оба эти подхода имеют свои преимущества. Но наша клавиатура будет обрабатывать дребезг контактов самостоятельно. Принцип обработки выбираем очень простой: первое зафиксированное замыкание контактов клавиши считается началом нажатия, а конец нажатия определяется тогда, когда контакты будут разомкнуты в течение заданного интервала времени.
В результате временная диаграмма работы разрабатываемой клавиатуры может быть упрощенно представлена в виде рис. 14.1. Здесь сигнал флага начинается при фиксации единичного сигнала с клавиши (это может быть как во время дребезга, так и после его окончания). После выставления флага фиксируется выходной код клавиши. После отпускания клавиши (нулевой сигнал), через время задержки tзад снимается сигнал флага. Время задержки должно быть заведомо больше времени дребезга контактов. Выходной код может сохраняться после отпускания клавиши до следующего нажатия, а может и сниматься.
Рис. 14.1. Временная диаграмма работы клавиатуры
Дальнейшая разработка невозможна без выбора принципа преобразования сигналов от нажатия клавиш в код номера нажатой клавиши.
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет- Университет Информационных Технологий - дистанционное образование |
В результате временная диаграмма работы разрабатываемой клавиатуры может быть упрощенно представлена в виде рис. 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 разрядов), в котором в свернутом виде содержится информация обо всем массиве. При чтении или получении этого массива еще раз вычисляется тот же самый контрольный код по тому же самому алгоритму. Если этот вновь вычисленный код равен тому коду, который был присоединен к массиву, то считается, что массив сохранен или передан без ошибок. Логика здесь следующая: контрольный код (он же контрольная сумма) гораздо меньше контролируемого массива, поэтому вероятность искажения контрольной суммы гораздо меньше, чем вероятность искажения массива. Если же исказятся как массив, так и контрольная сумма, то вероятность того, что эти искажения не будут замечены при повторном подсчете контрольной суммы, крайне мала. Существует, правда, вероятность, что массив будет искажен в нескольких местах таким образом, что контрольная сумма от этих искажений никак не изменится, но такая вероятность также обычно мала.
Контрольные суммы применяются при хранении данных в памяти (оперативной и постоянной), при хранении данных на магнитных носителях (дисках, лентах), в локальных и глобальных сетях передачи информации. В случае защиты контрольной суммой хранимой информации можно определить, что данный массив (файл, сектор на диске) испорчен и его нельзя использовать. В случае защиты контрольной суммой передаваемой по сети информации приемник может потребовать от передатчика повторной передачи искаженного массива.
Существует множество способов вычисления контрольной суммы, различающихся степенью сложности вычисления и надежностью выявления ошибок. Но наибольшее распространение получил в настоящее время так называемый "циклический метод контроля по избыточности" или CRC (Cyclic Redundancy Check), при котором применяется циклическая контрольная сумма.
Вычисляется циклическая контрольная сумма следующим образом. Весь массив информации рассматривается как одно N-разрядное двоичное число, где N — количество бит во всех байтах массива. Для вычисления контрольной суммы это N-разрядное число делится на некоторое постоянное число (полином), выбранное специальным образом (но делится не просто, а по модулю 2). Частное от этого деления отбрасывается, а остаток как раз и используется в качестве контрольной суммы.
Мы не будем углубляться в математическое обоснование этого метода. Интересующиеся читатели могут обратиться к специальной литературе. Здесь же мы отметим только, что данный метод выявляет одиночные ошибки в массиве с вероятностью 100%, а любое другое количество ошибок с вероятностью, примерно равной 1–2-n, где n — количество разрядов контрольной суммы (это верно только при условии, что N гораздо больше n, что, впрочем, почти всегда выполняется). Например, при n = 8 данная вероятность составит 0,996, для n = 16 она будет равна 0,999985, а для n = 32 она будет 0,9999999997672. Иначе говоря, почти все ошибки будут выявляться.
А теперь кратко поясним, что такое деление по модулю 2. Пусть массив (последовательность бит) имеет следующий вид: 101111001110 (для простоты берем небольшую разрядность). Число, на которое делим (называемое обычно образующим полиномом) возьмем 10011. Как оно выбирается? Оно должно делиться по модулю 2 без остатка только на единицу и само на себя (то есть это должно быть простое число в смысле деления по модулю 2). Разрядность полинома берется на единицу большая, чем требуемая разрядность контрольной суммы (остатка от деления). Так, чтобы получить 8-разрядный остаток (8-разрядную контрольную сумму), надо брать 9-разрядный полином. В нашем случае полином 5-разрядный, следовательно, остаток будет 4-разрядный. Для получения 8-разрядного остатка можно использовать, например, полином 1 0001 1101 или 11D в 16-ричном коде.
Деление по модулю 2 производится точно так же, как и привычное для нас деление "в столбик" (рис. 14.6), но вместо вычитания в данном случае используется поразрядное сложение по модулю 2, то есть каждый результирующий бит представляет собой функцию Исключающее ИЛИ от соответствующих битов слагаемых.
Частное от деления нас не интересует, а остаток, равный в нашем примере 1000, и будет циклической контрольной суммой.
Рис. 14.6. Вычисление циклической контрольной суммы
Как практически реализовать вычисление этого остатка (контрольной суммы)? Можно сделать это по приведенному здесь принципу деления в столбик (аппаратно или программно). Но в любом случае это довольно громоздко и медленно. Ускорить процесс вычисления можно, воспользовавшись табличным методом. Для этого составляется таблица чисел размером 2nхn, где n — разрядность контрольной суммы. Принцип вычисления чисел в таблице очень прост (табл. 14.1).
0 | 0 |
1 | Остаток от деления числа 1 0000 0000 на полином |
2 | Остаток от деления числа 10 0000 0000 на полином |
3 | Остаток от деления числа 11 0000 0000 на полином |
4 | Остаток от деления числа 100 0000 0000 на полином |
5 | Остаток от деления числа 101 0000 0000 на полином |
… | … |
255 | Остаток от деления числа 1111 1111 0000 0000 на полином |
Алгоритм вычисления контрольной суммы с помощью этой таблицы следующий (рассматриваем случай n = 8). Берем первый байт нашего информационного массива. Рассматриваем его как адрес в таблице (номер числа). Берем из таблицы число с полученным номером — получаем остаток О1. Берем второй байт массива и складываем его по модулю 2 с остатком О1. Полученное число используем как адрес в таблице. По этому адресу выбираем из таблицы остаток О2. Берем третий байт массива, складываем его по модулю 2 с остатком О2. Используя это число как адрес в таблице, выбираем из нее остаток О3 и так продолжаем до последнего байта массива. Естественно, это будет гораздо быстрее, чем вычисление "в столбик".
Реализация этого алгоритма с помощью цифровых схем требует только ПЗУ с организацией 2nхn (256х8 при 8-разрядной контрольной сумме), n-разрядного регистра и n элементов Исключающее ИЛИ (рис. 14.7). В ПЗУ заносится таблица промежуточных остатков (табл. 14.1), на вход схемы подаются один за другим байты массива, сопровождаемые стробом. Адресом ПЗУ служит сумма по модулю 2 входных данных и содержимого выходного регистра, в который по сигналу строба записывается выходной код ПЗУ. Перед началом вычисления состояние регистра обнуляется. После окончания всего массива в регистре образуется циклическая контрольная сумма.
Недостаток данной схемы параллельного вычислителя очевиден: в случае большого числа разрядов контрольной суммы требуется очень большой объем ПЗУ (64Кх16 для 16-разрядной суммы и 4Гх32 для 32-разрядной суммы). Поэтому она применяется сравнительно редко. Зато параллельный вычислитель обладает высоким быстродействием (байты могут поступать с периодом, равным сумме задержки выходного регистра, времени выборки адреса ПЗУ и задержки элемента Исключающее ИЛИ).
Рис. 14.7. Параллельный вычислитель 8-разрядной циклической контрольной суммы на ПЗУ
Для многоразрядной контрольной суммы чаще применяется другой подход — вычисление в последовательном коде, при котором массив данных поступает на вычислитель последовательно, бит за битом. Последовательный вычислитель контрольной суммы представляет собой сдвиговый регистр с обратными связями от некоторых разрядов через сумматоры по модулю 2 (то есть элементы Исключающее ИЛИ). Полное количество разрядов регистра сдвига должно быть равно разрядности вычисляемой контрольной суммы (или, что то же самое, быть на единицу меньше разрядности используемого полинома). Место включения обратных связей однозначно определяется выбранным полиномом. Это очень похоже на генератор квазислучайной последовательности.
Количество точек включения обратной связи определяется количеством единиц в полиноме (единица в младшем разряде не учитывается), а номера разрядов сдвигового регистра, с которых берутся сигналы обратной связи, определяются номерами единичных разрядов в коде полинома. В отличие от генератора квазислучайного сигнала, в данном случае необходимо смешать по функции Исключающее ИЛИ не только сигналы обратной связи, но и входной сигнал данных в последовательном коде.
Рис. 14.8. Последовательный вычислитель 16-разрядной циклической контрольной суммы на регистре сдвига
На рис. 14.8 приведен пример последовательного вычислителя 16-разрядной циклической контрольной суммы при выбранном полиноме 1 0001 0000 0010 0001 или 11021 в 16-ричном коде (рекомендация МККТТ V.41). Так как в коде полинома три единицы (без младшего разряда), необходимо взять три точки включения обратной связи. При этом номера разрядов сдвигового регистра, к которым подключаются обратные связи, определяются положением единичных битов в полиноме. Перед началом работы сдвиговый регистр необходимо сбросить в нуль (сигнал "–Сброс"). Биты массива должны сопровождаться сигналом строба. После окончания массива в регистре будет циклическая контрольная сумма.
Может показаться, что такой последовательный вычислитель не слишком удобен из-за того, что данные массива должны подаваться на него в последовательном коде. Однако именно в последовательном коде передаются данные в информационных сетях, и в последовательном коде записываются данные на магнитные носители. Поэтому во всех подобных случаях последовательные вычислители идеально подходят.
Период поступления битов массива на последовательный вычислитель не должен быть меньше суммы задержки регистра сдвига и элементов Исключающее ИЛИ. В итоге предельная скорость вычисления
Разработка генератора аналоговых сигналов
Цифровые генераторы (или, как их еще называют, синтезаторы) аналоговых сигналов произвольной формы часто используются при отладке различных аналоговых и аналого-цифровых устройств и систем. Они позволяют не только получить сигналы разных стандартных и нестандартных форм, но и обеспечить высокую точность задания амплитуды и частоты сигнала, не достижимые в случае обычных аналоговых генераторов. Цифровые генераторы работают обычно под управлением компьютеров или контроллеров, что обуславливает большие удобства пользователя и широкие возможности по заданию разнообразных форм сигналов и по их хранению.
Мы будем разрабатывать довольно простой генератор, рассчитанный на звуковой диапазон частот выходного сигнала 20 Гц ... 20 кГц (период от 50 мкс до 50 мс). Генератор должен формировать сигналы произвольной формы с амплитудой, задаваемой управляющим кодом. Генератор должен работать в режиме автоматической (периодической) генерации, а также в режиме разовой генерации с остановкой генерации после окончания одного периода выходного сигнала. Управление работой генератора должно быть полностью цифровым.
Отметим, что в реальности сигналы сложной формы, как правило, бывают низкочастотными. Они встречаются, например, при виброиспытаниях, в медицинской технике, в сейсмической технике и т.д. Высокочастотные сигналы обычно имеют довольно простую форму, например, синусоидальную. Поэтому наш простой генератор, рассчитанный на невысокие частоты, будет, тем не менее, удовлетворять требованиям довольно широкого спектра применений.
Разработку генератора мы начнем "с конца", то есть с того выходного сигнала, который он должен формировать.
Как уже отмечалось в лекции 13 , выходной сигнал ЦАП UЦАП представляет собой ступенчатую функцию, которую можно представить в виде суммы идеального ("гладкого") аналогового сигнала UВЫХ и пилообразного сигнала помехи UПОМ (рис. 15.9).
Сигнал помехи UПОМ имеет основную частоту, равную частоте поступления входных кодов на ЦАП. Для сглаживания ступенек выходного сигнала ЦАП и приближения его к идеальному сигналу UВЫХ можно применить простой аналоговый фильтр низкой частоты (ФНЧ), который должен существенно ослаблять сигнал помехи, но не ослаблять полезный выходной сигнал генератора. В примере на рис. 15.9 частота полезного сигнала в 16 раз меньше частоты сигнала помехи, поэтому задача фильтрации не слишком сложна. Однако от генератора сигналов произвольной формы может понадобиться синтез выходных сигналов с крутыми фронтами (например, прямоугольных или пилообразных сигналов). В этом случае применение такого выходного фильтра низкой частоты может исказить выходные сигналы, затянув их фронты. Поэтому целесообразно предусмотреть два выхода генератора: один с низкочастотной фильтрацией, а другой без нее.
Рис. 15.9. Цифровая генерация аналогового сигнала
Помимо фильтра низкой частоты, выходной узел генератора сигналов должен содержать схему задания амплитуды выходного сигнала. В случае использования оперативной памяти для хранения кодов выборок выходного сигнала, схема задания амплитуды может и отсутствовать. При этом в память необходимо заносить коды выборок сигнала с нужной амплитудой. Однако такой подход не слишком удобен, так как он требует пересчета всех кодов выборок для каждой новой амплитуды сигнала выбранной формы. Гораздо удобнее сделать так, чтобы в памяти всегда хранились коды выборок сигнала с максимально возможной амплитудой, а выходной сигнал с ЦАП ослаблялся управляемым аттенюатором в нужное количество раз.
В результате схема выходного узла генератора аналоговых сигналов будет включать в себя еще и управляемый аттенюатор, рассмотренный в разделе 7.1 (рис. 15.10).
Рис. 15.10. Схема выходного узла генератора
Аналоговый фильтр нижней частоты должен иметь коэффициент передачи в полосе пропускания, равный единице и частоту среза, обеспечивающую эффективное подавление сигнала помехи. Тип схемы фильтра и его порядок не слишком важны. Для удобства пользователя целесообразно сделать фильтр неинвертирующим, чтобы выходные сигналы на обоих выходах генератора (UВЫХ1 и UВЫХ2) были одной полярности. Аттенюатор управляется 8-разрядным кодом амплитуды, что обеспечивает коэффициент деления сигнала от 1/256 до 1. Если амплитуда исходного сигнала UЦАП равна 10 В, то амплитуда выходного сигнала (UВЫХ1 и UВЫХ2) может быть задана с точностью около 40 мВ. Увеличение разрядности кода амплитуды потребовало бы принятия специальных мер, так как слишком малые аналоговые сигналы сильно искажаются шумами и помехами по цепям питания. ЦАП необходимо применять умножающий с биполярным выходом, чтобы обрабатывать как положительные, так и отрицательные выходные сигналы.
Теперь переходим к проектированию собственно цифровой части генератора.
Как уже отмечалось ранее, основной узел генератора должен представлять собой буферную оперативную память с периодическим режимом работы. Причем буфер этот должен быть однонаправленным. Перед началом работы в буфер заносится массив кодов выборок синтезируемого сигнала, а во время работы генератора адреса памяти опрашиваются в нужном темпе, и выходные коды памяти подаются на ЦАП, формирующий аналоговый сигнал UЦАП. Проблема состоит в выборе нужного объема памяти и в способе перебора адресов для обеспечения нужной частоты выходного сигнала. Память может также быть постоянной (ПЗУ), если необходимо формировать одну или несколько постоянных форм сигналов. В этом случае операция записи в память исключается, но проблема выбора способа перебора адресов памяти остается.
Существует два основных способа перебора адресов памяти генератора аналоговых сигналов, каждый из которых имеет свои достоинства и недостатки.
Рис. 15.11. Опрос памяти с помощью двоичного счетчика
Первый, простейший способ предусматривает перебор адресов памяти генератора с помощью обычного двоичного счетчика. В данном случае, опрашиваются все адреса памяти подряд. Изменение частоты аналогового выходного сигнала генератора производится с помощью изменения тактовой частоты этого счетчика, для чего используется тот или иной управляемый делитель частоты опорного кварцевого генератора (рис. 15.11). Частота выходного сигнала будет определяться при таком решении по формуле fвых = fГ/(N2n), где fГ — частота задающего кварцевого генератора, N — управляющий код делителя частоты, n — разрядность счетчика (разрядность шины адреса памяти).
Главное достоинство данного подхода состоит в том, что при изменении частоты выходного сигнала не меняется точность воспроизведения формы выходного сигнала. Ведь точность воспроизведения формы аналогового сигнала зависит в первую очередь от количества выборок, приходящихся на период выходного сигнала, а здесь оно постоянно и равно количеству адресов памяти. Например, если память имеет 1К адресов, то выходной сигнал при любой частоте будет задаваться с помощью 1024 точек, и он всегда будет иметь 1024 ступеньки.
Однако данное решение имеет и серьезные недостатки. Основной его недостаток состоит в том, что частота сигнала помехи в данном случае прямо пропорциональна частоте выходного аналогового сигнала генератора (она больше частоты выходного сигнала во столько раз, сколько адресов имеет память). Например, при 1К адресов памяти частота сигнала помехи в 1024 раз больше частоты выходного сигнала, и при изменении частоты выходного сигнала в 1000 раз также в 1000 раз будет изменяться частота сигнала помехи. Отфильтровать такую помеху переменной частоты чрезвычайно трудно, если не невозможно, так как требуется применение фильтра с частотой среза, изменяемой в очень широких пределах.
Другой существенный недостаток данного метода связан с высокими требованиями к быстродействию ЦАП. Например, если максимальная частота выходного аналогового сигнала генератора должна быть 20 кГц, а память имеет 1К адресов, то ЦАП должен успевать работать с частотой более 20 МГц, то есть иметь время установления менее 50 нс. При большей частоте выходного сигнала и при большем объеме памяти требования к быстродействию ЦАП будут еще выше. И с такой же скоростью должна работать буферная память, то есть требования к быстродействию памяти также велики.
Разработка логического анализатора
Логический анализатор — это контрольно-измерительный прибор, предназначенный для запоминания (фиксации) и последующего анализа (например, просмотра на экране) временных диаграмм большого количества цифровых сигналов. Логические анализаторы используются при динамической отладке различных цифровых устройств и систем, а также при контроле их работы. Совершенно незаменимы они при разработке и отладке различных микропроцессорных систем, контроллеров, компьютеров, где используется большое количество многоразрядных шин цифровых сигналов. Именно логические анализаторы позволяют разработчику увидеть те временные диаграммы, которые он рисует на бумаге при проектировании своего устройства, причем увидеть их в реальном масштабе времени, посмотреть, как работает устройство на своей нормальной рабочей скорости.
Логический анализатор по своему назначению близок к осциллографу, так как он также позволяет наблюдать на экране временные диаграммы сигналов. Но существуют и существенные отличия логического анализатора от обычного (не цифрового) осциллографа:
Логический анализатор работает только с цифровыми, то есть двухуровневыми (реже трехуровневыми) сигналами, а осциллограф — с аналоговыми сигналами, имеющими бесконечно большое число разрешенных уровней.Логический анализатор имеет большое количество входных линий (обычно от 16 до 64), то есть позволяет одновременно фиксировать множество входных сигналов, а осциллографы обычно позволяют одновременно увидеть не более четырех входных сигналов.Логический анализатор работает в режиме однократного запоминания временных диаграмм (как запоминающий осциллограф). То есть анализатор запоминает состояния входных сигналов в течение заданного времени (называемого окном регистрации), а затем дает возможность анализировать зафиксированные последовательности. Осциллограф же работает обычно в режиме непрерывной развертки, то есть он не запоминает формы входного сигнала и позволяет наблюдать только повторяющиеся, периодические сигналы.Логический анализатор предусматривает возможность так называемой предпусковой регистрации. Эта возможность предусматривается и в цифровых осциллографах, но ее нет в аналоговых осциллографах.Рассмотрим подробнее, что такое предпусковая регистрация.
Процесс регистрации входных сигналов (или отображения их на экране в обычном осциллографе) всегда должен быть привязан к какому-то моменту времени, к какому-то внешнему событию, называемому запуском. Иначе разобраться в отображаемых сигналах будет совершенно невозможно. Например, в осциллографах моментом запуска обычно является момент превышения входным исследуемым сигналом установленного порога. Сигналом запуска может служить и специальный внешний синхронизирующий сигнал. В логических анализаторах в качестве запуска обычно используется момент появления на входах заданного уровня или заданной последовательности одного или нескольких входных сигналов.
В обычных осциллографах отображение формы входного сигнала (или входных сигналов) начинается в момент запуска, то есть на экране видно только то, что происходило со входными сигналами после момента запуска. Такая регистрация может быть названа послепусковой. Можно также сказать, что точка запуска всегда находится в начале окна регистрации (рис. 15.1).
Рис. 15.1. Послепусковая регистрация в аналоговых осциллографах
В логических анализаторах (и в цифровых осциллографах) существует возможность увидеть и зафиксировать не только то, что было после запуска, но еще и то, что происходило в течение определенного времени до момента запуска. Именно эта регистрация до момента запуска и называется предпусковой регистрацией. В этом случае точка запуска может находиться и в начале, и в середине, и в конце окна регистрации (рис. 15.2). Понятно, что такая возможность очень удобна, так как, выбирая величину длительности предпусковой регистрации, можно увидеть те события, временная привязка к началу которых затруднена или попросту невозможна. Длительность (глубина) предпусковой регистрации может быть постоянной (например, равной половине длительности окна регистрации) или переменной (то есть задаваться пользователем в пределах от нуля до полной длительности окна регистрации). При переменной глубине предпусковой регистрации точка запуска может располагаться в любой точке окна регистрации — от его начала до конца.
С точки зрения схемотехники, логический анализатор представляет собой быстродействующую буферную оперативную память, работающую в периодическом режиме. Буфер этот однонаправленный: сначала в буферную память с большой тактовой частотой последовательно записываются состояния нескольких входных сигналов, а затем эта информация последовательно читается из буфера. Таким образом, адреса буферной памяти могут перебираться одним и тем же счетчиком как в режиме записи, так и в режиме чтения. Структура таких буферов уже рассматривалась.
Рис. 15.2. Предпусковая регистрация в логических анализаторах и цифровых осциллографах
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет- Университет Информационных Технологий - дистанционное образование |
При переменной глубине предпусковой регистрации точка запуска может располагаться в любой точке окна регистрации — от его начала до конца.
С точки зрения схемотехники, логический анализатор представляет собой быстродействующую буферную оперативную память, работающую в периодическом режиме. Буфер этот однонаправленный: сначала в буферную память с большой тактовой частотой последовательно записываются состояния нескольких входных сигналов, а затем эта информация последовательно читается из буфера. Таким образом, адреса буферной памяти могут перебираться одним и тем же счетчиком как в режиме записи, так и в режиме чтения. Структура таких буферов уже рассматривалась.
Рис. 15.2. Предпусковая регистрация в логических анализаторах и цифровых осциллографах
Главные особенности логического анализатора, по сравнению со стандартной структурой информационного буфера на основе оперативной памяти, следующие:
большое число разрядов шины данных (то есть входных сигналов, каналов регистрации анализатора);необходимость обеспечения режима предпусковой регистрации;необходимость временной привязки процесса регистрации (записи в память) к состояниям входных сигналов (обеспечение запуска).Первая из этих особенностей приводит к тому, что данные при чтении приходится считывать не все сразу, а по очереди (особенно при числе разрядов больше 32). Обычно данные требуется читать по 8 или по 16 разрядов. В результате усложняется та часть схемы буферной памяти, которая отвечает за чтение данных.
Вторая особенность требует существенного усложнения схемы счетчика, перебирающего адреса буферной памяти.
Наконец, третья особенность требует усложнения схемы управления работой информационного буфера.
Логические анализаторы делятся на синхронные (или анализаторы логических состояний) и асинхронные (или анализаторы временных диаграмм). Синхронные анализаторы работают от тактового генератора исследуемой схемы и фиксируют только временные сдвиги, кратные его периоду, а следовательно, выявляют только нарушения в логике работы схемы.
Асинхронные анализаторы работают от собственного внутреннего тактового генератора, поэтому они позволяют измерять абсолютные значения временных сдвигов между сигналами и могут выявлять ошибки из-за неправильно рассчитанных задержек, из-за емкостных эффектов и т.д. Они обычно делаются гораздо более быстрыми, чем синхронные анализаторы (рассчитываются на предельно возможную частоту регистрации). В идеале, логический анализатор должен обеспечивать оба эти режима работы, то есть работать как от своего внутреннего тактового генератора с разными тактовыми частотами, так и от внешнего тактового сигнала. Иначе говоря, тактовый генератор анализатора должен быть также достаточно сложным.
Сформулируем исходные данные для проектирования логического анализатора. В данном случае нам важно не получить рекордные характеристики, а всего лишь продемонстрировать принципы разработки подобных схем на основе буферной памяти. Пусть количество входных линий анализатора (каналов регистрации) равно 32, количество регистрируемых состояний — 4096, максимальная тактовая частота — 10 МГц, тактовый генератор — внутренний с изменяемой частотой или внешний, запуск — по положительному или отрицательному фронту (синхропереходу) на одной из 8 входных линий, глубина предпусковой регистрации — задается программно. Будем также считать, что данные из памяти читаются порциями по 8 разрядов.
Таким образом, буферная оперативная память анализатора должна иметь объем 128 Кбит при организации 4Кх32. Помимо оперативной памяти, анализатор должен включать в себя счетчик для перебора адресов с количеством разрядов не менее 12. В структуре анализатора должен быть также внутренний тактовый генератор с программно изменяемой частотой и возможностью подключения внешнего тактового сигнала. Наконец, необходимо наличие схемы запуска анализатора, которая будет выбирать одну из 8 входных линий и полярность синхроперехода (положительный или отрицательный фронт).
Память целесообразно выполнить на многоразрядных микросхемах ОЗУ (для снижения количества микросхем).
Требования к быстродействию памяти в данном случае не слишком высоки (при максимальной тактовой частоте 10 МГц в течение 100 нс необходимо успеть переключить счетчик адресов и записать входную информацию в ОЗУ). Микросхем памяти, способных обеспечить такую скорость работы, достаточно много.
От счетчика адресов памяти требуется максимальное быстродействие (можно взять, например, микросхемы синхронных счетчиков КР531ИЕ17, которые достаточно легко каскадируются без потери быстродействия). Кроме простого перебора адресов, счетчик должен также обеспечивать предпусковую регистрацию. Остановимся на этом несколько подробнее.
Для того чтобы реализовать предпусковую регистрацию, необходимо обеспечить непрерывную перезапись по кругу содержимого буферной памяти до момента прихода запуска (рис. 15.3).
Рис. 15.3. Организация предпусковой регистрации
То есть после записи последнего 4095 адреса надо записывать информацию по нулевому адресу. Если мы выбираем глубину предпусковой регистрации N тактов, то надо остановить регистрацию через (4096–N) тактов после момента прихода запуска. После остановки регистрации надо считывать содержимое памяти, начиная с точки остановки, с перебором адресов в том же самом направлении, что и при регистрации. Проведя 4096 операций чтения содержимого памяти, мы получим информацию о состоянии входных сигналов в течение N тактов до запуска и (4096–N) тактов после запуска, то есть моменту прихода запуска будет соответствовать содержимое адреса памяти, считанного N-ым.
Однако все произойдет именно таким образом только в том случае, если от момента начала регистрации до момента прихода запуска логический анализатор успеет зафиксировать N тактов. Иначе, остановив регистрацию через (4096–N), мы не перепишем всю память, и в части его адресов будет находиться предыдущая информация. Чтобы избежать этого, надо запретить реакцию на запуск в течение N тактов после начала регистрации (выдержать своеобразное "мертвое" время). А что будет, если запуск придет в течение этого самого "мертвого" времени? Если исследуемый процесс — периодический (то есть все входные сигналы повторяются через какое-то время), то анализатор среагирует на следующий запуск после окончания "мертвого" времени.
Если же исследуемый процесс — однократный, не повторяющийся, то надо начать процесс регистрации заведомо раньше (на "мертвое" время или больше), чем начнется изучаемый процесс (например, если мы исследуем старт компьютера при включении питания).
Рис. 15.4. Временная диаграмма работы счетчиков логического анализатора
В результате счетчики анализатора должны обеспечивать временную диаграмму, показанную на рис. 15.4.
Адреса памяти начинают перебираться с началом регистрации. В течение N тактов после начала регистрации реакция на запуск запрещается, а затем разрешается. Через (4096–N) тактов после прихода запуска регистрация прекращается.
Отметим, что точно так же может быть реализована предпусковая регистрация в цифровом осциллографе. По сравнению с логическим анализатором, в схему надо будет добавить только один или несколько АЦП и некоторые другие цифро-аналоговые узлы.
Спроектируем схему счетчиков, реализующую приведенную временную диаграмму.
Счетчик, перебирающий адреса памяти, должен быть 12-разрядным, так как 212=4096. Во время регистрации он должен работать в непрерывном режиме, реализуя постоянную перезапись по кругу всей буферной памяти. На этот же счетчик можно возложить функцию отсчета "мертвого" времени (N тактов). Но этот счетчик не может отсчитывать еще и (4096–N) тактов после прихода запуска, так как запуск может прийти в любой момент после окончания "мертвого" времени. Для этого понадобится уже другой счетчик, причем также 12-разрядный.
Этот второй счетчик должен начинать работу только после прихода запуска (по сигналу "Разрешение запуска") и должен отсчитывать всего (4096–N) тактов, после чего завершать регистрацию. То есть получается, что логический анализатор начинает регистрацию по внешнему управляющему сигналу, а заканчивает автоматически через (4096–N) тактов после запуска, о чем должен сообщать вовне сигнал флага окончания регистрации.
Рис. 15.5. Схема счетчиков логического анализатора
Таким образом, один 12-разрядный счетчик должен отсчитывать N тактов, а другой 12-разрядный счетчик должен отсчитывать (4096–N) тактов. Проще всего организовать такой режим, если в оба счетчика записать до начала работы код N и задать первому счетчику инверсный режим счета, а второму — прямой режим счета. Перебор адресов памяти первым счетчиком начнется с адреса N и будет происходить на уменьшение (а не на увеличение, как на рис. 15.3), однако для работы буферной памяти это не имеет никакого значения.
Сигнал переноса первого счетчика появится через N тактов после начала регистрации. Этот сигнал должен разрешать ожидание запуска (сигнал РЗ на рис. 15.4). Когда же приходит запуск, то разрешается работа второго счетчика, начинающего считать с кода N на увеличение. В результате сигнал переноса второго счетчика появится через (4096–N) тактов после начала его работы. Этот сигнал должен остановить процесс регистрации.
После окончания регистрации должен начаться процесс чтения из памяти. При этом первый счетчик должен перебирать адреса памяти по стробу чтения в том же направлении, что и при записи (то есть в режиме инверсного счета). 4096 последовательно произведенных циклов чтения позволит перебрать все 4096 адресов памяти, причем на N-ом цикле чтения будет прочитан такт, в котором произошел запуск.
Схема счетчиков логического анализатора, реализующая описанный алгоритм, приведена на рис. 15.5.
Два 12-разрядных счетчика реализованы на шести микросхемах ИЕ17. Первый счетчик (на рисунке вверху) работает в режиме инверсного счета, второй (на рисунке внизу) — в режиме прямого счета. Перед началом работы в оба счетчика по внешнему сигналу "–Зап." записывается код N. Причем четыре младших разряда 12-разрядного кода N равны нулю, а записываются только 8 старших разрядов. Это приводит к тому, что глубина предпусковой регистрации может задаваться с точностью до 16 тактов и принимать значения из ряда: 0, 16, 32, 48, 64,..., 4080. При записи на входы счетчиков –EWR и С поступают отрицательные сигналы, причем сигнал –EWR задержан относительно сигнала С на двух инверторах и (при необходимости) на конденсаторе.
В результате положительный фронт сигнала С приходит тогда, когда сигнал –EWR равен нулю, что и требуется для записи.
На вход С обоих счетчиков могут приходить еще два сигнала: строб чтения из памяти "–Чт." и тактовый сигнал "Такт". Сигнал "Такт" приходит при регистрации (в режиме записи в память), а сигнал "–Чт." поступает при чтении из памяти зарегистрированной информации.
После того как в оба счетчика записан код N, необходимо начать регистрацию по внешнему сигналу "–Старт". Этот сигнал сбрасывает в нуль триггеры 1 и 2 и устанавливает в единицу триггер 3. Выходной сигнал триггера 3 разрешает регистрацию (сигнал "Рег." на рис. 15.4), то есть разрешает прохождение тактовых импульсов на входы счетчиков С. Это приводит к тому, что начинает работу первый счетчик, а второму счетчику работа запрещается по входу -ECT выходным сигналом триггера 2.
Первый счетчик, выходной код которого используется как адрес памяти, отсчитывает N тактов в инверсном режиме и вырабатывает сигнал переноса -CR. Этим сигналом перебрасывается в единицу триггер 1. Затем первый счетчик продолжает перебирать адреса памяти по кругу, а запись нулей в триггер 1 запрещается элементом 2И-НЕ на входе триггера. Выходной сигнал триггера 1 (сигнал РЗ на рис. 15.4) разрешает работу триггера 2 и тем самым разрешает реакцию схемы на сигнал запуска "Запуск" (положительный фронт).
После прихода сигнал "Запуск" перебрасывается в единицу триггер 2, разрешая работу второго счетчика. Первый счетчик в это время продолжает считать. Второй счетчик начинает свой счет с кода N, досчитывает в режиме прямого счета до 4096 и своим сигналом переноса –CR перебрасывает в нуль триггер 3. Это приводит к запрету поступления тактовых импульсов на вход С счетчиков и к остановке регистрации.
После этого может начаться чтение записанной информации по стробу "–Чт.". По заднему (положительному) фронту этого сигнала первый счетчик будет перебирать адреса памяти в инверсном режиме.
Второй счетчик также будет считать, но это не имеет никакого значения. После 4096 циклов чтения вся информация из памяти будет прочитана, и схема будет готова к новой регистрации.
Перейдем теперь к проектированию других узлов логического анализатора.
Как уже отмечалось, тактовый сигнал анализатора может быть как внутренним (от внутреннего тактового генератора), так и внешним (от исследуемой схемы). Для повышения универсальности анализатора целесообразно обеспечить его работу на нескольких тактовых частотах. Большие частоты будут использоваться для анализа быстрых процессов, а малые частоты — для анализа длительных процессов. Тактовая частота не должна при этом принимать слишком много значений. Вполне достаточно ряда нескольких частот, различающихся вдвое.
Пример схемы тактового генератора для логического анализатора приведен на рис. 15.6.
Рис. 15.6. Тактовый генератор логического анализатора
Тактовый генератор анализатора выполнен на кварцевом генераторе, 6-разрядном счетчике (ИЕ19) и 8-канальном мультиплексоре (КП7). Он может выдавать на выход ряд тактовых частот, различающихся в 2 раза (период 100, 200, 400, 800, 1600, 3200, 6400 нс) или внешний тактовый сигнал ВТС. То есть он позволяет реализовать как синхронный, так и асинхронный режим работы логического анализатора. Счетчик может быть применен асинхронный (ИЕ19), так как каждый его выход используется самостоятельно, независимо от других. Выбор канала мультиплексора (вида тактового сигнала) осуществляется 3-разрядным кодом выбора такта, причем код 111 будет соответствовать внешнему тактовому сигналу.
Схема запуска анализатора должна обеспечивать выбор положительного или отрицательного фронта (синхроперехода) на одной из 8 входных линий анализатора. Выходным сигналом запуска является положительный фронт (см. рис. 15.5). Для выбора одного из восьми входных сигналов удобно использовать 8-канальный мультиплексор (КП7), а для выбора полярности перехода можно применить элемент Исключающее ИЛИ, включенный в режиме управляемого инвертора.
Схема запуска получается очень простой (рис. 15.7). Выбор входного сигнала, по которому будет производиться запуск, осуществляется 3-разрядным управляющим кодом выбора синхролинии. Выбор полярности перехода производится внешним сигналом выбора полярности, причем единица на этом входе соответствует отрицательному фронту, а нуль — положительному фронту.
Рис. 15.7. Схема запуска логического анализатора
Наконец, последний узел логического анализатора — это память с буферами данных. Память должна иметь организацию 4Кх32, для чего придется использовать 4 микросхемы, так как обычно микросхемы оперативной памяти бывают 8-разрядные. Шина данных таких микросхем двунаправленная, поэтому требуется применение буферов для данных. Память должна работать в режиме записи при регистрации и в режиме чтения при чтении информации, зарегистрированной логическим анализатором. Для упрощения схемы целесообразно использовать нетактируемые микросхемы памяти.
В режиме записи сигнал –CS памяти должен представлять собой отрицательные импульсы на каждый адрес памяти, а сигнал –WR должен быть постоянно активным (нулевым). Отметим, что некоторые микросхемы памяти (например, КР541РУ2) могут записывать информацию и при постоянных нулевых уровнях обоих сигналов -CS и -WR при изменении только адресов памяти. Использование таких микросхем еще более упрощает схему.
В режиме чтения сигнал –CS должен быть постоянно активным (нулевым), а сигнал –WR должен быть постоянно равен единице. Смена читаемой информации будет производиться только сменой адресов памяти.
Для чтения информации из памяти порциями по 8 разрядов надо применить четыре 8-разрядных однонаправленных буфера (типа АП5). Каждый из них будет открываться своим стробом чтения и выдавать на общую 8-разрядную шину данных по 8 разрядов читаемой из памяти информации. Таким образом, чтение 32 разрядов из одного адреса памяти потребует четырех циклов чтения из логического анализатора. Смена адреса памяти должна происходить после последнего из этих четырех циклов чтения.
То есть для чтения всего объема памяти потребуется 16384 циклов чтения по 8 разрядов из логического анализатора.
Помимо буфера чтения необходимо применить также входной 32-разрядный буфер, который будет пропускать входные (регистрируемые) сигналы на память в режиме регистрации и будет закрываться после окончания регистрации. Назначение этого буфера состоит в том, чтобы не выдавать на входные линии логического анализатора читаемую из памяти по двунаправленной шине данных информацию. Этот буфер также можно построить на микросхемах однонаправленных буферов типа АП5.
Рис. 15.8. Схема памяти логического анализатора
В результате схема памяти логического анализатора будет иметь вид, показанный на рис. 15.8.
Объединение четырех микросхем памяти производится стандартным образом: объединяются одноименные разряды адреса, сигналы –CS и –WR всех микросхем. На входы –CS подается сигнал, равный нулю при отсутствии регистрации (нулевой сигнал "Рег.") и равный инверсному тактовому сигналу при регистрации (отрицательному импульсу на каждый адрес памяти). Минимальная длительность импульса -WR равна в режиме записи половине периода тактового сигнала с частотой 10 МГц, то есть 50 нс, поэтому память должна успевать за это время записать информацию. На входы –WR подается сигнал "-Рег.", равный нулю при регистрации и единице при отсутствии регистрации. Если память может записывать информацию при постоянных нулевых сигналах -CS и -WR, то на вход –CS можно постоянно подать нулевой уровень.
Четыре микросхемы АП5 входного буфера (справа по рисунку) управляются сигналом "-Рег.": они открываются на все время регистрации и закрываются, когда регистрации нет.
Четыре микросхемы АП5 буфера чтения открываются на чтение (выдают 8-разрядные читаемые данные) каждая свои стробом чтения: "–Чт.1" ... "–Чт.4". При этом сигнал "–Чт.4" (его задний фронт) используется для переключения счетчиков адреса памяти при чтении (см. сигнал "–Чт." на рис. 15.6).
Для чтения информации из одного адреса памяти нужно последовательно подать сигналы "–Чт.1" ... "-Чт.4", после чего адрес переключится на следующий.
В качестве синхролиний для запуска анализатора (см. рис. 15.7) используются восемь разрядов данных памяти. В режиме регистрации на них приходят 8 входных сигналов логического анализатора.
Таким образом, схема логического анализатора спроектирована полностью.
Сформулируем теперь порядок управления этой схемой. Управлять ею может, например, компьютер или контроллер, который будет отображать, обрабатывать и хранить зарегистрированные последовательности входных сигналов.
Перед началом регистрации необходимо записать в счетчики анализатора код N (количество тактов предпусковой регистрации) по сигналу записи "-Зап." (см. рис. 15.5). Необходимо также установить 7-разрядный управляющий код, который определит режим работы анализатора. Три разряда этого кода задают тип тактового сигнала анализатора (см. рис. 15.6). Три разряда выбирают номер входного сигнала (из восьми возможных), на котором фронт будет служить запуском, а последний седьмой разряд определит полярность этого фронта, синхроперехода (см. рис. 15.7). После этого можно начинать регистрацию по сигналу "–Старт" (см. рис. 15.5). Анализатор отсчитает "мертвое" время, зафиксирует приход синхроперехода (запуск) и остановит регистрацию через нужное количество тактов после запуска. Узнать о том, что регистрация завершилась, можно, исходя из анализа сигнала "Рег." (см. рис. 15.5). Затем можно начинать чтение из буферной памяти анализатора по стробам "–Чт.1" ... "–Чт.4" (см. рис. 15.8). Когда информация из всех 4096 адресов па мяти будет прочитана, анализатор снова будет готов к регистрации.
Микросхемы, параметры, сигналы
CL | CН | Допустимая емкость нагрузки |
FM | FМАКС | Максимальная частота переключения триггера |
ICC | IП | Ток потребления |
II | IВХ | Входной ток |
IO | IВЫХ | Выходной ток |
IIL | I0ВХ | Входной ток низкого уровня |
IIH | I1ВХ | Входной ток высокого уровня |
IOL | I0ВЫХ | Выходной ток низкого уровня |
IOH | I1ВЫХ | Выходной ток высокого уровня |
tLH | t01 | Время фронта сигнала при переходе из низкого уровня в высокий |
tHL | t10 | Время фронта сигнала при переходе из высокого уровня в низкий |
tPLH | t01З | Время задержки при переходе из низкого уровня в высокий |
tPHL | t10З | Время задержки при переходе из высокого уровня в низкий |
tPZL | tZ0З | Время задержки при переходе из третьего состоя-ния в низкий уровень |
tPZL | tZ1З | Время задержки при переходе из третьего состоя-ния в высокий уровень |
UCC | UП | Напряжение питания |
UIL | U0ВХ | Входное напряжение низкого уровня |
UIH | U1ВХ | Входное напряжение высокого уровня |
UOL | U0ВЫХ | Выходное напряжение низкого уровня |
UOH | U1ВЫХ | Выходное напряжение высокого уровня |
АГ1 | 121 | Одновибратор без перезапуска |
АГ3 | 123 | Два одновибратора с перезапуском |
АГ4 | 221 | Два одновибратора без перезапуска |
АП3 | 240 | Два 4-разрядных буфера с 3С и инверсией |
АП4 | 241 | Два 4-разрядных буфера с 3С |
АП5 | 244 | Два 4-разрядных буфера с 3С |
АП6 | 245 | 8-разрядный двунаправленный буфер с 3С |
АП9 | 640 | 8-разрядный двунаправленный буфер с 3С |
АП10 | 640 | 8-разрядный двунаправленный буфер с 3С и инверсией |
АП14 | 465 | 8-разрядный буфер с 3С |
АП15 | 466 | 8-разрядный буфер с 3С и инверсией |
АП16 | 643 | 8-разрядный буфер с 3С |
АП20 | 646 | 8-разрядный двунаправленный буфер с регистром и с 3С |
ВА1 | 226 | Схема сопряжения с магистралью |
ВЖ1 | 630 | 16-разрядная схема контроля по коду Хемминга |
ГГ1 | 124 | Два генератора, управляемых напряжением |
ИВ1 | 148 | Приоритетный шифратор 8-3 |
ИВ3 | 147 | Приоритетный шифратор 9-4 |
ИД1 | 14 | Двоично-десятичный дешифратор с высоковольтным выхо-дом |
ИД3 | 154 | Дешифратор 4-16 |
ИД4 | 155 | Сдвоенный дешифратор 2-4 |
ИД5 | 156 | Два дешифратора 2-4 с ОК |
ИД6 | 42 | Двоично-десятичный дешифратор 3-8 |
ИД7 | 138 | Дешифратор 3-8 |
ИД10 | 145 | Двоично-десятичный дешифратор 3-8 с большим выходным током |
ИД14 | 139 | Два дешифратора 2-4 |
ИД18 | 247 | Дешифратор двоично-десятичного кода в код семисегментно-го индикатора |
ИЕ2 | 90 | 4-разрядный двоично-десятичный счетчик |
ИЕ4 | 92 | Счетчик-делитель на 12 |
ИЕ5 | 93 | 4-разрядный двоичный счетчик |
ИЕ6 | 192 | 4-разрядный реверсивный двоично-десятичный счетчик |
ИЕ7 | 193 | 4-разрядный реверсивный двоичный счетчик |
ИЕ8 | 97 | Делитель частоты с переменным коэффициентом деления |
ИЕ9 | 160 | 4-разрядный синхронный двоично-десятичный счетчик с асинхронным сбросом |
ИЕ10 | 161 | 4-разрядный синхронный двоичный счетчик с асинхронным сбросом |
ИЕ11 | 162 | 4-разрядный двоично-десятичный счетчик с синхронным сбросом |
ИЕ12 | 190 | 4-разрядный синхронный реверсивный десятичный счетчик |
ИЕ13 | 191 | 4-разрядный синхронный реверсивный двоичный счетчик |
ИЕ14 | 196 | Счетчик-делитель на 2 и на 5 |
ИЕ15 | 197 | 4-разрядный асинхронный счетчик с предварительной установкой |
ИЕ16 | 168 | 4-разрядный синхронный двоично-десятичный счетчик с параллельной загрузкой |
ИЕ17 | 169 | 4-разрядный синхронный двоичный счетчик с параллельной загрузкой |
ИЕ18 | 163 | 4-разрядный двоичный счетчик с синхронным сбросом |
ИЕ19 | 393 | Сдвоенный 4-разрядный двоичный счетчик |
ИЕ20 | 390 | Два двоично-десятичных счетчика со сбросом |
ИМ1 | 80 | 1-разрядный полный сумматор |
ИМ2 | 82 | 2-разрядный полный сумматор |
ИМ3 | 83 | 4-разрядный полный сумматор |
ИМ5 | 183 | 4-разрядный полный сумматор с ускоренным переносом |
ИМ6 | 283 | 4-разрядный полный сумматор с ускоренным переносом |
ИМ7 | 385 | 4-разрядный сумматор-вычитатель |
ИП2 | 180 | 8-разрядная схема контроля четности |
ИП3 | 181 | АЛУ для двух 4-разрядных слов |
ИП4 | 182 | 4-разрядная схема ускоренного переноса |
ИП5 | 280 | 9-разрядная схема контроля четности |
ИП6 | 242 | Двунаправленный 4-разрядный буфер с инверсией |
ИП7 | 243 | Двунаправленный 4-разрядный буфер |
ИП8 | 261 | Параллельный умножитель 2 х 4 разряда |
ИП9 | 384 | 8-разрядный последовательно-параллельный умножитель |
ИР1 | 95 | 4-разрядный двунаправленный сдвиговый регистр |
ИР8 | 164 | 8-разрядный сдвиговый регистр с последовательным входом и параллельными выходами |
ИР9 | 165 | 8-разрядный сдвиговый регистр с параллельными входами и последовательным выходом |
ИР10 | 166 | 8-разрядный сдвиговый регистр |
ИР11 | 194 | 4-разрядный 2-направленный сдвиговый регистр |
ИР12 | 195 | 4-разрядный 2-направленный сдвиговый регистр |
ИР13 | 198 | 8-разрядный сдвиговый регистр |
ИР15 | 173 | 4-разрядный регистр с 3С |
ИР16 | 295 | 4-разрядный реверсивный сдвиговый регистр с выходами 3С |
ИР22 | 373 | 8-разрядный регистр-защелка с 3С |
ИР23 | 374 | 8-разрядный регистр с 3С |
ИР24 | 299 | 8-разрядный двунаправленный реверсивный сдвиговый регистр с 3С |
ИР25 | 395 | 4-разрядный сдвиговый регистр с 3С |
ИР26 | 670 | Регистровый файл 4х4 с 3С |
ИР27 | 377 | 8-разрядный регистр с разрешением записи |
ИР29 | 323 | 8-разрядный сдвиговый регистр с 3С |
ИР30 | 259 | 8-разрядный регистр хранения с адресацией |
ИР32 | 170 | Регистровый файл 4х4 с ОК |
ИР33 | 573 | 8-разрядный буферный регистр |
ИР34 | 873 | Два 4-разрядных регистра с 3С |
ИР35 | 273 | 8-разрядный регистр со сбросом |
ИР37 | 574 | 8-разрядный регистр с 3С |
ИР38 | 874 | Два 4-разрядных регистра с 3С |
ИР40 | 533 | 8-разрядный регистр-защелка с 3С и инверсией |
ИР41 | 534 | 8-разрядный регистр с 3С и инверсией |
КП1 | 150 | 16-канальный мультиплексор |
КП2 | 153 | Сдвоенный 4-канальный мультиплексор |
КП5 | 152 | 8-канальный мультиплексор |
КП7 | 151 | 8-канальный мультиплексор со стробированием |
КП11 | 257 | 4-разрядный 2-канальный мультиплексор с 3С |
КП12 | 253 | 2-разрядный 4-канальный мультиплексор |
КП13 | 298 | 4-разрядный 2-канальный мультиплексор со стробированием |
КП14 | 258 | 4-разрядный 2-канальный мультиплексор с 3С с инверсией |
КП15 | 251 | 8-канальный мультиплексор с 3С |
КП16 | 157 | 4-разрядный 2-канальный мультиплексор |
КП17 | 353 | 2-разрядный 4-канальный мультиплексор с 3С и инверсией |
КП18 | 158 | 4-разрядный 2-канальный мультиплексор с инверсией |
КП19 | 352 | 2-разрядный 4-канальный мультиплексор с инверсией |
ЛА1 | 20 | Два логических элемента 4И-НЕ |
ЛА2 | 30 | Логический элемент 8И-НЕ |
ЛА3 | 00 | Четыре логических элемента 2И-НЕ |
ЛА4 | 10 | Три логических элемента 3И-НЕ |
ЛА6 | 40 | Два логических элемента 4И-НЕ с повышенным выходным током |
ЛА7 | 22 | Два логических элемента 4И-НЕ с ОК и повышенным выход-ным током |
ЛА8 | 01 | Четыре логических элемента 2И-НЕ с ОК |
ЛА9 | 03 | Четыре логических элемента 2И-НЕ с ОК |
ЛА10 | 12 | Три логических элемента 3И-НЕ с ОК |
ЛА11 | 26 | Четыре логических элемента 2И-НЕ с ОК и повышенным выходным напряжением |
ЛА12 | 37 | Четыре логических элемента 2И-НЕ с повышенным выходным током |
ЛА13 | 38 | Четыре логических элемента 2И-НЕ с ОК и повышенным выходным током |
ЛА16 | 140 | Два логических элемента 4И-НЕ для работы на линию 50 Ом |
ЛА19 | 104 | Логический элемент 12И-НЕ с разрешением |
ЛА21 | 1000 | Четыре логических элемента 2И-НЕ с повышенным выходным током |
ЛА22 | 1020 | Два логических элемента 4И-НЕ с повышенным выходным током |
ЛА23 | 1003 | Четыре логических элемента 2И-НЕ с ОК и повышенным выходным током |
ЛА24 | 1010 | Три логических элемента 3И-НЕ с повышенным выходным током |
ЛД1 | 60 | Два 4-входовых расширителя по ИЛИ |
ЛЕ1 | 02 | Четыре логических элемента 2ИЛИ-НЕ |
ЛЕ2 | 23 | Два логических элемента 4ИЛИ-НЕ со стробированием |
ЛЕ3 | 25 | Два логических элемента 4ИЛИ-НЕ со стробированием |
ЛЕ4 | 27 | Три логических элемента 3ИЛИ-НЕ |
ЛЕ5 | 28 | Четыре логических элемента 2ИЛИ-НЕ с повышенным выходным током |
ЛЕ6 | 128 | Четыре логических элемента 2ИЛИ-НЕ с повышенным выходным током |
ЛЕ7 | 260 | Два логических элемента 5ИЛИ-НЕ |
ЛИ1 | 08 | Четыре логических элемента 2И |
ЛИ2 | 09 | Четыре логических элемента 2И с ОК |
ЛИ3 | 11 | Три логических элемента 3И |
ЛИ4 | 15 | Три логических элемента 3И с ОК |
ЛИ6 | 21 | Два логических элемента 4И |
ЛЛ1 | 32 | Четыре логических элемента 2ИЛИ |
ЛЛ3 | 136 | Четыре двухвходовых логических элемента Исключающее ИЛИ с ОК |
ЛН1 | 04 | Шесть инверторов |
ЛН2 | 05 | Шесть инверторов с ОК |
ЛН3 | 06 | Шесть инверторов с ОК и повышенным выходным напряжением |
ЛН4 | 07 | Шесть буферных элементов с ОК |
ЛН5 | 16 | Шесть инверторов с ОК и повышенным выходным напряжением |
ЛН6 | 366 | Шесть инверторов с 3С и с управлением |
ЛП4 | 17 | Шесть буферных элементов с ОК и повышенным выходным напряжением |
ЛП5 | 86 | Четыре двухвходовых логических элемента Исключающее ИЛИ |
ЛП8 | 125 | Четыре буферных элемента с 3С и раздельным управлением |
ЛП9 | 07 | Шесть буферных элементов с ОК и повышенным выходным напряжением |
ЛП10 | 365 | Шесть буферных элементов с 3С |
ЛП11 | 367 | Шесть буферных элементов с 3С |
ЛП12 | 136 | Четыре двухвходовых логических элемента Исключающее ИЛИ с ОК |
ЛП16 | 1034 | Шесть буферов с повышенным выходным током |
ЛП17 | 1035 | Шесть буферов с ОК и повышенным выходным током |
ЛР1 | 50 | Два элемента 2-2И-2ИЛИ-НЕ |
ЛР3 | 53 | Элемент 2-2-2-3И-4ИЛИ-НЕ |
ЛР4 | 55 | Элемент 4-4И-2ИЛИ-НЕ |
ЛР9 | 64 | Элемент 2-4-2-3И-ИЛИ-НЕ |
ЛР10 | 65 | Элемент 2-4-2-3И-ИЛИ-НЕ с ОК |
ЛР11 | 51 | Элементы 2-2И-2ИЛИ-НЕ и 2-3И-2ИЛИ-НЕ |
ЛР13 | 54 | Элемент 3-2-2-3И-4ИЛИ-НЕ |
ПР6 | 184 | Преобразователь двоично-десятичного кода в двоичный |
ПР7 | 185 | Преобразователь двоичного кода в двоично-десятичный |
РП1 | 170 | Регистровое ЗУ 4х4 |
РП3 | 172 | Регистровое ЗУ 8х2 с ОК |
РУ1 | 81 | ОЗУ с организацией 4х4 |
РУ2 | 89 | ОЗУ с организацией 16х4 |
РУ3 | 84 | ОЗУ 4х4 с дополнительными входами записи |
РУ5 | 130 | ОЗУ с организацией 256х1 |
РУ9 | 289 | ОЗУ с организацией 16х4 |
РУ10 | 225 | ОЗУ с организацией 16х4 |
СП1 | 85 | 4-разрядный компаратор кодов |
ТВ1 | 72 | JK-триггер с элементом 3И на входе |
ТВ6 | 107 | Два JK-триггера |
ТВ9 | 112 | Два JK-триггера |
ТВ10 | 113 | Два JK-триггера |
ТВ11 | 114 | Два JK-триггера |
ТВ15 | 109 | Два JK-триггера |
ТЛ1 | 13 | Два триггера Шмитта с инверсией и элементом 4И на входе |
ТЛ2 | 14 | Шесть триггеров Шмитта с инверсией |
ТЛ3 | 132 | Четыре триггера Шмитта с инверсией и элементом 2И на входе |
ТМ2 | 74 | Два D-триггера с прямыми и инверсными выходами |
ТМ5 | 77 | Четыре D-триггера типа "защелка" |
ТМ7 | 75 | Четыре D-триггера типа "защелка" с прямыми и инверсными выходами |
ТМ8 | 175 | Четыре D-триггера с прямыми и инверсными выходами |
ТМ9 | 174 | Шесть D-триггеров с общим синхровходом |
ТР2 | 279 | Два RS-триггера |
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет- Университет Информационных Технологий - дистанционное образование |