HOW-TO: Προγραμματιζόμενα λογικά gadgets (CPLD)

Σύνθετο προγραμματιζόμενο λογικό gadgets (CPLDS) περιέχουν τα δομικά στοιχεία για πολλές 7400-σέξι λογικές ics. Τα συνολικά κυκλώματα μπορούν να σχεδιαστούν σε υπολογιστή καθώς και στη συνέχεια να μεταφορτωθούν σε ένα CPLD για άμεση εφαρμογή. Ένας μικροελεγκτής που συνδέεται με ένα cpld είναι σαν ένα μικροελεγκτή συνδυασμένο με μια επαναπρογραμματική κάρτα κυκλώματος καθώς και ένα πλήρες αποθηκευμένο ηλεκτρονικό κατάστημα.

Στην αρχή, δεν ήταν σίγουροι για την ευρεία γοητεία καθώς και την εφαρμογή των CPLD σε έργα χομπίστρων, ωστόσο εμείς είμαστε πεπεισμένοι. Ένα προσαρμοσμένο λογικό gadget μπορεί να απαλλαγεί από τις ημέρες ανάγνωσης δεδομένων δεδομένων, ανακαλύπτοντας τον τέλειο συνδυασμό λογικής IC, καθώς και στη συνέχεια να περιμένει τα τσιπ για να φτάσουν. Οι πίνακες κυκλωμάτων είναι ευκολότερες με τα CPLDs αφού ένα μόνο τσιπ με προγραμματιζόμενη τοποθέτηση PIN μπορεί να αντικαταστήσει 100s ιδιωτική λογική ics. Τα σφάλματα του κυκλώματος μπορούν να διορθωθούν με τη μεταφόρτωση ενός νέου σχεδίου, αντί να χάσεις καθώς και να γεμίσει ένα νέο κύκλωμα. Τα CPLDs είναι γρήγορα, με χρόνους αντίδρασης ξεκινώντας από 100MHz. Παρά την ακραία ευελιξία τους, τα CPLDs είναι μια ώριμη καινοτομία με μάρκες που ξεκινούν από $ 1.

Έχουμε ένα οικιακό συμβούλιο πρόγευσης στο σπίτι για να ξεκινήσετε. Μην ανησυχείτε, αυτό το συμβούλιο έχει μια σειριακή διεπαφή θύρας για να συνεργαστεί με το CPLD, καθώς και δεν χρειάζεται ξεχωριστό (συνήθως παράλληλο θύρα) JTAG προγραμματιστής.

Intro σε cplds

Πότε να χρησιμοποιήσετε ένα cpld

Σκεφτείτε να χρησιμοποιήσετε ένα CPLD όταν ένα στυλ απαιτεί περισσότερα από ένα ics λογικής σειράς 7400. Ένα CPLD θα είναι φθηνότερο, ταχύτερο, καθώς και μπορεί να προγραμματιστεί με την τέλεια διαμόρφωση pin-out για ευκολότερα PCBs.

Χρησιμοποιήστε ένα CPLD σε δύσκολα στυλ που μπορεί να χρειαστούν έναν αριθμό επαναλήψεων. Είναι πιο εύκολο να στιλ

Για μέγιστη ταχύτητα καθώς και άμεση απόκριση, επιλέξτε ένα CPLD. Η διαφορά στην ταχύτητα είναι εκπληκτική. Τα CPLD ξεκινούν σε 100MHz, ενώ οι μικροελεγκτές ανταποκρίνονται σε διακοπές σε λίγα MHz. Τα στυλ CPLD τύπου κυκλώματα που αντιδρούν σε εξωτερικό ερέθισμα, οι αντιδράσεις συμβαίνουν σχεδόν στιγμιαία. Ένας μικροελεγκτής εκτελεί τον κώδικα για να αντιδράσει σε συμβάντα, ακόμη και οι ρουτίνες διακοπής έχουν συγκριτικά υψηλή καθυστέρηση.

Cpld vs fpga

Το FPGAS είναι πολύ καλύτερα κατανοητό από το CPLD, ωστόσο μοιράζονται πολλά χαρακτηριστικά. Αυτή η αναλογία δεν είναι τέλεια, ωστόσο μας αρέσει: όπου η FPGAS είναι ένας επαναπρογραμματίσετε πυρήνα επεξεργαστή, ένα cpld είναι μια επαναπρογραμματική κάρτα κυκλώματος ή ένα breadboard. Το FPGAS αντικαταστήσει τους μικροελεγκτές, τη μνήμη, καθώς και άλλα εξαρτήματα. Τα cplds παίρνουν λογικά ICs, καθώς και λειτουργούν καλά με ένα μικροελεγκτή.

