Den næste generation af programmerbar logikudvikler, DigiKey

For lang tid siden, før logikken blev syntetisk, kunne en ingeniør muligvis blive bedt om at designe et system, der var ren logik. Dette var, da vi havde radarer men ingen mikrocontrollere, og digital signalbehandling, men ingen standard digitale signalprocessorer. Ikke desto mindre havde vi digitalt behandlet radarer.

Dengang forventedes en nyuddannet ingeniør at vide, hvordan man designer analog og digital hardware, og hvordan man udvikler software. Jeg frygter, at tiden for den brede elektriske ingeniør er fortid, og jeg bekymrer mig om fremtiden for logisk design. Der er et ordsprog, der siger, at når en tømmer kun har en hammer, ligner ethvert problem et søm. Er vi nået til det punkt, hvor ethvert problem ligner et softwareproblem?

Hvis du søger på internettet ved hjælp af ordene "FPGA-applikationer", finder du en liste over applikationer på forkant af elektroteknik. Der findes applikationer, der spænder fra kunstig intelligens og talegenkendelse til kommunikation og billedbehandling. Problemet med disse applikationer er, at de ikke er enkle; de er ikke til begyndere. Læringskurven til at mestre implementeringen af disse applikationer er stejl og inkluderer flere ikke-trivielle emner.

