Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Структура программы на языке AHDL




Язык AlteraHDL

По технологии изготовления различают пять видов.

Наличие внутренних ОЗУ.

Выделяют СБИС ПЛ имеющие внутренние ОЗУ и не имеющие внутренних ОЗУ. Внутреннее ОЗУ может реконфигурироваться и иметь разную структуру при сохранении того же объема.

 

1. FUSE или ANTIFUSE

2. EPROM – программируемые элементы допускают УФ стирание.

3. EEPROM – программируемые элементы допускают электрическое стирание.

4. FLASH – более надежная по сравнению с EEPROM.

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

 

 

(Бродин Б.В., Калинин А.В. Системы на микроконтроллерах и СБИС программируемой логики. М.: Изд. ЭКОМ, 2002г., 2000с.) Формальное описание языка с использованием форм Бэку-са-Наура приведено в фирменной документации и доступно при помощи команды Неlр системы МАХ+plus II или QUARTUS II.

 

 

Программа на языке AHDL имеет определенную структуру. Раздел программы должны следовать в следующем порядке:

Title Statement

Include Statement

Constant Statement

Define Statement

Parameters Statement

Function Prototype Statement

Options Statement

Assert Statement

 

Subdesigh Section

Variable Section

- Instance Declaration

- Node Declaration

- Register Declaration

- State Machine Declaration

- Machine Alias Declaration

- If Generate Statement

 

Logic Section

- Defaults Statement

- Assert Statement

- Boolean Equations

- Boolean Control Equations

- Case Statement

- For Generata Statement

- If Then Statement

- If Generata Statement

- In-Line Logic Function Reference

- Truth Table Statement

 

Из всех перечисленных разделов являются обязательными только Subdesign Section и Logic Section.

 

Title Statement. Раздел заголовка позволяет дать название модулю. С этим именем будет сформирован файла отчета (Report File). В файле этот раздел может присутствовать только один раз.

Правила синтаксиса:

• Раздел начинается с ключевого слова TITLE, за которым следует тек­стовая строка, заключенная в двойные кавычки ("). В конце заголовка (;).

• Текстовая строка может содержать до 255 символов включительно. Она не должна содержать символов конца строки или конца страницы.

• Для включения в текстовую строку двойных кавычек следует исполь­зовать дополнительную пару двойных кавычек: " " " FLЕХ 8000 " " Programmable Timer".

 

Include Statement. Этот оператор позволяет включить содержимое указанного файла в текст данной программы. В файле этот оператор мо­жет использоваться неограниченное число раз.

Правила синтаксиса:

• Оператор начинается с ключевого слова INCLUDE, за которым в двойных кавычках (") указывается имя файла включения (Include file).Далее ставится символ (;).

• Если явно не задано расширение файла включения, то компилятор ищет файл, имеющий заданное имя и расширение INC.

• Имя файла, указанное в операторе включения, не должно содержать пути к файлу.

 

Constant Statement. Оператор определения константы позволяет при­своить имени константы значение числа, либо результата вычисления арифметического выражения. В файле этот оператор может использовать­ся неограниченное число раз.

Правила синтаксиса:

• Оператор начинается с ключевого слова CONSTANТ, за которым сле­дует символическое имя, символ (=), число или арифметическое вы­ражение. Далее ставится точка с запятой (;).

• Имя константы должно быть уникальным и не должно содержать пробелов.

• Ссылка на константу допускается только после ее определения.

• При определении константы могут использоваться заданные ранее константы.

• Циклическое определение констант недопустимо.

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

 

Define Statement. Оператор обозначения позволяет присвоить арифметическим выражениям символические имена. В файле этот опера­тор может использоваться неограниченное число раз.

Правила синтаксиса:

• Оператор начинается с ключевого слова DEFINE, за которым следует символическое имя арифметического выражения со списком аргумен­тов, заключенным в скобки. За списком аргументов ставится знак (=), далее следует арифметическое выражение и символ (;).

• Список аргументов может содержать один или более аргументов. Ар­гументы в списке отделяются друг от друга запятой.

• Символическое имя должно быть уникальным и не должно содержать пробелов.

• Ссылка на символическое имя арифметического выражения допустима только после его описания в разделе DEFINE.

• Обозначаемое арифметическое выражение может содержать символи­ческое имя обозначенного ранее арифметического выражения.

 

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

1. PARAMETERS

<RLENAME="myfite.mif",

WIDTH,

AD_WIDTH,

NUMWORDS=2"ACLWIDTH);

2. PARAMETERS (DEVICE_FAMILY);

DEVICE_FAMILY предопределенный параметр языка AHDL. Его значение может быть задано в окне Device (меню Assign).

Правила синтаксиса:

• Оператор начинается с ключевого слова PARAMETERS, за которым следует заключенный в скобки список параметров. После закрываю­щей скобки ставится символ <;).

• Список параметров может содержать один или несколько параметров.

• Параметры в списке отделяются друг от друга запятой (,).

• Значение параметра по умолчанию (defaults) указывается после сим­вола (=). Задание этого значения необязательно.

• Параметр может задаваться через другой параметр.

• Циклическое задание параметров недопустимо.

• Заданное пользователем имя параметра должно быть уникальным и не содержать пробелов.

• Областью действия параметра является текст, в котором он был объявлен.

 

Function Prototype Statement. Оператор описания прототипа позволяет описать параметры модулей (примитивов), которые будут использованы в тексте. В файле этот оператор может использоваться неограниченное число раз.

 

Примеры:

1. FUNCTION Ipm_add sub

(Cin, data [LPM_W1DTH-1.. 0], datab [LPM_WlDTH-1.. 0], add_sub) – входы модуля

WITH (LPM_WIDTH, LPM_REPRESENTATION,

LPM_DIRECTION, ADDERTYPE,

ONE_INPUT_IS_CONSTANT) – передаваемые параметры

RETURNS (resuit[LPM_WIDTH-1.. 0], Gout, overflow); - выходы модуля

2. FUNCTION compare (a[3..0], b[3..0])

(RETURNS (less, equal, greater);

Правила синтаксиса:

• Оператор начинается с ключевого слова FUNCTION, за которым сле­дует имя модуля, далее заключенный в скобки список входов модуля. При описании прототипа параметризированного модуля далее следует ключевое слово WITH и заключенный в скобки список передаваемых в модуль параметров. Затем указывается ключевое слово RETURNS, далее заключенный в скобки список выходов модуля. Оператор окан­чивается символом (;).

• Элементы списков отделяются друг от друга запятыми.

 

Options Statement. Этот оператор позволяет определить в группе элемент с меньшим индексом (В1ТО) как:

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

• MSB - старший разряд. При этом индексы в группах должны указы­ваться в возрастающей слева направо последовательности.

• ANY. При этом порядок перечисления индексов в группе произволь­ный.

При нарушении порядка перечисления индексов в группах появляется предупреждение компилятора.

Пример:

OPTIONS ВITО = MSВ;

Правила синтаксиса:

• Оператор задания опции начинается с ключевого слова OPTIONS, за которым следует ключевое слово BITO, символ «равно» (=) и одно из ключевых слов LSВ, MSВ, ANY. Далее ставится точка с запятой (;).

• Если опция не задана, то по умолчанию предполагается, что BITO=LSB.

• Значение опции, заданное в файле верхнего уровня иерархии описа­ний проекта, распространяется и на файлы с описанием модулей ниж­них уровней иерархии, если в них явно не задано другое значение оп­ции.

• В файле этот оператор может использоваться только один раз.

 

Assert Statement. Оператор контроля позволяет проверить истинность арифметического выражения, а для случая, когда оно ложно, указать текст сообщения и определить реакцию компилятора. В файле этот опера­тор может использоваться неограниченное число раз.

Пример:

ASSERT(WIDTH>0)

REPORT "Width (%} must be apositive integer" WIDTH

SEVERITY ERROR;

Правила синтаксиса:

Оператор начинается с ключевого слова ASSERT, за которым следует арифметическое выражение. Если значение выражения False, то кон­тролируемое условие считается невыполненным, и приложение Message Ргосеssor отображает заключенное в двойные кавычки сообщение, следующее за ключевым словом REPORT.

Сообщение может содержать символ процент (%), который заменяется значением переменной, указываемой после закрывающих двойных ка­вычек. Если используется несколько символов процента (%), то пере­менные перечисляются через запятую в том порядке, в котором долж­ны подставляться их значения.

Необязательное ключевое слово SEVERITY позволяет задать реакцию компилятора: ERROR - ошибка, WARNING - предупреждение, INFO - информация. При отсутствии ключевого слова SEVERITY сообще­ние, но умолчанию, имеет значение ERROR.

Если ключевое слово REPORT и соответствующее сообщение не были указаны в операторе, то при невыполненных условиях контроля про­цессор сообщений отображает следующую строчку:

< ERROR, WARNING, INFO >: Line <номер строки>, File <имя файла> Assertion failed

• Оператор контроля оканчивается символом (;).

Допустимо применение оператора в разделе описания логики (Logic Section).

 

Subdesign Section. Раздел описания модуля позволяет задать имя мо­дуля и перечислить его выводы. Имя модуля должно совпадать с именем его текстового файла. Если модуль является модулем верхнего уровня ие­рархии, то его имя является одновременно и именем проекта, поэтому это имя будут иметь все вспомогательные файлы. В файле этот раздел может присутствовать только один раз.

Правила синтаксиса:

• Раздел начинается с ключевого слова SUBDESING, за которым следу­ет имя модуля. Максимальная длина имени 32 символа.

• После имени модуля следует заключенный в круглые скобки список его выводов.

• Типы выводов: INPUT - вход, OUTPUT - выход, BIDIR -двунаправленный вывод, MACHINE INPUD - вход импортируемых состоя­ний автомата, MACHINE OUTPUT - выход экспортируемых состоя­ний автомата. Выводы MACHINE INPUT и MACHINE OUTPUT не могут быть использованы в описании модуля верхнего уровня проекта, т.е. модуля, выводы которого являются выводами микросхемы.

• Выводы перечисляются через занятую в одну или несколько строчек. В конце перечня однотипных выводов символ (:), затем ключевое слово, указывающее тип выводов, и далее символ (;).

• После ключевого слова INPUT может быть указано значение по умолчанию (GND, VCC) входного сигнала. Это значение подается на вход в случае, если он окажется неподключенным при использовании данного модуля в иерархическом проекте.

 

Variable Section. Раздел переменных позволяет задать внутренние переменные модуля, используемые в разделе описания логики (Logic Section). В файле этот раздел может присутствовать только один раз.

Переменные в языке AHDL представляют собой имена цепей; цепей с тремя состояниями; модулей, используемых в описании.

Правила синтаксиса:

• Раздел начинается с ключевого слова WARIABLE. Далее следуют: символическое имя переменной, символ (:), тип переменной, символ (;). Имена однотипных переменных могут быть перечислены через запятую.

• Допустимые типы переменных: NODE - цепь; TRI_STATE_NODE -цепь с тремя состояниями; модуль более низкого уровня иерархии; примитив; конечный автомат; псевдоним конечного автомата.

• Раздел переменных может содержать оператор IF GENERATE, позволяющий, в зависимости от значения оцениваемого в операторе арифметического выражения, управлять заданием переменных.

Logic Section. Раздел описания логики позволяет дать функциональное описание проектируемого модуля. В файле этот раздел должен быть единственным.

Правила синтаксиса:

• Раздел начинается с ключевого слова BEGIN и заканчивается ключевым словом END, за которым следует точка с запятой (;).

• В разделе могут быть использованы:

Defaults Statement (Оператор задания исходных значений);

Вооlеаn Equations (булевы уравнения);

Воо1еап Control Equations (булевы уравнения для описания функционирования);

Case Statement (Оператор CASE);

If Then Statement (Оператор If Then);

If Generate Statement (Оператор IF Generate);

In-line Logic Function reference (непосредственное обращение к функциям);

For Generate Statement (Оператор For Generate);

Truth Table Statement (Таблица истинности);

Assert Statement (Оператор контроля).

 

Если в разделе логики используется оператор задания значений по умолчанию (Defaults Statement), то он должен находиться сразу после ключевого слова BEGIN. Другие операторы могут следовать в произвольном порядке.




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 1058; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.049 сек.