Ответы на контрольные вопросы к лабораторной работе №1 (1084031), страница 2
Текст из файла (страница 2)
Элементы языка AHDL.
Зарезервированные ключевые слова.
Зарезервированные ключевые слова используются для следующих целей: для обозначения начала, конца и переходов в объявлениях языка AHDL; для обозначения предопределенных констант, т.е. GND и VCC. Ключевые слова можно использовать, как символические имена, только если они заключены в символы одинарных кавычках ('). Их можно также использовать в комментариях.
В языке AHDL есть три типа имен:
Символические имена – это определяемые пользователем идентификаторы. Они используются для обозначения следующих частей TDF:
-
внутренних и внешних узлов (вершин);
-
констант;
-
переменных цифрового автомата, битов состояний, имен состояний;
-
примеров (Instance).
Имена подпроекта (модуля) - это определяемые пользователем имена для файлов проекта более низкого уровня. Имя подпроекта должно быть таким же, как имя файла TDF.
Имена портов - это символические имена, идентифицирующие вход или выход примитива или макрофункции.
В файле .fit проекта могут появиться генерируемые компилятором имена выводов, с символом “тильда” (~). Этот символ зарезервирован для имен, генерируемых компилятором, пользователю запрещается его использовать для обозначения имен выводов, узлов (вершин), групп (шин). Существуют две формы записи для всех трех типов имен (символических, подпроекта и портов): в кавычках (') и без кавычек.
Числа в языке AHDL
В языке AHDL можно использовать десятичные, двоичные, восьмеричные и шестнадцатеричные числа в любой комбинации. В таблице 3.4 приведен синтаксис записи чисел в языке AHDL для каждой системы счисления.
Булевы выражения
Булевы выражения состоят из операндов, разделенных логическими и арифметическими операторами и компараторами и (необязательно) сгруппированных с помощью круглых скобок. Выражения используются в булевых уравнениях, а также в других конструкциях языка, таких как операторы Case и If.
Существуют следующие применения булевых выражений:
-
Операнд.
-
Встроенная в текст (in-line) ссылка (reference) на примитив или макрофункцию.
-
Префиксный оператор (! или -), примененный к булеву выражению.
-
Два булевых выражения, разделенные двоичным (не префиксным) оператором.
-
Заключенное в круглые скобки булево выражение.
Результат каждого булева выражения должен иметь ту же ширину, что и узел или группа (в левой стороне уравнения), которому он, в конечном счете, присваивается.
Логические операторы
Каждый оператор представляет собой логический вентиль с двумя входами; исключение составляет оператор NOT, являющийся префиксным инвертором. Для записи логического оператора можно использовать его имя или символ.
Выражения, в которых используются эти операторы, интерпретируются по-разному в зависимости оттого, что представляют собой операнды: одиночные узлы (вершины), группы или числа. Кроме того, выражения с оператором NOT интерпретируются не так как другие логические операторы.
3.
Оператор: | Пример: | Описание: |
! | !х | Инверсия (префиксное обращение) |
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 |
ЛАБОРАТОРНАЯ РАБОТА №3
Моделирование цифровых схем с использованием параметрических элементов
1.
В параметрических элементах можно задать разрядность, необходимые управляющие сигналы и другие параметры, которые влияют на поведение и реализацию. возможность задавать параметры сильно упрощает ввод проекта.
Логические элементы (Gates):
lpm_and - элемент И
lpm_inv - элемент НЕ (инвертор)
lpm_bustri - шина с тремя состояниями
lpm_mux - мультиплексор
lpm_clshift - логический сдвиг
lpm_or - элемент ИЛИ
lpm_constant - константа
lpm_xor - Элемент исключающее ИЛИ
lpm_decode - декодер
mux - мультиплексор
busmux - мультиплексор
Арифметические компоненты:
divide* - делитель
lpm_compare - компаратор
lpm_abs - абсолютное значение
lpm_counter - счетчик
lpm_add_sub - сумматор/вычитатель
lpm_divide - делитель
lpm_mult - умножитель
Элементы памяти:
altdpram* - двухпортовое ОЗУ
lpm_latch - регистр-защелка
csfifo - FIFO
lpm_shiftreg - сдвиговый регистр
dcfifo* - Dual-Clock FIFO
lpm_ram_dp - двухпортовое ОЗУ
scfifo* - Single-Clock FIFO
lpm_ram_dq - ОЗУ с раздельным входным и выходным портом
csdpram - Cycle-Shared Dual-Port
lpm_ram_io - ОЗУ с общим входным и выходным портом
lpm_ff - Триггер
lpm_rom - ПЗУ
lpm_fifo - Single-Clock FIFO
lpm_dff* - D - триггер и сдвиговый регистр
lpm_fifo_dc - Dual-Clock FIFO
lpm_tff* - T -триггер
Другие функции:
clklock - PLL (Phase-Locked Loop)
pll - детектор фронта импульса
ntsc - генератор видеосигнала NTSC
2.
Для построения счетчиков и регистров используются синхронные триггеры, переключение которых происходит только при наличии синхронизирующего сигнала (синхроимпульса) на входе С. Наиболее часто для построения регистров и счетчиков используется D-триггер, имеющий специальный информационный вход D, и динамический вход С
Устройство, называемое счетчиком, предназначено для подсчета числа поступающих на вход сигналов (импульсов) в произвольной системе счисления. Двоичные счетчики строятся на основе триггеров, работающих в счетном режиме ( Т - триггер или счетный триггер).
С четный триггер может быть получен из универсального D - триггера путем соединения его инверсного выхода Q со входом D.
Счетный триггер и его работа
У счетного триггера состояние выхода изменяется на противоположное при поступлении на вход С каждого очередного счетного импульса.
Функциональная схема и условное графическое обозначение двоичного счетчика с коэффициентом пересчета 23
Двоичный счетчик
Диаграммы работы двоичного счетчика
Каждый поступающий на вход счетчика импульс перебрасывает первый триггер в противоположное состояние (рис. 1.4). Сигнал с инверсного выхода предыдущего триггера является входным сигналом для последующего и, таким образом, комбинация сигналов на выходах Q1, Q2, Q3 будет соответствовать числу поступивших на вход счетчика импульсов, представленному в двоичном коде. Счетчик данного типа называется асинхронным счетчиком.
Если на счетный вход каждого последующего триггера счетчика подавать сигнал с прямого выхода предыдущего триггера, то счетчик будет производить операцию вычитания. Счетчики, способные выполнять функции сложения и вычитания, называются реверсивными.
Для построения счетчика с требуемым коэффициентом пересчета Кс, отличным от величины 2N (N - число двоичных разрядов счетчика), используется принудительный сброс счетчика в исходное состояние при достижении счетчиком числа Кс.
3.
Входные выводы | |
Имя вывода | Описание |
data [ ] | Параллельный вход данных счетчика |
clock | Вход счетных импульсов |
clk_en | Разрешение синхронизации. |
cnt_en | Разрешение счета |
updown | Управление направлением счета (1 = сложение, 0 = вычитание) |
aclr | Асинхронный сброс входов |
aset | Асинхронная установка входов |
aload | Асинхронная загрузка входов. Установка счетчика в значение data[ ]. |
sclr | Синхронный сброс входов. Сброс счетчика следующим тактовым импульсом |
sset | Синхронная установка входов. Установка счета следующим тактовым импульсом. |
sload | Синхронная загрузка входов. Загрузка в счетчик значения data[ ] следующим тактовым импульсом. |
Выходные выводы | |||
Имя вывода | Описание | ||
q [ ] | Выход счетчика | ||
eq [15..0] | Декодированный выход счетчика. Высокий активный уровень появляется в момент, когда счетчик достигает заданного значения. | ||
cout | Перенос в старший разряд | ||
Параметры | |||
Параметр | Описание | ||
LPM_WIDTH | Разрядность счетчика или входных значений data[ ] и выходных q[ ]. | ||
LPM_DIRECTION | Может принимать значения “UP”, “DOWN” или “UNUSED”. Если этот параметр используется, то вход updown не должен быть подключен. Если вход updown не подключен, то значение LPM_DIRECTION по умолчанию – “UP” | ||
LPM_MODULS | Максимальный счет, плюс один. Число уникальных состояний в цикле счетчика. Если введенное значение больше, чем LPM_MODULUS параметр, поведение счетчика не определено. | ||
LPM_AVALUE | Постоянное значение, которое загружается, когда aset высок. Если введенное значение больше чем <modulus>, поведение счетчика - неопределенный (X) логический уровень, где <modulus> - LPM_MODULUS. Параметр ограничен значением в 32 бита. | ||
LPM_SVALUE | Постоянное значение, которое загружается по переднему фронту тактовых импульсов, когда sset или sconst высок. Должен Использоваться, если sconst используется. | ||
LPM_HINT | Позволяет определять специфические Altera-параметры в файлах проекта VHDL. | ||
LPM_TYPE | Идентифицирует LPM имя файлах проекта VHDL |
4.
Быстродействие – определяется минимальным интервалом времени между входными импульсами, при котором эти сигналы воспринимаются счетчиком как раздельные.
Максимальная частота работы счетчика определяет максимальную частоту поступления входных сигналов, при которой счетчик реагирует на каждый входной импульс, и в основном зависит от времени установления триггера младшего разряда.