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.
Word'left
31
Word'right
0
Word'low
0
Word'high
31
Word'length
32
Word'range
31 DOWNTO 0
Uživatelem definované atributy
• Mechanismus pro vytvoření uživatelských atributů je v jazyce
VHDL umožněn pomocí klíčového slova ATTRIBUTE.
• Slouží primárně k nastavení přepínačů a voleb při překladu
zdrojového textu.
• Každý návrhový systém obsahuje jiné přepínače. Doporučuji se
vyhýbat jejich použití z důvodů přenositelnosti zdrojových textů.
Příklad funkční v Xilinx ISE:
-- definice uživatelského atributu
ATTRIBUTE enum_encoding: string;
-- definice výčtového typu colours
TYPE colours IS (BLACK, BLUE, RED, MAGENTA,
GREEN, CYAN, YELLOW, WHITE);
-- deklarace atributu k typu colours
ATTRIBUTE enum_encoding OF colours: TYPE IS
"000 100 010 110 001 101 011 111";
Vymezené výrazy jazyka VHDL
SIGNAL a: std_logic;
SIGNAL b: bit;
a <= std_logic'('1');
b <= bit'('0' AND '1');
datový_typ'(literál nebo výraz)
Podobný zápis jako u atributů mají tzv. vymezené výrazy (qualified
expressions).
Při zápisu literálu '1' není jasné, zda se jedná o typ bit nebo std_logic.
Zápisem níže je možné explicitně specifikovat požadovaný typ výrazu nebo
literálu:
Příklad:
Konverze datových typů
Implicitní konverze datových typů
TYPE Byte1 IS RANGE 0 TO 255;
TYPE Byte2 IS RANGE 0 TO 255;
SIGNAL a: Byte1;
SIGNAL b: Byte2;
a <= b;
Mezi dvěma objekty různých datových typů (i když
definují totéž)
nelze volně přiřazovat. VHDL je tzv. silně
typovaný (strongly typed) jazyk.
Příklad:
-- nelze Byte1 a Byte2 jsou různé typy
Implicitní konverze datových typů
SUBTYPE Byte1 IS integer RANGE 0 TO 255;
SIGNAL a: integer;
SIGNAL b: Byte1;
a <= b; -- lze
Z objektu odvozeného podtypu do objektu základního
typu
je možné přiřazovat.
Příklad:
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;
s1 <= a + b;
s2 <= a + 2;
Explicitní konverze datových typů
Typ std_logic_vector neumožňuje aritmetické
operace bez definice, zda jde o operace se znaménkem.
Příklad:
-- nelze
-- nelze
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
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;