Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи №1
на тему:
„Перемножувач на константу”
Підготував: ст. гр. СКС-1
Львів 2007
Мета роботи: оволодіти швидким алгоритмом множення на константу, та реалізувати програму в пакеті A-VHDL.
Завдання: перемножити два 16-ти розрядних числа, одне з яких константа і рівне, згідно варіанту – 5F92 .
Алгоритм множення: множення відбувається за допомогою логічного зсуву вхідного операнда. Число 5F9216 рівне − 0101 1111 1001 0010 2 , підрахуємо кількість одиничок, їх 9 , отже наш вхідний операнд повинен бути зсунутий 9 раз, і результат після кожного зсуву повинен додаватися. Зсув відбувається в 32 – х розрядній сітці. Наш операнд розміщується в 16 мол. розрядах, і кожен зсув виконується на стільки розрядів, на якій позиції стоїть «1» в константі, починаючи з молодших розрядів. Далі виконуємо суму проміжних 32 – х розрядних результатів (їх є 9), результат суми і буде наше перемножене число.
Програмна реалізація:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_unsigned.all;
entity mult is
port(
A : in std_logic_vector(15 downto 0);
B : out std_logic_vector(31 downto 0)
);
end mult;
-- constant 5f92
architecture mult of mult is
signal a1, a2, a3, a4, a5, a6, a7, a8, a9: std_logic_vector(31 downto 0);
begin
a1 <= "000000000000000" & A & '0';
a2 <= "000000000000" & A & "0000";
a3 <= "000000000" & A & "0000000";
a4 <= "00000000" & A & "00000000";
a5 <= "0000000" & A & "000000000";
a6 <= "000000" & A & "0000000000";
a7 <= "00000" & A & "00000000000";
a8 <= "0000" & A & "000000000000";
a9 <= "00" & A & "00000000000000";
B <= a1+a2+a3+a4+a5+a6+a7+a8+a9;
end mult;
Діаграма симуляції:
Висновок: з даної лабораторної роботи я оволодів методом множення числа на константу.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!