Altifigence Academy

11 / 63 · Konzept

Decoder, One-hot-Auswahl und gültige Eingaben

Binäradressen in Auswahlleitungen umwandeln und Freigabe, Bereich und Auswahlinvarianten definieren.

Eine Adresse in Auswahlleitungen umwandeln

Ein NN-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 2N2^N Ausgängen um. Mit Freigabe ee ist Ausgang did_i beispielsweise so definiert:

di=e∧(a=i)d_i=e\land(a=i)

Für einen 2-zu-4-Decoder gilt d0=ea‾1a‾0d_0=e\overline a_1\overline a_0, d1=ea‾1a0d_1=e\overline a_1a_0, d2=ea1a‾0d_2=ea_1\overline a_0, d3=ea1a0d_3=ea_1a_0. 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.

Von der Adresse zu One-Hot-Auswahlleitungen

d[i] = enable AND (2 × a1 + a0 = i)

Standardwerte vervollständigen die Funktion

SystemVerilog
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
endmodule

Die 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 ⌈log⁡210⌉=4\lceil\log_2 10\rceil=4 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.

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