Decodorul

De la WikiLabs

Decodorul este un circuit combinațional care este utilizat pentru a identifica valoarea specificată pe intrare prin setarea (activarea) pe ieșire a bitului de pe indexul corespunzător intrării. Decodorul este echivalent cu un multiplexor cu data de 1 bit și intrarea de dată constantă 1.

Spre exemplu, pentru un decodor de 4 biți, tabelul porturilor este prezentat mai jos (caracterul _ poate fi folosit în Verilog pentru a separa biți sau cifre aparținând unei baze, în scrierea unei constante, pentru a fi mai ușor de citit; ex.: 16'b0100_0011_0100_0111):

INTRARE IEȘIRE
0000 0000_0000_0000_0001
0001 0000_0000_0000_0010
0010 0000_0000_0000_0100
0011 0000_0000_0000_1000
0100 0000_0000_0001_0000
0101 0000_0000_0010_0000
0110 0000_0000_0100_0000
0111 0000_0000_1000_0000
1000 0000_0001_0000_0000
1001 0000_0010_0000_0000
1010 0000_0100_0000_0000
1011 0000_1000_0000_0000
1100 0001_0000_0000_0000
1101 0010_0000_0000_0000
1110 0100_0000_0000_0000
1111 1000_0000_0000_0000

Interfață

Interfața unui decodor este formată din două semnale:

  • intrarea, de n biți;
  • ieșirea, de 2n biți.

Implementare

Există mai multe implementări posibile pentru decodor:

  • folosind blocuri generate for;
  • folosind blocuri always combinaționale și case;
  • folosind un bloc assign și operatorul de shiftare la stânga.

Cu toate că ultima variantă nu este optimă din punct de vedere al circuitului sintetizat, vom folosi această metodă datorită ușurinței și dimensiunii reduse a descrierii.