Синтез моделей управляющих автоматов для socфильтров с конвейерной архитектурой

Выводы

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

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

Практическая значимость состоит в упрощении процесса измерения частоты СВЧ-колебаний за счет его полной автоматизации.

Список литературы: 1. Измерения на миллиметровых и субмиллиметровых волнах: Методы и техника/ Р.А. Валитов, С.Ф. Дюбко, Б.И. Макаренко и др.; Под ред. Р.А. Валитова, Б.И. Макаренко. М.: Радио и связь, 1984. 256 с. 2. Волков. В.М. Проектування засобiв вимiрюван-ня прохщно! потужносп: Навч. посбник. Харюв: ХТУРЕ, 2000. l6o с.

Поступила в редколлегию 29.08.2007 Захаров Игорь Петрович, д-р техн. наук, профессор кафедры метрологии и измерительной техники ХНУРЭ. Научные интересы: неопределенность измерений различных физических величин. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 702-1331.

Сергиенко Марина Петровна, канд. техн. наук, ассистент кафедры метрологии и измерительной техники ХНУРЭ. Научные интересы: динамические измерения. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 702-1331.

УДК 519.713:681.326 И.В.ХАХАНОВА

СИНТЕЗ МОДЕЛЕЙ УПРАВЛЯЮЩИХ АВТОМАТОВ ДЛЯ SOC-ФИЛЬТРОВ С КОНВЕЙЕРНОЙ АРХИТЕКТУРОЙ

Анализируются существующие модели цифровых автоматов и способы их реализации на микросхемах программируемой логики. Предлагаются две модели управляющих автоматов для устройств с конвейерной архитектурой, реализующие DSP задачи обработки изображений на основе SoC. Разрабатывается программный модуль автоматической генерации HDL-кода для упомянутых типов управляющих автоматов.

1. Введение

Сложность цифровых систем и сетей, имплементированных в кристаллы PLD, согласно закону Мура [1] удваивается каждые полтора года. Они представляют собой функционально и конструктивно законченные устройства, реализованные в чипе, и содержат микропроцессоры, блоки памяти, контроллеры, периферийные устройства, порты ввода-вывода информации. В такие архитектуры в последнее время довольно часто включаются блоки, решающие задачи цифровой обработки сигналов (DSP - digital signal processing). Для повышения быстродействия DSP-приложений применяется конвейерная архитектура, которая позволяет обрабатывать большие потоки входных данных при высокой частоте синхронизации. DSP-модуль можно представить в виде структуры, показанной на рис. 1, которая состоит из операционного автомата (ОА) в виде конвейера, управляющего автомата (УА) и блоков памяти различной размерности, используемой для хранения исходных данных, промежуточных результатов и выходной информации DSP-преобразования.

111111111111111

I I I I I I 11 I I I I I 11

Рис. 1. DSP-модуль в системе на кристалле

Цель работы - автоматическая генерация управляющих автоматов для конвейерных вычислительных архитектур SoC фильтров, реализуемых в кристаллах PLD, что дает возможность существенно (x10, x100) повысить быстродействие обработки видеоинформации по сравнению с программным способом.

Для достижения поставленной цели в работе решаются следующие задачи.

1. Анализ моделей цифровых автоматов и способов их реализации в аппаратуре на основе PLD с помощью языков VHDL и Verilog.

2. Разработка моделей управляющих автоматов для SoC фильтров, реализующих стандарт JPEG 2000 с конвейерной обработкой данных.

3. Разработка шаблонов VHDL- и Verilog-моделей в целях автоматической генерации управляющих автоматов для операционных устройств, реализующих стандарт JPEG 2000 с конвейерной обработкой данных.

4. Программная реализация процедур автоматической генерации VHDL и Verilog-моде-лей управляющего автомата для конвейерных архитектур.

2. Модели цифровых автоматов. Абстрактный автомат

Абстрактный автомат [2] является математической моделью дискретного устройства и определяется вектором S = (A,Z, W,ф,y,aj), где векторы A = (aj,...,am,...ам) ; Z = (zj,..., zm ,...zm ) и W = (wj,..., w g,..., w g) - множества состояний входных и выходных сигналов; ф : A х Z ^ A - функция переходов, реализующая отображение Dф =ç A х Z в А,

когда парам <состояние - входной сигнал> (am, zf ) функция ф ставит в соответствие состояния автомата as = ф^т, zj ), as е A ; y : A х Z ^ W - функция выходов, реализующая отображение D^ =ç A х Z в W, когда функция y парам <состояние - выходной сигнал> (am, zf ) ставит в соответствие выходные сигналы автомата ws =y(am, zj) ; aj е A - начальное состояние автомата.

Абстрактный автомат (рис.2) имеет один вход и один выход. Он функционирует в дискретном времени, принимающем целые неотрицательные значения t = 0, 1, 2, ... . В каждый момент времени t автомат находится в некотором состоянии a(t) из множества состояний автомата, причем в начальный момент времени t=0 он всегда находится в начальном состоянии a(0)=ai. В момент t, в состоянии a(t), автомат может принимать букву входного алфавита z(t) е Z . Функцией выходов w(t) = y(a(t), z(t)) формируется соответствующая буква выходного алфавита, а функцией перехода a(t + j = ф^^), z(t)) - следующее состояние. Идея абстрактного автомата состоит в реализации некоторого отображения множества слов входного алфавита Z в множество слов выходного алфавита W.

Рис 2. Абстрактный автомат

На практике наиболее распространены два класса автоматов - Мили и Мура ^.Н.Меа1у и Е^.Мооге), функционирование которых задается уравнениями:

