Basisprincipes van FPGA’s – Deel 2: Aan de slag met FPGA’s van Lattice Semiconductor

Door Clive "Max" Maxfield

Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey

Opmerking van de redacteur: Optimale verwerkingsoplossingen worden vaak mogelijk gemaakt door combinaties van RISC, CISC, grafische processors en FPGA’s, door alleen FPGA’s of door FPGA’s die harde processorkernen als onderdeel van hun infrastructuur bevatten. Er zijn echter maar weinig ontwerpers bekend met de mogelijkheden van FPGA’s, hoe die zich hebben ontwikkeld en hoe ze kunnen worden gebruikt. Deel 1 van deze meerdelige serie biedt een a high-level introductie van FPGA’s en waarom ze nodig zijn. In deel 2 richten we ons op de FPGA-componentenfamilies en ontwerptools van FPGA-leverancier Lattice Semiconductor. Deel 3, 4 en 5 gaan in op FPGA’s van Altera, Microchip en Xilinx.

Zoals in deel 1 werd besproken, zijn veldprogrammeerbare gate-arrays (FPGA’s), dankzij tal van kenmerken, een waardevolle tool voor computing, hetzij standalone, hetzij in een heterogene architectuur. Helaas zijn maar weinig ontwerpers bekend met FPGA’s en hoe ze deze componenten in hun ontwerpen kunnen opnemen.

Om hier verandering in te brengen, gaan we dieper in op FPGA-architecturen en bijbehorende tools van verschillende bekende leveranciers, te beginnen met het assortiment van Lattice Semiconductor.

Overzicht van high-level FPGA-opties

Er zijn veel verschillende soorten FPGA’s op de markt, elk met een andere combinatie van mogelijkheden en functies. Elke FPGA begint met een programmeerbare infrastructuur, voorgesteld als een reeks programmeerbare logische blokken (Afbeelding 1a). Vervolgens kunnen items zoals SRAM-blokken, blok-RAM (BRAM) genoemd, phase lock loops (PLL’s) en klokmanagers aan de FPGA-infrastructuur worden toegevoegd (Afbeelding 1b). Ook kunnen DSP-blokken (digital signal processing) (DSP-slices) en SERDES-blokken (high-speed serializer/deserializer) worden geïmplementeerd (Afbeelding 1c).

Diagram van FPGA’s met alleen een programmeerbare infrastructuur en configureerbare IO’s voor algemene doeleinden (GPIO’s) Afbeelding 1: De eenvoudigste FPGA’s bevatten alleen een programmeerbare infrastructuur en configureerbare IO’s voor algemene doeleinden (GPIO’s) (a), die door middel van verschillende architecturen kan worden ingevuld met SRAM-blokken, PLL’s en klokmanagers (b), DSP-blokken en SERDES-interfaces (c) en harde processorkernen en randapparaten (d). (Bron afbeelding: Max Maxfield)

Perifere interfacefuncties zoals CAN, I2C, SPI, UART en USB kunnen als zachte kernen in de programmeerbare infrastructuur worden geïmplementeerd, maar veel FPGA’s bevatten ze als harde kernen in het silicium. Op vergelijkbare wijze kunnen microprocessors als zachte kernen in de programmeerbare infrastructuur of als harde kernen in silicium worden geïmplementeerd (Afbeelding 1d). Verschillende FPGA’s bieden verschillende functies, eigenschappen, mogelijkheden en capaciteiten, gericht op verschillende markten en toepassingen.

Zo zijn er diverse FPGA-leveranciers, waaronder Altera (overgenomen door Intel), Atmel (overgenomen door Microchip Technology), Lattice Semiconductor, Microsemi (ook overgenomen door Microchip Technology) en Xilinx.

Al deze leveranciers bieden meerdere FPGA-families. Sommige hebben systeem-op-chip (SoC) FPGA’s (met harde processorkernen) en andere leveren stralingstolerante componenten, speciaal voor toepassingen in omgevingen met hoge straling zoals ruimtevaart. Het kiezen van een component voor een betreffende taak kan lastig zijn, omdat er zoveel families zijn die elk verschillende functies bieden. Dit artikel richt zich op de componentenfamilies en ontwerptools van FPGA-leverancier Lattice Semiconductor.

Maak kennis met de FPGA’s van Lattice Semiconductor

Het FPGA-aanbod van Lattice Semiconductor omvat het lage tot middensegment, met een focus op low-power componenten, om netwerkproblemen van klanten op te lossen in de snel groeiende communicatie-, computer-, industriële, automobiel- en consumentenmarkten — van de edge tot en met de cloud.

Lattice levert vier belangrijke FPGA-families:

  • iCE (die ze 's werelds kleinste, ultra-low-power FPGA’s noemen)
  • CrossLink en CrossLinkPlus (geoptimaliseerd voor high-speed video- en sensortoepassingen)
  • MachXO (geoptimaliseerd voor bridging, uitbreiding en platformbeheer- en beveiligingstoepassingen)
  • ECP (componenten voor algemene doeleinden gericht op connectiviteits- en acceleratietoepassingen)

Lattice biedt tevens een aantal toolsuites voor ontwerp en verificatie, waaronder Lattice Diamond-software (voor CrossLink/CrossLinkPlus, MachXO en ECP-componenten) en Lattice Radiant-software (voor iCE FPGA’s en toekomstige architecturen), samen met LatticeMico (een grafische tool om op soft microprocessor gebaseerde ontwerpen te maken) en de Lattice sensAI Stack en de Neural Network Compiler (voor ontwerpen met artificial intelligence (AI) en machine learning (ML)).

Traditioneel: ECP FPGA’s

De ECP-componenten van Lattice zijn wat veel ontwerpers zien als ‘traditionele’ FPGA’s. Ze bevatten maximaal 85.000 (k) opzoektabellen (LUT’s) met vier ingangen in een behuizing van 10 millimeter (mm) x 10 mm met een tussenafstand van 0,5 mm. Ze hebben een laag statisch en dynamisch energieverbruik met single-channel protocol-agnostische SERDES-functies onder 0,25 watt en quad-channel SERDES-functies onder 0,5 watt.

Naast SRAM-blokken, DSP-blokken, PLL’s en klokmanagers beschikken ECP FPGA’s over programmeerbare I/O-ondersteuning voor LVCMOS 33/25/18/15/12, XGMII, LVDL, LVDS, Bus-LVDS, 7:1 LVDS, LVPECL en MIPI D-PHY I/O-interfaces.

De configuratiecellen in ECP FPGA’s zijn gebaseerd op SRAM, wat betekent dat hun configuratie, net als bij alle andere op SRAM gebaseerde FPGA’s, moet worden geladen vanaf een externe bron (bijv. flashgeheugen, microprocessor, microcontroller) wanneer het systeem wordt ingeschakeld.

Een goed voorbeeld van een ECP-component is de LFE5UM5G-25F-8BG381C ECP5 5G SERDES-compatibele FPGA in een behuizing van 10 mm x 10 mm. Lattice biedt tevens een bijbehorend ECP5-5G-ontwikkelingsbord, de LFE5UM5G-45F-VERSA-EVN, zodat ontwerpers de functies van de ECP5 FPGA-familie eenvoudig kunnen ontdekken en uitproberen (Afbeelding 2).

Afbeelding van het ECP5-evaluatieboard van Lattice SemiconductorAfbeelding 2: Het ECP5-evaluatieboard is een prototypingkaart met talrijke logische, I/O, 5G SERDES en expansieheaders. (Bron afbeelding: Lattice Semiconductor)

Klein maar krachtig: Lattice iCE FPGA’s

De iCE-componenten zijn de kleinste verkrijgbare FPGA’s, waarbij de kleinste versie 18 I/O’s biedt in een behuizing van slechts 1,4 mm x 1,4 mm. iCE FPGA’s bieden een flexibele logische architectuur met tot 5k LUT’s met vier ingangen, tot 128 kilobit (kbit) ingebed sysMEM BRAM van Lattice en 1 megabit (Mbit) single-port RAM (SPRAM), hoogwaardige DSP-blokken en aanpasbare I/O’s.

Hoewel iCE FPGA’s klein zijn en weinig energie verbruiken, met een slaapstroom van slechts 75 microamps (µA) en een actieve stroom van 1 tot 10 mA voor de meeste toepassingen, zijn ze ook krachtig. Zo kunnen ze bijvoorbeeld kunstmatige neurale netwerken (ANN’s) implementeren voor patroonaanpassing die gebruikt wordt voor ‘always-on’ intelligentie in IoT-randapparatuur.

De configuratiegegevens in iCE FPGA’s worden opgeslagen in niet-vluchtig geheugen (NVM), wat betekent dat deze componenten eenmalig programmeerbaar zijn (OTP). Ondanks dat bevatten ze echter ook SRAM-gebaseerde configuratiecellen. Tijdens de ontwikkeling kan het ontwerp worden getest door de op SRAM gebaseerde configuratiecellen rechtstreeks van buitenaf te laden. Als het ontwerp eenmaal is vastgelegd, kan het in de NVM worden geladen. Zodra het component wordt ingeschakeld, wordt de in de NVM opgeslagen configuratie automatisch massaal parallel naar de op SRAM gebaseerde configuratiecellen gekopieerd.

Een voorbeeld van een iCE-component is de ICE40UL1K-SWG16ITR1K iCE40 UltraLite. Dit is ‘s werelds kleinste vormfactor FPGA (ten tijde van schrijven), met 42 microwatt (µW) statisch vermogen in een behuizing van 1,4 mm x 1,4 mm. Een representatief ontwikkelingsbord is het HM01B0-UPD-EVN Himax HM01B0 UPduino shield en sensAI modulair demonstratieboard (Afbeelding 3).

Afbeelding van het Himax HM01B0 UPduino shield van Lattice SemiconductorAfbeelding 3: Het Himax HM01B0 UPduino shield is een volledige ontwikkelingskit voor het implementeren van kunstmatige intelligentie (AI) met behulp van beeld en geluid als sensorische invoer. (Bron afbeelding: Lattice Semiconductor)

De kit is gebaseerd op de UPduino 2.0-kaart, een rapid prototyping-ontwikkelingsboard in de Arduino-vormfactor met prestaties en I/O-mogelijkheden van de iCE40 UltraPlus FPGA. De kit bevat ook de Himax HM01B0 low-power beeldsensormodule en twee I2S microfoons.

Gespecialiseerd: CrossLink en CrossLinkPlus FPGA’s

De CrossLink- en CrossLinkPlus-families zijn gespecialiseerde FPGA’s die naast programmeerbare logica en substantiële I/O-mogelijkheden ook uitgeharde versies bevatten van specificaties die algemeen worden gebruikt in industriële en automobieltoepassingen. Hiertoe behoren de Mobile Industry Processor Interface (MIPI) D-PHY physical layer standaard voor hogesnelheidsdatacommunicatie, Camera Serial Interface 2 (CSI2)- en Display Serial Interface 2 (DSI2)-kernen, allemaal in behuizingen van 6 mm x 6 mm (CrossLink) en 3,5 mm x 3,5 mm (CrossLinkPlus).

Net als iCE FPGA’s worden de configuratiegegevens in CrossLink-componenten opgeslagen in OTP NVM. Ook bevatten ze op SRAM gebaseerde configuratiecellen die tijdens de ontwikkeling direct kunnen worden geladen om te testen. Als het ontwerp eenmaal is vastgelegd, wordt het in NVM opgeslagen en bij inschakelen automatisch massaal parallel naar de op SRAM gebaseerde configuratiecellen gekopieerd. Ter vergelijking zijn de configuratiecellen in CrossLinkPlus-componenten gebaseerd op flash, wat betekent dat deze componenten naar behoefte kunnen worden geherprogrammeerd. Ook bieden ze instant-on mogelijkheden in minder dan 10 milliseconden (ms).

Een voorbeeld van een CrossLink-component is de LIF-MD6000-6JMG80I met 5936 logische elementen/cellen, 184.320 bit totaal RAM en 37 I/O’s. Ontwerpers kunnen snel aan de slag met behulp van de LF-EVDK1-EVN embedded vision ontwikkelingskit, waarmee op CrossLink gebaseerde MIPI-inputs kunnen worden gecombineerd met ECP5 FPGA-verwerking (Afbeelding 4).

Afbeelding van de Lattice LF-EVDK1-EVN embedded vision ontwikkelingskitAfbeelding 4: De Lattice LF-EVDK1-EVN embedded vision ontwikkelingskit biedt ontwerpers van ingebedde systemen een software- en hardwareomgeving voor prototypeontwikkeling met de mogelijkheid om I/O-kaarten samen te voegen en met verschillende beeldsensoren en displays te communiceren. (Bron afbeelding: Lattice Semiconductor)

Voor I/O- en stroombeheerfuncties: MachXO FPGA’s

Dankzij de honderden I/O's zijn MachXO FPGA’s ideaal voor tal van toepassingen waarvoor GPIO-uitbreiding, interface bridging en power-up beheerfuncties nodig zijn. De nieuwste componenten zijn ontworpen voor naleving met Amerikaanse NIST-normen en bevatten extra beveiligingsfuncties om ervoor te zorgen dat de systeemhardware en firmware veilig worden opgeslagen.

MachXO FPGA’s bevatten een robuuste set GPIO’s met functies zoals ‘hot socketing’, wat betekent dat spanning op de I/O's kan worden aangelegd ongeacht de toestand van de voedingsrails. Terwijl de meeste FPGA-ingangen standaard in pull-up-toestand verkeren, zijn MachXO-ingangen standaard pull-down, waardoor ze uitstekend geschikt zijn voor regelfunctietoepassingen. En dankzij een instant-on van minder dan 10 ms zijn MachXO FPGA’s een ideale oplossing voor ‘first-on, last-off’-regelaars die andere componenten beheren en arrangeren tijdens het opstarten en uitschakelen van het systeem.

De configuratiegegevens in MachXO-componenten worden opgeslagen in flashgeheugen. MachXO-componenten bevatten ook op SRAM gebaseerde configuratiecellen. Zodra het component wordt ingeschakeld, worden de in flashgeheugen opgeslagen configuratiegegevens automatisch massaal parallel naar de op SRAM gebaseerde configuratiecellen gekopieerd. Zolang het component ingeschakeld is, kan er bovendien een nieuwe configuratie in het flashgeheugen worden geladen, waarna deze nieuwe configuratie vervolgens op een geschikt moment naar de SRAM-cellen kan worden gekopieerd.

Een goed voorbeeld van een MachXO-component is de LCMXO3LF-9400C-6BG256C met 9400 logische elementen/cellen, 442.368 bit totaal RAM en 206 I/O’s. Een representatief ontwikkelingsbord is de LCMXO3LF-6900C-S-EVN MachXO3-starterkit (MachX03L-versie).

Afbeelding van MachXO3L-starterkit van Lattice SemiconductorAfbeelding 5: De MachXO3L-starterkit is een breakoutboard om op MachXO3L gebaseerde ontwerpen te evalueren en te ontwikkelen. (Bron afbeelding: Lattice Semiconductor)

De SPI-flash in de kit is beschikbaar voor het evalueren van externe opstartmogelijkheden of functionele mogelijkheden voor dual-boot. Het LCMXO3L-DSI-EVN MachXO3L DSI-breakoutboard wordt aanbevolen voor het evalueren van MIPI DSI en CSI2 I/O, terwijl voor het evalueren van high-speed differentieel I/O het LCMXO3L-SMA-EVN MachXO3L SMA-breakoutboard wordt aanbevolen.

Ontwerpen en ontwikkelen met FPGA’s van Lattice Semiconductor

Een van de meest gebruikte ontwikkelingstechnieken met FPGA’s is taalgestuurd ontwerp (language-driven design of LDD). Hierbij wordt de ontwerpintentie op een abstractieniveau vastgelegd dat ook wel bekend staat als registeroverdrachtniveau (RTL), met behulp van een hardware description language (HDL), zoals Verilog of VHDL. Na verificatie via logische simulatie wordt deze representatie vervolgens naar een synthesemachine overgedragen, samen met aanvullende informatie zoals het doeltype FPGA, pintoewijzingen en timingbeperkingen (bijv. maximale invoer naar uitvoervertragingen). De uitvoer van de synthesemachine is een configuratiebestand dat rechtstreeks naar de FPGA wordt geladen of, in het geval van op SRAM gebaseerde FPGA’s, naar een extern geheugen (Afbeelding 6).

Schema van RTL-ontwerpbeschrijving ingevoerd in een synthesemachineAfbeelding 6: Na verificatie via logische simulatie wordt het RTL-ontwerp naar een synthesemachine overgedragen, samen met aanvullende ontwerpdetails, zoals het FPGA-type, pintoewijzingen en tijdrestricties.s De uitvoer van de synthesemachine is een configuratiebestand dat rechtstreeks in de FPGA wordt geladen (in het geval van NVM- of flashgeheugen) of in een extern geheugen (in het geval van op SRAM gebaseerde componenten). (Bron afbeelding: Max Maxfield)

Lattice Diamond valt in deze toolklasse en biedt een volledige op GUI gebaseerde FPGA-ontwerp- en verificatieomgeving voor CrossLink-, MachXO- en ECP-componenten.

Net als Lattice Diamond biedt Lattice Radiant ook een volledige op GUI gebaseerde FPGA-ontwerp- en verificatieomgeving, maar de Lattice Radiant is gericht op iCE FPGA’s en toekomstige architecturen.

Lattice Radiant biedt een verscheidenheid aan functies:

  • versleuteling van intellectueel eigendom (IP) volgens industriestandaard IEEE 1735 en Synopsys Design Constraints (SDC) voor maximale interoperabiliteit
  • eenvoudige navigatie en foutopsporing dankzij een geïntegreerde toolsetomgeving
  • eenvoudige ontwerpimplementatie met ‘1-klik’ inschakelen via een nieuwe proceswerkbalk
  • volledige closed-loop van fysiek naar logisch ontwerp implementatie cross-probing
  • een IP-verpakkingsfunctie waarmee ontwikkelaars en externe IP-providers versleutelde IP kunnen verpakken in een vorm die geschikt is voor distributie

Systeemontwikkelingstools van LatticeMico

Lattice biedt twee zachte processorkernen, de LatticeMico8 en de LatticeMico32, die allebei in een programmeerbare FPGA-infrastructuur kunnen worden geïmplementeerd.

De LatticeMico8 is een 8-bit microcontroller, geoptimaliseerd en volledig getest voor de MachXO2-serie programmeerbare logische componenten (PLD’s). Ook kunnen deze worden gebruikt als referentieontwerp voor andere FPGA-families. De microcontroller-kern bevat een combinatie van een volledige 18-bit instructieset en 32 algemene registers met minimaal verbruik van resources — minder dan 200 LUT’s in de kleinste configuratie — met behoud van een brede functieset.

De LatticeMico32 is een 32-bit Harvard, RISC-architectuur microprocessor. Een combinatie van een 32-bit brede instructieset en 32 algemene registers levert de prestaties en flexibiliteit die deze microprocessor zo geschikt maken voor een groot aantal markten. Dankzij de RISC-architectuur verbruikt de kern minimale resources, terwijl de prestaties die nodig zijn voor een brede toepassingenset behouden blijven. Om de ontwikkeling van microprocessorsystemen te versnellen, kunnen verschillende optionele randcomponenten, die compatibel zijn met WISHBONE-controller, met de LatticeMico32 worden geïntegreerd.

De systeemontwikkelingstools van LatticeMico bieden een grafische gebruikersinterface waarmee gebruikers LatticeMico-processorkernen en randcomponenten kunnen slepen en neerzetten, aan bussen kunnen verbinden. Ook kunnen ze voor elk component verschillende parameters definiëren, zoals de locatie in de adresruimte van de processor. Zodra het systeem is gedefinieerd, genereren de tools automatisch de bijbehorende RTL die moet worden gesimuleerd en gesynthetiseerd. Het systeem bevat ook de tools waarmee gebruikers de software kunnen genereren die op de processorkernen wordt uitgevoerd.

Tools voor machine learning: sensAI Stack en Neural Network Compiler van Lattice

Toepassingen voor machine learning (ML) en kunstmatige intelligentie (AI) worden momenteel in tal van ingebedde systemen en het Internet of Things (IoT) ingezet, inclusief het Industrial IoT (IIoT).

De sensAI Stack van Lattice bevat al het nodige om op FPGA gebaseerde ML/AI-oplossingen te evalueren, te ontwikkelen en te implementeren, zoals modulaire hardwareplatforms, voorbeelddemonstraties, referentieontwerpen, neurale netwerk-IP-kernen, softwaretools voor ontwikkeling en services voor aangepaste ontwerpen. Deze stack is ontworpen voor ontwikkelaars van flexibel machine learning om de time-to-market voor consumenten- en industriële IoT-toepassingen te versnellen.

De Convolutional Neural Network (CNN) accelerator IP-kern van Lattice is een rekenmachine voor diepe neurale netwerken (DNN’s). De machine is geoptimaliseerd voor convolutionele neurale netwerken, zodat deze kan worden gebruikt voor op beeld gebaseerde toepassingen zoals classificatie, objectdetectie en tracking. Voor de CNN IP-kern is geen extra processor nodig, omdat deze de vereiste berekeningen zelf kan uitvoeren.

De Neural Network Compiler van Lattice stelt ontwerpers in staat neurale netwerken te gebruiken die zijn gemaakt in gemeenschappelijke ontwikkelingskaders — zoals TensorFlow, Caffe en Keras — en ze te compileren voor implementatie in CNN en compacte CNN accelerator IP-kernen van Lattice.

Conclusie

Optimale ontwerpoplossingen zijn vaak mogelijk door combinaties van processors en FPGA’s, door alleen FPGA’s of door FPGA’s die harde processorkernen als onderdeel van hun infrastructuur bevatten. FPGA-technologie is de laatste jaren snel ontwikkeld en kan tegenwoordig voldoen aan de vele ontwerpvereisten op het gebied van flexibiliteit, verwerkingssnelheid en vermogen, waardoor FPGA’s zeer nuttig zijn voor tal van toepassingen, van intelligente interfaces tot machinevisie en AI.

Zoals aangetoond, bestrijken de FPGA-producten van Lattice Semiconductor het lage tot middensegment, met een focus op low-power componenten die netwerkproblemen oplossen in de snel groeiende communicatie-, computer-, industriële, automobiel- en consumentenmarkten, van de edge tot en met de cloud. Ook biedt Lattice diverse ontwerp- en verificatietoolsuites die gericht zijn op meerdere ontwerpstromen, variërend van op taal of grafische processorgebaseerde ontwerpen tot en met ontwerpen die gericht zijn op machine learning en AI-toepassingen.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Achtergrondinformatie over deze auteur

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield received his BSc in Control Engineering in 1980 from Sheffield Hallam University, England and began his career as a designer of central processing units (CPUs) for mainframe computers. Over the years, Max has designed everything from silicon chips to circuit boards and from brainwave amplifiers to steampunk Prognostication Engines (don't ask). He has also been at the forefront of Electronic Design Automation (EDA) for more than 30 years.

Max is the author and/or co-author of a number of books, including Designus Maximus Unleashed (banned in Alabama), Bebop to the Boolean Boogie (An Unconventional Guide to Electronics), EDA: Where Electronics Begins, FPGAs: Instant Access, and How Computers Do Math. Check out his “Max’s Cool Beans” blog.

Over deze uitgever

De Noord-Amerikaanse redacteurs van DigiKey