Розробка та моделювання паралельного регістру та регістру зсуву

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

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

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

Рік:
2005
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КІ

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”  Кафедра ЕОМ ЛАБОРАТОРНА РОБОТА № 5 З ПРЕДМЕТУ ”Мова опису програмних засобів” НА ТЕМУ: “ Розробка та моделювання паралельного регістру та регістру зсуву.” Підготував:ст.гр.КІ-42 Трофімов О.С. Прийняла: Колодчак О.М. ЛЬВІВ 2005 Лабораторна робота №5 Розробка та моделювання паралельного регістру та регістру зсуву Мета роботи: Засвоїти принципи роботи паралельного та зсувного регістрів. Навчитися описувати синхронізовані процеси та використовувати циклічні оператори при описі поведінки об'єктів за допомогою VHDL. Теоретичні відомості Паралельний 8-розрядний регістр має: 8-розрядний вхід DATA_IN (7 downto 0) типу std_logic_vector для передачі даних, вхід синхронізації CLK, типу std_logic, вхід дозволу на запис WE типу std_logic, вхід дозволу зчитування RE типу std_logic. 8-розрядний вихід DATA_OUT (7 downto 0) типу std_logic_vector для виводу даних. Робота регістра має здійснюватися наступним чином: у стані збереження байта на виході регістра постійно утримується високий імпеданс ("ZZZZZZZZ"), що дозволить організувати роботу декількох регістрів через одну шину, оскільки сигнал високого імпедансу має найнижчий пріоритет; якщо WE = '1' і RE = '0', то здійснюється запис інформації в регістр; якщо WE = '0' і RE = '1', то на вихід регістра подається значення байта, що зберігається в цьому регістрі; всі інші комбінації WE та RE розглядаються як стан збереження байта; робота регістра має бути синхронізована по сигналу CLK. Зсувний 8-розрядний регістр має: один вхід DATA_IN типу std_logic для вводу інформації, вхід синхронізації CLK типу std_logic, вхід дозволу на запис WE типу std_logic, вхід дозволу зчитування RE типу std_logic, 8-розрядний вихід DATA_OUT (7 downto 0) типу std_logic_vector для паралельного виводу даних Робота регістра має здійснюватися наступним чином: у стані збереження байта на виході регістра постійно утримується високий імпеданс ("ZZZZZZZZ"); якщо WE = '1' і RE = '0', то здійснюється запис інформації в регістр, при цьому сигнал DATA_IN надходить в DATA_OUT(0), значення DATA_OUT(0) переміщується в DATA_OUT(1) і т.д.; якщо WE = '0' і RE = '1', то на вихід регістра подається значення байта, що зберігається в цьому регістрі; всі інші комбінації WE та RE розглядаються як стан збереження байта; робота регістра має бути синхронізована по сигналу CLK. Хід роботи Створити новий проект в Active-HDL. Розробити VHDL-модель паралельного 8-розрядного регістру. Промоделювати роботу розробленого паралельного регістра в режимах запису інформації, збереження байта та зчитування інформації. Проаналізувати на основі отриманих часових діаграм відповідність роботи паралельного регістра заданому алгоритму. Розробити VHDL-модель зсувного 8-розрядного регістру. Помоделювати роботу розробленого зсувного регістра в режимах запису інформації, збереження байта та зчитування інформації. Проаналізувати на основі отриманих часових діаграм відповідність роботи зсувного регістра заданому алгоритму. Програмна реалізація library IEEE; use IEEE.std_logic_1164.all; entity Registers is generic(Bit_n: integer:=7); port( DATA_IN: in std_logic_vector(7 downto 0); DATA_IN_Z, CLK, WE, RE :in std_logic; DATA_OUT : out std_logic_vector(7 downto 0); DATA_OUT_Z : out std_logic_vector(7 downto 0) ); end entity; architecture Registers of Registers is begin --Паралельний регістр Paral_Reg: process(CLK, WE, RE) variable Parallel: std_logic_vector(7 downto 0):="00000000"; begin if CLK'event and CLK='1' then --Запис if WE = '1' and RE = '0' then Parallel := DATA_IN; --Запис end if; --Читання if WE = '0' and RE = '1' then DATA_OUT <= Parallel;--Вивід інформації end if; --Зберігання if WE = RE then --Зберігання DATA_OUT <= "ZZZZZZZZ";--Високий імпеданс end if; end if; end process; -- Регістр зсуву Shift_Reg: process(CLK, WE, RE) variable k: integer; variable Shift: std_logic_vector(7 downto 0):="00000000"; begin if CLK'event and CLK='1' then --Зсув if WE = '1' and RE = '0' then for k in 7 downto 1 loop Shift(k) := Shift(k-1); end loop; Shift(0):= DATA_IN_Z; end if; --Читання if WE = '0' and RE = '1' then DATA_OUT_Z <= Shift; end if; --Зберігання if WE = RE then DATA_OUT_Z <= "ZZZZZZZZ"; end if; end if; end process; end architecture Registers; Часова діаграма  Висновок: в ході лабораторної роботи я засвоїв принципи роботи паралельного та зсувного регістрів. Навчився описувати синхронізовані процеси та використовувати циклічні оператори при описі поведінки об'єктів за допомогою VHDL.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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