Grunnleggende om FPGA-er – del 3: Komme i gang med FPGA-er fra Microchip Technology

Av Clive "Max" Maxfield

Bidrag fra DigiKeys nordamerikanske redaktører

Merknad fra redaktøren: Optimale behandlingsløsninger er noe en gjerne oppnår med en kombinasjon av RISC, CISC, grafikkprosessorer og FPGA-er, av FPGA-er alene, eller av FPGA-er som har harde prosessorkjerner som en del materialet sitt. Mange utviklere er imidlertid ikke kjent med egenskapene til FPGA-er, deres utvikling og hvordan de kan brukes. Del 1 av denne serien gir en introduksjon til FPGA-er og hvorfor de er nødvendige. Del 2 fokuserer på hva Lattice Semiconductors tilbyr på FPGA-fronten. Her vil del 3 konsentrere seg om FPGA-enhetsfamilier og -designverktøy fra Microchip Technology (via datterselskapet Microsemi Corporation). Del 4 og del 5 vil se på FPGA-er og verktøy fra Altera og Xilinx.

Som vi så på i del 1, kan feltprogrammerbare gate-matriser (Field-programmable gate arrays – FPGA) ha mange egenskaper som gjør dem til en uvurderlig databehandlingsressurs, enten brukt frittstående eller i en heterogen arkitektur. Men mange utviklere er ikke kjent med FPGA-er og hvordan man skal gå frem for å innlemme disse enhetene i designet.

Én måte å komme over dette hindret på, er å se grundigere på FPGA-arkitekturer og tilknyttede verktøy fra store leverandører. Denne artikkelen ser på utvalget fra Microchip Technology.

Oversikt over FPGA-alternativer på høyt nivå

Det finnes mange ulike typer FPGA-er på markedet, hver med ulike kombinasjoner av kapasiteter og funksjoner. Det sentrale ved alle FPGA-er er deres programmerbare materiale. Dette er presentert som en rekke programmerbare logiske blokker, også kjent som logikkelementer (LE-er) (figur 1a). Neste trinn i FPGA-materialet er å inkludere for eksempel SRAM-blokker, kalt blokk-RAM (BRAM), faselåste sløyfer (PLL-er) og klokkeadministratorer (figur 1b). Vi kan også legge til blokker for digital signalbehandling (DSP) (kalles DSP-skiver) og blokker for høyhastighets serialisering/deserialisering (SERDES) (figur 1c).

Diagram av FPGA-er med økende grad av kompleksitetFigur 1: De enkleste FPGA-ene inneholder kun programmerbart materiale og konfigurerbar IO for generelt bruk (general-purpose IO – GPIO) (a), ulike arkitekturer utvider dette grunnleggende materialet med SRAM-blokker, PLL-er og klokkeadministratorer (b), DSP-blokker og SERDES-grensesnitt (c) og hardprosessorkjerner og tilleggsutstyr (d). (Bildekilde: Max Maxfield)

Ekstra grensesnittfunksjoner som CAN, I2C, SPI, UART og USB kan implementeres som myke kjerner i det programmerbare materialet, men mange FPGA-er bruker dem som harde kjerner i silikonet. På samme måte kan mikroprosessorer implementeres som myke kjerner i det programmerbare materialet eller som harde kjerner i silikon (figur 1d). FPGA-er med harde prosessorkjerner omtales som med system-on-chip (SoC)-FPGA-er. Ulike FPGA-er tilbyr ulike funksjonssamlinger, egenskaper og kapasiteter som er rettet mot ulike markeder og bruksområder.

Det finnes en rekke FPGA-leverandører, inkludert Altera (som ble kjøpt opp av Intel), Atmel (som ble kjøpt opp av Microchip Technology), Lattice Semiconductor, Microsemi (som også ble kjøpt opp av Microchip Technology) og Xilinx.

Alle disse leverandørene har flere FPGA-serier. Noen tilbyr SoC-FPGA-er, og noen tilbyr enheter som tåler stråling og som er rettet mot miljøer med høy stråling, så som verdensrommet. Det kan være vanskelig å velge den beste enheten for oppgaven, da det er så mange serier som hver tilbyr ulike ressurser.

Vi presenterer FPGA-ene fra Microchip Technology