Κατασκευαστές

Η Altera καθώς και το Xilinx, οι μεγαλύτεροι κατασκευαστές CPLD, κατανοούν πολύ καλύτερα για το FPGA τους. Το Semiconductor Lattice είναι ένας ακόμα μεγάλος κατασκευαστής CPLD με λιγότερη γειτονιά ακολουθώντας. Το Atmel κάνει τις εκδόσεις συμβατών από το PIN των παλαιών βιομηχανικών προτύπων.

Εάν σκοπεύετε να εργαστείτε σε 5βουλες, οι επιλογές σας είναι περιορισμένες. Xilinx XC9500 CPLDs εξακολουθούν να προσφέρονται ως νέο παλιό απόθεμα, ωστόσο δαπάνες τέσσερις φορές περισσότερο από τα νεότερα ισοδύναμα 3.3volt. Η σειρά ATF1502 ATF1502 του Atmel λειτουργεί σε 5βουλες, ωστόσο δεν προσφέρουν δωρεάν περιβάλλον προώθησης.

Στα 3.3volts υπάρχουν περισσότερες επιλογές, ωστόσο τα νέα CPLDs έχουν προοδευτικά έναν πυρήνα που τρέχει στους 2.5Volts, 1.8Volts ή χαμηλότερη. Η σειρά Altera Maxii καθώς και η σειρά Xilinx XC9500XL είναι πιθανότατα τα πιο σημαντικά cplds 3.3volt. Το Xilinx καθιστά το CPLD CPLD CPLD, ωστόσο είναι διαθέσιμο μόνο σε δέσμη TQFP καθώς και χρειάζεται μια ξεχωριστή παροχή 1.8Volt για τον πυρήνα.

Πακέτα

Οι περισσότεροι κατασκευαστές προσφέρουν ένα ή δύο cplds σε ένα παχύ πακέτο PLCC 44 χόμπορ, αν και αυτό αρχίζει να εξαφανίζεται. Το PLCC είναι ένα Soal-Size Surface Chip με ακίδες και στις τέσσερις πλευρές. Οι υποδοχές PLCC44 προσφέρονται συνήθως σε κυκλοφορία καθώς και εκδόσεις SMD. Δυστυχώς, τα νεότερα νοικοκυριά CPLD αρχίζουν να απαλλαγούν από τη δέσμη PLCC καθώς και να προσφέρουν μόνο 44 ακροδέκτες καθώς και μεγαλύτερα μάρκες TQFP, όπως το δροσκόπιο του Xilinx.

Ανάπτυξη περιβάλλοντα

Οι περισσότεροι κατασκευαστές προσφέρουν μια ελεύθερη ατμόσφαιρα πρόοδο που υποστηρίζει την είσοδο στυλ που χρησιμοποιεί απλά σχήματα, εκτός από το Verilog ή VHDL. Πολλοί δεν θα υποστηρίξουν τις τελευταίες FPGA στην ελεύθερη έκδοση, ωστόσο απαιτούν μόνο τα τμήματα CPLD ούτως ή άλλως. Η Altera έχει χαλάρωση, το Xilinx έχει ISE, καθώς και το πλέγμα έχει το Isplever. Η Atmel έχει σχεδιαστές propping για τη σειρά ATF15xx, ωστόσο προσφέρουν μόνο μια 6η άδεια δοκιμών – η οποία δεν θα μας παράσχει πραγματικά.

Προγραμματιστές

Το συμβούλιο προόδου που παρουσιάζουμε δεν απαιτεί ξεχωριστή προγραμματιστής JTAG, δεδομένου ότι ο μικροελεγκτής PIC προγραμματίζει ήδη το CPLD. Αν θέλετε έναν εξωτερικό προγραμματιστή, οι φτηνοί είναι οι παράλληλοι προγραμματιστές λιμένων: παράλληλο καλώδιο III για το Xilinx καθώς και το Buttleblaster για Altera. Προσιτές κλώνοι, καθώς και σχηματικά, προσφέρονται στο Sparkfun. Το OpenOCD είναι ένας γενικός προγραμματιστής USB JTAG που θα λειτουργήσει με πολλά cplds, fpgas, καθώς και όπλα.

Η επιλογή μας

Τελικά εγκαταστάσαμε στη σειρά Xilinx XC9500XL από τότε που had a inexpensive advancement set we might utilize to test our JTAG programmer prior to implementing an entire design.

