1.10. Уровни
проектирования цифровых устройств
Проектирование
цифровых устройств может выполняться на нескольких различных уровнях
представления и абстракции. Хотя вы можете выучиться проектированию и работать
на каком-то определенном уровне, время от времени у вас будет возникать
необходимость перейти на один-два уровня вверх или
вниз, чтобы завершить работу. Кроме того, рост плотности схем и увеличение их
функциональной
сложности постоянно подталкивают промышленность и проектировщиков к тому, чтобы
переходить на более высокие уровни абстракции.
Самый
низкий уровень представления при проектировании цифровых устройств — это физика
того, что происходит в логической схеме, и процессы, протекающие при
изготовлении ИС. Заслугой в первую очередь этого уровня является поразительный
прогресс в отношении быстродействия и плотности ИС за последние десятилетия. Это стремительное
движение отражает закон Мура (Moore's Law), впервые сформулированный основателем фирмы Intel Гордоном Муром (Gordon Moore) в 1965 году, и состоящий в том, что
число транзисторов, приходящихся на
квадратный дюйм в ИС, каждый год удваивается. В последние годы темп
этого движения вперед замедлился: удвоение происходит теперь каждые 18
месяцев; но важно
отметить, что одновременно с удвоением плотности также вдвое увеличивается
быстродействие схем.
В нашей
книге мы не будем касаться этого уровня, но необходимо сознавать его важность.
Проектируя системы и планируя производство, важно иметь представление о
вероятном прогрессе в области технологии и о других изменениях. Например,
недавно уменьшение геометрии в кристалле привело к переходу на более низкие
напряжения питания логических схем, вызвав значительные изменения в том, как
разработчики проектируют модульные системы, описывают и модернизируют их.
Мы
совершим скачок в представлениях и абстракции сразу на уровень транзисторов и пройдем весь
путь до уровня логического проектирования с использованием языков
описания схем. Лишь коротко мы остановимся на следующем уровне, который
включает проектирование компьютеров и систем в целом. «Центральным» в нашем
рассмотрении будет уровень функциональных структурных блоков.
Чтобы
составить предварительное представление об уровнях проектирования цифровых
устройств, которые встретятся на нашем пути, рассмотрим простой пример.
Предположим, что нужно построить «мультиплексор» с двумя входами двоичных данных А
и В, с двоичным управляющим входом S и двоичным выходом Z. В зависимости от того, какое значение
имеет S - 0 или I, - схема передает на выход Z значения А или
В. Принцип действия такого устройства иллюстрирует «модель в виде
переключателя» на рис. 1.7. Давайте разберем процесс проектирования такого устройства на нескольких различных уровнях.
Рис. 1.7. Модель
мультиплексора в виде переключателя
Хотя
логическое проектирование выполняется, как правило, на более высоком уровне, в отношении
некоторых устройств полезно оптимизировать их, спустившись до уровня
транзисторов. Мультиплексор как раз является таким устройством. На рис. 1.8 показано, как может выглядеть
схема мультиплексора, созданная на основе КМОП-технологии с использованием специальных транзисторных
структур, называемых «логическими ключами», которые будут рассмотрены в разделе
3.7.1. При таком подходе мультиплексор можно построить всего лишь на
шести транзисторах, тогда как при любых
других подходах, о которых пойдет речь, для этого требуется, по меньшей
мере, 14 транзисторов.
По
традиционной теории логического проектирования нам следовало бы воспользоваться
«таблицей истинности» для описания логической функции, реализуемой
мультиплексором. В таблице истинности перечисляются все возможные комбинации значений
на входах и соответствующие данной функции значения выходного сигнала. Поскольку у
мультиплексора три входа, имеется 23 то
есть 8 возможных комбинаций входных величин, как показано в табл. 1.1.
Рис. 1.8. Схема мультиплексора на логических ключах, выполненных по КМОП-технологии
Табл. 1.1. Таблица
истинности для мультиплексора
После
того как таблица истинности составлена, согласно традиционным методам логического проектирования, которые
будут рассмотрены в параграфе 4.3, мы
должны воспользоваться булевой алгеброй и хорошо освоенными алгоритмами минимизации, в результате чего из таблицы
истинности получим «оптимальное»
двухуровневое соотношение в терминах И-ИЛИ. В случае мультиплексора у нас получилось бы следующее выражение:
Это соотношение читается так:
«Z равно не S и А или S и В». Продвигаясь еще на один шаг вперед, можно превратить наше соотношение в схему,
состоящую из соответствующих
вентилей, которая реализует заданную логическую функцию, как показано на
рис. 1.9. Если иметь в виду КМОП-технологию, то для
четырех вентилей в этой схеме потребуется 14 транзисторов.
Рис. 1.9.
Логическая схема мультиплексора на уровне
вентилей
Мультиплексоры
применяются очень широко, поэтому в большинстве систем логических элементов
имеются готовые структурные блоки, реализующие функцию мультиплексора.
Примером может служить микросхема средней степени интеграции 74x157, которая осуществляет переключение
входных сигналов, поступающих по двум 4-разрядным шинам. На рис. 1.10 приведено
условное обозначение такого устройства; как
видим, достаточно изменения одного управляющего бита, чтобы решить проблему одновременного переключения всех сигнальных
линий 4-разрядных шин. Рядом с выводами указаны их номера для корпуса DIP с 16 выводами,
в котором находится мультиплексор.
Табл. 1.2. Программа для мультиплексора на языке ABEL
На языке VHDL, который является языком более высокого
уровня, функцию мультиплексора можно задать
более гибко и по иерархическому принципу. Пример программы для
мультиплексора на языке VHDL приведен в табл. 1.3. В
первых двух строках указаны
стандартная библиотека и набор определений, которые используются в проекте. В следующих четырех строках только
определяются входы и выходы проектируемого
устройства, и здесь намеренно ничего не говорится о каких-либо деталях того, как именно требуемая функция будет реализована внутри ПЛУ Функциональное
поведение устройства конкретизируется в части программы, начинающейся с
заголовка "architecture". Синтаксис языка VHDL требует небольшого навыка, но оператор "when" в данной программе выражает собой,
по существу, то же самое, что и в варианте программы на языке ABEL. Средства, ответственные за синтез схем,
в программном пакете языка VHDL могут начинать с этого функционального
описания, и результатом их работы будет нужная схема, сформированная в ПЛУ, выполненном по заданной технологии.
Табл. 1.3.
Программа для мультиплексора на языке VHDL
Принудительное разделение
определении входов/выходов (entity ) и внутренней реализации ("architecture") в языке VHDL позволяет разработчику легко задавать альтернативные реализации функций, не внося
изменений нигде более в иерархии
проекта. Например, в качестве альтернативы можно было "бы задать структурную
архитектуру мультиплексора, как это сделано в табл.
1.4. Эта архитектура фактически представляет
собой текстовый эквивалент логической схемы, приведенной на рис. 1.9.
Табл. 1.4. «Структурная» VHDL- программа
для мультиплексора
Заглядывая чуть дальше, мы могли бы убедиться в том, что язык VHDL является довольно мощным средством, фактически позволяющим
так описать работу проектируемого
устройства, что его функциональное поведение окажется смоделированным на уровне транзисторов (правда, мы не
будем заниматься этим в нашей книге).
Таким образом, принципиально возможно написать программу на языке VHDL, реализующую на уровне
транзисторов мультиплексор, эквивалентный схеме на рис. 1.8.