Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> VHDL

Beispiele für VHDL-Konvertierungen

Numeric_Std- und Std_Logic_Arith-Paketdateien verwenden

Nachfolgend sind die am häufigsten in VHDL verwendeten Konvertierungen aufgeführt. Die Seite ist in zwei Bereiche aufgeteilt. Die erste Hälfte der Seite zeigt Konvertierungen mit der Numeric_Std-Paketdatei. Die zweite Hälfte der Seite zeigt Konvertierungen mit der Paketdatei Std_Logic_Arith. Es empfiehlt sich, das Numeric_Std-Paket zu verwenden, da Sie Std_Logic_Arith nicht verwenden sollten. Da viele Leute immer noch darauf bestehen, es zu verwenden, werden beide Beispiele unten demonstriert.

Beachten Sie, dass viele der folgenden Beispiele die 'Länge verwenden VHDL-Attribut. Dieses Attribut macht Ihren Code portabler und vielseitiger, daher sollte es verwendet werden.

Beispielkonvertierungen mit numerischem Std

Beispielkonvertierungen mit Std_Logic_Arith

Mit Numeric_Std von Integer in Signed umwandeln

Das folgende Beispiel verwendet die to_signed-Konvertierung, die zwei Eingabeparameter erfordert. Das erste ist das Signal, das Sie konvertieren möchten, das zweite ist die Länge des resultierenden Vektors.

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

Mit Numeric_Std von Integer in Std_Logic_Vector konvertieren

Zuerst müssen Sie über den Wertebereich nachdenken, der in Ihrer Ganzzahl gespeichert ist. Kann Ihre ganze Zahl positiv sein und Negativ? In diesem Fall müssen Sie to_signed() verwenden Wandlung. Wenn Ihre Ganzzahl nur positiv ist, müssen Sie to_unsigned() verwenden Konvertierung.

Diese beiden Konvertierungsfunktionen erfordern zwei Eingabeparameter. Das erste ist das Signal, das Sie konvertieren möchten, das zweite ist die Länge des resultierenden Vektors.

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));

Mit Numeric_Std von Integer in Unsigned umwandeln

Das folgende Beispiel verwendet die to_unsigned-Konvertierung, die zwei Eingabeparameter erfordert. Das erste ist das Signal, das Sie konvertieren möchten, das zweite ist die Länge des resultierenden Vektors.

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

Mit Numeric_Std von Std_Logic_Vector in Integer umwandeln

Zuerst müssen Sie über die Daten nachdenken, die durch Ihren std_logic_vector dargestellt werden. Handelt es sich um signierte Daten oder um unsignierte Daten? Signierte Daten bedeuten, dass Ihr std_logic_vector ein positives oder sein kann negative Zahl. Unsignierte Daten bedeuten, dass Ihr std_logic_vector nur ist eine positive Zahl. Das folgende Beispiel verwendet unsigned() Typecast, aber wenn Ihre Daten negativ sein können, müssen Sie signed() verwenden typisiert. Sobald Sie Ihre Eingabe std_logic_vector als vorzeichenlos oder vorzeichenbehaftet umgewandelt haben, können Sie sie wie unten gezeigt in eine ganze Zahl konvertieren:

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));

Mit Numeric_Std von Std_Logic_Vector in Signed umwandeln

Dies ist eine einfache Konvertierung, alles, was Sie tun müssen, ist, den std_logic_vector wie unten gezeigt umzuwandeln:

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

output_6 <= signed(input_6);

Mit Numeric_Std von Std_Logic_Vector in Unsigned umwandeln

Dies ist eine einfache Konvertierung, alles, was Sie tun müssen, ist, den std_logic_vector als vorzeichenlos umzuwandeln, wie unten gezeigt:

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

Mit Numeric_Std von Signed in Integer umwandeln

Dies ist eine einfache Konvertierung, alles, was Sie tun müssen, ist den Funktionsaufruf to_integer von numeric_std zu verwenden, wie unten gezeigt:

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

output_10 <= to_integer(input_10);

Mit Numeric_Std von Signed zu Std_Logic_Vector konvertieren

Dies ist eine einfache Konvertierung, alles, was Sie tun müssen, ist die std_logic_vector-Umwandlung wie unten gezeigt zu verwenden:

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

output_11 <= std_logic_vector(input_11);

Mit Numeric_Std von signiert zu unsigniert konvertieren

Dies ist eine einfache Konvertierung, Sie müssen lediglich die unsignierte Umwandlung wie unten gezeigt verwenden:

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

Mit Numeric_Std von Unsigned in Integer umwandeln

Dies ist eine einfache Konvertierung, alles, was Sie tun müssen, ist den Funktionsaufruf to_integer von numeric_std zu verwenden, wie unten gezeigt:

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

output_7 <= to_integer(input_7);

Mit Numeric_Std von Unsigned zu Signed konvertieren

Dies ist eine einfache Konvertierung, Sie müssen lediglich die signierte Umwandlung wie unten gezeigt verwenden:

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

output_9 <= signed(input_9);

Mit Numeric_Std von Unsigned in Std_Logic_Vector konvertieren

