Category

How-to: Gadget logici programmabili (CPLD)

Gadget logici programmabili complessi (CPLS) contengono i blocchi di costruzione per numerosi ICS Logic 7400-SERRIES. I circuiti totali possono essere progettati su un PC e quindi caricato su un CPLD per implementazione immediata. Un microcontrollore collegato a un CPLD è come un microcontrollore accoppiato con una scheda di circuito riprogrammabile e un negozio di elettronica completamente rifornito.

All’inizio non eravamo sicuri dell’ampio fascino e dell’applicazione dei progetti CPLDS in Hobbyist, tuttavia siamo stati convinti. Un gadget logico personalizzato può sbarazzarsi di giorni di lettura dei fogli di dati, scoprendo la perfetta combinazione di IC logica, oltre ad essere in attesa di chips per arrivare. I circuiti sono più facili con i CPLS poiché un singolo chip con posizionamento programmabile PIN può sostituire 100s di ICS Private Logic. Gli errori del circuito possono essere corretti caricando un nuovo design, piuttosto che l’incisione e il ripieno di un nuovo circuito stampato. I CPLS sono veloci, con i tempi di reazione a partire da 100 MHz. Nonostante la loro estrema versatilità, i CPLS sono un’innovazione matura con chip a partire da $ 1.

Abbiamo un consiglio di avanzamento per la programmazione astuzia a casa, per iniziare. Non preoccuparti, questa scheda ha un’interfaccia della porta seriale per lavorare con il CPLD, nonché non ha bisogno di un programmatore JTAG separato (di solito parallelo).

INTRO per CPLDS.

Quando utilizzare un CPLD

Prendi in considerazione l’utilizzo di un CPLD quando uno stile richiede più di una serie logica serie 7400. Un CPLD sarà più economico, più veloce, così come può essere programmato con la tua perfetta configurazione di pin-out per i PCB più facili.

Utilizzare un CPLD in stili difficili che potrebbero aver bisogno di un numero di iterazioni. È più facile da stirare un nuovo circuito nell’applicazione software e caricarlo sul CPLD rispetto a quello di progettare, incidere, così come un nuovo circuito stampato.

Per la massima velocità e risposta immediata, selezionare un CPLD. La differenza di velocità è incredibile; I cpls iniziano a 100 MHz, mentre i microcontrollori rispondono agli interrupt in pochi MHz. Circuiti di tipo Stili CPLD che reagiscono allo stimolo esterno, le reazioni avvengono quasi istantaneamente. Un microcontrollore esegue il codice per reagire agli eventi, anche le routine di interrupt hanno una latenza relativamente alta.

Cpld vs fpga.

I FPGAS sono molto meglio compresi dei CPLS, tuttavia condividono molte caratteristiche. Questa analogia non è perfetta, tuttavia ci piace: dove i fpgas sono un nucleo del processore riprogrammabile, un CPLD è una scheda di circuito o breadboard riprogrammabile. FPGAS Sostituire i microcontrollori, la memoria e altri componenti. I CPLS prendono in conferenza logica, oltre a funzionare bene con un microcontrollore.

Produttori

Altera e Xilinx, i più grandi produttori di CPLD, sono molto meglio compresi per i loro FPGAS. Lattice Semiconductor è un altro grande produttore di cpld con meno quartiere che seguono. Atmel fa versioni compatibili con PIN di vecchi CPLS standard industriali.

Se hai intenzione di lavorare a 5 Volts, le tue scelte sono limitate. Xilinx XC9500 CPLS sono ancora offerti come nuovo vecchio magazzino, tuttavia spesa quattro volte più di nuovi equivalenti di 3.3volt. La serie ATF1502 di Atmel funziona a 5Volts, tuttavia non offrono un ambiente di avanzamento gratuito.

A 3.3 volte ci sono più opzioni, tuttavia i nuovi CPLDS hanno progressivamente un nucleo che funziona a 2,5 volte, 1.8volt o inferiore. L’altera maxii e la serie Xilinx XC9500XL sono molto probabilmente i più importanti CPLS da 3.3Volt. Allo stesso modo Xilinx rende il CPLD CoolRunneriii, tuttavia è disponibile solo in un bundle TQFP e ha bisogno di una fornitura separata di 1.8Volt per il nucleo.

Pacchi

La maggior parte dei produttori offre uno o due CPLS in un pacchetto PLCC 44 friendly hobbyist, anche se questo sta iniziando a scomparire. PLCC è un chip di installazione della superficie di dimensioni soiche con perni su tutti e quattro i lati. Le prese PLCC44 sono comunemente offerte in versioni passanti e SMD. Sfortunatamente, le nuove famiglie CPLD stanno iniziando a sbarazzarsi del pacchetto PLCC e offrono solo 44 pin e chip TQFP più grandi, come il coolrunnerii di Xilinx.

