logo
Работа с графическим редактором Quartus II

Логические операторы

В таблице 5 приведены логические операторы для булевых выражений.

Таблица 5.

Оператор:

Пример:

Описание:

!

! х

Инверсия (префиксное

обращение)

NOT

NOT х

&

х1 & х2

Логическое И

AND

х1 AND х2

! &

a [3.1]! & b [5.3]

И-НЕ

NAND

a [3.1] NAND b [5.3]

#

х1 # х2

Логическое ИЛИ

OR

х1 OR х2

! #

c [8.5]! # d [7.4]

ИЛИ-НЕ

NOR

c [8.5] NORd [7.4]

$

х1 $ х2

Исключающее ИЛИ

XOR

х1 XOR х2

! $

x2! $ x4

Инверсия исключающего ИЛИ

XNOR

x2 XNOR x4

Каждый оператор представляет собой логический вентиль с двумя входами; исключение составляет оператор NOT, являющийся префиксным инвертором. Для записи логического оператора можно использовать его имя или символ.

Выражения, в которых используются эти операторы, интерпретируются по-разному в зависимости оттого, что представляют собой операнды: одиночные узлы (вершины), группы или числа. Кроме того, выражения с оператором NOT интерпретируются не так как другие логические операторы.

Реализация проекта цифровой схемы в текстовом редакторе Quartus II.

Рассмотрим работу с текстовым редактором Quartus II на примере реализации булевой функции: .

Шаг 1.

Создаем проект как в Задании №1, выбирая при этом другое имя проекта, например: lab21. qpf. Чтобы создать новый файл, принадлежащий проекту, выбираем пункт меню FileNew.

Шаг 2.

Нужно создать файл, описывающий устройство в текстовом редакторе. Выбираем Design FileAHDL File.

Шаг 3.

Сохраняем новый файл под именем lab21. bdf.

Шаг 4.

Описание булевой функции на языке AHDL.

Шаг 5.

Прежде чем делать симуляцию нужно откомпилировать проект. Выбираем пункты меню ProcessingStart Compilation (или выбрать на панели инструментов кнопку Start Compilation).

Шаг 6.

Создадим файл для симуляции. В нем можно будет описывать входные сигналы и задавать выходные сигналы. Выбираем пункт меню FileNew и затем в появившемся диалоге VerificationDebugging Files University Program VWF (Vector Waveform File).

Шаг 7.

Надо выбрать элементы, которые будем смотреть и которые будем определять. Клик правой клавиши мыши на левой панели Names и в выпадающем меню выбираем пукнт InsertInsert Node or Bus.

Шаг 8.

Появилось диалоговое окно. В нем можно набрать имя выхода какого-нибудь сигнала или элемента. Полное имя сигнала может быть очень длинным и не всегда понятным. Поэтому лучше воспользоваться поиском сигнала в проекте. Нажимаем кнопку Node Finder.

Шаг 9.

Появляется диалоговое окно для поиска сигналов в проекте Node Finder. В поле Look указано имя нашего проекта - в нем будет поиск сигнала. Здесь ничего менять не нужно. В поле Named можно задать часть имени сигнала или провода. Например, надо найти выход модуля с именем data, но в проекте несколько модулей с выходами/входами с таким именем. Тогда для поиска в этом поле Named нужно указать *data*. Потом нажать кнопку List (произвести поиск) и в таблице Nodes Found будет показан список всех модулей содержащих такой сигнал. Если указать просто *, то это значит, что будут отображены вообще все сигналы, не зависимо от имени. Еще важное поле - Filter. Здесь из списка можно выбрать тип сигналов для поиска. Выбираем сейчас Pins: All - то есть физические входы и выходы микросхемы. Нажимаем кнопку List и видим список входов и выходов.

Шаг 10.

Выбираем все нужные сигналы слева в таблице найденных сигналов Nodes Found и переносим их вправо в таблицу выбранных сигналов Selected Nodes. Нажимаем кнопку "OK".

Шаг 11.

Прежде чем редактировать сами сигналы нужно задать временную сетку (для удобства кратную 2). Для этого надо зайти в пункт меню EditGrid Size или нажать на панели инструментов кнопку Count Value.

Шаг 12.

Запускаем симулятор из пункта меню ProcessingRun Functional Simulation (или на панели инструментов выбрать кнопку Run Functional Simulation).

Шаг 13.

Результат моделирования работы схемы в сигнальном редакторе.