portabilità logica 74xx

Sezione dedicata alle logiche programmabili

portabilità logica 74xx

Postby Ludo69 » 02 Feb 2013, 12:30

Salve,
mi sto dilettando a fare un progettino su CPLD sia usando del VHDL (che sto appena imparando) sia usando lo schematico.
Sto usando Quartus ed essendo io un tecnico elettronico già svezzato sulle logiche standard (74xx per intenderci) trovo molto intuitiva la libreria che permette il piazzamento sullo schematico di integrati tipo 74xx.

Però capisco che poi Quartus "apre" quegli integrati, così come sono stati definiti, e ne implementa le sottofunzioni, e quì viene il dubbio per strutture tipo, ad esempio, lo schift register 74164

http://dawnofthegeeks.com/software_rend ... 20SIPO.jpg

Il 74164 è formato da 8 ff con il D ogniuno pilotato dall'uscita dell'altro e tutti i CK insieme, orbene se sono tutti sullo stesso chip e collegati vicini tra loro (ovvero se sono dentro un 74164 FISICO) allora è ovvio che al colpo di CK ogni ff riesce a catturare l'uscita del ff precedente prima che anch'essa cambi per effetto del CK, ma sulla CPLD (e a maggior ragione sulle FPGA) i ff possono essere piazzati in punti non noti del chip con collegamenti non prevedibili a priori e per assurdo se il primo ff avesse un collegamento corto con il CK, mentre il secondo ff avesse un collegamento tortuoso e lungo con il CK ma esistesse un collegamento breve e rettilineo tra i due ff allora al secondo ff potrebbe non essere garantito il tempo di permanenza su D del vecchio bit da acquisire, spescie se i ff hanno un tempo di transito molto piccolo, mome normalmente è con le attuali tecnologie.

Sto cercando il pelo nell'uovo o il discorso che faccio è sensato?

Se non sono stato chiaro ditelo, che non mi offendo!
Ludo69
 
Posts: 32
Joined: 22 Apr 2012, 15:09
Location: Bracciano (RM)

Re: portabilità logica 74xx

Postby flz47655 » 02 Feb 2013, 14:09

Ciao
Il discorso è sensato, su praticamente tutte le logiche programmabili ci sono delle linee dedicate ottimizzate per basso clock skew proprio per permettere elevate frequenze. Quartus conosce i ritardi di propagazione ed "avverte" di eventuali problemi, nel peggiore dei casi la frequenza massima dovrà essere abbassata per permettere la corretta propagazione del segnale di clock

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: portabilità logica 74xx

Postby deluca » 02 Feb 2013, 14:35

Il discorso invece è leggermente diverso... anche se concordo.

@flz,
quello che dici tu si ha quando avendo sviluppato molti moduli sincroni con il clock principale abbiamo necessità di avere un sincronismo perfetto tra i vari oggetti.... quindi si stabiliscono vie preferenziali per i clock dedicati ed eventualmente si aggiusta la fase dei clock in uscita dai pll.

Nel caso di connessioni tra ff per la definizione di un IC sequenziale, come in questo caso, sn74164, il sintetizzatore al momento di analizzare il timing mostra quali sono le performance del dispositivo appena sintetizzato:

nel caso di un semplice SN74164 il risultato è questo in una cpld EPM3032....
Info: Clock "CLK" has Internal fmax of 227.27 MHz between source register "74164:inst|3" and destination register "74164:inst|4" (period= 4.4 ns)


abbiamo una limitazione a 227.27Mhz causa il collegamento tra il ff 3 e il ff 4 di questa configurazione su cui non è possibile intervenire.
Domanda che sorge spontanea:
Abbiamo mai progettato un circuito con soli integrati TTL in grado di lavorare a tale FREQ? .... la risposta è no.... perche i TTL non possono lavorare a questa Freq.
Quindi il risultato che stiamo ottenendo è veramente eccezionale e ce lo teniamo ben stretto.

Nelle versioni prof di quartus cmq c'è la possibilità di eseguire connessioni manuali tra i LE tali da ottimizzare questo risultato ma è una operazione abbastanza
delicata e difficile.....

PS. lo stesso chip istanziato su una Stratix IVGX arriva a 2036.66 Mhz, ma se le uscite vengono direttamente connesse all' I/O la freq deve essere
limitata ad un Max di 400Mhz per non avere imcompatibilità legata al periodo ristretto dell toggle I/O.

ciao
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: portabilità logica 74xx

Postby legacy » 02 Feb 2013, 16:47

si riservano linee preferenziali di clock per i motivi detti
ma anche, al lato strumento, per ridurre l'albero di ricerca della soluzione di mapping fisico
che altrimenti diventerebbe esponenzialmente infinito richiedendo
un tempo computazionale esponenziale al cubo rispetto alla compexity da vagliare

significa che intervenendo manualmente (nella versione prof) si possono superare i limiti della soluzione proposta
appunto perche' non e' un ottimo assoluto ma subottimo, e questo significa anche che
il progetto dipende fortemente dalle condizioni di bordo, cioe' constraints e strategie
legacy
 
Posts: 862
Joined: 12 Mar 2012, 11:30

Re: portabilità logica 74xx

Postby Ludo69 » 03 Feb 2013, 16:00

capisco bene che un 74164 reale è ben più lento di uno implementato in CPLD/FPGA, ma il mio dubbio NON è sulla max frequenza operativa, ma SE FUNZIONA! (nel senso se è sempre garantito il funzionamento..)
Ipotesi: all'istante ZERO parte il CK che dopo 1nS arriva al primo ff che ci mette (sparo a caso..) 3 nS a commutare ed 1nS a trasferire il rsultato al secondo ff arrivando al tempo assoluto dal CK iniziale di +5nS, invece per via del piazzamento sfigato (che definizione tecnica....) al secondo ff arriva il CK dopo 5...6nS e quindi potrebbe NON essere in grado di acquisire il vecchio dato ma bensì il NUOVO, o un'incertezza tra i due.... tutto questo discorso è SLEGATO dalla frequenza, ma ovviamente legato al delay del singolo ff ed alla lungezza (delay line) dei possibili collegamenti interni....

Di fatti credo che userò una configurazione mia personale con i ff pari e dispari pilotati da due onde sfasate di un deltaT (ricavato dal CK più alto che uso) in maniera da garantire i tempi di permanenza dello stato di ingresso per ogni ff....
Ludo69
 
Posts: 32
Joined: 22 Apr 2012, 15:09
Location: Bracciano (RM)

Re: portabilità logica 74xx

Postby Ludo69 » 03 Feb 2013, 18:27

P.S.
La domanda di prima ha valenza generale, ovvero dove la velocità dei ff è tale da non poter trascurare i ritardi di 0,3..0,4 nS/mm che la velocità della luce applica ai segnali, quali rischi si incorrono ad implementare una macchina a stati del genere dove il vettore di nuovo stato è in pratica il vecchio stato (nel senso che NON viene ritardato da ritardi porta) semplicemente riordinato nella numerazione del vettore.

Per i miei esperimenti sto usando un MAX7000S, leggo sulle specifiche:
http://www.altera.com/literature/an/archives/an094.pdf
In ipotesi speed grade -7: a pag.7 trovo che il tempo ti transito tra un ff ed un'altro (ipotesi di logica tra i ff: coerente col caso se il collegamento è realizzato attraverso una funzione logica che riporta semplicemente in uscita lostato dell'ingresso...) è al MAX di 5nS mentre l'Hold Time (Th) da garantire è di 2nS.
A naso DOVREBBE funzionare, però NON è CORRETTO dire che una quantità che al MASSIMO è 5 sarà SICURAMENTE maggiore di un'altra che al MINIMO è 2..... purtroppo i tempi di ritardo sono specificati SOLO sul limite massimo e non su quello minimo che rappresenterebbe invece il "caso peggiore" per questa macchina a stati.
Per qualunque macchina a stati.
E questo mi lascia ben sperare, altrimenti NESSUNA macchina a stati sarebbe implementabile con sicurezza senza un'ulteriore registrazione del dato (è questo il concetto di mettere i dati in pipeline?).
Certo è che, se non ho preso cantonate micidiali, l'implementazione del 74164 (e strutture simili) non avrebbe esito garantito, e quindi NON sarebbe accettabile in senso assoluto.

Se ho detto qualcosa di banalmente sbagliato chiedo venia e porto a scusante il mio timido approccio hobbystico al mondo dei PLD.
Ludo69
 
Posts: 32
Joined: 22 Apr 2012, 15:09
Location: Bracciano (RM)

Re: portabilità logica 74xx

Postby Altero » 03 Feb 2013, 21:51

@ludo69,
secondo me Altera non avrebbe corso il rischio di permettere l'implementazione di circuiti da loro descritti,vedi serie TTL, se non fosse stata più che certa del loro funzionamento.
stiamo parlando di un semplice 164,
hai pensato cosa succederebbe se andassimo a cercare il pelo nell'uovo implementando hardware da noi descritto usando 100K-LE o più?
ogni volta che provi a sintetizzare e aggiungi anche una semplice entity il timing analisi cambia.
non ti rimane altro che fidarti del sintetizzatore di Altera o cambiare famiglia.

quale è l'entità delle tue applicazioni ? scusa il gioco di parole.
ciao
Altero
 
Posts: 46
Joined: 20 Apr 2012, 09:33

Re: portabilità logica 74xx

Postby flz47655 » 03 Feb 2013, 22:34

Prendi con le pinze quello che ti dico in attesa di conferma da qualcuno più esperto, è un pò che non rigioco con le logiche programmabili.

Nell'fmax è incluso il ritardo di propagazione, l'hold time, etc.. le violazioni vengono segnalate.
L'fmax dipende anche dalle condizioni di temperatura e viene calcolato su alcune logiche programmabili in diversi casi.

Un buon AN: http://flex.phys.tohoku.ac.jp/riron/vhd ... /an123.pdf
L'AN E' sorpassato in quanto il "Timing Wizard" nella nuova versione è stato sostituito da "Time Quest" ma i concetti sono quelli.

Quindi se si sta sotto alla frequenza consigliata non si dovrebbero avere problemi e tutto dovrebbe funzionare correttamente

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: portabilità logica 74xx

Postby Ludo69 » 04 Feb 2013, 08:53

No, scusate, ma se mi rispondete citando la Fmax vuol dire che non mi sono spiegato bene: il problema (teorico-didattico) che sollevo avviene pure a mezzo Hertz, in quanto è legato alla singola transizione del CK e non alla rapidità con cui si susseguono le transizioni del CK.

Per assurdo è proprio la rapidità della propagazione del ff che potrebbe non garantire l' Hold time del ff successivo, e ripeto che dalle specifiche il problema non è escludibile a priori, a meno di essermi sfuggito qualcos'altro di scritto nelle stesse specifiche.

Ipotesi di macchina a stati: se la logica combinatoria che elabora lo stato successivo è così rapida da NON garantire il Th del registro di uscita, allora..... allora si mette, invece di uno, DUE muri di registri in cascata, uno azionato dal fronte di salita del CK, l'altro dal fronte di discesa e le uscite di questo doppio muro si danno in pasto sia ai pin di I/O che alla logica combinatoria che elabora lo stato successivo, così i dati permangono in ogni punto del circuito per un tempo NON legato direttamente alle specifiche del dispositivo (e quindi alla variabilità delle caratteristiche anche a pari sigla e grade), ma legate unicamente ai tempi che intercorrono tra le transizioni del CK (ovviamente compatibilmente con il grade del dispositivo).

La questione che pongo è sorta durante un progetto specifico, ma ha valenza generale di buona progettazione, sempre che sia un problema reale e non partorito dalla mia malsana mente!


P.S.
Al fine didattico di conoscere i (C)PLD sto cercando di mettere su un unico chip un mio vecchio progetto realizzato all'epoca tutto con 74xx:
http://ready64.it/articoli/leggi/idart/ ... mmodore-64
Ludo69
 
Posts: 32
Joined: 22 Apr 2012, 15:09
Location: Bracciano (RM)

Re: portabilità logica 74xx

Postby legacy » 05 Feb 2013, 19:16

Ludo69 wrote:sempre che sia un problema reale e non


le questioni che poni riguarda la celle, la cui furbizia e' a cura dei progettisti delle logiche programmabili (che hanno implementato alcune delle cose che hai scritto prima)
e il mapper, l'ultimo stadio di sintesi dei motori di sintesi, dove si va a verificare, fra le tante cose, anche ogni disequazione in cui compare thold, tsample, etc

il problema che esponi ha percio' solo valenza didattica, la dove uno vorrebbe discutere come sono fatte le celle
come funziona nel dettaglio il motore di sintesi, etc etc

al pratico, se una fpga e un motore di sintesi sono uno strumento (e fra parentesi sotto qualifica), allora la questione che poni e' un non poblema
legacy
 
Posts: 862
Joined: 12 Mar 2012, 11:30

Re: portabilità logica 74xx

Postby deluca » 05 Feb 2013, 21:11

@legacy,
hai perfettamente espresso il concetto.

per motivi didattici allora si potrebbe andare ad analizzare anche le connessioni a livello di silicio (al*era permettendo) e magari farci una tesi.... ops e magari cercare di farsi assumere alla AL*ERA,
ma nell'ambito applicativo e specialmente lavorativo è meglio occupare il tempo concentrando le attenzioni su altre problematiche....

ciao
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: portabilità logica 74xx

Postby Ludo69 » 06 Feb 2013, 13:36

Mi sento tranquillizzato....... grazie a tutti!
Ludo69
 
Posts: 32
Joined: 22 Apr 2012, 15:09
Location: Bracciano (RM)

Re: portabilità logica 74xx

Postby deluca » 06 Feb 2013, 21:40

Ludo,
fidarsi è bene ma non fidarsi è meglio !
ma almeno siamo risciti a tranquillizzarti .....

scherzi a parte, tienici informati.

a proposito del progetto che stai cercando di convertire da TTL a FPGA....
stai scrivendo in VHDL o stai usando gli IC-core di Max2plus ?

ciao
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: portabilità logica 74xx

Postby Ludo69 » 08 Feb 2013, 08:18

diciamo che da buon pasticcione/praticone sto facendo TUTTO (tranne simulare SW, per vari problemi...) ovvero ho scritto qualcosa in VHDL, ad esempio per generare gli indirizzi in maniera stramba come fà il VICII del Commodore64 ho dovuto fare un contatore con un selettore UP/DOWN che, per ogni colpo di CK, in UP avanza di 1 e in /DOWN indietreggia di quatto.
I contatori li ho fatti in genere in VHDL perchè li ho fatti tipo "ripple" e non paralleli: lo so che paralleli sarebbe stato meglio, ma temevo di riempire il MAX 7128 prima di finire il progetto, quindi ho implementato i ripple counter perchè mi consumano meno logica... alla fine vedremo se mi rimarrà spazio per riportare le strutture interne a forme più ortodosse...

Comunque credo che la mia scheda di sviluppo sia posseduta da spiriti: ho una sezione della CPLD che scansiona 4 display 7segmenti, è una sezione completamente isolata dal resto e la uso per visualizzare contenuti di registri ecc. per fare debug, ebbene modificando lo schematico in una parte COMPLETAMENTE ALIENA alla logica che pilota i 7segmenti due di questi display si spengono (condizione non contemplata dal codice VHDL che ho scritto per avere la decodifica esadecimale->display che non esiste in logica 74xx..). MISTERO!!!
Il guaio è che conosco bene l'assioma: le macchine NON sbagliano, il programmatore SI!

Rispetto al filmato sono andato molto avanti, ma intanto ecco un'assaggio:
http://youtu.be/vRo7PXk9aA8

P.S. (O.T.)
Mi è capitato di generare componenti su QuartusII, ma sul blocco grafico NON sono riuscito a mettere il "pallino" sugli ingressi che agiscono su condizione di livello basso o sul fronte di discesa: come si fà?
Ludo69
 
Posts: 32
Joined: 22 Apr 2012, 15:09
Location: Bracciano (RM)

Re: portabilità logica 74xx

Postby flz47655 » 08 Feb 2013, 13:05

Con pallino intendi l'ingresso negato? In quel caso basta aggiungere un invertitore

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: portabilità logica 74xx

Postby Ludo69 » 08 Feb 2013, 13:35

ok, ma su un blocco grafico che io ho definito e costruito dove ho già un ingresso sensibile al fronte di discesa o allo stato basso, come faccio GRAFICAMENTE a fare in modo che il mio blocco presenti un pallino su quell'ingresso? blocchi già fatti ce l'hanno e quindi si può fare, ma non so come.... sarebbe molto più intuitivo l'uso dei blocchi così rigorosamente rappresentati!
Ludo69
 
Posts: 32
Joined: 22 Apr 2012, 15:09
Location: Bracciano (RM)

Re: portabilità logica 74xx

Postby flz47655 » 08 Feb 2013, 13:51

Ok, ora la domanda è più chiara
Devi fare click destro sul simbolo, Edit Selected Symbol, dopodiché puoi sbizzarrirti a disegnare cerchi :)
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: portabilità logica 74xx

Postby Ludo69 » 10 Feb 2013, 07:50

veramente cliccando in giro lì c'ero arrivato, ma ho il problema che se formo il cerchio del diametro giusto (1 passo griglia) poi non me lo mette sulla riga ma o sopra o sotto (si muove sempre sulla griglia, indipendentemente se visibile o meno), ovvero se prendo un blocco definito da casa madre, un inverter ad esempio, e provo ad editarlo spostando il pallino allora me lo fà prendere e spostare ma sempre sulla griglia rendendomi impossibile rimetterlo d'overa..... esiste qualche settaggio? perchè ho provato a spuntar via varie cose nel menu opzioni, ma niente.... per ora ho rattoppato facendo un'ellisse alta due passi, ma è una toppa.....
Ludo69
 
Posts: 32
Joined: 22 Apr 2012, 15:09
Location: Bracciano (RM)

Re: portabilità logica 74xx

Postby deluca » 10 Feb 2013, 09:45

ciao Ludo,

allora vai su Tools -> Options -> Block/symbol editor -> elimina la spunta snap to grid .... e il gioco è fatto. Così puoi muovere liberamente gli oggetti grafici.
Ti consiglio però di rimettere la spunta subito dopo perchè ti faciliterà la connesione dei wire sul tuo schematico.

ciao
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: portabilità logica 74xx

Postby Ludo69 » 10 Feb 2013, 12:32

veramente anche questo l'avevo già provato...... oppure bisogna richiudere e riaprire l'editor affinchè abbia effetto?

C'è lo spirito di qualche buontempone che mi sta possedendo il prototipo!!!!! comunque faccio una bella opera di ripulitura dei segnali e poi se ne riparla, in quanto isolando la scheda dal bus del C64, alimentandola a parte e riprogrammandola con lo STESSO file ha smesso di fare un comportamento inspiegabilmente anomalo.... eppure avevo prima fatto anche un'operazione di verifica (andata OK), che dire..... comunque mi sto avvicinando al 100% del chip impiegato, starò esagerando?
Ludo69
 
Posts: 32
Joined: 22 Apr 2012, 15:09
Location: Bracciano (RM)

Next

Return to FPGA & CPLD

Who is online

Users browsing this forum: No registered users and 4 guests

cron