Discussioni di carattere generale sull'elettronica analogica e digitale. Didattica e applicazioni pratiche.
#5307
Salve a tutti :)
Potreste gentilmente aiutarmi a risolvere l'esercizio seguente (riguardante la logica combinatoria)?
Date due parole digitali a 3 bit ciascuna A=a2 a 1 a0 ed B=b2 b1 b0 progettare un circuito logico che presenti un'uscita attiva alta quando le due parole hanno distanza di hamming uguale a 2.
Posto il ragionamento che ho seguito io (e che mi ha portato ad una soluzione sbagliata)??
Grazie.
#5310
Sembra un problema da settimana enigmistica!
La distanza di hamming dovrebbe essere il numero di posti in cui le cifre delle parole sono diverse , quindi basta un or esclusivo per verificare se a(i) e b(i) sono uguali o diversi. Fatto questo serve un circuito combinatorio che abbia una uscita alta quando ci sono SOLO DUE 1 o, il che è lo stesso ma solo per una parola di tre bit, UN SOLO 0 (non è elegante perchè non generale,ma pazienza).
Dovrebbero bastare tre and, probabilmente con un not su un ingresso, sulle tre coppie di uscite dei tre xor per verificare quando c'è un solo zero.

ps. hai dimenticato di postare il tuo ragionamento.......
#5313
Salve a tutti :)
Ciao double e grazie per avermi risposto.Si scusami per distanza di hamming intendevo il numero di coppie di bit di ugual peso tra le due parole digitali ad essere diverse.
Una domanda: è possibile riportare sul forum, in qualche modo, lo schema a porte logiche di un circuito? In modo da riportare il circuito che ottengo.
Comunque una soluzione, in questo caso giusta, l'ho ottenuta compilando la tavola della verità e mettendo 1 in corrispondenza delle combinazioni dei bit a(i) ed b(i) che mi davano distanza due (cioè due coppie di bit di ugual peso diverse tra loro) e ricavando in seguito la funzione di commutazione in forma minima SP. Il procedimento non è molto laborioso però credo che il prof non voglia questa soluzione perchè si fa uso di molte porte logiche.
L'altro ragionamento che ho fatto lo posso spiegare riportando il circuito che ottengo e da qui ritorno alla domanda di cui sopra.
Grazie ancora.
#5314
Buongiorno @ElettroNewbie ,

per postare le immagini troverai sotto all'Editor di testo la TAB Invia Allegati dove potrai da prima caricare quello che desideri cliccando su Aggiungi file per poi inserirli in un punto qualsiasi del testo con il comando Inserisci in linea con il testo...
Bios ringraziano
#5316
Mi spiace ma fidocadj non è supportato attualmente, posta in formato immagine che è anche consentito con i link esterni...
#5317
Una possibile soluzione usa 5 XOR, una NOT, una OR a 3 ingressi e una AND a due ingressi.
L'ho disegnata di getto e non l'ho simulata, quindi potrebbe avere qualche falla :-)
Allegati
logica.jpg
Possibile soluzione (da verificare)
Bios ringraziano
#5321
Salve a tutti :)
Grazie mille per l'attenzione.
Posto di seguito il circuito a cui avevo pensato:

sNTi0Qn.png
sNTi0Qn.png (1.82 KiB) Visto 1092 volte


