11 / 63 · Konzept
Decoder, One-hot-Auswahl und gültige Eingaben
Binäradressen in Auswahlleitungen umwandeln und Freigabe, Bereich und Auswahlinvarianten definieren.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Eine Adresse in Auswahlleitungen umwandeln
Ein -Bit-DecoderDecoder Aktiviert die einem Binärcode zugeordnete Ausgangsleitung. Mit enable können im deaktivierten Zustand alle Ausgänge 0 sein. wandelt eine Adresse in die Auswahl eines von bis zu Ausgängen um. Mit Freigabe ist Ausgang beispielsweise so definiert:
Für einen 2-zu-4-Decoder gilt , , , . Bei enable=0 sind alle Ausgänge 0; bei enable=1 ist genau einer 1.
Ändern Sie bei enable=1 die Adresse a1a0: Nur eine Leitung d0 bis d3 wird aktiv. Prüfen Sie auch, dass enable=0 alle Auswahlleitungen abschaltet.
d[i] = enable AND (2 × a1 + a0 = i)
Standardwerte vervollständigen die Funktion
module decoder2 (
input logic en,
input logic [1:0] addr,
output logic [3:0] select
);
always_comb begin
select = 4'b0000;
if (en) begin
case (addr)
2'd0: select = 4'b0001;
2'd1: select = 4'b0010;
2'd2: select = 4'b0100;
2'd3: select = 4'b1000;
default: select = 4'b0000;
endcase
end
end
endmoduleDie erste Standardzuweisung deckt alle Ausführungspfade ab und verhindert das Speichern eines alten Ausgangswerts. Allein die Bezeichnung always_comb macht unvollständig definierte Zweige nicht zu einer korrekten Schaltung.
Wenn die Ausgangszahl keine Zweierpotenz ist
Zehn Geräte benötigen eine 4-Bit-Adresse, doch 10 bis 15 sind ungültig. Dafür ist eine Regel festzulegen, etwa alle Ausgänge 0 und ein Fehlerflag 1. Unbenutzte Codes erlauben nicht automatisch beliebige Ausgänge.
Prüfen Sie neben der Zuordnung auch: Sind nie mehrere Auswahlleitungen gleichzeitig aktiv? Sind bei disable alle aus? Solche InvariantenInvariante Bedingung, die bei jeder zulässigen Ausführung stets wahr bleiben muss. Eine FIFO mit Tiefe vier enthält etwa immer zwischen null und vier Elemente. Mehr erfahren sind besonders für Speicher-Schreibfreigaben und Busauswahl wichtig. Größere Decoder erhöhen Fan-out und Leitungslast der Adresssignale; dann kommt hierarchische Decodierung in Betracht.
Selbst ausprobieren
Entwerfen Sie einen Adressdecoder mit zehn Ausgängen. Bestimmen Sie Adressbreite, Zahl ungültiger Eingaben und die zwingende Bedingung bei en=0.
Erklärung lesen
Die Adresse benötigt Bit; sechs Codes sind ungültig. Bei en=0 müssen unabhängig von der Adresse alle Auswahlleitungen 0 sein. Auch für ungültige Adressen können alle Ausgänge 0 und ein separates Fehlersignal vorgeschrieben werden.