Главная страница Автономные управляющие системы 3.8.2. Символы Ниже приведены символы, имеющие определенное значение в языке AHDL В этот перечень не включены символы, используемые в булевых выражениях как операторы и для операций сравнения
3.8.3. Имена в кавычках и без кавычек В языке AHDL ест ь три типа имен ♦ Символические имена - это определяемые пользователем идентификаторы Они используются для обозначения следующих частей TDF - внутренних и внешних узлов (вершин), - констант, - переменных цифрового автомата, битов состояний, имен состояний, - примеров (instance) ♦ Имена подпроекта - это определяемые пользователем имена для файлов проекта более низкого уровня Имя подпроекта должно быть таким же, как имя файла TDF. ♦ Имена портов - это символические имена, идентифицирующие вход или выход примитива или макрофункции. В файле Fit вашего проекта могут появиться генерируемые компилятором имена выводов, с символом тильда (~). Этот символ зарезервирован для имен, генерируемых компилятором, пользователю запрещается его использовать для обозначения имен выводов, узлов (вершин), групп (шин) Существуют две формы записи для всех трех типов имен (символических, подпроекта и портов), в кавычках () и без кавычек Если разработчик создает символ по умолчанию для файла TDFj который включает в себя имена портов в кавычках, собственно кавычки не входят в имена выводов Ниже в таблице указаны все возможные варианты записи имен в языке AHDL-
Примеры Символические имена без кавычек а, /а. разрешенные -foo, node, 55 неразрешенные Символические имена в кавычках -bar, table, 1221 bowling4$, has a space , a name with more than 32 characters разрешенные неразрешенные 3.8.4. Группы Символические имена и порты одного и того же гипа можно объявить и использовать как группы в булевых выражениях и уравнениях Группа, в которую может входить до 256 элементов (или битов ), обрабатывается как коллекция узлов (вершин) и считается единым целым Группа в логической секции файла TDF может состоять из узлов или чисел Одиночные узлы и константы GND и VCC могут дублироваться для образования групп в булевых выражениях и уравнениях В файле Fit могут появиться генерируемые компилятором имена выводов, с символом тильда (~) Этот символ зарезервирован для имен, генерируемых компилятором, пользователю запрещается его использовать для обозначения имен выводов, узлов (вершин), групп (шин). 384 t ФОРМА ЗАПИСИ ГРУПП Существует две формы записи при объявлении групп 1 Десятичное имя группы состоит из символического имени (или имени порта), за которым следует диапазон десятичных чисел, заключенный в квадратные скобки, например а[4. 1] После этого имени группы указывается только один диапазон Всего сим- волическое имя (или имя порта) вместе с самым длинным (по написанию) номером в диапазоне может содержать до 32 символов Если группа определена, квадратные скобки обеспечивают самый краткий путь задания всего диапазона Вместо диапазона можно также указывать только одно десятичное число, например а[5] Однако такая форма записи означает единственное символическое имя, а не имя группы, и эквивалентно имени а5 2. Последовательное имя группы состоит из заключенного в скобки перечня символических имен, имен портов или чисел, разделенных запятыми, например (а, Ь, с). В этом перечне могут быть также десятичные имена групп, например (а, Ь, с[5 .1]). Такая запись используется для задания имен портов. Например. reg. (d, elk, elrn, prn) В следующем примере показаны варианты записи одной и той же группы Ь[5. 0] (Ь5,Ь4, ЬЗ,Ь2,Ы,Ь0) Ь[] 3842 ДШПАЗОНИПОДДИтЗОН ГРУПП Диапазоны в десятичных именах групп обозначаются десятичными номерами, обычно перечисляемыми в порядке убывания Для того чтобы указать диапазон в порядке возрастания или в обоих порядках, разработчик должны установить опцию В1Т0 в обьяв-лении опций Options, тогда компилятор не будет выдавать предупреждающие сообщения Поддиапазоны включают подмножество узлов, заданных в обь-явлении группы, их можно указывать различными способами Например, если объявили группу с[5 1], Вы можете использовать следующие поддиапазоны этой группы с[3 1], с4, с[5], (с2, с4) В левой части булевых уравнений или в ссылках (reference) по тексту программы (in-line) на макрофункции или примитивы в написании имени группы можно использовать запятые вместо перечисления имен. При указании диапазона вместо чисел можно использовать константы. Например, q[MAX..O] является разрешенной формой записи, если константа МАХ определена в объявлении Constant 3.8.5. Числа в языке AHDL В языке AHDL можно использовать десятичные, двоичные, восьмеричные и шестнадцатеричные числа в любой комбинации В таблице приведен синтаксис записи чисел в языке AHDL для каждой системы счисления.
♦ компилятор системы MAX+PLUS II всегда интерпретирует числа как группы двоичных цифр. ♦ булевых выражениях числа нельзя присваивать одиночным узлам (вершинам). Вместо этого нужно использовать константы VCC и CNO. 3.8.6. Булевы выражения Булевы выражения состоят из операндов, разделенных логическими и арифметическими операторами и компараторами и (необязательно) сгруппированных с помощью круглых скобок. Выражения используются в булевых уравнениях, а также в других конструкциях языка, таких, как операторы Case и if Существуют следующие применения булевых выражений ♦ операнд Пример-а, b[5..1J, 7, VCC ♦ встроенная в текст (in-line) ссылка (reference) на примитив или макрофункцию ♦ префиксный оператор {* или -), примененный к булеву выражению Пример. Г с ♦ два булевых выражения, разделенные двоичным (не префиксным) оператором Пример dl $ d3 ♦ заключенное в круглые скобки булево выражение Пример: (I fОС i bar) Результат каждого булева выражения должен иметь ту же ширину, что и узел или группа (в левой стороне уравнения), которому он, в конечном счете, присваивается 3.8.7. Логические операторы В таблице приведены логические операторы для булевых выражений
Примеры разрешенной записи чисел в языке AHDL: В 0110Х1Х10 QM671223 H 123AECF К числам в языке AHDL применяются следующие правила Каждый оператор представляет собой логический вентиль с двумя входами, исключение составляет оператор NOT являющийся префиксным инвертором Для записи логического оператора можно использовать его имя или символ Выражения, в которых используются эти операторы, интерпретируются по-разному в зависимости оттого, что представляют собой операнды одиночные узлы (вершины), группы или числа Кроме того, выражения с оператором NOT интерпретируются не так как другие логические операторы 3.8.3. Выражения с оператором NOT С оператором NOT можно использовать три типа операндов ♦ если операнд представляет собой одиночный узел, константы GND или VCC, выполняется одна операция обращения Пример а ♦ если операнд представляет собой группу узлов, каждый элемент группы проходит через инвертор. Пример ia[4 .1 ] интерпретируется как (!а4, !аЗ, ia2, !a1), ♦ если операнд представляет собой число, он обрабатывается как двоичное число, т е как группа соответствующего числа битов, где обращается каждый бит Пример 9 операнд интерпретируется как двоичное число ВЮОГ (группа из четырех элементов), результат В 0110 3.8.9. Выражения с операторами AND, Шй, OR, NOR, XOR и XNOR Существует четыре комбинации операндов с двоичными (не префиксными) операторами, и каждая из них интерпретируется по-особому ♦ если операнд представляет собой одиночный узел, константы GND или VCC, оператор выполняет логическую операцию над двумя элементами Пример-(а&Ь), ♦ если оба оператора являются группами узлов, оператор применяется к соответствующим узлам каждой группы, производя ряд операций на битовом уровне между группами Группы должны быть одинакового размера Пример (а,Ь) # (c,d) интерпретируется как (а#с, b#d), ♦ если один оператор представляет собой одиночный узел, константы GND или VCC, а другой операнд - группу узлов, то одиночный узел или константа дублируются для образования группы такого же размера, что и второй операнд Затем выражение интерпретируется как групповая операция Пример а & Ь[2 1] интерпретируется как(а&Ь2, а&Ы), ♦ если оба операнда представляют собой числа, более короткое (в смысле числа битов в двоичном представлении) число дополняется незначащими нулями, чтобы Сравняться по числу битов С другим операндом Затем выражение интерпретируется как групповая операция Пример: в выражении (3#В) 3 и 8 преобразуются в двоичные числа В 0011 и В 1000 Результатом является В 101Г, ♦ если один операнд представляет собой число, а другой - узел или Группу узлов, то число усекается или расширяется до размера группы При усечении значащих битов генерируется сообщение об ошибке Выражение затем интерпретируется как групповая операция Пример (а,Ь,с)&1 интерпретируется как (а&О, Ь&О С&1) Выражение с константой VCC интерпретируется не так как выражение С операндом 1 В первом выражении приведенного ниже примера число 1 расширяется по числу битов двоично! о представления, чтобы соответствовать размеру группы Во втором уравнении узел VCC дублируется для образования группы того же размера Затем каждое уравнение интерпретируется как фупповая операция operation (а, Ь, с) 4 1= (О, О, с) (а, Ь, с) t VCC = (а, Ь, с) . 3.8.10. Арифметические операторы Арифметические операторы используются для выполнения арифметических операций сложения и вычитания над группами и числами В языке AHDL применяются следующие арифметические операторы
Унарные плюс (+) и минус (-) являются префиксными операторами Оператор + не влияет на свой операнд, и разработчик может использовать его для иллюстративных целей (т. е. для указания положительного числа) Оператор - интерпретирует свой операнд в двоичном представлении (если он таковым не является с самого начала) Затем он выполняет операцию унарного минуса, т е получает дополнение операнда как двоичного числа К другим арифметическим операторам применяются следующие правила. ♦ операции выполняются между двумя операндами, которые должны быть группами узлов или числами, ♦ если оба операнда представляют собой группы узлов, то они должны иметь одинаковый размер, ♦ если оба операнда представляют собой числа, то более короткое (в двоичном представлении) число расширяется (дополняется незначащими нулями), чтобы сравняться по числу битов с другим операндом, ♦ если один операнд представляет собой число, а другой является группой узлов, то число усекается или расширяется в двоичном представлении до размера группы. Если при этом усекаются значащие биты, компилятор системы MAX+PLUS II генерирует сообщение об ошибке. 3,8.11. Компараторы (Операторы сравнения) Компараторы используются для сравнения одиночных узлов или групп Существует два типа компараторов логические и арифметические В языке AHDL реализованы следующие компараторы
Оператор (==) используется исключительно в булевых выражениях Логические компараторы могут сравнивать одиночные узлы, группы узлов и числа При сравнении групп узлов или чисел размер групп должен быть одинаковым Компилятор системы MAX+PLUS II выполняет побитовое сравнение групп и возвращает значение VCC, если результат - истина, и GND, если результат - ложь Арифметические компараторы могут сравнивать только группы узлов и числа, и группы должны иметь одинаковый размер Компилятор выполняет над группами операции беззнакового сравнения значений, т е каждая группа интерпретируется как положительное двоичное число и сравнивается с другой группой
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |