Altifigence Academy

1 / 37 · Konzept

RTL: gleichzeitig arbeitende Schaltungen beschreiben

Trennen Sie Softwareabläufe von parallelen Hardwarestrukturen und definieren Sie Zustand, Folgezustand und Beobachtungszeitpunkt.

Eine Schaltung arbeitet weiter

RTL beschreibt den Transport von Werten zwischen Registern durch kombinatorische Logik. Ein Modul ist eine Hardwaregrenze; zwei Instanzen bilden zwei miteinander verbundene Strukturen, keine nacheinander ausgeführten Funktionsaufrufe. Die Schaltung bleibt aktiv, wenn sich Eingänge ändern. Überführen Sie Gatter, Speicher und Zustandsautomaten aus dem Kurs Digitale Logikschaltungen in ausdrückliche SystemVerilog-Schnittstellen und wiederholbare Prüfungen. Erklären Sie vor der Implementierung für jedes Signal Bitbreite, Treiber, Gültigkeit und Resetverhalten.

Aktuellen Zustand und Folgezustand trennen

Dieses vollständige Modul addiert vorzeichenlose Vier-Bit-Abtastwerte in ein Acht-Bit-Register. Der synchrone, aktive High-Reset hat Vorrang vor enable. Eine freigegebene Flanke addiert sample; andere Flanken halten sum. Die Arithmetik läuft modulo 256 über.

SystemVerilog
module accumulator (
  input  logic       clk, rst, enable,
  input  logic [3:0] sample,
  output logic [7:0] sum
);
  logic [7:0] next_sum;
  assign next_sum = sum + {4'b0000, sample};
  always_ff @(posedge clk) begin
    if (rst) sum <= 8'b0;
    else if (enable) sum <= next_sum;
  end
endmodule

next_sum ist kombinatorisch und kann sich bei Änderungen von sum oder sample ohne Taktflanke ändern. sum speichert Zustand und ändert sich an der steigenden Flanke. Die gemeinsame Deklaration logic macht daraus keine gleichen Hardwareelemente. Das fehlende abschließende else im Taktblock hält das Register. Eine fehlende kombinatorische Zuweisung kann dagegen einen Latch erfordern. Bestimmen Sie zuerst die Blockart.

Vor der Simulation eine Flankentabelle berechnen

Jede Zeile verwendet Zustand und Eingänge unmittelbar vor der Flanke; beobachten Sie danach die nichtblockierenden Aktualisierungen.

Flankerstenablesamplesum vorhersum danach
E0119Unbekannt0
E101303
E200733
E301538
E4111580

Bei E4 gewinnt Reset, ohne Addition. Bei altem sum=250 und angenommenem sample=10 ergibt die Acht-Bit-Summe 4. Ein erhaltenes neuntes Bit würde Schnittstelle und Rechenvertrag ändern.

Lokale Reihenfolge und strukturelle Parallelität

Blockierende =-Zuweisungen in einem kombinatorischen Prozess folgen der prozeduralen Reihenfolge. Getrennte Prozesse und kontinuierliche Zuweisungen arbeiten nebenläufig. Nichtblockierende <=-Zuweisungen berechnen rechte Seiten mit den beim Ausführen verfügbaren Werten und planen Aktualisierungen. Quelltextreihenfolge ersetzt keine Latenzangabe. Schreiben Sie kein #10 in den Akkumulator, um einen Takt abzuwarten: Verzögerungen und Takterzeugung gehören in die allgemeine Simulations-Testbench. Synthetisierbare Zustandsübergänge verwenden Flanken und Zustand, kein sleep.

Übung: eine Anforderung ändern

Ersetzen Sie Überlauf durch Sättigung bei 255. Addieren Sie ausdrücklich erweiterte Operanden in neun Bits. Ist Bit 8 gesetzt, speichern Sie 255, sonst Bits 7:0. Behalten Sie Reset- und enable-Priorität bei. Prüfen Sie 0+0,250+5,250+6, eine gesperrte Flanke und gleichzeitigen Reset/enable: erwartet sind 0,255,255, gehaltener Zustand,0. Nur 250+5 entdeckt verlorenen Übertrag nicht; 250+6 ist erforderlich. Speichern Sie Quelle, Flankentabelle und Erwartungen. Eine abgeschlossene Lerneinheit dokumentiert Lernen, keine Simulatorausführung.

Deine Auswahl gilt für diesen Browser. Du kannst sie jederzeit in der Fußzeile ändern.