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

Voorbeelden van VHDL-conversies

Zowel Numeric_Std als Std_Logic_Arith pakketbestanden gebruiken

Hieronder staan ​​de meest voorkomende conversies die in VHDL worden gebruikt. De pagina is opgedeeld in twee secties. De eerste helft van de pagina toont conversies met behulp van het Numeric_Std-pakketbestand. De tweede helft van de pagina toont conversies met behulp van het Std_Logic_Arith-pakketbestand. Het is een goede gewoonte om het Numeric_Std-pakket te gebruiken, aangezien u Std_Logic_Arith niet zou moeten gebruiken. Omdat veel mensen er nog steeds op staan ​​het te gebruiken, worden beide voorbeelden hieronder getoond.

Merk op dat veel van de onderstaande voorbeelden de 'length . gebruiken VHDL-kenmerk. Dit kenmerk maakt uw code draagbaarder en veelzijdiger, dus het zou moeten worden gebruikt.

Voorbeeldconversies met numerieke standaard

  • Geheel getal naar Ondertekend
  • Geheel getal naar Std_Logic_Vector
  • Geheel getal naar niet-ondertekend
  • Std_Logic_Vector naar geheel getal
  • Std_Logic_Vector naar ondertekend
  • Std_Logic_Vector naar niet-ondertekend
  • Ondertekend op Integer
  • Ondertekend bij Std_Logic_Vector
  • Ondertekend naar Niet-ondertekend
  • Niet ondertekend voor geheel getal
  • Niet ondertekend naar ondertekend
  • Niet ondertekend bij Std_Logic_Vector

Voorbeeldconversies met Std_Logic_Arith

  • Geheel getal naar Ondertekend
  • Geheel getal naar Std_Logic_Vector
  • Geheel getal naar niet-ondertekend
  • Std_Logic_Vector naar geheel getal
  • Std_Logic_Vector naar ondertekend
  • Std_Logic_Vector naar niet-ondertekend
  • Ondertekend op Integer
  • Ondertekend bij Std_Logic_Vector
  • Ondertekend naar Niet-ondertekend
  • Niet ondertekend voor geheel getal
  • Niet ondertekend naar ondertekend
  • Niet ondertekend bij Std_Logic_Vector

Converteren van geheel getal naar ondertekend met Numeric_Std

In het onderstaande voorbeeld wordt de to_signed-conversie gebruikt, waarvoor twee invoerparameters nodig zijn. De eerste is het signaal dat u wilt converteren, de tweede is de lengte van de resulterende vector.

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

Converteer van Integer naar Std_Logic_Vector met Numeric_Std

Eerst moet u nadenken over het bereik van waarden die zijn opgeslagen in uw geheel getal. Kan uw geheel getal positief zijn en negatief? Als dit het geval is, moet u de to_signed() . gebruiken conversie. Als uw geheel getal alleen positief is, moet u de to_unsigned() . gebruiken conversie.

Voor beide conversiefuncties zijn twee invoerparameters nodig. De eerste is het signaal dat u wilt converteren, de tweede is de lengte van de resulterende vector.

signal input_1   : integer;
signal output_1a : std_logic_vector(3 downto 0);
signal output_1b : std_logic_vector(3 downto 0);
  
