bpc-los_05 - VHDL
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.
Explicitní konverze datových typů
Příklad:
USE ieee.std_logic_unsigned.ALL; -- Nepatří do VHDL standardu
s1 <= a + b;
s2 <= a + 2;
-- nyní lze (implicitní unsigned součet)
-- nyní lze (implicitní unsigned součet)
Typ std_logic_vector neumožňuje aritmetické
operace bez definice, zda jde o operace se znaménkem.
ENTITY AddVector IS PORT(a, b: IN std_logic_vector(3 DOWNTO 0);
s1, s2: OUT std_logic_vector(3 DOWNTO 0));
END AddVector;
ARCHITECTURE Behavioral OF AddVector IS
BEGIN
END Behavioral;
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
Explicitní konverze datových typů
Příklad:
USE ieee.std_logic_signed.ALL; -- Nepatří do VHDL standardu
s1 <= a + b;
s2 <= a + 2;
-- nyní lze (implicitní signed součet)
-- nyní lze (implicitní signed součet)
Typ std_logic_vector neumožňuje aritmetické
operace bez definice, zda jde o operace se znaménkem.
ENTITY AddVector IS PORT(a, b: IN std_logic_vector(3 DOWNTO 0);
s1, s2: OUT std_logic_vector(3 DOWNTO 0));
END AddVector;
ARCHITECTURE Behavioral OF AddVector IS
BEGIN
END Behavioral;
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
Explicitní konverze datových typů
Příklad:
USE ieee.std_logic_arith.ALL; -- Nepatří do VHDL standardu
s1 <= signed(a) + signed(b);
s2 <= unsigned(a) + 2;
-- explicitní signed součet
-- explicitní unsigned součet
Typ std_logic_vector neumožňuje aritmetické
operace bez definice, zda jde o operace se znaménkem.
ENTITY AddVector IS PORT(a, b: IN std_logic_vector(3 DOWNTO 0);
s1, s2: OUT std_logic_vector(3 DOWNTO 0));
END AddVector;
ARCHITECTURE Behavioral OF AddVector IS
BEGIN
END Behavioral;
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
Explicitní konverze datových typů
Příklad:
USE ieee.numeric_std.ALL; -- VHDL norma IEEE 1076.3
s1 <= std_logic_vector(signed(a) + signed(b));
s2 <= std_logic_vector(unsigned(a) + 2);
-- signed součet
-- unsigned součet
Typ std_logic_vector neumožňuje aritmetické
operace bez definice, zda jde o operace se znaménkem.
Knihovna numeric_std
Tato standardní knihovna (IEEE 1076.3) definuje:
• Nové celočíselné typy: signed, unsigned vnitřně implementované jako vektory typu
std_logic_vector o zvoleném počtu bitů.
• Všechny relační a aritmetické operátory mezi těmito dvěma typy a také předefinovanými typy:
integer, natural.
• Všechny logické operátory, operátory bitového posunu i rotace pro typy: signed, unsigned.
• Konverze z typů: signed, unsigned na typy: integer, natural pomocí funkce:
to_integer(aČíslo).
• Konverze z typů: integer, natural na typy: signed, unsigned pomocí funkcí:
to_signed(aČíslo, aPočet_bitů), to_unsigned(aČíslo, aPočet_bitů).