Разработка АЛУ на языке VHDL
В пакете IEEE_std_logic_arith определены два новых типа массивов — SIGNED и UNSIGNED — и набор функций сравнения для операндов типа INTEGER, SIGNED и UNSIGNED. В данном пакете определены операции сложения и вычитания для операндов тех же типов, а также для 1-разрядных операндов типа STD_LOGIC и STDJJLOGIC. По своим функциям АЛУ является операционным блоком, выполняющим микрооперации… Читать ещё >
Разработка АЛУ на языке VHDL (реферат, курсовая, диплом, контрольная)
Министерство Образования Республики Беларусь УО «БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ»
Факультет компьютерного проектирования Кафедра электронной техники и технологий Лабораторная работа:
" Разработка АЛУ на языке VHDL"
Выполнила: студентка гр.11 801 Кружаева Т.С.
Принял: Смирнов А.В.
Минск 2013
1. Цель работы
Овладеть знаниями и практическими навыками по проектированию арифметико-логических устройств (АЛУ). Лабораторная работа также служит для овладения навыками программирования и отладки описания логических схем на языке VHDL.
2. Теоретические сведения
Арифметико-логическое устройство (АЛУ; arithmetic and logic unit, ALU) является комбинационной схемой, способной выполнять целый ряд различных арифметических и логических операций с парой n-разрядных операндов. Выполняемая операция определяется комбинацией сигналов на входах выбора функции.
2.1 Классификация АЛУ
По способу действия над операндами АЛУ делятся на последовательные и параллельные. В последовательных АЛУ операнды представляются в последовательном коде, а операции производятся последовательно во времени над их отдельными разрядами. В параллельных АЛУ операнды представляются параллельным кодом и операции совершаются параллельно во времени над всеми разрядами операндов.
По способу представления чисел различают АЛУ:
для чисел с фиксированной точкой;
для чисел с плавающей точкой;
для десятичных чисел.
По характеру использования элементов и узлов АЛУ делятся на блочные и многофункциональные:
В блочном АЛУ операции над числами с фиксированной и плавающей точкой, десятичными числами и алфавитно-цифровыми полями выполняются в отдельных блоках, при этом повышается скорость работы, так как блоки могут параллельно выполнять соответствующие операции, но значительно возрастают затраты оборудования.
В многофункциональных АЛУ операции для всех форм представления чисел выполняются одними и теми же схемами, которые коммутируются нужным образом в зависимости от требуемого режима работы.
По своим функциям АЛУ является операционным блоком, выполняющим микрооперации, обеспечивающие прием из других устройств (например, памяти) операндов, их преобразование и выдачу результатов преобразования в другие устройства (табл. 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 | |
R=Y+1 | Инкремент 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 | Логическое отрицание 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;
use IEEE. std_logic_1164. all;
use IEEE. std_logic_arith. all;
entity lab4 is
port (
A, B: in UNSIGNED (7 downto 0);
C: in SIGNED (7 downto 0);
D: in STD_LOGIC_VECTOR (7 downto 0);
G: in STD_LOGIC_VECTOR (7 downto 0);
S: out UNSIGNED (8 downto 0);
T: out SIGNED (8 downto 0);
U: out SIGNED (7 downto 0);
V: out STD_LOGIC_VECTOR (8 downto 0);
Log_i: out STD_LOGIC_VECTOR (7 downto 0);
Log_ili: out STD_LOGIC_VECTOR (7 downto 0);
Log_iili_iskl: out STD_LOGIC_VECTOR (7 downto 0);
Log_not_x: out STD_LOGIC_VECTOR (7 downto 0);
Log_not_y: out STD_LOGIC_VECTOR (7 downto 0)
);
end lab4;
architecture lab4_arch of lab4 is
begin
S <= ('0' & A) + ('0' & B);
T <= A + C;
U <= C + SIGNED (D);
V <= C — UNSIGNED (D);
Log_i <= (D AND G);
Log_ili <= (D OR G);
Log_iili_iskl <= (D XOR G);
Log_not_x <= (NOT D);
Log_not_y <= (NOT G);
end lab4_arch;
Рисунок 1 — Временная диаграмма
4. Вывод
Овладели знаниями и практическими навыками по проектированию арифметико-логических устройств (АЛУ). Лабораторная навыками программирования и отладки описания логических схем на языке VHDL.