Источник: http://www.chipinfo.ru/literature/chipnews/200302/6.html В. Соловьев, А. Климович Использование входных буферов ПЛИС в качестве элементов памяти конечных автоматовРассматривается новый подход к проектированию конечных автоматов на ПЛИС, когда входные буферы ПЛИС используются в качестве элементов памяти конечных автоматов. Конечные автоматы типа Мили, допускающие такую реализацию, получили название автоматов класса E, а конечные автоматы типа Мура - автоматов класса F. Описывается метод синтеза автоматов классов E и F. Результаты экспериментальных исследований предложенных методов в сравнении с традиционными подходами, реализованными в пакетах MAX+PLUSII и WebPack, показали высокую эффективность новых методов синтеза, которые позволяют уменьшить число используемых макроячеек ПЛИС, в среднем, в 3,5 раза, а для отдельных примеров - в 8–9 раз. ВведениеВ [1] было рассмотрено использование триггеров выходных макроячеек ПЛИС в качестве элементов памяти конечных автоматов. Но входные буферы ПЛИС также часто содержат триггеры. Отсюда возникает вопрос, нельзя ли эти триггеры использовать в качестве элементов памяти при синтезе конечных автоматов? Оказывается, что можно, а структурными моделями таких конечных автоматов являются автоматы классов E и F, рассмотренные в [2]. На основании автоматов классов E и F в [2] предложено 8 различных структурных моделей, допускающих эффективную реализацию на ПЛИС: EI, E0, F0, EI0, EI’, FI’, EI0’ и FI0’. Для реализации этих моделей достаточно располагать только двумя методами синтеза: автомата класса E и автомата класса F. Другие модели строятся на основании структур автоматов классов E и F путём установки регистров на входе (EI), регистров на выходе (E0, F0), регистров одновременно на входе и выходе (EI0), защёлок на входе (EI’, FI’), а также защёлок на входе и регистров на выходе (EI0’, FI0’). Структуры конечных автоматов классов E и FАвтоматом класса E (F) является автомат типа Мили (Мура), каждый входной набор которого совпадает с кодом следующего состояния. Это позволяет в качестве элементов памяти использовать триггеры входных буферов ПЛИС, а также исключить из структуры конечного автомата комбинационную схему, реализующую функции переходов [2]. Отметим, что значение каждой входной переменной всегда проходит через входной буфер ПЛИС, поэтому использование триггеров входных буферов в качестве элементов памяти конечного автомата не увеличивает стоимость реализации конечного автомата на ПЛИС. Однако на практике не всегда наборы значений входных переменных могут выступать в качестве кодов внутренних состояний. Например, если число L входных переменных меньше значения intlog2M, где М - число внутренних состояний конечного автомата, или когда переходы в различные внутренние состояния конечного автомата инициируются одним и тем же набором значений входных переменных. С другой стороны, не всякая совокупность выходных наборов пригодна для кодирования внутренних состояний автомата: из условия детерминированности поведения конечного автомата коды различных состояний должны быть ортогональны между собой (по крайней мере в одном разряде иметь различные значащие значения). Во всех этих случаях в структуру автоматов классов E и F необходимо вводить дополнительные элементы памяти для различия кодов внутренних состояний. Таким образом, наиболее часто реализуемые структуры автоматов классов E и F показаны соответственно на рис. 1а, б, где CL - комбинационная часть конечного автомата; RGI - входной буфер; RG - регистр дополнительных элементов памяти; X = {x1,...,xL} - множество входных переменных конечного автомата; Y = {y1,...,yN} - множество выходных функций (выходных переменных) конечного автомата; G = {g1,...,gL} - множество переменных, определяющих коды внутренних состояний, соответствующих входным переменным; D = {d1,...,dL} - множество функций возбуждения элементов памяти (переходов); E = {e1,...,eL} - множество переменных обратных связей. Рисунок 1. Структуры конечных автоматов с входными буферами ПЛИС в качестве элементов памяти: а) автомат класса E (Мили); б) автомат класса F (Мура) Отметим, что в структуре автомата класса E (рис. 1а) входной буфер имеет две связи с комбинационной частью конечного автомата: буферизированную (регистровую) и прямую (комбинационную). Это связано с тем, что в автоматах типа Мили (а автомат класса E является автоматом типа Мили) выходные функции непосредственно зависят от входных переменных. Поэтому для реализации автоматов класса E каждый входной буфер ПЛИС должен иметь две связи с внутренней логикой: регистровую и комбинационную. Такими свойствами обладают, например, ПЛИС MACH 215, семейства MACH 3, 4 и 5, а также FPGA XC3000, XC4000 [3]. Синтез конечных автоматов класса EПусть A - множество всех внутренних состояний конечного автомата. Определим множество AE, AE A, состояний автомата класса E, то есть множество состояний, коды которых определяются входными наборами. Пусть, как и прежде, конечный автомат задан таблицей переходов, столбцы которой имеют обозначения am, as, X(am,as) и Y(am,as). Обозначим через U(ai) множество всех условий переходов в состояние ai, ai € A: U(ai) = {X(am,ai) | am € B(ai)}, (1) где B(ai) - множество состояний, переходы из которых оканчиваются в состоянии ai. Обычно при реализации конечных автоматов на ПЛИС условие X(am,as) перехода автомата из состояния am в состояние as представляет собой некоторую элементарную конъюнкцию входных переменных. Однако в общем случае в качестве условия X(am,as) может выступать любая логическая функция, единичное значение которой вызывает переход автомата из состояния am в состояние as. Состояние ai, ai € A, является состоянием автомата класса E, то есть ai € AE, если выполняются условия: |U(ai)| = 1, (2) и U(ai) U(aj) = (3) при i j для всех aj € A. Выполнение (2) обеспечивает осуществление всех переходов в состояние ai по одному и тому же условию перехода (то есть состояние ai имеет только один код), а выполнение (3) обеспечивает то, что условия переходов в состояние ai не вызывают переходов в другие состояния автомата (то есть состояния ai и aj имеют различные коды). Условия (2) выполняются путём расщепления состояний. Пусть, например, для некоторого состояния ai, ai € A, имеет место |U(ai)| = H > 1. Можно расщепить состояние ai на состояния ai1,...,aiH таким образом, чтобы переходы в каждое состояние aih определялись только одним условием переходов, то есть выполнялось |U(aih)| = 1, h = ¯1,H. Теперь вместо состояния ai имеем H состояний, для которых выполняются условия (2). Выполнение условий (3) осуществляется путём введения дополнительных переменных обратных связей и соответствующих им элементов памяти для различия кодов внутренних состояний автомата. Условия (2) и (3) являются необходимыми, но не достаточными для построения конечного автомата класса E. Дело в том, что для детерминированности поведения конечного автомата все коды его внутренних состояний должны быть взаимно ортогональны. Однако однозначное соответствие различных входных наборов различным внутренним состояниям конечного автомата, то есть выполнение условия (3), ещё не обеспечивает ортогональность кодов. Для сравнения, при синтезе автоматов классов А и В различные выходные наборы всегда ортогональны, так как это двоичные наборы. Входные же наборы представляют собой троичные векторы, причём доопределение безразличных значений входных переменных в общем случае не допустимо. Поэтому обязательным этапом синтеза конечных автоматов класса E является обеспечение ортогональности наборов входных переменных путём их доопределения с помощью дополнительных внутренних переменных. Суть метода синтеза конечного автомата класса E заключается в расщеплении всех состояний, для которых не выполняются условия (2), и введении внутренних переменных для обеспечения ортогональности кодов внутренних состояний. Пусть P(ai) - множество переходов конечного автомата из состояния ai; C(ai) - множество переходов конечного автомата, которые оканчиваются в состоянии ai, ai € A; X(ai) - некоторое условие перехода в состояние ai, X(ai) € U(ai). Тогда алгоритм синтеза конечных автоматов класса E имеет следующий вид. Алгоритм 1
Пример 1. В качестве примера рассмотрим синтез автомата Мили класса E, таблица переходов которого представлена в табл. 1. Отметим, что поскольку |A| = 5, то при синтезе автомата Мили класса A потребуется не менее трёх элементов памяти для хранения кодов внутренних состояний. Множества U(ai), ai € A, сформированные в результате выполнения пункта 1, приведены в табл. 2. Поскольку для состояний a4 и a5 нарушены условия (2), то согласно пункту 2 выполняется их расщепление, причём состояние a4 расщепляется на два состояния, состояние a5 - на три. Построенная в пункте 3 матрица W показана в табл. 3 (первые четыре столбца). Для обеспечения ортогональности кодов внутренних состояний конечного автомата введены две дополнительные переменные e1 и e2, а также выполнено кодирование строк таблицы W (пятый и шестой столбец табл. 3). В результате определены следующие коды внутренних состояний: K(a1) = ¯g4·¯e1·¯e2; Таблица 1. Исходная таблица переходов автомата Мили
Таблица 2. Множества U(am)
Таблица 3. Матрица W
Структурная таблица переходов представлена в табл. 4, на основании которой составляются следующие логические уравнения функций переходов и выходов: d1 = g1·e1·e2·x1·x2 + g1·e1·e2·x1·x2 + g1·e1·e2; Таблица 4. Структурная таблица переходов автомата класса E
Окончательная реализация конечного автомата класса E показана на рис. 2. Рисунок 2. Реализация на ПЛИС автомата класса E Отметим, что в данном примере при синтезе автомата класса E, по сравнению с автоматом класса A, удалось на единицу сократить число макроячеек ПЛИС, необходимых для построения памяти конечного автомата. Синтез конечных автоматов класса FСущественное отличие автомата класса F от автомата класса E заключается в том, что выходные функции автомата класса F непосредственно не зависят от входных переменных. Это позволяет для построения конечных автоматов класса F использовать ПЛИС, входные буферы которых имеют только одну регистровую связь с комбинационной частью ПЛИС, например, SPLD PLS30S16; CPLD семейств MACH 1 и 2, MAX 7000, MAX 9000, FLEX [3]. Таким образом, в общем случае автоматы класса F, по сравнению с автоматами класса E, могут быть реализованы на более широком разнообразии ПЛИС. Следует однако отметить, что в некоторых случаях входные переменные могут являться аргументами дополнительных функций возбуждения элементов памяти, вводимых для различия кодов внутренних состояний автомата класса F. Для синтеза автомата класса F без всяких изменений может быть применён алгоритм 1. Программная реализация методов синтеза автоматов классов E и FРассмотренные методы синтеза конечных автоматов классов E и F реализованы программно в пакете ZUBR, при этом производится следующая последовательность действий.
Программа ZUBR позволяет пользователю задавать следующие режимы и параметры синтеза:
Дальнейшее проектирование конечного автомата может выполняться с помощью индустриального пакета. Для этого программа ZUBR позволяет представлять результаты синтеза на следующих языках проектирования: VHDL, Verilog, AHDL, Abel и других. Результаты экспериментальных исследований методов синтеза автоматов классов E и FДля проверки эффективности предложенных методов в качестве исходных данных использовались эталонные примеры конечных автоматов, разработанные в центре MCNC (Microelectronics Center of North Carolina) [4]. В качестве исследуемого метода синтеза рассматривался только метод синтеза конечных автоматов класса E, поскольку большинство эталонных примеров являются автоматами типа Мили. Метод синтеза автоматов класса E сравнивался с традиционными методами синтеза конечных автоматов пакета MAX+PLUSII для семейства FLEX 10K фирмы Altera и пакета Webpack для семейства VIRTEX2 фирмы Xilinx. Результаты сравнения приведены в табл. 5 и 6, где Name - имя эталонного примера; L, N, M и P - число входов, выходов, внутренних состояний и переходов конечного автомата, соответственно; C1 - число используемых макроячеек ПЛИС при синтезе конечного автомата с помощью метода синтеза пакета MAX+PLUSII для семейства FLEX 10K; C2 - число используемых макроячеек ПЛИС семейства FLEX 10K при синтезе конечного автомата класса F с помощью рассматриваемого метода синтеза; C1/C2 - отношение C1 к C2; D1 - временная задержка, измеряемая в наносекундах, при синтезе конечного автомата с помощью метода синтеза пакета MAX+PLUSII для семейства FLEX 10K; D2 - временная задержка, измеряемая в наносекундах, при реализации конечного автомата класса F на ПЛИС семейства FLEX 10K с помощью рассматриваемого метода синтеза; D1/D2 - отношение D1 к D2; C3, C4, D3 и D4 - аналогичные параметры, но в отношении ПЛИС семейства VIRTEX2. Таблица 5. Сравнение метода синтеза автоматов классов E и F с методом, реализованным в пакете MAX+PLUSII для семейства FLEX 10K
Анализ табл. 5 показывает, что для приведённых примеров применение метода синтеза автоматов класса E, по сравнению с традиционным методом синтеза, реализованном в пакете MAX+PLUSII, позволяет снизить число используемых макроячеек ПЛИС семейства FLEX 10K, в среднем, в 3,63 раза (а для отдельных примеров - в 8 раз), при этом быстродействие конечных автоматов повышается, в среднем, в 1,43 раза (для отдельных примеров - в 1,74 раза). Таблица 6. Сравнение метода синтеза автоматов классов E и F с методом, реализованным в пакете WebPack для семейства VIRTEX2
Анализ табл. 6 показывает, что для приведённых примеров применение метода синтеза автоматов класса E, по сравнению с традиционным методом синтеза, реализованном в пакете WebPack, позволяет снизить число используемых макроячеек ПЛИС семейства VERTEX2, в среднем, в 3,46 раза (а для отдельных примеров - в 9 раз), при этом быстродействие конечных автоматов повышается, в среднем, в 1,29 раза (для отдельных примеров - в 1,42 раза). Выводы
Литература
|