Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2013
Тип роботи:
Розрахункова робота
Предмет:
Автоматизоване проектування комп’ютерних систем

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ Національний університет “Львівська політехніка” Інститут екології, природоохоронної діяльності та туризму ім. В’ячеслава Чорновола КАФЕДРА ЗАГАЛЬНОЇ ЕКОЛОГІЇ ТА ЕКОІНФОРМАЦІЙНИХ СИСТЕМ Розрахункова робота з дисципліни Автоматизація проектування комп’ютерних систем Мета розрахункової роботи: здобути навики аналізу HDL-описів обчислювальних вузлів для подальшого їх використанням при проектуванні комп’ютерних систем. HDL реалізація АЛП має наступний вигляд: -- File: ALU.vhd LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_arith.ALL; USE IEEE.std_logic_unsigned.ALL; ENTITY ALU IS PORT(curr_acc: IN std_logic_vector(3 DOWNTO 0); curr_b: IN std_logic_vector(3 DOWNTO 0); curr_carry: IN std_logic; curr_zero: IN std_logic; alu_op: IN std_logic_vector(2 DOWNTO 0); next_acc: OUT std_logic_vector(3 DOWNTO 0); next_carry: OUT std_logic; next_zero: OUT std_logic); END ALU; ARCHITECTURE behavioral OF ALU IS -- Constants responding ALU operations CONSTANT NOP_OP: std_logic_vector (2 DOWNTO 0):= "000"; CONSTANT LOAD_OP: std_logic_vector (2 DOWNTO 0):= "001"; CONSTANT ADD_OP: std_logic_vector (2 DOWNTO 0):= "010"; CONSTANT XOR_OP: std_logic_vector (2 DOWNTO 0):= "011"; CONSTANT AND_OP: std_logic_vector (2 DOWNTO 0):= "100"; CONSTANT SET_C_OP: std_logic_vector (2 DOWNTO 0):= "101"; CONSTANT CLR_C_OP: std_logic_vector (2 DOWNTO 0):= "110"; BEGIN PROCESS (curr_acc, curr_b, curr_carry, curr_zero, alu_op) VARIABLE sum : std_logic_vector (4 DOWNTO 0); BEGIN CASE alu_op IS WHEN NOP_OP => next_acc <= curr_acc; next_carry <= curr_carry; next_zero <= curr_zero; WHEN XOR_OP=> next_acc <= curr_acc XOR curr_b; next_carry <= curr_carry; next_zero <= curr_zero; WHEN ADD_OP => sum := ('0'& curr_acc)+('0' & curr_b)+("0000" & curr_carry); next_acc <= sum (3 DOWNTO 0); next_carry <= sum (4); next_zero <= curr_zero; WHEN LOAD_OP => next_acc <= curr_b; next_carry <= curr_carry; next_zero <= curr_zero; WHEN AND_OP => next_acc <= curr_acc; next_carry <= curr_carry; next_zero <= NOT((curr_acc(3) AND curr_b(3)) OR (curr_acc(2) AND curr_b(2)) OR (curr_acc(1) AND curr_b(1)) OR (curr_acc(0) AND curr_b(0))); WHEN SET_C_OP => next_acc <= curr_acc; next_carry <= '1'; next_zero <= curr_zero; WHEN CLR_C_OP => next_acc <= curr_acc; next_carry <= '0'; next_zero <= curr_zero; WHEN OTHERS => next_acc <= curr_acc; next_carry <= curr_carry; next_zero <= curr_zero; END CASE; END PROCESS; END behavioral; Завдання на розрахункову роботу: Доповнити наведений код коментарями що пояснюють його роботу Пояснити роботу АЛП при наступних вхідних сигналах alu_op – порядковий номер студента в групі (1 до 6, далі по колу, 7=1) curr_acc – рівне кількості літер в імені студента (1 до 15, далі по колу, 16=1) curr_b – рівне кількості літер в прізвищі студента (1 до 15, далі по колу, 16=1) curr_carry – «1», якщо кількість літер в імені студента парна, інакше «0» curr_ zero – «1», якщо кількість літер в прізвищі студента парна, інакше «0» Пояснити роботу АЛП при тих же вхідних сигналах, що і в п.2, але значення alu_op збільшити на 3. Виконання завданння Студент Миколів Василь, № в журналі 14. alu_op =001 (2) curr_acc = 0110 (6 літери) curr_b = 0111 (7 літер) curr_carry – 1 (парна кількість) curr_ zero – 1 (парна кількість) Основу АЛП складає процес PROCESS зі списком чутливості (curr_acc, curr_b, curr_carry, curr_zero, alu_op) Процес виконується при зміні будь-якого з сигналів із списку чутливості. Оголошена Змінна VARIABLE sum : std_logic_vector (4 DOWNTO 0); Типу масив з 4 однорозрядних елементів (4 біти). Оператор вибору CASE аналізує значення вхідного сигналу alu_op. В нашому випадку alu_op = "001"; або alu_op = LOAD_OP (задана константою для покращення читабельності). Тому буде вибрано блок операторів WHEN LOAD_OP => next_acc <=’0111’; -- присвоїти сигналу next_acc значення вхідного сигналу curr_b; -- в результаті виконання операції вмістиме акумулятора зміниться і буде рівне «0111» next_carry <= curr_carry ; -- присвоїти сигналу next_carry значення вхідного сигналу curr_carry; -- в результаті виконання операції ознака переносу не зміниться і буде рівною «1» next_zero <= curr_ zero; -- присвоїти сигналу next_ zero значення вхідного сигналу curr_ zero; -- в результаті виконання операції ознака нульового результату не зміниться і буде рівна «1» Висновок: Команда АЛП LOAD_OP в акумулятор поміщає значення з входу curr_b, ознаки переносу при цьому не змінюються.
Антиботан аватар за замовчуванням

13.02.2013 11:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!