Diferență între revizuiri ale paginii „Decodorul”
(Pagină nouă: 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...) |
|||
(Nu s-au afișat 2 versiuni intermediare efectuate de același utilizator) | |||
Linia 1: | Linia 1: | ||
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. | 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: | + | 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): |
− | |||
+ | {| class="wikitable" | ||
+ | |- bgcolor="#ddeeff" align="center" | ||
+ | |'''INTRARE''' || '''IEȘIRE''' | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |0000 || 0000_0000_0000_0001 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |0001 || 0000_0000_0000_0010 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |0010 || 0000_0000_0000_0100 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |0011 || 0000_0000_0000_1000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |0100 || 0000_0000_0001_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |0101 || 0000_0000_0010_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |0110 || 0000_0000_0100_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |0111 || 0000_0000_1000_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |1000 || 0000_0001_0000_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |1001 || 0000_0010_0000_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |1010 || 0000_0100_0000_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |1011 || 0000_1000_0000_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |1100 || 0001_0000_0000_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |1101 || 0010_0000_0000_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |1110 || 0100_0000_0000_0000 | ||
+ | |- bgcolor="#ddffdd" align="center" | ||
+ | |1111 || 1000_0000_0000_0000 | ||
+ | |} | ||
== Interfață == | == Interfață == | ||
Linia 16: | Linia 51: | ||
* folosind blocuri '''generate for'''; | * folosind blocuri '''generate for'''; | ||
* folosind blocuri '''always''' combinaționale și '''case'''; | * folosind blocuri '''always''' combinaționale și '''case'''; | ||
− | * folosind un bloc assign și operatorul de shiftare la stânga. | + | * 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. | 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. |
Versiunea curentă din 8 aprilie 2012 13:05
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.