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