Ciao a tutti,
sto programmando Arduino in modo da implementare delle porte logiche, attraverso la tabella di verità e gli operatori logici dell'IDE ho simulato il funzionamento delle porte logiche accendendo e spegnendo dei led. Fin qui tutto ok, nulla di complicato.
Adesso vorrei simulare il funzionamento di un Multiplexer e di un Demultiplexer... qualcuno ha esperienze in merito?
Grazie a tutti
Bisognerebbe vedere come hai simulato una porta per poter dire.
Nel senso che se simuli tutte le porte di un mux... ottieni un mux.
Ad esempio per me questa è una porta AND a due ingressi:
y = a & b;
Mentre questo è un addizionatore a un bit con riporto (due AND, due XOR, una OR):
out = in1 ^ in2 ^ inrip;
outrip = (in1 & in2) | ( (in1 ^ in2) & inrip);
Un mux 4 ingressi 1 uscita potrebbe essere così (quattro AND, una OR):
out = (in0 & !a & !b) | (in1 & a & !b) | (in2 & !a & b) | (in3 & a & b);
Ho simulato le porte con gli operatori logici:
&& AND
|| OR
! NOT
Per la XOR dalla tabella di verità ho calcolato i maxtermini e la somma dei prodotti, con gli operatori logici AND e OR ho calcolato il risultato
((A)||(B))&&(!(A)||!(B));
Ok, la logica negata dei maxtermini (prodotto di somme) mi ha sempre confuso, personalmente sono a mio agio con i mintermini (somma di prodotti) perché più simile al normale pensiero umano, anche se il risultato matematico/logico finale non cambia.
Detto ciò, gli operatori [color=red]&& || ! [/color]
(logici) lavorano sulla booleanità dei valori (56 && 45 -> 1
).
Invece [color=red]& | ^ [/color]
(bitwise) effettuano l'operazione logica sui singoli bit delle variabili (56 & 45 -> 40
).
Il bitwise [color=red]^[/color]
è lo XOR.
Se si lavora con variabili che contengono solo 0/1 il loro uso è totalmente interscambiabile.
Il mux del mio post precedente (4 ingressi, 1 uscita, due ingressi selezione) è espresso con mintermini usando gli operatori bitwise.
Claudio_FF:
Detto ciò, gli operatori&& || !
(logici) lavorano sulla booleanità dei valori (56 && 45 -> 1
).
Invece& | ^
(bitwise) effettuano l'operazione logica sui singoli bit delle variabili (56 & 45 -> 40
).
Il bitwise^
è lo XOR.
Si, ma lui sta SIMULANDO proprio gli operatori bitwise ... se usi quelli esistenti ... che simulazione è ? ? ?
Guglielmo
Ma alla dine vuoi fare un programma che faccia da multiplexer/demultiplexer giusto? Praticamente uno di quei cosi con tanti ingressi e una sola uscita (o viceversa) in cui l'uscita singola é un ingresso alla volta o l'ingresso singolo comanda un uscita alla volta?
Se lo scopo finale é questo Arduino credo sia sprecato, visto che i multiplexer non sono "macchine intelligenti". E soprattutto le porte logiche non sono neanche strettamente necessarie, perché gestire il tutto con for ed array é più facile e veloce (secondo me). Sai come?
Silente:
Ma alla dine vuoi fare un programma che faccia da multiplexer/demultiplexer giusto?
NO, non hai capito, non vedi che sta studiando la "logica" di come scrivere via software delle cose che sono ovviamente banalmente implementate in HW ? ... il suo è uno studio teorico su "quello che c'è dietro" come "logica" !
Guglielmo