1) а а +1) = ф(а а), 7(0); w(t) = у(а(0, 7(0)Д = 0,1,2,....

2)аа +1) = ф(a(t),7(0); w(t) = у(а(0)Д = 0,1,2,....

Автомат называется конечным, если конечны множества А, Ъ и W. Автомат называется полностью определенным, если Dф = Dу = А х Ъ . Для полностью определенного автомата области определения функций ф и у совпадают со множеством пар вида (ат, 7£). У неполностью определенного или частичного автомата функции Ф и у определены не для всех пар (ат, 7£) е А х Ъ.

3. Структурный автомат

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

^у соответственно, а память автомата реализуется с помощью регистра RG, который

хранит код внутреннего состояния в каждый момент автоматного времени. В зависимости от способов определения функций переходов и выходов в [3] представлена детальная классификация конечных автоматов (рис. 2). Классы А (рис. 3, а) и В (рис. 3, б) соответствуют общей форме автоматов Мили и Мура. Если каждый выходной набор w(t) автомата Мура совпадает с кодом его внутреннего состояния а(0, то данный автомат относится к классу С [2, 3] (рис.3, в) и его поведение описывается уравнениями: а^ +1) = ф(а(0,7(0); w(t) = а(0 . Особенностью автомата С является отсутствие комбинационной схемы ^у ,

что делает его выходы регистровыми. Если каждый выходной набор w(t) автомата Мили совпадает с кодом его следующего состояния а^+1), то рождается автомат класса D [3,5] (рис. 3, г). Его особенностью также является отсутствие комбинационной схемы ^у, однако значения входных функций формируются на входах памяти автомата RG.

Автомат D описывается уравнениями: а0: +1) = ф(а(0,7(0); w(t) = а^ +1). Различие между автоматами классов С и D: в первой модели выходной набор w(t) автомата совпадает с кодом его текущего состояния а(0, во втором - с кодом следующего состояния а^+1). Поскольку в автомате класса С выходной набор не зависит от значений входов, то он является частным случаем автомата Мура. Автомат D является частным случаем автомата Мили, поскольку выходные значения зависят от текущего состояния а(0 и входов z(t). Преимущество автоматов классов С и D перед автоматами А и В заключается в более простой схемной реализации. Однако не всякое устройство может быть построено с помощью автоматов классов С и D. Коды внутренних состояний конечного автомата могут также полностью определяться значениями входных переменных. Если каждый входной набор z(t) автомата Мили совпадает с кодом следующего состояния а^+1), то такой автомат соответствует классу Е (рис. 3, д), уравнения функционирования которого

имеют вид: а^ +1) = 7(0; w(t) = у(7(0,а(0). Если каждый входной набор z(t) автомата Мура совпадает с кодом следующего состояния а^+1), то такой автомат соответствует классу F (рис. 3, е), поведение которого может быть описано уравнениями: а^ +1) = 7(0; w(t) = у(а(0). Особенностью архитектур автоматов класса Е и F является отсутствие комбинационной

S

Ъ

схемы ^ф. В автомате класса Е комбинационная схема ^^ имеет связь со входом

автомата, а в автомате класса F ее нет. Автоматы Е и F не имеют цепей обратной связи. В автомате класса G (рис. 3, ж) каждый выходной набор w(t) автомата Мили совпадает с кодом его внутреннего состояния а(,), а каждый входной набор - с кодом состояния а(,+1). Автомату класса G соответствует обычный регистр. На практике редко удается непосредственно реализовывать автоматы классов С - F. В работе [3] выполнен анализ синтеза управляющих автоматов на микросхемах программируемой логики SPLD и CPLD.

2,

о. а ,+1 RG > а, СЧ

С1к

Ж

г,

а,

и СЬф а,+1 RG

С1к

>

и

,+1

RG

С1к >

ж,

а,+1 RG > а, СЧ

С1к

ж

а ,+1 RG а,

С1к >

ж,

2,

С1к

RG

ж,

Рис. 3. Основные структурные схемы конечных автоматов: а - Мили класса А; б - Мура класса В; в -Мура класса С; г - Мили класса D; д - Мили класса Е; е - Мура класса Б; ж - Мура класса G

4. Сложность реализации автоматов

Пусть конечный автомат характеризуется числом L входных переменных множества Х={хь ..., хь}, числом N выходных переменных множества Y = {уь ..., у^ и числом

а

б

2

в

а

а

г

2

д

2

е

а

ж

разрядов R кода внутренних состояний, которое может быть определено в диапазоне от log2M до M, где M - число внутренних состояний автомата.

В работе [3] указывается, что на сложность реализации конечного автомата на современных PLD и на выбор модели влияет: тип входа или выхода - регистровый (t-) или комбинационный (tc); число входных ячеек nB; число триггеров nFF; число скрытых макроячеек nBMC , когда буферизация входных сигналов осуществляется с помощью скрытых макроячеек; суммарное число внешних выводов nP+BMC и скрытых макроячеек. Значение этих параметров остается важным для реализации автоматов на SPLD или CPLD. Однако в связи с современным развитием электроники и появлением систем и даже сетей на кристаллах уже нет таких жестких требований к уменьшению размерности устройства, уменьшению входных и выходных переменных, которые являются внутренними линиями микросхемы. Основным параметром, определяющим сложность реализации управляющего автомата, является его размерность, которая выражается в эквивалентных вентилях. Современный рынок электронных технологий предлагает многообразие архитектур и технологий изготовления микросхем PLD и ASIC, которые своими компонентами образуют функции устройства. Каждому модулю микросхемы ставится в соответствие некоторое количество эквивалентных вентилей в качестве метрики (системы) оценивания сложности проектов, реализованных в различных chipset платформах.

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

5. Оценка временных характеристик автомата

При вычислении временных характеристик устройства используются следующие параметры:

1) Propagation Delay - задержка распространения - время между поступлением входного сигнала и появлением выходной реакции. Интервал [tplh, tphl], изображенный на рис. 4, а, есть время между событием на входе элемента и изменением его выхода (0-1) и (1-0) соответственно. Величина измеряется между 50% точками уровней входного и выходного сигналов (рис. 4, б). Фрагмент индекса lh и hl обозначает изменение выходного сигнала. Для триггеров (рис. 4, в) определены следующие временные параметры: Tcq - время, необходимое для изменения выхода Q в ответ на поступление активного фронта синхросигнала. При этом выходное значение Q зависит от входа данных D; Tsq, Trq - задержка изменения выхода Q в ответ на поступление асинхронных сигналов установки (S) и сброса (R). Задержка между синхронным входом данных D и выходом Q не определена, поскольку изменение входа D не приводит к непосредственной модификации состояния триггера;

а б в

Рис. 4. Задержки комбинационного (а, б) и последовательностного (в) элементов

2) Setup Time - время установки Tsu (рис. 5) - это интервал времени до появления фронта синхросигнала, в течение которого синхронный входной сигнал не может изменять свое значение;

3) Hold Time - время хранения Thd (см. рис. 5) - это интервал времени, следующий за фронтом синхроимпульса, в течение которого синхронный входной сигнал не может изменять значение.

C Tsu Thd

Sta ble

Рис. 5. Время установки и время хранения

Модель последовательностного устройства для вычисления временных параметров представлена на рис. 6. Здесь определены три пути следования сигналов:

1) Clock to Output - период времени между поступлением активного фронта синхросигнала и появлением соответствующей реакции на выходе:

TCO = Tc2q + Tcomb_Q2Omax ,

где Tc2q - задержка регистра RG; Tcomb Q2Omax - самый длинный путь от выхода регистра RG к любому выходу схемы Wi(t);

2) Register to Register - период времени между поступлением активного фронта синхросигнала на вход CLK регистра RG и формированием значений на входах D:

TRR = Tc2q + Tcomb_Q2Dmax + Tsu ,

где Tcomb q2d - самый длинный путь от выхода триггера Qdff регистра RG до входа триггера Ddff регистра RG;

3) Pin to Pin - максимальный логический путь от входов автомата до его внешних выходов, не содержащий последовательностных элементов:

TPP = Tcomb_I2Omax .

Максимальная рабочая частота любого последовательностного устройства определяется выражением:

1

F =

где F - максимальная рабочая частота; Pmln - период времени, соответствующий самому длинному логическому пути схемы (структурная глубина), который равен:

Pmin = max

Zt-I

at I

T

T

Api

CL

>

m

-

W

T

A D

Рис. 6. Временная модель автомата

a

6. Сеть автоматов

Если цифровое устройство включает несколько автоматов управления, то их совместная работа может быть описана с помощью сети автоматов [2], которая задается вектором: N = (2,^},Ъ- входной алфавит, ^ = (А^,Ъх,)}, 1 < 1 <п - множество компонентных автоматов (КА) сети, один из которых (полуавтомат) изображен на рис. 7:

