Venire

Blog

CasaCasa / Blog / Venire

Aug 10, 2023

Venire

I dispositivi logici programmabili complessi (CPLD) contengono gli elementi costitutivi di centinaia di circuiti integrati logici della serie 7400. Circuiti completi possono essere progettati su un PC e quindi caricati istantaneamente su un CPLD

I dispositivi logici programmabili complessi (CPLD) contengono gli elementi costitutivi di centinaia di circuiti integrati logici della serie 7400. È possibile progettare circuiti completi su un PC e quindi caricarli su un CPLD per l'implementazione immediata. Un microcontrollore collegato a un CPLD è come un microcontrollore abbinato a un circuito riprogrammabile e a un negozio di elettronica ben fornito.

All'inizio non eravamo sicuri dell'ampio interesse e dell'applicazione dei CPLD nei progetti hobbistici, ma ne eravamo convinti. Un dispositivo logico personalizzato può eliminare giorni trascorsi a leggere schede tecniche, trovare la combinazione di circuiti integrati logici ideale e quindi attendere l'arrivo dei chip. I circuiti stampati sono più semplici con i CPLD perché un singolo chip con posizionamento dei pin programmabile può sostituire centinaia di singoli circuiti integrati logici. Gli errori del circuito possono essere corretti caricando un nuovo progetto, anziché incidere e riempire un nuovo circuito. I CPLD sono veloci, con tempi di reazione che partono da 100 MHz. Nonostante la loro estrema versatilità, i CPLD sono una tecnologia matura con chip a partire da 1 dollaro.

Disponiamo di una scheda di sviluppo autoprogrammabile e modificabile in casa per aiutarti a iniziare. Non preoccuparti, questa scheda ha un'interfaccia con porta seriale per funzionare con CPLD e non richiede un programmatore JTAG separato (solitamente porta parallela).

Introduzione ai CPLD

Quando utilizzare un CPLD

Prendi in considerazione l'utilizzo di un CPLD quando un progetto richiede più di un circuito integrato logico della serie 7400. Un CPLD sarà più economico, più veloce e potrà essere programmato con la configurazione di piedinatura ideale per PCB più semplici.

Utilizzare un CPLD in progetti complessi che potrebbero richiedere diverse iterazioni. È più semplice progettare un nuovo circuito nel software e caricarlo nel CPLD piuttosto che progettare, incidere e riempire un nuovo circuito.

Per la massima velocità e una risposta immediata, scegli un CPLD. La differenza di velocità è sorprendente; I CPLD partono da 100 MHz, mentre i microcontrollori rispondono agli interrupt a pochi MHz. I progetti CPLD formano circuiti che reagiscono agli stimoli esterni, le reazioni avvengono quasi istantaneamente. Un microcontrollore esegue il codice per reagire agli eventi, anche le routine di interruzione hanno una latenza relativamente elevata.

CPLD contro FPGA

Gli FPGA sono più conosciuti dei CPLD, ma condividono molte caratteristiche. Questa analogia non è perfetta, ma ci piace: dove gli FPGA sono un core del processore riprogrammabile, un CPLD è un circuito stampato o breadboard riprogrammabile. Gli FPGA sostituiscono microcontrollori, memoria e altri componenti. I CPLD assorbono i circuiti integrati logici e funzionano bene con un microcontrollore.

Produttori

Altera e Xilinx, i maggiori produttori di CPLD, sono meglio conosciuti per i loro FPGA. Lattice Semiconductor è un altro grande produttore di CPLD con meno seguito nella comunità. Atmel realizza versioni compatibili con i pin dei vecchi CPLD standard del settore.

Se prevedi di lavorare a 5 volt, le tue opzioni sono limitate. I CPLD Xilinx XC9500 sono ancora disponibili come nuovi, ma costano quattro volte di più rispetto ai nuovi equivalenti da 3,3 volt. La serie ATF1502 di Atmel funziona a 5 volt, ma non offre un ambiente di sviluppo gratuito.

A 3,3 volt ci sono più opzioni, ma i nuovi CPLD hanno sempre più un core che funziona a 2,5 volt, 1,8 volt o meno. Le serie Altera MAXII e Xilinx XC9500XL sono probabilmente i CPLD da 3,3 volt più popolari. Xilinx produce anche il CPLD CoolrunnerII, ma viene fornito solo in un pacchetto TQFP e richiede un'alimentazione separata da 1,8 volt per il core.

Pacchetti

La maggior parte dei produttori offre uno o due CPLD in un pacchetto PLCC 44 adatto agli hobbisti, anche se questo sta iniziando a scomparire. PLCC è un chip a montaggio superficiale di dimensioni SOIC con pin su tutti e quattro i lati. Le prese PLCC44 sono comunemente disponibili nelle versioni a foro passante e SMD. Sfortunatamente, le famiglie CPLD più recenti stanno iniziando a eliminare il pacchetto PLCC e offrono solo chip TQFP a 44 pin e più grandi, come CoolrunnerII di Xilinx.

Ambienti di sviluppo

La maggior parte dei produttori offre un ambiente di sviluppo gratuito che supporta l'immissione di progetti utilizzando schemi semplici, nonché Verilog o VHDL. Molti non supporteranno gli FPGA più recenti nella versione gratuita, ma abbiamo comunque bisogno solo delle parti CPLD. Altera ha Quartus, Xilinx ha ISE e Lattice ha ispLever. Atmel dispone di ProChip Designer per la serie ATF15xx, ma offre solo una licenza di prova di 6 mesi, che in realtà non ci darebbero.

serial adapter./p>

iMPACT./p>m strong<–select mode/strong1. HiZ2. I2C3. JTAG4. RAW3WIREMODE>3 strong<–JTAG/strong900 MODE SET602 JTAG READYJTAG>(2) strong<–probe JTAG chain macro/strong xxx JTAG INIT CHAINxxx JTAGSM: RESETxxx JTAGSM: RESET->IDLExxx JTAGSM: IDLE->Instruction Register (DELAYED ONE BIT FOR TMS)xxx JTAGSM: IR->IDLExxx JTAGSM: IDLE->Data Registerxxx JTAGSM: DR->IDLExxx JTAGSM: RESETxxx JTAGSM: RESET->IDLExxx JTAGSM: IDLE->Data Registerxxx JTAG CHAIN REPORT:0x01 DEVICE(S)#0x01 : 0xC9 0x02 0x06 0x9A strong<–XC9572XL responds/strongxxx JTAGSM: DR->IDLEJTAG>/p>m strong<–select mode/strong1. HiZ2. I2C3. JTAG4. RAW3WIREMODE>2 strong<–I2C interface to DS1085/strong900 MODE SET202 I2C READYI2C>(1) strong<–address search macro/strongxxx Searching 7bit I2C address space.Found devices at:0xB0 0xB1strong <–found the DS1085 address/strongI2C>/p>{0xb0 0x02 0b00011111 0b10000000}strong<–max prescaler/strong210 I2C START CONDITION220 I2C WRITE: 0xB0 GOT ACK: YES220 I2C WRITE: 0x02 GOT ACK: YES220 I2C WRITE: 0x1F GOT ACK: YES220 I2C WRITE: 0x80 GOT ACK: YES240 I2C STOP CONDITIONI2C>{0xb0 1 0b11111111 0b11000000}strong<–max divider/strong210 I2C START CONDITION220 I2C WRITE: 0xB0 GOT ACK: YES220 I2C WRITE: 0x01 GOT ACK: YES220 I2C WRITE: 0xFF GOT ACK: YES220 I2C WRITE: 0xC0 GOT ACK: YES240 I2C STOP CONDITIONI2C>/p>