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

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

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

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

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Моделювання

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ національний університет “Львівська політехніка” Кафедра ЕОМ / Звіт З дисципліни : «Моделювання комп’ютерних систем» Лабораторна робота №8 Тема: «Використання блок-діаграм для декомпозиції складних пристроїв в САПР Active-HDL» Підготував: Прийняв: Львів 2012 Мета роботи: Навчитися використовувати блок-діаграми (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-сегментного індикатора. Константи generic При компонуванні складних об’єктів часто виникає необхідність у зміні параметрів компонентів. Можливість такої зміни без перекомпілювання компоненти дає застосування констант generic. Ці константи розміщуються в розділі опису об’єкта entity. Синтаксисконстант generic наведено нижче: entity Entity_Name is generic (a,b,c: integer range 0 to 255; d: Std_Logic); port(port_list); end Entity_Name; Як видно з наведеного прикладу, константам, описаним у розділі generic, не присвоюється конкретне значення на етапі компіляції об’єкта, однак вирази, що містять ці константи, є локально-статично визначеними. Це дає можливість застосовувати константи generic для задавання діапазонів індексів масивів, підтипів тощо. Конкретне значення цим константам присвоюється при включенні об’єкта як компонента складного об’єкта. Тексти VHDL-описів, що були розроблені в роботі. decoder.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; entity Decoder5 is port( X : in STD_LOGIC_VECTOR(3 downto 0); Y : out STD_LOGIC_VECTOR(6 downto 0) ); end Decoder5; architecture Decoder5 of Decoder5 is begin Show:process(X) begin case X is when "0000" => Y<="1110111"; when "0001" => Y<="0100100"; when "0010" => Y<="1011101"; when "0011" => Y<="1101101"; when "0100" => Y<="0101110"; when "0101" => Y<="1101011"; when "0110" => Y<="1111011"; when "0111" => Y<="0100101"; when "1000" => Y<="1111111"; when "1001" => Y<="1101111"; when others => Y<="0000000"; end case; end process Show; end Decoder5; demux.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; entity DeMUX is port( CLK : in STD_LOGIC; X : in STD_LOGIC_VECTOR(31 downto 0); Y7 : out STD_LOGIC_VECTOR(3 downto 0); Y6 : out STD_LOGIC_VECTOR(3 downto 0); Y5 : out STD_LOGIC_VECTOR(3 downto 0); Y4 : out STD_LOGIC_VECTOR(3 downto 0); Y3 : out STD_LOGIC_VECTOR(3 downto 0); Y2 : out STD_LOGIC_VECTOR(3 downto 0); Y1 : out STD_LOGIC_VECTOR(3 downto 0); Y0 : out STD_LOGIC_VECTOR(3 downto 0) ); end DeMUX; architecture DeMUX of DeMUX is begin process (X) begin Y0<=X(3 downto 0); Y1<=X(7 downto 4); Y2<=X(11 downto 8); Y3<=X(15 downto 12); Y4<=X(19 downto 16); Y5<=X(23 downto 20); Y6<=X(27 downto 24); Y7<=X(31 downto 28); end process; end DeMUX; rx.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; entity rx is generic (Width:Integer:=31); port( CLK : in STD_LOGIC; RE : in STD_LOGIC; WE : in STD_LOGIC; DATA_IN : in STD_LOGIC_VECTOR(Width downto 0); DATA_OUT : out STD_LOGIC_VECTOR(Width downto 0) ); end rx; architecture rx of rx is begin process (CLK) variable DATA: STD_LOGIC_VECTOR(Width 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 <= "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; end if; end if; end process; end rx; shema.vhd library IEEE; use IEEE.std_logic_1164.all; library lb8; entity shema is port( CLK : in STD_LOGIC; RE : 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 shema; architecture shema of shema is component Decoder5 port ( X : in STD_LOGIC_VECTOR(3 downto 0); Y : out STD_LOGIC_VECTOR(6 downto 0) ); end component; component DeMUX port ( CLK : in STD_LOGIC; X : in STD_LOGIC_VECTOR(31 downto 0); 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 rx generic( Width : INTEGER := 31 ); port ( CLK : in STD_LOGIC; DATA_IN : in STD_LOGIC_VECTOR(Width downto 0); RE : in STD_LOGIC; WE : in STD_LOGIC; DATA_OUT : out STD_LOGIC_VECTOR(Width downto 0) ); end component; signal BUS118 : STD_LOGIC_VECTOR (7 downto 0); signal BUS132 : STD_LOGIC_VECTOR (7 downto 0); signal BUS144 : STD_LOGIC_VECTOR (7 downto 0); signal BUS309 : STD_LOGIC_VECTOR (7 downto 0); signal BUS310 : STD_LOGIC_VECTOR (7 downto 0); signal BUS79 : STD_LOGIC_VECTOR (7 downto 0); signal BUS87 : STD_LOGIC_VECTOR (7 downto 0); signal BUS99 : STD_LOGIC_VECTOR (7 downto 0); signal Seg : STD_LOGIC_VECTOR (31 downto 0); begin U0 : Decoder5 port map( X(0) => BUS309(4), X(1) => BUS309(5), X(2) => BUS309(6), X(3) => BUS309(7), Y => LCD0 ); U1 : Decoder5 port map( X(0) => BUS79(4), X(1) => BUS79(5), X(2) => BUS79(6), X(3) => BUS79(7), Y => LCD1 ); U2 : Decoder5 port map( X(0) => BUS87(4), X(1) => BUS87(5), X(2) => BUS87(6), X(3) => BUS87(7), Y => LCD2 ); U3 : Decoder5 port map( X(0) => BUS99(4), X(1) => BUS99(5), X(2) => BUS99(6), X(3) => BUS99(7), Y => LCD3 ); U4 : Decoder5 port map( X(0) => BUS310(4), X(1) => BUS310(5), X(2) => BUS310(6), X(3) => BUS310(7), Y => LCD4 ); U5 : Decoder5 port map( X(0) => BUS118(4), X(1) => BUS118(5), X(2) => BUS118(6), X(3) => BUS118(7), Y => LCD5 ); U6 : Decoder5 port map( X(0) => BUS132(4), X(1) => BUS132(5), X(2) => BUS132(6), X(3) => BUS132(7), Y => LCD6 ); U7 : Decoder5 port map( X(0) => BUS144(4), X(1) => BUS144(5), X(2) => BUS144(6), X(3) => BUS144(7), Y => LCD7 ); U8 : DeMUX port map( CLK => CLK, X => Seg, Y0(0) => BUS309(4), Y0(1) => BUS309(5), Y0(2) => BUS309(6), Y0(3) => BUS309(7), Y1(0) => BUS79(4), Y1(1) => BUS79(5), Y1(2) => BUS79(6), Y1(3) => BUS79(7), Y2(0) => BUS87(4), Y2(1) => BUS87(5), Y2(2) => BUS87(6), Y2(3) => BUS87(7), Y3(0) => BUS99(4), Y3(1) => BUS99(5), Y3(2) => BUS99(6), Y3(3) => BUS99(7), Y4(0) => BUS310(4), Y4(1) => BUS310(5), Y4(2) => BUS310(6), Y4(3) => BUS310(7), Y5(0) => BUS118(4), Y5(1) => BUS118(5), Y5(2) => BUS118(6), Y5(3) => BUS118(7), Y6(0) => BUS132(4), Y6(1) => BUS132(5), Y6(2) => BUS132(6), Y6(3) => BUS132(7), Y7(0) => BUS144(4), Y7(1) => BUS144(5), Y7(2) => BUS144(6), Y7(3) => BUS144(7) ); U9 : rx port map( CLK => CLK, DATA_IN => X( 31 downto 0 ), DATA_OUT => Seg( 31 downto 0 ), RE => RE, WE => WE ); end shema; Схема блоку, створеною за допомогою блок-діаграм САПР Active-HDL. / Часові діаграми роботи структурних складових та блоку в цілому / Висновок. На даній лабораторній роботі я навчився використовувати блок-діаграми (Block Diagrams) для декомпозиції складних об'єктів на структурні складові. Отримав навички застосування констант generic для проектування структурних елементів. Розробив модель 8-розрядного 7-сегментного індикатора.
Антиботан аватар за замовчуванням

13.09.2013 12:40

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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