Grundlagen des RTL-Entwurfs
Beschreiben Sie digitale Schaltungen in SystemVerilog. Lernen Sie Typen, Bitbreiten, Vorzeichen, kombinatorische und sequenzielle Logik, Module, Parameter und generate kennen. Prüfen Sie Grenzfälle und Fehler mit unabhängigen Testbenches. Verbinden Sie abschließend einen periodischen Impulsgeber mit einem Akkumulator und halten Sie reproduzierbare Ergebnisse fest.
Das wirst du lernen
- Bitbreite, Vorzeichen, Treiber, Gültigkeitszeitpunkt und Resetwert jedes Signals festlegen.
- Vollständige kombinatorische Zuweisungen von taktgesteuerten Zustandsänderungen trennen.
- Mit Parametern und generate statische Strukturen erzeugen und Grenzkonfigurationen prüfen.
- Module über benannte Portverbindungen und Funktionen zusammensetzen.
- Stimuli ohne Wettlaufbedingungen und unabhängige Referenzmodelle schreiben.
- Nachweise aus Kompilierung, Simulation, Synthese und DDS-Ausführung unterscheiden.
Bevor du beginnst
Diese Browserübungen verwenden Lehrmodelle und kompilieren oder starten kein HDL. Um den Quellcode separat auszuführen, folge der Digital Design Studio-Anleitung für dein Betriebssystem und melde dich an, wenn der Vorgang es erfordert.
Installation und erster Start ↗ · Downloads ↗Lehrplan
- RTL und Modulverträge
- RTL: gleichzeitig arbeitende Schaltungen beschreibenKonzept
Trennen Sie Softwareabläufe von parallelen Hardwarestrukturen und definieren Sie Zustand, Folgezustand und Beobachtungszeitpunkt.
- Signale und Ports: Vertrag über Breite, Richtung und ZeitKonzept
Schnittstellen lesen und Prüfkriterien für kombinatorische und Zustandsausgänge trennen.
- Module, Ports und Instanzen: Verbindungen als VerträgeKonzept
Verbinden Sie kombinatorische Module über benannte Ports und prüfen Sie einzelne Treiber und Hierarchiegrenzen.
- Verständnisprüfung: kombinatorischer und gespeicherter AusgangWissensprüfung
Unterscheiden Sie Eingangsänderung und Registerbeobachtung.
- Typen, Bitbreiten, Vorzeichen und Ausdrücke
- logic, wire, X/Z und ausdrückliche BitbreitenKonzept
Unterscheiden Sie Typ, Treiber und Speicher und prüfen Sie Literale, Vergleiche, Erweiterungen und unbekannte Werte.
- Vektorindizes, Bitreihenfolge und VorzeichenKonzept
Bitnummern, serielle Reihenfolge und arithmetische Interpretation beim Lesen des Datenpfads trennen.
- Breiten von Slices, Konkatenation und WiederholungKonzept
Datenpfade durch Berechnung der Gesamtbreite und Werterhaltungsbedingungen aufbauen.
- Zweierkomplement, Vorzeichenerweiterung und OverflowKonzept
Signed-Interpretation und Additionsoverflow durch Gleichungen und Gegenbeispiele unterscheiden.
- Verständnisprüfung: Wertebereich und ErweiterungWissensprüfung
Prüfen Sie Ein- und Ausgangsbreiten gemeinsam.
- Vollständiges kombinatorisches RTL und Prüfung
- Kombinatorisches RTL und vollständige ZuweisungenKonzept
Dieselbe Funktion mit bedingtem Operator und always_comb ausdrücken und Latch-verursachende Auslassungen finden.
- Encoder und Priorität: Eine von mehreren Anforderungen wählenKonzept
Die Eingangsannahme eines One-hot-Encoders von valid und Auswahl eines Prioritätsencoders unterscheiden.
- MUX-Verifikation: Vollprüfung und EigenschaftenKonzept
Kombinatorische Eingabeabdeckung und Speicherverhalten getrennt prüfen und Gegenbeispiele minimieren.
- Entwurfsprüfung: Auswahläquivalenz und BeobachtungszeitWissensprüfung
Prüfungen allein anhand der Wahrheitstabelle von solchen mit Taktbeobachtung unterscheiden.
- Zustand, Zuweisungen und Resetpriorität
- Flipflops, Enable und SteuerprioritätenKonzept
Halten, Laden und Reset als Folgezustandsfunktion definieren und unbeabsichtigtes Clock-Gating vermeiden.
- Nichtblockierende Zuweisung und gleichzeitige ZustandsaktualisierungKonzept
Alten und neuen Zustand für korrektes Lesen von Pipeline- und Zähler-RTL trennen.
- Modulo- und Sättigungszähler mit EndimpulsKonzept
Verhalten am Maximum und exakten Zyklus des Terminal-count-Signals festlegen.
- Labor: Reset, Umlauf und Invarianten eines Zählers prüfenÜbung
Jede steigende Flanke mit einer Referenz vergleichen und Einflüsse von Initialwert, Reset und Breite trennen.
- Entwurfsprüfung: Breite, Priorität und UmlaufgrenzenWissensprüfung
Grenzwerte und gleichzeitige Steuerungen anhand der Zustandsübergangsspezifikation beurteilen.
- Parameter und statische Strukturerzeugung
- parameter, localparam, $clog2 und GrenzkonfigurationenKonzept
Trennen Sie Laufzeiteingänge von Konfigurationen und entwerfen Sie Breite und Abschluss für N=1 und andere Werte als Zweierpotenzen.
- generate: mit Schleifen statische Schaltungen aufbauenKonzept
Erzeugen Sie mit genvar und generate-if benannte Hierarchien und prüfen Sie die Lane-Anordnung.
- function automatic und wiederverwendbare AusdrückeKonzept
Schreiben Sie zeitlose Funktionen und prüfen Sie Rückgabebreite, Vorzeichen und unabhängige Referenzen.
- Verständnisprüfung: N=1 und BreiteWissensprüfung
Trennen Sie Mindestbreite und gültige Zustände.
- Testbenches und unabhängige Prüfung
- Abtastzeitpunkte und Kausalität im ZeitdiagrammKonzept
Zeitdiagramme unter Trennung von kombinatorischem Einschwingen, Taktabtastung und Ereignisfolge lesen.
- Übung: eine Testbench, die Fehler selbst meldetÜbung
Trennen Sie DUT, Stimuli, Referenz und Prüfungen für Reset, enable und Überlauf ohne Wettlaufbedingungen.
- Prüfplanung, Coverage und unabhängige ReferenzenKonzept
Testbestehen von Spezifikationserfüllung trennen und Grenzen, Kreuzbedingungen und Gegenbeispiele planen.
- Zähler debuggen und Gegenbeispiele minimierenKonzept
Kurze Tests entwerfen, die Reset-, Enable- und Umlauffehler unterscheiden.
- Verständnisprüfung: Referenzen und WettläufeWissensprüfung
Wählen Sie unabhängige Erwartungen und Beobachtung nach Aktualisierung.
- Modulverbindungen und integrierte Übung
- Zustandsautomaten: Zustand, Transition und Ausgabe trennenKonzept
FSM aus Tabellen entwerfen und Moore/Mealy, illegale Zustände und Anforderungsregeln vergleichen.
- Abschlussentwurf: Überlappende 101-Muster erkennenKonzept
Zustandsminimierung, gültige Eingaben, registrierte Ausgänge und unabhängige Prüfung verbinden.
- Ready/valid und ein elastischer EinplatzpufferKonzept
Verlust- und duplikatfreie Übergabe sowie gleichzeitige Ein-/Ausgabe bei Stopps entwerfen.
- Multiply-add-Pipeline und DatenausrichtungKonzept
Berechnungen an Registergrenzen teilen und Daten, valid sowie Nebenoperanden derselben Transaktion zuordnen.
- Integrierte Übung: periodische Impulse und freigegebener AkkumulatorÜbung
Beschreiben Sie Übertragungen mit alten Werten und prüfen Sie Pausen, aufeinanderfolgende Impulse und gleichzeitigen Reset.
- Werkzeugdiagnosen und Aussagekraft der Ergebnisse
- Setup, Hold und ZeitbudgetKonzept
Maximale und minimale Pfade trennen und frequenzunabhängige Hold-Bedingungen berechnen.
- Taktdomänengrenzen und MetastabilitätKonzept
Den Geltungsbereich zweistufiger Synchronisation verstehen und Einzelbits, kurze Pulse und Busse unterscheiden.
- Kompilierung, lint und Synthese: Aussagekraft der DiagnosenKonzept
Fixieren Sie Quellen, Top und Sprachmodus und unterscheiden Sie Syntax, Breiten, Latches und Funktion.
- Ausführungsprotokolle und Weiterarbeit im DDSKonzept
Bündeln Sie Quellen, Eingänge, Erwartungen, Fehler und Versionen für reproduzierbare Übungen.
- Abschlussprüfung: Funktion und AusführungsnachweiseWissensprüfung
Unterscheiden Sie lokale Ergebnisse von kostenloser DDS-Abnahme.