Sunteți pe pagina 1din 7

Circuitul decodificator de cod

Acest decodificator activează una sau mai multe linii de ieşiri a cărei adresă este
prezentată la intrare, realizează transformarea cuvintelor din codul binar în codul
zecimal
echivalent codurilor respective. Este decodificatorul cel mai frecvent utilizat.
Decodificatorul face parte din categoria circuitelor integrate combinaţionale de
scară medie
(MSI), având n intrări şi m ieşiri, care identifică un cod de intrare şi activează o
singură linie de
ieşire, corespunzătoare acestui cod. Numărul maxim al liniilor de ieşire (numărul
de căi)
corespunde numărului de combinaţii ale variabilelor de intrare (m ≤ 2 n ).
Un decodificator cu 2 n căi se notează cu DCD n:2 n .
Decodificatorul se utilizează în numeroase aplicaţii, ca de exemplu adresarea
memoriilor,
selectarea (validarea) unor circuite sau a unor periferice, afişarea datelor etc.
Se fabrică sub forma de circuite integrate TTL (adică Tranzistor-Tranzistor Logic)
decodificatoare complete cu 4, 8, 16 ieşiri. Tabelul de funcţionare al circuitelor
decodificator,
indică existenţa unei corespondenţe între echivalentul zecimal al codului de la
intrare, interpretat
ca număr binar şi activarea acelei ieşiri notate cu acelaşi indice zecimal.

Decodificator BCD (Binary Coded Decimal)

În următoarea figură (fig. 12.1) este prezentată schema bloc de funcţionare a unui
decodificator BCD cu patru intrări de date. Din punct de vedere constructiv are 16
ieşiri, dar fiind un decodificator pentru numere zecimale, foloseşte doar 10 ieşiri.
Figura 1. Schema bloc pentru un decodificator BCD

După cum se vede în tabelul de adevăr pentru ieşirile DCD-ului, toate stările sunt
decodificate explicit, datele false care se fixează eventual pe intrările
decodificatorului duc la stabilirea tuturor ieşirilor în starea falsă de 1 logic. Se
spune că acest decodificator rejectează datele false de la intrare.
Tabelul de adevar al circuitului codificator BCD
Rejectarea eventualelor date false care pot apărea la ieşirile DCD-ului se
face prin aplicarea unei ieşiri suplimentare numită ieşire de eroare (E), care
are rolul de afişa un mesaj de eroare în cazul trecerii sale pe „1” logic.
Se poate observa că valorile binare 1010, 1011, 1100, 1101, 1111 nu au
fost folosite, astfel că la întocmirea tabelelor de tip Veitch-Karnaugh, aceste
valori se vor inlocui cu „x”, adică valori denumite nu ţine cont sau reyiduri.
În continuare vom trece la scrierea funcţiilor de ieşire de la Z0-Z9

Pentru ieşirea suplimentară E funcţia va fi :

E=A0A 1+A0A2

La

funcţionarea unui astfel de circuit se pot observa apariţia unor afişări


intermitente, datorită întârzierilor din circuit şi faptului că ieşirile sunt active
tot timpul.
Pentru evitarea acestor mici erori care pot fi neplăcute de multe ori se
poate opta pentru o intrare suplimentară numită STROBE. Aceasta are
rolul de a bloca toate intrările atâta timp cât este pe “0” logic, astfel nu
apare nici un semnal la ieşirile porţilor ŞI-NU. Când se primeşte semnalul
de TACT circuitul se deschide şi operează în regim normal.
În continuare (fig.12.2) prezentăm circuitul Decodificator de tip BCD împreună cu
intrarea STROBE:

Figura 2. Schema logică pentru un decodificator BCD

Implementarea unui Decodificator BCD în programul Xilinx ISE Design Suite 8.1.i
Pasul 1: Pentru implementarea circuitului avem nevoie să pornim programul
Xilinx
Pasul 2: Se deschide o fereastră în care, pentru crearea unui nou proiect, vom
merge la Meniul File ->New Project->
Pasul 3: În fereastra mică din mijlocul imaginii la Project name, introducem
numele proiectului iar în căsuţa alăturată la Project location specificăm locul de
pe calculator unde dorim să fie salvat proiectul nostrum
Pasul 4: În fereastra următoare selectăm tipul familiei de circuite pe care le vom
folosi şi anume XC9500 CPLDs.
Pasul 5: În fereastra următoare specificăm numele schemei şi tipul fişierului pe
care îl creem şi anume Schematic
Pasul 6: În fereastra următoare vom implementa schema decodificatorului BCD.
Schema se va implementa prin plasarea pe placa a porţilor logice folosind
Add Symbols. Firele de legătura care conectează ieşirile porţilor la intrările
celor din nivele logice superioare se face cu ajutorul Add Wire. Intrările şi
ieşirile circuitului se amplasează folosin Add I/O Marker.
Schema logică pe care trebuie să o implementăm este prezentată în figura
următoare
Pasul 7: Schema corect implementată este prezentată în imaginea următoare

Pasul 8: După ce schema este terminată ea trebuie implementată. Din meniul


principal selectăm Implement Top Module.
Pasul 9: Dacă schema este corect implementată obţinem următorul raport de
implementare.
Pasul 10: Pentru a realiza simularea circuitului decodificator schimbăm modul de
lucru în Behavioral Simulation. Vom crea un fişier de tipul test bench cu numele
dorit de noi spre exemplu test.
Pasul 11: În fereastră următoare selectăm tipul de circuit şi anume
Combinatorial, iar mai jos vom introduce o valoare în căsuţa Initial Lenght
of Test Bench (acest lucru se face în funcţie de numărul intrărilor în circuit,
adică după relaţia: (2 la puterea numerelor de intrare x100)ns ).
Fereastra următoare este edificatoare în sensul alegerilor pe care trebuie să le
facem.
Pasul 12: În fereastra umrătoare vom introduce valorile intrărilor circuitului din
punct de vedere al valorilor logice ale acestuia bazândune pe tabelul de adevăr.
Pasul 13: După cum se poate observa în partea de sus apar intrările cu albastru,
unde vom pune pe „0” sau pe „1” valorile fiecărei intrări, adică reprezentăm
valoarea numărului zecimal în binar (0=0000,5=0101,15=1111,etc.), astfel încât
vom obţine următoarea reprezentare a valorilor intrărilor:
Pasul 14: Pentru a simula schema convertorului vom folosi modulul Simulation:
Din nou, dacă am procedat corect în figura obţinută se poate observa că pentru
fiecare combinaţie de intrare avem activă doar o singură ieşire, ceea ce dovedeşte
că circuitul nostru funcţionează OK.

S-ar putea să vă placă și