Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Программируемые вентильные матрицы

Микросхемы ПМЛ достаточно универсальны, но их размер ограничен по той причине, что для каждой суммы произведений требуется один выходной контакт, ля преодоления этого ограничения разработан класс более мощных программируемых устройств, называемых программируемыми вентильными матрицами, ПВМ (Field Programmable Gate Array, FPGA). Концептуальная схема такой матрицы показана на рис. 4.7.

Рис. 4.7. Концептуальная схема программируемой вентильной матрицы

Она состоит из набора логических блоков (обозначенных черными квадратами), которые могут соединяться с помощью общих межсоединений. Межсоединения, выделенные на рисунке 4.7 серым цветом, состоят из отрезков проводящих линий и программируемых переключателей. Переключатели используются для установки соединений между разными сегментами проводящих линий. Построенный таким образом чип обладает исключительной гибкостью. Для доступа к выходным и входным контактам чипа здесь предназначены буферы ввода-вывода.

Существует множество конструкций логических блоков и структур межсоединений. Логическими блоками могут служить простейшие схемы на основе мультиплексоров, реализующие логические функции. В еще одной популярной конструкции в качестве логического блока используется простейшая таблица для выбора значения. Например, таблица с четырьмя входами может быть реализована в виде 16-разрядной схемы памяти, в которой хранится таблица истинности логической функции. Каждый бит памяти соответствует одной комбинации значений входных переменных. Путем программирования этой таблицы можно реализовать любую функцию четырех переменных. Еще логические блоки могут содержать триггеры, обеспечивающие дополнительную гибкость. В дополнение к логическим блокам многие программируемые вентильные матрицы включают достаточно большое количество ячеек памяти (на рис. 4.7 они не показаны), которые могут использоваться для реализации таких структур, как очереди или RAM-И ROM-компоненты в приложениях для встроенных процессоров. С точки зрения пользователя, между программируемыми вентильными матрицами и сложными программируемыми логическими устройствами имеются существенные различия. Функциональные возможности чипов вентильных матриц шире, и на их основе могут быть реализованы довольно большие и сложные логические схемы. Один такой чип может содержать более миллиона логических вентилей. Различна и скорость работы этих двух типов микросхем. Поскольку во внутренних межсоединениях вентильной матрицы используются программные переключатели, задержка на распространение сигнала в ней неизбежно будет более заметной, нежели у таких менее гибких устройств, как микросхемы ПМЛ или СПЛУ.

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

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

Пример счетчика с прямым/обратным счетом

На рис. 3.47 показана конфигурация счетчика с прямым счетом (суммирующего счетчика), реализованного посредством трех триггеров. Этот счетчик считает в таком порядке: 0,1,2, …7,0,.... Для обратного счета, то есть счета в порядке 0,7,6, .применяются похожие схемы. При построении этих простых схем используется заложенная в Т-триггере возможность переключения состояний.

Сейчас же мы рассмотрим возможность реализации счетчиков на основе D-триггеров. В частности, речь пойдет о структуре счетчика, который способен считать как в прямом, так и в обратном порядке, в зависимости от значения на внешнем управляющем входе. Для того чтобы приводимый пример не оказался слишком большим, мы ограничимся счетом по модулю 4, для которого достаточно двух битов состояния, представляющих четыре возможных значения счетчика.

Счетчик будет сконструирован на основе стандартной технологии синтеза последовательных схем. Такая схема считает в прямом направлении, если входной сигнал х равен 0, и в обратном, если входной сигнал равен 1. Текущее значение счетчика будет изменяться на отрицательном фронте тактового сигнала. Предположим, что нас особо интересует состояние счетчика в тот момент, когда мы досчитаем до 2. Поэтому при значении счетчика 2 мы будем выдавать выходной сигнал z = 1, а все остальное время сигнал z будет равен 0.

Такой счетчик можно реализовать как последовательную схему. Для того чтобы определить новое значение счетчика, которое будет установлено после очередного тактового импульса, достаточно знать значение х и текущее значение счетчика. Предшествующие его значения для этого не нужны. Если текущее значение равно 2 и х = 0, следующим значением будет 3. И не важно, получено текущее значение путем прямого счета от 1 или путем обратного счета от 3.

Прежде чем показать, как реализуется такая схема, давайте опишем ее поведение с помощью диаграммы состояний. У нашего счетчика имеется четыре разных состояния: S0, S1, S2 и S3. Диаграмма состояний — это граф, в котором состояния представлены окружностями (иногда называемыми узлами). Переходы между состояниями представлены стрелками с надписями. Связанная со стрелкой надпись указывает, какое значение переменной х вызывает данный переход и какое значение счетчика получается в результате. Диаграмма состояний для нашего счетчика с прямым/обратным счетом приведена на рис. 4.8. Например, стрелка, исходящая

