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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ національний університет “Львівська політехніка” Кафедра ЕОМ / Звіт З дисципліни : «Моделювання комп’ютерних систем» Лабораторна робота №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:09-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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