Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Altera / MAX+PLUS II - AHDL.doc
Скачиваний:
139
Добавлен:
10.12.2013
Размер:
7.02 Mб
Скачать

2.5.4 Экспорт и импорт графов переходов автоматов

Вы можете производить импорт и экспорт графов переходов автомата (т.е. самих автоматов) путем указания специальных входных и выходных портов:MACHINE INPUT иMACHINE OUTPUT в разделе описания входов и выходов устройства. Прототип функции, являющийся «отображением» устройства должен указывать какие входы имеют типMACHINE INPUT илиMACHINE OUTPUT с помощью ключевого словаMACHINEперед именем входа/выхода.

Входы/выходы типаMACHINE INPUT илиMACHINE OUTPUTне могут использоваться в файле верхнего уровня проекта.

Вы можете переименовать автомат на промежуточное имя путем введения псевдонима в разделе объявления переменных. Затем вы можете использовать это имя вместо оригинального имени автомата.

В

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;

примереss_def.tdf описывается автоматss c выходомss_out, имеющим типMACHINE OUTPUT.

Впримереss_use.tdf показан прием импортирования автомата через входMACHINE INPUT.

В примере top1.tdf используются уже описанные функцииss_def иss_use. Обратите внимание на то, что прототипы функцийss_def иss_useсодержат ключевое словоMACHINE, предназначенного для идентификации порта типаMACHINE INPUT илиMACHINE OUTPUT.

На рисунке 2.17показана схема устройстваtop1.tdf (из примера 2.36)

Другой способ соединения файлов ss_def иss_use(эквивалентный способу из примераtop1.tdf) показан в примереtop2.tdf.

Для получения более подробной информации см. разделы:

  • Графы переходов

  • Использование параметризированных функций

  • Использование не параметризированных функций

  • Создание и использование макрофункций

2.6 ИспользованиеLcell иSofTпримитивов

Вы можете ограничить степень логического синтеза путем замены переменных типа NODEна примитивыLCELLиSOFT. Переменные типаNODEи примитивыLCELLпозволяют полностью контролировать процесс логического синтеза, примитивыSOFTдают меньший контроль над этим процессом.

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

SOFTбуфера позволяют получить больший контроль на использованием ресурсов. На этапе логического синтеза компилятор решает, какиеSOFTбуфера заменитьLCELL примитивами. При использованииSOFTпримитивов упрощается процесс помещения устройства в конкретную микросхему, но при этом несколько уменьшается скорость работы устройства.

LCELL примитивы позволяют получить наибольший контроль за процессом логического синтеза.

Впримере 2.38 приведены два видаTDF, в одном из них показан способ примененияLCELLпримитивов, а в другом переменных типаNODE.В примереnodevar объявлена переменная типаNODEи ей присвоено значение логического выраженияd0 $ d1 $ . . . $ d8. В примереnodevar объявлена переменнаяodd_parity типаNODEи ей присвоено значение логического выраженияd0 $ d1 $ . . . $ d8. В примереsoftbufкомпилятор на этапе логического синтеза некоторыеSOFTпримитивы заменитLCELL примитивами.

2.7 RAM & ROM

MAX+PLUS II (и AHDL) имеет несколько функций в библиотеке LPM, позволяющих реализовывать модули RAM и ROM.

Корпорация Altera не рекомендует создавать свои функции, реализующие модули RAM и ROM, а предлагает пользоваться стандартными.

Следующие мегафункции могут быть использованы для реализации устройств памяти:

Название функции

Описание

lpm_ram_dq

Синхронная или асинхронная память с раздельными портами ввода и вывода

lpm_ram_io

Синхронная или асинхронная память одним портом ввода/вывода

lpm_rom

Синхронный или асинхронный модуль ROM

csdpram

Cycle-shared RAM

csfifo

Cycle-shared FIFOбуфер

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

Соседние файлы в папке Altera