х г, ^ г, 1 [г, ^ г, =0,

г,, г,' - внутренний и внешний входные алфавиты Si. Функция переходов Si 8, : А, х г, ^ А,;

I

W - выходной алфавит сети; {^ : (х Аj) ^ г,}, 1 <, ] < п - множество функций соединения

}

КА сети; {у, : г ^ г,}, 1 <, < п - множество входных функций; ^(х А!)хг ^ W- выходная функция сети. Множества {Sl} и{fl} являются базисом и структурой сети [2].

А, А, А, А

г" Г

~— г А,

1-—

-—>

—-

Рис. 7. Компонентный автомат сети

Сеть является общей моделью совместной работы совокупности из п автоматов, которая представлена на рис. 8.

г

Рис. 8. Сеть из п компонентных автоматов

7. Создание HDL-моделей цифровых автоматов

В зависимости от задач, которые ставит перед собой проектировщик, и необходимой степени детализации управляющий автомат может быть реализован в виде HDL-моде-лей различных стилей и уровней описания. Однако наиболее популярным является системный (поведенческий) уровень представления моделей. Кодирование состояний и создание схемы возлагается на современные программы синтеза (генерирования), которые специально разрабатываются для конкретного аппаратного базиса. Такой подход позволяет проектировать переносимые на различные электронные базисы модели, что значительно упрощает работу проектировщика и позволяет сосредоточить усилия на разработке функциональности.

VHDL-модель автоматов Мура и Мили классов А (см. рис. 3, а) и В (см. рис. 3, б) может быть описана с помощью двух процессов (листинг 1): первый Process_1 реализует комбинационные схемы автомата ^ф и ^^ , второй Process_2 - описывает регистр RG. В программной модели используется символьное описание состояний State_type, реализуе-

мое с помощью VHDL-типа перечисления. Двоичные коды состояний определяются программой синтеза, что предоставляет свободу выбора значений кодов в зависимости от конкретного аппаратного базиса. Таблица переходов (для классов автомата), соответствующая функции переходов a (t +1) = ф(а (t), z(t)), реализуется в Process_1 с помощью операторов case/if . Поскольку входами комбинационной части ^ф являются входы автомата и его текущее состояние, то эти сигналы записываются в список чувствительности процесса. Стиль 1 предлагает задавать выходные функции w(t) = y(z(t),a(t)) автомата Мили^^ с помощью операторов case/if, или применять оператор case для автомата Мура: w(t) = y(a(t))). Стиль 2 использует дополнительные условные параллельные операторы для реализации выходных функций. Process_2, описывающий регистр состояний, представляет собой программную модель реализуемого на D-триггерах регистра с асинхронным сбросом reset в начальное состояние. Для дополнительного управления автоматом в модели может быть использован сигнал разрешения синхронизации enable.

Листинг 1. Шаблон VHDL-модели автомата

library IEEE;

use IEEE.std_logic_1164.all; entity Имя_интерфейса is port ( Clk: in STD_LOGIC; Reset: in STD_LOGIC; Управляющие входы Zi: in STD_LOGIC; Выходы Wi: out STD_LOGIC); end entity Имя_интерфейса; architecture Имя_арх of Имя_интерфейса is

-- Тип, использующий символьное кодирование состояний автомата type State_type is (состояние1, состояние2, ...); signal State, NextState: State_type; begin

-- Процесс для вычисления значения следующего состояния и выходов

Process_1: process

begin

-- инициализация значений выходов

W_i <= '0'; case State is

when состояние1 =>

-- Присвоение значений выходам для автомата Мура, стиль 1 if условие then

NextState <= состояние i; -- Присвоение значений выходам для автомата Мили, стиль 1

else NextState <= состояние j; -- Присвоение значений выходам для автомата Мили, стиль 1 end if; when ...

when others => NextState <= состояние0; -- Присвоение значений выходам для состояния -- по умолчанию. Установка автомата в начальное -- состояние end case; end process;

Process_2: process (Clk, reset) begin

if Reset='1' then -- Или Reset = '0',

-- если активным является низкий уровень -- Начальное состояние

State <= состояниеО; elsif Clk'event and Clk = '1' then

State <= NextState; end if; end process;

-- Условные параллельные операторы -- назначения, стиль 2 W_i <= '1' when условие else '0';

end ex1_arch;

