ПЗУ в генераторах импульсных последовательностей

Содержание

  • ПЗУ как универсальная комбинационная микросхема
  • ПЗУ в генераторах импульсных последовательностей
  • Микропрограммные автоматы на ПЗУ

 

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

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

Для обозначения количества ячеек памяти используются следующие специальные единицы измерения:

  • 1К — это 1024, то есть 210 (читается "кило-"" или "ка-"), примерно равно одной тысяче;
  • 1М — это 1048576, то есть 220 (читается "мега-"), примерно равно одному миллиону;
  • 1Г — это 1073741824, то есть 230 (читается "гига-"), примерно равно одному миллиарду.

Принцип организации памяти записывается следующим образом: сначала пишется количество ячеек, а затем через знак умножения (косой крест) — разрядность кода, хранящегося в одной ячейке. Например, организация памяти 64Кх8 означает, что память имеет 64К (то есть 65536) ячеек и каждая ячейка — восьмиразрядная. А организация памяти 4М х 1 означает, что память имеет 4М (то есть 4194304) ячеек, причем каждая ячейка имеет всего один разряд. Общий объем памяти измеряется в байтах (килобайтах — Кбайт, мегабайтах — Мбайт, гигабайтах — Гбайт) или в битах (килобитах — Кбит, мегабитах — Мбит, гигабитах — Гбит).

В зависимости от способа занесения (записи) информации и от способа ее хранения, микросхемы памяти разделяются на следующие основные типы:

  • Постоянная память ( ПЗУпостоянное запоминающее устройство, ROM — Read Only Memory — память только для чтения), в которую информация заносится один раз на этапе изготовления микросхемы. Такая память называется еще масочным ПЗУ. Информация в памяти не пропадает при выключении ее питания, поэтому ее еще называют энергонезависимой памятью.
  • Программируемая постоянная память (ППЗУ — программируемое ПЗУ, PROMProgrammable ROM), в которую информация может заноситься пользователем с помощью специальных методов (ограниченное число раз). Информация в ППЗУ тоже не пропадает при выключении ее питания, то есть она также энергонезависимая.
  • Оперативная память (ОЗУ — оперативное запоминающее устройство, RAMRandom Access Memory — память с произвольным доступом), запись информации в которую наиболее проста и может производиться пользователем сколько угодно раз на протяжении всего срока службы микросхемы. Информация в памяти пропадает при выключении ее питания.

Существует множество промежуточных типов памяти, а также множество подтипов, но указанные — самые главные, принципиально отличающиеся друг от друга. Хотя, разница между ПЗУ и ППЗУ с точки зрения разработчика цифровых устройств, как правило, не так уж велика. Только в отдельных случаях, например, при использовании так называемой флэш-памяти (flash-memory), представляющей собой ППЗУ с многократным электрическим стиранием и перезаписью информации, эта разница действительно чрезвычайно важна. Можно считать, что флэш-память занимает промежуточное положение между ОЗУ и ПЗУ.

В общем случае любая микросхема памяти имеет следующие информационные выводы (рис. 11.1):

Рис. 11.1. Микросхемы памяти: ПЗУ (а), ОЗУ с двунаправленной шиной данных (б), ОЗУ с раздельными шинами входных и выходных данных (в)

  • Адресные выводы (входные), образующие шину адреса памяти. Код на адресных линиях представляет собой двоичный номер ячейки памяти, к которой происходит обращение в данный момент. Количество адресных разрядов определяет количество ячеек памяти: при количестве адресных разрядов n количество ячеек памяти равно 2n.
  • Выводы данных (выходные), образующие шину данных памяти. Код на линиях данных представляет собой содержимое той ячейки памяти, к которой производится обращение в данный момент. Количество разрядов данных определяет количество разрядов всех ячеек памяти (обычно оно бывает равным 1, 4, 8, 16). Как правило, выходы данных имеют тип выходного каскада ОК или 3С.
  • В случае оперативной памяти, помимо выходной шины данных, может быть еще и отдельная входная шина данных, на которую подается код, записываемый в выбранную ячейку памяти. Другой возможный вариант — совмещение входной и выходной шин данных, то есть двунаправленная шина, направление передачи информации по которой определяется управляющими сигналами. Двунаправленная шина применяется обычно при количестве разрядов шины данных 4 или более.
  • Управляющие выводы (входные), которые определяют режим работы микросхемы. В большинстве случаев у памяти имеется вход выбора микросхемы CS (их может быть несколько, объединенных по функции И). У оперативной памяти также обязательно есть вход записи WR, активный уровень сигнала на котором переводит микросхему в режим записи.

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

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

· Упомянем здесь только, что ППЗУ делятся на репрограммируемые или перепрограммируемые ПЗУ (РПЗУ, EPROM — Erasable Programmable ROM), то есть допускающие стирание и перезапись информации, и однократно программируемые ПЗУ. В свою очередь, РПЗУ делятся на ПЗУ, информация в которых стирается электрическими сигналами (EEPROMElectrically Erasable Programmable ROM), и на ПЗУ, информация в которых стирается ультрафиолетовым излучением через специальное прозрачное окошко в корпусе микросхемы (собственно EPROM — Erasable Programmable ROM). Запись информации в любые ППЗУ производится с помощью подачи определенных последовательностей электрических сигналов (как правило, повышенного напряжения) на выводы микросхемы.

· Фирмами-производителями цифровых микросхем выпускается немало самых разнообразных ПЗУ и ППЗУ. Различаются микросхемы постоянной памяти своим объемом (от 32 байт до 8 Мбайт и более), организацией (обычно количество разрядов данных бывает 4, 8 или 16), способами управления (назначением управляющих сигналов), типами выходных каскадов (обычно ОК или 3С), быстродействием (обычно задержка составляет от единиц до сотен наносекунд). Но суть всех микросхем ПЗУ остается одной и той же: имеется шина адреса, на которую надо подавать код адреса нужной ячейки памяти, имеется шина данных, на которую выдается код, записанный в адресуемой ячейке, и имеются входы управления, которые разрешают или запрещают выдачу информации из адресуемой ячейки на шину данных.

Рис. 11.2. Примеры микросхем ППЗУ отечественного производства

 

На рис. 11.2 представлены для примера несколько простейших и типичных микросхем постоянной памяти.

Микросхема К155РЕ3 (аналог — N8223N) представляет собой однократно программируемое ППЗУ с организацией 32 х 8. Исходное состояние (до программирования) — все биты всех ячеек нулевые. Для программирования (записи информации) используется специальный программатор, подающий на разряды данных импульсы высокого напряжения. Тип выходных каскадов — открытый коллектор, то есть обязательно надо включать на выходах резисторы, подсоединенные к шине питания. Имеется один управляющий вход –CS, при положительном уровне сигнала на котором на всех выходах устанавливаются единицы.

Микросхема КР556РТ4 (аналог — I3601) — это также однократно программируемая постоянная память с организацией 256х4. Исходное состояние (до программирования): все биты всех ячеек нулевые. Тип выходных каскадов — ОК. Два управляющих входа -CS1 и –CS2 объединены по принципу И, то есть для разрешения работы микросхемы (для перевода выходов в активное состояние) оба эти сигнала должны быть нулевыми. Для записи информации в микросхему используется программатор.

Микросхема КР556РТ18 (аналог — HM76161) также является однократно программируемым ППЗУ и имеет организацию 2Кх8. Тип выходов микросхемы — 3С. Имеются три управляющих входа: один инверсный –CS1, два других — прямые CS2 и CS3, объединенных по функции И. Выходы данных переходят в активное состояние при нулевом уровне на –CS1 и при единичных уровнях на CS2 и CS3. Если входы управления используются для подачи управляющих сигналов (то есть выходы могут переходить в третье состояние) то на выходы надо включать нагрузочные резисторы, подключенные к шине питания. Исходное состояние микросхемы (до программирования) — все биты всех ячеек в единице.

Наконец, микросхема К573РФ8 (аналог — I27256) — это пример памяти РПЗУ с ультрафиолетовым стиранием информации. Чтобы перепрограммировать память, необходимо ее стереть, для чего в течение некоторого времени (обычно несколько минут) надо облучать микросхему через окошко в корпусе ультрафиолетовым светом (можно использовать медицинский кварцевый облучатель). Стертая микросхема имеет все биты, установленные в единицу. Затем проводится процедура записи с помощью программатора, несколько отличающегося от программаторов однократно программируемых микросхем. Управляющие входы –CS и –CE должны быть установлены в нуль для перевода выходов микросхемы в активное состояние. Имеется специальный вход UPR для подачи программирующего высокого напряжения, который при чтении информации из микросхемы надо подключать к напряжению питания. Тип выходных каскадов — 3С. Микросхемы этого типа самые медленные, их задержки самые большие.

Основные временные характеристики микросхем ПЗУ — это две величины задержки. Задержка выборки адреса памяти — время от установки входного кода адреса до установки выходного кода данных. Задержка выборки микросхемы — время от установки активного разрешающего управляющего сигнала CS до установки выходного кода данных памяти. Задержка выборки микросхемы обычно в несколько раз меньше задержки выборки адреса.

Содержимое ПЗУ обычно изображается в виде специальной таблицы, называемой картой прошивки памяти. В таблице показывается содержимое всех ячеек памяти, причем в каждой строке записывается содержимое 16 (или 32) последовательно идущих (при нарастании кода адреса) ячеек. При этом, как правило, используется 16-ричное кодирование.

Пример карты прошивки ПЗУ с организацией 256х8 показан в табл. 11.1 (все биты всех ячеек считаются установленными в единицу). Пользоваться таблицей очень просто. Например для того, чтобы посмотреть содержимое ячейки памяти с 16-ричным адресом 8А, надо взять строку таблицы с номером 80 и столбец таблицы с номером А (данная ячейка в таблице выделена жирным шрифтом).

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

Для уменьшения количества адресных разрядов необходимо на нужное число старших адресных входов подать нулевые сигналы. Каждый отключенный таким образом адресный разряд уменьшает количество ячеек ПЗУ вдвое. Например, на рис. 11.3 показано, как из микросхемы с организацией 2Кх8 сделать микросхему 512х8. Два старших разряда адреса памяти отключены (на них поданы нулевые сигналы). Использоваться будут только младшие (верхние в таблице прошивки) 512 ячеек, и только их надо будет программировать. Конечно, гораздо лучше подобрать микросхему именно с тем количеством ячеек, которое действительно необходимо в данной схеме, но это, к сожалению, возможно не всегда.

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

 

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

В результате подобного объединения микросхем ПЗУ может увеличиться время выборки адреса полученного единого ПЗУ. В данном случае (см. рис. 11.4) оно будет равно максимальной из двух величин: времени выборки адреса одной микросхемы и суммы двух задержек — задержки дешифратора и задержки выборки микросхемы ПЗУ.

Рис. 11.4. Увеличение количества адресных разрядов ПЗУ с помощью дешифратора

 

Если надо объединить две микросхемы (то есть добавить всего один разряд адресной шины), можно обойтись бездешифратора, подавая на вход –CS одной микросхемы прямой дополнительный сигнал адреса, а на вход –CS другой микросхемы — этот же сигнал с инверсией. Применение дешифратора 3—8 позволяет объединить 8 микросхем ПЗУ(добавить три адресных разряда), а применение дешифратора 4–16 добавляет четыре адресных разряда, объединяя 16 микросхем ПЗУ.

Часто возникает также задача увеличения количества разрядов данных. Для этого необходимо всего лишь объединить одноименные адресные входы нужного количества микросхем ПЗУ ; выходы же данных ПЗУ не объединяются, а образуют код с большим числом разрядов. Например, при объединении таким образом двух микросхем с организацией 8Кх8 можно получить ПЗУ с организацией 8Кх16.

ПЗУ как универсальная комбинационная микросхема

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

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

В качестве примера рассмотрим довольно сложную комбинационную схему (рис. 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. Она полностью совпадает стаблицей истинности заменяемой комбинационной схемы.

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

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

Рис. 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 ячеек не имеет значения (что обозначено в таблице ХХ).

На такой же точно схеме (рис. 11.8) можно сделать и вычислитель квадратов в двоично-десятичном коде. В этом случае будет использовано всего лишь десять ячеек памяти с адресами от 0 до 9, а в ячейках будут записаны их квадраты от 0 до 81.

Недостаток любого табличного вычислителя на ПЗУ — это необходимость увеличения вдвое требуемого объема памяти при увеличении разрядности входного числа на единицу. Например, при 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). Семь сегментов индикатора позволяют сделать и это, правда, изображения букв получаются не слишком качественными.

ПЗУ типа РЕ3, используемое в качестве дешифратора индикатора, имеет 4 входа и 7 выходов (старший разряд адреса и старший разряд данных не используются). Карта прошивки ПЗУ приведена в табл. 11.4. Нулевой сигнал на каждом из выходов данных ПЗУ зажигает соответствующий ему сегмент.

ПЗУ позволяют также формировать и более сложные изображения букв и цифр — матричные. Такие изображения используются, например, в табло типа "бегущая строка", на экранах мониторов, в больших рекламных табло. Каждая буква, цифра, другой знак располагается в данном случае на прямоугольной матрице, называемойзнакоместом и состоящей из нескольких строк и нескольких столбцов точечных элементов изображения, которые могут зажигаться независимо друг от друга. Чем больше строк и столбцов в знакоместе, тем более качественное изображение букв и цифр можно получить. Минимально возможный размер знакоместа — 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. Получить такую последовательность можно, конечно, с помощью комбинационных схем, включенных на выходе счетчика, или с помощью множестваодновибраторов, запускающих друг друга, но и то, и другое решение чересчур громоздко и сложно как в проектировании, так и в настройке. Применение же ПЗУ значительно упрощает задачу. Достаточно провести несложные расчеты и составить карту прошивки ПЗУ.

Расчеты сводятся к следующему.

Прежде всего определяем минимально возможную тактовую частоту (с целью минимизации требуемого объема ПЗУ). Для этого надо выделить максимальный временной интервал (дискрет времени), который укладывается целое число раз во все временные сдвиги, задержки, длительности требуемой диаграммы. В нашем случае этот дискрет равен одному делению по оси времени. Например, если длительность этого деления равна 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. Так как счетчик срабатывает по отрицательному фронту тактового сигнала, а регистр — по положительному фронту тактового сигнала, необходимо включить инвертор. На схеме для простоты не показанырезисторы на выходах данных типа ОК микросхемы ПЗУ.

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

Теперь составим карту прошивки ПЗУ. Для этого сформируем таблицу значений всех семи выходных сигналов во всех двадцати рабочих тактах генератора последовательностей (табл. 11.5). Значения шести выходных сигналов (Выход 0 ... Выход 5) мы непосредственно берем из требуемой временной диаграммы (см. рис. 11.12). Хотя эти сигналы будут приходить на выход схемы с задержкой на один такт из-за наличия выходного регистра, но при периодической работе генератора последовательности это не имеет никакого значения.

Седьмой сигнал (Выход 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.

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