ПТСиПЦУвСБ/Практическая работа 1
Материал из Wiki
Лекции ПТСиПЦУвСБ
Лекции
Практические
- Практическая работа 1
- Практическая работа 2
- Практическая работа 3
- Практическая работа 4
Тесты
Лабораторные
Доп. материалы
Сроки выполнения работы:
Общие требования к выполнению
- Сформулировать задачу: определить имена и разрядность входов и выходов, записать таблицу истинности (можно в сокращенной записи) или в виде системы функций
- В интерфейсе блока (entity) необходимо использовать типы std_logic и std_logic_vector
- внутри блока допускается использование типов std_logic, std_logic_vector, integer, natural, unsigned, signed.
- Нарисовать принципиальную схему на уровне базовых цифровых элементов (логические элементы; комбинационный блок, реализующий заданную таблицу истинности; де-/шифраторы; де-/мультиплексоры; двоичный одноразрядный сумматор и др.)
- Разработать VHDL модель устройства и составить тестбенч для проверки модели с помощью моделирования
- Подготовить отчет, включающий описание входов/выходов, таблицу истинности (или дугой вид описания выполняемых функций), принципиальную схему, VHDL модель, тесбенч и временные диаграммы.
Как выполнять задания можно найти в книге Д. Уэйкерли Пректирование цифровых устройств. В 2-х томах — М., 2002 Т. 1-2. — 544 с.
Задания
Задание 1. Счетчик числа единиц и определение четности
- разрядность входного вектора 8 бит
- выходы
- число (сумма) единиц в векторе
- четность числа (суммы) единиц
Разрядность и кодировку выходов нужно определить самостоятельно.
Задание 2. Преобразование двоичного 8-ми разрядного числа (от 0 до 128) в дополнительный код (8 бит)
Необходимо преобразовать положительные числа (от 0 до 128) в отрицательные числа, заданные в дополнительном коде.
Задание 3. Преобразователь из двоичного кода в код Грея 8-ми разрядного числа
Задание 4. Преобразователь из кода Грея в двоичный код 8-ми разрядного числа
Задание 5. Преобразователь 8-ми разрядного числа из двоичного кода в двоично-десятичный код
- для описания поведения удобно воспользоваться типом unsigned из библиотеки numeric_std. Ознакомиться с функциями пакета можно тут.
Задание 6. Преобразователь числа из двоично-десятичного кода в двоичный 8-ми разрядный код
- Входные числа от 0 до 255 (представленные в двоично-десятичном коде)
Задание 7. Шифратор двоичного кода (8-ми разрядного числа) в код семисегментного индикатора (2х позиционного) с отображением в шестнадцатеричном виде
Задание 8. Приоритетный полный шифратор 16 в 4
- приоритет от старших к младшим разрядам (кодам)
- входы: 16 бит
- выходы:
- двоичный код 4 бита
- индикатор отсутствия кода на входе
Задание 8A. Приоритетный полный шифратор 16 в 4 (в код Грея)
- приоритет от старших к младшим разрядам (кодам)
- входы: 16 бит
- выходы:
- код Грея: 4 бита
- индикатор отсутствия кода на входе
Задание 9. Двойной приоритетный шифратор 16 в 4
- входы: 16 бит
- выходы:
- код разряда 1го приоритета
- код разряда 2го приоритета
- индикатор отсутствия кода на входе
Задание 10. Шифратор двоичного кода (8-ми разрядного числа) в код семисегментного индикатора (3х позиционного) с отображением в десятичном виде
- для описания поведения удобно воспользоваться типом unsigned из библиотеки numeric_std. Ознакомиться с функциями пакета можно тут.
Задание 11. Преобразование (шифратор) двоичного числа в формат с плавающей точкой
- входное число 16 бит
- выходное число в формате M*2E
- мантиса (M) 8 бит
- степень (E) 3 бита
- остаток 8 бит
Задание 12. Блок выполнения сдвигов
- Входы:
- Входной вектор: 16 бит
- Входной перенос: 1 бит - используется при логическом сдвиге (задвигается в вектор)
- входы управление видом операции (арифметический, логический, циклический сдвиг и 2 направления сдвига) - всего 6 операций
- входы, задающие величину сдвига (задание от 0 до 15 бит)
- Выход данных
Задание 13. Компаратор
- сравнить два 8-ми разрядных двоичных числа с учетом знака (числа кодируются в дополнительном коде), определив три выхода:
- A > B
- A < B
- A = B
- A = B с учетом дополнительного входа, задающего 8-разрядную маску. Установленные биты в маске задают биты, которые будут игнорироваться при сравнении A = B.
Задание 14. Сумматор в двоично-десятичном коде
- Входы: два числа от 0 до 255.
Задание 15. АЛУ
- Входы:
- два числа от 0 до 255.
- задание операции: сумма, разность, логическое И, ИЛИ, исключающее ИЛИ, сдвиг (логический, арифметический, циклически + 2 направления для каждого; число разрядов для сдвига задаётся вторым вторым аргументом), установка бита (разряд задается вторым числом), сброс бита (разряд задается вторым числом).
- Выходы:
- результат операции
- перенос
- флаг Zero - выставляется когда результат операции равен 0.
- для операций суммы и разности можно использовать функции пакета numeric_std
Дополнительная литература
- описаны разные виды двоичных кодов и даны примеры построения преобразователей кодов:
- Бойт К. Цифровая электроника. – Техносфера, 2007, 472 с.
- Зубчук В. И. и др. Справочник по цифровой схемотехнике. – Приведены схемные реализации цифровых интегральных микросхем (ИМС) комбинационного (шифраторы, дешифраторы, преобразователи кодов, мультиплексоры, демуль-типлексоры, сумматоры, компараторы)