
- •1. Введение 3
- •2. Использование ahdl 13
- •3. Элементы ahdl 64
- •4. Структура проекта 83
- •1. Введение
- •1.1 Описание устройства с помощью ahdl
- •1.1.1 Как работает ahdl?
- •1.2 Структура ahdl-файла
- •1.2.1 Разделы ahdl-файла
- •1.2.2 Иерархические проекты
- •1.2.3 Подключение библиотек
- •1.3.1 Шаблоны и примеры ahdl
- •1.3.2 Контекстно-зависимая помощь
- •1.3.3 Выделение цветом групп символов
- •1.3.4 Локализация ошибок
- •1.4 Компиляция ahdl-проектов
- •1.5 Советы
- •2. Использование ahdl
- •2.1 Введение
- •2.1.1 Использование чисел
- •2.1.2 Использование констант и вычисленных функций
- •2.1.3 Вставка ahdl-шаблона
- •2.1.4 Примеры ahdl
- •2.2 Комбинационные устройства
- •2.2.1 Описание комбинационных устройств с помощью логических уравнений
- •2.2.2 Объявление узлов
- •2.2.3 Описание групп
- •2.2.4 Использование операторов ветвления
- •Использование оператора if…then
- •Использование оператора case
- •Сравнение операторов if…then и case
- •2.2.5 Создание декодеров
- •2.2.6 Использование значений «по умолчанию» для переменных
- •2.2.7 Описание активно-низкой логики
- •2.2.8 Двунаправленные выводы
- •2.2.9 Описание тристабильных выводов
- •2.3 Устройства с памятью
- •2.3.1 Использование регистров
- •2.3.2Определение регистровых входов
- •2.3.3 Создание счетчиков
- •2.4 Графы переходов
- •2.4.1 Описание графа переходов
- •2.4.2 Назначение автомату сигналов синхронизации, сброса, разрешения по входу
- •2.4.3 Кодирование состояний автомата
- •2.4.4 Описание автомата Мура (Moore machine)
- •2.4.5 Описание автомата Мили (Mealy machine)
- •2.5 Создание иерархического проекта
- •2.5.1 Использование не параметризированных функций
- •2.5.2 Использование параметризированных функций
- •2.5.3 Создание и использование макрофункций
- •2.5.4 Экспорт и импорт графов переходов автоматов
- •2.6 ИспользованиеLcell иSofTпримитивов
- •2.8 Перегрузка имени оператора
- •2.9 Использование циклически генерируемой логики
- •2.10 Использование условно генерируемой логики
- •3. Элементыahdl
- •3.1 Ключевые слова и идентификаторы
- •3.1.1 Ключевые слова
- •3.1.2 Зарезервированные идентификаторы
- •3.2 Символы
- •3.3 Имена вAhdl, использование кавычек
- •3.4 Группы
- •3.4.1 Способы объявления и записи групп
- •3.4.2 Размеры групп и подгрупп
- •3.5 Числа вAhdl
- •3.6 Арифметические выражения
- •3.7 Логические выражения
- •3.7.1 Логические операторы
- •3.7.2 Использование оператораNot
- •3.7.3 Использование операторовAnd, nand, or, nor, xor, xnor
- •3.7.4 Использование арифметических операторов в логических выражениях
- •3.7.5 Операторы сравнения
- •3.7.6 Приоритеты логических операторов и операторов сравнения
- •3.8 Мегафункции
- •3.9 Порты
- •3.9.1 Порты файла
- •3.9.2 Использование портов
- •4. Структура проекта
- •4.1 Введение
- •4.2 Заголовок (Title Statement)
- •4.2 Раздел объявления параметров (Parameters Statement)
3.2 Символы
Таблица 3.1 содержит перечень символов, имеющих предопределенное значение в языке. Кроме того, эта таблица содержит перечень символов, которые могут использоваться в качестве операторов и компараторов.
Таблица 3.1Символы AHDL
Символ |
Назначение |
_ (gподчеркивание)
/ (прямой слеш) |
Эти символы могут входить в имена переменных, объявленных пользователем |
-- (двойное тире) |
Обозначают начала комментария, заканчивающегося на конце строки |
% (знак процента) |
Предназначен для открытия и закрытия многострокового комментария |
( ) (открывающаяся и закрывающаяся скобки) |
Ограничивают раздел объявления переменных Могут ограничивать входы и выходы в таблице истинности Ограничивают описания состояний графа переходов Ограничивают операции более высокого приоритета в логических и арифметических выражениях Ограничивают описание параметров Могут ограничивать условие в оператора ASSERT Окаймляют параметры функции в разделе DEFINE |
[](открывающаяся и закрывающаяся квадратные скобки) |
Окаймляют границы групп |
‘…’ (одинарные кавычки) |
Ограничивают символьные строки |
“…” (двойные кавычки) |
Ограничивают строки в разделе заголовка (Title Statement), в разделе описания параметров, в структуреASSERT |
. (точка) |
Разделяет имя переменной и имя порта Отделяет имя файла от расширения |
.. (две точки) |
Отделяют старшие (MSB) биты от младших(LSB)в группах |
; (точка с запятой) |
Обозначают конец какой-либо секции AHDLили конец выражения |
, (запятая) |
Отделяет элементы списка друг от друга |
: (двоеточие) |
Отделяет имена переменных от их типов в разделе объявлений переменных |
= (знак равенства) |
Назначает значения по умолчанию GND иVCCвходам в разделе определения устройства (Subdesign section) Используется при использовании именного способа указания аргументов функции С помощью знака равенства происходит присвоение значений:
|
=>(стрелка) |
Отделяет выходы от входов в таблицах истинности Используется в операторе CASE |
+ (плюс) |
Оператор сложения |
- (минус) |
Оператор вычитания |
== (два знака равенства) |
Оператор сравнения строк или чисел |
! (восклицательный знак) |
Оператор НЕ (NOT) |
!= (восклицательный знак и знак равенства) |
Оператор неравенства |
> (знак больше) |
Оператор больше |
>= (знак больше и знак равенства) |
Оператор больше или равно |
< (знак меньше) |
Оператор меньше |
<= (знак меньше и знак равенства) |
Оператор меньше или равно |
& (амперсант) |
Оператор «И» (AND) |
!& (восклицательные знак и амперсант) |
Оператор «И-НЕ» (NAND) |
$ (знак доллара) |
Оператор «Исключающее ИЛИ» (XOR) |
!$(восклицательные знак и знак доллара) |
Оператор «Исключающее ИЛИ-НЕ» (XNOR) |
#(решетка) |
Оператор «ИЛИ» (OR) |
!#(восклицательные знак и решетка) |
Оператор «ИЛИ-НЕ» (NOR) |
Для
получения более подробной информации
см. разделы:
Логические операторы
Арифметические выражения
Использование арифметических операторов в логических выражениях
Операторы сравнения