Частина тексту файла (без зображень, графіків і формул):
Міністерство Освіти і Науки
Національний Університет «Львівська політехніка»
кафедра ЕОМ
Звіт про виконання лабораторної роботи №5
з предмету «Моделювання комп’ютерних систем»
на тему : «Розробка та моделювання паралельного регістру та регістру зсуву»
Мета роботи: Засвоїти принципи роботи паралельного та зсувного регістрів. Навчитися описувати синхронізовані процеси та використовувати циклічні оператори при описі поведінки об'єктів за допомогою VHDL.
У VHDL існує два оператора цикла:
оператор циклу з умовою while ... loop ...
оператор циклу з лічильником for ... loop ... .
Оператор умовного циклу починається з логічної умови. Цикл повторюється до тих пір, поки виконується умова на початку циклу. Спочатку перевіряється умова, і, якщо вона істинна, виконуються оператори всередині циклу. Якщо ж умова хибна, цикл вважається закінченим і керування передається першому оператору, що знаходиться після циклу.
Цикл з лічильником не містить явної булевої умови. Замість цього задається дискретний лічильник із діапазоном значень і цикл повторюється до тих пір, поки цей лічильник не вийде за межі діапазона. Після кожної ітерації циклу лічильнику присвоюється наступне значення із заданого діапазону. Лічильник, який не обов'язково декларувати (його специфікація в заголовку циклу прирівнюється до декларації) всередині циклу вважається константою і може використовуватись в присвоєннях, індексах виразів, але не може бути змінене. Більше того, лічильник існує тільки всередині циклу, в якому він задекларований.
Текст VHDL – коду, який описує роботу паралельного регістру:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity ParalRgInt is
port(
CLK : in STD_LOGIC;
WE : in STD_LOGIC;
RE : in STD_LOGIC;
Data_In : in STD_LOGIC_Vector (7 downto 0) :="00000000";
Data_Out : out STD_LOGIC_VECTOR(7 downto 0)
);
end ParalRgInt;
--}} End of automatically maintained section
architecture ParalRGAch of ParalRgInt is
signal temp : std_logic_vector (7 downto 0) ; -- Використовується для зберігання всередині регістра
begin
Proc : process (CLK)
begin
if RE = '0' and WE = '1' then temp<=Data_In ;
elsif RE = '1' and WE = '0' then Data_Out <= temp;
else Data_Out <= "ZZZZZZZZ";
end if;
end process Proc;
end ParalRGAch;
Поведінка паралельного регістра при записі зображена на рис.№1 :
/
Рис.№1
Поведінка паралельного регістра при зчитуванні зображена на рис.№2
/
Рис.№2
Поведінка паралельного регістра в режимі збереженні інформації зображена на рис.№3
/
Рис.№3
Текст VHDL коду для регістра зсуву :
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity SsyvRgInt 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 SsyvRgInt;
--}} End of automatically maintained section
architecture SsyvRgArch of SsyvRgInt is
signal temp : std_logic_vector (7 downto 0):="00000000" ; -- Використовується для зберігання всередині регістра
-- signal i: integer :=6;
begin
Proc : process (CLK)
begin
if RE = '0' and WE = '1' then
--------------
for i in 6 downto 1 loop
temp(i) <= temp(i-1);
end loop;
temp(0) <= Data_In;
--------------
elsif RE = '1' and WE = '0' then Data_Out <= temp;
else Data_Out <= "ZZZZZZZZ";
end if;
end process Proc;
end SsyvRgArch;
Поведінка регістра зсуву в режимі запису інформації зображена на рис.№4.
/
Рис.№4
Поведінка регістра зсуву в режимі зчитування інформації зображена на рис.№5.
/
Рис.№5
Поведінка регістра зсуву в режимі збереження інформації зображена на рис.№6.
/
Рис.№6
Висновок : засвоїли принципи роботи паралельного та зсувного регістрів. Навчились описувати синхронізовані процеси та та використовувати циклічні оператори при описі поведінки об’єктів допомогою VHDL.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!