Аналогичным образом создается Verilog-модель автомата (листинг 2). В Verilog нет типа перечисления, существующего в VHDL, поэтому для удобства работы с состояниями используются параметры, в которых задается конкретный двоичный код для каждого состояния. Однако эти значения являются достаточно условными, потому что программы синтеза сами выбирают коды для представления состояний автомата в зависимости от выбранного chipset - класса микросхем для реализации автомата. Подобно VHDL-модели, Verilog-структура автомата состоит из двух блоков always, реализующих комбинационную и последовательностные части автомата. Первый блок always соответствует комбинационным модулям автомата и CLV (см. рис. 2), второй блок always описывает регистр RG. Так же как и в модели VHDL, таблица переходов автомата обоих классов реализуется с помощью операторов case/if в always-блоке 1. Управляющие входы автомата и текущее состояние указываются в списке чувствительности блока. Подобно модели VHDL, описание выходных функций w(t) = y(z(t), a(t)) автомата Мили реализуется с помощью операторов case/if в первом блоке always, а описание выходных функций w(t) = y(a(t)) автомата Мура (w(t) = y(a(t))) - с помощью только оператора case. Стиль 2 предлагает использовать для реализации выходных функций условный оператор assign, который при синтезе реализуется комбинационной схемой. Регистр состояния RG описывается вторым блоком always. Для установки автомата в начальное состояние используется асинхронный управляющий сигнал сброса reset. Для дополнительного управления автоматом вводится сигнал разрешения синхронизации enable.

Листинг 2. Шаблон Verilog-модели автомата

module FSM1_synplify (clk, reset, enable, Управляющие входы Z,, Выходы W ¡); input clk, reset, enable; input Управляющие входы Z,; output Выходы W,;

/* Определение метки состояний, m - разрядность регистра состояний */ parameter deflt = m'bxxx; /* Состояние по умолчанию */ parameter состояние1 = m'b ...

reg Выходы W,; reg [m:0] state, next_state;

/* Блок always для комбинационной схемы */ always @

begin NextState <= состояние i; /* Присвоение значений выходам для автомата Мили end else

begin NextState <= состояние i; /* Присвоение значений выходам для автомата Мили end

, стиль */

, стиль */

/* присвоение значений выходам для автомата Мура, стиль 1 */ Состояние2 :

default : next_state <= deflt; /* Присвоение значений выходам для состояния по умолчанию */ /* Установка автомата в начальное состояние */ endcase

end

/* Блок always для реализации регистра состояний */

always @(posedge clk or negedge rst) if (!rst) state <= idle; else state <= next_state; /* Условные параллельные операторы назначения, стиль 2 */ assign W_i = условие ? 1'b1: 1'b0;

endmodule

8. Системные иерархические модели автоматов

Современные устройства цифровой обработки сигналов представляют собой конвейер с управляющим автоматом (рис. 9), который подсчитывает число обработанных элементов и формирует управляющие сигналы в исключительных ситуациях: первый или последний элемент, первая или последняя строка изображения. Поскольку входные последовательности таких автоматов содержат большое количество элементов, то для их проектирования нельзя использовать классические методы синтеза структурных автоматов Мили или Мура, ввиду большого количества (100-1000) состояний. Использование комбинации {управляющий автомат Мили (Мура) - счетчик} не обеспечивает высокого быстродействия DSP-преобразователя. Как правило, управляющий блок для конвейерных вычислительных устройств строится на счетчиках, которые идентифицируют состояние управляющего автомата. Все выходные инициирующие сигналы генерируются на основе значений этих счетчиков.

Управляющий блок

Счетчики

Функции выходов

УВх Операционный Еп блок 1

УВх Операционный Еп блок 2

УВх Операционный Си блок 3

УВх Операционный Си блок N

Рис. 9. Конвейерная структура DSP c макроавтоматом

Специфика управляющего модуля конвейерной архитектуры DSP-преобразователя , требует, чтобы предложенная в [2] классификация моделей автоматов, изображенных на рис. 3. была дополнена еще одним классом моделей управляющего автомата, который специализируется на конвейерный тип вычислений для DSP (рис. 10). Такая модель инте-

ресна тем, что она не имеет управляющих входных сигналов, за исключением входа синхронизации (Clk) и сброса автомата в начальное состояние (reset), и по сути является моделью автомата Мура, описываемой уравнениями:

a(t +1) = <(a(t)); w(t) = .(a(t)),t = 0,1,2,....

at+1

CL < reset Clk RG >

CL

W,

Рис. 10. Модель управляющего автомата конвейерного устройства

Блоки ^ф и RG реализуют счетчик, заменяющий автомату таблицу переходов, а блок CL. - выходные функции w(t) = y(a(t)).

Размерность схемы автомата обусловлена длиной регистра RG, а следовательно, рабочим диапазоном счетчика, который, в свою очередь, зависит от структуры входной информации. Таким образом, размерность управляющего блока зависит от двух параметров: R-разрядности счетчика и NW - количества формируемых выходных функций. Быстродействие такого устройства, как следует из формул (1) и (2), определяется самым длинным путем схемы - структурной глубиной. В данной модели: 1) логический путь "Pin to Pin" начинается от асинхронного сброса reset и заканчивается выходами W:

Tpp = T

RG reset + TCL

. max

; 2) путь "Register to Register" определяет задержку логического

+ Tsu ; 3) путь "Clock to Output":

пути между регистрами счетчика: Trr = Trg + Tc^max

TCO = TRG + TCL.max .

Минимальный рабочий период автомата определяется следующим выражением:

Pmin = max(TCO ,TRR ,TPP) = = max[(TRG + TCL ...max ),(TRG + TCL ,„max + Tsu ),

(TRG _ reset + TiCL. )].

Как видно из формулы, минимальный рабочий период, а значит и максимальная рабочая

частота, зависят от аппаратной сложности схем ^ф и CL. . Часто для повышения

скорости работы устройства выходные функции W дополняются выходным регистром RGW (рис. 11). Это позволяет сделать работу устройства более устойчивой к состязаниям и, благодаря делению логического пути, повысить максимальную рабочую частоту всего устройства, включая и управляющий автомат. При этом изменяются временные параметры системы. Такая модель не будет иметь путей "Clock to Output" и "Pin to Pin". Минимальный рабочий период устройства зависит только от самого длинного пути "Register to Register" и описывается формулой:

Pmin = max(TRR ) = max[(TRG + TCL ...max + Tsu), TRG + TCL<max + Tsu )] = = TRG + Tsu + max( TCL .max, TCL<max ).

a t+1

CL< reset Clk RG >

CL Wt RG w > w t

reset Clk

Рис. 11. Модель автомата с регистровыми выходами

