Decodorul
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.