ПРОГРАММИРУЕМОЕ ЛОГИЧЕСКОЕ УСТРОЙСТВО
PROGRAMMABLE LOGICAL DEVICE

Изобретение относится к вычислительной технике и может быть использовано для вычисления систем логических функций в программируемых логических интегральных схемах (ПЛИС).
n
n
n
n
n-1
Известно программируемое логическое устройство, содержащее первую, вторую и третью группы D-триггеров количеством по m·2 (n - число входных переменных, m - число выходных функций), третью группу D-триггеров количеством 2(n-1)m, группу m(n-1) элементов И, счетчик, группу m·2 элементов И с тремя состояниями на выходе, дешифратор, группу m(n-1) элементов ИЛИ, вторую группу m·2 элементов И с тремя состояниями на выходе и m блоков вычисления функций, каждый блок вычисления функций содержит группу 4·2 элементов И с тремя состояниями на выходе, два D-триггера, Т-триггер, RS-триггер фиксации импульса, пять элементов ИЛИ, три элемента И, четыре инвертора, n групп элементов 2·2 НЕ-И-ИЛИ (в каждую i-ю группу входит 2 элементов, i=1,n), элемент задержки, дополнительную группу элементов И с тремя состояниями на выходе (патент РФ №2146840 от 20.03.2000, кл. G11C 17/00, G06F 7/00).
Недостатком известного устройства являются высокие аппаратурные затраты, выраженные в количестве транзисторов, на реализацию логической функции в программируемых логических интегральных схемах (ПЛИС).
i
n
n
Наиболее близким устройством того же назначения к заявленному изобретению по совокупности признаков является программируемое логическое устройство, содержащее группу n инверторов, n групп передающих транзисторов (n - число входных переменных) по 2,i=1,n транзисторов в группе, группу 2 инверторов настройки, выходной инвертор, входы n переменных, группу 2 входов настройки, выход устройства,
n
n
n
n-1
n-2
причем затвор каждого нечетного транзистора i-й группы передающих транзисторов i=1, n подключен к выходу i-го инвертора группы n инверторов, затвор каждого четного транзистора i-й группы передающих транзисторов подключен к i-му входу входов n переменных, истоки 2 транзисторов n-ой группы подключены к выходам инверторов группы 2 инверторов настройки, входы которых являются группой 2 входов настройки, стоки четных и нечетных транзисторов n-ой группы объединены и подключены к истокам соответствующих 2 транзисторов n-1-ой группы, стоки которых объединены и подключены к истокам соответствующих 2 транзисторов n-2-ой группы, стоки двух последних транзисторов 1-ой группы объединены и подключены ко входу выходного инвертора, выход которого является выходом устройства (Строганов А., Цыбин С. Программируемая коммутация в ПЛИС: взгляд изнутри // Компоненты и технологии. - 2010. - №11. С.56-62 Рис.9, [Электронный ресурс]. - URL: http://www.kit-e.ru/articles/plis/2010_11_56.php 12.11.12 г.).
Недостатком известного устройства, принятого за прототип, является невозможность реализации более одной функции в одном устройстве, в связи с чем для реализации m функций необходимо m устройств, что в свою очередь приводит к высоким аппаратурным затратам в количестве транзисторов на реализацию систем логических функций большого числа переменных в ПЛИС.
Это обусловлено следующими обстоятельствами. Технические средства прототипа ориентированы на реализацию в зависимости от настройки одной конкретной логической функции n переменных в совершенной дизъюнктивной нормальной форме (СДНФ). Для реализации системы из m логических функций этих же n переменных необходимо m устройств, хотя конституенты (элементы СДНФ) могут в этих функциях повторяться.
В связи с этим, значительно возрастают аппаратные затраты в количестве транзисторов на реализацию систем из m логических функций одних и тех же n переменных даже для относительно небольших n - порядка 8…10.
В настоящее время в программируемых логических интегральных схемах (ПЛИС) ведущих фирм наметился переход на программируемые логические устройства (называемые еще логическими элементами LUT - Look Up Table) 6,7 переменных, однако в основном используются блоки 4, 5 переменных.
i
n
Признаки прототипа, совпадающие с существенными признаками заявляемого изобретения - содержит группу n инверторов, n групп передающих транзисторов (n - число входных переменных) по 2,i=1,n транзисторов в группе, группу 2 инверторов, инвертор, входы n переменных, затвор каждого нечетного транзистора i-й группы передающих транзисторов i=1, n подключен к выходу i-го инвертора группы n инверторов, затвор каждого четного транзистора i-й группы передающих транзисторов подключен к i-му входу входов n переменных.
Задачей изобретения является обеспечение возможности реализации нескольких функций в одном устройстве и тем самым снижение аппаратных затрат на реализацию систем логических функций большого количества переменных в ПЛИС.
i
n
Поставленная задача была решена за счет того, что в заявляемом устройстве, содержащем группу n инверторов, n групп передающих транзисторов (n - число входных переменных) по 2,i=1,n транзисторов в группе, группу 2 инверторов, инвертор, входы n переменных, причем затвор каждого нечетного транзистора i-й группы передающих транзисторов i=1,n подключен к выходу i-го инвертора группы n инверторов, затвор каждого четного транзистора i-й группы передающих транзисторов подключен к i-му входу входов n переменных,
n
дополнительно введены 2 блоков конституент нуля, и m блоков вычисления функций,
n-1
n-2
n
n
n
n
n
n
причем вход инвертора подключен к шине «ноль вольт», выход инвертора подключен к истокам двух транзисторов 1-й группы передающих транзисторов, стоки транзисторов 1-й группы передающих транзисторов подключены к объединенным истокам четных и нечетных четырех транзисторов 2-ой группы передающих транзисторов, и так далее, то есть объединенные истоки четных и нечетных транзисторов из 2 транзисторов n-1-ой группы подключены к стокам 2 транзисторов n-2-ой группы, i=1,n, стоки транзисторов из 2 транзисторов последней, n-ой группы подключены ко входам инверторов группы 2 инверторов и к выходам соответствующего из 2 блоков конституент нуля,, входы которых подключены к соответствующим переменным входов n переменных или инверсий переменных с выходов соответствующих для реализации конституенты нуля инверторов группы n инверторов, выходы инверторов группы 2 инверторов подключены к 2 входам конституент СДНФ m блоков вычисления функций, группы 2 входов которых являются m группами настроечных входов устройства, а выходы m блоков вычисления функций являются выходами устройства,
каждый блок реализации конституенты нуля содержит n передающих транзисторов, истоки которых объединены и являются выходом блока, стоки которых объединены и подключены к шине «ноль вольт», затворы транзисторов подключены к соответствующим разрядам переменных n входов переменных, либо к инверсиям переменных с выходов соответствующих инверторов группы n инверторов, так, что в j-m блоке реализации конституенты нуля формируется отрицание конституенты единицы с десятичным номером j-1,
n
n
n
каждый j-ый блок вычисления функций содержит группу 2 передающих транзисторов, истоки которых подключены к выходам соответствующим из 2 инверторов группы 2 инверторов для включения соответствующего набора в соответствующую функцию, стоки передающих транзисторов объединены и подключены ко входу инвертора, выход которого является выходом блока, затворы передающих транзисторов подключены к соответствующим разрядам j-ой группы групп настроечных входов устройства.
n
n-1
n-2
n
n
n
n
n
n
Признаки заявляемого технического решения, отличительные от прототипа - содержит 2 блоков конституент нуля, и m блоков вычисления функций, вход инвертора подключен к шине «ноль вольт», выход инвертора подключен к истокам двух транзисторов 1-ой группы передающих транзисторов, стоки транзисторов 1-ой группы передающих транзисторов подключены к объединенным истокам четных и нечетных четырех транзисторов 2-ой группы передающих транзисторов, и так далее, то есть объединенные истоки четных и нечетных транзисторов из 2 транзисторов n-1-ой группы подключены к стокам 2 транзисторов n-2-ой группы, i=1,n, стоки транзисторов из 2 транзисторов последней, n-ой группы подключены ко входам инверторов группы 2 инверторов и к выходам соответствующего из 2 блоков конституент нуля, входы которых подключены к соответствующим переменным входов n переменных или инверсий переменных с выходов соответствующих для реализации конституенты нуля инверторов группы n инверторов, выходы инверторов группы 2 инверторов подключены к 2 входам конституент СДНФ m блоков вычисления функций, группы 2 входов которых являются m группами настроечных входов устройства, а выходы m блоков вычисления функций являются выходами устройства,
каждый блок реализации конституенты нуля содержит n передающих транзисторов, истоки которых объединены и являются выходом блока, стоки которых объединены и подключены к шине «ноль вольт», затворы транзисторов подключены к соответствующим разрядам переменных n входов переменных, либо к инверсиям переменных с выходов соответствующих инверторов группы n инверторов, так, что в j-m блоке реализации конституенты нуля формируется отрицание конституенты единицы с десятичным номером j-1,
n
n
n
каждый j-ый блок вычисления функций содержит группу 2 передающих транзисторов, истоки которых подключены к выходам соответствующим из 2 инверторов группы 2 инверторов для включения соответствующего набора в соответствующую функцию, стоки передающих транзисторов объединены и подключены ко входу инвертора, выход которого является выходом блока, затворы передающих транзисторов подключены к соответствующим разрядам j-ой группы групп настроечных входов устройства, на i-ый вход которой, i=1,2n, подается единица, если i-ая конституента единицы входит в СДНФ реализуемой j-ой функции и ноль - если не входит.
Отличительные признаки в сочетании с известными позволяют реализовать в одном устройстве не одну, а несколько функций - систему логических функций, зависящих от одних и тех же членов совершенной дизъюнктивной нормальной формы (СДНФ), путем включения или не включения их путем настройки в различные m функций, что позволяет снизить аппаратные затраты в количестве транзисторов на реализацию систем логических функций большого количества переменных в ПЛИС.
n
n
n
i
n
1
2
3
4
<mrow><msub><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mn>1</mn></msub><mo>∨</mo><msub><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mn>2</mn></msub><mo>∨</mo><msub><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mn>3</mn></msub><mo>∨</mo><msub><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mn>4</mn></msub></mrow>
<mrow><msub><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mn>1</mn></msub><msub><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mn>2</mn></msub><msub><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mn>3</mn></msub><msub><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mn>4</mn></msub></mrow>
<mrow><msub><mi>x</mi><mn>1</mn></msub><mo>∨</mo><msub><mi>x</mi><mn>2</mn></msub><mo>∨</mo><msub><mi>x</mi><mn>3</mn></msub><mo>∨</mo><msub><mi>x</mi><mn>4</mn></msub></mrow>
Введение 2 блоков конституент нуля обеспечивает исключение состояний неподключенных («оборванных») входов инверторов группы 2 инверторов при реализации одного из 2 путей в «дереве передающих транзисторов», пирамидально построенного из n групп передающих транзисторов (n - число входных переменных) по 2,i=1,n транзисторов в группе, для каждого выходного инвертора создается альтернативная цепочка в виде конституенты нуля в 2 блоках конституент нуля, гарантированно переводящая выход соответствующего инвертора в единицу подключением шины «ноль вольт» хотя бы по одной переменной в случае неактивации данного пути в дереве транзисторов. Так, для конституенты единицы хххх (номер 15) альтернативная цепочка - конституента нуля имеет вид:
, для конституенты единицы
(номер 0) альтернативная цепочка - конституента нуля имеет вид:
.
Введение m блоков вычисления функций позволяет путем настройки обеспечивать включение или не включение членов СДНФ в различные m функций.
n
n
n
Изменение связей по сравнению с известным устройством обеспечивает «разворот», «реверс» устройства - для реализации дешифрации конституент СДНФ путем передачи по одному из 2 путей в «дереве передающих транзисторов» логического нуля не к корню «дерева», а от «корня», что фиксируется активным нулем на выходе одного из 2 инверторов группы 2 инверторов.
На фиг.1 изображена схема электрическая структурная программируемого логического устройства.
n
<mrow><mtext>j</mtext><mo>=</mo><mover accent="true"><mrow><mtext>1</mtext><msup><mrow><mtext>,2</mtext></mrow><mtext>n</mtext></msup></mrow><mo stretchy="true">¯</mo></mover></mrow>
На фиг.2 - схема электрическая функциональная j -го блока из 2 блоков конституент нуля,
.
<mrow><mtext>j</mtext><mo>=</mo><mover accent="true"><mrow><mtext>1</mtext><mtext>,m</mtext></mrow><mo stretchy="true">¯</mo></mover></mrow>
На фиг.3 - схема электрическая функциональная j -го блока из m блоков вычисления функций,
.
На фиг 4 - график изменения выигрыша в количестве транзисторов при использовании одного предлагаемого устройства вместо m устройств - прототипов при количестве функций m=8.
На фиг 5 - график изменения выигрыша в количестве транзисторов при использовании одного предлагаемого устройства вместо m устройств - прототипов при количестве функций m=16.
На фиг 6 - график изменения выигрыша в количестве транзисторов при использовании одного предлагаемого устройства вместо m устройств - прототипов при количестве функций m=32.
Программируемое логическое устройство содержит
<mrow><msup><mn>2</mn><mi>i</mi></msup><mo>,</mo><mi>i</mi><mo>=</mo><mover accent="true"><mrow><mn>1,</mn><mi>n</mi></mrow><mo stretchy="true">¯</mo></mover></mrow>
n
n
n
группу n инверторов 1, n групп передающих транзисторов 2 (n - число входных переменных) по
транзисторов в группе, группу 2 инверторов 3, инвертор 4, 2 блоков конституент нуля 5, и m блоков вычисления функций 6, входы n переменных 7, m выходов устройства 8, m групп 2 настроечных входов 9, вход «ноль вольт» 10.
n-1
n-2
n
n
n
n
n
n
Затвор каждого нечетного транзистора i-й группы передающих транзисторов 2 i=1,n подключен к выходу i-го инвертора группы n инверторов 1, затвор каждого четного транзистора i-й группы передающих транзисторов 2 подключен к i-му входу входов п переменных 7, вход инвертора 4 подключен к шине «ноль вольт» 10, выход инвертора 4 подключен к истокам двух транзисторов 1-ой группы передающих транзисторов 2.1, стоки транзисторов 1-ой группы передающих транзисторов 2.1 подключены к объединенным истокам четных и нечетных четырех транзисторов 2-ой группы передающих транзисторов 2.2, и так далее, то есть объединенные истоки четных и нечетных транзисторов 2 из 2 транзисторов n-1-ой группы подключены к стокам 2 транзисторов п-2-ой группы, i=1,n, стоки транзисторов из 2 транзисторов последней, n-ой группы подключены ко входам инверторов группы 2 инверторов 3 и к выходам соответствующего из 2 блоков конституент нуля 5, входы которых подключены к соответствующим переменным входов n переменных 7 или инверсий переменных с выходов соответствующих для реализации конституенты нуля инверторов группы n инверторов 1, выходы инверторов группы 2 инверторов 3 подключены к 2 входам конституент СДНФ m блоков вычисления функций 6, группы 2 входов которых являются m группами 9.1…9.m настроечных входов устройства, а выходы m блоков вычисления функций 6 являются выходами 8.1…8.m устройства.
Каждый блок реализации конституенты нуля содержит n передающих транзисторов 11, истоки которых объединены и являются выходом блока, стоки которых объединены и подключены к шине «ноль вольт» 12, затворы транзисторов подключены к соответствующим разрядам переменных выходов переменных 7, либо к инверсиям переменных с выходов соответствующих инверторов группы n инверторов 1, так, что в j-m блоке реализации конституенты нуля формируется отрицание конституенты единицы с десятичным номером j-1.
n
n
Каждый j-ый блок вычисления функций 6 содержит группу 2 передающих транзисторов 13, истоки которых подключены к выходам соответствующим из 2 инверторов группы 2" инверторов для включения соответствующего набора в соответствующую функцию, стоки передающих транзисторов 13 объединены и подключены ко входу инвертора 14, выход которого является выходом блока, затворы передающих транзисторов подключены к соответствующим разрядам j-ой группы 9.j групп 9 настроечных входов устройства, на i-ый вход которой, i=l,2n, подается единица, если i-ая конституента единицы входит в СДНФ реализуемой j-ой функции и ноль - если не входит.
Программируемое логическое устройство работает следующим образом:
n
n
1.Режим программирования. В этом режиме на m групп 2 настроечных входов 9 устанавливаются сигналы настройки m логических функций, зависящих не более чем от  переменных.
n
Если i-ая конституента входит в j-ю логическую функцию, то на входе 9.j.I группы 9.j из m групп 2 настроечных входов 9 устанавливается единица и ноль - в противном случае. Таким образом программируются все необходимые m блоков вычисления функций 6 путем активации затворов соответствующих транзисторов 13.
2
1
2
z
Пример. Пусть, например, необходимо реализовать следующую систему из семи логических функций, зависящих от четырех переменных yyxx:
2
y(t+1)=4,5,6,7,12,13,14,15;
1
y(t+1)=0,1,2,3,4,5,6,7,14,15;
1
z=0,1,2,3;
2
z=4,5,6,7,14,15;
3
z=12,14;
4
z=8,9;
5
z=10,ll.
В известном устройстве возможна реализация только одной из этих семи функций. В связи с этим требуется 7 известных устройств.
В предлагаемом устройстве настраиваются семь блоков вычисления функций 6.1-6.7 по входам настройки 9.1-9.7 в соответствие с таблицей 1:
n
n
2. Режим вычислений. В этом режиме на входы n переменных 7 поступают значения входных переменных, причем активируется (становится равным нулю) выход i-го инвертора из группы 2 инверторов 3, если на входах n переменных 7 установлен двоичный код, соответствующий десятичному числу i. То есть реализуется один из 2 путей в обратном дереве транзисторов 2 с выхода инвертора 4 - логическая единица подается на вход инвертора 3.i. Этот путь фиксируется активированием затворов всех транзисторов в нем сигналами входов n переменных 7 и выходов инверторов группы n инверторов 1.
n
При этом в i-м из 2 блоков конституент нуля 5.i затворы всех транзисторов 11.i не активированы, а во всех остальных, кроме i-го, активирован хотя бы один затвор транзисторов 11, что обеспечивает подключение шины «ноль вольт» 12 ко входам всех, кроме 3.i инвертора, что фиксирует их выходы в неактивном (единичном) состоянии.
Соответственно активируются входы инверторов 14 в тех блоках из m блоков вычисления функций 6, которые настроены на включение набора (конституенты) i - через i-ый транзистор 13. Поэтому на соответствующих выходах 8 появляются логические единицы.
2
1
2
1
Так, для настройки приведенного выше примера, в случае установки на входах n переменных 7 (7.4, 7.3, 7.2, 7.1) двоичного набора yyxx равного 1110 - активируется цепочка транзисторов, соответствующая конституенте
, логическая единица с выхода инвертора 4 поступает на вход инвертора 3.15, на выходе которого формируется логический ноль.
<mrow><mo stretchy="false">(</mo><mover accent="true"><mn>1</mn><mo>¯</mo></mover><mo>∨</mo><mover accent="true"><mn>1</mn><mo>¯</mo></mover><mo>∨</mo><mover accent="true"><mn>1</mn><mo>¯</mo></mover><mo>∨</mo><mn>0</mn><mo>=</mo><mn>0</mn><mo stretchy="false">)</mo></mrow>
При этом в блоке 5.15 реализующем конституенту нуля №14 (15-1)
, которая на наборе переменных 1110 равна нулю
затворы всех транзисторов 11 не активированы, поэтому цепь от шины «ноль вольт» 12 ко входу инвертора 3.15 разомкнута.
<mrow><mo stretchy="false">(</mo><mover accent="true"><mn>1</mn><mo>¯</mo></mover><mo>∨</mo><mover accent="true"><mn>1</mn><mo>¯</mo></mover><mo>∨</mo><mn>1</mn><mo>∨</mo><mover accent="true"><mn>0</mn><mo>¯</mo></mover><mo>=</mo><mn>1</mn><mo stretchy="false">)</mo></mrow>
В блоке 5.14, например, реализующем конституенту нуля
, которая на наборе переменных 1110 не равна нулю
затворы двух транзисторов 11 активированы, поэтому цепь от шины «ноль вольт» 12 ко входу инвертора 3.14 имеется, поэтому выход инвертор 3.13 удерживается в состоянии логической единицы. Аналогично происходит с остальными инверторами 3.16, 3.12, 3.11…3.1.
Далее, в блоках вычисления функций 6.1, 6.2, 6.4, 6.5, которые настроены в соответствии с таблицей 1 на включение конституенты 14 активируются входы инверторов 14. Поэтому на соответствующих выходах 8.1, 8.2, 8.4, 8.5 появляются логические единицы, что означает равенство единице функций
2
1
2
3
y(t+1),y(t+1),z,z,
в рабочие (единичные) наборы которых входит конституента 14.
Оценка технико - экономической эффективности
Сравним по сложности L известное программируемое устройство - LUT L(n) и предложенное - DC LUT (Ldc). Сложность прототипа, реализующего одну функцию, определяется выражением:
где
n+1
n+1
2-2+2=2
транзисторов в дереве передающих транзисторов+два транзистора в выходном инверторе 4,
2n
транзисторов в группе инверторов 1,
n
2·2
транзисторов в группе инверторов 3.
Сложность предлагаемого, реализующего m функций от n переменных, определяется выражением:
где
n+1
n+1
2-2+2=2
транзисторов в дереве передающих транзисторов+два транзистора в инверторе 4,
2n
транзисторов в группе инверторов 1,
n
2·2
транзисторов в группе инверторов 3,
n
m2+2·m
транзисторов в m блоках вычисления функций 6,
n
n·2
транзисторов в блоках конституент нуля 5.
Таким образом, получаем выигрыш:
Графики выигрыша представлены на Фиг.4-6
Фиг.4. Изменение выигрыша в количестве транзисторов при использовании одного предлагаемого устройства вместо m устройств - прототипов
при m=8.
Фиг.5. Изменение выигрыша в количестве транзисторов при использовании одного предлагаемого устройства вместо m устройств - прототипов
при m=16.
Фиг.6. Изменение выигрыша в количестве транзисторов при использовании одного предлагаемого устройства вместо m устройств - прототипов
при m=32.
Таким образом, возможен выигрыш от нескольких десятков процентов при m=8 до сотен процентов m=16, 32.
Так, для приведенного примера n=4, m=7 (необходимо одно предлагаемое устройство против 7 устройств - прототипов) получаем выигрыш 45,6%:
Достижение технического результата изобретения подтверждается приведенными оценками.