-- This line demonstrates how to convert positive integers
output_1a <= std_logic_vector(to_unsigned(input_1, output_1a'length));

-- This line demonstrates how to convert positive or negative integers
output_1b <= std_logic_vector(to_signed(input_1, output_1b'length));

Converteer van Integer naar Unsigned met Numeric_Std

In het onderstaande voorbeeld wordt de to_unsigned-conversie gebruikt, waarvoor twee invoerparameters nodig zijn. De eerste is het signaal dat u wilt converteren, de tweede is de lengte van de resulterende vector.

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

Eerst moet u nadenken over de gegevens die worden vertegenwoordigd door uw std_logic_vector. Zijn het ondertekende gegevens of zijn het niet-ondertekende gegevens? Ondertekende gegevens betekenen dat uw std_logic_vector een positieve of . kan zijn negatief nummer. Niet-ondertekende gegevens betekenen dat uw std_logic_vector alleen . is een positief getal. Het onderstaande voorbeeld gebruikt de unsigned() typecast, maar als uw gegevens negatief kunnen zijn, moet u de signed() . gebruiken getypt. Zodra u uw invoer std_logic_vector als unsigned of ondertekend cast, kunt u deze converteren naar integer zoals hieronder weergegeven:

signal input_4   : std_logic_vector(3 downto 0);
signal output_4a : integer;
signal output_4b : integer;
  
-- This line demonstrates the unsigned case
output_4a <= to_integer(unsigned(input_4));

-- This line demonstrates the signed case
output_4b <= to_integer(signed(input_4));

Converteren van Std_Logic_Vector naar Ondertekend met Numeric_Std

Dit is een makkelijke conversie, het enige wat je hoeft te doen is de std_logic_vector casten zoals hieronder getoond:

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

Dit is een makkelijke conversie, het enige wat je hoeft te doen is de std_logic_vector casten als unsigned zoals hieronder getoond:

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

Converteren van ondertekend naar geheel getal met Numeric_Std

Dit is een eenvoudige conversie, het enige dat u hoeft te doen is de functie-aanroep to_integer van numeric_std te gebruiken, zoals hieronder weergegeven:

  
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

Dit is een makkelijke conversie, het enige wat je hoeft te doen is de std_logic_vector cast gebruiken zoals hieronder getoond:

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 ondertekend naar niet-ondertekend met Numeric_Std

Dit is een gemakkelijke conversie, het enige wat u hoeft te doen is de niet-ondertekende cast gebruiken zoals hieronder getoond:

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

Converteren van niet-ondertekend naar geheel getal met Numeric_Std

Dit is een eenvoudige conversie, het enige dat u hoeft te doen is de functie-aanroep to_integer van numeric_std te gebruiken, zoals hieronder weergegeven:

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

output_7 <= to_integer(input_7);

Converteren van niet-ondertekend naar ondertekend met Numeric_Std

Dit is een gemakkelijke conversie, het enige wat u hoeft te doen is de ondertekende cast gebruiken zoals hieronder getoond:

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

Dit is een makkelijke conversie, het enige wat je hoeft te doen is de std_logic_vector cast gebruiken zoals hieronder getoond:

  
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 geheel getal naar ondertekend met Std_Logic_Arith

In het onderstaande voorbeeld wordt de conversie conv_signed gebruikt, waarvoor twee invoerparameters nodig zijn. De eerste is het signaal dat u wilt converteren, de tweede is de lengte van de resulterende vector.

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

Converteer van Integer naar Std_Logic_Vector met Std_Logic_Arith

In het onderstaande voorbeeld wordt de conversie conv_std_logic_vector gebruikt, waarvoor twee invoerparameters nodig zijn. De eerste is het signaal dat u wilt converteren, de tweede is de lengte van de resulterende vector.

Een ding om op te merken is dat als je een negatief getal invoert in deze conversie, je output std_logic_vector zal worden weergegeven in de notatie met complement-signatuur van 2.

signal input_1  : integer;
signal output_1 : std_logic_vector(3 downto 0);

output_1 <= conv_std_logic_vector(input_1, output_1'length);

Converteer van Integer naar Unsigned met Std_Logic_Arith

In het onderstaande voorbeeld wordt de conversie conv_unsigned gebruikt, waarvoor twee invoerparameters nodig zijn. De eerste is het signaal dat u wilt converteren, de tweede is de lengte van de resulterende vector.

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

Eerst moet u nadenken over de gegevens die worden vertegenwoordigd door uw std_logic_vector. Zijn het ondertekende gegevens of zijn het niet-ondertekende gegevens? Ondertekende gegevens betekenen dat uw std_logic_vector een positieve of . kan zijn negatief nummer. Niet-ondertekende gegevens betekenen dat uw std_logic_vector alleen . is een positief getal. Het onderstaande voorbeeld gebruikt de unsigned() typecast, maar als uw gegevens negatief kunnen zijn, moet u de signed() . gebruiken getypt. Zodra uw invoer std_logic_vector niet-ondertekend of ondertekend is, kunt u deze converteren naar een geheel getal zoals hieronder weergegeven:

signal input_4   : std_logic_vector(3 downto 0);
signal output_4a : integer;
signal output_4b : integer;
  
-- This line demonstrates the unsigned case
output_4a <= conv_integer(unsigned(input_4));

-- This line demonstrates the signed case
output_4b <= conv_integer(signed(input_4));

Converteren van Std_Logic_Vector naar Signed met Std_Logic_Arith

Dit is een makkelijke conversie, het enige wat je hoeft te doen is de std_logic_vector casten zoals hieronder getoond:

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

Dit is een makkelijke conversie, het enige wat je hoeft te doen is de std_logic_vector casten als unsigned zoals hieronder getoond:

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

Converteren van ondertekend naar geheel getal met Std_Logic_Arith

Dit is een eenvoudige conversie, het enige dat u hoeft te doen is de functie-aanroep conv_integer van std_logic_arith te gebruiken, zoals hieronder weergegeven:

  
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

Dit is een makkelijke conversie, het enige wat je hoeft te doen is de std_logic_vector cast gebruiken zoals hieronder getoond:

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 ondertekend naar niet-ondertekend met Std_Logic_Arith

Dit is een gemakkelijke conversie, het enige wat u hoeft te doen is de niet-ondertekende cast gebruiken zoals hieronder getoond:

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

Converteren van niet-ondertekend naar geheel getal met Std_Logic_Arith

Dit is een eenvoudige conversie, het enige dat u hoeft te doen is de functie-aanroep conv_integer van std_logic_arith te gebruiken, zoals hieronder weergegeven:

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

output_7 <= conv_integer(input_7);

Converteren van niet-ondertekend naar ondertekend met Std_Logic_Arith

Dit is een gemakkelijke conversie, het enige wat u hoeft te doen is de ondertekende cast gebruiken zoals hieronder getoond:

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

Dit is een eenvoudige conversie, het enige wat u hoeft te doen is de std_logic_vector typecast gebruiken zoals hieronder getoond:

  
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. Zelfstudie - Inleiding tot VHDL
  2. Procedureverklaring - VHDL-voorbeeld
  3. Records - VHDL-voorbeeld
  4. Ondertekend versus niet-ondertekend in VHDL
  5. Variabelen - VHDL-voorbeeld
  6. Formele verificatie in VHDL met PSL
  7. Een lijst met strings maken in VHDL
  8. Simulatie stoppen in een VHDL-testbench
  9. Een PWM-controller maken in VHDL
  10. Hoe willekeurige getallen te genereren in VHDL
  11. Interactieve testbank met Tcl