
- •Учебник по языку ahdl Оглавление
- •1.Введение
- •1.1.Общие положения
- •1.2.Как работает ahdl?
- •2.Элементы языка ahdl
- •2.1.Зарезервированные слова
- •2.2.Зарезервированные идентификаторы
- •2.3.Символы
- •2.4.Строковые и символьные имена
- •2.5.Шины
- •2.5.1.Способы объявления шин
- •2.5.2.Диапазоны и поддиапазоны шин
- •2.6.Числа в ahdl
- •2.7.Арифметические выражения
- •2.8.Встроенные оценочные функции
- •2.9.Логические выражения
- •2.9.1.Операторы логических функций
- •2.9.1.1.1.Булевы операторы, использующие not
- •2.9.1.2.1.Булевы операторы, использующие and, nand, or, nor, xor, и xnor
- •2.9.2.Арифметические операторы
- •2.9.3.Компараторы
- •2.9.4.Приоритеты логических и арифметических операторов
- •2.10.Прототипы логических функций
- •2.10.1.Примитивы
- •2.10.2.Массивы примитивов
- •2.10.3.Макрофункции
- •2.10.4.Мегафункции и библиотеки параметризуемых модулей
- •2.10.5.Не используемые входы примитивов, мегафункций и макрофункций
- •2.11.Порты
- •2.11.1.Типы портов:
- •2.11.2.Порты экземпляров
- •3.Структура описания проекта на языке ahdl
- •3.1.Общая структура
- •Раздел Subdesign
- •Раздел Variable
- •Раздел Logic
- •3.2.Определение заголовка описания (оператор Title)
- •3.3.Определение включаемого текста (оператор Include)
- •3.4.Определение констант (оператор Constant)
- •3.5.Обозначение арифметических выражений (оператор Define)
- •3.6.Определение параметров (оператор Parameters)
- •3.7.Определение прототипов логических функций (оператор Function Prototype).
- •3.8.Определение порядка следования битов (оператор Options)
- •3.9.Контроль арифметических выражений (оператор Assert)
- •3.10.Раздел интерфейса проекта (Subdesign)
- •3.11.Раздел переменных проекта (Variable)
- •Раздел Variable может включать следующие операторы и конструкции:
- •Раздел Variable может также содержать операторы If Generate, которые могут быть использованы для генерирования объектов, узлов, регистров, конечных автоматов, и псевдоимен конечных автоматов.
- •Раздел Variable имеет следующие характеристики:
- •3.11.1.Объявление объектов (Instance Declarations)
- •3.11.2.Объявление узлов (Node Declarations)
- •3.11.3.Объявление регистров (Register Declarations)
- •3.11.4.Объявление конечных автоматов (State Machine Declarations)
- •3.11.5.Объявления псевдоимен конечных автоматов (Machine Alias Declaration)
- •3.12.Раздел тела проекта (Logic)
- •3.12.1.Задание исходных значений (Defaults Statment)
- •3.12.2.Булевские выражения (Boolean Equations)
- •3.12.3.Управляющие булевские выражения (Boolean Control Equations)
- •3.12.4.Оператор проверки списка (Case.)
- •3.12.5.Оператор проверки логического выражения (If Then.)
- •3.12.6.Оператор проверки логического выражения (If Generate )
- •3.12.7.Оператор цикла (For Generate)
- •3.12.8.Использование ссылок на прототипы функций (In-Line Logic Function Reference)
- •3.12.9.Определение таблицы истинности (Truth Table)
- •4.Применение языка ahdl
- •4.1.Использование шаблонов ahdl
- •4.2.Создание текстового выходного файла
- •4.3.Использование чисел
- •4.4.Использование констант и оценочных функций
- •4.5.Использование итеративно-генерируемой логики
- •4.6.Использование условно-генерируемой логики
- •4.7.Выполнение контроля выражений с помощью оператора Assert
- •4.8.Управление логическим синтезом с помощью примитивов lcell & soft
- •4.9.Реализация комбинационной логики
- •4.9.1.Реализация логических выражений и уравнений
- •4.9.2.Именование логических операторов и компараторов
- •4.9.3.Использование узлов
- •4.9.4.Использование шин
- •4.9.5.Реализация условной логики
- •4.9.5.1.1.Оператор If Then
- •4.9.5.2.1.Оператор Case
- •4.9.5.3.1.Оператор If Then против оператора Case
- •4.9.6.Создание дешифраторов
- •4.9.7.Использование значений переменных по умолчанию
- •4.9.8.Реализация логики с активными низкими уровнями
- •4.9.9.Реализация двунаправленных выводов
- •4.9.10.Реализация тристабильных шин
- •4.10.Реализация последовательностной логики
- •4.10.1.Объявление регистров
- •4.10.2.Объявление регистровых выходов
- •4.10.3.Создание счетчиков
- •4.10.4.Конечные автоматы
- •4.10.5.Реализация конечных автоматов
- •4.10.6.Управление записью, сбросом и разрешением (Clock, Reset & Enable)
- •4.10.7.Присваивание состояний
- •4.10.8.Конечные автоматы с синхронными выходами
- •4.10.9.Конечные автоматы с асинхронными выходами
- •4.10.10.Выход из некорректных состояний
- •4.11.Реализация запоминающих устройств
- •4.12.Реализация иерархических проектов
- •4.12.1.Использование непараметрических функций
- •4.12.2.Использование параметрических функций
- •4.12.3.Использование заказных мега- и макрофункций
- •4.12.4.Импорт и экспорт конечных автоматов
2.2.Зарезервированные идентификаторы
Ниже приведен список всех зарезервированных идентификаторов.
Таблица 2. Зарезервированные идентификаторы языка AHDL
CARRY |
JKFFE |
SRFFE |
CASCADE |
JKFF |
SRFF |
CEIL |
LATCH |
TFFE |
DFFE |
LCELL |
TFF |
DFF |
MCELL |
TRI |
EXP |
MEMORY |
USED |
FLOOR |
OPENDRN |
WIRE |
GLOBAL |
SOFT |
X |
2.3.Символы
Символы ниже имеют в языке AHDL предопределенные значения. Этот список включает символы, которые используются в качестве операторов и компараторов в булевых выражениях и как операторы в арифметических выражениях.
Таблица 3. Символы языка AHDL
Символ |
Функция |
_ (подчеркивание) |
Идентификаторы, описанные пользователем и используемые как допустимые символы в символьных именах. |
- (тире) |
|
/ (прямой слеш) |
|
-- (два тире) |
Начинает однострочный комментарий в VHDL стиле |
% (процент) |
Ограничивает комментарий в AHDL стиле |
( ) (круглые скобки) |
Ограничивают и определяют последовательные имена шин. Например, шина (a, b, c) состоит из узлов a, b, и c. Ограничивают имена выводов в разделах Subdesign и операторах прототипов функций. Дополнительно, ограничивает входы и выходы таблиц истинности в операторах Truth Table. Заключают биты и состояния объявлений State Machine. Ограничивают операции наивысшего приоритета в булевых и арифметических выражениях. Ограничивают определения параметров в операторах Parameters, объявлениях Instance и параметрические имена в операторах Function Prototype и в подставляемых ссылках. Дополнительно, ограничивают условие в операторе Assert. Ограничивают аргументы оценочных функций в операторах Define.
|
[ ] (скобки) |
Ограничивают диапазон шины |
'...' (кавычки) |
Ограничивают символьные имена |
"..." (двойные кавычки) |
Ограничивают строки в операторах Title, Parameters, Assert. Ограничивают имена файлов в операторах Include. Ограничивают цифры в недесятичных числах |
. (точка) |
Отделяет символьные имена переменных логической функции от имен портов. Отделяет расширения от имен файлов. |
.. (эллипс) |
Отделяет старший бит от младшего. |
; (точка с запятой) |
Оканчивает операторы и разделы AHDL. |
, (запятая) |
Отделяет символьные имена от типов в объявлениях. |
= (равно) |
Присваивает входам значения по умолчанию GND и VCC в разделе Subdesign. Присваивает значения опциям в операторе Options. Присваивает значения по умолчанию параметрам в операторе Parameters или в подставляемой ссылке. Присваивает значения состояниям конечного автомата. Присваивает значения булевым уравнениям. Соединяет сигнал с портом в подставляемой ссылке, которая использует соединение по имени порта. |
=> (стрелка) |
Отделяет входы от выходов в операторах Truth Table. Отделяет WHEN предложения от булевых выражений в операторах Case. |
+ (плюс) |
Оператор сложения |
- (минус) |
Оператор вычитания |
== (два знака равенства) |
Оператор эквивалентности строк или чисел |
! (восклицательный знак) |
Оператор НЕ |
!= (знак восклицание равно) |
Оператор неравенства |
> (больше чем) |
Компаратор больше чем |
>= (больше или равно) |
Компаратор больше чем или равно |
< (меньше чем) |
Компаратор меньше чем |
<= (меньше или равно) |
Компаратор меньше чем или равно |
& (амперсант) |
Оператор И |
!& (восклицание амперсант) |
Оператор И-НЕ |
$ (знак доллара) |
Оператор Исключающее - ИЛИ |
!$ (восклицание доллар) |
Оператор Исключающее - ИЛИ - НЕ |
# (знак фунта) |
Оператор ИЛИ |
!# (восклицание фунт) |
Оператор ИЛИ-НЕ |
? (вопрос) |
Тернарный оператор. Он использует следующий формат: <выражение 1> ? < выражение 2> : < выражение 3> Если первое выражение не ноль (истина), то вычисляется второе выражение и результат возвращается тернарному выражению. В противном случае возвращается значение третьего выражения.
|