a

a

При обработке двумерных данных, изображений, управляющий блок должен иметь два счетчика: 1) Сч 1 - для подсчета столбцов матрицы; 2) Сч 2 - для подсчета столбцов матрицы, если данные обрабатываются по строкам. Иначе - назначение счетчиков изменяется. Модель такого управляющего блока может быть представлена в виде сети автоматов (рис. 12).

г---

• W

Рис. 12. Сеть n-компонентных автоматов

Сеть, содержащая два автомата, задается вектором:

N = (Z, {Si ,S2 }, W,{fi, f2 },{*-!, ^ 2 }, Здесь параметры сети представлены в виде: 1) Входной алфавит Z={reset}. 2) Множество компонентных автоматов сети Si = {Si,S2} :KA1:Si = (Ai, Zi, ф1),КА1: S2 = (A2, Z2, Ф2); 3) Функции переходов для данных автоматов: Si Ф1 : Ai х Zi ^ Ai Si: Ai х {reset} ^ Ai; S2 Ф2 : A2 х Z2 ^ A2 82 : A2 x{rst,en} ^ A2 . 4) W - выходной алфавит сети. 5) Множество функций соединения компонентных автоматов сети представлено одной функцией: fi = 0 ,

f2 : Ai ^ Z2 . 6) Множество входных функций : ц : Zi = z" = {reset}; многокомпонентных

автоматов сети \2 : Z2 = Z2 хz2 = {rst,en}x{reset}; 6) Выходная функция сети;

у :(A1 х A2) х Z ^ W .

Структурная модель сети, содержащей два автомата, представлена на рис. 13.

t

Рис. 13. Структурная модель сети автоматов

Блоки и RGl реализуют первый счетчик Сч1, блоки СЬф2 и RG2 - второй счетчик Сч2. Блок f2 является комбинационным и реализует функцию соединения двух компонентных автоматов Сч1 и Сч2. Совокупный автомат содержит три вида выходных функций: у - зависит от состояния автомата Сч1; у 2 - от состояния автомата Сч2; У12 - от состояний автоматов Сч1 и Сч2:

wi(t) = yi(ai(t)) ; W2 (t) = у 2 (a2(t)) ; wi2(t) = yi2(a1(t),a2(t)).

Функциям y i, у2 и yi2 соответствуют комбинационные блоки CLyi , CLy2 и CLyi2 .

Также как и для автомата с одним счетчиком, минимальный рабочий период будет равен максимальному пути:

Pmin = max(TCO, TRR ,TPP) .

1) Комбинационный (логический) путь "Pin to Pin" проходит от асинхронного сброса reset до выходов W:

TPP = max[(TRGi_ reset + TCLyimax X (TRG2 _ reset + TCLyi max), (TRG _ resetmax + ^CLy^max

2) Путь "Register to Register" определяет задержку комбинационного пути между регистрами счетчика:

Trr = max[(TRGi + TCLyimax + Tsu), (TRG 2 + TCL92max + ^

(TRGi + Tf2max + Tsu)]-

3) Путь "Clock to Output" определяется компонентами:

TCO = max[(TRGi + TcLyi max ),(TRG 2 + TCLy 2 max

(TRG

max + TCLyi2max)]-

При реализации устройства на микросхемах программируемой логики PLD или ASIC все триггеры однотипны и поэтому имеют одинаковое время установки Tsu и задержки переключения TRG. Тогда представленные выше формулы трансформируются к виду:

TPP = max[(TRGi_ reset + TCLyimax X (TRG 2 _ reset + TCLyi max), (TRG _ resetmax + TCLyi2max)] =

= TRG_reset + max(TCLyimax,TCLy2max ,TCLyi2max >

TCO = TRG + max(TCLyimax ,TCLy2max ,TCLyi2 max) .

Если триггеры регистров RG1 и RG2 переключаются по одному фронту, то имеет место формула:

Trr = Trg + Tsu + max

kr ш ьи v '-^qrimax >-lj92max izmaxy •

Если триггеры регистров RG1 и RG2 переключаются по разным фронтам, тогда действительно выражение:

TRR = Tsu + max[(TRG + TCLyimax X

(TRG + TCLy2max ),2(TRG + Tf2max

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

Модель 1: 1) Cntmin и Cntmax минимальная и максимальная границы счета; 2) CntS0 -начальное состояние; 3) NF - количество выходных функций; 4) тип выходов: комбинацион-

ный или регистровый; 5)множество выходных функций ^ = {V1, V2,..., VNp } . Модель 2: 1) Cnt1min и Cnt1max - минимальная и максимальная границы счета счетчика 1,

Cnt2min и Cnt2max - минимальная и максимальная границы счета счетчика 2; 2) Cnt1S0 и Cnt2S0 - начальное состояние счетчиков 1 и 2; 3) Np - количество выходных функций; 4) тип выходов: комбинационный или регистровый; 5) множество выходных функций

^ = {V1, V 2,.., V Np }; 6) f2 - функции соединения компонентных автоматов сети.

На рис. 14 схематично представлен способ создания HDL-кода для модели 1. Блоки ^ф и RG, соответствующие счетчику, могут быть реализованы одним процессом для

VHDL-модели или одним блоком always для Verilog. Для реализации выходных функций используются параллельные условные операторы (VHDL) или условный оператор assign (Verilog). Шаблоны VHDL- и Verilog-кода для модели 1 представлены листингами 3 и 4 соответственно.

Рис. 14. Модель управляющего автомата с регистровыми выходами

Листинг 3. VHDL-шаблон для реализации модели 1

library IEEE;

use IEEE.std_logic_1164.all;

-- Пакеты, поддерживающие арифметические операции над данными std_logic_vector use ieee.std_logic_unsigned.all; entity Имя_интерфейса is port (En, Clk, reset: in STD_LOGIC;

Выходы Wi или W_i_reg: out STD_LOGIC); end entity Имя_интерфейса; architecture Имя_арх of Имя_интерфейса is

-- Разрядность счетчика constant m: natural:= ...;

-- Нижняя граница счетчика constant Cnt_min: std_logic_vector(m-1 downto 0):=...;

-- Верхняя граница счета constant Cnt_max: std_logic_vector(m-1 downto 0):=...;

-- Состояние сбросв constant Cnt_S0: std_logic_vector(m-1 downto 0):=...; signal countl: std_logic_vector(m-1 downto 0); --Определение сигналов Wi, -- Если выходы устройства регистровые signal Wi : std_logic; begin

