Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Описание шифратора и драйвера шины на языке VHDL.




Шифратор:

ENTITY encoder IS

PORT (in1: IN std_logic_vector(7 DOWNTO 0);

out1: OUT std_logic_vector(2 DOWNTO 0));

END encoder;

ARCHITECTURE behave OF encoder IS

BEGIN

PROCESS (in1)

BEGIN

IF in1(7) = '1' THEN out1 <= "111";

ELSIF in1(6) = '1' THEN out1 <= "110";

ELSIF in1(5) = '1' THEN out1 <= "101";

ELSIF in1(4) = '1' THEN out1 <= "100";

ELSIF in1(3) = '1' THEN out1 <= "011";

ELSIF in1(2) = '1' THEN out1 <= "010";

ELSIF in1(1) = '1' THEN out1 <= "001";

ELSIF in1(0) = '1' THEN out1 <= "000";

ELSE out1 <= "XXX";

END IF;

END PROCESS;

END behave;

ИЛИ

ENTITY encoder IS

PORT (a, b, c, d, e, f, g, h: IN std_logic;

out2, out1, out0: OUT std_logic);

END encoder;

ARCHITECTURE behave OF encoder IS

BEGIN

PROCESS (a, b, c, d, e, f, g, h)

VARIABLE inputs: std_logic_vector (7 DOWNTO 0);

VARIABLE i: INTEGER;

BEGIN

INPUTS:= (h, g, f, e, d, c, b, a);

i:= 7;

WHILE i >= 0 AND inputs(i) /= '1' LOOP

i:= i - 1;

END LOOP;

IF (i < 0) THEN

i:= 0;

END IF;

-- conv_std_logic_vector (i, 3) - функция преобразования

-- переменной типа integer в сигнал типа std_logic_vector

-- Второй аргумент определяет размер вектора.

(out2, out1, out0) <= conv_std_logic_vector (i, 3);

END process;

END behave;

 

-- Синтезируемое описание драйвера шины

LIBRARY ieee;

USE ieee.std_logic_1164. ALL;

ENTITY tristate2 IS

PORT (input3, input2, input1, input0: IN std_logic_vector (7 DOWNTO 0);

enable: IN std_logic_vector (3 DOWNTO 0);

output: OUT std_logic_vector (7 DOWNTO 0));

END tristate2;

ARCHITECTURE multiple_drivers of tristate2 IS

BEGIN

output <= input3 WHEN enable(3) = '1' ELSE "ZZZZZZZZ";

output <= input2 WHEN enable(2) = '1' ELSE "ZZZZZZZZ";

output <= input1 WHEN enable(1) = '1' ELSE "ZZZZZZZZ";

output <= input0 WHEN enable(0) = '1' ELSE "ZZZZZZZZ";

END multiple_drivers;

-- Синтезируемое описание шинного формирователя

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY bidir IS

PORT (input_val, enable: IN std_logic;

output_val: OUT std_logic;

bidir_port: INOUT std_logic);

END bidir;

ARCHITECTURE tri_state OF bidir IS

BEGIN

bidir_port <= input_val WHEN enable = '1' ELSE 'Z';

output_val <= bidir_port;

END tri_state;

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных