DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра електронних обчислювальних машин

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

Рік:
2012
Тип роботи:
Лабораторна робота
Предмет:
Моделювання систем
Група:
КН-31
Коротко про документ

Про що ця робота

У роботі досліджено принципи роботи паралельного та зсувного регістрів засобами мови VHDL. Описано використання операторів циклу while та for при моделюванні синхронізованих процесів.

У роботі розглядаються

  • Моделювання систем
  • Мова VHDL
  • Регістр зсуву
  • Оператори циклу
  • Синхронізовані процеси

Зміст і розділи

  1. Мета роботи
  2. Опис операторів циклу, що використовуються у VHDL
  3. Опис алгоритмів роботи розроблених регістрів
  4. Тексти VHDL-кодів
  5. Часові діаграми роботи регістрів
  6. Висновки
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Хомич С. В.

Ключові поняття

VHDLрегістр зсувуоператор whileоператор forсинхронізаціятактовий сигналвисокий імпедансмоделюванняпроцес

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

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра «ЕОМ» Звіт Лабораторна робота №5 Розробка та моделювання паралельного регістру та регістру зсуву Мета роботи: Засвоїти принципи роботи паралельного та зсувного регістрів. Навчитися описувати синхронізовані процеси та використовувати циклічні оператори при описі поведінки об'єктів за допомогою VHDL. Опис операторів циклу, що використовуються у VHDL: У VHDL існує два оператора цикла: оператор циклу з умовою while ... loop ... оператор циклу з лічильником for ... loop ... . Оператор умовного циклу починається з логічної умови. Цикл повторюється до тих пір, поки виконується умова на початку циклу. Спочатку перевіряється умова, і, якщо вона істинна, виконуються оператори всередині циклу. Якщо ж умова хибна, цикл вважається закінченим і керування передається першому оператору, що знаходиться після циклу. Як правило, такі цикли використовуються для повторення виконання групи операторів до тих пір, поки сигнал або змінна відповідають вибраному критерію (наприклад, дорівнюють деякому значенню). Приклад використання умовного оператора циклу: process variable Count : integer := 0; begin wait until CLK = '1'; while Level = '1' loop Count := Count + 1; wait until CLK = '0'; end loop; end process; Цикл з лічильником не містить явної булевої умови. Замість цього задається дискретний лічильник із діапазоном значень і цикл повторюється до тих пір, поки цей лічильник не вийде за межі діапазона. Після кожної ітерації циклу лічильнику присвоюється наступне значення із заданого діапазону. Лічильник, який не обов'язково декларувати (його специфікація в заголовку циклу прирівнюється до декларації) всередині циклу вважається константою і може використовуватись в присвоєннях, індексах виразів, але не може бути змінене. Більше того, лічильник існує тільки всередині циклу, в якому він задекларований. Діапазон лічильника можна задавати не тільки в класичній формі вигляду from … to …. Він може бути також заданий як підтип або перечислимий тип. В такому випадку тільки (під)тип задається в якості діапазону лічильника. Опис алгоритмів роботи розроблених регістрів: Паралельний 8-розрядний регістр у стані збереження байта на виході регістра постійно утримується високий імпеданс ("ZZZZZZZZ"), що дозволить організувати роботу декількох регістрів через одну шину, оскільки сигнал високого імпедансу має найнижчий пріоритет; якщо WE = '1' і RE = '0', то здійснюється запис інформації в регістр; якщо WE = '0' і RE = '1', то на вихід регістра подається значення байта, що зберігається в цьому регістрі; всі інші комбінації WE та RE розглядаються як стан збереження байта; робота регістра має бути синхронізована по сигналу CLK. Зсувний 8-розрядний регістр у стані збереження байта на виході регістра постійно утримується високий імпеданс ("ZZZZZZZZ"); якщо WE = '1' і RE = '0', то здійснюється запис інформації в регістр, при цьому сигнал DATA_IN надходить в DATA_OUT(0), значення DATA_OUT(0) переміщується в DATA_OUT(1) і т.д.; якщо WE = '0' і RE = '1', то на вихід регістра подається значення байта, що зберігається в цьому регістрі; всі інші комбінації WE та RE розглядаються як стан збереження байта; робота регістра має бути синхронізована по сигналу CLK. Тексти VHDL-кодів, що описують поведінку паралельного та зсувного регістрів: Паралельний 8-розрядний регістр library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; entity parallel_reg is port( CLK : in STD_LOGIC; WE : in STD_LOGIC; RE : in STD_LOGIC; DATA_IN : in STD_LOGIC_VECTOR(7 downto 0); DATA_OUT : out STD_LOGIC_VECTOR(7 downto 0)); end parallel_reg; architecture parallel_reg of parallel_reg is begin process (CLK) variable DATA: STD_LOGIC_VECTOR(7 downto 0); begin if CLK'event and CLK = '1' then if WE = '1' and RE = '0' then DATA := DATA_IN; elsif WE = '0' and RE = '1' then DATA_OUT <= DATA; else DATA_OUT <= "ZZZZZZZZ"; end if; end if; end process; end parallel_reg; Зсувний 8-розрядний регістр library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; entity shift_reg is port( DATA_IN : in STD_LOGIC; CLK : in STD_LOGIC; WE : in STD_LOGIC; RE : in STD_LOGIC; DATA_OUT : out STD_LOGIC_VECTOR(7 downto 0)); end shift_reg; architecture shift_reg of shift_reg is begin process (CLK) variable DATA: STD_LOGIC_VECTOR(7 downto 0); begin if CLK'event and CLK = '1' then if WE = '1' and RE = '0' then for i in 7 downto 1 loop DATA(i) := DATA(i - 1); end loop; DATA(0) := DATA_IN; elsif WE = '0' and RE = '1' then DATA_OUT <= DATA; else DATA_OUT <= "ZZZZZZZZ"; end if; end if; end process; end shift_reg; Часові діаграми роботи регістрів: Паралельний 8-розрядний регістр  Зсувний 8-розрядний регістр  Висновки: Мова VHDL має оператори циклу for та while. Цикл while використовує умову для виходу/продовження з циклу, а цикл for використовується коли наперед відомо скільки ітерацій потрібно зробити.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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