Microchip Technology tilbyr FPGA-er som går fra det lave til midtsjiktet, med fokus på enheter med lavt effekt, høyt sikkerhetsnivå og eksepsjonell pålitelighet. FPGA-ene fra Microchip har robuste DSP-er og minneressurser, og det er lett å se verdien deres på bruksområder som maskinvareakselerasjon, kunstig intelligens, bildebehandling og Edge-databehandling. De kan derfor brukes både i kablet og trådløs kommunikasjon innen forsvar og luftfart samt i innebygde industrielle applikasjoner.

Microchip tilbyr tre hovedfamilier av FPGA:

  • IGLOO® 2-FPGA: enheter med lav tetthet og betydelige ressurser
  • SmartFusion® 2-SoC-FPGA-er: enheter med lav tetthet, betydelige ressurser og en 32-bits hard prosessorkjerne
  • PolarFire™-FPGA-er og SoC-FPGA-er: kostnadsoptimerte enheter med høy ytelse implementert på 28 nanometer (nm)-prosessteknologi

Alle FPGA-ene har konfigurasjonsceller som bestemmer funksjonaliteten til hver av de programmerbare logiske blokkene, og hvordan logikkblokkene er koblet til hverandre og til verden utenfor. Disse cellene brukes også til å konfigurere GPIOs grensesnittstandard, inngangsimpedans og utgangseffekt osv.

Noen FPGA-er bruker SRAM-baserte konfigurasjonsceller, men disse er volatile, noe som betyr at de mister innholdet når det ikke lenger tilføres strøm til systemet. Dette betyr igjen at konfigurasjonsdataene må lastes fra en ekstern kilde – vanligvis en flashminneenhet – når systemet slås på. Disse FPGA-ene tar lengst tid til å slå seg på og bli klar til bruk.

Noen FPGA-er bruker flash-minne på brikken til å lagre konfigurasjonsdataene, men de har fremdeles SRAM-baserte konfigurasjonsceller. I disse tilfellene kopierer en on-chip-kontroller konfigurasjonsdataene fra flash-konfigurasjonsminnet til SRAM-konfigurasjonscellene. Disse FPGA-ene blir raskere driftsklar enn deres rene SRAM-søsken.

Microchips IGLOO2 FPGA-er og SmartFusion2 SoC FPGA-er bruker en annen mekanisme der både on-chip-konfigurasjonsminne og on-chip-konfigurasjonsceller er implementert ved bruk av flash-teknologi. Når det gjelder PolarFire-enheter, er konfigurasjonscellene basert på silisium-oxide-nitride-oksid-silisium (SONOS) ikke-flyktig minne (NVM)-teknologi, som kan sees på som flash, bare bedre.

Siden konfigurasjonsdataene lagres i ikke-flyktige flash (eller SONOS)-celler, er FPGA-ene og SoC FPGA-ene fra Microchip i full sving umiddelbart. Det vil si at det tar kortere tid for dem å komme i drift når de slås på, enn andre FPGA-typer. Årsaken til at disse enhetene også har et flashkonfigurasjonsminne, er at en ny konfigurasjon kan lastes inn i denne konfigurasjonen mens FPGA-en fortsetter å kjøre, ved å bruke den eksisterende konfigurasjonen i konfigurasjonscellene. Når nedlastingen av den nye konfigurasjonen er fullført og bekreftet (konfigurasjonen kan krypteres og følges av en syklisk redundanskontroll (CRC)), kan enheten settes i en sikker tilstand, mens den nye konfigurasjonen, som er lagret i konfigurasjonsminnet, brukes til å overskrive den opprinnelige konfigurasjonen som er lagret i konfigurasjonscellene.

Tradisjonelle enheter: IGLOO2 FPGA-er

IGLOO2 er gode generelle FPGA-er i det lave til mellomsjiktet. Det er disse mange utviklere ser på som «vanlige» FPGA-er. Disse flash-FPGA-enhetene er ideelle for generelle funksjoner som Gigabit Ethernet eller Dual PCI Express-kontrollkort, Bridging-funksjoner, inndata/utdata (I/U) ekspansjon og konvertering, video- og bildebehandling, systemadministrasjon og sikker tilkobling. De kan brukes på et bredt spekter av bruksområder, inkludert i kommunikasjonsbransjen, industrien og innen medisin, forsvar og luftfart.

