Conversione binario BCD tramite contatori
Moderatori:
carloc,
g.schgor,
BrunoValente,
IsidoroKZ
16 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
Buongiorno a tutti, sono nuovo del forum. Sono uno studente di un istituto tecnico di elettronica e mi servirebbe il vostro aiuto per un mio piccolo progetto. Devo convertire un codice binario (per il momento sto provando con 4 bit, poi lo farò con 8) in bcd usando i contatori: il concetto è semplice, un contatore de-conta in binario il numero da convertire e il secondo contatore conta in bcd. Ho pensato di usare il contatore 4029, ma non riesco a implementare il circuito. Spero che qualcuno possa aiutarmi 
-

GabrieleBe
55 1 4 - Messaggi: 37
- Iscritto il: 12 giu 2013, 16:06
- Località: Brescia, Italia
0
voti
rusty ha scritto:Non ho capito, praticamente non puoi usare un 4511?
Spiega bene, magari con uno schemino, cosa dovresti fare.
Ho 4 bit binari che devo visualizzare: il 4511 accetta come ingressi dei numeri in bcd, quindi quando deve visualizzare, ad esempio, il numero decimale 15, ovvero 1111 in binario, mi servono due display, quindi due 4511: dei 4 bit in binario originali quindi devo mandare 0101 (5 decimale)al primo 4511, che visualizza le unità e 0001 (1 decimale) al secondo 4511, che visualizza le decine.
Spero di essere stato chiaro e grazie per la risposta
-

GabrieleBe
55 1 4 - Messaggi: 37
- Iscritto il: 12 giu 2013, 16:06
- Località: Brescia, Italia
1
voti
rusty ha scritto:1111 sarebbe sempre una cifra, in esadecimale "F", tu quindi vuoi un convertitore binario->decimale da visualizzare in 7-seg.
Esattamente, voglio visualizzare le cifre da 1010 a 1111 in decimale, quindi servono due display 7 segmenti.
-

GabrieleBe
55 1 4 - Messaggi: 37
- Iscritto il: 12 giu 2013, 16:06
- Località: Brescia, Italia
3
voti
Beh direi che è un esercizio interessante
...
esercizio perché un po' più praticamente direi che non è il modo di fare quella conversione che invece è il classico lavoro per la logica combinatoria
ma comunque "sopportando" un tempo di conversione "lungo" e variabile direi che si può fare.
Io inizierei fissando un po' di punti:
i) presento il dato binario al circuito.
ii) attivo un ingresso "start conversion" che potrebbe essere circa coincidente con il preset del contatore binario.
iii) arrivato a zero il contatore binario si ferma, segnalando tra l'altro "end of conversion".
iv) nello stesso tempo si è attivato il contatore BCD che ha contato lo stesso numero di impulsi di quello binario.
Grosso modo un qualcosa tipo questo diagramma a blocchi, dove ancora si devono affinare alcune cosette...
comunque comincia col postare un inizio di schema che andiamo avanti
esercizio perché un po' più praticamente direi che non è il modo di fare quella conversione che invece è il classico lavoro per la logica combinatoria
ma comunque "sopportando" un tempo di conversione "lungo" e variabile direi che si può fare.
Io inizierei fissando un po' di punti:
i) presento il dato binario al circuito.
ii) attivo un ingresso "start conversion" che potrebbe essere circa coincidente con il preset del contatore binario.
iii) arrivato a zero il contatore binario si ferma, segnalando tra l'altro "end of conversion".
iv) nello stesso tempo si è attivato il contatore BCD che ha contato lo stesso numero di impulsi di quello binario.
Grosso modo un qualcosa tipo questo diagramma a blocchi, dove ancora si devono affinare alcune cosette...
comunque comincia col postare un inizio di schema che andiamo avanti

Se ti serve il valore di beta: hai sbagliato il progetto!
0
voti
carloc ha scritto:Beh direi che è un esercizio interessante...
Grazie mille per la risposta, naturalmente la mia realizzazione è intesa come esercizio, anche perché si può realizzare con altre tecniche, molto più convenienti
Nel frattempo stamattina sono giunto a realizzare un circuito funzionante, leggermente diverso da quello che hai postato: praticamente entrambi i contatori contano in up e il conteggio si ferma quando le uscite del contatore binario sono uguali al dato binario inserito (per verificare questo ho usato 4 xor che vanno in or). Il problema di questo circuito sta nel fatto che dopo aver eseguito il primo conteggio, non so come presettare i contatori a zero. Secondo te questa soluzione è valida o è meglio quella che hai proposto?
-

