ЛР4 > Арифметические устройства и перемножители

Содержание: Реализация умножителя и других арифметических устройств на Verilog и средствами мегафункций Quartus II

Теоретические сведения 

    Арифметические устройства являются важной составной частью различного рода вычислителей. Они предназначены для выполнения математических действий сложения, вычитания и умножения над входными числами. Реализовать такие устройства можно различными способами – описанием их архитектуры на одном из HDL языков (структурное описание), описания принципа работы с использованием арифметических операций языка HDL (поведенческое описание) или использую библиотечные модули, входящие в состав САПР Quartus II. 

Задание 1 

   С помощью арифметических операций языка Verilog создайте устройство, выполняющее математические операции сложения и вычитания над двумя 8-разрядными числами. Структурная схема такого устройства показана на рисунке 1. 

Рисунок 1. Структурная схема арифметического устройства.

 

1. Создайте проект, реализующий арифметическое устройство. В качестве используемой микросхемы укажите EP2C35F672C6 семейства Cyclone II.

2. Для подачи входных чисел А и В используйте переключатели SW15 – SW8 и SW7 – SW0, соответственно. Для визуализации входных данных используйте семисегментные индикаторы НЕХ7-НЕХ6 и НЕХ5-НЕХ4.

3. Используйте кнопку KEY0 для подачи входного сигнала установки в исходное состояние (RESET), а кнопку KEY1 – для подачи входного тактового сигнала (Clock).

4. Выбор арифметической операции (сложение или вычитание) определяется положением переключателя SW16.

5. Для индикации результата (сигнал S) используйте семисегментные индикаторы НЕХ1-НЕХ0. Для индикации сигнала переполнения (Overflow) – светодиод LEDG8.

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

7. Оцените используемые ресурсы ПЛИС и быстродействие устройства с помощью отчета компилятора и редактора топологии кристалла (Floorplane Editor).

 

Задание 2

 

1. Создайте новый проект, реализующий арифметическое устройство, соответствующее заданию 1, используя библиотечную функцию LPM_ADD_SUB (как показано на рисунке 2).

 

 Рисунок 2. Использование библиотечной функции LPM_ADD_SUB.

 

2. Все настройки для входных сигналов сделайте аналогично заданию 1.

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

4. Оцените используемые ресурсы ПЛИС и быстродействие устройства с помощью отчета компилятора и редактора топологии кристалла (Floorplane Editor) и сравните их с результатами, полученными в задании 1. 

Задание 3 

    Пример выполнения операции умножения двух 4-разрядных чисел в двоичном виде показан на рисунке 3. На рисунке 4 показана структурная схема реализации такого перемножителя. Он состоит из логических элементов «И» и полных одноразрядных сумматоров (FA).

 

Рисунок 3. Операция умножения двух 4-разрядных чисел

 

Рисунок 4. Структурная схема перемножителя двух 4-разрядных чисел

 

1. Создайте новый проект, реализующий данный перемножитель. В качестве используемой микросхемы укажите EP2C35F672C6 семейства Cyclone II.

2. Для подачи множителя А используйте переключатели SW11-SW8, для подачи множителя В используйте переключатели SW3-SW0. Для индикации входных значений используйте семисегментные индикаторы НЕХ6 и НЕХ4, соответственно.

3. Результат операции умножения (Р) выводите на семисегментные индикаторы НЕХ1 и НЕХ0.

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

Задание 4

 

1. Создайте новый проект, реализующий перемножитель двух 8-разрядных чисел с помощью библиотечной функции LPM_MULT. В качестве используемой микросхемы укажите EP2C35F672C6 семейства Cyclone II.

2. Самостоятельно определите необходимые элементы для подачи входных сигналов и визуализации результата.

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

Задание для самостоятельной работы 

    Создайте устройство, реализующее операцию умножения с накоплением для четырех 4-разрядных чисел.

            

    Реализуйте данное устройство несколькими способами – с помощью арифметических операций языка Verilog, используя совместно библиотечные функции LPM_MULT и LPM_ADD_SUB и с помощью библиотечной функции ALTMULT_ACCUM (MAC). Какой из вариантов реализации оказался наиболее оптимальным? Почему?