-- Модель счетчика Process_1 : process(reset, En, clk) begin

if reset='1' then -- Сброс счетчика в начальное состояние

countl <= Cnt_S0; -- Описание проверки фронта синхросигнала elsif clk='1'and clk'event then -- Или задний фронт elsif clk='0'and clk'event then if en='1' then -- Проверка верхней границы счета

if countl = Cnt_max then -- Присвоение нижней границы счета

count1 <= Cnt_min; else

count1 <= count1 + '1'; end if; end if; end if; end process; -- Реализация выходных функций с помощью -- условных параллельных операторов W_i <= '1' when условие else '0';

-- Процесс для реализации регистровых выходов Process_2: process(reset, clk) begin

if reset='1' then -- Сброс в нулевое состояние W_i_reg <= (others =>'0');

-- Описание проверки фронта синхросигнала

elsif clk='1'and clk'event then -- Или задний фронт elsif clk='0'and clk'event then W_i_reg <= W_i;

end if; end process; end Имя_арх;

Листинг 4. Verilog-шаблон для реализации модели 1

module Имя_интерфейса (En, Clk, reset, Выходы Wi или W_i_reg) input En, Clk, reset; output Выходы Wi; // Если выходы комбинационные // или, если выходы регистровые

// output Выходы W_i_reg; reg Выходы W_i_reg; wire Выходы Wi;

// Параметры конфигурации устройства parameter m = ...; // разрядность счетчика parameter Cnt_min =...; // нижняя граница parameter Cnt_max =...; // верхняя граница parameter Cnt_S0 =...; // состояние сбросов reg[m-1:0] count1;

begin

// Являющийся моделью счетчика блок always 1 always @

// Сброс счетчика в начальное состояние

count1 <= Cnt_S0; else if

// Проверка верхней границы счета

if (count1 == Cnt_max) // Присвоение нижней границы счета count1 <= Cnt_min; else

count1 <= count1 + 1'b1; // Реализация выходных функций с помощью условных операторов assign W_i = условие ? 1'b1: 1'b0;

// Блок always 2, для регистровых выходов always @(posedge CLk or negedge Reset) begin

if (Reset) W_i_reg <= 'b0;

else W_i_reg <= W_i;

end endmodule

Принцип построения HDL-кода для иерархической модели 2 представлен на рис. 15.

Рис. 15. Структурная модель сети автоматов

Каждому счетчику, реализуемому блоками и RG, ставится в соответствие процесс

для VHDL-модели или блок always для Verilog. Таким образом, счетчик 1 кодируется оператотом Process 1 или Always 1, счетчик 2 - оператором Process 2 или Always 2. Для реализации выходных функций используются параллельные условные операторы (VHDL) или операторы assign (Verilog). Условные операторы также применяются для реализации функций соединения компонентных автоматов сети f2. Шаблоны VHDL- и Verilog-кода для модели 1 представлены листингами 5 и 6 соответственно. Условия в операторах для функций W1t зависят только от состояния счетчика 1, а для функций W2t - от состояния счетчика 2, условия функций W2t - от значений обоих счетчиков. Для реализации регистровых выходных функций HDL-модель может быть дополнена соответственным оператором Process или Always, как это сделано в модели 1.

Листинг 5. VHDL-шаблон для реализации модели 2

library IEEE;

use IEEE.std_logic_1164.all; -- Пакеты, поддерживающие арифметические -- операции над данными std_logic_vector use ieee.std_logic_unsigned.all; entity Имя_интерфейса is port (En, Clk, reset: in STD_LOGIC;

Выходы W1i, W2i, W12i: out STD_LOGIC); end entity Имя_интерфейса; architecture Имя_арх of Имя_интерфейса is

-- Разрядность счетчика 1 constant ml: natural:= ...;

-- Разрядность счетчика 2 constant m2: natural:= ...;

-- Нижняя граница счетчика constant Cnt1_min: std_logic_vector(m-1 downto 0):=...;

constant Cnt2_min: std_logic_vector(m-1 downto 0):=...; -- Верхняя граница счета

constant Cnt1_max: std_logic_vector(m-1 downto 0):=...; constant Cnt2_max: std_logic_vector(m-1 downto 0):=...;

-- Состояние сброса constant Cnt1_S0: std_logic_vector(m-1 downto 0):=...;

constant Cnt2_S0: std_logic_vector(m-1 downto 0):=...; signal countl:

std_logic_vector(m1-1 downto 0);

signal count2: std_logic_vector(m2-1 downto 0); -- Сигналы, формируемые функцией f2 signal en2, rst2: std_logic; begin

-- Процесс счетчика 1 Process_1 : process(reset, En, clk) begin

if reset='1' then

-- Сброс счетчика в начальное состояние count1 <= Cnt1_S0; -- Описание проверки фронта синхросигнала elsif clk='1'and clk'event then -- или задний фронт elsif clk='0'and clk'event then if en='1' then -- Проверка верхней границы счета

if count1 = Cnt1_max then -- Присвоение нижней границы счета count1 <= Cnt1_min; else

count1 <= count1 + '1'; end if; end if; end if; end process; -- Процесс счетчика 2

Process_2 : process(reset, En, clk, rst2, en2) begin

if (reset='1')or(rst2='1') then -- Сброс счетчика в начальное состояние count2 <= Cnt_S0; -- Описание проверки фронта синхросигнала elsif clk='1'and clk'event then -- Или задний фронт elsif clk='0'and clk'event then if (en='1') and (en2='1') then -- Проверка верхней границы счета

if count2 = Cnt2_max then -- Присвоение нижней границы счета count2 <= Cnt2_min; else

count2 <= count2 + '1'; end if; end if; end if; end process;

-- Функции соединения компонентных автоматов сети f2 rst2 <= '1' when условие else '0';

en2 <= '1' when условие else '0';

-- Реализация выходных функций условными -- параллельными операторами W1_i <= '1' when условие else '0';

W2_i <= '1' when условие else '0';

W12_i <= '1' when условие else '0';

end Имя_арх;

Листинг 6. Verilog-шаблон для реализации модели 2

module Имя_интерфейса (En, Clk, reset, Выходы W1i, W2i, W12i) input En, Clk, reset; output Выходы W1i, W2i, W12i; // Параметры конфигурации счетчика 1 parameter Cnt1_min =...; // нижняя граница parameter Cnt1_max =...; // верхняя граница parameter Cnt1_S0 =...; // состояние сбросв parameter m1 = ...; // разрядность счетчика reg[m1-1:0] count1;

// Параметры конфигурации счетчика 1 parameter Cnt2_min =...; // нижняя граница parameter Cnt2_max =...; // верхняя граница parameter Cnt2_S0 =...; // состояние сбросов parameter m2 = ...; // разрядность счетчика reg[m2-1:0] count2;

// Сигналы, формируемые функцией f2 wire en2, rst2; // Счетчик 1, блок always 1

always @

// Сброс счетчика в начальное состояние count1 <= Cnt1_S0; else if

// Проверка верхней границы счета if (count1 == Cnt1_max) count1 <= Cnt1_min; else

// Присвоение нижней границы счета count1 <= count1 + 1'b1; // Счетчик 2, блок always 2 always @

// Сброс счетчика в начальное состояние count2 <= Cnt2_S0; else if

// Проверка верхней границы счета if (count1 == Cnt2_max) count1 <= Cnt2_min; else

// Присвоение нижней границы счета count2 <= count2 + 1'b1; // Функции соединения компонентных автоматов сети f2 assign rst2 = условие ? 1'b1: 1'b0; assign en2 = условие ? 1'b1: 1'b0; // Реализация выхондых функций с помощью // условных операторов

assign W1_i = условие ? 1'b1: 1'b0;

assign W2_i = условие ? 1'b1: 1'b0;

assign W12_i = условие ? 1'b1: 1'b0;

endmodule

9. Синтез HDL-модели автомата для DSP-фильтра

Управляющий блок фильтра для обработки изображений размерностью 256 х 256 пикселов имеет следующие параметры: 1) минимальная и максимальная границы счета счетчика 1: Cnt1min=1 и Cnt1max =256; Минимальная и максимальная границы счета счетчика 2: Cnt2min=1 и Cnt2max =258. 2) Начальное состояние счетчиков 1 и 2: Cnt1S0 = 0 и Cnt2S0 = 0. 3) Количество выходных функций NF =3. 4) Тип выходов - комбинационный. 5) Множество выходных функций:

Т = {у i, у 2, У 3 } = {First, Last, Enable}; First = {0 cou- = 2; Last = {l c0unt2 =eCfmn -1;

fl (count2 > 1) & (count2 <= Cnt2 max -1); Enable = j 1 (count2 = Cnt2max) и (count1 = 1); |o else.

Wli =0 , W2i = {First,Last} , W12i = {Enable}. Здесь counti - счетчик 1, count2 - счетчик 2. 6) Функции соединения компонентных автоматов сети f2: f2 = {en2} .

VHDL и Verilog-модели управляющего блока представлены листингами 7 и 8.

Листинг 7. VHDL-модель управляющего блока

library IEEE;

use IEEE.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity Control1 is

port (En, Clk, reset: in STD_LOGIC;

First, Last, Enable: out STD_LOGIC); end entity Control1; architecture Control1 of Control1 is -- разрядность счетчика 1 constant m1: natural:= 9; -- разрядность счетчика 2 constant m2: natural:= 9;

-- нижняя граница счетчика constant Cnt1_min: std_logic_vector(m1-1 downto 0):=conv_std_logic_vector(1, m1); constant Cnt2_min: std_logic_vector(m2-1 downto 0):=conv_std_logic_vector(1, m2);

-- верхняя граница счета constant Cnt1_max: std_logic_vector(m1-1 downto 0):=conv_std_logic_vector(256, m1); constant Cnt2_max: std_logic_vector(m2-1 downto 0):=conv_std_logic_vector(258, m2); -- состояние сбросв

constant Cnt1_S0: std_logic_vector(m1-1 downto 0):=conv_std_logic_vector(0, m1); constant Cnt2_S0: std_logic_vector(m2-1 downto 0):=conv_std_logic_vector(0, m2); signal count1: std_logic_vector(m1-1 downto 0); signal count2: std_logic_vector(m2-1 downto 0);

-- сигналы, формируемые функцией f2 signal en2: std_logic; begin

-- Процесс счетчика 1 Process_1 : process(reset, En, clk) begin

if reset='1' then -- сброс счетчика в начальное состояние

count1 <= Cnt1_S0; -- описание проверки фронта синхросигнала elsif clk='1'and clk'event then -- или задний фронт elsif clk='0'and clk'event then if en='1' then

-- проверка верхней границы счета if countl = Cnt1_max then

count1 <= Cnt1_min; else

-- присвоение нижней границы

счета

countl <= countl + '1'; end if; end if; end if; end process; -- Процесс счетчика 2 Process_2 : process(reset, En, clk, en2) begin

if (reset='1') then -- сброс счетчика в начальное состояние

count2 <= Cnt2_S0; -- описание проверки фронта синхросигнала

elsif clk='1'and clk'event then -- или задний фронт elsif clk='0'and clk'event then

if (en='1') and (en2='1') then -- проверка верхней границы

счета

if count2 = Cnt2_max then -- присвоение нижней границы счета

count2 <= Cnt2_min; else

count2 <= count2 + '1'; end if; end if; end if; end process; -- Функции соединения компонентных автоматов сети f2

en2 <= '1' when countl = Cnt1_max else

'0';

-- реализация выходных функций условными

-- параллельными операторами First <= '1' when count2=2 else '0'; Last <= '1' when count2=Cnt2_min+'1' else '0';

Enable <= '1' when ((count2>1) and (count2<=Cnt2_max-1) ) or ((count2 = Cnt1_max) and (count1=1)) else '0'; end Control1;

Листинг 8. Verilog-модель управляющего

блока

module Control1 (En, Clk, reset, First, Last, Enable);

input En, Clk, reset; output First, Last, Enable; // параметры конфигурации счетчика 1 parameter Cnt1_min = 'd1; // нижняя

граница

parameter Cnt1_max = 'd256;// верхняя граница parameter Cnt1_S0 = 'd0; // состояние сбросв parameter m1 = 8; // разрядность счетчика reg[8:0] count1;

// параметры конфигурации счетчика 1 parameter Cnt2_min = 'd1; // нижняя граница parameter Cnt2_max = 'd258;// верхняя граница parameter Cnt2_S0 = 'd0; // состояние сбросов parameter m2 = 8; // разрядность счетчика reg[8:0] count2;

// сигналы, формируемые функцией f2 wire en2;

//wire en_in;//, rst_in; // Счетчик 1, блок always 1 always @(posedge reset or posedge Clk) if (reset) // сброс счетчика в начальное состояние count1 <= Cnt1_S0;

else begin if

// проверка верхней границы счета begin

if (count1 == Cnt1_max) count1 <= Cnt1_min; else

// присвоение нижней границы счета count1 <= count1 + 1'b1;

end end

// Счетчик 2, блок always 2 always @

// сброс счетчика в начальное состояние count2 <= Cnt2_S0; else begin if

// проверка верхней границы счета begin

if (count2 == Cnt2_max) count2 <= Cnt2_min; else

// присвоение нижней границы счета count2 <= count2 + 1'b1;

end end

// Функции соединения компонентных автоматов сети f2

assign en2= (En &&(count1 == Cnt1_max))?1'b1: 1'b0;

// реализация выходных функций с помощью

// условных операторов

assign First = (count2 == 2) ? 1'b1: 1'b0;

assign Last = (count2 == Cnt2_min+1) ? 1'b1: 1'b0;

assign Enable = ((count2>1)&&(count2<=Cnt2_max-1))|| ((count2==Cnt2_max)&&(count1==1))? 1'b1: 1'b0; endmodule

Структурная схема управляющего автомата для конвейерного DSP-преобразователя, сгенерированная программой синтеза Synplify, представлена на рис. 16. При синтезе использовались микросхемы программируемой логики FPGA фирмы Xilinx [12].

10. Генератор HDL-кода моделей автоматов

На основе предложенной системной иерархической модели управляющего автомата разработана программа автоматической генерации VHDL- и Verilog-кодов блока управления для вычислителя с конвейерной архитектурой. При создании программного продукта использовался скриптовый язык пакета Matlab [13].

Интерфейс программы генерирования управляющих автоматов для конвейрных архитектур представлен на рис. 17. Выбор языка для генерирования модели и ее тип определяются входными параметрами, реализованными с помощью переключателей: HDL selection - выбор языка для генерирования кода; Number of Counters - модель с одним или двумя счетчиками. Для каждого счетчика задается нижняя Min и верхняя Max границы счета, значение параметра инициализации Init. Для модели с одним счетчиком параметры панели Counter 2 игнорируются. Панель F2 function предназначена для создания функций соединения компонентных автоматов. Программа позволяет задавать две функции En2 и Rst2. Первая подключается к входу разрешения синхронизации, а вторая - к сбросу устройства в начальное состояние. Для того чтобы задать выходные функции, необходимо указать их количество. Затем для каждой функции следует ввести ее имя (Name) и условие формирования единичного значения (Conditions of 1 value). Условия должны быть записаны с использование синтаксиса HDL-языка, который выбран для генерирования модели. Текущее значение счетчика 1 обозначается переменной u1, счетчика 2 - u2.

Для разработки приложения использовался инструмент GUIDE( MATLAB Graphical User Interface development environment) программного пакета MATLAB. Полный код программы генерирования содержит 1110 строк M-скрипта. Генератор работает в программной среде MATLAB, операционная система Windows.

11. Выводы

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

моделей управления для DSP-преобразователей._

Со nt го l_gene ratestudy

BE

г.

HDL selection

© VHDL

Q Verilog

Number of Counters-01 counter О 2 couters

Output functions number

i—/Counter 1 Min

Max Init

- Counter 2 Min

Max

Init

F2 function

En2

Rst2

Output fumctions -Names

Conditions of 1 value

f1

f2

f3

(4

f5

16

f7 U1, u2

] [

Generate

Рис. 17. Интерфейс программы генерирования HDL-модели

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

Предложена технология системного проектирования, которая позволяет автоматизир-вать процесс синтеза цифровых устройств на кристаллах с конвейерной архитектурой. Создан программный продукт, который выполняет автоматический синтез VHDL и Verilog-кода предложенных моделей управляющих автоматов. Генераторы моделей автоматов упрощают процесс проектирования DSP-преобразователей, позволяют эффективно создавать и верифицировать системные HDL-модели управляющего блока.

Список литературы: 1. PhilipE. Ross. 5 Commandments. IEEE Spectrum. December. 2003. P. 30-35. 2. Баранов С.И. Синтез микропрограммных автоматов. Л.: Энергия, 1979. 232 с. 3. СоловьевВ.В. Проектирование цифровых автоматов на основе программируемой логики интегральных схем. М.: Горячая линия. Телеком. 2001. 636 с. 4. Solowjew W., ChyzyM. Synteza automatow skonczonych na ukladah PAL . Electronika. XXXVII. 1996. No 10. Р.23 - 27. 5. Solovjev V., Mazalewski J., Chyzy M. Models of robotics control systems on programmable logic devices. Proc. of the 4th Int. Symposium on Methods and Models an Automation and Robotics (MMAR'97). August 1997. Miedzyzdroje. Poland. Vol. 3. P. 1019 - 1024. 6. КеэвалликА.Э. Теорема декомпозиции конечных автоматов. Автоматика и вычислит. техника. 1974. N° 1. C. 77-81. 7. Hartmanis J., Sterns R. Algebraic Structure Theory of Sequential Machines. New York, Prentice-Hall. 1966. 464 p. 8. Хаханов В.И., Хаханова И.В. VHDL + Verilog = Синтез за минуты. Харьков: СМИТ. 2007. 264 c. 9. Семенец В.В., ХахановаИ.В., Хаханов В.И. Проектирование цифровых систем с использованием языка VHDL. Харьков: ХНУРЭ. 2003. 492 с. 10. Charles H. Roth, Jr. Digital Systems Design UsingVHDL. Boston. PWS Publishing Company. 1998. 470 p.11. Ashenden, Peter J. The designer's guide to VHDL. San Francisco. Calis. California. Morgan Kaufmann Publishers, Inc. 1996. 688 p. 12. Xilinx.com. 13. www.mathworks.com

Поступила в редколлегию 23.08.2007

Хаханова Ирина Витальевна, докторантка кафедры АПВТ ХНУРЭ. Научные интересы:

Проектирование цифровых систем на кристаллах. Увлечения: английский язык, музыка.

Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 70-21-326. E-mail: hahanova@mail.ru