DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”  Кафедра ЕОМ ЛАБОРАТОРНА РОБОТА № 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.
Антиботан аватар за замовчуванням

2015

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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