Il problema è che il circuito mi da anche uscita alta per le due stringhe A=111 ed b=111 cioè per due stringhe uguali :(
Ciao @zioelp non riesco a capire che ragionamento dovrei seguire per arrivare alla soluzione.
Grazie ancora per le risposte.

Comunicazione di servizio: Usare preferibilmente la funzione allegati del sito in quanto i servizi di hosting immagini esterni non sono affidabili, grazie.
Bios
#5323
ElettroNewbie ha scritto:Il problema è che il circuito mi da anche uscita alta per le due stringhe A=111 ed b=111 cioè per due stringhe uguali :(

La parte destra del circuito che citi è il classico "parity detector" (in questo caso a tre soli bit), concepito per indicare se la quantità di bit 1 in ingresso è pari (in questo caso 0 e 2) oppure dispari (in questo caso 1 e 3).
In altre parole: con tre bit hai otto possibili configurazioni binarie, e cioè 000, 001, 010, 011, 100, 101, 110, 111.
La 000 non ha bit a livello 1, quindi il conteggio dei bit a livello 1 è nullo. Le configurazioni 001, 010, 100 hanno un solo bit a livello 1, e dato che 1 è una cifra dispari, il conteggio dei bit a livello uno è dispari; 011, 101, 110 hanno due bit a livello 1, e dato che la cifra 2 è pari, il conteggio è pari; 111 ha tre bit a livello 1, dando luogo a un conteggio dispari.
Le tre XOR della parte destra accettano tre bit in ingresso e "reagiscono" ponendo l'uscita ad un livello tot, se il conteggio di bit 1 è dispari, e al livello opposto, se il conteggio è pari.
Dico solo "livello tot", senza specificare 1 o 0, perché in realtà l'ultima unità logica a destra è una XNOR, e quindi fornisce in uscita l'opposto di ciò che si avrebbe con una XOR.
Livelli reali a parte, l'importante è sapere che la "cascata" di XOR (qui ne abbiamo tre, ma potrebbero essere in quantità a piacere) "capisce" se la stringa di bit in ingresso ha una quantità pari oppure dispari di bit a livello 1.
Ciò detto, aggiungiamo al circuito le tre XOR di sinistra, che qui fanno il proprio mestiere consistente nell'indicare se i due ingressi stanno ricevendo bit uguali, entrambi a 0 o entrambi a 1, oppure bit diversi, cioè uno a 1 e l'altro a 0.
Tu dici che il circuito si lascia ingannare quando in ingresso presenti le configurazioni 111, e in effetti, se ci pensi su, noti che 111 ha tre bit a livello 1, e 3 è una quantità dispari.
Ad occhio, sembrerebbe lecito aspettarsi che il circuito fallisca anche con le configurazioni 000, ma per ora lasciamo da parte tale ipotesi.
Restano le configurazioni con uno oppure due bit diversi, e sappiamo che a te interessa segnalare solo la seconda.
Il ragionamento che ha portato al mio circuito è semplice: ho un "parity detector" che discrimina tra i casi con zero e due bit diversi (che hanno parità pari), e i casi con uno e tre bit diversi (che hanno parità dispari).
Se fai in modo che il circuito emetta un livello uno per i casi a parità pari, devi solo togliere di mezzo il caso con "zero bit diversi" capace d'ingannare il detector, e puoi farlo aggiungendo una OR a tre ingressi e una AND a due.
In breve, la OR ti indica con un livello 0 in uscita la condizione di stringhe nulle, e se usi tale livello 0 come "gate" per il segnale in uscita (attraverso la AND), fai in modo che il circuito non si lasci più ingannare dai due gruppi di bit 000 che, avendo parità pari, attiverebbero a sproposito la segnalazione in uscita.
Capisco che quanto sopra possa apparire (salvo errori) come la classica pensata "Steve Rogers" che toglie il fermo all'asta della bandiera invece di arrampicarsi come fanno gli altri soldati, ma se il fine giustifica i mezzi, probabilmente il rozzo disallinea gli interi :-)
#5324
ElettroNewbie ha scritto:non riesco a capire che ragionamento dovrei seguire per arrivare alla soluzione.

passo 1) per trovare le differenze usa 3 xor sui bit a(i) e b(i) ed ottieni la nuova di 3 bit parola X(0,1,2)
passo 2) con la mappa di Karnaugh (dovresti saperla usare) crei una rete combinatoria che generi un 1 in uscita quando hai SOLO DUE 1 sui 3 ingressi x0,x1,x2

Vedrai che 99/100 ottieni il circuito di zioelp.
Vendo

OWON HDS2202S nuovo imballo originale 190.00 eur[…]

Sono comuni interruttori a levetta DPDT. Se le due[…]

Visita il nostro canale telegram