Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> VHDL

Uitgebreide Gids voor VHDL Type Conversies met Numeric_Std en Std_Logic_Arith

Beide Numeric_Std en Std_Logic_Arith Package Bestanden Gebruiken

Hieronder vindt u de meest frequente VHDL-typeconversies. Het artikel is verdeeld in twee secties: de eerste toont conversies die vertrouwen op de moderne numeric_std package, terwijl de tweede equivalente conversies demonstreert met de legacy std_logic_arith package. Hoewel veel ontwerpers nog steeds std_logic_arith gebruiken, beveelt de industriële best practice numeric_std aan omwille van duidelijkheid en porteerbaarheid.

Let op dat veel voorbeelden het VHDL-attribuut 'length gebruiken, wat ervoor zorgt dat uw code automatisch aanpast aan vectorbreedte-wijzigingen – een sleutelstrategie voor herbruikbare, onderhoudbare ontwerpen.

Voorbeeld Conversies met Numeric Std

  • Integer naar Signed
  • Integer naar Std_Logic_Vector
  • Integer naar Unsigned
  • Std_Logic_Vector naar Integer
  • Std_Logic_Vector naar Signed
  • Std_Logic_Vector naar Unsigned
  • Signed naar Integer
  • Signed naar Std_Logic_Vector
  • Signed naar Unsigned
  • Unsigned naar Integer
  • Unsigned naar Signed
  • Unsigned naar Std_Logic_Vector

Voorbeeld Conversies met Std_Logic_Arith

  • Integer naar Signed
  • Integer naar Std_Logic_Vector
  • Integer naar Unsigned
  • Std_Logic_Vector naar Integer
  • Std_Logic_Vector naar Signed
  • Std_Logic_Vector naar Unsigned
  • Signed naar Integer
  • Signed naar Std_Logic_Vector
  • Signed naar Unsigned
  • Unsigned naar Integer
  • Unsigned naar Signed
  • Unsigned naar Std_Logic_Vector

Converteren van Integer naar Signed met Numeric_Std

De to_signed functie vereist twee argumenten: de integer om te converteren en de gewenste vectorbreedte. Het gebruik van het 'length attribuut houdt de code flexibel.

