Разработка АЛУ на языке VHDL
Министерство Образования Республики
Беларусь
УО "БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ"
Факультет компьютерного
проектирования
Кафедра электронной техники и
технологий
Лабораторная работа:
"Разработка АЛУ на языке
VHDL"
Выполнила: студентка гр.011801 Кружаева Т.С.
Принял: Смирнов А.В.
Минск 2013
1. Цель
работы
Овладеть знаниями и практическими навыками
по проектированию арифметико-логических устройств (АЛУ). Лабораторная работа
также служит для овладения навыками программирования и отладки описания
логических схем на языке VHDL.
2.
Теоретические сведения
Арифметико-логическое
устройство (АЛУ; arithmetic and logic unit, ALU) является комбинационной
схемой, способной выполнять целый ряд различных арифметических и логических
операций с парой n-разрядных операндов. Выполняемая операция определяется
комбинацией сигналов на входах выбора функции.
2.1
Классификация АЛУ
По способу действия над операндами АЛУ
делятся на последовательные и параллельные. В последовательных АЛУ операнды
представляются в последовательном коде, а операции производятся последовательно
во времени над их отдельными разрядами. В параллельных АЛУ операнды
представляются параллельным кодом и операции совершаются параллельно во времени
над всеми разрядами операндов.
По способу представления чисел различают
АЛУ:
для чисел с фиксированной точкой;
для чисел с плавающей точкой;
для десятичных чисел.
По характеру использования элементов и
узлов АЛУ делятся на блочные и многофункциональные:
В блочном АЛУ операции над числами с
фиксированной и плавающей точкой, десятичными числами и алфавитно-цифровыми
полями выполняются в отдельных блоках, при этом повышается скорость работы, так
как блоки могут параллельно выполнять соответствующие операции, но значительно
возрастают затраты оборудования.
В многофункциональных АЛУ операции для
всех форм представления чисел выполняются одними и теми же схемами, которые
коммутируются нужным образом в зависимости от требуемого режима работы.
2.2 Описание
АЛУ на языке VHDL
Хотя язык VHDL имеет встроенные операторы
сложения (+) и вычитания (-), они работают только с целыми и действительными
числами и физическими типами. В частности, они не работают с типами BIT_VECTOR
и типом STD_LOGIC_VECTOR стандарта IEEE. Для этих типов в стандартных пакетах
определены специальные операторы
Таблица 1 - Список стандартных функций АЛУ
Функция
|
Описание
функции
|
R=X+Y
|
Сложение Х и Y
|
R=X+Y+Cl
|
Сложение Х и Y
с переносом
|
R=X - Y
|
Вычесть Y из Х
|
R=X - Y - Cl
|
Вычесть Y из Х
с заемом
|
R=Y - Х
|
Вычесть Х из Y
|
К=Y - X - Cl
|
Вычесть Х из Y
с заемом
|
R= - X
|
Арифметическое
отрицание Х
|
R= - Y
|
Арифметическое
отрицание Y
|
Инкремент Y
|
R=Y - 1
|
Декремент Y
|
R=PASS Х
|
Результат равен
операнду Х
|
R=PASS Y
|
Результат равен
операнду Y
|
R=0 (PASS 0)
|
Очистить
результат
|
R=ABS Х
|
Результат равен
абсолютному значению Х
|
R=X AND Y
|
Логическое и
(AND) Х и Y
|
R=X OR Y
|
Логическое или
(OR) Х и Y
|
R=X XOR Y
|
Исключающее
логическое или (XOR) Х и Y
|
R=NOT Х
|
Логическое
отрицание Х
|
R=NOT Y
|
В пакете IEEE_std_logic_arith определены два новых
типа массивов - SIGNED и UNSIGNED - и набор функций сравнения для операндов типа INTEGER, SIGNED и UNSIGNED. В данном пакете
определены операции сложения и вычитания для операндов тех же типов, а также
для 1-разрядных операндов типа STD_LOGIC и STDJJLOGIC.
При большом числе перекрывающихся функций
сложения и вычитания не столь очевидно, каким окажется тип результата сложения
или вычитания. Если хотя бы один из операндов принадлежит типу SIGNED, то обычно результат
будет типа SIGNED, в противном случае результат будет типа UNSIGNED. Но если результирующее
значение присваивается сигналу или переменной типа STD_LOGIC_VECTOR, то результат типа SIGNED или UNSIGNED преобразуется к этому
типу. Разрядность любого результата обычно равна разрядности самого длинного
операнда. Однако, когда операнд типа UNSIGNED участвует в одной операции с операндом
типа SIGNED или INTEGER, его разрядность увеличивается на 1 для размещения в нем
знакового бита, равного 0, и только после этого устанавливается разрядность
результата.
В лист 4.1 приведена VHDL-программа сложения
8-разрядных операндов раз - личного типа, иллюстрирующая эти правила. Первый
результат S
объявлен как 9-разрядное двоичное число в предположении, что разработчика
интересует пере нос, который может возникнуть при сложении 8-разрядных
операндов А и В типа UNSIGNED. С помощью оператора конкатенации & операнды
А и В расширяются так, чтобы функция сложения помещала бит переноса в старший
разряд результата.
арифметический логический логическая схема
3. Ход работы
На основании лабораторной работы №1 мы
разработали АЛУ.
library IEEE;IEEE.
std_logic_1164. all;IEEE. std_logic_arith. all;lab4 is(, B: in UNSIGNED (7
downto 0);: in SIGNED (7 downto 0);: in STD_LOGIC_VECTOR (7 downto 0);: in STD_LOGIC_VECTOR
(7 downto 0);: out UNSIGNED (8 downto 0);: out SIGNED (8 downto 0);: out SIGNED
(7 downto 0);: out STD_LOGIC_VECTOR (8 downto 0);_i: out STD_LOGIC_VECTOR (7
downto 0);_ili: out STD_LOGIC_VECTOR (7 downto 0);_iili_iskl: out
STD_LOGIC_VECTOR (7 downto 0);_not_x: out STD_LOGIC_VECTOR (7 downto 0);_not_y:
out STD_LOGIC_VECTOR (7 downto 0)
);lab4;lab4_arch of lab4
is<= ('0' & A) + ('0' & B);<= A + C;<= C + SIGNED (D);<= C
- UNSIGNED (D);_i <= (D AND G);_ili <= (D OR G);_iili_iskl <= (D XOR
G);_not_x <= (NOT D);_not_y <= (NOT G);
end lab4_arch;
Рисунок 1 - Временная диаграмма
4. Вывод
Овладели знаниями и практическими навыками
по проектированию арифметико-логических устройств (АЛУ). Лабораторная навыками
программирования и отладки описания логических схем на языке VHDL.