Diagram over microchip IGLOO2 FPGA-er (klikk på for å forstørre)Figur 2: IGLOO2 FPGA-er er ideell for generelle funksjoner som Gigabit Ethernet eller dual PCI Express-kontrollkort, Bridging-funksjoner, I/U-utvidelse og -konvertering, video- og bildebehandling, systemadministrasjon og sikker tilkobling. (Bildekilde: Microchip Technology)

IGLOO2 FPGA-er tilbyr 5000 til 150 000 LE-er med et høykapasitets minnedelsystem, opptil 512 kilobyte (kB) med innebygget flash, 2 x 32 kB innebygget statisk RAM-minne (SRAM), to direkte minnetilgang-motorer (DMA), og to doble datahastighetskontrollører (DDR). Enhetene har også opptil 16 transceivere-baner, integrerte DSP-datablokker og enkelthendelsesfeil (single event upset – SEU) beskyttede/tolerante minner. Med hensyn til sikkerhet er de styrket av differensialeffektanalyse (differential power analysis – DPA) og bruker AES256- og SHA256-kryptering og NVM-dataintegritetskontroll etter behov.

Et godt eksempel på en IGLOO2-enhet er M2GL025-FGG484I med 27 696 LE-er, 1 130 496 bits av RAM og 267 I/U. For å gi utviklere mulighet til å undersøke og eksperimentere med funksjonene i IGLOO2 FPGA-familien, gir Microchip også et tilhørende IGLOO2-evalueringssett, M2GL-EVAL-KIT (figur 3).

Bilde av Microchip M2GL-EVAL-KIT-evalueringssettet for IGLOO2 (klikk på for å forstørre)Figur 3: M2GL-EVAL-KIT er et evalueringssett for IGLOO2 og en høy grad av funksjonsintegrering kombinert med lavt strømforbruk, god pålitelighet og avansert sikkerhet. (Bildekilde: Microchip Technology)

M2GL-EVAL-KIT-settet gjør det enkelt å utvikle innebyggede applikasjoner innen motorkontroll, systemstyring, automatiske industrifunksjoner og raske I/U-applikasjoner, i tillegg til PCI Express og Gigabit Ethernet. Pakken tilbyr en høy grad av funksjonsintegrering i tillegg til lavt strømforbruk, god pålitelighet og avansert sikkerhet. Kortet er også kompatibelt med den lille PCIe-formfaktoren, noe som gjør det mulig for utviklere å lage prototyper ved bruk av en stasjonær eller bærbar PC med PCIe-spor.

SoC-er på begynnernivå: SmartFusion2 SoC FPGA-er

SmartFusion2 SoC FPGA-er er basert på det tradisjonelle programmerbare materialet som finnes i IGLOO2-enheter, forsterket med en 32-biters hard prosessorkjerne. Siden prosessorene er et godt kjent medlem av Arm® Cortex®-familien, gir SmartFusion2-familien et godt inngangspunkt til SoC FPGA-universet.

Disse SoC FPGA-ene tilbyr 5000 til 150 000 LE-er med en 166 megahertz (MHz) Arm Cortex-M3-prosessor, inkludert innebygget sporingsmakrocelle (embedded trace macrocell – ETM) og en instruksjonsbuffer med on-chip eSRAM og innebygget NVM (eNVM), sammen med et komplett mikrokontroller-delsystem, forsterket med en rikt utstyrt pakke tilleggsutstyr, inkludert CAN, TSE og USB.

Diagram av Microchip SmartFusion2 SoC FPGA-er (klikk på for å forstørre)Figur 4: SmartFusion2 SoC FPGA-er tilbyr 5000 til 150 000 LE-er med en 166 MHz Arm Cortex-M3-prosessor, inkludert ETM og instruksjonsbuffer med on-chip eSRAM og eNVM, i tillegg til et komplett mikrokontroller-delsystem forsterket med en rikt utstyrt pakke tilleggsutstyr, inkludert CAN, TSE og USB. (Bildekilde: Microchip Technology)

Disse SoC FPGA-flashenhetene er ideelle for generelle funksjoner så som Gigabit Ethernet eller dobbel-PCI Express-kontrollkort, brofunksjoner, I/U-utvidelser og konverteringer, video-/bildebehandling, systemstyring og sikker tilkobling. Og igjen er bruksområdene mange og forskjellige, så som kommunikasjon, industri og medisin samt forsvar og luftfart.

Et godt eksempel på en SmartFusion2-enhet er M2S025-FCSG325I med 25 000 LE-er, 256 K-byte flash, 64 K-byte RAM og et 32-biters Arm Cortex-M3-prosessor-delsystem som kjører på 166 MHz. For å gi utviklere mulighet til å undersøke og eksperimentere med funksjonene i SmartFusion2 SoC FPGA-familien, tilbyr Microchip også et tilhørende SmartFusion2 Maker-kort, nemlig M2S010-MKR-KIT-settet (figur 5).

Bilde av Microchips SmartFusion2-Maker-kortetFigur 5: SmartFusion2 Maker-kortet er et rimelig evalueringssett for SmartFusion2 SoC FPGA. Det kombinerer en ARM Cortex-M3-prosessor med flashbasert FPGA-materiale på én enkelt brikke, samt mye av ekstrautstyret SoC-brukere er vant til, for eksempel RAM og DSP-blokker. (Bildekilde: Microchip Technology)

Det rimelige SmartFusion2 Maker-kortet, som selges utelukkende av DigiKey, gir utviklere tilgang til SmartFusion2-familien. Denne bestemte enheten gir på én enkelt brikke: flashbasert FPGA-materiale med 12 000 LE-er, en 32-biters 166 MHz Arm Cortex-M3-prosessor, DSP-blokker, SRAM, eNVM og GPIO-grensesnitt.

SmartFusion2-Maker-kortet legger til et Ethernet-grensesnitt, en sensor for omgivelseslys, SPI-flash, åtte bruker-LED-er og to trykknapper for brukere.Styret har også to ubrukte tilkoblinger utlagt, som støtter Wi-Fi-/Bluetooth-modulene ESP32 og ESP8266 (ikke inkludert). Det støtter en USB-port for JTAG-programmering, UART-kommunikasjon og det driver kortet. Kortet har også SPI-flash, en 50 MHz klokkekilde, og Microchips VSC8541 fysiske lag (PHY) for 100 megabits per sekund (Mbits/s) eller 1 gigabit per sekund (Gbit/s) Ethernet.

Kostnadsoptimert og med høy ytelse: PolarFire FPGA-er og SoC FPGA-er

PolarFire-FPGA-er er kostnadsoptimerte enheter med høy ytelse implementert i 28 nm prosessteknologi. Disse enhetene er konstruerte for å bruke minst mulig strøm ved tetthet i mellomsjiktet, med en høy grad av sikkerhet og pålitelighet.

Produktfamilien strekker seg fra 100 000 til 500 000 LE-er, har 12,7 Gbit-transceivere, og er konstruert for å bruke opptil 50 % mindre strøm enn konkurrerende FPGA-er i mellomsjiktet. Enhetene er ideelle for et bredt spekter av bruksområder innenfor wireline-tilgangsnettverk og cellulær infrastruktur, de militære og kommersielle luftfartsmarkedene, i tillegg til industriell automatisering og IoT-markeder.

Diagram av Microchip PolarFire FPGA-er. De går fra 100 000 til 500 000 LE-er (klikk på for å forstørre)Figur 6: PolarFire FPGA-er har en rekkevidde på 100 000 til 500 000 LE-er, de har 12,7 Gbit transceivere og er konstruert for å bruke opptil 50% mindre strøm enn konkurrerende FPGA-er i mellomsjiktet. (Bildekilde: Microchip Technology)

Hovedgrunnen til at PolarFire FPGA-er bruker opptil 50 % mindre total effekt enn konkurrerende FPGA-er, er at de bruker NVM-teknologi både for on-chip-konfigurasjonsminnet og on-chip-konfigurasjonscellene. Dette i seg selv gir lav lekkasje mellom konfigurasjonsceller, og det betyr også at disse enhetene også er klar med én gang ved innkobling, slik at innkoplingsstrømstøt og nullkonfigurasjonsstrøm ikke lenger forekommer.