Ambienti di sviluppo

La maggior parte dei produttori offre un’atmosfera di avanzamento gratuita che supporta l’ingresso in stile utilizzando schemi semplici, oltre a Verilog o VHDL. Molti non supporteranno gli ultimi fpgas nella versione gratuita, tuttavia recediamo comunque le parti CPLD. Altera ha un quartus, Xilinx ha ISE, così come il reticolo ha Islever. Atmel ha il progettista PROCHIP per la serie ATF15XX, tuttavia offrono solo un permesso di prova di 6 mesi – che non ci fornirebbero davvero.

Programmatori

Il consiglio di avanzamento che presentiamo non ha requisito un programmatore JTAG separato dal momento che il microcontrollore PIC ha già programmato il CPLD. Se si desidera un programmatore esterno, i più economici sono i programmatori di porte paralleli: cavo parallelo III per Xilinx e ByTleblaster per Altera. I cloni a prezzi accessibili, così come gli schemi, sono offerti a Sparkfun. L’OpenOCD è un programmatore Generico USB Jtag che funzionerà con molti CPLDS, FPGAS, così come le braccia.

La nostra scelta

Alla fine abbiamo sistemato sulla serie Xilinx XC9500XL da quando haD Un set di progressi economico che potremmo utilizzare per testare il nostro programmatore JTAG prima di implementare un intero design.

