|
Методические указания по выполнению лабораторных работ для студентов вечернего и заочного отделений
Пример выполнения Варианта №1 1. Составим таблицу перекодировки состояний автомата и их двоичный код (таблица 2).
2. Подставляем новые значения в граф состояний (рис.2.2).
3. Составим таблицу истинности автомата (таблица 3).
4. После получения таблицы истинности автомата создается функциональная схема в САПР Max+Plus II без минимизации (рис.2.3).
5. Временные диаграммы для этого варианта после компиляции проекта приведены на рис.2.4.
Таблица 2
Таблица перекодировки состояний автомата и их двоичный код
№ состояния
| № состояния из табл.1
| Двоичный код
q3,q2,q1,q0
| 0
| 0
| 0000
| 1
| 3
| 0011
| 2
| 11
| 1011
| 3
| 12
| 1100
| 4
| 1
| 0001
| 5
| 9
| 1001
| 6
| 2
| 0010
| 7
| 14
| 1110
| 8
| 8
| 1000
| 9
| 7
| 0111
| 10
| 6
| 0110
| 11
| 4
| 0100
| 12
| 13
| 1101
| 13
| 10
| 1010
| 14
| 15
| 1111
| 15
| 5
| 0101
|
Рис.2.2. Граф полученный с учетом таблицы перекодировки
Таблица 3
Таблица истинности автомата
старое состояние
| условие
| новое состояние
| №
| код
|
| №
| Код
| 0
| 0000
| -
| 3
| 0011
| 3
| 0011
| A=0
| 8
| 1000
| 3
| 0011
| A=1
| 11
| 1011
| 8
| 1000
| -
| 7
| 0111
| 7
| 0111
| -
| 6
| 0110
| 6
| 0110
| B=0
| 13
| 1101
| 6
| 0110
| B=1
| 4
| 0100
| 13
| 1101
| -
| 14
| 1110
| 14
| 1110
| -
| 10
| 1010
| 10
| 1010
| -
| 15
| 1111
| 15
| 1111
| -
| 5
| 0101
| 5
| 0101
| -
| 0
| 0000
| 11
| 1011
| -
| 12
| 1100
| 12
| 1100
| B=0
| 1
| 0001
| 12
| 1100
| B=1
| 9
| 1001
| 1
| 0001
| -
| 2
| 0010
| 2
| 0010
| -
| 14
| 1110
| 4
| 0100
| -
| 14
| 1110
| 9
| 1001
| -
| 2
| 0010
| Р ис. 2.3. Функциональная схема без минимизации
Рис. 2.4. Временные диаграммы
Приложение А
Параметрические элементы САПР MAX+PLUS II Counter
Входные выводы
| Имя вывода
| Описание
| 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 высок. Если введенное значение больше чем , поведение счетчика - неопределенный (X) логический уровень, где - LPM_MODULUS. Параметр ограничен значением в 32 бита.
| LPM_SVALUE
| Постоянное значение, которое загружается по переднему фронту тактовых импульсов, когда sset или sconst высок. Должен Использоваться, если sconst используется.
| LPM_HINT
| Позволяет определять специфические Altera-параметры в файлах проекта VHDL.
| LPM_TYPE
| Идентифицирует LPM имя файлах проекта VHDL
|
Multiplier
Входные выводы
| Имя вывода
| Описание
| dataa[]
| Множимое
| datab[]
| Множитель
| sum[]
| Частичная сумма
| clock
| Вход тактовых импульсов
| clken
| Разрешение использования тактового входа
| aclr
| Асинхронный сброс
| Выходные выводы
| Имя вывода
| Описание
| result[]
| result = dataa[] * datab[] + sum. The product
LSB is aligned with the sum LSB.
|
Параметры
| Параметр
| Описание
| LPM_WIDTHA
| Разрядность dataa[ ].
| LPM_WIDTHB
| Разрядность datab[ ].
| LPM_WIDTHP
| Разрядность result[ ].
| LPM_WIDTHS
| Разрядность sum[ ]. Обязателен, даже если порт суммы не используется.
| LPM_ REPRESENTATION
| Тип выполняемого сравнения “SIGNED”, ”UNSIGNED”, “UNUSED”. Если значение не указанно, то по умолчанию устанавливается ”UNSIGNED”
| LPM_HINT
| Позволяет определять специфические Altera-параметры в файлах проекта VHDL.
| LPM_TYPE
| Идентифицирует LPM имя файлах проекта VHDL
| INPUT_A_IS_CONSTANT
| Altera параметр. Принимает значения "YES", "NO", и "UNUSED". Если dataa [] связан с постоянным значением, устанавливая INPUT_A_IS_CONSTANT "YES" оптимизирует multiplierпо использованию ресурсов и скорости. Если опущено, значение по умолчанию - "NO".
| INPUT_B_IS_CONSTANT
| Altera параметр. Принимает значения "YES", "NO", и "UNUSED". Если datab [] связан с постоянным значением, устанавливая INPUT_B_IS_CONSTANT "YES" оптимизирует multiplierпо использованию ресурсов и скорости. Значение по умолчанию - "NO".
| USE_EAB
| Altera параметр. Принимает значения "ON", "OFF", и "UNUSED". Устанавливая параметр USE_EAB "ON" позволяет MAX+PLUS II использовать блоки дополнительных атрибутов, чтобы использовать 4 x 4 или (8 x значение константы) стандартные блоки в ACEX1К и FLEX10К устройствах.
| LATENCY
| Altera параметр. То же, что и LPM_PIPELINE. Параметр обеспечивает совместимости с MAX+PLUS II проектами версии ниже 7.0. Для всех новых проектов, используется параметр LPM_PIPELINE
| MAXIMIZE_SPEED
| Altera параметр. Возможные значения от 0 до 10. Если параметр используется то MAX+PLUS II пытается оптимизировать данную функцию lpm_mult для скорости, а не для уменьшения занимаемой области, и отменяет установку опции Optimize в диалоговом окне Global Project Logic Synthesis (меню Assign). Если MAXIMIZE_SPEED не использован, значение опции Optimize используется вместо него. Если установлено MAXIMIZE_SPEED - 6 или выше, компилятор оптимизирует мегафункции lpm_mult для более высокой скорости; если установлено - 5 или меньше, компилятор оптимизирует для уменьшения занимаемой области.
|
Comparator
Входные выводы
| Имя вывода
| Описание
| dataa[]
| datab[] сравнивается с этим значением
| datab[]
| Значение с которым сравнивается dataа[]
| clock
| Вход тактовых импульсов
| clken
| Разрешение использования тактового входа
| aclr
| Асинхронный сброс
| Выходные выводы
| Имя вывода
| Описание
| alb
| “High” (1) если dataa[] < datab[]
| aeb
| “High” (1) если dataa[] == datab[]
| agb
| “High” (1) если dataa[] > datab[]
| ageb
| “High” (1) если dataa[] >= datab[]
| aneb
| “High” (1) если dataa[] != datab[]
| aleb
| “High” (1) если dataa[] <= datab[]
|
Параметры
| Параметр
| Описание
| LPM_WIDTH
| Разрядность входов dataa[] и datab[]
| LPM_REPRESENTATION
| Тип выполняемого сравнения “SIGNED”, ”UNSIGNED”, “UNUSED”. Если значение не указанно, то по умолчанию устанавливается ”UNSIGNED”
| LPM_PIPELINE
|
| LPM_HINT
| Позволяет определять специфические Altera-параметры в файлах проекта VHDL.
| LPM_TYPE
| Идентифицирует LPM имя файлах проекта VHDL
| CHAIN_SIZE
|
| ONE_INPUT_IS_CONSTANT
| Специфический Altera - параметр. Принимает значения "YES", "NO", или "UNUSED". Обеспечивает большую оптимизацию, если один из входов постоянен. По умолчанию - "NO".
|
Adder Subtractor
Входные выводы
| Имя вывода
| Описание
| dataa[]
| Первое слагаемое/ Уменьшаемое
| datab[]
| Слагаемое/ Вычитаемое
| add_sub
| Если “1” (high), операция = dataa[]+datab[] +cin. Если “0” (low), операция = dataa[]- datab[] +cin-1
| clock
| Вход тактовых импульсов
| clken
| Разрешение использования тактового входа
| aclr
| Асинхронный сброс
|
Выходные выводы
| Имя вывода
| Описание
| result[]
| dataa[] +datab[] +cin или
dataa[] -datab[] +cin-1.
| cout
| Обнаруживает переполнения в операциях "UNSIGNED".
| overflow
| Результат превышает доступную точность
|
Параметры
| Параметр
| Описание
| LPM_WIDTH
| Разрядность входов dataa[],datab[],result[]
| LPM_DIRECTION
| Значения - "ADD", "SUB", и "UNUSED". Если не указано, значение по умолчанию "DEFAULT", в этом случае используется значение add_sub порта. Add_sub порт не может использоваться, если используется LPM_DIRECTION.
| LPM_REPRESENTATION
| Тип выполняемого сравнения “SIGNED”, ”UNSIGNED”, “UNUSED”. Если значение не указанно, то по умолчанию устанавливается ”UNSIGNED”
| LPM_HINT
| Позволяет определять специфические Altera-параметры в файлах проекта VHDL.
| LPM_TYPE
| Идентифицирует LPM имя файлах проекта VHDL
| ONE_INPUT_IS_CONSTANT
| Altera параметр. Принимает значения "YES", "NO", и "UNUSED". Обеспечивает большую оптимизацию, если один вход постоянный. Если не указано, значение по умолчанию - "NO"
| MAXIMIZE_SPEED
| Altera параметр. Возможные значения от 0 до 10. Если параметр используется то MAX+PLUS II пытается оптимизировать данную функцию lpm_mult для скорости, а не для уменьшения занимаемой области, и отменяет установку опции Optimize в диалоговом окне Global Project Logic Synthesis (меню Assign). Если MAXIMIZE_SPEED не использован, значение опции Optimize используется вместо него. Если установлено MAXIMIZE_SPEED – 6 или выше, компилятор оптимизирует мегафункции lpm_mult для более высокой скорости; если установлено - 5 или меньше, компилятор оптимизирует для уменьшения занимаемой области.
|
Absolute Value
Входные выводы
| Имя вывода
| Описание
| data []
| Число со знаком
|
Выходные выводы
| Имя вывода
| Описание
| result[]
| Абсолютное значение data [] .
| overflow
|
|
| Параметры
| Параметр
| Описание
| LPM_WIDTHА
| Разрядность data [] и result[]
| LPM_HINT
| Позволяет определять специфические Altera-параметры в файлах проекта VHDL.
| LPM_TYPE
| Идентифицирует LPM имя файлах проекта VHDL
|
Divider Входные выводы
| Имя вывода
| Имя вывода
| numer[]
| Числитель
| denom[]
| Знаменатель
| clock
| Вход тактовых импульсов
| clken
| Разрешение использования тактового входа
| aclr
| Асинхронный сброс
| Выходные выводы
| Имя вывода
| Описание
| quotient[]
| Частное
| remain[]
| Остаток
|
Параметры
| Параметр
| Описание
| LPM_WIDTHN
| Разрядность numer[] и quotient[].
| LPM_WIDTHD
| Разрядность denom[] и remain[].
| LPM_NREPRESENTATION
| Определяет параметр числителя “SIGNED” или “UNSIGNED” Сейчас поддерживается только “UNSIGNED”.
| LPM_DREPRESENTATION
| Определяет параметр знаменателя “SIGNED” или “UNSIGNED” Сейчас поддерживается только “UNSIGNED”
| LPM_HINT
| Позволяет определять специфические Altera-параметры в файлах проекта VHDL.
| LPM_TYPE
| Идентифицирует LPM имя файлах проекта VHDL
|
Библиографический список 1. Соловьев В. В. Проектирование цифровых систем на основе программируемых логических интегральных схем. – М.: Горячая линия - Телеком, 2001. – 636 с.
2. Стешенко В. ПЛИС фирмы ALTERA: проектирование устройств обработки сигналов - М.: Додека, 2000. – 128 с.
3. Стешенко В. ПЛИС фирмы ALTERA: элементная база, система проектирования и языки описания аппаратуры - М.: Додека, 2002. – 576 с.
4. Антонов А.П. Язык описания цифровых устройств AlteraHDL: Практический курс. – М.: ИП «Радиософт», 2001. – 224 с.
5. Пухальский Г.И., Новосельцева Т.Я. Цифровые устройства: учебное пособие для втузов. СПб.: «Политехника», 1996. 885 с.
Литературный редактор Подписано в печать 00.00.2006. Формат 60х84 1/16.
Бумага офсетная. Печать офсетная.
Усл. печ. л.0,00 Усл. кр.-отт. 0,00. Уч.-изд. л. 0,0.
Тираж 000 экз. Заказ 000 Государственное образовательное учреждение высшего профессионального образования “Московский государственный институт радиотехники, электроники и автоматики (технический университет)”
119454, Москва, пр. Вернадского, 78 |
|
|