Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Лабораторная работа №2. Цель работы: Получить делитель чистоты на 2^15.
Работу выполнил: Студент группы РФ 12-34С Поляк М. Г.
Работу проверил: Андреев А.Г.
Красноярск 2016
Цель работы: Получить делитель чистоты на 2^15.
Текст программы: Главный блок: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity main is Port (rst: in std_logic; clk: in STD_LOGIC; SO: out STD_LOGIC); end main;
architecture Behavioral of main is component d_trigger is Port (rst: in std_logic; clk: in STD_LOGIC; d: in STD_LOGIC; q: out STD_LOGIC; nq: out STD_LOGIC); end component;
signal p: STD_LOGIC_VECTOR (15 downto 0); signal os: STD_LOGIC_VECTOR (15 downto 0); begin d1: d_trigger port map (rst => rst, clk => clk, d => os(15), q => p(0), nq=> os(15)); g0: for i in 14 downto 0 generate allbit: d_trigger port map (rst => rst, clk => p(i), d => os(i), q => p(i+1), nq=> os(i)); end generate; SO < = p(15); end Behavioral;
D-триггер library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity d_trigger is Port (rst: in std_logic; clk: in STD_LOGIC; d: in STD_LOGIC; q: out STD_LOGIC; nq: out STD_LOGIC); end d_trigger;
architecture Behavioral of d_trigger is
begin
process (clk) begin if (rst = '1') then q < = '0'; nq < = '1'; elsif (clk'event and clk = '1') then q < = d; nq < = not d; end if; end process; end Behavioral; Test Bench
LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL;
ENTITY test IS END test;
ARCHITECTURE behavior OF test IS
COMPONENT main PORT( rst: IN std_logic; clk: IN std_logic; SO: OUT std_logic ); END COMPONENT;
signal rst: std_logic: = '0'; signal clk: std_logic: = '0';
signal SO: std_logic;
constant clk_period: time: = 1us;
BEGIN
uut: main PORT MAP ( rst => rst, clk => clk, SO => SO );
clk_process: process begin clk < = '0'; wait for clk_period/2; clk < = '1'; wait for clk_period/2; end process;
rst_process: process begin rst < = '0'; wait for 1 us; rst < = '1'; wait for 1 us; rst < = '0'; wait; end process; END;
|