GabrieleBe
55 1 4 - Messaggi: 37
- Iscritto il: 12 giu 2013, 16:06
- Località: Brescia, Italia
2
voti
Beh nella tua realizzazione ci vanno in più le porte per fare il confronto (BTW se cerchi ci sono comparatori tipo 4585 o 7485 per 4 bit o 74688 per 8 bit, magari ti semplifichi un po' la vita
) ma se è ok per te
D'altra parte ad esempio i 4029 non hanno l'uscita "zero" che serve nel mio schema
ma invece hanno il carry out che va alto per conteggio=15 invece. Ci sarebbe da mettere un po' a posto i dettagli e/o cercare qualche altro contatore.
Oppure potresti vedere di ridurre un po' la logica di comparazione considerando che se conti solo "up" non ti serve di controllare tutti i bit (cioè che quelli che devono essere alti siano alti e che quelli che devono essere bassi siano bassi) come fai con gli XOR.
Invece è sufficiente controllare solo che quelli che devono essere alti siano alti
Piuttosto considera il fatto di sincronizzare il comando di start con il clock dei contatori, se sono due cose non correlate rischi di attivare il circuito troppo vicino ad un fronte di clock con risultati imprevedibili.
Infine per riavviare non mi pare ci debbano essere grandi problemi... non hai dei reset in giro ?
D'altra parte ad esempio i 4029 non hanno l'uscita "zero" che serve nel mio schema
Oppure potresti vedere di ridurre un po' la logica di comparazione considerando che se conti solo "up" non ti serve di controllare tutti i bit (cioè che quelli che devono essere alti siano alti e che quelli che devono essere bassi siano bassi) come fai con gli XOR.
Invece è sufficiente controllare solo che quelli che devono essere alti siano alti
Piuttosto considera il fatto di sincronizzare il comando di start con il clock dei contatori, se sono due cose non correlate rischi di attivare il circuito troppo vicino ad un fronte di clock con risultati imprevedibili.
Infine per riavviare non mi pare ci debbano essere grandi problemi... non hai dei reset in giro ?
Se ti serve il valore di beta: hai sbagliato il progetto!
0
voti
carloc ha scritto:se cerchi ci sono comparatori tipo 4585 o 7485 per 4 bit o 74688 per 8 bit, magari ti semplifichi un po' la vita
Infatti avevo pensato di usare un comparatore, ma non l'avevo a disposizione...
carloc ha scritto:Oppure potresti vedere di ridurre un po' la logica di comparazione considerando che se conti solo "up" non ti serve di controllare tutti i bit (cioè che quelli che devono essere alti siano alti e che quelli che devono essere bassi siano bassi) come fai con gli XOR.
Invece è sufficiente controllare solo che quelli che devono essere alti siano alti
Grazie per il consiglio, non ci avevo pensato
Per il reset avevo pensato di collegare tutti i preset dei contatori a massa e di mandare alto il pin del preset enable per fornire una sorta di reset. Potrei usare il segnale in uscita dalla or che ha come ingresso le xor della comparazione. Praticamente dovrei fornire un impulso quando questo segnale passa da 0 a 1, ma non saprei come...
-

GabrieleBe
55 1 4 - Messaggi: 37
- Iscritto il: 12 giu 2013, 16:06
- Località: Brescia, Italia
2
voti
Sì ok ottimo
... preset in a zero e preset enable diventa un reset
Però invece ti sconsiglio di collegare questo preset enable all'uscita comparazione ok
prima di tutto cosa che fai azzeri anche il contatore BCD? direi di no altrimenti dove leggi il risultato? Ma anche e soprattutto non mai una bella cosa fare questi "reset acrobatici" che funzionano in base al tempo di propagazione delle porte impiegate.
Mi spiego:
comparatore vero => reset asserito => dato a zero => comparatore falso
questo "giro" viene fatto in un tempo "piccolo" e poco prevedibile... dipende dai tempi di propagazione delle porte "implicate". Ora non è detto che non funzioni, anzi è pieno il mondo di schemi fatti così, ma è rischioso, può essere che funzioni o meno in base a tolleranze di costruzione degli IC, tensione di alimentazione, carico sulle porte, temperatura (oroscopo
) in somma secondo me è il sistema di fare un circuito che funziona in modo marginale, come dire "per fortuna".
Se ti avvicini al mondo della logica sequenziale ti consiglio caldamente di fare macchine sincrone, ogni cosa deve essere rigidamente provocata da una transizione del clock. In questo modo hai tempi certi e ripetibili che tra l'altro ti permettono di "sfruttare" la velocità della particolare famiglia logica che stai usando in "sicurezza".
In questo caso potresti semplicemente mettere un flip-flop D...
ed otterresti un impulso di reset lungo proprio un periodo
ora magari non ho capito come gestisci lo start della conversione invece
se fai uno schema -con FidoCadJ mi raccomando
- vediamo anche i dettagli
... preset in a zero e preset enable diventa un reset
Però invece ti sconsiglio di collegare questo preset enable all'uscita comparazione ok
prima di tutto cosa che fai azzeri anche il contatore BCD? direi di no altrimenti dove leggi il risultato? Ma anche e soprattutto non mai una bella cosa fare questi "reset acrobatici" che funzionano in base al tempo di propagazione delle porte impiegate.
Mi spiego:
comparatore vero => reset asserito => dato a zero => comparatore falso
questo "giro" viene fatto in un tempo "piccolo" e poco prevedibile... dipende dai tempi di propagazione delle porte "implicate". Ora non è detto che non funzioni, anzi è pieno il mondo di schemi fatti così, ma è rischioso, può essere che funzioni o meno in base a tolleranze di costruzione degli IC, tensione di alimentazione, carico sulle porte, temperatura (oroscopo
Se ti avvicini al mondo della logica sequenziale ti consiglio caldamente di fare macchine sincrone, ogni cosa deve essere rigidamente provocata da una transizione del clock. In questo modo hai tempi certi e ripetibili che tra l'altro ti permettono di "sfruttare" la velocità della particolare famiglia logica che stai usando in "sicurezza".
In questo caso potresti semplicemente mettere un flip-flop D...
ed otterresti un impulso di reset lungo proprio un periodo
ora magari non ho capito come gestisci lo start della conversione invece
Se ti serve il valore di beta: hai sbagliato il progetto!
16 messaggi
• Pagina 1 di 2 • 1, 2
Chi c’è in linea
Visitano il forum: Nessuno e 181 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