Рис. 4.8. Диаграмма состояния для счетчика с прямым/обратным счетом по модулю 4, сигнализирующего о значении 2

от состояния S1 (счетчик = 1) при х = 0, указывает на состояние S2. При этом сообщается, что пока схема находится в состоянии S1 и х = 0, выходное значение z должно быть равным 0. Стрелка, ведущая от узла S2 к узлу S3, указывает, что когда х = 0, на следующем такте будет выполнен переход в состояние S3, а выходное значение z будет установлено в 1.

Обратите внимание, что диаграмма состояний описывает функциональное поведение счетчика вне какой бы то ни было связи с его конкретной реализацией. Так, рис. 4.8 может соответствовать цифровой схеме, механическому счетному устройству или компьютерной программе. Подобные диаграммы позволяют описывать любую систему с последовательным поведением.

В качестве альтернативы диаграмме состояний для представления той же информации можно воспользоваться таблицей состояний (табл. 4.1).

Таблица 4.1

Состояния для счетчика с прямым/обратным счетом

Текущее состояние Следующее состояние Выход zг
Х=0 Х= 1 Х=0 Х=1
S0 S1 S2 S3 S1 S2 S3 S0 S3 S0 S1 S2

В ней описаны переходы из каждого текущего состояния в следующие состояния, определяемые входным значением х. Выходной сигнал z определяется текущим состоянием схемы и входным значением х. Определив функциональное поведение счетчика, можно переходить к его физической реализации.

Для того чтобы закодировать все четыре состояния счетчика, достаточно двух битов. Обозначим их как у2 (старший бит) и у1 (младший бит). Состояния счетчика, определяемые значениями переменных у2 и y1, мы 6удем записывать в форме у2у1. У нашего счетчика четыре состояния у2у1: S0 = 00, S1 = 01, S2 = 10 и S3 = 11.

Как видите, это просто двоичная запись чисел из диапазона от 0 до 3, применяемая для обеспечения наглядности счета. Переменные у2 и у1 называются переменными состояния последовательной схемы. При указанных значениях этих переменных таблицу состояний для нашего примера можно переписать так, как показано в табл. 4.2. Для обозначения следующих состоянии в ней используются переменные Y2 и Y1.

Таблица А.49

Значения состояний для примера, приведенного на рис. А.48

Текущее состояние Следующее состояние Выход z
Х=0 Х=1 Х=0 Х=1
Y2Y1 Y2Y1 Y2Y1
0 0 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0

Мы могли бы выбрать и другие обозначения состояний у2у1. В частности, они могут быть такими: S0 = 10, S1= 11, S2 = 01 и S3= 00. Но такие обозначения не совсем логичны, хотя схема прекрасно бы функционировала. Реализация различных состояний обычно требует разных затрат.

Мы планировали создать нашу схему на основе D-триггеров, в которых значения двух переменных состояния будут сохраняться между последовательными тактовыми импульсами. Выход Q каждого триггера будет представлять переменную текущего состояния, а вход D — переменную следующего состояния Yi. Заметьте, что Yi является функцией переменных у2, у1 и х (табл. 4.2).

На основе представленной здесь таблицы для функций Y2 и Y1 можно составить вот такие выражения:

Y2 = у1 + у2 + х + у2у1х = у2Åу1Åх

Y1 = + у2 + х + у2 х =

Выходное значение z определяется следующим образом: Z = у2

С учетом этих выражений составляется схема, приведенная на рис. 4.9.

Рис. 4.9. Реализация счетчика с прямым/обратным счетом

Временные диаграммы

Для того чтобы полнее представить себе работу схемы счетчика, необходимо рассмотреть его временную диаграмму. На рис. 4.10 приведен пример возможной последовательности событий, происходящих в нашей схеме. Предполагается, что переходы между состояниями (изменения значений триггеров) происходят на отрицательном фронте тактирующего сигнала и что начальным состоянием счетчика является S0. Вначале х = 0. Поэтому в момент времени t0 счетчик переходит в состояние S1, затем, в момент времени t1 он переходит в состояние S2 (и на выходе z является значение 1), а затем, в момент времени t2, — в состояние S3 (на и выходе z мы снова видим 0). Далее, в момент времени t3, счетчик снова переходит состояние S0. Предположим, что в этот момент входное значение х меняется на 1, чего счетчик начинает считать в обратном порядке. Когда в момент времени t5 счетчик снова достигнет состояния S2, на выходе z опять появится значение 1

Рис. 4.10. Временная диаграмма для схемы, приведенной на рис. 4.9

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

