Читайте также: |
|
Вы можете импортировать и экспортировать конечные автоматы между TDF файлами и другими файлами проекта, определяя входные и выходные порты как MACHINE INPUT или MACHINE OUTPUT в разделе Subdesign. Прототип функции, который представляет файл, содержащий конечный автомат, должен указывать, какие входы и выходы принадлежат конечному автомату с помощью предварения имен сигналов ключевым словом MACHINE.
Типы портов MACHINE INPUT и MACHINE OUTPUT нельзя использовать в файле проекта верхнего уровня. Хотя высокоуровневый файл с этими портами полностью не компилируется, Вы можете использовать команду Project Save & Check (меню File) для проверки его синтаксиса и команду Create Default Include File (меню File) для создания Include файла, который представляет текущий файл.
Вы можете переименовать конечный автомат с помощью временного имени, вводя объявление псевдоимени автомата в раздел Variable. Вы можете использовать это псевдоимя в файле, где создан этот автомат или в файле, который использует порт MACHINE INPUT для импорта конечного автомата. Затем Вы можете применить это имя вместо исходного имени автомата.
Файл ss_def.tdf, приведенный ниже, определяет и экспортирует конечный автомат ss с помощью порта ss_out.
SUBDESIGN ss_def
(
clk, reset, count: INPUT;
ss_out: MACHINE OUTPUT;
)
VARIABLE
ss: MACHINE WITH STATES (s1, s2, s3, s4, s5);
BEGIN
ss_out = ss;
CASE ss IS
WHEN s1=>
IF count THEN ss = s2; ELSE ss = s1; END IF;
WHEN s2=>
IF count THEN ss = s3; ELSE ss = s2; END IF;
WHEN s3=>
IF count THEN ss = s4; ELSE ss = s3; END IF;
WHEN s4=>
IF count THEN ss = s5; ELSE ss = s4; END IF;
WHEN s5=>
IF count THEN ss = s1; ELSE ss = s5; END IF;
END CASE;
ss.(clk, reset) = (clk, reset);
END;
Файл ss_use.tdf, приведенный ниже, импортирует конечный автомат с помощью порта ss_in.
SUBDESIGN ss_use
(
ss_in: MACHINE INPUT;
out: OUTPUT;
)
BEGIN
out = (ss_in == s2) OR (ss_in == s4);
END;
Файл top1.tdf, приведенный ниже, использует ссылки для вставки экземпляров функций ss_def и ss_use. Прототипы функций для ss_def и ss_use содержат ключевые слова MACHINE, которые указывают какие входы и выходы являются автоматными.
FUNCTION ss_def (clk, reset, count)
RETURNS (MACHINE ss_out);
FUNCTION ss_use (MACHINE ss_in)
RETURNS (out);
SUBDESIGN top1
(
sys_clk, /reset, hold: INPUT;
sync_out: OUTPUT;
)
VARIABLE
ss_ref: MACHINE; %объявление псевдоимени автомата %
BEGIN
ss_ref = ss_def(sys_clk,!/reset,!hold);
sync_out = ss_use(ss_ref);
END;
Внешний конечный автомат можно также реализовать в TDF файле верхнего уровня с помощью объявления экземпляра в разделе Variable. Файл top2.tdf, приведенный ниже, имеет такую же функциональность, как и top1.tdf, но использует объявления экземпляров, вместо ссылок.
FUNCTION ss_def (clk, reset, count)
RETURNS (MACHINE ss_out);
FUNCTION ss_use (MACHINE ss_in)
RETURNS (out);
SUBDESIGN top2
(
sys_clk, /reset, hold: INPUT;
sync_out: OUTPUT;
)
VARIABLE
sm_macro: ss_def;
sync: ss_use;
BEGIN
sm_macro.(clk, reset, count) = (sys_clk,!/reset,!hold);
sync.ss_in = sm_macro.ss_out;
sync_out = sync.out;
END;
Дата добавления: 2015-08-21; просмотров: 57 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Использование параметрических функций | | | Виталий Миллер. |