Перечислите и опишите коротко лексические элементы Verilog
Текстовые файлы языка Verilog представляют собой последовательность лексических элементов, сотсоящих из одного или нескольких символов. В языке имеют место следующие лексические элементы: операторы, пробелы и комментарии, числа, строки, идентификаторы, ключевые слова.
1)Операторы. Операторы Verilog HDL могут иметь от одного до трех символов. Операторы бывают унарными, бинарными, а также есть один оператор, который использует три операнда – условный оператор. Унарные операторы располагаются слева от своего операнда. Бинарные операторы располагаются между операндами. Условный оператор имеет два символа, разделяющие операнды.
2)Пробелы и комментарии. К пробелам в языке относятся собственно пробелы, символы табуляции, пустые строки. В языке Verilog приняты две формы для ввода комментариев. Однострочные комментарии начинаются с символов // и заканчиваются концом строки. Многострочные комментарии (блочные) начинаются с символов /* и заканчиваются символами /*
3)Числа. Числа или иначе константы могут определяться в десятичном, шестнадцатеричном, восьмеричном, двоичном форматах. В языке Verilog предусмотрены две формы для записи чисел. Первая форма представляет собой простое десятичное число как последовательность цифр от 0 до 9. Вторая форма представления чисел имеет следующий формат: <size><base_format><number>.
4) Строки. Строками являются последовательностями символов, заключенных в двойные кавычки и располагающиеся в одной линии. Строки могут использоваться в языке как операнды в выражениях представляя собой последовательность 8-и разрядных ASCII-кодов, где один ASCII-символ представляется как одна буква, цифра.
|
|
5)Идентификаторы, ключевые слова, системные имена. Идентификаторы используются в языке Verilog в качестве символических имен для обозначения переменных, констант, модулей, функций, задач и т.д. и могут использоваться для обозначения этих объектов в любом месте описания. Идентификатор представляет собой последовательность из букв, цифр, символов доллара $ и символов подчеркивания с учетом изложенных выше правил. Другие символы могут использоваться только если идентификатор начинается с символа \ - в этом случае он может содержать все печатные символы. Заканчивается такой идентификатор пробелом, символом табуляции или новой строкой.
Ключевыми словами начинаются предопределенные идентификаторы, используемые для определения языковых конструкций.
К системным именам относятся имена системных задач и функций предопределенные в стандарте Verilog HDL. Все системные имена начинаются с символа $. Системные имена всегда вводятся строчными буквами.
|
|
Опишите операторы initial, always, assign и конкатенации.
1)Initial- данный оператор используется для задания последовательности команд, которые необходимо выполнить один раз при запуске проекта на моделирование. Обратите внимание, оператор initial не поддерживается при синтезе, а используется только при моделировании. Синтаксис:
1 2 3 4 5 6 | initial begin … // операторы (выполняются последовательно) … Еnd |
Операторы, расположенные между конструкцией begin и end выполняются только один раз при запуске программы на моделирование. Позволяют задать исходное состояние устройства.
2) Оператор always - один из основных, эффективных операторов языка Verilog. Позволяет задать постоянное выполнение последовательности команд. Указанная последовательность может выполняться либо циклически (в бесконечном цикле), либо только после появления определенного события.
Синтаксис: always @ (…events…)
begin
…
end
Данный оператор применяется тогда, когда возникает необходимость последовательного выполнения команд. Для этого, после ключевого слова always, следует последовательность операторов, заключенных в блок begin/end. Все команды, расположенные внутри такого блока, выполняются последовательно, а сами операторы always – параллельно.
|
|
3) Оператор assign - используется для непрерывного присвоения сигнала переменной типа wire. Синтаксис: assign var = expression;
При изменении выражения expression (например, изменилось значение переменной, входящей в expression), вычисляется новое значение выражения и результат присваивается переменной var. В левой части выражения переменная может быть только типа wire, а в правой части – возможна комбинация переменных wire, reg, integer. Все операторы assign в модуле выполняются параллельно.
4) Конкатенация
Операция конкатенации является одной из наиболее удобных и мощных операций в языке Verilog. Суть ее заключается в слиянии нескольких переменных в единое целое, единую переменную, с которой можно производить любые другие операции. Операция конкатенации обладает наивысшим приоритетом по сравнению с любой другой операцией вне символов конкатенации ({}), но операции, заключенные внутри фигурных скобок имеют еще больший приоритет. Операция конкатенации недопустима с вещественными числами. Синтаксис операции:
{<expr_1>, <expr_2>,…<expr_n>};
Операция может содержать несколько повторяющихся элементов, для сокращения записи используют множитель, который указывает сколько раз повторяется данный элемент:
|
|
{4{w}} эквивалентно {w, w, w, w}.
34.Напишите синтаксис оператора проверки условия if…else и оператора выбора case
Для реализации сложных функциональных моделей Verilog содержит стандартные алгоритмические конструкции, такие как оператор ветвления, выбора, циклы и т.д.
Оператор If. Условный оператор предназначен для организации ветвящихся структур в поведенческих блоках (always и initial). Его синтаксис представлен ниже:
if Логическое_Выражение
begin // Блок_операторов_1
end
else
begin // Блок_операторов_2
End
Если Логическое_Выражение равно «ИСТИНА», то выполняется Блок_операторов_1, в противном случае – выполняется Блок_операторов_2. Следует помнить, что в языке Verilog, подобно языку Си, логическое значение «ИСТИНА» соответствует 1, а лог.значение «ЛОЖЬ» соответствует 0.
Оператор Case. Case легче воспринимается при чтении, по сравнению с более громоздкими конструкциями if… else. Синтаксис оператора выбора case в языке Verilog представлен ниже:
case (Выражение)
Альтернатива1: Оператор1;
Альтернатива2: Оператор2;
Альтернатива3: Оператор3; . . .
default: Оператор_по_умолчанию;
endcase;
Все Операторы могут представлять собой как простые единичные операторы, так и сложные операторы (последовательности простых операторов, заключенные в операторные скобки begin ... end или fork ... join). Альтернативы могут включать несколько значений того же типа данных, что и Выражение, перечисленных через запятую. При выполнении оператора выбора case производится сравнение Выражения с Альтернативами в порядке их следования. Для первой встретившейся Альтернативы, включающей значение, совпадающее со значением Выражения, выполняется соответствующий оператор или блок операторов, а последующие альтернативы при этом игнорируются. Если Выражение не входит ни в одну из Альтернатив, то выполняется Оператор_по_умолчанию.
Дата добавления: 2018-06-01; просмотров: 588; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!