Время задержки между фронтом тактового сигнала и изменением переменной уi- это время задержки на распространение сигнала в триггерах, на основе которых создана схема счетчика. Важно отметить, что вход х управляется тем же тактовым алом и изменяется в начале такта. Схемы, в которых все изменения управляются тактовым сигналом, называются синхронными последовательными схемами.

Еще одно важное наблюдение касается соответствия диаграммы состояний, представленной на рис. 4.8, временной диаграмме. Возьмем, к примеру, тактовый период между моментами времени t1 и t2. В течение этого времени схема находится в состоянии S2 и на ее входе сохраняется значение х = 0. На диаграмме состояний эта ситуация представлена исходящей из узла S2 стрелкой с надписью х = 0. Поскольку эта стрелка указывает на узел S3, на следующем фронте тактового сигнала (t2) переменные у1 и у2 принимают значения, соответствующие состоянию S3. А пока счетчик будет оставаться в состоянии S2, на выходе z будет значение 1.

Модель конечного автомата

Рассмотренный нами пример счетчика с прямым/обратным счетом, реализованного в виде синхронной последовательной схемы на основе триггеров и вентильной комбинаторной логики (рис. 4.9), легко обобщить до формальной модели конечного автомата, показанной на рис. 4.11.

В этой модели запаздывание при прохождении сигнала через элементы задержки равно длительности такта. Это время между изменениями, происходящими в точках Yi и соответствующими изменениями в точках уi. В данной модели предполагается, что через блок комбинаторной логики сигналы проходят без задержки; поэтому выходные значения z, Y1 и У2 являются мгновенными функциями входных значений х, у1 и у2

Рис. 4.11. Модель конечного автомата

. В реальной схеме все элементы, как показано на рис. 4.10, служат источниками определенных задержек. Схема будет работать правильно лишь при условии, что задержка блока комбинаторной логики не велика по сравнению с длительностью такта. Значения на выходах следующего состояния, Y1 и Y2, должны быть установлены таким образом, чтобы состояния триггеров изменились до окончания такта. Кроме того, в течение некоторого времени на выходе z требуемого значения может не быть, но оно должно появиться задолго до окончания такта.

Входы блока комбинаторной логики соединены с выходами триггеров уi предшествующих текущее состояние, и с внешним входом х. Выходы блока, обозначенные как Yi , соединены со входами триггеров и внешним выходом z. На отрицательном фронте тактового сигнала, соответствующем концу текущего такта, в триггеры загружаются значения выходов Yi которые становятся следующими значениями переменных состояния уi . Поскольку выходы триггеров соединены со входами блока комбинаторной логики, они вместе со следующим значением внешнего входа х определяют новые значения переменных z и Yi . На следующем такте значения Yi передаются на входы yi и процесс повторяется сначала. Таким образом, триггеры образуют обратную связь между выходом и входом комбинаторного блока с задержкой в один такт.

Хотя в рассмотренной нами схеме (рис. 4.11) имелся лишь один внешний вход и две переменные состояния, совершенно очевидно, что в схеме может быть нескольку переменных каждого из трех типов.

Синтез конечных автоматов

Теперь давайте подытожим сказанное и определим общую последовательность создания представленной на рис. 4.11 синхронной схемы, в основу которой положена диаграмма состояний, показанная на рис. 4.8. Процесс можно разбить на следующие ключевые этапы.

1.Составление диаграммы или таблицы состояний.

2.Определение количества и выбор подходящего типа триггеров.

3.Определение значений, которые будут храниться в триггерах по каждому из состояний, указанных в диаграмме состояний (этот этап называется назначением состояний).

4.Составление таблицы состояний.

5.Составление таблицы истинности для блока комбинаторной логики.

6.Разработка схемы реализации блока комбинаторной логики.

Пример

В качестве еще одного примера конечного автомата со входами и выходами будет рассмотрен торговый автомат, принимающий монеты и выдающий некоторый товар. Для того чтобы упростить изложение, предположим, что этот автомат принимает только монеты достоинством 25 и 10 центов. Автомат принимает монеты до пор, пока не получится сумма в 30 или более центов, после чего выдает товар.

Причем, получив больше 30 центов, автомат сдачи не дает. Пусть опускаемые в автомат монеты представляют две двоичные переменные, x1 и х2. Монете достоинством в 25 центов соответствует значение х1 = 1 (х2 = 0), а монете достоинством в 10 центов — значение х2 = 1 (x1 = 0). Монеты опускаются по одной, так что комбинации x1х2 = 11 быть не может. Пусть двоичная выходная переменная z обозначает выдачу автоматом товара, то есть z = 0, когда товар не выдается, и z = 1 в противном случае При синтезе логической схемы такого автомата первым делом нужно построить диаграмму или составить таблицу состояний. Имеет смысл для каждого из состояний составить словесное описание, чтобы позднее легче было определить, сколько триггеров потребуется для представления нужного количества состояний. Состояния определяют общую сумму денег, опущенных в автомат на данный момент. Поскольку монеты могут опускаться в любом порядке до тех пор, пока их общая сумма не составит или не превысит 30 центов, нам потребуются следующие четыре состояния:

