Використання блок-діаграм для декомпозиції складних пристроїв в САПР Active-HDL

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

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

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

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

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

Міністерство освіти і науки України Національний університет «Львівська Політехніка» Кафедра ЕОМ / ЗВІТ до лабораторної роботи №8 з дисципліни «Моделювання комп’ютерних систем» на тему : Використання блок-діаграм для декомпозиції складних пристроїв в САПР Active-HDL Мета роботи: Навчитися використовувати блок-діаграми (Block Diagrams) для декомпозиції складних об'єктів на структурні складові. Отримати навички застосування констант generic для проектування структурних елементів. Розробити модель 8-розрядного 7-сегментного індикатора. Теоретична частина Постановка задачі Створити блок - генератор сигналів для 8-розрядного 7-сегментного індикатора. Декодер розряду індикатора та паралельний регістр (моделі яких було розроблено в лабораторних роботах №2 і №5) мають входити до проекту як структурні складові. Інтерфейс генератора сигналів містить: вхідний 32-розрядний порт Х типу std_logic_vector (31 downto 0), на який у двійково-десятковій формі подається 8-розрядне десяткове число (на кожний десятковий розряд по 4 двійкові розряди); вхідний порт WE типу std_logic, подання '1' на який дозволяє запис у проміжний регістр блоку; сигнал синхронізації CLK типу std_logic, вісім 7-розрядних вихідних портів LCD7 … LCD0 типу std_logic_vector (6 downto 0), що підключаються безпосередньо до відповідних розрядів 7-сегментного індикатора. VHDL код схеми генератора : library IEEE; use IEEE.std_logic_1164.all; entity generator is port( CLK : in STD_LOGIC; WE : in STD_LOGIC; X : in STD_LOGIC_VECTOR(31 downto 0); LCD0 : out STD_LOGIC_VECTOR(6 downto 0); LCD1 : out STD_LOGIC_VECTOR(6 downto 0); LCD2 : out STD_LOGIC_VECTOR(6 downto 0); LCD3 : out STD_LOGIC_VECTOR(6 downto 0); LCD4 : out STD_LOGIC_VECTOR(6 downto 0); LCD5 : out STD_LOGIC_VECTOR(6 downto 0); LCD6 : out STD_LOGIC_VECTOR(6 downto 0); LCD7 : out STD_LOGIC_VECTOR(6 downto 0) ); end generator; architecture generator of generator is component DC0 port ( Y0 : in STD_LOGIC_VECTOR(3 downto 0); LCD0 : out STD_LOGIC_VECTOR(6 downto 0) ); end component; component DC1 port ( Y1 : in STD_LOGIC_VECTOR(3 downto 0); LCD1 : out STD_LOGIC_VECTOR(6 downto 0) ); end component; component DC2 port ( Y2 : in STD_LOGIC_VECTOR(3 downto 0); LCD2 : out STD_LOGIC_VECTOR(6 downto 0) ); end component; component DC3 port ( Y3 : in STD_LOGIC_VECTOR(3 downto 0); LCD3 : out STD_LOGIC_VECTOR(6 downto 0) ); end component; component DC4 port ( Y4 : in STD_LOGIC_VECTOR(3 downto 0); LCD4 : out STD_LOGIC_VECTOR(6 downto 0) ); end component; component DC5 port ( Y5 : in STD_LOGIC_VECTOR(3 downto 0); LCD5 : out STD_LOGIC_VECTOR(6 downto 0) ); end component; component DC6 port ( Y6 : in STD_LOGIC_VECTOR(3 downto 0); LCD6 : out STD_LOGIC_VECTOR(6 downto 0) ); end component; component DC7 port ( Y7 : in STD_LOGIC_VECTOR(3 downto 0); LCD7 : out STD_LOGIC_VECTOR(6 downto 0) ); end component; component DM port ( C : in STD_LOGIC_VECTOR(31 downto 0); CLK : in STD_LOGIC; Y0 : out STD_LOGIC_VECTOR(3 downto 0); Y1 : out STD_LOGIC_VECTOR(3 downto 0); Y2 : out STD_LOGIC_VECTOR(3 downto 0); Y3 : out STD_LOGIC_VECTOR(3 downto 0); Y4 : out STD_LOGIC_VECTOR(3 downto 0); Y5 : out STD_LOGIC_VECTOR(3 downto 0); Y6 : out STD_LOGIC_VECTOR(3 downto 0); Y7 : out STD_LOGIC_VECTOR(3 downto 0) ); end component; component parvreg port ( CLK : in STD_LOGIC; RE : in STD_LOGIC; WE : in STD_LOGIC; X : in STD_LOGIC_VECTOR(31 downto 0); C : out STD_LOGIC_VECTOR(31 downto 0) ); end component; signal RE : STD_LOGIC; signal C : STD_LOGIC_VECTOR (31 downto 0); signal Y0 : STD_LOGIC_VECTOR (3 downto 0); signal Y1 : STD_LOGIC_VECTOR (3 downto 0); signal Y2 : STD_LOGIC_VECTOR (3 downto 0); signal Y3 : STD_LOGIC_VECTOR (3 downto 0); signal Y4 : STD_LOGIC_VECTOR (3 downto 0); signal Y5 : STD_LOGIC_VECTOR (3 downto 0); signal Y6 : STD_LOGIC_VECTOR (3 downto 0); signal Y7 : STD_LOGIC_VECTOR (3 downto 0); begin U1 : parvreg port map( C => C, CLK => CLK, RE => RE, WE => WE, X => X ); U10 : DC0 port map( LCD0 => LCD0, Y0 => Y0 ); RE <= not(WE); U2 : DM port map( C => C, CLK => CLK, Y0 => Y0, Y1 => Y1, Y2 => Y2, Y3 => Y3, Y4 => Y4, Y5 => Y5, Y6 => Y6, Y7 => Y7 ); U3 : DC7 port map( LCD7 => LCD7, Y7 => Y7 ); U4 : DC5 port map( LCD5 => LCD5, Y5 => Y5 ); U5 : DC3 port map( LCD3 => LCD3, Y3 => Y3 ); U6 : DC1 port map( LCD1 => LCD1, Y1 => Y1 ); U7 : DC6 port map( LCD6 => LCD6, Y6 => Y6 ); U8 : DC4 port map( LCD4 => LCD4, Y4 => Y4 ); U9 : DC2 port map( LCD2 => LCD2, Y2 => Y2 ); end generator; VHDL код регістра: library IEEE; use IEEE.STD_LOGIC_1164.all; entity parvreg is generic(N:integer:=32); port( X : in STD_LOGIC_VECTOR(31 downto 0); CLK : in STD_LOGIC; RE : in STD_LOGIC; WE : in STD_LOGIC; C : out STD_LOGIC_VECTOR(31 downto 0) ); end parvreg; architecture parvreg of parvreg is begin process(CLK) variable reg: std_logic_vector(N-1 downto 0); begin if (CLK = '1' and WE = '1' and RE = '0') then reg := X; elsif (CLK = '1' and WE = '0' and RE = '1') then C <= reg; end if; end process; end parvreg; VHDL код демультиплексора: library IEEE; use IEEE.STD_LOGIC_1164.all; entity DM is port( C : in STD_LOGIC_VECTOR(31 downto 0); CLK : in STD_LOGIC; Y0 : out STD_LOGIC_VECTOR(3 downto 0); Y1 : out STD_LOGIC_VECTOR(3 downto 0); Y2 : out STD_LOGIC_VECTOR(3 downto 0); Y3 : out STD_LOGIC_VECTOR(3 downto 0); Y4 : out STD_LOGIC_VECTOR(3 downto 0); Y5 : out STD_LOGIC_VECTOR(3 downto 0); Y6 : out STD_LOGIC_VECTOR(3 downto 0); Y7 : out STD_LOGIC_VECTOR(3 downto 0) ); end DM; architecture DM of DM is begin process(CLK) begin if (CLK='1') then Y7<=C(31 downto 28); Y6<=C(27 downto 24); Y5<=C(23 downto 20); Y4<=C(19 downto 16); Y3<=C(15 downto 12); Y2<=C(11 downto 8); Y1<=C(7 downto 4); Y0<=C(3 downto 0); end if; end process; end DM; VHDL код семисегментного індикатора: library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; entity DC0 is port( Y0 : in STD_LOGIC_VECTOR(3 downto 0); LCD0 : out STD_LOGIC_VECTOR(6 downto 0) ); end DC0; architecture DC0 of DC0 is begin process(Y0) begin case Conv_Integer(Y0) is when 0 =>LCD0<= "1110111"; when 1 =>LCD0<= "0010010"; when 2 =>LCD0<= "1011101"; when 3 =>LCD0<= "1101101"; when 4 =>LCD0<= "0111010"; when 5 =>LCD0<= "1101011"; when 6 =>LCD0<= "1101111"; when 7 =>LCD0<= "1010010"; when 8 =>LCD0<= "1111111"; when 9 =>LCD0<= "1111011"; when others =>LCD0<= "1110111"; end case; end process; end DC0; Рис.1 Діаграма роботи генератора сигналів. Висновок. На даній лабораторній роботі я навчився використовувати блок-діаграми (Block Diagrams) для декомпозиції складних об'єктів на структурні складові. Отримав навички застосування констант generic для проектування структурних елементів. Розробив модель 8-розрядного 7-сегментного індикатора.
Антиботан аватар за замовчуванням
Med

26.03.2018 21:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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