Искусство схемотехники. Том 2 (Изд.4-е) - Хоровиц Пауль. Страница 54
Скорость и мощность. Оригинальная ПМЛ на биполярных транзисторах, разработанная на фирме Monolithic Memories (и быстро скопированная National и AMD) потребляла значительный ток — около 200 мА для 16L8/16R8, и имела задержку распространения 40 нс. Последующие биполярные ПМЛ «половинной мощности» были вполне приемлемы — 90 мА и 35 нc. Однако самые быстрые ПМЛ потребуют все еще уйму мощности; например, время распространения ПМЛ 16R8D и 16Р8-7 фирмы AMD составляет соответственно 10 и 7,5 нс, но потребляют они 180 мА. (макс). КМОП-приборы существенно лучше: GAL (GAL20V8-15Q) «1/4 мощности» фирмы Lattice потребляют 45 мА при задержке 15 нс, ЕР320-1 фирмы Altera обладают задержкой 25 нс при токе 5 мА. Но что более важно для маломощных устройств, так это то, что кристаллы фирмы Altera (а также ПМЛ серии Ζ фирмы AMD) могут работать в резервном режиме с «нулевой мощностью». Конструкторы будущих структур программируемой логики, наверняка, сохранят эту здоровую тенденцию к повышению скорости и снижению мощности; современная программируемая логика, этот «пожиратель ватт», начинает уходить в прошлое!
Выбросы. ПЛИС, конечно, удивительная вещь, но вы можете, ненароком, оказаться в затруднительном положении, если не будете помнить о возможности логических состязаний. На рис. 8.85 показан 2-входовый мультиплексор, выполненный самым обычным способом; показаны ПМЛ — реализация и эквивалентная схема.
Рис. 8.85. Исключение глитча в ПМЛ; а — 2-входовый мультиплексор; б — для исключения глитча добавляется избыточный терм произведения; в — карта Карно с избыточным термом.
Здесь все выглядит как-будто прекрасно, но схема имеет один изъян: когда оба входа (А и В) находятся в состоянии высокого уровня, а линия ВЫБОР меняет состояние, на выходе, как показано, возможен выброс. Это объясняется тем, что внутренние задержки по цепям S и S' могут быть не равны, что приведет к появлению переходного состояния, в котором на одном из входов вентилей И будет низкий уровень. Избавиться от этого можно, использовав избыточный терм А*В, который будет гарантировать отсутствие выбросов, в чем вы можете легко убедиться.
Упражнение 8.33. Покажите, что дополнительный терм устраняет все возможности для появления выбросов.
Упражнение 8.34. Какие логические термы следует добавить к 4-входовому мультиплексору (рис. 8.75) для устранения выбросов.
С помощью карт Карно вы можете наглядно убедиться в существовании этих так называемых логических рисков; карта Карно для 2-входового мультиплексора рис. 8.85, а приведена на рис. 8.85, в. Каждая группа на карте представляет один терм произведения, который образует вход вентиля ИЛИ. Истинное значение на выходе ИЛИ появляется в том случае, когда любой из термов произведения имеет истинное значение; но переход между группами произведений может приводить к выбросам, если переменные первой группы снимаются, до того, как будут назначены переменные второй группы.
«Противоядие» (которое мы использовали и ранее) состоит в добавлении избыточных термов, гарантирующих, что любые переходы между логическими «1» будут включены в один терм произведения. Другими словами, любые единицы, которые лежат в соседних рядах или столбцах, будут покрыты группой произведения. Это предписание можно дать в обобщенной форме, связанной непосредственно с булевым логическим выражением, а не с картой Карно. Это удобно для логических функций, зависящих от более, чем 4-х переменных.
В предыдущем примере представлены так называемые статические выбросы, поскольку выход будет оставаться статическим. Существуют также динамические выбросы, проявление которых заключается в том, что выход, который должен сделать один-единственный переход, начинает многократно переходить из состояния в состояние. При использовании программируемой логики можно избежать этих внутренних гоночных условий. В общем средства проектирования такие, как PALASM, ABEL и CUPL не пытаются решать эти проблемы. Если хотите, они делают все, чтобы ухудшить ситуацию, поскольку их логические оптимизаторы усердно работают по исключению таких избыточных термов.
8.28. Разнообразные последовательностные схемы
Появление на рынке большого числа разнообразных БИС и СБИС (имеющих более 1000 вентилей на кристалле) дает возможность использовать достаточно сложные устройства, выполненные на одном кристалле. В этом разделе мы приведем несколько выборочных примеров.
Память типа «первый вошел-первый вышел» (FIFO) в некотором смысле аналогична регистру сдвига, так как информация, вводимая на входе, в том же порядке появляется на выходе. Однако между ними есть существенное отличие, которое состоит в том, что в регистре сдвига информация «проталкивается вдоль него» по мере ввода и тактирования дополнительных бит, а в запоминающем устройстве типа «первый вошел-первый вышел» данные «проваливаются насквозь» и выстраиваются в выходную очередь с очень малой задержкой. Управление вводом и выводом производится раздельными тактовыми последовательностями, а устройство помнит, какие данные введены и какие выведены. Можно провести полезную аналогию с кегельбаном, где белые и черные игровые шары (биты) возвращаются на исходную позицию. Эти биты вводятся с помощью игральной машины, а время, которое требуется шару для того, чтобы прокатиться по своему лотку, соответствует «задержке при сквозной передаче» в ЗУ типа «первый вошел-первый вышел» (обычно 1-25 мкс). После этого биты приходят на выход и могут забираться пользователем по мере надобности (т. е. асинхронно). Память типа «первый вошел-первый вышел» полезно использовать для буферизации асинхронных данных. Классическим примером является буферирование клавиатуры (или другого входного устройства, такого, как магнитная лента) ЭВМ или другого устройства обработки данных. При использовании этого метода данные не будут теряться в том случае, когда ЭВМ не готова принять очередное выработанное слово — при условии, конечно, что ЗУ незаполнено целиком. Примерами типичных устройств памяти являются 74F433 (ТТЛ, 64 слова по 4 бит каждое, 10 МГц, время «пролета» 4 мкс) и IDT7202 (КМОП, 4096x9,15 МГц, нулевое время «пролета»).
Память типа «первый вошел-первый вышел» не применяется, если устройство, которому вы посылаете данные, может всегда получить их до поступления следующих данных. На компьютерном языке — вы должны гарантировать, что максимальная латентность меньше, чем минимальное время между словами данных (время скрытости данных). Заметим, что память типа «первый вошел-первый вышел» не будет полезна, если получатель данных не готов (не способен) в среднем воспринять приходящие данные.
Умножитель частоты используется для генерации последовательности выходных импульсов с частотой, значение которой связано с тактовой частотой через рациональную дробь. Например, 3-декадный двоично-десятичный умножитель позволяет получать на выходе частоты, составляющие nnn/1000 от входной частоты; nnn-трехзарядное десятичное число, заданное тремя входными двоично-десятичными знаками. Это не то же, что счетчик по модулю n, так как с его помощью на выходе нельзя получить частоту, равную 3/10 входной. Отметим один важный момент: импульсы на выходе умножителя в общем случае не будут следовать равномерно. Они совпадают с входными тактовыми импульсами и образуют чудные комбинации, средняя частота которых задается предварительно. Примерами устройств являются `97 (6-битовый, двоичный) и `167 (двоично-десятичный).