Dies ist eine einfache Konvertierung, alles, was Sie tun müssen, ist die std_logic_vector-Umwandlung wie unten gezeigt zu verwenden:

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

output_8 <= std_logic_vector(input_8);

Mit Std_Logic_Arith von Integer in Signed umwandeln

Das folgende Beispiel verwendet die conv_signed-Konvertierung, die zwei Eingabeparameter erfordert. Das erste ist das Signal, das Sie konvertieren möchten, das zweite ist die Länge des resultierenden Vektors.

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

Mit Std_Logic_Arith von Integer in Std_Logic_Vector konvertieren

Das folgende Beispiel verwendet die Konvertierung conv_std_logic_vector, die zwei Eingabeparameter erfordert. Das erste ist das Signal, das Sie konvertieren möchten, das zweite ist die Länge des resultierenden Vektors.

Eine Sache, die hier zu beachten ist, ist, dass, wenn Sie eine negative Zahl in diese Konvertierung eingeben, Ihre Ausgabe std_logic_vector in der vorzeichenbehafteten Notation des Zweierkomplements dargestellt wird.

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

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

Mit Std_Logic_Arith von Integer zu Unsigned konvertieren

Das folgende Beispiel verwendet die conv_unsigned-Konvertierung, die zwei Eingabeparameter erfordert. Das erste ist das Signal, das Sie konvertieren möchten, das zweite ist die Länge des resultierenden Vektors.

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

Mit Std_Logic_Arith von Std_Logic_Vector in Integer umwandeln

Zuerst müssen Sie über die Daten nachdenken, die durch Ihren std_logic_vector dargestellt werden. Handelt es sich um signierte Daten oder um unsignierte Daten? Signierte Daten bedeuten, dass Ihr std_logic_vector ein positives oder sein kann negative Zahl. Unsignierte Daten bedeuten, dass Ihr std_logic_vector nur ist eine positive Zahl. Das folgende Beispiel verwendet unsigned() Typecast, aber wenn Ihre Daten negativ sein können, müssen Sie signed() verwenden typisiert. Sobald Ihre Eingabe std_logic_vector vorzeichenlos oder vorzeichenlos ist, können Sie sie wie unten gezeigt in eine ganze Zahl konvertieren:

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));

Mit Std_Logic_Arith von Std_Logic_Vector in Signed umwandeln

Dies ist eine einfache Konvertierung, alles, was Sie tun müssen, ist, den std_logic_vector wie unten gezeigt umzuwandeln:

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

output_6 <= signed(input_6);

Mit Std_Logic_Arith von Std_Logic_Vector in Unsigned konvertieren

Dies ist eine einfache Konvertierung, alles, was Sie tun müssen, ist, den std_logic_vector als vorzeichenlos umzuwandeln, wie unten gezeigt:

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

Mit Std_Logic_Arith von Signed in Integer umwandeln

Dies ist eine einfache Konvertierung, Sie müssen lediglich den Funktionsaufruf conv_integer von std_logic_arith wie unten gezeigt verwenden:

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

output_10 <= conv_integer(input_10);

Mit Std_Logic_Arith von Signed zu Std_Logic_Vector konvertieren

Dies ist eine einfache Konvertierung, alles, was Sie tun müssen, ist die std_logic_vector-Umwandlung wie unten gezeigt zu verwenden:

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

output_11 <= std_logic_vector(input_11);

Mit Std_Logic_Arith von signiert zu unsigniert konvertieren

Dies ist eine einfache Konvertierung, Sie müssen lediglich die unsignierte Umwandlung wie unten gezeigt verwenden:

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

Mit Std_Logic_Arith von Unsigned in Integer umwandeln

Dies ist eine einfache Konvertierung, Sie müssen lediglich den Funktionsaufruf conv_integer von std_logic_arith wie unten gezeigt verwenden:

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

output_7 <= conv_integer(input_7);

Mit Std_Logic_Arith von Unsigned zu Signed konvertieren

Dies ist eine einfache Konvertierung, Sie müssen lediglich die signierte Umwandlung wie unten gezeigt verwenden:

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

output_9 <= signed(input_9);

Mit Std_Logic_Arith von Unsigned in Std_Logic_Vector konvertieren

Dies ist eine einfache Konvertierung, alles, was Sie tun müssen, ist die Typumwandlung std_logic_vector wie unten gezeigt zu verwenden:

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

output_8 <= std_logic_vector(input_8);


Beliebteste Nandland-Seiten

VHDL

  1. Lernprogramm - Einführung in VHDL
  2. Prozeduranweisung – VHDL-Beispiel
  3. Aufzeichnungen - VHDL-Beispiel
  4. Signiert vs. Unsigniert in VHDL
  5. Variablen – VHDL-Beispiel
  6. Formale Verifizierung in VHDL mit PSL
  7. So erstellen Sie eine Liste von Zeichenfolgen in VHDL
  8. So stoppen Sie die Simulation in einer VHDL-Testbench
  9. So erstellen Sie einen PWM-Controller in VHDL
  10. So generieren Sie Zufallszahlen in VHDL