Nettsikkerhet er den fremste bekymringen for tilkoblede enheter på nettverksinngangen, så det er ikke nok for utviklere å bare oppfylle de funksjonelle kravene i designene sine – de må kunne gjøre det med god sikkerhet. Sikkerhet starter under silisiumproduksjonen og fortsetter gjennom systemdistribuering og -drift. PolarFire-FPGA-er er presentert av Microchip som bransjens mest avanserte sikre programmerbare FPGA-er.

Mange bruksområder for komplekst elektronisk utstyr har en viss grad av sikkerhetskrav i konstruksjonen. PolarFire-FPGA-er er konstruerte for høy pålitelighet, høy tilgjengelighet og for systemer som er kritisk viktige for sikkerhet og drift, inkludert innen industri, luftfart, militæret og kommunikasjon. Funksjoner som gjør PolarFire egnet for disse bruksområdene, inkluderer:

  • Nullrate for feil i tid (failure in time – FIT)-FPGA-konfigurasjon
  • SEU-beskyttede minner
  • Minnekontrollere med enkel feilretting, dobbel feildeteksjon (SECDED)
  • Innebygd selvtest
  • Ingen ekstern konfigurasjonsenhet påkrevd

Et godt eksempel på en PolarFire-enhet er MPF100T-FCSG325I med 109 000 LE-er, 7 782 400 bits RAM og 170 I/U. For å gi utviklere mulighet til å undersøke og eksperimentere med funksjonene i PolarFire FPGA-familien, leverer Microchip også et tilhørende PolarFire FPGA-evalueringssett, MPF300-EVAL-KIT (figur 7).

Bilde av Microchip MPF300-EVAL-KIT FPGA-evalueringssett (klikk på for å forstørre)Figur 7: For å gi utviklere anledning til å undersøke og eksperimentere med funksjonene i PolarFire FPGA-familien fra Microchip, lever selskapet også det tilhørende MPF300-EVAL-Kit FPGA-evalueringssettet. (Bildekilde: Microchip Technology)

MPF300-EVAL-KIT-settet gir evaluering av ypperste klasse for en hel rekke bruksområder. Den passer ideelt for evaluering av høyhastighetstransceivere, 10 Gbit Ethernet, IEEE1588, JESD204B, SyncE og CPRI, blant annet. Settets koblinger inkluderer et høyt pinneantall (HPC) FPGA mezzanine-kort (FMC), mange SMA-er, PCIe, dobbel gigabit Ethernet RJ45, SFP+ og USB. En 300 000 LE PolarFire-FPGA med DDR4, DDR3 og SPI-flash gir mulighet for utvikling av et bredt utvalg av konstruksjoner med høy ytelse.

Fremskritt i PolarFire-linjen fortsetter. I skrivende stund har Microchip Technology offentliggjort detaljer om deres kommende PolarFire SoC FPGA-familie. Den har et mikroprosessor-delsystem basert på 64-bit RISC-V som er Linux-kompatibel og åpen kilde med forsterket sanntid.

Konstruksjon og utvikling med FPGA-er fra Microchip Technology

Språkdrevet konstruksjon (language-driven design – LDD) er en av de vanligste teknikkene som FPGA-er brukes til å utvikle. Dette inkluderer å finne formålet med konstruksjonen på et abstraksjonsnivå, kalt registeroverføringsnivå (register transfer level – RTL). Dette utføres ved hjelp av et maskinvarebeskrivelsesspråk (hardware description language – HDL), for eksempel Verilog, VHDL eller SystemVerilog. Når vi har verifisert enheten med logikksimulering, mates denne representasjonen i en syntesemotor sammen med ytterligere informasjon, som for eksempel FPGA-måltype, pinnetilordninger og tidsbegrensninger (f.eks. maksimale inngangs- og utgangsforsinkelser). Resultatet fra syntesemotoren er en konfigurasjonsfil som lastes direkte inn i FPGA-en, noe som er tilfellet for en FPGA fra Microchip eller en SoC-FPGA, eller inn i en ekstern minneenhet, noe som er tilfellet for SRAM-baserte enheter (figur 6).

Skjematisk tegning av Microchips FPGA-konstruksjon og utviklingsplanFigur 8: Etter verifisering med logikksimulering mates RTL-designbeskrivelsen inn i en syntesemotor sammen med flere konstruksjonsdetaljer, som FPGA-typen, pinnetilordninger og tidsbegrensninger. Resultatet fra syntesemotoren er en konfigurasjonsfil som lastes direkte inn i FPGA-en. (Bildekilde: Max Maxfield)

