Grundprinciper för FPGA – del 2: Komma igång med FPGA:er från Lattice Semiconductor
Bidraget med av DigiKeys nordamerikanska redaktörer
2019-12-18
Redaktörens anmärkning: optimala processningslösningar skapas ofta genom kombinationer av RISC, CISC, grafikprocessorer och FPGA:er, genom FPGA:er på egen hand eller genom FPGA:er med interna processorkärnor. Dock är många konstruktörer obekanta med FPGA:ernas funktioner, hur de har utvecklats och hur de används. I del 1 i denna serie ges en inledning till högnivå-FPGA:er och anledningen till att dessa behövs. Här i del 2 fokuserar vi på FPGA-enheter och designverktyg som erbjuds av FPGA-leverantören, Lattice Semiconductor. I del 3, 4 och 5 tittar vi närmare på FPGA:er från Altera, Microchip och Xilinx.
Elektriskt programmerbara grindmatriser (FPGA:er) har – som vi diskuterade i del 1 – många egenskaper som gör dem till en ovärderlig tillgång vid databeräkningar (antingen fristående eller i en heterogen arkitektur) men många konstruktörer är fortfarande inte bekanta med FPGA:er och hur dessa enheter kan användas i deras designer.
Ett sätt att åtgärda detta är att titta närmare på FPGA-arkitektur och relaterade verktyg från större leverantörer, och det ska vi göra nu genom att ta en titt på Lattice Semiconductors produkter.
Översikt över alternativ inom högnivå-FPGA:er
Det finns många typer av FPGA:er på marknaden, alla med olika kombinationer av egenskaper och funktioner. I hjärtat av en FPGA finns den programmerbara strukturen, som presenteras som en matris av programmerbara logikblock (figur 1a). Nästa steg upp ska FPGA-strukturen innehålla exempelVIS SRAM-block (kallas block-RAM, BRAM), faslåsta slingor (PLL:er) och klockhanterare (figur 1b). Digitala signalbehandlingsblock (signalprocessor) och höghastighets SERDES-block (serialisatorer/deserialisatorer) kan också läggas till (figur 1c).
Figur 1: De enklaste FPGA:erna innehåller endast programmerbar struktur och konfigurerbara GPIO:er (General-Purpose IO) (a) (olika arkitekturer förstärker den grundläggande strukturen med SRAM-block), PLL:er och klockhanterare (b), signalprocessorblock och SERDES-gränssnitt (c) samt interna processorkärnor och kringutrustning (d). (Bildkälla: Max Maxfield)
Perifera gränssnittsfunktioner som CAN, I2C, SPI, UART och USB kan implementeras som mjukvarukärnor i den programmerbara strukturen, men många FPGA:er inkluderar dem som maskinvarukärnor i kiselmaterialet. På samma sätt kan mikroprocessorer implementeras som mjukvarukärnor i den programmerbara strukturen eller som hårdvarukärnor i kiselmaterialet (figur 1d). Olika FPGA:er erbjuder olika uppsättningar funktioner, egenskaper och kapaciteter som riktar sig till olika marknader och tillämpningar.
Det finns flera olika FPGA-leverantörer, inklusive Altera (nu uppköpta av Intel), Atmel (uppköpta av Microchip Technology), Lattice Semiconductor, Microsemi (också uppköpta av Microchip Technology) och Xilinx.
Alla dessa leverantörer erbjuder flera olika modeller av FPGA:er – vissa erbjuder systemkrets(SoC)-FPGA:er (med fysiska processorkärnor) och vissa erbjuder strålningståliga enheter för omgivningar med höga strålningsnivåer (vid exempelvis användning i rymden). Det kan vara svårt att välja den bästa enheten för en uppgift eftersom det finns så många olika familjer som var och en erbjuder olika resurser. I denna artikel fokuserar vi på enheter och designverktyg från Lattice Semiconductor.
Introduktion av FPGA:er från Lattice Semiconductor
FPGA:er från Lattice Semiconductor täcker låg till medelhög effekt, med fokus på strömsnåla enheter som används för att lösa kunders problem över nätverket (från edge till moln) i den snabbt växande kommunikations-, databehandlings-, industri-, bilindustri- och konsumentsektorn.
Lattice har fyra huvudgrupper av FPGA:er:
- iCE (vilka man kallar världens minsta FPGA:er med ultralåg effekt)
- CrossLink och CrossLinkPlus (optimerade för tillämpningar inom höghastighetsvideo och sensorer)
- MachXO (optimerade för hantering och säkerhet inom bryggning, expansion och plattform)
- ECP (enheter för allmän användning i tillämpningar inom anslutning och acceleration)
Lattice har också flera olika programsviter för design och verifiering, inklusive Lattice Diamond Software (för CrossLink/CrossLinkPlus-, MachXO- och ECP-enheter) och Lattice Radiant-programvara (för iCE-FPGA:er och framtida arkitektur). De har även LatticeMico (ett grafikverktyg som används vid mikroprocessorbaserad programvarudesign) samt Lattice sensAI-stack och kompilerare för neurala nätverk (för konstruktioner inom artificiell intelligens (AI) och maskininlärning (ML)).
Traditionellt: ECP-FPGA:er
Lattice ECP-enheter är vad många konstruktörer skulle kalla traditionella FPGA:er. Dessa kan innehålla upp till 85 000 (k) uppslagstabeller (LUT) med fyra ingångar i ett 10 x 10 x 0,5 mm stort format. De har låg statisk och dynamisk strömförbrukning med enkanals protokollberoende SERDES-funktion under 0,25 W och fyrkanals SERDES-funktion under 0,5 W.
Förutom SRAM-block, digitala signalbehandlingsblock (signalprocessor), faslåsta slingor (PLL) och klockhanterare har ECP-FPGA:er programmerbart I/O-stöd för följande ingångs-/utgångsgränssnitt: LVCMOS 33/25/18/15/12, XGMII, LVTTL, LVDS, Bus-LVDS, 7:1 LVDS, LVPECL och MIPI D-PHY.
Konfigurationsceller i ECP-FPGA:er är SRAM-baserade, vilket betyder att deras konfiguration (precis som för andra SRAM-baserade FPGA:er) måste hämtas från en extern källa (till exempel flashminne, mikroprocessor, microcontroller) när systemet är strömsatt.
Ett bra exempel på en ECP-enhet är LFE5UM5G-25F-8BG381C ECP5 5G SERDES-förberedd FPGA i ett 10 x 10 mm stort paket. För att konstruktörer enklare ska kunna undersöka och experimentera med funktionerna i ECP5-FPGA-enheterna tillhandahåller Lattice också ett utvecklingskort för ECP5-5G (LFE5UM5G-45F-VERSA-EVN) (figur 2).
Figur 2: Utvärderingskortet ECP5 är ett prototypkort med överflöd av logik, I/O, 5G SERDES och expansionsstiftlister. (Bildkälla: Lattice Semiconductor)
Liten med kraftfull: Lattice iCE-FPGA
De minsta FPGA:er som finns heter iCE-enheter, och den minsta av dessa har 18 ingångar/utgångar i ett 1,4 x 1,4 mm stort format. FPGA:er av iCE-typ har flexibel arkitektur med upp till 5k LUT:er med fyra ingångar, inbäddade Lattice sysMEM BRAM (upp till 128 kbit), enports-RAM (SRAM) (1 Mbit), signalprocessorblock för hög prestanda och anpassningsbara ingångar/utgångar.
Trots att de är små och strömsnåla (standbyströmmen är så låg som 75 µA) och med aktiv ström från 1 till 10 mA för de flesta tillämpningar är iCE-FPGA:er även kraftfulla. De kan till exempel implementera artificiella neurala nätverk (ANN) för den mönstermatchning som är nödvändig för att alltid ha intelligens redo i periferin (edgen).
Konfigurationsdata i iCE-FPGA:er lagras i ett icke-flyktigt minne (NVM), vilket betyder att dessa enheter inte är raderingsbara (OTP). De innehåller också SRAM-baserade konfigurationsceller. Under utveckling kan designen testas genom direkt inläsning av SRAM-baserade konfigurationsceller från extern källa. När designen är färdig kan den läsas in på NVM. När enheten startas kopieras konfiguration lagrad i NVM automatiskt till de SRAM-baserade konfigurationscellerna mycket parallellt.
Som exempel på en iCE-enhet kan vi ta ICE40UL1K-SWG16ITR1K iCE40 UltraLite, vilken är en FPGA med världens minsta dimensioner (1,4 x 1,4 mm) vid publicering av denna artikel och med statisk effekt 42 µW. Ett lämpligt utvecklingskort skulle vara HM01B0-UPD-EVN Himax HM01B0 UPduino moduluppbyggt demonstrationskort (sköld och sensAI) (figur 3).
Figur 3: Himax HM01B0 UPduino-sköld är en komplett utvecklingssats för implementering av artificiell intelligens (AI) med vision och ljud som sensorisk ingång. (Bildkälla: Lattice Semiconductor)
Satsen är baserad på UPduino 2.0-kortet, ett snabbt utvecklingskort för prototypkonstruktion med samma dimensioner som Arduino och med prestanda och I/O-kapaciteter motsvarande iCE40 UltraPlus-FPGA. Den innehåller också Himax HM01B0 strömsnåla bildsensormodul och två I2S-mikrofoner.
Special: CrossLink- och CrossLinkPlus-FPGA:er
CrossLink och CrossLinkPlus är special-FPGA:er som förutom programmerbar logik och höga I/O-prestanda har förbättrade versioner av de specifikationer som används i stor utsträckning för tillämpningar inom industri och fordonsindustri. Bland dessa kan nämnas standard för MIPI-gränssnittet (Mobile Industry Processor Interface) D-PHY med fysiskt lager för snabb datakommunikation, kärnor med seriellt kameragränssnitt CSI2 och seriellt displaygränssnitt DSI2 – allt i en förpackning med mycket små dimensioner (6 x 6 mm för CrossLink och 3,5 x 3,5 mm för CrossLinkPlus).
Precis som för iCE-FPGA:er lagras konfigurationsdata i CrossLink-enheter i OTP NVM, vilka också innehåller SRAM-baserade konfigurationsceller som kan hämtas direkt under utvecklingsarbetet för testning. När designen är färdig hämtas den till NVM och kopieras automatiskt - i helt parallell stil - till de SRAM-baserade konfigurationscellerna mycket parallellt vid start. Som jämförelse kan sägas att konfigurationscellerna i CrossLinkPlus-enheter är flash-baserade, vilket betyder att dessa enheter kan programmeras om efter behov. De ger också full kapacitet direkt efter start (inom 10 ms).
Som exempel på en CrossLink-enhet kan vi ta LIF-MD6000-6JMG80I med 5936 logikelement/logikceller, totalt 184 320 RAM-bitar och 37 ingångar/utgångar. För att komma igång med design av inbäddad vision är LF-EVDK1-EVN utvecklingssats för inbäddat maskinseende ett bra hjälpmedel för konstruktörer. Det kan användas för att kombinera CrossLink-baserade MIPI-ingångar med ECP5 FPGA-processning vid design av prototyper för inbäddad vision (figur 4).
Figur 4: Lattice LF-EVDK1-EVN utvecklingssats för inbäddat maskinseende är en prototyputvecklingsmiljö för programvara/maskinvara. Den kan användas av konstruktörer av inbäddade system för att blanda och matcha ingångs- och utgångskort så att de fungerar tillsammans med flera olika bildsensorer och -displayer. (Bildkälla: Lattice Semiconductor)
För ingångar/utgångar och strömhanteringsfunktioner: MachXO-FPGA:er
Med hundratals ingångar/utgångar är MachXO-FPGA:er perfekta för flera olika tillämpningar där det krävs GPIO-expansion, bryggning av gränssnitt och funktioner för starthantering. De senaste tillskotten i denna produktgrupp är designade för NIST-överensstämmelse och har extra säkerhetsfunktioner som säkerställer att systemets maskinvara och programvara skyddas.
MachXO-FPGA:er har en robust uppsättning GPIO:er med funktioner som ”hot socketing”, med vilken spänning kan appliceras på ingångar/utgångar oberoende av statusen på spänningsmatningens referensnivåer. Dessutom intar MachXO-ingångar som standard pull- down (till skillnad mot de flesta FPGA-ingångar som i standardutförande intar pull-up), vilket gör att de är mycket lämpliga att använda för styrfunktioner. Med starttid kortare än 10 ms är MachXO-FPGA:er den idealiska lösningen för styrenheter som ska startas först och stängas av sist, vilka hanterar och sekvenserar andra komponenter under systemstart och systemavstängning.
Konfigurationsdata i MachXO-enheter lagras på flashminne. MachXO-enheter innehåller också SRAM-baserade konfigurationsceller. När enheten startas kopieras konfigurationsdata lagrad i flashminnet, på helt parallellt manér automatiskt till de SRAM-baserade konfigurationscellerna. Dessutom går det att hämta ny konfiguration till flashminnet när enheten är i drift och därefter kopiera denna nya konfiguration till SRAM-cellerna vid lämplig tidpunkt.
Ett bra exempel på en MachXO-enhet är LCMXO3LF-9400C-6BG256C med 9400 logikelement/logikceller, totalt 442 368 RAM-bitar och 206 ingångar/utgångar. Ett representativt utvecklingskort skulle kunna vara startpaketet LCMXO3LF-6900C-S-EVN MachXO3 (MachX03L-version).
Figur 5: Startpaketet MachXO3L är ett grundläggande breakout-kort för enkel utvärdering och utveckling av MachXO3L-baserad design. (Bildkälla: Lattice Semiconductor)
SPI-flash finns tillgänglig på satsens kort för utvärdering av kapacitet för funktionerna extern start eller flervalsstart. Breakout-kortet LCMXO3L-DSI-EVN MachXO3L DSI rekommenderas för utvärdering av MIPI DSI- och CSI2-ingångar/utgångar. Breakout-kortet LCMXO3L-SMA-EVN MachXO3L SMA rekommenderas för utvärdering av differentierade höghastighetsingångar/-utgångar.
Design och utveckling med FPGA:er från Lattice Semiconductor
En av de vanligaste teknikerna som används vid utveckling med FPGA:er är språkbaserad design (LDD). Detta innefattar att åskådliggöra designavsikten med på en abstraktionsnivå känd som RTL (Register Transfer Level) med hjälp av maskinvarubeskrivande språk (HDL), som till exempel Verilog eller VHDL. Efter en verifiering via logisk simulering matas denna representation in i en syntesmotor, tillsammans med ytterligare information, som typ av mål-FPGA, stifttilldelning och tidsbegränsningar (till exempel fördröjning mellan ingång och utgång). Utmatningen från syntesmotorn är en konfigurationsfil, vilken antingen hämtas direkt till FPGA:n eller till ett externt minne (den senare för SRAM-baserade FPGA:er) (figur 6).
Figur 6: Efter en verifiering via logisk simulering matas designbeskrivningen för RTL in i en syntesmotor, tillsammans med ytterligare designdetaljer som FPGA-typ, stifttilldelning och tidsbegränsningar. Utmatningen från syntesmotorn är en konfigurationsfil, vilken antingen hämtas direkt till FPGA:n (för NVM- eller flashbaserade enheter) eller till ett externt minne (för SRAM-baserade enheter). (Bildkälla: Max Maxfield).
Lattice Diamond ingår i denna klass av verktyg och ger en komplett användargränssnittsbaserad FPGA-design och verifieringsmiljö för CrossLink-, MachXO- och ECP-enheter.
Precis som Lattice Diamond har Lattice Radiant också en komplett användargränssnittsbaserad FPGA-design och verifieringsmiljö, med den skillnaden att Lattice Radiant är avsedd för iCE-FPGA:er och framtida arkitektur.
Exempel på funktioner för Lattice Radiant:
- IP-kryptering (immaterialrätt) enligt branschstandard IEEE-1735 och SDC (Synopsys Design Constraints) för maximal interoperabilitet
- Enkel design och felsökning tack vare miljö med integrerat verktyg
- Enkel exekvering av designimplementering med ett klick tack vare nytt verktygsfält
- Komplett korskommunikation (cross-probing) med fysisk till logisk designimplementering med sluten slinga
- En IP-packningskapacitet som medger för utvecklare och tredje-parts IP-leverantörer att packa krypterad IP i en form som är lämplig för distribution
LatticeMico systemutvecklingsverktyg
Lattice har två mjukvaruprocessorkärnor (LatticeMico8 och LatticeMico32) vilka båda kan implementeras i FPGA:ns programmerbara struktur.
LatticeMico8 är en 8-bitars microcontroller som är optimerad och komplett testad för programmerbara logikenheter (PLD) i serie MachXO2. Den kan också användas som referensdesign för andra FPGA:er. Microcontrollerns kärna har en komplett 18-bitars instruktionsuppsättning med 32 register för generell användning och förbrukar minimal mängd av enhetens resurser (mindre än 200 LUT i den minsta konfigurationen) samtidigt som den har många olika funktioner.
LatticeMico32 är en 32-bitars Harvard mikroprocessor med RISC-arkitektur. Genom att kombinera en 32-bitars instruktionsuppsättning med 32 register för generell användning har LatticeMico32 den prestanda och flexibilitet som krävs för många olika marknader. Tack vare dess RISC-arkitektur förbrukar kärnan en minimal mängd av enhetens resurser, samtidigt som den har den prestanda som krävs för många olika tillämpningar. För att accelerera utvecklingen av mikroprocessorsystem kan flera perifera komponenter som är kompatibla med WISHBONE-styrenheter integreras med LatticeMico32.
Systemutvecklingsverktyget LatticeMico har ett grafiskt användargränssnitt som kan användas för att ”dra och släppa” LatticeMico-processorkärnor och -kringutrustning, ansluta dem till bussar och definiera olika parametrar för varje komponent (som till exempel dess placering i processorns adressrymd). När systemet har definierats kan verktygen automatiskt generera den RTL som ska simuleras och syntetiseras. Systemet har också de verktyg som du behöver för att generera den programvara som ska köras i processorkärnorna.
Maskininlärningsverktyg: Lattice sensAI-stack och kompilerare för neurala nätverk
Maskininlärning (ML) och artificiell intelligens (AI) används inom ett stort fält av inbäddade system och för sakernas internet (IoT), inklusive industriellt sakernas internet (IIoT).
Lattice sensAI-stack har allt som krävs för att utvärdera, utveckla och använda FPGA-baserade ML/AI-lösningar, inklusive moduluppbyggda maskinvaruplattformer, exempeldemonstrationer, referensdesign, IP-kärnor för neurala nätverk, programvaruverktyg för utveckling och anpassade designtjänster. Denna stack är utformad för att snabba på tiden till marknad för utvecklare av flexibel maskininlärning, för tillämpningar med IoT inom konsumentmarknaden och industrin.
Lattice IP-kärna för CNN-nätverk (convolutional neural network, faltningsnätverk) är en beräkningsmotor för DNN-nätverk (djupa neurala nätverk). Motorn är optimerad för CNN-nätverk så att den kan användas för maskinseendetillämpningar som klassificering eller objektdetektering och spårning. CNN-IP-kärnan kräver inte någon extra processor eftersom den klarar att utföra de nödvändiga beräkningarna.
Samtidigt kan Lattice kompilerare för neurala nätverk hjälpa konstruktörer att ta neurala nätverk genererade i vanliga utvecklingsramverk (som till exempel TensorFlow, Caffe och Keras) och kompilera dem för implementering i IP-kärnor för Lattice CNN- och kompakta CNN-acceleratorer.
Slutsats
Optimala designlösningar skapas ofta genom kombinationer av processorer och FPGA:er, genom FPGA:er på egen hand eller genom FPGA:er med interna processorkärnor. Tekniken som FPGA:erna bygger på har utvecklats snabbt under åren och uppfyller många av dagens designkrav när det gäller flexibilitet, databehandlingshastighet och prestanda, vilket gör dem mycket användbara i många olika tillämpningar – från intelligenta gränssnitt till maskinseende och AI.
Som vi har visat täcker FPGA:er från Lattice Semiconductor låg till medelhög effekt, med fokus på strömsnåla enheter som är avsedda att lösa nätverksproblem (från kanten till molnet) i den snabbt växande kommunikations-, databehandlings-, industri-, fordons- och konsumentvarusektorn. Lattice har också många olika programsviter för design- och verifieringsverktyg för flera olika designflöden, från språkbaserad design till grafisk processorbaserad design till design fokuserad på tillämpningar inom maskininlärning och artificiell intelligens.
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.