Man skal lære de programmerbare logiske enheder selv, deres integrerede udviklingsmiljøer (IDE'er; og hver producent har deres egne), nye programmeringsparadigmer (dvs. hardwarebeskrivelsessprog - HDL - og deres indhold af samtidighed og tidsbegrebet) samt man skal forstå selve applikationen. Disse er praktisk talt uovervindelige undtagen for eksperter. Dette er ikke en god måde at inspirere den næste generation af logikdesignere, der ønsker at opbygge sine egne programmerbare logiske evner. Det første trin er for højt. Jeg tror, at dette skræmmer folk væk fra at komme ind i dette marked og dermed mindsker de mennesker, der til sidst vil blive morgendagens programmerbare logiske løver. Mange historier findes på internettet af mennesker, der udtrykker frustration over den aktuelle tilstand af programmerbar logisk design, og der er flere open source-samfund, der prøver at løse dette. Mange mennesker føler, at løsningen kommer igennem metaprogrammering – En programmeringsteknik, hvor et program behandler et andet program som dets data.

Virksomheder, der programmerer logik , er i en klemme. På den ene side kræver deres investorer, at de udvikler stadig mere dygtige og dyre chips, og på den anden side er der relativt færre mennesker, der er i stand til at bruge dem. Deres løsning er at konvertere softwareudviklere til hardware-designere, og de gør dette med nye værktøjer.

HLS-kompilere på højt niveau tager designabstraktion til et endnu højere niveau, og dette bringer os endnu længere væk fra rødderne i logisk design. Det er temmelig bemærkelsesværdigt, at vi kan fremstille sofistikerede hardwarekonstruktioner ud fra rent softwarebeskrivelser, men ved at gå glip af den indflydelse, som logikdesign kan have på mennesker. Du kan ikke se mig argumentere for, at en person kan "optimere" en computer, men jeg hævder, at det var enklere at designe enkle kredsløb i fortiden. Problemet er, at enkle kredsløb er sværere at designe i dag, end de var før.

Jeg kan huske min store glæde ved at se mit håndlavede logiske design arbejde, i form af et kredsløb. Det var min indsigt der minimerede antallet af nødvendige enheder. Da jeg lærte programmerbar logik i begyndelsen af 1990'erne, var jeg endnu mere glad for, at jeg kunne anvende min kredsløbsdesignviden til at implementere min logik i en enkelt enhed på 128 logiske elementer, og det var mit intellekt, der valgte hvert eneste af disse logiske elementer. Jeg var ikke afhængig af intellektet hos en ukendt algoritmeudvikler.

Mens logikdesignet udviklede sig, var det også software-design. Det er stort set blevet en objektorienteret programmering (OOP) verden, og biblioteker med almindeligt fundne designmønstre er veldokumenterede og let tilgængelige i kodebiblioteker. Min bog om designmønstre er den engang populære tekst af Erich Gamma: Design Patterns, Elements of Reusable Object-Oriented Software. Jeg finder det interessant, at hardware-design startede som objektorienteret, men dens udvikling stoppede med introduktionen af HDL’erne. Selvom HDL'erne har plads til genbrug af design, indeholder designbiblioteker mest grundlæggende funktionalitet. Søg med “List of 7400-series integrated circuits” på internettet, og du kan finde nogle tidlige hardware-designmønstre. Jeg fandt det interessant mønstet af Meilir Page-Jones i hans bog, Fundamentals of Object-Oriented Design in UML med refererer til integrerede kredsløb som eksempler på god objektdesign, høj samhørighed og lav kobling. Men i forfølgelsen af stadig mere komplekse programmerbare logiske enheder, har vi mistet vores rødder i enkel og direkte logisk design. Dagens designmetoder afhænger af en computeralgoritme for at implementere vores logik. Jeg tror, denne tilgang medføre en barriere for programmerbare logik-begyndere.

Du kan spørge: "Hvor mange kodelinjer var der i det første Pong-spil, som vi tilsluttede bagsiden af vores fjernsyn?" Svaret er nul. Det var rent hardware (se figur 1) – Ingen software inkluderet! Jeg tror ikke, der er mange nyuddannede ingeniører, der kunne designe Pong uden at bruge software.  De sagde: "Hvorfor skulle jeg gøre det?" Mit svar ville være "for perspektiv, og fordi du skulle vide, at det kan gøres. Det er enklere, end du tror. ”

Figur 1: Pong skematisk (billede: Fundet via Adafruit-blog, ukendt oprindelse)

IEEE offentliggjorde en liste over programmeringssprog elskede og hadede af ingeniører i begyndelsen af 2019. Det sagde, at ingeniører elsker Python. Jeg tror på det. Jeg var dommer ved en Texas Instruments designkonkurrence for flere år siden og fik at vide, at ni af de 10 college-hold brugte Python til deres projekter. VHSIC Hardware Description Language (VHDL) og Verilog var ikke på de elskede eller hadede lister. Måske overvejer redaktørerne på IEEE ikke disse HDLs programmeringssprog, men mere sandsynligt vil jeg vædde på, at nogen, der blev undersøgt, overhovedet ikke overvejede HDL'er. Hvis det er sandt, viser dette, hvor få ingeniører der overhovedet har overvejet sprog eller logisk design – Et dårligt tegn på området for logisk design.

Så hvad skal jeg gøre? Hvordan får vi nye ingeniører til at se på et problem og overveje dets løsning i software eller hardware? Når alt kommer til alt kan de fleste problemer løses på begge måder. Jeg har en idé.

Jeg tror at Arduino platform skabte mange mennesker, med interessere i software. De går ind i skole for at blive ingeniører og datalog. Hvordan gjorde Arduino dette? Arduino reducerede indlæringskurven for at udvikle software. Det gjorde softwareudvikling mindre skræmmende.

Ved at definere et kort var man i stand til at eliminere opsætning af linker-kommandofiler, signalnavne blev standard, og dens IDE skjulte kompilerdetaljer. Et af Pythons skønheder er, at det kræver streng formatering – F.eks. skal indryk være ensartede. Dette eliminerer vilkårlige valg med lav værdi og medvirker til at gøre hele udviklingsprocessen enklere, hvilket igen gør udviklere mere produktive. Vi har brug for det ækvivalente for programmerbar logik, og det ville kræve, at den programmerbare logik-industri samarbejder om en standard.

Her er nogle af de attributter, som jeg går ind for den standard. Ligesom Arduino ikke har arv og en robust evne til at ændre sin underliggende arkitektur, såsom at rumme indlejrede afbrydelser, så lad os antage, at de logiske problemer, der skal løses på denne platform, er enkle nok til, at nutidens programmerbare logiske enheder kan imødekomme alle tidsbegrænsninger. Det Arduino-ækvivalente, programmerbare logiske enhedsplade (PLDB) skal have et tilstrækkeligt langsomt ur til, at ethvert af 1.000 logisk elementdesign kan fungere. Dette betyder, at platformen kun kræver funktionel verifikation.

Da alle elsker Python, foreslår jeg, at PLDB understøttes med Python og bygger på en ramme som nMigen eller MyHDL (se figur 2), eller endda Yosys med RTLIL. Dette ville give begyndere mulighed for at simulere deres logiske design med et fortolket sprog, fremstille sandhedstabeller og få adgang til ethvert andet Python-bibliotek, der er tilgængeligt for dem. Apropos Pythons bibliotek; ved hjælp af Python giver det også samfundet mulighed for at bruge Python-pakkeindekset (PyPI) til at distribuere genanvendelige hardwareblokke, som hjælper med at tackle manglen på robuste, delte designmønstre. nMigen understøtter ligesom Python metaprogrammering, så selvom denne ramme understøtter enkle design, er platformen skalerbar nok til at understøtte komplekse design.

Figur 2: Python-baseret framework (Billedkilder: MyHDL.org og m-labs.hk)

Grænsefladen fra en vært-pc til en PLDB skal være USB sammen med en PLDB-integreret mikrokontroller med en API til værts-pc'en. Denne skal bruges til at lære af PLDB's konfiguration, så den kan konfigurere Python-miljøet automatisk til programmerbar logisk udvikling. Resultatet af denne opsætning skal være at skjule detaljerne om syntese, sted og rute og programmering, mens det letter funktionel simulering på pc'en og udførelse på faktisk hardware.

For at nogle læsere ikke synes, at der ikke længere er enkle logiske problemer at løse, viser jeg nogle statistikker om DigiKeysalg af mikrocontrollere. Figur 3 viser fordelingen af klasser af mikrocontrollere, som kunderne køber, og figur 4 viser, hvor mange enheder i hver klasse der er solgt. I alt viser DigiKey over 80.000 mikrokontroller varenumre og har lagre med over 19.000 mikrokontrollere klar til øjeblikkelig forsendelse til hvor som helst i verden. Tallene viser at enkle 8-bit processorer bruges af flere ingeniører, og at DigiKey sender flere 8-bit mikrocontrollere end nogen anden klasse af processor. Dette siger mig, at der er flere enkle problemer end komplekse.

Figur 3: Antal DigiKey-kunder, der køber hver type mikrokontroller (Billedkilde: DigiKey)

Figur 4: Antal solgte enheder for hver type mikrokontroller fra DigiKey (Billedkilde: DigiKey)

Vores mål bør være at gøre enhver, også dem uden en formel uddannelse i logisk design, til programmerbare logiske entusiaster; men vi er nødt til at ændre udviklingsparadigmer for at gøre det.

Om denne forfatter

Image of Randy Restle

Randall Restle, vicepræsident for applikationsudvikling hos Digi-Key Electronics er ansvarlig for at vurdere, designe og lede et team af dygtige applikationsingeniører, teknikere og ledelsespersonale til at lede Digi-Keys tekniske strategi for at betjene kunder ved udvælgelse og brug af avanceret teknologiske produkter. Han sluttede sig til Digi-Key i 2011 efter 35 år inden for udvikling og design af digitale og analoge kredsløb, trykte kredsløb og integreret software.  Randall har BSEE, MS og MBA grader fra University of Cincinnati. Han er også seniormedlem i IEEE, har været registreret professionel ingeniør i staten Ohio, en certificeret projektledelsesfaglig hos Project Management Institute og er opfinder af flere patenter.

More posts by Randall Restle
 TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum