КАТЕГОРИИ: Архитектура-(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; Просмотров: 1089; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |