Newsgroup: it.hobby.elettronica.digitale
Titolo: Qualche chiarimento sulle CPLD

...mi avete quasi convinto... ho giocherellato un po'col compilatore
max+plus2 della Altera per capire quale sia il livello di complessita' a cui
si puo' arrivare con le cpld piccoline tipo 7032 7064.... non so, da una
parte avevo sottovalutato le possibilita', dall'altra ho notato che alcune
configurazioni circuitali apparentemente semplici sembrano usare piu'
risorse di altre apparentemente piu' complesse... mi sfugge ancora il modo
esatto in cui vengono realizzate le funzioni nella macrocella, cioe' con
sole 32 somme di prodotti mi pare che sarebbe arduo sintetzzare un solo
74xxx, e invece ce ne stanno diversi...
ci sono altri punti che mi rimangono ancora oscuri... per esempio quando si
usa un flip flop questo viene sintetizzato con le funzioni logiche, oppure
viene usato sempre e soltanto quello presente sull'uscita delle macrocelle?
se si programma una cpld per usare come I/O anche i 4 pin dedicati alla
jtag, si perde definitivamente la possibilita' di riprogrammarla?
e' possibile creare un oscillatore a qualche MHz usando una not interna (con
quarzo esterno su due pin) nella classica configurazione di oscillatore
cmos?
...per ora e' tutto ;)
Claudio F

cmos?
si, funziona. E la cpld diventa tiepida... per vedere lampeggiare un
led con uno speed grade -10 ci vuole un divisore a 20 bit. :-)
A proposito, io non sono riuscito ancora a fargli compilare una
cascata di (2n+1) not retroazionati, il sintetizzatore mi taglia via
tutti quelli che inserisco meno uno. E non c'č  WYSIWYG che tenga.
Saluti
SB
---------------------------------------------------
togli i caratteri accentati per rispondere via mail

74xxx, e invece ce ne stanno diversi...
se non ho capito male questo passaggio, forse hai frainteso qualche
cosa: in una max7032 o 3032,  "32" č il numero di macrocelle, ed
OGNUNA di esse puň sintetizzare 5 product terms, combinarli  sulla
stessa macrocella oppure utilizzare termini delle macrocelle
adiacenti... insomma, viene molto piů di 32 product terms.


tutti quelli che inserisco meno uno. E non c'č  WYSIWYG che tenga.
Ho letto male: "non quarzo" al posto di "con quarzo"...
Il discorso di prima si riferisce alla configurazione in cui una not
ha l'uscita collegata con il suo stesso ingresso; cosě connessa, la
porta oscilla ad una frequenza pari (o parente...) dell'inverso del
suo tempo di propagazione. Quindi uno speed grade -10 (ns) ti permette
di ottenere un oscillatore interno a circa 20 MHz (vado a braccio, non
li ho mai misurati)
Quanto alla tua VERA domanda, devi considerare che tra i pin fisici di
ingresso e di uscita e i pin logici di una porta che tu vai a
sintetizzare, ci sono buffer, multiplexer, ecc. ecc.. Io ho fatto
oscillare una configurazione classica RC con una porta not, ma
considerando che non ha ingressi a trigger di schmith, credo fosse piů
un caso di fortuna che altro... considera inoltre che con un
collegamento del genere, ci sono un sacco di glitch che vengono
raccolti dalla massa interna al chip.
Con un quarzo, comunque, non ho mai provato. 


 sacco di glitch che vengono raccolti dalla massa interna al chip.
Questo mi lascia perplesso... vuoi dire che potrebbero esserci difficolta'
ad usare una cpld per trattare segnali di svariati MHz che invece verrebbero
gestiti correttamente da una rete tradizionale a porte cablate? Un esempio
banale (che ho provato a compilare) e' lo schema
http://stor.altervista.org/z80/schema1.htm
 Volevo vedere se si riusciva a
sostituire tutto (tranne la CPU e le due memorie) con una sola cpld, e devo
dire che a parte un paio di pin mancanti ci starebbe tutto. Ora i segnali
del bus della CPU viaggerebbero attraverso la rete sintetizzata (compresi i
due 74xxx anch'essi sintetizzati), trattandosi di impulsi da 100...400nS
potrebbero avere problemi?
ciao
Claudio F

potrebbero avere problemi?
Bè, sono sicuro che la risposta te la puoi immaginare... simula il tuo
circuito. Puoi decidere la lunghezza degli impulsi e ridurla fino ai
limiti del circuito, simulare il tutto e ottenere una buona
approssimazione del comportamento finale. I modelli che si possono
ottenere dagli elementi logici di questo tipo di dispositivi sono
molto realistici e i produttori di tool di simulazione spendono una
notevole parte delle loro risorse per realizzare tali modelli. Quindi,
scrocchiati le dita e apri il waveform editor...
Saluti   
PS Su che CPLD hai sintetizzato quel circuito ? Io conto una
quarantina di pin e sul PLCC44 puoi avere massimo 36 I/O, inoltre il
routing diventa sempre più complesso (al limite impossibile) quando
cominci a saturare i pin di I/O ... 
remove ù for e-mail reply

 36 I/O
Una 3032, tralasciando il clock e il reset della CPU si usano esattamente 32
pin. Aggiungendo l'ipotetico oscillatore andrebbero via altri 3 pin. La
sintesi comunque va a buon fine senza warnings, il rpt segnala 20 lcs usate
su 32 (62%) con 29 product terms.
Grazie ancora per i chiarimenti, ho visto che le potenzialita' sono maggiori
di quanto pensavo, avevo ancora in mente le macrocelle che ho visto sul
datasheet delle EPLD.
ciao
Claudio F

 tutti quelli che inserisco meno uno. E non c'č  WYSIWYG che tenga.
Devi usare un componente che si chiama lcell.
Comunque fai attenzione, gli oscillatori sono il metodo piu' sicuro
per uccidere i pld in modo indolore.

 piu' sicuro per uccidere i pld in modo indolore.
O ma insomma, adesso che mi ero rassicurato;).... perche'?
Claudio F

 wrote in message
yrBac.162122$O31.6...@news4.tin.it...

Perche' facendo funzionare in modo lineare una mcrocella si
crea un forte consumo di corrente localizzato in una piccola
area di silicio.
Dall'esterno non ti accorgi quasi di niente, ma quella macrocella
sta bollendo.
Per prevenire questo pericolo, molti software di sintesi danno un
errore se riscontrano un possibile loop nella logica. Ma se uno crea
il feedback all'esterno, lo fa a suo rischio.
Il discorso e' un po' diverso nella fpga a lut dove e' praticamente
impossibile riuscire a mandare in comportamento lineare un percorso
logico che comprende una ram. Ma anche qui puo' esserci una
dissipazione elevata causata da frequenze molto alte di commutazione.
Per questi motivi e altri, e' sempre meglio usare un oscillatore esterno.

 da frequenze molto alte di commutazione.
Se non ho capito male i limiti operativi di una cpld (ammettendo tensioni e
correnti entro le specifiche) sono quindi legati piu' alla dissipazione che
ad altro. Come si fa a capire se un certo progetto (per esempio
l'"elaborazione" di frequenze elevate) stressa troppo il componente oppure
no? Lo stesso routing interno dovrebbe influire...
Claudio F

 no? Lo stesso routing interno dovrebbe influire...
Infatti e' uno dei problemi. Fortunatamente riguarda soprattutto chi
progetta sul silicio, dove si fanno simulazioni per determinare le
temperature delle varie zone del chip cercando di distribuirle bene,
visto che il silicio e' un cattivo conduttore di calore.
Per le logiche programmabili non so se esistano strumenti simili,
ma e' piu' difficile che ci siano problemi del genere, anche se ho letto,
oscillatori a parte, di guasti dovuti a dissipazioni eccessive localizzate.
In genere bisogna accontentarsi dei risultati forniti dai programmi di
progettazione e restare sotto la frequenza massima ammessa anche se
il pld e' capace di funzionare al triplo della frequenza calcolata.