Vai al contenuto
PLC Forum


Logica combinatoria


Messaggi consigliati

Inserito:

Ciao a tutti,
spero sia il posto giusto dove chiedere aiuto, ho appena trovato questo forum su google e non sono pratica di qui.

Per un esercizio universitario devo realizzare una funzione utilizzando porte logiche, lookuptable e multiplexer... ma sono bloccata.

Ho una sequenza di ingresso di 9 parole composte da 6 bit, formate da un identificativo che occupa 2 bit (Z=00,U=01,D=10,T=11) e un valore numerico da 0 a 15.
Ad esempio:

  1. T0
  2. D5
  3. U9
  4. D3
  5. Z6
  6. T5
  7. T9
  8. Z2
  9. U7

In uscita devo avere 4 valori, corrispondenti al valore numerico massimo aggregato per identificativo.

Nello specifico esempio avrò, aggregando per identificativo:

  1. Z: max(6,2)=6
  2. U: max(9,7)=9
  3. D: max(5,3)=5
  4. T: max(0,5,9)=9

Devo disegnare lo schema del circuito: sto provando in mille modi diversi, so che deve esserci una soluzione semplice ma sono andata in tilt e non riesco a trovarla.

Qualcuno mi potrebbe dare una mano per favore? Grazie!


Inserita:

Magari prova a pubblicare il testo integrale dell'esercizio. Da quello che scrivi non si capisce molto.

Inserita: (modificato)

Penso che ti serva un decoder 2-4 (da 2 bit a 4 linee) per avere su ciascun filo l'identificativo.

A questo punto, aprirai una porta per ogni identificativo, che faccia passare i 4 bit del valore. Ora userai un comparatore a 4 bit che ti dice se il valore attuale è maggiore del precedente (il valore iniziale dovrà essere 0, per cui prevedi una procedura/linea di Reset), e se lo è, lo memorizzi.

Alla fine del processo (che dovrà avere un qualche segnale di strobe che ti dice che il numero in ingresso è disponibile), ti ritroverai automaticamente i valori massimo per ogni identificativo, fino all'azionamento del Reset.

Come integrati di base, per il decoder 2-4 puoi usare un 74xx139, come comparatore a 4 bit un 74xx85, come latch (memoria) un 74xx75 o 74xx77.

Ah, bei tempi quando si facevano 'sti bei circuitini cablati... Poi GAL/PAL, micro e FPGA...

Modificato: da Ctec
Inserita:

@Ctec, credo di aver capito grazie.

Almeno in teoria. Nella pratica faccio fatica a immaginarmi lo schema, considerando anche che il resto della rete non è pensata per essere sincrona.

 

@Livio, l'esercizio non riesco a postarlo per intero, fa parte di un ragionamento molto più ampio.

 

Provo comunque a spiegarmi diversamente, ho preparato degli schemi per farmi capire meglio.

Esempio.png.d15b5aeb61cc6584e4ddc9631c83

Il mio circuito ha 9 ingressi e 4 uscite. Sia gli ingressi che le uscite sono parole di 5 bit (non 6 come prima, ho ridotto il numero di informazioni).

 

 

Facendo un esempio:

EsempioPieno.png.9a498f01db37f0eec4ea5d6

Avrò i simboli A,B,C,D rappresentanti con 2 bit ciascuno (A=00,B=01,C=10,D=11) ed i valori rappresentati con 3 bit (numeri da 1 a 7); quindi ad esempio C5=10|101 e B4=01|100 (il pipe | serve solo per far capire dove finisce il simbolo e inizia il valore).

 

I 4 valori in uscita sono dati dalla coppia, una per simbolo, del simbolo stesso e del valore massimo tra quelli associati al medesimo.

Quindi ad esempio l'uscita legata al simbolo A sarà determinata dal valore massimo tra A7 e A1, quella legata a B determinata dal massimo tra B4 e B0.

Inserita:

Dunque, cosa intendi che non sono sincroni? Che non saranno tutti contemporanei gli In? Questo lo immagino. Ma in tal caso dovrai avere un segnale che ti dice che il dato è stabile e valido, quello che nel mio post ho chiamato Strobe.

Se ti arrivano serializzati, essendo a lunghezza fissa, potrai deserializzarli, ma senza un clock è un po' complicato. Comunque, alla fine di ogni "informazione" te lo saprai e potrai creare un segnale.

Purtroppo devi necessariamente memorizzarti il valore precedente di ogni informazione, altrimenti come calcoli il massimo e dove lo metti?

O almeno, diciamo che non mi viene in mente nulla di immediato. Forse qualcosa in VHDL per FPGA, ma ho perso la mano in tali sistemi...

Inserita:

sì, il contesto è proprio FPGA e VHDL.

effettivamente, non ci pensavo, potrei costruire un blocco in vhdl con all'interno un semplice ciclo for...loop.

 

in questo caso potrebbe essere molto molto semplice. credo almeno...

ci provo. grazie intanto :)

Inserita:

Bisognerà che mi ripassi il VHDL, sono quasi 10 anni che non ci faccio nulla.

Qualcuno ha un testo aggiornato in pdf?

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...