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.
• Funkci resize(aČíslo, aNový_počet_bitů) pro znaménkové (2. doplněk) rozšíření typů:
signed, a neznaménkové rozšíření typů: unsigned.
• Konverzní funkci z typů: signed, unsigned na typ: std_logic_vector:
std_logic_vector(aČíslo).
• Konverzní funkce z typu: std_logic_vector na typy: signed, unsigned:
signed(aVektor), unsigned(aVektor).
Grafickou reprezentaci všech možných konverzí naleznete zde.
U
unsigned
I
integer
V
std_logic_vector
to_integer(S)
to_integer(U)
std_logic_vector(S)
std_logic_vector(U)
to_unsigned(I, U'length)
to_signed(I, S'length)
unsigned(V)
signed(V)
Celočíselný typ:
Bitový vektor:
S
signed
Knihovna numeric_std
konverzní funkce
přetypování
Datové typy jazyka VHDL
• Skalární (scalar)
– Výčtové (enumeration)
– Celočíselné (integer)
– S pohyblivou řádovou čárkou (floating point)
– Fyzikální (physical)
• Složené (composite)
– Pole (array)
– Záznam (record)
Fyzikální datový typ
Fyzikální datový typ
• Typ definovaný vztahem k základní jednotce (nejčastěji fyzikální nebo
např. SI jednotce) kterou může objekt nabývat.
• Hodnota fyzikálního typu je celočíselný násobek základní jednotky fyz.
typu.
• Základní jednotka definuje rozlišovací schopnost fyz. typu.
• Jakákoliv hodnota menší než základní jednotka je oříznuta na hodnotu
nula.
• Standard VHDL definuje minimální rozsah pro předefinované fyz. typ
alespoň 32 bitů.
• Pro fyz. typ jsou definovány stejné operátory jako pro celočíselné typy.
TYPE název_fyz_typu IS RANGE hodnota1 DOWNTO|TO hodnota2
UNITS základní_jednotka;
další_jednotka;
END UNITS;
Fyzikální datový typ
Příklad definice a použití fyzikálního datového typu:
-- definice typu vzdalenost
TYPE Vzdalenost IS RANGE 0 TO 1E18
UNITS nm; -- nanometr
um = 1000 nm; -- mikrometr
mm = 1000 um; -- milimetr
cm = 10 mm; -- centimetr
dm = 10 cm; -- decimetr
m = 10 dm; -- metr
END UNITS;
-- definice signálů
SIGNAL a: Vzdalenost;
SIGNAL b: integer;
-- použití
a <= 3 cm + 2mm - 7 um; -- 31993 mikrometrů
b <= cm / mm; -- 10
Předdefinované fyzikální datové typy
Předdefinované typu v knihovně std.standard:
TYPE time IS RANGE -2147483647 TO 2147483647
UNITS fs; -- základ je femtosekunda
ps = 1000 fs; -- piko
ns = 1000 ps; -- nano
us = 1000 ns; -- mikro
ms = 1000 us; -- mili
s = 1000 ms; -- sekunda
min = 60 s; -- minuta
hr = 60 min; -- hodina
END UNITS;
SUBTYPE delay_length IS time RANGE 0 fs TO time'high;
• Typ time a delay_length minimálně 32-bitový, běžně ale bývá