Logica programmabile: costruisci tu stesso un modulo CPLD

Blog

CasaCasa / Blog / Logica programmabile: costruisci tu stesso un modulo CPLD

Aug 07, 2023

Logica programmabile: costruisci tu stesso un modulo CPLD

Un dispositivo logico programmabile complesso (CPLD) è un ottimo componente hardware da avere nel tuo repertorio. Come suggerisce il nome, puoi programmare questi chip per svolgere le funzioni logiche di cui hai bisogno. Questo potrebbe

Un dispositivo logico programmabile complesso (CPLD) è un ottimo componente hardware da avere nel tuo repertorio. Come suggerisce il nome, puoi programmare questi chip per svolgere le funzioni logiche di cui hai bisogno. Potrebbe trattarsi della sostituzione di un chip obsoleto o forse semplicemente di un modo per apprendere e provare tecniche diverse. Quale modo migliore per imparare che mettere le mani su un CPLD e provarlo?

Ho creato un modulo CPLD con l'intento di poterlo collegare a molte cose, comprese breadboard senza saldatura, ma ho commesso un errore. Sembra che lo spazio disponibile per il plug-in su una breadboard senza saldatura sia 1,1", avevo realizzato un ingombro largo 1" senza lasciare spazio per una fila di cavi su entrambi i lati. Già.

Ma lasciatemi fare un passo indietro e mostrare di più su quello che sto facendo, volevo creare un pezzo di logica programmabile che potesse essere costruito come un kit che si potesse facilmente saldare a casa, potesse essere programmato nel circuito e potesse funzionare a 3.3 o 5 volt.

Per implementare un kit facilmente saldabile ho utilizzato un componente CPLD più vecchio che dispone anche di versioni 3.3v e 5v che manterranno la programmazione indipendentemente dalla potenza. La logica stessa è un IC CPLD della famiglia Altera Max con due versioni che si adattano alla scheda con 32 o 64 macrocelle. Una macrocella è l'elemento logico di base ed è programmata con "termini" logici e quindi interconnessa ad altre macrocelle tramite un'interconnessione programmabile.

Guardando lo schema puoi dire che non c'è molto: fondamentalmente il CPLD, il circuito per la programmazione In Circuit e un oscillatore per pilotare la logica nel CPLD.

Questa parte, nota come EPM7032 ed EPM7064, è disponibile in un portachip con piombo in plastica (PLCC) a 44 pin o talvolta chiamato J Lead a causa della forma a J dei conduttori dei pin. Questo pacchetto può essere inserito in una presa a foro passante o saldato direttamente al PCB.

L'oscillatore integrato è incluso in modo che il CPLD possa eseguire operazioni con stato e creare contatori veloci da solo senza la necessità di un clock esterno. Se è disponibile un clock esterno, il clock a velocità più elevata sul modulo può essere utilizzato per creare un evento clock su ciascun fronte di salita o di discesa del clock esterno rispettando comunque le linee guida per CPLD/FPGA che dicono che dovresti davvero usare il rete di orologio globale interna e non pilotare un ingresso di orologio "in modo asincrono". Questo oscillatore è valutato per una tensione di alimentazione compresa tra 1,8 e 5,5 volt.

Se guardi il video mi vedrai discutere delle mie preferenze personali su come tratto il pin di abilitazione “INH” su un oscillatore; in poche parole, tendo a lasciarlo fluttuante dopo aver verificato con la scheda tecnica che farlo sia legale.

Il tipo di ragioni che mi passano per la mente quando ho a che fare con questo tipo di funzione include il fatto che non mi piace collegare un pin di ingresso direttamente a una barra di alimentazione se posso evitarlo. IE preferisco utilizzare un resistore in serie che limiti la corrente durante i transitori, anche se non dovrebbe essere necessario.

Nel corso degli anni ho riscontrato problemi nella produzione (quantità di massa) in cui occasionalmente qualcosa come il ciclo di alimentazione consente a un pin collegato direttamente a una barra di alimentazione di avere una tensione superiore a quella del chip stesso, il che è dannoso. Infine, con un perno legato a una barra di alimentazione tramite un resistore, sia esso di alimentazione o di terra, si può cambiare idea in seguito e utilizzare il perno. Ciò è particolarmente vero nella mia esperienza con i cancelli inutilizzati, che come probabilmente saprai non dovrebbero mai essere lasciati fluttuanti o non collegati. Utilizzando un pull-up si dispone di un punto in cui è possibile collegare un segnale e utilizzare il gate senza dover tagliare tracce di rame.

Il connettore a 10 pin e una manciata di resistori costituiscono il circuito di programmazione. Se tutti i resistori fossero pull-up, utilizzerei una rete di resistori ma, ahimè, uno è a terra.

Per programmare un CPLD autonomo come questo, è necessario un programmatore dedicato. È facile per me dirlo dato che di solito ne ho diversi in giro, ma se non ne hai uno non è troppo doloroso entrare nel gioco. Un "Altera USB Blaster" approvato costa $ 50 ed è disponibile da luoghi come Digikey. Ho diversi cloni che ho preso da Ebay, incluso uno che è un clone che supporta Altera, Xilinx e Lattice tutto in uno. C'è un progetto e un codice disponibili su Internet per creare il tuo clone e ce l'ho nel mio elenco di possibili video per realizzare un progetto per creare un clone del programmatore. Mostrerò anche un progetto di scudo in cui la scheda principale, Arduino, PIC, ecc., può eseguire la programmazione