Опубликован: 16.10.2006 | Уровень: для всех | Доступ: свободно | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»
Лекция 11:

Постоянная память

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

В качестве простейшего примера рассмотрим вычислитель для возведения в квадрат 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.3. Карта прошивки ПЗУ-вычислителя квадратов
Адрес 0 1 2 3 4 5 6 7 8 9 A B C D E F
00 00 01 04 09 10 19 24 31 40 51 64 79 90 A9 C4 E1
10 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX

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

Таблица 11.4. Карта прошивки ПЗУ для дешифратора знакового индикатора
Адрес 0 1 2 3 4 5 6 7 8 9 A B C D E F
00 40 79 24 30 19 12 02 78 00 10 08 03 46 21 06 0E
10 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX

ПЗУ типа РЕ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 и т.д.

Татьяна Швердюк
Татьяна Швердюк
Украина