Il DO-CPLD-DK di Digilent include un programmatore XC9572XL, coolrunnerii, così come il programmatore di port parallelo. Nu Horizons ha alcuni vecchi progetti non-rohs per $ 40, tuttavia a causa della gestione dei tipi di variabile Sloppy nei loro script di elaborazione della carta di cronologia dei crediti, non siamo riusciti a un ordine online. Abbiamo cercato di farlo al telefono, tuttavia si sono rifiutati di prendere un tale piccolo ordine al telefono, anche durante un malfunzionamento del sito web. Alla fine, era più economico pagare il costo totale a DigiKey (# 122-1512-ND) dopo includere le spese di spedizione esorbitante di New Horizon. Normalmente non menzioneremmo questo, tuttavia con solo due sedi per comprare il tabellone è molto probabilmente la pena notare la nostra esperienza.

Consiglio di avanzamento CPLD.

Clicca qui per un’immagine schematica a grandezza naturale (PNG). Il circuito e il PCB sono progettati utilizzando la versione freeware di Cadsoft Eagle. Tutti i dati per questo lavoro sono inclusi nell’archivio di lavoro collegato alla fine dell’articolo.

Circuito

Un PIC 24FJ64GA002 Microcontroller (IC1) fornisce l’interfaccia individuale e di programmazione al CPLD. Utilizziamo questa foto di $ 4 in una grande quantità di lavori poiché la funzione periferica Scegliere la funzione semplifica il routing della tavola veramente facile. Ispezionare la nostra introduzione al PIC24F per maggiori dettagli. La foto deve interagire con una porta seriale del PC, quindi abbiamo aggiunto un ricetrasmettitore ACCORDAble MAX3232 RS232. L’interfaccia seriale dovrebbe funzionare con un adattatore seriale USB->.

La nostra opzione di CPLD (IC3), un XILINX XC9572XL (PDF), è collegata tra la foto e un numero di altri componenti. Possiamo produrre una gamma infinita di circuiti tra la foto e altri chip che utilizzano la logica riprogrammabile all’interno del CPLD. La foto programmarà il CPLD con il codice inviato da una porta seriale del PC, tuttavia abbiamo ancora portato i pin JTAG a un’intestazione per un semplice debug esterno.

Un oscillatore programmabile digitale DS1085 (IC4) produce frequenze di clock tra 8kHz e 133MHz, con incrementi di 10kHz. Questo è estremamente simile al DS1077 che abbiamo coperto in precedenza, tuttavia ha anche passi tra tutte le frequenze. Il DS1085 ha bisogno di una fornitura di 5 Volt (VR2). L’interfaccia I2C viene anche eseguita a 5Volts, quindi lo abbiamo collegato a 5 Pin tolerant di 5volt. È possibile utilizzare invece il 3.3Volt 66 MHz 1085L, oltre a eliminare la fornitura di 5 Volt.

Abbiamo utilizzato un regolatore di tensione SOT223 di 3,3 VeltVolt economico (VR1) per alimentare la maggior parte del circuito. La fornitura di 5 Volt (VR2) può essere esclusa se si utilizza un oscillatore più lento da 1085L 3.3Volt.

I CPLS sono comunemente utilizzati come controller di memoria, quindi abbiamo incluso 32K di SRAM (IC5) sulla scheda avanzata. Un fermo da 3.3Volt con ingressi tolleranti a 5Volt interfaccia l’interfaccia in ingressi della memoria su un’ampia varietà di tensioni esterne (IC6). Gli ingressi del latch sono ridotti con una rete di resistori da 1mohm (RN1). Discuteremo questa sezione ampiamente in un articolo imminente.

PCB.

La tavola è un design unilaterale Quasi. Abbiamo fatto un numero di compromessi, quindi potremmo prototipare questo PCB estremamente sperimentale da soli. Presentiamo il consiglio di amministrazione “come è” per altri motivi che potrebbero volercitare questa tavola a casa. Se si invia il PCB a una tavola, prova a correggere questi problemi prima di creare una tavola fronte / retro “reale”.

Un perno di potenza del CPLD manca un condensatore di disaccoppiamento interamente; Non c’era metodo per mettere un condensatore in quella zona. Un condensatore di disaccoppiamento CPLD, così come il condensatore di disaccoppiamento SRAM, sono parti del foro passante. L’utilizzo di queste parti del foro passante si libera di pochi fili del ponticello.

I fili del ponticello sul retro del tabellone sono ottimizzati per la produzione monoterapia, piuttosto che pratiche di grande stile. Abbiamo ficchiamo un consiglio fronte -sivo saldando il power bus sulla schiena. Un vero stile da tavolo a doppia facciale dovrebbe percorrere il bus power bus per prevenire i percorsi del segnale di attraversamento, nonché includere i condensatori di disaccoppiamento mancanti.

Abbiamo utilizzato una presa di chip PLCC di installazione della superficie, tuttavia una versione del foro passante è sicuramente un’idea molto migliore. Anche se la versione SMD sarebbe semplice da saldare, tuttavia [risultava essere] un incubo. Abbiamo veramente desiderato il CPLD per essere sulla parte anteriore del tabellone per la presentazione più fresca possibile. Una scheda a due lati appropriata con fori through placcati può avere una presa passante sul davanti, tuttavia questo non era possibile con la nostra scheda prototipo a 1 facciata.

Elenco delle parti

Clicca qui per un diagramma di posizionamento a grandezza naturale (PNG).

Parte
Valore

IC1.
PIC25FJ64GA002 (SoIC)

IC2.
Max3232cse (SoIC-n)

IC3.
XC9572XL-10PCG44C (PLCC)


Presa PLCC44, SMD

IC4.
DS1085 o DS1085L (SoIC)

IC5.
32kx8, 3.3V, SRAM (SOJ)

IC6.
74LVT573D (SoIC)

Vr1.
3.3V Regolatore, LD1117S33 (SOT223)

Vr2.
5V Regolatore, LD1117S50 (SOT223)

C1-11,13-17.
Condensatori di disaccoppiamento 0.1uF (0805)

C12.
0.01UF condensatore (0805)

C15,16.
Condensatori di disaccoppiamento 0.1UF (foro passante)

C18.
Condensatore di Tantalum 10UF (A)

R1,2.
Resistore 390ohm (0805)

R3-5.
RESISTOR 2000OHM (0805)

Rn1.
Network resistore 1mohm (9 pin)

LED1,2
LED (08.05)

X1.
Connettore della porta seriale DB9 * non testata

J1.
2.1mm Power Jack.

ICSP, JTAG, SV1
0,1 “intestazione pin, angolo retto

S1.
Interruttore tattile (DTSM-6)

Firmware

Il firmware è scritto in c utilizzando la versione di presentazione gratuita del compilatore PIC C30. Scopri tutto sul lavoro con questa foto nella nostra introduzione alla serie PIC 24F. Il firmware è incluso nell’archivio del lavoro alla fine dell’articolo.

Abbiamo desiderato un metodo super semplice per interagire con l’hardware sulla scheda senza infiniti cicli di test di compilazione-programma. Abbiamo realizzato una versione personalizzata del firmware del pirata Bus che offre una semplice interfaccia terminale ASCII al chip di clock DS1085 (I2C), l’interfaccia di programmazione CPLD (JTAG), nonché un’interfaccia a 3 cavi (SPI) per il CPLD. Ispezionare il tutorial del pirata del bus per lo sfondo sulla semplice sintassi utilizzata con il firmware.

Il firmware del pirata del bus originale gestisce un certo numero di protocolli che condividono gli stessi pin. Per la versione CPLD, abbiamo modificato i compiti PIN a forma alle connessioni sulla scheda avanzata. Abbiamo eliminato anche moduli non utilizzati e opzioni.

Esempi LED blinky CPLD

Abbiamo preparato un numero di stili nell’ambiente di avanzamento dell’ISE di Xilinx. Gli schemi, i file di posizionamento PIN, così come gli stili compilati (XSVF) sono inclusi nell’archivio del lavoro collegato alla fine dell’articolo. Una spiegazione completa dell’ISE è al di là della gamma di questo articolo; Abbiamo scoperto i dati di assistenza sufficientemente utili per realizzare questi esempi.

Il primo stile illumina semplicemente il LED collegato al PIN 8 del CPLD.

Preparare il file XSVF

XSVF è un formato di programmazione JTAG compresso, come spiegato da Xilinx in questa nota di applicazione (PDF). XSVF non è limitato alla programmazione dei dispositivi Xilinx, oltre che può essere preparato per qualsiasi tipo di chip che fornisce un tipico file di significato BSDL JTAG.

Aprire lo strumento di programmazione degli effetti dal pannello di lavoro Suite Style ISE in Configura Device Target-> Impact.

Selezionare la scelta per produrre un file di scansione limite, oltre a impostare il tipo su XSVF.

Dare all’output XSVF Un nome di dati e quindi aggiungere un’immagine CPLD compilata (EX1.JED) quando viene richiesto di aggiungere un dispositivo.

Dovresti vedere una catena JTAG che contiene un singolo dispositivo.

Clicca sul gadget e sul programma Seleziona; L’effetto registra le sequenze di programmazione a un file XSVF.

Con i dati XSVF in mano, è ora di aprire un terminale e programmare il CPLD. Ci piace il termine di Tera e Ercole su Windows. È necessario consentire a Xon / Xoff Flow Gestisci nel client per utilizzare l’interfaccia JTAG. L’impostazione Laterale PC predefinita per il terminale della scheda avanzata è 115200bps, 8N1.

HIZ> M <-Select mode 1. Hiz. 2. I2C. 3. Jtag. 4. Raw3wire. Modalità> 3 <-JTAG Set di modalità 900 602 Jtag Ready. Jtag> (2) <-probe Jtag Catena Macro Catena di init XXX JTAG xxx jtagsm: reset xxx jtagsm: reset-> inattivo
XXX JTAGSM: IDLE-> Registro delle istruzioni (ritardato un bit per TMS)
XXX JTAGSM: IR-> IDLE
xxx jtagsm: inattivo-> registro dei dati
XXX JTAGSM: DR-> IDLE
xxx jtagsm: reset
xxx jtagsm: reset-> inattivo
xxx jtagsm: inattivo-> registro dei dati
Rapporto a catena XXX JTAG:
0x01 Dispositivo / i
# 0x01: 0xc9 0x02 0x06 0x9a <-xc9572xl risponde XXX JTAGSM: DR-> IDLE
Jtag >.

Nel terminale entriamo nel menu Modalità (M), oltre a selezionare Jtag (3). Macro 2 Sonde La catena Jtag, nella nostra situazione questo è solo il CPLD. La relazione della catena ci dice che il chip è collegato oltre a rispondere. Controllato ulteriori informazioni sull’interfaccia JTAG.

Ora possiamo eseguire il programmatore XSVF, la macro (3), oltre a caricare i dati XSVF dal terminale in modalità binaria. Il primo esempio illumina solo il LED sul PIN 8. Se i LED si accendono, possiamo confermare che la programmazione ha avuto successo. Se il tuo LED non si accende, non disperare; A volte il programmatore JTAG si attacca così come una macro di reset (1) otterrà il chip andando avanti.

LED a piena luminosità.

74LS32 / 4071 o cancello, lampeggia a metà velocità (/ 2)

Un elemento importante del Consiglio di avanzamento CPLD è il sintetizzatore di frequenza 1085 (L) collegato al PIN 7 del CPLD. Il prossimo esempio utilizza una logica o un cancello, come una IC da 74LS32 o 4071, per lampeggiare il LED ogni volta che il segnale dell’orologio è alto. All’inizio della velocità di clock più lenta il lampeggio sarà così veloce per vedere, tuttavia dovremmo ottenere un buon impatto di dimming PWM rispetto al primo esempio.

JTAG> M <-Select Mode 1. Hiz. 2. I2C. 3. Jtag. 4. Raw3wire. Modalità> 2 <--I2C Interfaccia su DS1085 Set di modalità 900 202 I2C Pronto I2C> (1) <-Address Sfoglia macro XXX BROWSING 7BIT Spazio di indirizzi I2C. Trovato gadget a: 0xb0 0xb1 <-Found L'indirizzo DS1085 I2c >.

Programmare il CPLD come prima, oltre a passare alla modalità I2C per accedere all’orologio DS1085. Potremmo cercare l’indirizzo del gadget in th