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

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра електронних обчислювальних машин

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

Рік:
2005
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Мови опису апаратних засобів
Група:
КІ-44

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 8 з курсу „ Мови опису апаратних засобів ” Тема: Використання блок-діаграм для декомпозиції складних пристроїв в САПР Active-HDL Львів – 2005 Мета роботи: Навчитися використовувати блок-діаграми (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-сегментного індикатора.  Текст програми Paralel_register.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; entity paralel_register is port( CLK : in STD_LOGIC; WE : in STD_LOGIC; RE : in STD_LOGIC; DATA_IN : in STD_LOGIC_VECTOR (7 downto 0); DATA_OUT : out STD_LOGIC_VECTOR (7 downto 0) ); end paralel_register; architecture paralel_register of paralel_register is begin -- enter your statements here -- process(CLK) variable DATA : STD_LOGIC_VECTOR (7 downto 0); begin if rising_edge(CLK) then DATA_OUT <="ZZZZZZZZ"; if WE='1' and RE='0' then DATA:=DATA_IN; elsif WE='0' and RE='1' then DATA_OUT<=DATA; end if; end if; end process; end paralel_register; reg.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; entity reg is generic(N:integer:=4); port( CLK : in STD_LOGIC; WE : in STD_LOGIC; RE : in STD_LOGIC; REG_IN : in STD_LOGIC_VECTOR(31 downto 0); REG_OUT : out STD_LOGIC_VECTOR(31 downto 0) ); end reg; architecture reg of reg is component paralel_register is port ( CLK : in STD_LOGIC; WE : in STD_LOGIC; RE : in STD_LOGIC; DATA_IN : in STD_LOGIC_VECTOR(7 downto 0); DATA_OUT : out STD_LOGIC_VECTOR(7 downto 0) ); end component paralel_register; begin -- enter your statements here -- reg_N: for i in 0 to N-1 generate reg8_label: component paralel_register port map( CLK=>CLK, WE=>WE, RE=>RE, DATA_IN=>REG_IN(8*i+7 downto 8*i), DATA_OUT=>REG_OUT(8*i+7 downto 8*i) ); end generate; end reg; de_mux.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; entity de_mux 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 de_mux; architecture de_mux of de_mux is begin process(CLK) begin if rising_edge(CLK) then 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 if; end process; end de_mux; invertor.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; entity invertor is port( IN_PORT : in STD_LOGIC; OUT_PORT : out STD_LOGIC ); end invertor; architecture invertor of invertor is begin OUT_PORT<=not IN_PORT; end invertor; sch.vhd library IEEE; use IEEE.std_logic_1164.all; entity sch 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 sch; architecture sch of sch is component decoder port ( X : in STD_LOGIC_VECTOR(3 downto 0); Y : out STD_LOGIC_VECTOR(6 downto 0) ); end component; component de_mux 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 invertor port ( IN_PORT : in STD_LOGIC; OUT_PORT : out STD_LOGIC ); end component; component reg generic( N : INTEGER := 4 ); port ( CLK : in STD_LOGIC; RE : in STD_LOGIC; REG_IN : in STD_LOGIC_VECTOR(31 downto 0); WE : in STD_LOGIC; REG_OUT : out STD_LOGIC_VECTOR(31 downto 0) ); end component; ---- Signal declarations used on the diagram ---- signal NET121 : STD_LOGIC; signal BUS657 : STD_LOGIC_VECTOR (31 downto 0); signal BUS671 : STD_LOGIC_VECTOR (3 downto 0); signal BUS677 : STD_LOGIC_VECTOR (3 downto 0); signal BUS685 : STD_LOGIC_VECTOR (3 downto 0); signal BUS693 : STD_LOGIC_VECTOR (3 downto 0); signal BUS701 : STD_LOGIC_VECTOR (3 downto 0); signal BUS709 : STD_LOGIC_VECTOR (3 downto 0); signal BUS720 : STD_LOGIC_VECTOR (3 downto 0); signal BUS728 : STD_LOGIC_VECTOR (3 downto 0); begin -- Component instantiations -- U1 : reg port map( CLK => CLK, RE => NET121, REG_IN => X, REG_OUT => BUS657, WE => WE ); U10 : decoder port map( X => BUS671, Y => LCD0 ); U11 : de_mux port map( CLK => CLK, X => BUS657, Y0 => BUS671, Y1 => BUS677, Y2 => BUS685, Y3 => BUS728, Y4 => BUS720, Y5 => BUS709, Y6 => BUS701, Y7 => BUS693 ); U2 : invertor port map( IN_PORT => WE, OUT_PORT => NET121 ); U3 : decoder port map( X => BUS693, Y => LCD7 ); U4 : decoder port map( X => BUS701, Y => LCD6 ); U5 : decoder port map( X => BUS709, Y => LCD5 ); U6 : decoder port map( X => BUS720, Y => LCD4 ); U7 : decoder port map( X => BUS728, Y => LCD3 );  U8 : decoder port map( X => BUS685, Y => LCD2 ); U9 : decoder port map( X => BUS677, Y => LCD1 ); end sch; Часові діаграми роботи пристрою  Висновки: виконуючи дану лабораторну роботу, я навчився використовувати блок-діаграми (Block Diagrams) для декомпозиції складних об'єктів на структурні складові та отримати навички застосування констант generic для проектування структурних елементів.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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