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

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

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

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

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

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

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

Міністерство освіти і науки України Національний університет «Львівська Політехніка» Кафедра ЕОМ / ЗВІТ до лабораторної роботи №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:00

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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