Язык описания аппаратуры AHDL
Описание комбинационных и последовательностных логических устройств, групповых операций, цифровых таблиц истинности с учетом архитектурных особенностей. Особенности языка AHDL. Зарезервированные ключевые слова. Реализация иерархического проекта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 23.01.2014 |
Размер файла | 2,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. Язык описания аппаратуры AHDL
Язык описания аппаратуры AHDL разработан фирмой Altera и предназначен для описания комбинационных и последовательностных логических устройств, групповых операций, цифровых автоматов (state machine) и таблиц истинности с учетом архитектурных особенностей ПЛИС фирмы Altera. Он полностью интегрируется с системой автоматизированного проектирования ПЛИС MAX+PLUS II. Файлы описания аппаратуры, написанные на языке AHDL, имеют расширение *.TDF (Text design file). Для создания TDF-файла можно использовать как текстовый редактор системы MAX+PLUS II, так и любой другой. Проект, выполненный в виде TDF-файла, компилируется, отлаживается и используется для формирования файла программирования или загрузки ПЛИС фирмы Altera.
Система MAX+PLUS II позволяет автоматически создать символ компонента, алгоритм функционирования которого описывается TDF-файлом, и затем вставить его в файл схемного описания (GDF-файл). Подобным же образом можно вводить собственные функции разработчика помимо порядка 300 макрофункций, разработанных фирмой Altera, в любой TDF-файл. Для всех функций, включенных в макробиблиотеку системы MAX+PLUS II, фирма Altera поставляет файлы с расширением *.inc, которые используются в операторе включения INCLUDE.
Разработчик может пользоваться командами текстового редактора или операторами языка AHDL для того, чтобы сделать назначения ресурсов и устройств. Кроме того, разработчик может проверить синтаксис или выполнить полную компиляцию для отладки и запуска проекта. Любые ошибки автоматически обнаруживаются обработчиком сообщений и высвечиваются в окне текстового редактора.
Особенности языка AHDL.
· Язык AHDL не различает прописные и строчные буквы. Однако, рекомендуется для улучшения читаемости ключевых слов использовать прописные буквы;
· Строка в TDF-файле может быть длиной до 255 символов. Однако следует стремиться к длине строки, умещающейся на экране. Строки заканчиваются нажатием клавиши Enter;
· Новую строку можно начинать в любом свободном месте, т.е. на местах пустых строк, табуляций, пробелов.
· Основные конструкции языка отделяются пустым пространством;
· Ключевые слова, имена и числа должны разделяться соответствующими символами или операторами и / или одним или более пробелами;
· Комментарии должны быть заключены в символы процента (%). Комментарии не могут быть вложенными.
Числа и константы
Числа используются для представления констант в булевых выражениях и уравнениях. Язык AHDL поддерживает все комбинации десятичных, двоичных, восьмеричных и шестнадцатеричных чисел. Десятичные, двоичные, восьмиричные и шестнадцатиричные числа можно использовать в любой комбинации. Синтаксис записи чисел в языке AHDL для каждой из указанных систем счисления следующий:
* десятичная - содержит последовательность цифр 0 - 9;
* двоичная - содержит последовательность из цифр 0, 1 и символа Х (данный символ отражает безразличное состояние), размещенных в кавычках («»), следующих за буквой B;
* восьмеричная - содержит последовательность цифр от 0 до 7, размещенных в кавычках, следующих за буквой O или Q;
* шестнадцатиричная - содержит последовательность цифр от 0 до 9 и букв от A до F, размещенных в кавычках, следующих за буквой H или X.
Примеры записи чисел: B «0110X1X10», Q «4671223», H «123AECF».
К числам в языке AHDL применяются следующие правила:
1) компилятор системы MAX+PLUS II всегда интерпретирует числа как группы двоичных цифр;
2) в булевых выражениях числа нельзя присваивать одиночным узлам (вершинам). Вместо этого нужно использовать константы VCC (соответствует уровню логической единицы) и GND (соответствует уровню логического нуля).
Константы удобно использовать как имена чисел. Преимущество использования констант состоит в том, что если одно и то же число задано через имя константы и используется в программе несколько раз, то его значение можно изменить во всех элементах программы, изменив указанное значение только один раз при объявлении константы.
Использование числа и константы проиллюстрируем примером программы, представляющей описание дешифратора адреса, генерирующего высокий уровень сигнала разрешения доступа к шине, если входной адрес равен шестнадцатиричному числу 370h.
CONSTANT IO_ADDRESS = H «0370»;
SUBDESIGN decoder
(
address [15..0]: INPUT;
chip_enable: OUTPUT;
ce: OUTPUT;
)
BEGIN
chip_enable = (address [15..0] == H «0370»);
ce = (a [15..0] == IO_ADDRESS);
END;
Преимущество использования констант особенно заметно, если одно и то же число используется в файле несколько раз. Тогда, если его нужно изменить, меняют его только один раз в объявлении константы.
Зарезервированные ключевые слова
FUNCTION |
OTHERS |
||
CASE |
TABLE |
JKFFE |
|
BITS |
SRFFE |
NCLUDE |
|
DFF |
VCC |
NODE |
|
DFFE |
WHEN |
NOR |
|
ELSE |
WITH |
NOT |
|
END |
XNOR |
OPTIONS |
|
EXP |
XOR |
OR |
|
AND |
GLOBAL |
OUTPUT |
|
BEGIN |
GND |
RETURNS |
|
BURIED |
INPUT |
SOFT |
|
BIDIR |
IF |
SRFF |
|
CARRY |
IS |
STATES |
|
CASCADE |
JKFF |
SUBDESIGN |
|
CLIQUE |
LATCH |
TFF |
|
CONNECTED_PINS |
LCELL |
TFFE |
|
CONSTANT |
MACHINE |
THEN |
|
DEFAULTS |
MACRO |
TITLE |
|
DESIGN |
MCELL |
TRI |
|
DEVICE |
NAND |
VARIABLE |
|
ELSIF |
OF |
X |
Зарезервированные ключевые слова используются для следующих целей:
· для обозначения начала, конца и переходов в объявлениях языка AHDL;
· для обозначения предопределенных констант, т.е. GND и VCC.
Ключевые слова можно использовать как символические имена, только если они заключены в символы одинарных кавычках ('). Их можно также использовать в комментариях.
Для того чтобы получить контекстовую помощь по ключевому слову, убедитесь, что ваш файл сохранен с расширением .tdf, затем нажмите одновременно две кнопки Shift+F1 в окне текстового редактора Text Editor и щелкните кнопкой мыши Button 1 на ключевом слове.
Altera рекомендует все ключевые слова набирать прописными буквами.
Ниже приведены символы, имеющие определенное значение в языке AHDL. В этот перечень не включены символы, используемые в булевых выражениях и для операций сравнения.
Символы
Символ |
Функция |
|
_ (подчеркивание) |
Используемые пользователем идентификаторы |
|
- (тире) |
символы в символических именах |
|
- (два тире) |
Начинает комментарий в стиле VHDL, который продолжается до конца строки |
|
% (процент) |
Заключает с двух сторон комментарий стиля AHDL |
|
() (круглые скобки) |
Заключают и определяют последовательные имена групп. Заключают имена выводов в секции подпроекта (Subdesign Section) и в прототипах функций. Заключают (необязательно) входы и выходы таблиц в объявлении Truth Table. Заключают состояния в объявлении цифрового автомата State Machine. Заключают более приоритетные операции в булевых выражениях. Заключают необязательные варианты в секции проекта Design Section (внутри объявления назначения ресурсов Assignment). |
|
[] (квадратные скобки) |
Заключают диапазон значений в десятичном имени группы |
|
'…' (одинарные кавычки) |
Заключают символические имена. |
|
«…» (двойные кавычки) |
Заключают строку в объявлении названия Title Заключают цифры в не десятичных номерах Заключают путь в объявлении Include. Могут (необязательно) заключать имя проекта и устройства в секции проекта Design Section. Могут (необязательно) заключать имя в объявлении назначения клики графа Clique Assignment. |
|
(точка) |
Отделяет символические имена переменных в макрофункции или примитиве от имен портов. Отделяет имя файла от расширения |
|
… (многоточие) |
Разделяет наименьшее и наибольшее значение в диапазонах |
|
; (точка с запятой) |
Заканчивает объявления и секции в языке AHDL |
|
(запятая) |
Разделяет элменты последовательных групп и списков |
|
: (двоеточие) |
Отделяет символические имена от типов в объявлениях и назначениях ресурсов. |
|
@ «собака» |
Присваивает символические узлы выводам устройства и логическим ячейкам в объявлениях назначения ресурсов Resource Assignment |
|
= (равенство) |
Присваивает значения по умолчанию GND и VCC входам в секции подпроекта Subdesign. Присваивает установочные значения в вариантах. Присваивает значения состояниям в машине состояний. Присваивает значения в булевых уранениях |
|
=> (стрелка) |
Отделяет входы от выходов в объявлениях таблицы истинности Truth Table. Отделяет предложения с WHEN от булевых выражений в операторе Case |
2. Реализация иерархического проекта
В иерархической структуре проекта TDF-файлы, написанные на языке AHDL, можно использовать вместе с другими файлами проектов. На нижнем уровне проекта могут быть макрофункции, поставляемые фирмой Altera или разработанные пользователями.
Использование макрофункций системы Altera MAX+PLUS II
В системе MAX+PLUS II есть большая библиотека, в которую входят 74 стандартных макрофункций, реализующих шины с последовательным опросом, оптимизацию архитектуры и конкретные приложения. Библиотека представляет собой собрание блоков высокого уровня, используемых для создания проекта с иерархической логикой. Во время инсталляции системы эти макрофункции автоматически записываются в каталог \maxplus2\max2lib и его подкаталоги, создаваемые в процессе инсталляции.
В языке AHDL существуют два способа вызова (то есть вставки в качестве примера) макрофункции:
объявить переменную типа <macrofunction> в объявлении примеров INSTANCE в секции VARIABLE и использовать порты примера макрофункции в логической секции. В этом способе важное значение имеют имена портов;
использовать для макрофункции непосредственную ссылку в логической секции файла TDF. В этом способе важен порядок портов.
Входы и выходы макрофункций перечисляются в описании прототипов функций (FUNCTION PROTOTYPE). Прототипы функций можно записать в отдельный файл и указать его в своем файле с помощью директивы INCLUDE. Такие Include-файлы создаются автоматически для данного проекта с помощью команды Create Default Include File. Include-файл вставляется вместо вызывающей его директивы INCLUDE. Для всех макрофункций системы MAX+PLUS II Include-файлы должны находиться в каталоге \maxplus2\max2inc.
Ниже приведен файл macro1.tdf, который реализует четырех битовый счетчик, подсоединенный к дешифратору 4 бит -> 16 бит. Соответствующие макрофункции вызываются объявлениями примеров в секции VARIABLE
INCLUDE «4count»;
INCLUDE «16dmux»;
SUBDESIGN macro1
(
clk: INPUT;
out [15..0]: OUTPUT;
)
VARIABLE
counter: 4count;
decoder: 16dmux;
BEGIN
counter.clk = clk;
counter.dnup = GND;
decoder. (d, c, b, a) = counter. (qd, qc, qb, qa);
out [15..0] = decoder.q [15..0];
END;
В данном файле используются директивы INCLUDE для импортирования прототипов функций для двух макроофункций фирмы Altera: 4count и 16dmux. В секции VARIABLE объявляются две переменные: counter и decoder как примеры этих макрофункций. В логической секции определяются входные порты для обеих макрофункций в формате <имя переменной-примера>.<имя порта>. (Они ставятся в левой части булевых уравнений, а выходные порты - справа.) Порядок портов в прототипе функции не важен, так как имена портов в логической секции перечисляются явно.
Ниже приведен файл macro2.tdf, выполняющий те же функции, что и предыдущий, но макрофункции в нем вызываются непосредственной ссылкой.
INCLUDE «4count»;
INCLUDE «16dmux»;
SUBDESIGN macro2
(
clk: INPUT;
out [15..0]: OUTPUT;
)
VARIABLE
q [3..0]: NODE;
BEGIN
(q [3..0],) = 4count (clk, GND,);
%
out [15..0] = 16dmux (. (d, c, b, a)=q [3..0]);
% equivalent in-line ref. with positional port association%
% out [15..0] = 16dmux (q [3..0]);%
END;
Вызов макрофункций 4count и 16dmux осуществляется в логической секции непосредственной ссылкой (в правой части булевых уравнений).
Ниже приведены прототипы этих макрофункций, записанные в файлах 4count.inc 16dmux.inc:
FUNCTION 4count (clk, clrn, setn, ldn, cin, dnup, d, c, b, a)
RETURNS (qd, qc, qb, qa, cout);
FUNCTION 16dmux (d, c, b, a)
RETURNS (q [15..0]);
Соединение портов показано в логической секции файла macro2.tdf. Порядок портов важен, так как должно быть однозначное соответствие между портами, описанными в прототипе функции и при ее реализации в логической секции. В данном примере запятыми отделяются (но не перечисляются) порты, для которых не делается явного подключения.
Создание и применение пользовательских макрофункций
В файлах, написанных на AHDL можно легко создавать и использовать пользовательские макрофункции, выполняя следующие действия:
Создать логику для макрофункции в файле проекта.
Определить порты макрофункции в объявлении прототипа функции.
Прототип функции дает краткое описание функции: ее имя, а также входные, выходные и двунаправленные порты. Можно также использовать машинные порты для макрофункций, которые импортируют или экспортируют цифрового автомата.
Объявление прототипов функций может быть размещено в Include-файле, который вызывается в пользовательском файле. Используя команду Create Default Include File, можно автоматически создавать Include-файл с прототипом функции для любого файла проекта.
Вставить в файл пример макрофункции с помощью объявления примера в секции VARIABLE или с помощью непосредственной ссылки в тексте.
Использовать макрофункцию в файле.
Определение пользовательской макрофункции
Для использования макрофункции ее нужно либо включить в описание прототипа функции в TDF-файле, либо указать в директиве INCLUDE файла TDF имя Include-файла, содержащего прототип этой макрофункции. Как уже упоминалось выше, Include-файлы можно создавать автоматически.
3. Реализация с помощью оператора выбора
Рассмотрим использование оператора выбора (case statement) для реализации мультиплексора. Следует отметить что этот способ наиболее прост и наименее трудоемок.
Единственное отличие - выход out определен как регистр(register), это сделано для того, чтобы назначить его значения явно и не управлять им. Такое назначение сигнала называется процедурным назначением (procedural assignment). Данные типа «цепь (wire)» не могут быть назначены явно, они нуждаются в сигнале драйвере, такое назначение называется непрерывным назначением.
Always ? (inl or in2 or in3 or in4 or cntrl1 or cntrl2)
аппаратура язык истинность иерархический
Эта конструкция читается так же, как и пишется, т.е. значение вычисляется всегда при изменении хотя бы одного операнда - система постоянно их отслеживает. Несколько забегая вперед, следует отметить, что данная конструкция является синтезируемой во многих системах проектирования, в частности и в MAX+PLUS фирмы Altera. Список переменных называется списком чувствительности, поскольку данная конструкция чувствительная к их изменениям.
Синтаксис оператора выбора case в Verilog сходен с синтаксисом оператора выбора в языке С. Условием является конкатенация или объединение переменных cntrl1 и cntrl2 в двухразрядное число. Завершает оператор выбора endcase.
Реализация с использованием условного оператора
В принципе ничего нового мы уже не видим - ясно, что в нашем случае условный оператор проигрывает оператору case в наглядности представления (хотя для большинства систем проектирования синтезируемые реализации окажутся идентичными).
Размещено на Allbest.ru
Подобные документы
Графический ввод схемы и симуляция в Quartus II. Основные логические элементы. Описание логических схем при помощи языка AHDL, его элементы. Зарезервированные ключевые слова. Моделирование цифровых схем с использованием параметрических элементов.
курсовая работа [1,7 M], добавлен 07.06.2015Изучение логических операций и правил их преобразований. Моделирование цифровых схем, состоящих из логических вентилей. Способы описания работы логического устройства - таблицы истинности, временные диаграммы, аналитические функции, цифровые схемы.
лабораторная работа [2,1 M], добавлен 02.03.2011Проектирование цифровых устройств на ПЛИС фирмы Xilinx с применением языка VHDL, использование систем Leonardo Spectrum, Foundation Express и Integrated Synthesis Environment (ISE). Синтез и реализация проекта, разработка регистровой схемы и умножителя.
курсовая работа [2,3 M], добавлен 28.06.2009Исследование принципа работы основных логических элементов цифровых устройств. Описания вычислительных машин непрерывного и дискретного действия. Инверсия конъюнкции, дизъюнкции и равнозначности. Разработка программы, реализующей логические операции.
практическая работа [230,8 K], добавлен 25.03.2015Краткая характеристика встроенного языка. Формат исходных текстов программных модулей. Комментарии, формат операторов, зарезервированные слова. Структура программного модуля. Базовые типы данных, правила их преобразования. Оператор объявления переменных.
реферат [30,3 K], добавлен 23.01.2011Ознакомление со структурой языка программирования Turbo-Pascal 7.0, его алфавитом, выражениями и простейшими конструкциями (метками, идентификаторами). Способы описания арифметических, вещественных, логических и символьных операций в программной среде.
реферат [68,2 K], добавлен 07.02.2011Логическая равносильность преобразования, его применение к математическим доказательствам. Применение аппарата булевских функций к синтезу комбинационных схем. Вычисление логических операций выполняемых микропроцессором. Значение истинности высказываний.
методичка [147,4 K], добавлен 24.12.2010Ознакомление со структурой, комментариями, переменными и типами данных, константами, перечислениями, преобразованием типов языка программирования высокого уровня С++. Ключевые понятия языка, идентификаторы, ключевые слова, функции, операторы, выражения.
контрольная работа [31,2 K], добавлен 12.12.2009Понятие высказывания, операции над простыми высказываниями, таблицы истинности. Примеры построения таблиц истинности сложных высказываний. Таблица истинности импликации. Закон тождества, противоречия, двойного отрицания. Решение логических задач.
курсовая работа [507,3 K], добавлен 23.04.2013Типовые комбинационные схемы. Основы математического аппарата анализа и синтеза логических устройств. Функциональная полнота элементов Шеффера и Пирса. Логические элементы, образующие логический базис. Особенности синтеза схем с запрещенными комбинациями.
методичка [977,1 K], добавлен 28.04.2009