|
Применение процедурных операторовВведение
Цель работы – освоение технологии подготовки проектов комбинационных и последовательностных устройств на основе процедурных операторов initial и always c использованием операторов case и if. Необходимые сведения Кроме операторов if.. else и for (см. лаб. работа № 5) внутри процедурных операторов могут применяться также следующие операторы: - case (выражение) конст. а: оператор или блок операторов конст. b, конст. c: оператор или блок операторов ... default: оператор или блок операторов endcase – сравнивает результат выражения в круглых скобках с константами а, в, с и т. д. и выполняет оператор или блок операторов, следующий за первой константой, совпадающей с результатом выражения; если не произошло ни одного совпадения с константами, выполняет оператор или блок операторов, следующий за необязательным вариантом default; - casez – версия оператора case, в которой может быть использовано внутри выражения или константы логическое значение z (значение безразлично) (вместо z возможно применение символа?); - casex – версия оператора case, в которой могут быть использованы внутри выражения или константы логические значения z и x (значение z может быть также представлено символом?); - while (выражение) оператор или блок операторов – циклически выполняет оператор или блок операторов пока выражение в круглых скобках - ИСТИННО; выражение вычисляется вначале каждой итерации; - repeat (число) оператор или блок операторов – циклически выполняет оператор или блок операторов, количество итераций определяется числом в круглых скобках, вместо числа может быть выражение, значение которого вычисляется один раз, вначале цикла; - forever оператор или блок операторов – бесконечно повторяет выполнение оператора или блока операторов; - disable – прерывает выполнение именованного блока операторов. Кроме блочного оператора begin.. end для моделирования устройств может быть использован еще один блочный оператор: - fork.. join – группирует операторы в блок параллельно, т. е. операторы внутри блока выполняются одновременно, а все установленные задержки отсчитываются от начала выполнения блока; не является синтезируемым оператором, применяется для моделирования. Задание
1. На языке Verilog в пакете ModelSim с использованием процедурного оператора always и управляющего оператора case создать проект комбинационного устройства, представляющего собой дешифратор для 7-сегментного индикатора с 3-разрядным входом, позволяющий отображать 7 различных символов. Вариант дешифратора выбирается по указанию преподавателя (см. табл. 6.1). Дешифратор должен содержать следующие порты: - y[2:0] - входной трехразрядный порт для двоичного кода символа; - f[6:0] - выходной 7-разрядный порт, подключаемый к входам 7-сегментного индикатора (см. рис. 6.1). Для высвечивания отдельного сегмента индикатора необходимо вывести логический нуль в бит выходного порта, подключенный к этому сегменту.
Таблица 6.1. Варианты дешифраторов
2. Подготовить испытательный файл для разработанного дешифратора, откомпилировать файлы проекта и промоделировав проект, убедиться в работоспособности устройства или выявить имеющиеся ошибки.
Рис. 6.1. Подключение портов к 7-сегментному индикатору
3. Создать на языке Verilog в пакете ModelSim суммирующий двоичный счетчик с модулем счета 7. В проекте использовать процедурный оператор always, управляющий оператор if и выражение с арифметической операцией сложения (см. лабораторная работа № 4 [2]). Счетчик должен быть снабжен следующими входами и выходами: - clk - вход синхронизации (счетчик должен инкрементировать текущее значение двоичного кода на выходе q[2:0] по каждому положительному фронту импульсов clk); - ena - вход разрешения счета (1 - счет разрешен; 0 - счетчик хранит на выходе q[2:0] последнее значение); - q[2:0] - выходные двоичные данные счетчика (при начале счета с нуля на восьмом импульсе clk выход q[2:0] обнуляется, и со следующим импульсом счет начинается сначала). 4. Подготовить испытательный файл для разработанного счетчика, откомпилировать файлы проекта и промоделировав проект, убедиться в работоспособности устройства или выявить имеющиеся ошибки. 5. Подготовить отчет. Отчет должен содержать листинги всех конструкторских файлов (на языке Verilog) и рисунки с временными диаграммами по каждому варианту реализации устройств.
Контрольные вопросы
1. Перечислите все операции процедурного присваивания и отметьте их особенности. 2. Каким образом обеспечить реагирование оператора always на положительный и отрицательный фронты синхросигнала? 3. Какие элементы списка реагирования оператора always следует использовать для построения комбинационных устройств, а какие для последовательностных? Почему? 4. Перечислите все операторы цикла языка Verilog и отметьте их особенности. 5. Опишите два способа задания изменения во времени сигнала синхронизации в испытательном файле (с использованием оператора цикла и без него). 7. Для каких целей блочный оператор можно снабжать именем? 8. В каких случаях в процедурных операторах следует применять операцию блокирующего процедурного присваивания, а в каких не блокирующего? 9. Что такое комбинационное цифровое устройство? 10. Что такое последовательностное цифровое устройство? 11. Управляющие операторы case, casez и casex. 12. Управляющие операторы while, repeat и forever. 13. Управляющий оператор disable.
Лабораторная работа № 7 Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом... ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|