Deze opgevoerde versie van onze CPLD-print heeft met de MAX10M08 niet alleen een CPLD aan boord met meer logische elementen dan zijn voorganger, maar het IC bevat ook typische FPGA-functies zoals PLL’s, ADC’s en softcore-microcontrollers.

In Elektor 5-6/2018 presenteerde de auteur een print met een CPLD uit de MAX-II-familie van Altera (tegenwoordig Intel). De op deze print gemonteerde EPM570 is een CPLD met 570 logische elementen (LE) in een TQFP100-behuizing, maar de print ondersteunt ook de kleinere EPM240 die dezelfde pen-layout heeft. De relatief kleine IC-behuizing maakte het mogelijk om de print als een soort DIL-IC op prototype-boards te plaatsen.

Weliswaar kan met de 570 LE een heleboel logica worden gebouwd, maar soms is het niet genoeg, en daarom gingen we op zoek naar een andere CPLD-familie. Omdat de MAX-V-reeks weinig voordelen biedt ten opzichte van de MAX-II-familie, is het handiger om direct over te stappen op Intel’s actuele CPLD-familie MAX10. Deze familie bestaat uit zeven CPLD-productgroepen, ieder met zijn eigen varianten. Er is keuze uit 2K tot 50K logische elementen, enkelvoudige of dubbele voeding met geïntegreerde 3,3V-LDO (bij het hier gebruikte model is alleen Single Power Supply mogelijk), flash-geheugenblokken van verschillende grootte, analoog/digitaal-converters (ADC’s), een temperatuursensor, dual-configuration flash (twee dynamisch te gebruiken images op één chip) en nog veel meer.

Van CPLD tot FPGA

De MAX10-familie beschikt naast afzonderlijke CPLD-functies ook over volledige FPGA-functies zoals (maximaal vier) interne PLL’s om hogere klokfrequenties te genereren, softcore-microcontrollers (NIOS), DSP-blokken (Digital Signal Processing) en soft-DDR3-geheugencontrollers.

Al deze varianten zijn in verschillende behuizingen (van kleine ‘wafer’-behuizingen tot grote exemplaren met honderden I/O-pennen) beschikbaar. Dit is ook meteen ons eerste keuzecriterium: De enige voor hobbyisten met de hand nog soldeerbare behuizing is namelijk de EQFP met 144 aansluitingen. Door deze behuizing met afmetingen van 22 x 22 mm2 wordt de print weliswaar iets groter dan zijn voorganger, maar beschikt in ruil daarvoor (in alle varianten) over 101 bruikbare I/O’s. Meer (gedetailleerde) informatie is te vinden in het handboek van de MAX10-familie.

Periferie

Net als zijn kleinere voorganger bevat deze print, zoals in het schema van figuur 1 is te zien, naast de nieuwe CPLD ook een spanningsregelaar inclusief afvakcondensatoren, een klokoscillator en een JTAG-connector voor het programmeren. Daarnaast is er ook een spanningsreferentie aanwezig voor de in de CPLD geïntegreerde A/D-converter (Bank 1A).
 
Bild 1. Im Schaltplan ist der MAX-10M08SAE144 zur übersichtlichen Darstellung in zahlreiche Sektionen unterteilt (den Schaltplan können Sie unten als PDF herunterladen).
Figuur 1. Voor de duidelijkheid is de MAX-10M08SAE144 in het schema in aparte secties opgesplitst.
Op het prototype is een 10M08 gemonteerd die 8K logische eenheden (LE), een PLL en een A/D-converter bevat. De print is echter geschikt voor alle leden van de MAX-10-familie met 2...50K LE’s zolang deze zijn ondergebracht in een EQFP-144-behuizing. Het betreft weer een vierlaags print zodat de goede werking ook bij hogere klokfrequenties is gewaarborgd.

Net als bij het eerdere model zijn ook hier niet alle I/O’s met de connectoren verbonden en dat heeft een goede reden: het board kan weliswaar als een groot DIL-IC op een breadboard of gaatjesprint worden geplaatst, maar de clou is eigenlijk dat de twee(!) pen/busheaders dezelfde layout hebben als de 2 x 20-polige I/O-connector van een Raspberry Pi (vanaf versie 2) en daardoor direct op deze minicomputer kunnen worden geplaatst. Hiermee worden de rekenkracht en de PC-interfaces van de Raspberry Pi gecombineerd met de hardwaremogelijkheden van een moderne CPLD. In figuur 2 ziet u de penlayout van de drie connectoren (met de CPLD-pennen) en ter vergelijking de GPIO-connector van de Raspberry Pi. Naast elkaar liggende aansluitingen met dezelfde kleur vormen een differentieel in- of uitgangspaar, maar kunnen natuurlijk ook (net als de niet-gekleurde aansluitingen) afzonderlijk worden gebruikt.
 
Figuur 2. Penlayout van de drie connectoren van de CPLD-print en de GPIO-connector van de Raspberry Pi.
Figuur 3. De CPLD-print bovenop de RPi 3+.
Ook de bevestigingsgaten passen precies.

Combinaties

Er zijn dus veel combinatiemogelijkheden: de print kan, zoals in figuur 3 is te zien, in zijn geheel op de RPi worden geplaatst, waarbij ook de bevestigingsgaten overeenkomen. Connector JP1 is als busheader aan de onderkant gemonteerd en met de GPIO’s van de Raspberry Pi verbonden. De twee andere connectoren zijn als pinheaders aan de bovenkant gemonteerd en vrij toegankelijk.

Figuur 4 laat zien hoe de RPi via JP2 de CPLD aanstuurt, en deze op zijn beurt via JP1 met de elektronica (bijvoorbeeld vermogensdrivers) op een gaatjesprint is verbonden. De voeding van de twee printen kan worden gecombineerd of gescheiden worden gehouden. Dit wordt ingesteld met de 0-Ω-weerstanden R12, R13, R30 en R31.

 
Figuur 4. De Raspberry Pi bestuurt de CPLD, en deze bestuurt op zijn beurt de elektronica op de toepassingsprint.
Als de printen zich op een bepaalde afstand van elkaar bevinden, kunnen de verbindingen ook met flatcable worden gemaakt (figuur 5). En tot slot kan de print met de 10M08SAE144 natuurlijk ook in zijn eentje, zonder RPi-ondersteuning, worden gebruikt!
 
Figuur 5. Separate opbouw met flatcables.
(180673)
 

 ➔ Wilt u meer ElektorLabs artikelen lezen? Word dan nu lid van Elektor!