Системная реализация логики в ПЛИС FPGA
Современные программируемые логические схемы (ПЛИС) типа FPGA (field-programmable gate array) содержат конфигурируемые логические блоки (КЛБ) [1], состоящие из логических элементов ЛЭ. Логический элемент ЛЭ ПЛИС FPGA - это постоянное запоминающее устройство ПЗУ (LUT - Look Up Table), представляющее собой мультиплексор (дерево мультиплексоров), входы данных которого настраиваются так называемыми конфигурируемыми ячейками памяти [1, 2]. Обычно используются мультиплексоры на 4, 5 переменных, уже используются LUT на 6, 7 переменных.
На рис. 1 с целью упрощения дальнейших рассуждений представлена структура LUT всего на две переменные.
программируемый интегральный схема дешифратор
Рис. 1. Транзисторная схема LUT с числом входов =2 (мультиплексор 4-1)
Настройка на требуемую логическую функцию осуществляется путём записи в ячейки конфигурационной памяти SRAM значений 0 либо 1 в соответствии с таблицей истинности, так что:
Недостатком такой структуры LUT FPGA является то, что она реализует логические функции в совершенной дизъюнктивной нормальной форме (СДНФ), что приводит к значительным аппаратным затратам при увеличении числа переменных. Отсутствует возможность реализации систем логических функций в одном ЛЭ.
Дешифратор DC-LUT
Дешифратор как структура, обратная LUT, может позволить реализовать системы логических функций. Предложим и оценим реализацию такой структуры.
Транзисторная схема, «обратная» структуре, изображенной на рис. 1, может быть получена путём разворота LUT на 1800, причём выход - инвертор будет слева входом, который, например, «зануляется», а входы - четыре левых инвертора - будут выходами (рис. 2).
Рис. 2. Транзисторная схема - дешифратор DC-LUT, структура, «обратная» структуре рис. 1
Тогда выходы 0, 1, 2, 3 активируются при наборе соответствующего кода на входах адреса х1, х2. Таким образом, реализуется унитарный код, например 0111 при нулевых адресных сигналах. Тем более что в КМДП транзисторах, используемых в LUT при одинаковых топологических характеристиках, стоки и истоки транзисторов фактически эквивалентны.
Получаем дешифратор, причём демультиплексор можно получить, если на вход левого инвертора подавать бит данных d. Далее, m раз объединяя по ИЛИ соответствующие выходы 0, 1, 2, 3, получим реализацию постоянной памяти (ПЗУ, ROM) на 4 m-разрядных ячейках, например на четырех четырёхразрядных ячейках (рис. 3).
Рис. 3. ПЗУ на четыре четырёхразрядных ячейки
В структуре, изображённой на рис. 3, программируются связи 0, 1, 2, 3 (ненужные удаляются) с соответствующими элементами ИЛИ. Если эти связи могут изменяться - получим перепрограммируемое ПЗУ, т.е. реализуются 4 функции (f0-f3) 4 переменных. Такое программирование аналогично программированию межсоединений [1].
Рис. 4. Программируемые межсоединения с 16 направлений (SR0…15 конфигурационная память SRAM)
Причём, поскольку выходы 0, 1, 2, 3 ортогональны, выполняется условие активирования не более одной связи в каждый момент времени.
Структура на рис. 2 отличается от структуры на рис. 1 следующим: в LUT (рис. 1) всегда активирована одна из цепочек в дереве передающих транзисторов к выходному инвертору, который принимает значение 0 или 1 в зависимости от настройки SRAM. В структуре рис. 2 также активирована одна из цепочек в обратном дереве передающих транзисторов, но, поскольку инверторов много, то, вход инверторов неактивных цепочек фактически «оборван». Поэтому необходимо для каждого выходного инвертора создать альтернативную цепочку, гарантированно переводящую его выход, например, в единицу. Для этого предлагается выражение, двойственное конъюнкции, описывающей соответствующую цепочку в обратном дереве.
Так, для выхода 0 - выражение 2
получаем
Тогда это будет выглядеть так (рис. 5).
Рис. 5. Нулевой разряд DC LUT2 с альтернативной цепочкой
Известный ЛУТ на n переменных LUTn без учёта коммутаций входных переменных оценивается следующим образом.
Транзисторов в дереве всего
(4)
Учтём настройки входов - на каждый в ячейке SRAM - 6 транзисторов:
(5)
Учтём инверторы по входам + входные выходные инверторы (в каждом 2 транзистора), получим всего в LUTn:
(6)
Преобразуя, получаем итого
(7)
Проведём расчёт для предлагаемого DC LUTn. Транзисторов в обратном дереве столько же:
(8)
Далее учитываем транзисторы во всех инверторах (в каждом - два транзистора):
(9)
Плюс межсоединения для m разрядов, на каждое необходима ячейка конфигурационной памяти, содержащая 6 транзисторов, да ещё инвертор:
(10)
(11)
Задержка увеличивается по сравнению с LUTn всего на 2 транзистора.
Логический элемент ПЛИС - FPGA на основе ДНФ реализации логических функций с использованием передающих КМДП транзисторов
В работах [3, 4] предложена ДНФ-реализация логики на основе аппаратно реализованного алгоритма ПЛМ - программируемой логической матрицы с использованием в качестве базисных функционально-полных толерантных (ФПТ) КМДП-элемен-тов. Для реализации такого подхода с использованием МОП передающих транзисторов предложены блок программируемой конъюнкции (матрица «И»), в котором требуемая j-я конъюнкция n переменных по каждой i-ой переменной будет формироваться с использованием двух бит конфигурационной памяти [5] (рис. 6).
а) б)
Рис. 6. Логический элемент ПЛИС - FPGA на основе ДНФ реализации логических функций с использованием передающих транзисторов а) матрица «И», б) матрица «ИЛИ»
В набираемую цепочку входит либо переменная Si, либо её инверсия (неSi), либо эта переменная отсутствует. Тогда, например, по первой переменной первой конъюнкции, S1.1=1, (неS1.1)=0 для S1, по второй переменной S2.1=0, (неS2.1)=1 для (неS2), а по третьей, отсутствующей переменной S3.1=1, (неS3.1)=1 для (~). То есть соответствующий передающий транзистор будет открыт всегда, на любом наборе, и ортогональность цепей к нему соблюдается.
В m блоках программируемой функции (матрица «ИЛИ»), например в первом, в конфигурационные ячейки F1.w (w=1…k) записывается единица, если эта w-конъюнкция входит в функцию, иначе записывается ноль. Так, для суммы по модулю два трёх переменных S0S1S2 настройка матриц ЛЕ-ДНФ определяется по данным табл. 1, 2.
Таблица 1. Матрица «И» для ЛЕ-ДНФ
|
№ |
S1.1 |
неS1.1 |
S2.1 |
неS2.1 |
S3.1 |
неS3.1 |
Конъюнкция |
|
|
1 |
1 |
0 |
1 |
0 |
1 |
1 |
S1S2 |
|
|
2 |
1 |
1 |
1 |
0 |
1 |
0 |
S2S3 |
|
|
3 |
1 |
0 |
1 |
1 |
1 |
0 |
S1S3 |
|
|
4 |
0 |
1 |
0 |
1 |
1 |
1 |
(неS1) (неS2) |
Таблица 2. Матрица «ИЛИ» для ЛЕ-ДНФ
|
№ |
Fi.1 |
Fi.2 |
Fi.3 |
Fi.4 |
Функция |
|
|
1 |
1 |
1 |
1 |
0 |
i=1; S1S2 или S2S3 или S1S3 |
|
|
2 |
0 |
0 |
1 |
1 |
i=2; S1S3 или (неS1) (неS2) |
|
Оценим аппаратные затраты на реализацию логического элемента ПЛИС - FPGA на основе ДНФ реализации m логических функций, содержащих не более k конъюнкций n переменных.
Сравнение сложности вариантов реализации LUT для систем логических функций
Сравним по сложности известный (L) и предложенные варианты (Ldc - на основе дешифратора, L dnf - на основе ДНФ) реализации LUT для систем логических функций при различных параметрах числа переменных n, количества функций m, количества конъюнкций k. Так, при m = k =8, n=4 L dnf немного уступает по сложности Ldc, но при n4 значительно опережает два других варианта, причём известная реализация (L) всегда хуже (рис. 7).
Рис. 7. Сравнение аппаратных затрат в транзисторах известной структуры LUTn (L), DC LUTn (Ldc) и LUT ДНФ (L dnf) при m = k =8
При m = k =16, n = 4 L dnf сравним с известным LUT, но при n5 лучше других вариантов (рис. 8).
Рис. 8. Сравнение аппаратных затрат в транзисторах известной структуры LUTn (L), DC LUTn (Ldc) и LUT ДНФ (L dnf) при m = k =16
При m =8, k =16 L dnf только при n8 лучше других вариантов (рис. 9).
Рис. 9. Сравнение аппаратных затрат в транзисторах известной структуры LUTn (L), DC LUTn (Ldc) и LUT ДНФ (L dnf) при m = 8, k =16
При увеличении числа функций и относительно небольшом числе конъюнкций L dnf выигрывает уже при небольшом n (рис. 10, 11).
Рис. 10. Сравнение аппаратных затрат в транзисторах известной структуры LUTn (L), DC LUTn (Ldc) и LUT ДНФ (L dnf) при m = 16, k =8
Рис. 11. Сравнение аппаратных затрат в транзисторах известной структуры LUTn (L), DC LUTn (Ldc) и LUT ДНФ (L dnf) при m = 24, k =24
Но при большом k относительно n выигрыш возможен при достаточно больших n (рис. 12).
Рис. 12. Сравнение аппаратных затрат в транзисторах известной структуры LUTn (L), DC LUTn (Ldc) и LUT ДНФ (L dnf) при m = 8, k =24
Однако в области больших n LUT ДНФ является безусловным фаворитом (рис. 13, 14, 15).
Рис. 13. Сравнение аппаратных затрат в транзисторах известной структуры LUTn (L), DC LUTn (Ldc) и LUT ДНФ (L dnf) при m = 16, k =32, n=4…16
Рис. 14. Сравнение аппаратных затрат в транзисторах известной структуры LUTn (L), DC LUTn (Ldc) и LUT ДНФ (L dnf) при m = 32, k =64, n=4…32
Рис. 15. Сравнение аппаратных затрат в транзисторах известной структуры LUTn (L), DC LUTn (Ldc) и LUT ДНФ (L dnf) при m = 32, k =64, n=4…64
Таким образом, системная реализация логических функций в предлагаемой структуре DC LUT, обратной существующей структуре мультиплексора - генератора функций n переменных ПЛИС типа FPGA (LUT FPGA) предпочтительней известной по аппаратным затратам при незначительном увеличении задержки. Логический элемент ПЛИС - FPGA на основе ДНФ по сравнению с LUT FPGA и DC LUT при небольшом числе конъюнкций даже при небольших n.
При этом существующий ЛЕ и DC LUT фактически не могут реализовать даже 16 разрядные функции, а LUT ДНФ имеет приемлемые затраты и для 64-разрядных функций. А быстродействие LUT ДНФ так же, как и известного, определяемого в основном длиной цепочки передающих транзисторов - n, определяется цепочкой транзисторов в блоках программируемых конъюнкций - это тоже n, а цепочки в блоках программируемых функций содержат всего один транзистор.
Список литературы
программируемый интегральный схема дешифратор
1. Цыбин С. Программируемая коммутация ПЛИС: взгляд изнутри. [Электронный ресурс]. URL: http://www.kit-e.ru/articles/plis/2010_11_56.php (дата обращения: 12.11.12).
2. Look up table implementation of fast carry for adders and counters: US 005274581A, 28.12.1993.
3. Тюрин С.Ф., Греков А.В., Набатов А.В. Микропрограммно-аппаратное восстановление логики программируемых логических интегральных схем с использованием функционально-полных толерантных элементов // Научно-технические ведомости СПбГПУ. Информатика. Телекоммуникации. Управление. 2012, №1 (140). С. 107-112.
4. Тюрин С.Ф., Байдаров А.А., Морозов А.М., Набатов А.В. Моделирование в системе Квартус-2 конфигурируемого логического блока на основе ДНФ представления систем логических функций с использованием функционально-полных толерантных элементов // Информационно-измерительные и управляющие системы. 2012. №3. С. 44-50.
5. Тюрин С.Ф., Понуровский И.С. Логический элемент ПЛИС FPGA для реализации ДНФ // Вестник Ижевского государственного технического университета. 2013. №2. С. 95-98.