signal input_3 : integer; signal output_3 : signed(3 downto 0); output_3 <= to_signed(input_3, output_3'length);

Converteren van Integer naar Std_Logic_Vector met Numeric_Std

Bepaal of het integer-bereik signed of unsigned is. Voor positieve-alleen waarden gebruik to_unsigned; voor signed waarden gebruik to_signed. Beide functies accepteren de waarde en de doelbreedte.

signal input_1 : integer; signal output_1a : std_logic_vector(3 downto 0); signal output_1b : std_logic_vector(3 downto 0); -- Positieve integers alleen output_1a <= std_logic_vector(to_unsigned(input_1, output_1a'length)); -- Signed of unsigned integers output_1b <= std_logic_vector(to_signed(input_1, output_1b'length));

Converteren van Integer naar Unsigned met Numeric_Std

signal input_2 : integer; signal output_2 : unsigned(3 downto 0); output_2 <= to_unsigned(input_2, output_2'length);

Converteren van Std_Logic_Vector naar Integer met Numeric_Std

Cast eerst de vector naar unsigned of signed afhankelijk van de datasemantiek, pas dan to_integer toe.

signal input_4 : std_logic_vector(3 downto 0); signal output_4a : integer; signal output_4b : integer; -- Unsigned case output_4a <= to_integer(unsigned(input_4)); -- Signed case output_4b <= to_integer(signed(input_4));

Converteren van Std_Logic_Vector naar Signed met Numeric_Std

signal input_6 : std_logic_vector(3 downto 0); signal output_6 : signed(3 downto 0); output_6 <= signed(input_6);

Converteren van Std_Logic_Vector naar Unsigned met Numeric_Std

signal input_5 : std_logic_vector(3 downto 0); signal output_5 : unsigned(3 downto 0); output_5 <= unsigned(input_5);

Converteren van Signed naar Integer met Numeric_Std

signal input_10 : signed(3 downto 0); signal output_10 : integer; output_10 <= to_integer(input_10);

Converteren van Signed naar Std_Logic_Vector met Numeric_Std

signal input_11 : signed(3 downto 0); signal output_11 : std_logic_vector(3 downto 0); output_11 <= std_logic_vector(input_11);

Converteren van Signed naar Unsigned met Numeric_Std

signal input_12 : signed(3 downto 0); signal output_12 : unsigned(3 downto 0); output_12 <= unsigned(input_12);

Converteren van Unsigned naar Integer met Numeric_Std

signal input_7 : unsigned(3 downto 0); signal output_7 : integer; output_7 <= to_integer(input_7);

Converteren van Unsigned naar Signed met Numeric_Std

signal input_9 : unsigned(3 downto 0); signal output_9 : signed(3 downto 0); output_9 <= signed(input_9);

Converteren van Unsigned naar Std_Logic_Vector met Numeric_Std

signal input_8 : unsigned(3 downto 0); signal output_8 : std_logic_vector(3 downto 0); output_8 <= std_logic_vector(input_8);

Converteren van Integer naar Signed met Std_Logic_Arith

signal input_3 : integer; signal output_3 : signed(3 downto 0); output_3 <= conv_signed(input_3, output_3'length);

Converteren van Integer naar Std_Logic_Vector met Std_Logic_Arith

signal input_1 : integer; signal output_1 : std_logic_vector(3 downto 0); output_1 <= conv_std_logic_vector(input_1, output_1'length);

Converteren van Integer naar Unsigned met Std_Logic_Arith

signal input_2 : integer; signal output_2 : unsigned(3 downto 0); output_2 <= conv_unsigned(input_2, output_2'length);

Converteren van Std_Logic_Vector naar Integer met Std_Logic_Arith

signal input_4 : std_logic_vector(3 downto 0); signal output_4a : integer; signal output_4b : integer; -- Unsigned case output_4a <= conv_integer(unsigned(input_4)); -- Signed case output_4b <= conv_integer(signed(input_4));

Converteren van Std_Logic_Vector naar Signed met Std_Logic_Arith

signal input_6 : std_logic_vector(3 downto 0); signal output_6 : signed(3 downto 0); output_6 <= signed(input_6);

Converteren van Std_Logic_Vector naar Unsigned met Std_Logic_Arith

signal input_5 : std_logic_vector(3 downto 0); signal output_5 : unsigned(3 downto 0); output_5 <= unsigned(input_5);

Converteren van Signed naar Integer met Std_Logic_Arith

signal input_10 : signed(3 downto 0); signal output_10 : integer; output_10 <= conv_integer(input_10);

Converteren van Signed naar Std_Logic_Vector met Std_Logic_Arith

signal input_11 : signed(3 downto 0); signal output_11 : std_logic_vector(3 downto 0); output_11 <= std_logic_vector(input_11);

Converteren van Signed naar Unsigned met Std_Logic_Arith

signal input_12 : signed(3 downto 0); signal output_12 : unsigned(3 downto 0); output_12 <= unsigned(input_12);

Converteren van Unsigned naar Integer met Std_Logic_Arith

signal input_7 : unsigned(3 downto 0); signal output_7 : integer; output_7 <= conv_integer(input_7);

Converteren van Unsigned naar Signed met Std_Logic_Arith

signal input_9 : unsigned(3 downto 0); signal output_9 : signed(3 downto 0); output_9 <= signed(input_9);

Converteren van Unsigned naar Std_Logic_Vector met Std_Logic_Arith

signal input_8 : unsigned(3 downto 0); signal output_8 : std_logic_vector(3 downto 0); output_8 <= std_logic_vector(input_8);


Meest Populaire Nandland Pagina's

VHDL

  1. Inleiding tot VHDL: Uw Eerste AND-poort Bouwen
  2. VHDL Procedure Voorbeeld: Een Standard Logic Vector Incrementeren
  3. VHDL Records Gebruiken voor Schone, Herbruikbare FIFO-interfaces
  4. Signed vs. Unsigned Typen in VHDL: Praktische Inzichten
  5. VHDL Variabelen Uitgelegd: Praktische Voorbeelden & Regels voor Betrouwbaar Ontwerp
  6. Formele verificatie van VHDL-modules met PSL meesteren
  7. Dynamische string-lijsten in VHDL: Best Practices & Voorbeeld
  8. Een VHDL-testbench netjes beëindigen: methoden en best practices
  9. Een PWM-controller implementeren in VHDL: Ontwerp, Simulatie en FPGA-demo
  10. Willekeurige getallen genereren in VHDL: Van Uniform naar OSVVM
  11. Hardwareverificatie verbeteren met een Tcl-gebaseerde interactieve testbench