![]() |
Главы из книги «Параллельная обработка данных».Приложение 2. Некоторые примеры реально используемых при логическом проектировании комбинационных схемВ качестве примера рассмотрим построение в базисе «И», «ИЛИ», «НЕ» двух реально используемых во многих сложных цифровых устройствах логических блоков - дешифратора и мультиплексора [47]. Дешифратором из n в два в степени n называется схема с числом входов, равным n, и числом выходов, равных двум в степени n. Эта схема реализует очень простое преобразование входных сигналов в выходные, называемое дешифрацией входного кода. Пусть как входы, так и выходы схемы пронумерованы от нуля. Если рассматривать n входов как n-значное число в двоичной системе счисления, считая i-й вход соответствующим разрядом этого числа, то на выходной стороне дешифратора равен единице тот и только тот выход, номер которого равен числу на входе. Остальные выходы должны быть равны нулю. Рассмотрим, например, дешифратор из двух в четыре. Как следует из названия и определения, у него два входа и четыре выхода. Два входа можно рассматривать как двузначное двоичное число, принимающее значения в диапоне от 0 до 3. Выходы же можно занумеровать от 0 до 3. Если на входе имеем число 2, то дешифратор должен сделать выходы с номерами 0, 1 и 3 равными нулю, а выход номер 2 - равным единице. Для начала нам потребуется научиться рисовать схемы из вентилей. Вентили имеют стандартные обозначения, которые приводятся ниже. В правом столбце таблицы приводятся обозначения, принятые в отечественной схемотехнике во времена СССР, если они отличаются от используемых в настоящее время (рис. П2.1). При изображении схемы в графическом виде следует также учитывать, что входы, если это возможно, должны располагаться слева, а выходы - всегда и только справа.
Дешифраторы могут применяться, например, в схеме процессора для выработки сигналов, разрешающих срабатывание различных блоков схемы в зависимости от кода операции в машинной команде. Мультипплексором k линий, шириной n каждая, в одну линию шириной n называется устройство, которое подает на свой выход одну из k входных линий, если соответствующий сигнал разрешения равен 1. Под линией здесь понимается, вообще говоря, не единственный провод, а жгут проводов определенной ширины. Рассмотрим мультиплексор двух входных линий, шириной 3 каждая, в одну (рис. П2.3). Поскольку каждая входная линия состоит из трех проводов и снабжена дополнительным проводом для передачи сигнала разрешения, у нашего мультиплексора будет 8 входов. Выходов будет 3. По предложенной схеме видно, что сигнал разрешения, равный 0, делает выходы вентилей «И» на соответствующей входной линии равными нулю. Поскольку такие выходы «собираются» вместе через вентили «ИЛИ», на выходе схемы остаются в точности те значения, которые были на единственной линии, сигнал разрешения которой равен 1. Если ни один из сигналов разрешения не равен 1, то на выходе мультиплексора будут нули. Если же в некоторый момент времени единице
Оба представленных здесь логических узла допускают альтернативные варианты реализации. Так, любая комбинационная схема вообще может быть построена путем табличного задания функции алгебры логики, которую она реализует, в устройстве памяти с асинхронным чтением. Устройства памяти с асинхронным чтением используются в современных FPGA как базисный элемент для построения комбинационных схем, т. е. вместо вентилей. Функционально такое устройство представляет собой произвольно адресуемый по индексу одномерный массив слов памяти определенной разрядности. Рассмотрим в качестве примера работу 4-словного устройства памяти с разрядностью слова в 1 бит. Такое устройство имеет два входа, называемых линиями адреса, и выход, называемый линией чтения данных. Внутри устройства имеется массив из четырех ячеек, занумерованных от 0 до 3. Каждая ячейка хранит значение, в данном случае, состоящее из одного бита. Вопрос о том, как эти значения попадают в ячейки массива, для краткости рассматривать не будем. Просто допустим, что у нас есть возможность заранее записать в этот массив необходимые нам значения. Пару значений на линиях адреса можно рассматривать, как двузначное двоичное число. Работа устройства памяти состоит в том, что значение ячейки с номером, равным этому числу, просто подается на выход. Например, если на входе имеется число 3 ( оба входа равны 1), то на выходе немедленно оказывается значение, хранящееся в третьей ячейке массива. Для того чтобы построить из таких устройств дешифратор из двух в четыре, нам потребуется четыре таких устройства, линии входов которых объединены, т. е. на входы всех устройств всегда подается одно и то же. Линии выходов четырех устройств сделаем выходами дешифратора. Для того чтобы такое образование стало дешифратором, нам достаточно записать в память каждого из устройств таблицу истинности соответствующего выхода. Например, мы знаем, что при нулевых значениях входов дешифратора нулевой выход должен принять значение 1, а остальные выходы - значение 0. Следовательно, в нулевой бит нулевого устройства памяти мы запишем единицу, а в ну левые биты остальных устройств памяти - нули. Соответственно, в первые биты устройств памяти с номерами 0, 2 и 3 запишем нули, а в первый бит первого устройства памяти - еди ницу. Этим мы добьемся того, что при появлении на входах кода «01», т.е. двузначного двоичного числа «1», единице будет равен первый выход, а остальные - нулю, что и требовалось. С двумя оставшимися битами всех устройств памяти поступим аналогично. Тот факт, что мы строим именно дешифратор, для общего хода рассуждений значения не имеет. Ровно тем же способом мы могли бы построить любую комбинационную схему с двумя входами и четырьмя выходами, если нам известна ее таблица истинности. Тот факт, что в современных FPGA на аппаратном уровне используется именно такой, а не вентильный, базис, конечно, не означает, что структурное логическое проектирование для них следует вести именно в таком базисе. Все базисы эквивалентны, и САПР легко переводит один в другой при необходимости. Так что разработчик схемы «в регистрах» вполне может считать, что в его распоряжении привычные «И», «ИЛИ», «НЕ»(рис.П2.4). Отметим, что наш мультиплексор, если бы мы захотели реализовать его таким способом , потребовал бы трёх устройств памяти из 256 бит каждое. В самом деле, выходов у него три, а число возможных комбинаций значений на трёх входах, для каждой из которых надо запомнить требуемое выходное значение, равно 256 (2 в степени, равной числу входов). Мы построим альтернативный вариант реализации мультиплексора другим способом, с использованием ещё одного базисного элемента —
Тристабильный формирователь представляет собой электронный ключ. У него два логических входа - управляемый сигнал и сигнал разрешения (при графическом изображении его рисуют входящим в пиктограмму формирователя снизу). Выход тристабильного формирователя логическим не является, поскольку принимает одно из трех (а не двух) значений: 0, 1 или «разрыв линии», или «третье состояние». Если сигнал разрешения равен 1, то выход принимает логическое значение, равное значению входа управляемого сигнала, т. е. элемент ведет себя так, как если бы управляемый сигнал и выход были просто соединены проводом. Если же сигнал разрешения равен О, то выход переходит в «третье состояние», т. е. ведет себя на электрическом уровне так, как будто бы провод, соединяющий управляемый сигнал с выходом, был перерезан. Это свойство тристабильного формирователя позволяет объединять выходы нескольких тристабильных формирователей, т.е. подавать несколько таких выходов на один и тот же вход некоторого логического элемента. Конечно, схема управления сигналами разрешения таких объединенных по выходам формирователей должна быть построена так, чтобы никакие два из них не были одновременно равны 1. В противном случае схема некорректна электрически, и может, вообще говоря, просто сгореть. Схема мультиплексора на тристабильных формирователях приведена на рис. П2.5. Отметим, что реализованные таким способом устройства с функцией мультиплексора в схемотехнике принято называть шинами [47]. Классические системные шины компьютеров недавнего прошлого обеспечивают подключение многих устройств к единой магистрали передачи данных именно таким способом. Тристабильные формирователи включаются в состав базисных элементов современных FPGA. При необходимости САПР может использовать их напрямую, но может и обходиться без них, заменяя схемы на тристабильных формирователях эквивалентными схемами на базе вентилей (например, заменяя шину мультиплексором). Если ни один из входов шины не раз решен, то на лини шины, в отличие от случая мультиплексора, будет не нуль, а значение, не определенное электрически. Существует способ, который, как и понятие тристабильного формирователя, объясняется в электрических терминах, «доопределить» это значение некоторой константой. О таких значениях говорят, как о «слабом нуле» или «слабой единице» соответственно. Для выражения описанной здесь техники на уровне логического проектирования, например, при записи функционирования схемы на языке VHDL, необходимо расширить набор значений логического сигнала. Если для проектирования в терминах вентилей или устройств памяти с асинхронным чтением нам достаточно было двузначной логики, со значениями «0» и «1», то теперь нам известно, как минимум, еще три необходимых значения: «третье состояние», «слабый 0» и «слабая 1». ◄ Глава 12. Технологии программируемой логики сегодня. Приложение 3. ► |
|
||||||||||||||||||||||||||||||||||||||||||||||
| Тел. +7(499)220-79-72; E-mail: inform@kiam.ru | ||||||||||||||||||||||||||||||||||||||||||||||||