♦ S0 — ничего не опущено (начальное состояние);

♦ S1 — 10 центов;

♦ S2 - 20 центов;

♦ S3 - 25 центов.

Другие состояния не потребуются, поскольку по достижении состояния S2 или S3 любая следующая монета дополнит сумму до необходимого максимума, после чего будет сгенерировано выходное значение z = 1 и автомат вернется в состояние S0, то есть будет готов к следующей операции продажи. Диаграмма состояний, описывающая поведение нашего торгового автомата, приведена на рис. 4.12.

Обратите внимание, что в диаграмме отсутствует входная пара значений x1х2 =11, поскольку опустить в автомат обе монеты одновременно невозможно. Кроме того, как видите, из каждого узла-состояния исходит стрелка, указывающая на него же и обозначенная как 00/0. Эта стрелка говорит о том, что пока в автомат не опущена ни одна монета, он остается в прежнем состоянии.

 

x1 = 1 — опущена монета в 25 центов; х2 = 1 — опущена монета в 10 центов

z = 1 — выдача товара (получена сумма в 30 или более центов)

Рис. 4.12. Диаграмма состояний торгового автомата

Описанный автомат может иметь всего четыре состояния, для реализации которых достаточно двух триггеров. Обозначим их как у2 и y1 и назначим им следующие значения: S0 = 00, S1 = 01, S2 = 10 и S3 = 11. Результирующая таблица состояний приведена на рис. 4.3. Прочерки в таблице соответствуют комбинации x1х2 = 11, которая на практике невозможна. Эти элементы, являющиеся безразличными значениями, при разработке схемы будут нам очень полезны, о чем узнаете позднее.

Таблица 4.3

Таблица состояний для торгового автомата

Текущее состояние Следующее состояние Выход Z
Х1х2 = 00 X1x2 =01 X1x2 =10 x1х2 =11 X1x2 =00 X1x2 =01 X1x2 =10 X1X2 = 11
  Y2Y1 Y2Y1 Y2Y1 Y2Y1 Y2Y1
S0 S1 S2 S3 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 --- --- - - 0- - - - -

Этим завершается первый этап процесса разработки автомата. Составленной нами таблице состояний соответствует таблица истинности (табл. 4.4) - она определяет функцию, которую нам предстоит реализовать в блоке комбинаторной логики. Из таблицы легко вывести следующие выражения:

Y2 = y2 + x2 y1 + x1

Y1 = y1 + (x1 + х2)

z = y2(x1 + х2) + x1y1

Таблица 4.4

Спецификация комбинаторной логики для торгового автомата

1 х2 У1 У2 Y2 Y1 z
0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 d d d d d d d d d d d d

Как видите, термы и (x1 + х2) встречаются в приведенных выражениях более одного раза. Это удешевляет реализацию логического блока. Последовательные схемы удобнее всего реализовывать в виде ПМЛ, СПЛУ и программируемых вентильных матриц, поскольку все эти типы схем состоят из триггеров и логических вентилей. Современные средства автоматизированного проектирования позволяют синтезировать последовательные схемы непосредственно на основе спецификаций, составленных в терминах диаграммы состоянии.

В таблице 4.3 для состоянии S2, значения следующих состояний и выходной переменной одинаковы при всех входных комбинациях, в которых происходит изменение состояния. Это означает, что для представления итоговых сумм в 20 и 25 центов двух разных состояний не требуется. Для них достаточно одного общего состояния, поскольку, как только в автомате окажется одна из этих двух сумм, поступление любой следующей монеты приведет к выдаче товара (z = 1) и возврату в состояние S0. Таким образом, состояния S2 и S3 эквивалентны и могут быть заменены одним состоянием. Это означает, что для реализации нашего торгового автомата достаточно трех состояний. Однако для них по-прежнему требуется два триггера. В общем случае, с уменьшением количества состояний обычно уменьшается и количество триггеров, а вся схема упрощается.

Напоследок заметим, что для представления переменных состояния могут применяться и триггеры других типов. Мы использовали триггеры типа D, чтобы предельно упростить задачу. Более гибкие триггеры, и в частности JK, позволяют сократить объем необходимых логических схем. Рассказывая о последовательных схемах, мы опирались на схемы, управляемые тактовым сигналом. Но последовательную схему можно создать и без тактового входа. Такие схемы, называемые асинхронными последовательными схемами, разрабатывать несколько сложнее, чем синхронные последовательные.

 

Последнее изменение этой страницы: 2017-07-07

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...