The DO-CPLD-DK from Digilent includes a XC9572XL, a CoolrunnerII, as well as parallel port programmer. Nu Horizons has some old non-ROHS designs for $40, however because of sloppy variable type handling in their credit history card processing scripts, we couldn’t total an order online. We tried to do it over the phone however they refused to take such a little order on the phone, even during a website malfunction. In the end, it was cheaper to pay full cost at Digikey (#122-1512-ND) after including new Horizon’s exorbitant shipping charges. We wouldn’t normally mention this, however with only two locations to buy the board it’s most likely worth noting our experience.

CPLD advancement board

Click right here for a full size schematic picture (PNG). The circuit as well as PCB are designed utilizing the freeware version of Cadsoft Eagle. All the data for this job are included in the job archive linked at the end of the article.

Κύκλωμα

A pic 24FJ64GA002 microcontroller (IC1) provides the individual as well as programming interface to the CPLD. We utilize this $4 pic in a great deal of jobs since the peripheral pin choose function makes board routing truly easy. inspect out our introduction to the PIC24F for more details. The pic needs to interact with a PC serial port, so we added an affordable MAX3232 RS232 transceiver. The serial interface should work with a USB->serial adapter.

Our option of CPLD (IC3), a Xilinx XC9572XL (PDF), is linked between the pic as well as a number of other components. We can produce an endless range of circuitry between the pic as well as other chips utilizing the reprogrammable logic inside the CPLD. The pic will program the CPLD with code sent from a PC serial port, however we still brought the JTAG pins to a header for simple outside debugging.

A DS1085 digital programmable oscillator (IC4) produces clock frequencies between 8KHz as well as 133MHz, at 10KHz increments. This is extremely similar to the DS1077 we covered earlier, however it has even steps between all frequencies. The DS1085 needs a 5volt supply (VR2). The I2C interface likewise runs at 5volts, so we linked it to 5volt tolerant pic pins. It’s possible to utilize the 3.3volt 66MHz 1085L instead, as well as eliminate the 5volt supply.

We utilized a inexpensive 3.3volt SOT223 voltage regulator (VR1) to power most of the circuit.  The 5volt supply (VR2) can be excluded if you utilize a slower 1085L 3.3volt oscillator.

CPLDs are commonly utilized as a memory controller, so we included 32K of SRAM (IC5) on the advancement board. A 3.3volt latch with 5volt tolerant inputs interface the memory inputs to a wide variety of outside voltages (IC6). The latch inputs are held low with a 1Mohm resistor network (RN1). We’ll discuss this section extensively in an upcoming article.

Pcb

The board is a quasi one-sided design. We made a number of compromises so we might prototype this extremely experimental PCB ourselves. We present the board ‘as is’ for other die-hards that may want to etch this board at home. If you send the PCB to a board house, try to correct these problems prior to creating a ‘real’ double-sided board.

One power pin of the CPLD is missing a decoupling capacitor entirely; there was no method to put a capacitor in that area. One CPLD decoupling capacitor, as well as the SRAM decoupling capacitor, are through-hole parts. utilizing these through-hole parts gotten rid of a few jumper wires.

The jumper wires on the back of the board are optimized for single-sided production, rather than great style practices. We faked a double-sided board by soldering the power bus on the back. A genuine double-sided board style should path the power bus to prevent crossing signal paths, as well as include the missing decoupling capacitors.

We utilized an surface install PLCC chip socket, however a through-hole version is definitely a much better idea. We though the SMD version would be simple to solder, however it [turned out to be] a nightmare. We truly desired the CPLD to be on the front of the board for the coolest possible presentation. A appropriate two-sided board with plated through-holes can have a through-hole socket on the front, however this wasn’t possible with our 1-sided prototype board.

Parts list

Click right here for a full size placement diagram (PNG).

Μέρος
αξία

Ic1
PIC25FJ64GA002 (SOIC)

Ic2
Max3232cse (coic-n)

Ic3
XC9572XL-10PCG44C (PLCC)


PLCC44 socket, SMD

IC4
DS1085 or DS1085L (SOIC)

IC5
32Kx8, 3.3v, SRAM (SOJ)

IC6
74LVT573D (SOIC)

Vr1
3.3v regulator, LD1117S33 (SOT223)

Vr2
5v regulator, LD1117S50 (SOT223)

C1-11,13-17
0.1uF decoupling capacitors (0805)

C12
0.01uF capacitor (0805)

C15,16
0.1uF decoupling capacitors (through-hole)

C18
10uF tantalum capacitor (A)

R1,2
390ohm resistor (0805)

R3-5
2000ohm resistor (0805)

RN1
1Mohm resistor network (9 pin)

Led1,2
LED (0805)

X1
DB9 θηλυκό συνδετήρα σειριακής θύρας * Μη δοκιμασμένη

J1
2.1mm Υποδοχή ισχύος

ICSP, JTAG, SV1
0,1 “κεφαλίδα καρφίτσας, δεξιά γωνία

S1
Οπτικός διακόπτης (DTSM-6)

Υλικολογισμικό

Το υλικολογισμικό γράφεται στο C χρησιμοποιώντας την ελεύθερη έκδοση παρουσίασης του μεταγλωττιστή PIC C30. Ανακαλύψτε όλα σχετικά με την εργασία με αυτή την εικόνα στην εισαγωγή μας στη σειρά Pic 24F. Το υλικολογισμικό περιλαμβάνεται στο αρχείο εργασίας στο τέλος του άρθρου.

Επιθυμούσαμε μια εξαιρετικά απλή μέθοδο για να αλληλεπιδράσετε με το υλικό στο διοικητικό συμβούλιο χωρίς ακινητοποιημένους κύκλους ελέγχου-προγράμματος-προγράμματος. Κάναμε μια προσαρμοσμένη έκδοση του υλικολογισμικού του Pirate Bus που παρέχει μια απλή διασύνδεση τερματικού ASCII στο τσιπ ρολογιού DS1085 (I2C), η διεπαφή προγραμματισμού CPLD (JTAG), καθώς και μια διεπαφή 3 καλωδίου (SPI) στο CPLD. Επιθεωρήστε το σεμινάριο πειρατών λεωφορείων για φόντο στην απλή σύνταξη που χρησιμοποιείται με το υλικολογισμικό.

Το αρχικό firmware Pirate Bus χειρίζεται ορισμένα πρωτόκολλα που μοιράζονται τους ίδιους καρφίτσες. Για την έκδοση CPLD, τροποποιήσαμε τις αναθέσεις PIN για να διαμορφώσουμε τις συνδέσεις στο συμβούλιο προόδου. Επιδιογραφούμε επίσης τις αχρησιμοποίητες μονάδες καθώς και τις επιλογές.

CPLD Blinky LED Παραδείγματα

Ετοιμάζουμε μια σειρά από στυλ στο περιβάλλον προόδου του Xilinx ISE. Τα σχήματα, τα αρχεία τοποθέτησης PIN, καθώς και τα συντριπμένα στυλ (XSVF) περιλαμβάνονται στο αρχείο εργασίας που συνδέονται στο τέλος του αντικειμένου. Μια πλήρης εξήγηση του ISE είναι πέρα ​​από το φάσμα αυτού του άρθρου. Ανακαλύψαμε τα δεδομένα βοήθειας επαρκώς χρήσιμα για να καταστούν αυτά τα παραδείγματα.

Το πρώτο ύφος απλά φωτίζει τη λυχνία LED που συνδέεται με το PIN 8 του CPLD.

Προετοιμάστε το αρχείο xsvf

Το XSVF είναι μια συμπιεσμένη μορφή προγραμματισμού JTAG, όπως εξηγείται από το Xilinx σε αυτή τη σημείωση εφαρμογής (PDF). Το XSVF δεν περιορίζεται στις προγραμματισμένες συσκευές Xilinx, καθώς μπορεί να είναι έτοιμη για οποιοδήποτε είδος τσιπ που παρέχει ένα τυπικό αρχείο BSDL JTAG.

Ανοίξτε το εργαλείο προγραμματισμού επίδρασης από τον πίνακα θέσεων εργασίας του ISE Style Suite κάτω από τη διαμόρφωση της συσκευής στόχου-> Είδη.

Επιλέξτε την επιλογή για να δημιουργήσετε ένα όριο σάρωσης ορίου, καθώς και ορίστε τον τύπο στο XSVF.

Δώστε την έξοδο xsvf ένα όνομα δεδομένων καθώς και στη συνέχεια προσθέστε μια καταρτισμένη εικόνα CPLD (ex1.jed) όταν σας ζητηθεί να προσθέσετε μια συσκευή.

Θα πρέπει να δείτε μια αλυσίδα jtag που περιέχει μία μόνο συσκευή.

Κάντε κλικ στο gadget καθώς και το πρόγραμμα επιλογής. Το αποτέλεσμα θα καταγράψει τις ακολουθίες προγραμματισμού σε ένα αρχείο XSVF.

Με τα δεδομένα XSVF στο χέρι, ήρθε η ώρα να ανοίξετε ένα τερματικό καθώς και το πρόγραμμα το CPLD. Μας αρέσει ο όρος Tera καθώς και ο Hercules στα Windows. Πρέπει να επιτρέψετε τη διαχείριση της ροής XON / Xoff στον πελάτη να χρησιμοποιήσει τη διεπαφή JTAG. Η προεπιλεγμένη ρύθμιση πλαισίου υπολογιστή για τον τερματικό πίνακα προωθήσεων είναι 115200bp, 8N1.

HIZ> M <-Επιλέξτε τη λειτουργία 1. Hiz 2. I2C 3. JTAG 4. Raw3wire Λειτουργία> 3 <-jtag 900 Λειτουργία 602 JTAG έτοιμο Jtag> (2) <-probe jtag αλυσίδα xxx jtag init αλυσίδα XXX JTAGSM: Επαναφορά xxx jtagsm: επαναφορά-> αδράνεια
XXX JTAGSM: IDLE-> Εγγραφή εντολής (καθυστερημένη ένα κομμάτι για TMS)
xxx jtagsm: ir-> αδράνεια
XXX JTAGSM: IDLE-> Εγγραφή δεδομένων
xxx jtagsm: dr-> αδράνεια
XXX JTAGSM: Επαναφορά
xxx jtagsm: επαναφορά-> αδράνεια
XXX JTAGSM: IDLE-> Εγγραφή δεδομένων
Έκθεση αλυσίδας XXX JTAG:
0x01 Συσκευή (ες)
# 0x01: 0xc9 0x02 0x06 0x9a <-xc9572xl απαντά xxx jtagsm: dr-> αδράνεια
Jtag>

Στο Terminal μεταβαίνει στο μενού Mode (M), καθώς και επιλέξτε JTAG (3). Macro 2 ανιχνεύει την αλυσίδα jtag, στην κατάστασή μας, αυτό είναι μόνο το cpld. Η αναφορά της αλυσίδας μας λέει ότι το τσιπ συνδέεται καθώς και η ανταπόκριση. Έλεγχος περισσότερων για τη διεπαφή JTAG.

Τώρα μπορούμε να τρέξουμε τον προγραμματιστή XSVF, Macro (3), καθώς και να ανεβάσετε τα δεδομένα XSVF από το τερματικό σε δυαδική λειτουργία. Το πρώτο παράδειγμα απλά φωτίζει το LED σε PIN 8. Εάν το LED φώτα, μπορούμε να επιβεβαιώσουμε ότι ο προγραμματισμός ήταν επιτυχής. Εάν η LED σας δεν ανάβει, μην απελπισία. Μερικές φορές το JTAG Programmer Sticks, καθώς και μια επαναφορά macro (1) θα πάρει το τσιπ.

Οδήγησε σε πλήρη φωτεινότητα.

74LS32 / 4071 ή πύλη, αναβοσβήνει κατά το ήμισυ (/ 2)

Ένα σημαντικό στοιχείο του συμβουλίου προόδου του CPLD είναι ο συνθέτης συχνότητας 1085 (L) που συνδέεται με το PIN 7 του CPLD. Το επόμενο παράδειγμα χρησιμοποιεί μια λογική ή πύλη, όπως ένα 74LS32 ή 4071 IC, για να αναβοσβήνει το LED κάθε φορά που το σήμα ρολογιού είναι υψηλό. Ακόμη και το πιο αργό ρυθμό ρολογιού, η αναβοσβήνει, η αναλαμπή θα είναι και γρήγορο να δει, ωστόσο θα πρέπει να πάρετε ένα ωραίο αντίκτυπο μερών pwm σε σύγκριση με το πρώτο παράδειγμα.

Jtag> m <-Επιλέξτε τη λειτουργία 1. Hiz 2. I2C 3. JTAG 4. Raw3wire Λειτουργία> 2 <-i2c διεπαφή σε DS1085 900 Λειτουργία 202 I2C έτοιμο I2C> (1) <-Address Περιήγηση Macro XXX Περιήγηση στο χώρο διεύθυνσης 7bit I2C. Βρέθηκαν gadgets σε: 0xB0 0xB1 <-Found τη διεύθυνση DS1085 I2c>

Προγραμματίστε το CPLD όπως πριν, καθώς και στη συνέχεια, μεταβείτε στη λειτουργία I2C για να αποκτήσετε πρόσβαση στο ρολόι DS1085. Μπορούμε να αναζητήσουμε τη διεύθυνση gadget στο th

Back to top