Jak Začít?

Máš v počítači zápisky z přednášek
nebo jiné materiály ze školy?

Nahraj je na studentino.cz a získej
4 Kč za každý materiál
a 50 Kč za registraci!




bpc-los_06 - VHDL-strukturální popis, generic

PDF
Stáhnout kompletní materiál zdarma (284.4 kB)

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

Témata, do kterých materiál patří