Jump to content
ELFORUM - Forumul electronistilor

Implementare decodificator binar-zecimal


Recommended Posts

Dupa cum am scris in titlu as vrea sa fac un decofificator din cod binar in cod zecimal, activ pe nivel logic 0, cu 4 intrari de selectie si 16 iesiri. Acest decodificator trebuie implementat cu porti logice inversoare ( NU ) si porti logice SI-NU.

Am idee cum se face. Dupa ce m-am jucat cu diagrama Karnaugh am obtinut pentru o iesire urmatoarea functie:

f(15) - una din iesiri ( ultima iesire < am numerotat de la f(0) -> f(15) )

 

f(15) = (I1)*(I0) + (I1)*I0 + I1*(I0) + (I3)*I1 + (I2)*I1

 

Obs. am notat : I1 - intrare si (I1) - intrare negata

 

Ce nu stiu eu este cum sa implementez functia data doar cu porti inversoare NU si cu porti SI-NU cu cate 2 intrari. Mi-ar fi fost foarte usor sa folosesc porti NU, SAU, SI cu cate 2 intrari.

Astept pareri.

Link to comment
  • Replies 15
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Din cate imi aduc eu aminte, daca vrei sa implementezi cu porti si-nu/sau-nu din diagrama K iei pentru minimizare 0-rile in loc de 1, iar din functia SAU este rel. usor de facut SI, cu formula De-Morgan: !(a+b) = !a*!b, daca ai functia a+b si vrei sa-l faci cu porti SI si INV => !!(a+b)= !(!a*!b)

Link to comment

Ce nu stiu eu este cum sa implementez functia data doar cu porti inversoare

Nu cred ca este posibil asa ceva. Inversorul accepta o singura variabila de intrare (operator unar, parca se cheama), in timp ce functia ta este de mai multe variabile.Cirip
Link to comment

Ms ptr link. Stiu relatiile lui De Morgan. Dar vezi tu ... ca sa obtin inmultirea a doua intrari trebuie sa folosesc SAU-NU. Iar eu trebuie sa folosesc numai porti NU si porti SI-NU. Asta e durerea. Daca folosesc porti SI-NU obtin adunarea a doua intrari. Cum am dat si exemplul de mai sus, nu pot obtine cu porti SI-NU ceva de genu : (I1)*(I0) pentru ca mai tarziu sa le pot aduna, iar inmulti si sa minimizez functia.

Link to comment

Porti NU si porti SI-NU. Doar aceste 2 tipuri mi s-au impus sa le folosesc....Dar vezi tu ... ca sa obtin inmultirea a doua intrari trebuie sa folosesc SAU-NU. Iar eu trebuie sa folosesc numai porti NU si porti SI-NU. Asta e durerea....

A, ok. Pai atunci De Morgan te scoate. Cu el convertesti suma in inmultire si reciproc. Sau imi scapa ceva?
Link to comment

Pai hai sa le luam pe rand. Am functia asta f(15) = (I1)*(I0) + (I1)*I0 + I1*(I0) + (I3)*I1 + (I2)*I1Eu pot folosi doar porti NU si porti SI-NU.introduc (I1)*(I0) in poarta SI-NU si voi obtine I1 + I0 introduc (I1)*I0 in alta poarta SI-NU si voi obtine I1 + (I0)introduc I1*(I0) in alta poarta SI-NU si voi obtine (I1) + I0introduc (I3)*I1 in alta poarta SI-NU si voi obtine I3 + (I1)introduc (I2)*I1 in alta poarta SI-NU si voi obtine I2 + (I1)Dupa care voi avea nevoie de porti SAU si nu am facut nici o minimizare, dapai sa ajung la iesire.Este asa sau nu m-am gandit eu bine ?

Link to comment

Pai hai sa le luam pe rand. [...]Dupa care voi avea nevoie de porti SAU si nu am facut nici o minimizare, dapai sa ajung la iesire.Este asa sau nu m-am gandit eu bine ?

Imi e greu sa urmaresc, dar mi se pare ca rationamentul nu este dus pana la capat. E ca o ecuatie la care faci o parte din calcule si apoi te opresti. Nu ai ajuns inca la rezultatul final.Pe de alta parte, nu cred ca poti indeplini simultan cerinta de minimizare si restrictia tipului de porti. Daca vrei numai un anumit tip de porti, implementarea nu mai este minimala.Du transformarile pana la capat. Fa in asa fel incat expresia sa contina numai NU si SI-NU si dupa aia incerci sa minimizezi prin factorizare si alte cele, fara De Morgan.
Link to comment

Porti NU si porti SI-NU. Doar aceste 2 tipuri mi s-au impus sa le folosesc.

...

Dar vezi tu ... ca sa obtin inmultirea a doua intrari trebuie sa folosesc SAU-NU. Iar eu trebuie sa folosesc numai porti NU si porti SI-NU. Asta e durerea.

...

 

A, ok. Pai atunci De Morgan te scoate. Cu el convertesti suma in inmultire si reciproc. Sau imi scapa ceva?
asta imi aduce aminte ca z80 nu facea inmultiri, ca nu putea, putea face impartiri, adunari, si scaderi.

ca sa faci inmultiri, pur si simplu adunai pana la x valoare, o puneai in acumulator, si urmau restul operatiilor...

 

de-aia inmultirea era lenta si scrisa in asm... si cum grafica fluenta depinde de viteza cu care se calculeaza niste inmultiri...!!!

z80 era, cui nu stie, procesor pe 8 biti...

Link to comment

Am functia asta f(15) = (I1)*(I0) + (I1)*I0 + I1*(I0) + (I3)*I1 + (I2)*I1 ?? de ce nu notezi cu literef(15) = (!b*!a) + (!b*a) + (b*!a) + (!d*b) + (!c*b)a = i0b = i1...(a) = !af(15) cu porti si-nu: !!(f(15), si dezvolti => f(15)= !( !(!b*!a) * !(!b*a) * !(b*!a) * !(!d*b) * !(!c*b) ) ta-da, ai numai si-nu, si inv.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines