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);
VHDL
- Zelfstudie - Inleiding tot VHDL
- Procedureverklaring - VHDL-voorbeeld
- Records - VHDL-voorbeeld
- Ondertekend versus niet-ondertekend in VHDL
- Variabelen - VHDL-voorbeeld
- Formele verificatie in VHDL met PSL
- Een lijst met strings maken in VHDL
- Simulatie stoppen in een VHDL-testbench
- Een PWM-controller maken in VHDL
- Hoe willekeurige getallen te genereren in VHDL
- Interactieve testbank met Tcl