bpc-los_06 - VHDL-strukturální popis, generic
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
Konstrukce GENERATE jazyka VHDL
Příklad konstrukce FOR - GENERATE
LIBRARY ieee; -- Knihovna IEEE
USE ieee.std_logic_1164.ALL; -- Knihovní balík std_logic_1164
ENTITY wide_nor_gate IS -- Definice entity wide_nor_gate
GENERIC (Bits: natural := 1
);
PORT (i: IN std_logic_vector(Bits - 1 DOWNTO 0);
o: OUT std_logic
);
END ENTITY wide_nor_gate;
ARCHITECTURE Structural OF wide_nor_gate IS
SIGNAL temp: std_logic_vector(Bits - 1 DOWNTO 0);
BEGIN -- Tělo entity wide_nor_gate
temp(0) <= i(0);
wide_nor1: FOR n IN 1 TO Bits - 1 GENERATE
temp(n) <= i(n) NOR temp(n - 1);
END GENERATE wide_nor1;
o <= temp(Bits - 1);
END ARCHITECTURE Structural;
Parametrizovatelný široký NOR
LIBRARY ieee; -- Knihovna IEEE
USE ieee.std_logic_1164.ALL; -- Knihovní balík std_logic_1164
ENTITY wide_nor_gate IS -- Definice entity wide_nor_gate
GENERIC (Bits: natural := 1
);
PORT (i: IN std_logic_vector(Bits - 1 DOWNTO 0);
o: OUT std_logic
);
END ENTITY wide_nor_gate;
ARCHITECTURE Structural OF wide_nor_gate IS
SIGNAL temp: std_logic_vector(Bits - 1 DOWNTO 0);
BEGIN -- Tělo entity wide_nor_gate
temp(0) <= i(0);
wide_nor1: FOR n IN 1 TO Bits - 1 GENERATE
temp(n) <= i(n) NOR temp(n - 1);
END GENERATE wide_nor1;
o <= temp(Bits - 1);
END ARCHITECTURE Structural;
Parametrizovatelný široký NOR
Příklad konstrukce IF - GENERATE
Parametrizovatelná sčítačka nebo odčítačka
Parametrizovatelná sčítačka nebo odčítačka
TYPE TOperation IS (EAdder, ESubtractor); -- Nový datový typ
ENTITY half_add_sub_g IS
GENERIC (Oper: TOperation := EAdder; -- Implicitní sčítačka
Bits: natural := 4);
PORT (a, b: IN std_logic_vector(Bits - 1 DOWNTO 0);
sum: OUT std_logic_vector(Bits - 1 DOWNTO 0);
cout: OUT std_logic);
END ENTITY half_adder_g;
ARCHITECTURE Behavioral OF half_add_sub_g IS
SIGNAL s: std_logic_vector(Bits DOWNTO 0);
BEGINadder: IF Oper = EAdder GENERATE -- Sčítačka
s <= std_logic_vector(unsigned'('0' & a) + unsigned'('0' & b));
END GENERATE adder;
subtractor: IF Oper = ESubtractor GENERATE -- Odčítačka
s <= std_logic_vector(signed'('0' & a) - signed'('0' & b));
END GENERATE subtractor;
sum <= s(Bits - 1 DOWNTO 0);
cout <= s(Bits);
END ARCHITECTURE Behavioral;
Parametrizovatelná sčítačka nebo odčítačka
TYPE TOperation IS (EAdder, ESubtractor); -- Nový datový typ