Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Булевы операторы, использующие NOT



Оператор НЕ является префиксом инвертора. Поведение оператора НЕ зависит от операнда, на который он воздействует.

С оператором НЕ можно использовать три типа операндов:

 

1. Если операнд - одиночный узел, GND, или VCC, выполняется одиночная инверсия. Например, ! a означает, что сигнал проходит через инвертор.

2. Если операнд - группа узлов, то каждый член группы проходит через инвертор. Например, шина! a[4..1] интерпретируется как (! a4, ! a3, ! a2, ! a1).

3. Если операнд - число, он трактуется как двоичное число и каждый его бит инвертируется. Например, ! 9 интерпретируется как! B" 1001", то есть B" 0110".

Булевы операторы, использующие AND, NAND, OR, NOR, XOR, и XNOR

С бинарными операторами существует пять сочетаний операндов. Каждое из этих сочетаний интерпретируется различно:

 

1. Если оба операнда - одиночные узлы или константы GND и VCC, оператор выполняет логическую операцию над двумя элементами. Например, (a & b).

2. Если оба операнда - группы узлов, оператор действует на соответствующие узлы каждой группы, выполняя побитовые операции между группами. Группы должны иметь одинаковый размер. Например, (a, b, c) # (d, e, f) интерпретируется как (a # d, b # e, c # f).

3. Если один операнд - одиночный узел, GND, или VCC, а другой группа узлов, одиночный узел или константа дублируется для создания группы такого же размера как другой оператор. Затем выражение трактуется как групповая операция. Например, a & b[4..1] интерпретируется как (a & b4, a & b3, a & b2, a & b1).

4. Если оба операнда - числа, то более короткое число расширяется с учетом знака для согласования с размером другого числа и трактуется затем как групповая операция. Например, в выражении (3 # 8), 3 и 8 преобразуются в двоичные числа B" 0011" и B" 1000", соответственно. Результатом будет B" 1011".

5. Если один операнд - число, а другой узел или группа узлов, то число разделяется на биты для согласования с размером группы и выражение рассматривается как групповая операция. Например, в выражении (a, b, c) & 1, 1 преобразуется к B" 001" и выражение становится (a, b, c) & (0, 0, 1). Результатом будет (a & 0, b & 0, c & 1).

 

Выражение, которое использует VCC как операнд, интерпретируется в зависимости от выражения, которое использует 1 как операнд. Например, в первом выражении, 1 - число в знакорасширенном формате. Во втором выражении, узел VCC дублируется. Затем каждое выражение трактуется как групповая операция.

 

(a, b, c) & 1 = (0, 0, c)

(a, b, c) & VCC = (a, b, c)

Приоритеты булевых операторов и компараторов

Операнды, разделенные логическими и арифметическими операторами и компараторами вычисляются в соответствии с правилами приоритетов, приведенными ниже (приоритет 1 - наивысший). Операции одинакового приоритета оцениваются слева направо. С помощью скобок () можно менять порядок вычислений.

 

Приоритет: Оператор/Компаратор:  
- (минус)
! (НЕ)
+ (сложение)
- (вычитание)
== (равно)
! = (не равно)
< (меньше чем)
< = (меньше чем или равно)
> (больше чем)
> = (больше чем или равно)
& (И)
! & (И-НЕ)
$ (Исключающее ИЛИ)
! $ (Исключающее ИЛИ-НЕ)
# (ИЛИ)
! # (ИЛИ-НЕ)

 

Логические функции

Мегафункции/LPM

MAX+PLUS II предлагает большое разнообразие мегафункций, включая LPM функции а также параметризуемые функции. Ниже приводится список мегафункций.

 

Вентили  
lpm_and lpm_inv
lpm_bustri lpm_mux
lpm_clshift lpm_or
lpm_constant lpm_xor
lpm_decode mux
busmux  

 

 

Арифметические компоненты  
lpm_abs lpm_counter
lpm_add_sub lpm_mult
lpm_compare  

 

Запоминающие компоненты  
csfifo lpm_ram_dq
csdpram lpm_ram_io
lpm_ff lpm_rom
lpm_latch lpm_dff
lpm_shiftreg lpm_tff

 

Другие функции  
clklock pll
ntsc  

 

Функции Мегаядра  
a16450 a8255
a6402 fft
a6850 rgb2ycrcb
a8237 ycrcb2rgb
a8251  

 

Мегафункция - сложный или высокоуровневый строительный блок, который можно использовать совместно с примитивами вентилей и триггеров и/или с макрофункциями старого типа в файлах проекта.

Altera поставляет библиотеку мегафункций, включая функции из библиотеки параметризуемых модулей (LPM) версии 2.1.0, в директории \maxplus2\max2lib\mega_lpm, созданной во время инсталляции.

Для просмотра файла, содержащего логику мегафункции, укажите символ мегафункции в графическом редакторе или ее имя в текстовом редакторе и выберите Hierarchy Down (меню File).

 

Библиотека параметризуемых функций (LPM) - технологически-независимая библиотека логических функций, параметризуемая для достижения масштабируемости и адаптируемости. Altera реализовала параметризуемые модули (называемые также параметризуемые функции) из LPM в версии 2.1.0, которые предлагают архитектурно-независимый ввод проекта для всех, поддерживаемых MAX+PLUS II устройств. Компилятор включает встроенную поддержку компиляции LPM для функций, используемых во входных файлах (схемном, AHDL, VHDL, и EDIF).

 

Параметризуемая функция - логическая функция, использующая параметры для достижения масштабируемости, адаптируемости и эффективной реализации в кремнии.

 

Мегафункции Мегаядра - предварительно проверенные HDL файлы для сложных функций системного уровня, которые можно приобрести у Altera. Они оптимизированы под архитектуры FLEX 10K, FLEX 8000, FLEX 6000, MAX 9000, и MAX 7000 устройств. Мегафункции Мегаядра состоят из нескольких файлов. Файл для последующего синтеза используется для реализации проекта (подгонки) в заданном устройстве. Кроме этого прилагаются VHDL или Verilog HDL функциональные модели для проектирования и отладки со стандартными EDA средствами моделирования.

Altera поставляет библиотеку мегафункций, включая любые приобретаемые мегафункции Мегаядра в директории \maxplus2\max2lib\mega_lpm, созданной во время инсталляции.

Если Ваш код доступа для мегафункции Мегаядра содержит разрешение просмотра источника файла проекта, Вы можете просмотреть его, указывая символ мегафункции в графическом редакторе или имя в текстовом редакторе и выбирая Hierarchy Down (меню File).

Ниже приводится описание наиболее часто применяемых мегафункций. Полные сведения по всем мегафункциям можно найти в системе помощи (меню Help, команда Megafunctions/LPM).

 

lpm_and (вентиль И)

 

Altera рекомендует использовать примитивы вентилей И или их операторы вместо lpm_and для более легкой реализации и улучшения времени компиляции. Тем не менее lpm_and могут быть полезны при необходимости иметь параметризуемые входы.

 

Прототип функции

 

FUNCTION lpm_and

(data[LPM_SIZE-1..0][LPM_WIDTH-1..0])

WITH (LPM_WIDTH, LPM_SIZE)

RETURNS (result[LPM_WIDTH-1..0])

 


Порты:

 

ВХОДЫ

Имя порта Необходим Описание Комментарии
data[][] Да Вход данных в вентиль И Размер порта LPM_SIZE x LPM_WIDTH

 

ВЫХОДЫ

Имя порта Необходим Описание Комментарии
result[] Да Побитовое И. Размер порта LPM_WIDTH.

 

Параметры:

 

Параметр Тип Необходим Описание
LPM_WIDTH Целый Да Ширина портов data[][] и result[]. Количество AND вентилей.
LPM_SIZE Целый Да Количество входов в каждый AND вентиль. Количество входных шин.

 

Каждый вентиль И имеет следующую функцию:

Входы Выходы
data[LPM_SIZE-1]_[LPM_WIDTH-1] result[LPM_WIDTH-1]
0XXX...
X0XX...
XX0X...
... ...
1111...

 

Используемый ресурс:

 

Простые вентили lpm_and используют приблизительно одну логическую ячейку на вентиль.

Макрофункции

MAX+PLUS II предлагает свыше 300 макрофункций.

Имена шинных макрофункций оканчиваются на букву В. Они функционально идентичны с соответствующими не шинными макрофункциями, но имеют сгруппированные входные и/или выходные выводы.

Для просмотра схемы или AHDL файла, который содержит логику макрофункции, укажите символ макрофункции в графическом редакторе или имя макрофункции в текстовом редакторе и выберите Hierarchy Down (меню File).

 

Категории макрофункций:

 

Сумматоры Защелки

АЛУ Умножители

Буферы Мультиплексоры

Компараторы Генераторы четности

Конвертеры Быстрые умножители

Счетчики Регистры

Декодеры Сдвиговые регистры

Цифровые Регистры хранения

фильтры

EDAC SSI функции

Шифраторы Элементы ввода/вывода

Делители частоты

 

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-30; Просмотров: 994; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.033 с.)
Главная | Случайная страница | Обратная связь