Vai al contenuto
PLC Forum


Implementare un circuito con CPLD o FPGA?


.:Matrix:.

Messaggi consigliati

Saluto tutti i partecipanti al forum.

Il mio quesito riguarda l'utilizzo di una CPLD o FPGA per implementare un circuito di logica elementare ma molto numeroso e complesso nei collegamenti.

Infatti, con questo dispositivo potrei eliminara decine di circuiti integrati e raggruppare il tutto all'interno di un solo chip.

Il circuito da realizzare è quello nell'immagine allegata e non è altro che la gestione di uno stadio di I/O per microprocessori realizzato come tipologia in modo pressocchè identico alla struttura I/O dei PIC.

Ho già acquistato una CPLD dell'ALTERA, serie MAX3000 mod. EPM3032ALC44-10 a 32 macrocelle.

Quello che chiedo agli esperti di questi dispositivi ed essendo completamente a digiuno su CPLD, con questo chip che ho comprato, è possibile implementare il circuito allegato, magari anche in modalità grafica?

Cosa devo avere/sapere per poterlo realizzare? es. programmatore, software etc..

Grazie.

user posted image

Link al commento
Condividi su altri siti

  • 4 weeks later...

Io non sono un grande esperto, ma mi sto avvicinando alle CPLD di Xilinx, che comunque condividono i concetti dell' Altera.

Prima di tutto...... quale schema? io non lo trovo allegato....

Comunque, in prima approssimazione, esistono ALMENO due vincoli: i pin di I/O ed il numero di flip-flop.

Ricorda che esistono ingressi "particolari" come i GlobalClock che puoi sfruttare anche come entrate standard, quindi guarda in totale quanti ne sono.... attento: se usi la programmazione in-circuit il numero si riduce!

Quindi conta i fili di entrata e uscita dello schema e guarda se ci stai dentro.

Secondo limite, i flip flop: conta i F-F che usi, somma uno per ogni uscita del circuito che proviene da una funzione logica combinatoria (il pin di uscita è combinatorio ma lo è grazie al fatto che in quella macrocella viene bypassato il rispettivo F-F che devi comunque conteggiare come risorsa ormai inutilizzabile!).

Nel tuo caso devi rimanere sotto a 32, tante sono le macrocelle (e quindi F-F) che hai nel dispositivo.

Se la complessità della logica combinatoria del resto del circuito viene ben integrata nelle macrocelle allora non esistono altri vincoli (spero...), se invece la logica combinatoria da integrare è molto complessa, allora in una macrocella potrebbe servire l'uso di risorse aggiuntive, in questo caso entra in azione un bus interno detto di "riallocamento" dei termini prodotto, in pratica vengono "reciclate" delle logiche non utilizzate dalle macrocelle adiacenti (il TOOLS di sviluppo provvederà a mettere adiacenti le funzioni più semplici che lasciano libere il maggior numero di termini prodotto possibile..), ma se la sfiga vuole il TOOLS dovrà unire due macrocelle per tirar fuori un solo segnale di uscita, e in quel caso quindi si sottrae un'altra macrocella (F-F), però mi sembra difficile che si arrivi a superare il massimo del riallocamento delle risorse interne (fino a 50 termini prodotto nella Xilinx..).

Per programmare una CPLD la cosa più facile è scaricarsi il TOOLs di sviluppo che almeno in versione "limitata" la casa madre offre sempre, costruire/montare un programmatore JTAG (per l'Altera la rivista "Nuova Elettronica" ne ha fatto uno, vai al sito e cerca tra i kit dei programmatori..) e costruire un prototipo dove IN-CIRCUIT programmerai via JTAG il dispositivo.

Posta lo schema, e se sono stato criptico chiedi pure che se so rispondo!

Modificato: da ludo69
Link al commento
Condividi su altri siti

  • 2 weeks later...

Ciao ludo69,

grazie della completissima risposta.

Intanto allego lo schema per avere un'idea, poi magari proverò a contattarti in privato per avere dei chiarimenti su alcuni particolari.

Luigi

www.gigillo74.altervista.org/schema.zip

Modificato: da Livio Migliaresi
Link al commento
Condividi su altri siti

Pur non conoscendo la funzione del circuito credo di poter intravedere dei potenziali problemi/ottimizzazioni:

1) IC4A è inutile (un AND con gli altri ingressi a 1 è come un filo: uscita=entrata)

2) temo che tu debba invertire IC10A con IC11C, altrimenti il 3S lascierebbe floating un ingresso e l'uscita di IC11C entrerebbe in conflitto con "DATABUS" o IC9A quando questi saranno configurati come uscite.

3) ricorda di collegare a massa i pin 1 dei registri in modo da abilitarne le uscite (altrimenti potrebbero andare in 3S).

Modificato: da ludo69
Link al commento
Condividi su altri siti

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...