11 / 63 · Concept
Décodeurs, sélection one-hot et entrées valides
Convertir une adresse binaire en sélections individuelles et définir enable, plage valide et invariants de sélection.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Transformer une adresse en ligne de sélection
Un décodeurDécodeur Circuit activant la ligne correspondant à un code binaire. Avec enable, toutes les sorties peuvent être mises à 0 lorsqu'il est désactivé. de bits transforme l'adresse en sélection d'une sortie parmi au plus . Avec une autorisation , la sortie peut se définir ainsi :
Pour un décodeur 2-vers-4, , , et . Si enable=0, toutes les sorties valent 0 ; s'il vaut 1, exactement une sortie vaut 1.
Avec enable=1, changez a1a0 : une seule sortie d0 à d3 s'allume. Passez enable à 0 et vérifiez l'extinction de toutes les sélections.
d[i] = enable AND (2 × a1 + a0 = i)
La valeur par défaut complète la fonction
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
endmoduleL'affectation par défaut initiale couvre tous les chemins d'exécution et évite de mémoriser l'ancienne sortie. Le nom always_comb ne rend pas automatiquement correcte une branche non définie.
Quand le nombre de sorties n'est pas une puissance de deux
Dix dispositifs demandent quatre bits d'adresse, mais les codes 10 à 15 sont invalides. Spécifiez alors une politique, par exemple toutes les sorties à 0 et un indicateur d'erreur à 1. Un code inutilisé n'autorise pas automatiquement une sortie arbitraire.
Au-delà de la correspondance entrée-sortie, vérifiez qu'aucune sélection simultanée n'est possible et que disable éteint tout. Ces invariantsInvariant Condition devant rester vraie dans toute exécution autorisée. Par exemple, l'occupation d'un FIFO de profondeur 4 reste toujours entre 0 et 4. En savoir plus sont essentiels pour les autorisations d'écriture mémoire et les sélections de bus. Un grand décodeur augmente aussi le fan-out des adresses et la charge du câblage, ce qui peut justifier un décodage hiérarchique.
Essayez vous-même
Concevez un décodeur d'adresse à dix sorties : déterminez largeur d'adresse, nombre de codes invalides et condition obligatoire lorsque en=0.
Lire l’explication
L'adresse exige bits et comporte six codes invalides. Si en=0, toutes les sélections doivent valoir 0, quelle que soit l'adresse. On peut spécifier le même résultat pour une adresse invalide, avec un indicateur d'erreur distinct.