Complexe Les gadgets logiques programmables complexes (CPLD) contiennent les blocs de construction de nombreuses ICS logiques de 7400 SERRAIES. Les circuits totaux peuvent être conçus sur un PC ainsi que ensuite téléchargés sur un CPLD pour une mise en œuvre immédiate. Un microcontrôleur lié à un CPLD est comme un microcontrôleur associé à une carte de circuit reprogrammable ainsi qu’un magasin électronique complètement stocké.
À tout premier, nous n’étions pas sûrs du charme large ainsi que de l’application de CPLD dans des projets de hobbyistes, mais nous avons été convaincus. Un gadget de logique personnalisé peut se débarrasser des feuilles de données de lecture, la découverte de la combinaison IC de logique parfaite, ainsi que d’attendre des jetons pour arriver. Les cartes de circuit imprimé sont plus faciles avec les CPLD car une seule puce avec placement à code PIN programmable peut remplacer 100 secondes de CI de logique privée. Les erreurs de circuit peuvent être corrigées en téléchargeant une nouvelle conception, plutôt que de gravure et en étourdissant une nouvelle carte de circuit imprimé. Les CPD sont rapides, avec des temps de réaction à partir de 100 MHz. En dépit de leur polyvalence extrême, les CPLD sont une innovation mature avec des puces à partir de 1 $.
Nous avons un conseil d’avancement autochtographiant à domicile et d’auto-programmation pour vous aider à démarrer. Ne vous inquiétez pas, ce tableau a une interface de port série pour travailler avec le CPLD, ainsi que pas besoin d’un programmeur JTAG distinct (généralement parallèle).
Intro to Cplds
Quand utiliser un CPLD
Pensez à utiliser un CPLD lorsqu’un style nécessite plus d’une série de CI de la série de 7400. Un CPLD sera moins cher, plus rapide et peut être programmé avec votre configuration d’épingle parfaite pour faciliter les PCB.
Utilisez un CPLD dans des styles difficiles pouvant nécessiter un certain nombre d’itérations. Il est plus facile de styler un nouveau circuit dans une application logicielle et de la télécharger sur le CPLD qu’il ne doit concevoir, graver, ainsi que de créer une nouvelle carte de circuit imprimé.
Pour une vitesse maximale ainsi que la réponse immédiate, sélectionnez une CPLD. La différence de vitesse est incroyable; Les CPDs commencent à 100 MHz, tandis que les microcontrôleurs répondent aux interruptions à quelques MHz. Les circuits de type Styles CPLD qui réagissent au stimulus extérieur, les réactions se produisent presque instantanément. Un microcontrôleur exécute le code pour réagir aux événements, même les routines d’interruption ont une latence relativement élevée.
CPLD vs FPGA
Les FPGA sont bien mieux compris que les CPLD, mais ils partagent de nombreuses caractéristiques. Cette analogie n’est pas parfaite, mais nous l’aimons: où les FPGA sont un noyau de processeur reprogrammable, un CPLD est une carte de circuit ou une carte de pain reprogrammable. Les FPGA remplacent les microcontrôleurs, la mémoire, ainsi que d’autres composants. Les CPDs prennent des ICS logiques, ainsi que bien travailler avec un microcontrôleur.
Fabricant
Altera ainsi que Xilinx, les plus gros fabricants de CPLD sont bien compris pour leurs FPGA. Le semi-conducteur de réseau est un plus grand fabricant de CPLD avec moins de quartier. Atmel fabrique des versions compatibles des broches d’Old Standard Standard CPDS.
Si vous envisagez de travailler à 5 Volts, vos choix sont limités. Les CPD XLILX XC9500 sont toujours proposés comme neufs anciens actions, mais les dépenses quatre fois plus que les équivalents de 3,3 Volts plus récents. La série ATF1502 de l’ATMEL travaille à 5 Volts, mais elles n’offrent pas un environnement d’avancement gratuit.
A 3.3Volts, il existe plus d’options, mais de nouveaux CPLD ont progressivement un noyau qui fonctionne à 2,5 volts, de 1,8 pouces ou moins. Les séries Altera Maxii ainsi que les séries XILINX XC9500XL sont probablement les CPLD 3,3 Volts les plus importants. De même, Xilinx rend le COOLRUNNERIII CPLD, mais il est uniquement disponible dans un ensemble TQFP et nécessite une alimentation distincte de 1,8 Volt pour le noyau.
Paquets
La plupart des fabricants proposent un ou deux CPLD dans un paquet Hobbyist Friendly PLCC 44, bien que cela commence à disparaître. PLCC est une cassette de surface de taille sticiale avec des broches sur les quatre côtés. Les prises PLCC44 sont couramment offertes dans des versions à travers et des versions SMD. Malheureusement, les nouveaux ménages CPLD commencent à se débarrasser de la paquet PLCC et n’offrent que 44 broches ainsi que des copeaux de TQFP plus importants, tels que Xilinx’s Coolrunneriii.
Environnements de développement
La plupart des fabricants offrent une atmosphère d’avancement gratuite qui prend en charge la saisie de style utilisant des schémas simples, en plus de Verilog ou de VHDL. Beaucoup ne prendront pas en charge les derniers FPGA dans la version gratuite, mais nous n’exigeons que les pièces du CPLD de toute façon. Altera a un quartus, Xilinx a une ISE, ainsi que le réseau de réseau. Atmel possède Prochip Designer pour la série ATF15XX, mais ils n’offrent que un permis d’essai de 6 mois – qu’ils ne nous fourniraient pas vraiment.
Programmeurs
La commission d’avancement que nous ne présentons pas nécessite un programmeur JTAG distinct puisque le microcontrôleur PIC est déjà programmé le CPLD. Si vous souhaitez un programmeur extérieur, les programmeurs de ports parallèles sont les programmeurs parallèles: câble parallèle III pour Xilinx ainsi que BYTLEBLASTER pour Altera. Des clones abordables, ainsi que des schémas, sont offerts à Sparkfun. L’OPENOCD est un programmeur Générique USB JTAG qui fonctionnera avec de nombreux CPLD, FPGA, ainsi que des armes.
Notre choix
Nous nous sommes finalement installés sur la série XILINX XC9500XL depuis son haD Un jeu d’avancement peu coûteux Nous pourrions utiliser notre programmeur JTAG avant de mettre en œuvre une conception entière.
Le DO-CPLD-DK de Digilent comprend un XC9572XL, un COOLRUNNERIII, ainsi qu’un programmeur de port parallèle. Nu Horizons possède de vieilles conceptions non RoHS pour 40 $, cependant en raison de la manipulation de type variable bâclée dans leurs scripts de traitement de carte de crédit, nous ne pouvions pas totaliser une commande en ligne. Nous avons essayé de le faire sur le téléphone, mais ils ont refusé de prendre un ordre aussi petit sur le téléphone, même lors d’un dysfonctionnement d’un site Web. En fin de compte, il était moins cher de payer un coût total à DigiKey (n ° 122-1512-ND) après inclure les frais d’expédition exorbitants de New Horizon. Nous ne mentionnions pas normalement cela, cependant, avec seulement deux endroits pour acheter le conseil d’administration, il vaut probablement la peine de noter notre expérience.
Commission d’avancement de la CPLD
Cliquez ici pour une image schématique de taille complète (PNG). Le circuit ainsi que le PCB sont conçus en utilisant la version gratuite de Cadsoft Eagle. Toutes les données de ce travail sont incluses dans les archives d’emploi liées à la fin de l’article.
Circuit
Un microcontrôleur PIC 24FJ64GA002 (IC1) fournit l’interface individuelle ainsi que la programmation à la CPLD. Nous utilisons cette photo de 4 $ dans de nombreux emplois car la goupille périphérique choisit la fonction fait de la route routière vraiment facile. Inspectez notre introduction à la PIC24F pour plus de détails. Le pic doit interagir avec un port série PC, nous avons donc ajouté un émetteur-récepteur abordable MAX3232 RS232. L’interface série doit fonctionner avec un adaptateur série USB->.
Notre option de CPLD (IC3), un xilinx XC9572XL (PDF), est reliée entre la photo ainsi qu’un certain nombre d’autres composants. Nous pouvons produire une gamme sans fin de circuit entre la photo ainsi que d’autres puces utilisant la logique reprogrammable à l’intérieur du CPLD. La photo programmera le CPLD avec code envoyé à partir d’un port série PC, mais nous avons toujours amené les broches JTAG à un en-tête pour un simple débogage extérieur.
Un oscillateur programmable numérique DS1085 (IC4) produit des fréquences d’horloge comprises entre 8 kHz ainsi que 133 MHz, à des incréments de 10 kHz. Ceci est extrêmement similaire au DS1077 que nous avons couvert plus tôt, mais il a même des étapes entre toutes les fréquences. Le DS1085 a besoin d’une alimentation 5 Volt (VR2). L’interface I2C fonctionne également à 5 Volts. Nous l’avons donc lié à 5 Volt Pic Pics. Il est possible d’utiliser le 3.3Volt 66 MHz 1085L, ainsi que d’éliminer l’alimentation 5 Volt.
Nous avons utilisé un régulateur de tension 33 Volt Sot223 (VR1) peu coûteux (VR1) pour pouvoir la plus grande partie du circuit. L’alimentation 5 Volet (VR2) peut être exclue si vous utilisez un oscillateur de 1085L 3,3 Volt plus lent.
Les CPLD sont couramment utilisés en tant que contrôleur de mémoire, nous avons donc inclus 32k de SRAM (IC5) sur la carte d’avancement. Un loquet 3.3Volt avec des entrées tolérantes à 5 Volts interface les entrées de mémoire sur une grande variété de tensions extérieures (IC6). Les entrées de verrouillage sont maintenues bas avec un réseau de résistances de 1MOHM (RN1). Nous discuterons de cette section largement dans un article à venir.
Cavalier
La carte est une conception quasi unilatérale. Nous avons fait un certain nombre de compromis afin que nous puissions prototyper ce PCB extrêmement expérimental nous-mêmes. Nous présentons le conseil d’administration ‘tel quel’ pour d’autres déséquilibres qui peuvent souhaiter gravir ce conseil d’administration à la maison. Si vous envoyez le PCB à une maison de conseil, essayez de corriger ces problèmes avant de créer une carte double face «réelle».
Une goupille d’alimentation du CPLD manque entièrement un condensateur de découplage; Il n’y avait pas de méthode pour mettre un condensateur dans cette zone. Un condensateur de découplage de CPLD, ainsi que le condensateur de découplage SRAM, sont des parties traversantes. Utiliser ces pièces à travers les trous traversants se débarrassent de quelques fils de cavaliers.
Les fils de cavaliers à l’arrière de la planche sont optimisés pour une production à un côté, plutôt que des pratiques de style. Nous avons simulé une carte double face en soudant le bus de puissance à l’arrière. Un véritable style de la carte à double face doit parcourir le bus de puissance pour éviter les chemins de signaux croisés, ainsi que les condensateurs de découplage manquants.
Nous avons utilisé une prise de puce PLCC d’installation de surface, mais une version traversante est définitivement une bonne idée. Nous, bien que la version SMD soit simple à souder, mais elle [s’est avérée être] un cauchemar. Nous avons vraiment désiré le CPLD d’être sur le devant de la planche pour la présentation la plus cool possible. Une carte à deux côtés appropriée avec des trous traversants plaqués peut avoir une prise traversée à travers le front, mais ce n’était pas possible avec notre prototype à 1 face.
Liste des pièces
Cliquez ici pour un diagramme de placement complet (PNG).
Partie
Évaluer
Ic1
Pic25fj64ga002 (SOIC)
Ic2
Max3232cse (SOIC-N)
Ic3
XC9572XL-10PCG44C (PLCC)
–
Prise PLCC44, SMD
Ic4
DS1085 ou DS1085L (SOIC)
Ic5
32KX8, 3.3V, SRAM (SOJ)
Ic6
74LVT573D (SOIC)
Vr1
3.3V Régulateur, LD1117S33 (SOT223)
Vr2
Régulateur 5V, LD1117S50 (SOT223)
C1-11,13-17
0.1UF Condensateurs de découplage (0805)
C12
0.01uf condensateur (0805)
C15,16
0.1UF Condensateurs de découplage (trou traversant)
C18
10UF Condensateur Tantalum (A)
R1,2
Résistance 390OHM (0805)
R3-5
Résistance de 2000OHM (0805)
Rn1
Réseau de résistances de 1MOHM (9 broches)
LED1,2
LED (0805)
X1
Connecteur de port série DB9 Femme * non testé
J1
Jack électrique 2.1mm
ICSP, JTAG, SV1
0.1″ pin header, right angle
S1
Tactile switch (DTSM-6)
Firmware
The firmware is written in C utilizing the free presentation version of the pic C30 compiler. discover all about working with this pic in our introduction to the pic 24F series. The firmware is included in the job archive at the end of the article.
We desired a super simple method to interact with the hardware on the board without endless compile-program-test cycles. We made a custom version of the Bus Pirate firmware that provides a simple ASCII terminal interface to the DS1085 clock chip (I2C), the CPLD programing interface (JTAG), as well as a 3 cable (SPI) interface to the CPLD. inspect out the Bus Pirate tutorial for background on the simple syntax utilized with the firmware.
The original Bus Pirate firmware handles a number of protocols that share the exact same pins. For the CPLD version, we altered the pin assignments to in shape the connections on the advancement board. We likewise eliminated unused modules as well as options.
CPLD blinky LED examples
We prepared a number of styles in Xilinx’s ISE advancement environment. The schematics, pin placement files, as well as compiled styles (XSVF) are included in the job archive linked at the end of the article. A full explanation of ISE is beyond the range of this article; we discovered the assist data sufficiently useful to make these examples.
The very first style just lights the LED linked to pin 8 of the CPLD.
Prepare the XSVF file
XSVF is a compressed JTAG programming format, as explained by Xilinx in this application note (PDF). XSVF isn’t restricted to programming Xilinx devices, as well as can be gotten ready for any type of chip that provides a typical BSDL JTAG meaning file.
Open the effect programming tool from the ISE style Suite job panel under Configure target device->iMPACT.
select the choice to produce a limit scan file, as well as set the type to XSVF.
Give the XSVF output a data name as well as then add a compiled CPLD picture (ex1.jed) when prompted to add a device.
You should see a JTAG chain that contains a single device.
Click on the gadget as well as select program; effect will record the programming sequences to an XSVF file.
With XSVF data in hand, it’s time to open up a terminal as well as program the CPLD. We like Tera Term as well as Hercules on Windows. You must allow XON/XOFF flow manage in the client to utilize the JTAG interface. The default PC side setting for the advancement board terminal is 115200bps, 8N1.
HiZ>m <–select mode
1. Hiz
2. I2C
3. JTAG
4. RAW3WIRE
MODE>3 <–JTAG
Ensemble de mode 900
602 JTAG READY
JTAG>(2) <–probe JTAG chain macro
xxx JTAG INIT CHAIN
xxx JTAGSM: RESET
xxx JTAGSM: RESET->IDLE
xxx JTAGSM: IDLE->Instruction Register (DELAYED ONE bit FOR TMS)
xxx JTAGSM: IR->IDLE
xxx JTAGSM: IDLE->Data Register
xxx JTAGSM: DR->IDLE
xxx JTAGSM: RESET
xxx JTAGSM: RESET->IDLE
xxx JTAGSM: IDLE->Data Register
xxx JTAG CHAIN REPORT:
0x01 DEVICE(S)
#0x01 : 0xC9 0x02 0x06 0x9A <–XC9572XL responds
xxx JTAGSM: DR->IDLE
JTAG>
In the terminal we go into the mode menu (m), as well as select JTAG (3). Macro 2 probes the JTAG chain, in our situation this is just the CPLD. The chain report tells us that the chip is linked as well as responding. checked out more about the JTAG interface.
Now we can run the XSVF programmer, macro (3), as well as upload the XSVF data from the terminal in binary mode. The very first example just lights the LED on pin 8. If the LED lights, we can confirm that programming was successful. If your LED doesn’t light, don’t despair; sometimes the JTAG programmer sticks as well as a reset macro (1) will get the chip going.
LED at full brightness.
74LS32/4071 OR gate, blink at half rate (/2)
A major element of the CPLD advancement board is the 1085(L) frequency synthesizer linked to pin 7 of the CPLD. The next example utilizes a logic OR gate, like a 74LS32 or 4071 IC, to blink the LED whenever the clock signal is high. At even the slowest clock rate the blinking will be as well quick to see, however we should get a nice PWM dimming impact compared to the very first example.
JTAG>m <–select mode 1. Hiz 2. I2C 3. JTAG 4. RAW3WIRE MODE>2 <–I2C interface to DS1085 Ensemble de mode 900 202 I2C prêt I2C>(1) <–address browse macro xxx browsing 7bit I2C address space. Found gadgets at: 0xB0 0xB1 <–found the DS1085 address I2c>
Program the CPLD as before, as well as then switch to I2C mode to gain access to the DS1085 clock. We might look up the gadget address in th