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

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

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

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

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Моделювання комп ютерних систем

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

Міністерство освіти і науки України Національний університет «Львівська Політехніка» Кафедра ЕОМ / ЗВІТ до лабораторної роботи №5 з дисципліни «Моделювання комп’ютерних систем» на тему : Розробка та моделювання паралельного регістру та регістру зсуву Львів Мета роботи: Засвоїти принципи роботи паралельного та зсувного регістрів. Навчитися описувати синхронізовані процеси та використовувати циклічні оператори при описі поведінки об'єктів за допомогою 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 …. Він може бути також заданий як підтип або перечислимий тип. В такому випадку тільки (під)тип задається в якості діапазону лічильника. Приклад використання оператора циклу з лічильником: constant MSB : natural := 7; signal SourceBus : std_logic_vector (MSB downto 0); ReverseBus: process (SourceBus) variable ResultBus : std_logic_vector (MSB downto 0); begin for Cntr in 1 to MSB loop ResultBus(MSB - Cntr) := SourceBus(Cntr); end loop; end process ReverseBus; Код програми Паралельного восьмирозрядного регістра: library IEEE; use IEEE.std_logic_1164.all; entity parvreg is port( CLK : in STD_LOGIC; DATA_IN : in STD_LOGIC_VECTOR(7 DOWNTO 0); RE : in STD_LOGIC; WE : in STD_LOGIC; DATA_OUT : out STD_LOGIC_VECTOR (7 DOWNTO 0) ); end parvreg; architecture parvreg of parvreg is begin process(CLK,DATA_IN,RE,WE) variable reg:std_logic_vector(7 downto 0); begin if ( CLK'event and CLK = '1' and WE = '1' and RE = '0' ) then reg:= DATA_IN; elsif ( CLK'event and CLK = '1' and WE = '0' and RE = '1' ) then DATA_OUT <=reg; else DATA_OUT <="ZZZZZZZZ"; end if; end process; end parvreg; Рис.1 Діаграма роботи Паралельного восьмирозрядного регістра. Код програми Зсувного восьмирозрядного регістра: library IEEE; use IEEE.std_logic_1164.all; entity regzsyv is port( CLK : in STD_LOGIC; DATA_IN : in STD_LOGIC; RE : in STD_LOGIC; WE : in STD_LOGIC; DATA_OUT : out STD_LOGIC_VECtor( 7 downto 0) ); end regzsyv; architecture regzsyv of regzsyv is begin process ( CLK, WE,DATA_IN, RE ) variable reg : std_logic_vector ( 7 downto 0 ); begin if( CLK'event and CLK = '1' and WE = '1' and RE = '0' ) then for Counter in 6 downto 0 loop reg(Counter+1) := reg(Counter); end loop; reg(0):=DATA_IN; elsif ( CLK'event and CLK = '1' and WE = '0' and RE ='1' ) then DATA_OUT <= reg; else DATA_OUT <="ZZZZZZZZ"; end if; end process ; end regzsyv; Рис.2 Діаграма роботи Зсувного восьмирозрядного регістра. Висновок. На даній лабораторній роботі я засвоїв принципи роботи паралельного та зсувного регістрів. Навчився описувати синхронізовані процеси та використовувати циклічні оператори при описі поведінки об'єктів за допомогою VHDL.
Антиботан аватар за замовчуванням
Med

26.03.2018 20:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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