Microchips Libero SoC Design Suite faller inn i denne kategorien verktøy. Denne programvaren tilbyr en omfattende pakke med integrerte utviklingsverktøy som er både brukervennlige og enkle å lære, og som kan brukes for å utvikle konstruksjoner med Microchip’s IGLOO2 og PolarFire-FPGA-er, og SmartFusion2 og PolarFire SoC FPGA-er. Pakken integrerer bransjestandarden Synopsys Synplify Pro-syntese og Mentor Graphics ModelSim-simulering med begrensningsadministrasjon, verktøy for programmering og feilsøking og sikker produksjon av programmeringsstøtte.

I tillegg til å samle konstruksjoner i tekstorientert format ved hjelp av Verilog, VHDL eller SystemVerilog, inkluderer suiten også grafisk oppføring der systemet kan defineres som et hierarki av sammenkoblede blokker, med de lavere blokknivåene representert i brukerdefinert HDL eller som tredjeparts-IP.

I tillegg finnes også System Builder, et brukervennlig konstruksjonsverktøy som leder brukere gjennom et sett med spørsmål på høyt nivå, som vil definere det tiltenkte systemet. Systembyggeren starter med å stille spørsmål om ønsket systemarkitektur, legger til ytterligere eksterne enheter som skal implementeres, så som myke kjerner i det programmerbare materialet, og ender opp med å opprette et fullstendig system som er konstruert for å være korrekt (correct-by-design).

Sist, men ikke minst, har vi det integrerte SoftConsole-utviklingsmiljøet (IDE). Det muliggjør den raske utviklingen av bare-metal- og RTOS-basert C/C++-programvare for 32-biters myke prosessorer, instansiert i Microchips FPGA-er og SoC FPGA-er, sammen med 32-biters og 64-biters harde prosessorkjerner som finnes henholdsvis i SmartFusion2 og PolarFire SoC FPGA-er.

Konklusjon

Optimale prosessløsninger for konstruksjon leveres ofte av en kombinasjon av prosessorer og FPGA-er, av FPGA-er alene, eller av FPGA-er som har harde prosessorkjerner som en del materialet sitt. Som teknologi har FPGA-er utviklet seg raskt de siste årene, og de er i stand til håndtere mange konstruksjonskrav når det gjelder fleksibilitet, behandlingshastighet og kraft, noe som gjør dem svært nyttige for en rekke bruksområder, fra intelligente grensesnitt til maskinvisjon og kunstig intelligens.

Som vist, tilbyr Microchip Technology FPGA-er og SoC FPGA-er som spenner fra det lave til det midtre sjiktet, med fokus på enheter med lavt strømforbruk, høyt sikkerhetsnivå og eksepsjonell pålitelighet. FPGA-ene har robust signalprosesserings- og minneressurser, og de er en utmerket plattform for å utvikle programmer for maskinvareakselerasjon, kunstig intelligens, bildebehandling og Edge-databehandling, i bransjer som strekker seg fra kommunikasjon og industri til det militære og luftfart.

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.

Om skribenten

Image of Max Maxfield

Clive "Max" Maxfield

Clive «Max» Maxfield fikk sin Bachlorgrad (BSc) i kontrollteknikk i 1980 fra Sheffield Hallam University, England og startet sin karriere som konstruktør for sentrale prosesseringsenheter (CPU-er) for stormaskiner (mainframe computers). Gjennom årene har Max designet alt fra silisiumbrikker til kretskort, samt fra hjernebølgeforsterkere til steampunk Prognostication Engines (ikke spør). Han har også vært i spissen for elektronisk designautomasjon (electronic design automation – EDA) i mer enn 30 år.

Max er forfatter og/eller medforfatter av en rekke bøker, inkludert Designus Maximus Unleashed (forbudt i Alabama), Bebop to the Boolean Boogie (En ukonvensjonell guide til elektronikk), EDA: Where Electronics Begins, FPGA-er (Hvor elektronikk begynner, field programmable gate arrays): Instant Access (Umiddelbar tilgang), og How Computers Do Math (hvordan datamaskiner gjør matematikk). Sjekk ut hans «Max's Cool Beans»-blogg.

Om denne utgiveren

DigiKeys nordamerikanske redaktører