VHDLs std_logic meistern: Zustände, Resolution, Wellenform-Analyse
In VHDL ist std_logic der Eckpfeiler für ein einzelnes Bit auf einer physischen Leitung. Im Gegensatz zum simplen integer aus früheren Tutorials bietet std_logic einen reicheren Wertevorrat, der reales digitales Signalverhalten genauer abbildet.
Während ein digitaler Pin meist High ('1') oder Low ('0') führt, kann ein physisches Signal auch High-Impedanz, schwach oder undefiniert sein. std_logic erfasst all diese Möglichkeiten – meistgenutzter Typ im VHDL-Design.
Teil der Basic VHDL Tutorials Serie.
std_logic Werte
| '1' | Logik 1 |
| '0' | Logik 0 |
| 'Z' | High Impedanz |
| 'W' | Schwaches Signal; unbestimmt 0 oder 1 |
| 'L' | Schwaches 0 (Pulldown) |
| 'H' | Schwaches 1 (Pullup) |
| '-' | Don't Care |
| 'U' | Uninitialisiert |
| 'X' | Unbekannt (mehrere Treiber) |
Fokus in Tutorials: '1', '0', gelegentlich 'U', 'X' für Fehlererkennung. Rest: Fortgeschritten (I²C, Tri-State Busse).
Mehrere Prozesse treiben dasselbe std_logic Signal → Sprache nutzt Resolution Function für Ergebniswert. Verhindert Compile-/Runtime-Fehler in Simulation. Definiert durch Resolutionstabelle:
| U | X | 0 | 1 | Z | W | L | H | - | |
|---|---|---|---|---|---|---|---|---|---|
| U | X | X | 1 | 1 | 1 | 1 | 1 | X | 1 |
| U | X | 0 | X | 0 | 0 | 0 | 0 | X | 0 |
| U | U | U | U | U | U | U | U | U | U |
| U | X | X | X | X | X | X | X | X | X |
| U | X | 0 | 1 | Z | W | L | H | X | Z |
| U | X | 0 | 1 | W | W | W | W | X | W |
| U | X | 0 | 1 | L | W | L | W | X | L |
| U | X | 0 | 1 | H | W | W | H | X | H |
| U | X | X | X | X | X | X | X | X | - |
Übung
Video: std_logic Signale deklarieren, in Wellenform simulieren visualisieren.
Finaler VHDL-Code der Übung:
library ieee;
use ieee.std_logic_1164.all;
entity T10_StdLogicTb is
end entity;
architecture sim of T10_StdLogicTb is
signal Signal1 : std_logic := '0';
signal Signal2 : std_logic;
signal Signal3 : std_logic;
begin
process is
begin
wait for 10 ns;
Signal1 <= not Signal1;
end process;
-- Treiber A
process is
begin
Signal2 <= 'Z';
Signal3 <= '0';
wait;
end process;
-- Treiber B
process(Signal1) is
begin
if Signal1 = '0' then
Signal2 <= 'Z';
Signal3 <= 'Z';
else
Signal2 <= '1';
Signal3 <= '1';
end if;
end process;
end architecture;
ModelSim Wellenform nach Run, Zoom in Timeline:
Wellenform mit Cursor auf anderem Teil des Zyklus:
Analyse
Übung demonstriert VHDL Resolution Function in Aktion. Wellenform-Inspektion gibt klareren Blick auf Multi-Driver-Interaktion als Textoutput.
Signal1 wird von single Prozess getoggelt → sauber '0'/'1'. Signale mit Treiber A & B.resolve per Tabelle.
| Signal | Treiber A | Treiber B | Ergebnis |
|---|---|---|---|
| Signal2 | 'Z' | 'Z' | 'Z' |
| Signal2 | 'Z' | '1' | '1' |
| Signal3 | '0' | 'Z' | '0' |
| Signal3 | '0' | '1' | 'X' |
Merksätze
std_logicist der meistgenutzte VHDL-Typ für Einbit-Signale.- Denken Sie an
std_logicSignal als physische Leitung mit digitalem Wert. - Mehrere Prozesse treiben dasselbe
std_logicSignal → Resolution Function bestimmt Endwert.
Nächstes Tutorial »
VHDL
- Top 3D-Druck-Workflow-Flaschenhälse & bewährte Lösungen
- Häufige Kühlsystemprobleme & Diagnose
- IoT-Daten freisetzen: Wie Business Rules Management Enterprise Value treibt
- Dynamische verkettete Liste in VHDL mit Protected Types und Access-Pointern
- In-Prozess-Prozeduren für saubere VHDL-FSM-Entwürfe nutzen
- Impure Functions in VHDL nutzen: FSM-Lesbarkeit und Wartbarkeit steigern
- VHDL-Funktionen meistern: Praktischer Leitfaden für effizientes Design
- Motorhebezeug-Sicherheitsleitfaden: Best Practices für den Arbeitsplatz
- Hauptursachen für Kranunfälle & wie man sie verhindert
- Schlüsselindustrielle Anwendungen der Legierung A286: Hohe Festigkeit & Korrosionsbeständigkeit