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

Signed und Unsigned Typen in VHDL meistern: Praktischer Leitfaden

In VHDL sind signed und unsigned spezialisierte Bitvektoren für Arithmetik auf Datenbussen. Im Gegensatz zu std_logic_vector (ideal für Signalrouting, nicht für Berechnungen) interpretiert der Compiler diese Typen als numerische Werte.

Addition von std_logic_vector löst Compile-Fehler aus: No feasible entries for infix operator "+" – Tool kann rohes Bitmuster nicht als Zahl deuten.

Teil der Basic VHDL Tutorials Serie.

Deklaration


signal <name> : signed(<N-1> downto 0) := <initial>;
signal <name> : unsigned(<N-1> downto 0) := <initial>;

Range kann to oder downto nutzen, downto 0 ist üblich. Initialwert optional; Default: alle Bits 'U'.

Warum signed/unsigned statt integer? Digitale Designer brauchen präzise Bitbreitenkontrolle. Diese Vektortypen wrappen bei Überlauf, integer wirft Laufzeitfehler bei Grenzwertüberschreitung. Zudem können Vektoren Metawerte ('U', 'X') führen – Designfehler früh sichtbar.

Video-Demonstration

Video zeigt Verhalten von signed und unsigned – Ähnlichkeiten und Unterschiede.

Beispielcode

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity T12_SignedUnsignedTb is
end entity;

architecture sim of T12_SignedUnsignedTb is
  signal UnsCnt : unsigned(7 downto 0) := (others => '0');
  signal SigCnt : signed(7 downto 0) := (others => '0');
  signal Uns4 : unsigned(3 downto 0) := "1000";
  signal Sig4 : signed(3 downto 0) := "1000";
  signal Uns8 : unsigned(7 downto 0) := (others => '0');
  signal Sig8 : signed(7 downto 0) := (others => '0');
begin
  process is
  begin
    wait for 10 ns;
    -- Wrapping Counter
    UnsCnt <= UnsCnt + 1;
    SigCnt <= SigCnt + 1;
    -- Signale addieren
    Uns8 <= Uns8 + Uns4;
    Sig8 <= Sig8 + Sig4;
  end process;
end architecture;

Wellenform-Analyse

ModelSim Wellenform (Zoom auf Schlüsselereignisse), Werte hexadezimal:

Signed und Unsigned Typen in VHDL meistern: Praktischer Leitfaden

Sign-Extension visualisiert:

Signed und Unsigned Typen in VHDL meistern: Praktischer Leitfaden Signed und Unsigned Typen in VHDL meistern: Praktischer Leitfaden

Kernpunkte

Nächstes Tutorial für tiefere Einblicke.

VHDL

  1. Signed vs. Unsigned in VHDL meistern: Praktische Einblicke
  2. In-Prozess-Prozeduren für saubere VHDL-FSM-Entwürfe nutzen
  3. Impure Functions in VHDL nutzen: FSM-Lesbarkeit und Wartbarkeit steigern
  4. VHDL-Funktionen meistern: Praktischer Leitfaden für effizientes Design
  5. Prozeduren in VHDL: Wiederverwendbaren Code für einfachere Designs
  6. Konstanten und Generic Maps in VHDL für flexible Moduldesigns nutzen
  7. VHDL Port Map Instanziierung meistern: Praktischer Leitfaden
  8. Kostenloser VHDL-Simulator & Editor: Ein Leitfaden für Studierende
  9. PIC18 Mikrocontroller: Eigenschaften, Performance & Programmierung
  10. Referenzbezeichner verstehen: PCB-Bestückungsanschlüsse korrekt kennzeichnen