Перечислите и опишите коротко лексические элементы 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!