Meny
Är gratis
registrering
Hem  /  Firmware/ Ett litet projekt om FPGA. FPGA

Litet FPGA-projekt. FPGA

FPGA (Programmable Logic Integrated Circuit) är en integrerad krets designad för att bygga digitala kretsar från en beskrivning på ett speciellt programmeringsspråk. Med andra ord är en FPGA så att säga ett chip som innehåller ett gäng element som 74HCxx. Vilken typ av logiska element dessa kommer att vara, vilka kopplingar som kommer att vara mellan dem och vilka kopplingar den resulterande kretsen kommer att ha med omvärlden, bestäms i FPGA-programmeringsstadiet.

Notera: Så vitt jag kunde ta reda på, anses på ryska idag termerna FPGA och FPGA (Field-Programmable Gate Array, User-Programmable Gate Array) vara utbytbara, vilket kommer att användas vidare i texten. Det är dock värt att veta om existensen och en alternativ synvinkel, enligt vilken FPGA (FPGA) är en av varianterna av FPGA (PLD, Programmable Logic Device).

Grunderna i FPGA

För FPGA-programmering används hårdvarubeskrivningsspråk (HDL, Hardware Description Language). Bland dem är de mest populära Verilog (och dess dialekter, särskilt SystemVerilog), såväl som VHDL. Språken är lika på många sätt, men har olika syntaxer och skiljer sig i vissa detaljer. Om Verilog är ett sådant C i hårdvarubeskrivningsvärlden, är VHDL respektive Pascal. Så vitt jag vet är VHDL något mindre populärt, delvis på grund av dess mångsidighet jämfört med Verilog. Av fördelarna med VHDL (eller nackdelar, som vem som helst) kan kallas sträng statisk typning. Verilog tillåter ibland implicit casting. För att fortsätta analogin med C och Pascal, skiljer sig språken inte så mycket att du inte kan lära dig båda.

För närvarande är de ledande FPGA-tillverkarna Altera (nu ägs av Intel) och Xilinx. Enligt uppgifter från olika källor kontrollerar de tillsammans minst 80 % av marknaden. Andra spelare värda att notera är Actel (uppköpt av Microsemi), Lattice Semiconductor, Quicklogic och SiliconBlue. Du kan arbeta med Xilinx-hårdvara endast från Xilinx-utvecklingsmiljön (kallad Vivado), och Altra-utvecklingsmiljön (kallad Quartus) förstår endast Altera-hårdvaran. Det vill säga ett fullständigt leverantörslås, och när du väljer en specifik FPGA för ditt projekt, väljer du automatiskt utvecklingsverktygen för motsvarande tillverkare, deras tekniska support, dokumentation, mjukvarulicensvillkor, policyn för uppsägning av hårdvarusupport, och så vidare .

FPGA:er används ofta i uppgifter där man vill påskynda vissa beräkningar genom att implementera dem direkt i hårdvaran. Till exempel används FPGA ofta i signalbehandling, såsom oscilloskop, spektrumanalysatorer, logiska analysatorer, signalgeneratorer, Software Defined Radio och till och med vissa monitorer. I synnerhet använder LimeSDR Altera Cyclone IV, och Rigol DS1054Z-oscilloskopet använder Xilinx Spartan-6, såväl som ProASIC 3 från Actel. Andra applikationer jag har hört talas om inkluderar datorseende, taligenkänning och bioinformatik. Det finns andra projekt, särskilt för utveckling av webbservrar och DBMS som körs på FPGA. Men så vitt jag vet är denna riktning fortfarande mycket experimentell.

Xilinx eller Altera?

Som sagt, den bästa Linux är den som din andra Linux-guru använder.

Min vän, en FPGA-guru, Dmitry Oleksyuk, rådde mig att börja med Arty Artix-7 devboard från Digilent. FPGA som används i den är Artix-7 från Xilinx. Digilent själv skickar inte till Ryssland, men enheten är också tillgänglig på AliExpress, om än med en märkbar markering (det officiella priset är $ 99). Den säljs även på eBay. Detta är en ganska kraftfull bräda, som ändå kostar tillräckligt med pengar.

Rolig fakta! Om du bara vill programmera i Verilog eller VHDL behöver du strängt taget inte köpa något FPGA-kort. Till en början kan du begränsa dig till en simulator, vars arbete kommer att diskuteras senare.

En intressant egenskap hos brädet är placeringen av slotsen på ett sätt som är kompatibelt med Arduino-sköldar. Till tavlan medföljer även en bilaga för att få en licens för Vivado, vilket öppnar upp alla dess möjligheter. Licensen är giltig i ett år från aktiveringsdatumet och är också bunden till en dator av OS-typ och MAC-adress.

På beställning. Jag har hört att enheter med FPGA ombord har en god chans att inte klara tullen. Butiken på AliExpress, länken som jag gav ovan, levererar brädor till Ryssland genom SPSR-budtjänsten. För att gå igenom tullen krävdes det att fylla i ett onlineformulär med passdata (endast data, inget foto) och ett kontakttelefonnummer, enligt gällande rysk lagstiftning. Därefter levererades tavlan med bud ända till dörren utan några frågor.

Installerar Vivado

Vivados utvecklingsmiljö är tillgänglig för nedladdning på Xilinx webbplats. Var mentalt förberedd på det faktum att innan du laddar ner måste du registrera dig och fylla i ett ganska detaljerat formulär om dig själv. Ladda ner arkivet som heter "Vivado HLx 2017.2: All OS installer Single-File Download". Blanda inte ihop det av misstag med någon "Vivado Lab Solutions", detta är absolut inte vad du behöver. Arkivet väger över 20 GB, så vi måste ha tålamod.

Packa upp arkivet, kör installationsprogrammet. Installera Vivado HL System Edition. Den fullständiga versionen kommer att ta upp 47 GB diskutrymme. Personligen avmarkerade jag Software Development Kit och lämnade stöd för endast enheter i 7-serien, vilket minskade storleken till 12 GB. När jag springer lite framåt, kommer jag att notera att den här konfigurationen visade sig vara tillräckligt.

Innan du startar Vivado måste du lägga till stöd för Arty Artix-7 till den, eftersom den inte vet något om det här kortet direkt. Det görs på något sätt så här:

cd ~ / opt / xilinx / Vivado / 2017.2 / data / boards / board_files
wget https: // github.com/ Digilent / vivado-boards / archive / master.zip
packa upp master.zip
mv vivado-boards-master / new / board_files / * ./
rm -r vivado-boards-master
rm master.zip

Ladda också ner och spara filen Arty_Master.xdc någonstans. Vi kommer att behöva det ytterligare. Filen innehåller en beskrivning av lysdioderna på kortet, switchar och så vidare. Utan det blir det inte lätt att blinka lysdioderna på Verilog.

Första projektet på SystemVerilog

I Vivado, säg Arkiv → Nytt projekt ... Välj RTL-projekt som projekttyp, markera kryssrutan Ange inte källor just nu. I dialogrutan för val av brädtyp, hitta Arty i listan.

Först av allt, lägg till den tidigare nedladdade XDC-filen till projektet. Kopiera den till projektkatalogen. Sedan säger vi Arkiv → Lägg till källor... → Lägg till eller skapa begränsningar → Lägg till filer, hitta en kopia av filen, klicka på Slutför. Filen Arty_Master.xdc, eller vad du nu kallade kopian, kommer att visas i projektfilträdet (Källor) i gruppen Constraints. Öppna den och avkommentera alla rader i grupperna Klocksignal, Switchar och LED.

Sedan säger vi Arkiv → Lägg till källor... → Lägg till eller skapa designkällor → Skapa fil. I filtypen väljer du SystemVerilog, i filnamnet anger du något som hej. Vi säger Finish. Därefter visas dialogrutan Definiera modul, som erbjuder dig att klicka på modulgränssnittet. Dialogen är ganska värdelös, eftersom det är bekvämare att göra samma sak i koden, så klicka på Avbryt.

Hitta en ny fil hello.sv i källträdet, den kommer att finnas i gruppen Design Sources. Öppna och skriv följande kod:

`Tidsskala 1ns / 1ps

modul hej (
ingångslogik CLK100MHZ,
ingångslogik [3: 0] sw,
utgångslogik [3: 0] lysdiod
) ;

alltid @ (posedge CLK100MHZ)
Börja
if (sw [0] == 0)
Börja
led<= 4"b0001 ;
slutet
annan
Börja
led<= 4"b0000 ;
slutet
slutet

slutmodul

Om allt gjordes korrekt, i detta skede kommer din Vivado att se ut ungefär så här (klickbar, PNG, 71 KB):

Sammanställning av ett program utförs i två steg - syntes och genomförande. Vid syntesstadiet översätts programmet till en abstrakt krets av logiska grindar och andra element. Vid implementeringsstadiet fattas ett beslut om hur denna krets ska flashas till en specifik hårdvara.

Låt oss köra syntesen genom att säga Flow → Run Synthesis, eller helt enkelt genom att trycka på F11. I det övre högra hörnet ser du en indikation på att processen pågår. Det kan ta ganska lång tid, beroende på din dator och programmets komplexitet. På min bärbara dator slutfördes syntesen av ovanstående program på cirka 10 sekunder. Om vi ​​nu säger Flow → Open Synthesized Design, så kan du se en vacker bild så här:

Det är dags att flasha vår tavla. Vi säger Flöde → Kör implementering, sedan Flöde → Generera bitström. Vi ansluter kortet till datorn via USB, i Vivado säger vi Flow → Open Hardware Manager → Open target → Auto Connect → Program device. Du måste ange sökvägen till bitfilen. Jag hade det så här:

./first-project.runs/impl_1/hello.bit

Vi säger Program. LD4-lysdioden på kortet lyser nu om SW0-omkopplaren är nere (se bilden av kortet ovan). Om strömbrytaren är uppe är lysdioden släckt. Enkelt såklart, men det här är "hej världen", vad förväntade du dig? :)

Simulering

Simulering är en virtuell körning av kod i Verilog eller VHDL direkt på din dator, utan några FPGA:er. Det är både ett felsökningsverktyg och ett slags ramverk för att täcka kod med tester.

När jag lärde känna simuleringen var det första jag upptäckte att det inte fungerade för mig. Loggarna var enkla:

FEL: Det gick inte att kompilera genererad C-fil [...] xsim_1.c.

Google på detta fel hittade bara alla typer av nonsens i stil med "försök att inaktivera ditt antivirus." Till slut hjälpte det att lösa problemet genom att lägga till flaggan -v 2 till ~ / opt / xilinx / Vivado / 2017.2 / bin / xelab-skriptet. Med dess hjälp fick jag reda på att Clang, den binära som Vivado drar med sig, kraschar med följande fel:

/ a / long / path / to / clang: fel vid laddning av delade bibliotek:
libncurses.so.5: kan inte öppna fil med delat objekt: Ingen sådan fil eller
katalog

Och detta fel och dess lösning beskrivs redan på Arch Wiki. Personligen kopierade jag bara en redan befintlig fil från Vivado_HLS-katalogen:

cp ~ / opt / xilinx / Vivado_HLS / 2017.2 / lnx64 / tools / gdb_v7_2 / libncurses.so.5 \
~ / opt / xilinx / Vivado / 2017.2 / lib / lnx64.o / libncurses.so.5

... varefter allt fungerade. Så, nu, faktiskt, ett exempel på en simulering.

På samma sätt som vi skapade hello.sv tidigare, skapa en ny fil hello_sim.sv i gruppen Simulation Sources. Vi skriver följande kod i filen:

`Tidsskala 1ns / 1ps

modul hello_sim ();
logisk clck_t;
logik [3: 0] sw_t;
logik [3: 0] led_t;

Hej hej_t (clck_t, sw_t, led_t);

första början
clck_t<= 0 ;
sw_t<= 4"b0000 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
hävda (led_t === 4 "b0001);

Sw_t<= 4"b0001 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
hävda (led_t === 4 "b0000);
slutet

slutmodul

Högerklicka på filen i källträdet, välj Egenskaper för källnod. I avsnittet Används i, avmarkera rutorna Syntes och Implementering. Vi vill inte att några tester ska täppa till vår långt ifrån gummi FPGA, eller hur?

Nu säger vi Flöde → Kör simulering → Kör beteendesimulering. Som ett resultat kommer du att se något i stil med detta:

Du kan se att när sw är noll är lysdioden ett och vice versa. I detta fall sker alla ändringar på kanten av klocksignalen. Programmet verkar fungera korrekt. Nåväl, ingenting föll på påståendena, vilket verkar antyda.

Slutsats

Arkivet med projektet som beskrivs ovan kan laddas ner. Jag skulle rekommendera följande som ytterligare informationskällor:

  • Om du är intresserad av hårdvarudetaljer, var uppmärksam på

Föreställ dig att processorn, istället för att utföra en uppsättning instruktioner, kommer att bygga om för varje program och omvandla algoritmen direkt till hårdvara. Så här fungerar FPGA! I den här artikeln kommer jag att förklara hur detta är möjligt och introducera dig för olika sätt för FPGA-design.

Kanske vet du hur man hackar enheter på andra sidan jorden eller kodar grymma webbapplikationer, men förstår du hur din dator fungerar? Och det handlar inte om vad operativsystemet gör, hur sopsamlaren fungerar i Java eller hur C++-kompilatorn fungerar. Jag pratar om den lägsta hårdvarunivån under assembler: hur hårdvaran fungerar.

Vad händer med NIC-chippet när ett Ethernet-paket anländer? Hur skickas detta paket vidare till datorns RAM via PCI Express-bussen? Hur fungerar de snabbaste systemen för bildigenkänning av hårdvara?

För att svara på dessa frågor måste du förstå lite om ASICs digitala logik, men att börja med dem är väldigt svårt och dyrt, och det är bättre att börja med FPGA:er istället.

INFO

FPGA står för field-programmable gate array, på ryska - programmerbara gate matriser, FPGA. Mer allmänt kallas de FPGAs - programmerbara logiska integrerade kretsar.

Med FPGA:er kan du bokstavligen designa digitala mikrokretsar medan du sitter hemma med ett tillgängligt felsökningskort på skrivbordet och utvecklarprogramvara för ett par kilospengar. Det finns dock gratisalternativ också. Notera: exakt för att designa, inte för att programmera, eftersom utgången är en fysisk digital krets som utför en viss algoritm på hårdvarunivå, och inte ett program för processorn.

Det fungerar så här. Det finns ett färdigt PCB med en uppsättning gränssnitt som är anslutna till ett FPGA-chip installerat på kortet, som ett coolt kort för ett datacenter eller ett felsökningskort för träning.

Tills vi konfigurerar FPGA:n finns det helt enkelt ingen logik inuti mikrokretsen för att bearbeta data från gränssnitten, och därför kommer uppenbarligen ingenting att fungera. Men som ett resultat av designen kommer en firmware att skapas, som, efter att ha laddats in i FPGA, kommer att skapa den digitala krets vi behöver. Du kan till exempel skapa en 100G Ethernet-kontroller som tar emot och bearbetar nätverkspaket.

En viktig egenskap hos FPGA är möjligheten att konfigurera om. Idag behöver vi en 100G Ethernet-kontroller, och imorgon kan samma kort användas för att implementera oberoende fyra 25G Ethernet-gränssnitt.

Det finns två stora FPGA-chiptillverkare, Xilinx och Intel, som kontrollerar 58 % respektive 42 % av marknaden. Xilinx-grundarna uppfann det första FPGA-chippet redan 1985. Intel gick nyligen in på marknaden 2015 genom att förvärva Altera, som grundades samtidigt med Xilinx. Xilinx- och Altera-teknologierna är lika på många sätt, liksom utvecklingsmiljöer. För det mesta har jag arbetat med Xilinx-produkter, så bli inte förvånad över att det ständigt nämns.

GENOMFÖRANDE AV PROJEKTET PÅ FPGA

Efter att ha arbetat ut logikkretsen med hjälp av funktionell modellering är det nödvändigt att placera den på chipet. Simulera sedan kretsen baserat på den faktiska latensen för elementen som erhålls efter att ha placerat kretsen på ett chip. Om det behövs, korrigera de mottagna lösningarna. Därefter laddas kretsen in i FPGA:n och testas vid stativet.

Ris. 82. Stadier för att designa en digital enhet på FPGA

Huvudstadierna av design på FPGA (från föreläsningar):

    Ett enhetsdiagram utvecklas och läggs in i XILINX.

    Utförs av IMPLEMENTATION (översättning, schemabildning genom att extrahera bibliotekselement, optimering, placering på chip).

    Programmering.

  1. Associativt minne. Organisation, samplingsmetod, skillnader från adressminne.

Associativ åtkomst implementerar en sökning efter information av något attribut, och inte efter dess plats i minnet (adress eller plats i kön). I den mest kompletta versionen kontrolleras alla ord som är lagrade i minnet samtidigt för överensstämmelse med en funktion, till exempel för sammanträffande av vissa ordfält (taggar - från det engelska ordet tag) med funktionen som anges av inmatningsordet (taggadress) ). Utdata ges de ord som uppfyller kriteriet. Disciplinen att utfärda ord, om flera ord uppfyller taggen, liksom disciplinen att skriva ny data, kan vara annorlunda. Det huvudsakliga tillämpningsområdet för associativt minne i moderna datorer är datacache.

I associativa lagringsenheter söks information efter en associativ funktion som är registrerad i varje minnescell.

Ett ord skrivs i maskregistret som tillåter en fråga för alla eller bara några bitar av det associativa attributet; användningen av en mask låter dig minska eller utöka sökområdet.

Informationssökning utförs parallellt över alla celler genom att jämföra begäran med det associativa attributet för varje cell.

Sökresultatet bildas av en speciell kombinationskrets som genererar signaler som meddelar om frånvaron av ord som uppfyller sökvillkoren, om närvaron av endast ett ord, om närvaron av flera ord med en sådan associativ egenskap.

Efter bildandet och bearbetningen av varningssignalerna läser styrkretsen den nödvändiga informationen. När man skriver, söks en ledig cell efter värdet på den upptagna biten, information skrivs in i den först hittade lediga cellen.

Kontroll av upptagen bit utförs genom att ställa in den n:te biten (upptagen bit) för masken. När du använder ytterligare kombinationskretsar i det associativa minnet kan du utföra olika logiska operationer, bestämma det maximala eller lägsta antalet, antalet ord som har samma associativa attribut, etc. Minnescellerna i det associativa minnet måste vara statiska minneselement, i det associativa minnet nås alla celler samtidigt och får inte avbrytas av regenereringscykler. Associativt minne är det snabbaste, men mycket dyrt, eftersom det kräver införandet av ett ytterligare jämförelseschema som låter dig utföra en sökning för varje minnescell. Därför används sådant minne vanligtvis inte i sin rena form, och höghastighetsminnesenheter som Cache exekveras vanligtvis som delvis associativa.

Vhelt associativt cacheminne (FACM, Fully Associated Cache Memory), varje cell lagrar data, och i "tagg"-fältet - den fullständiga fysiska adressen för informationen, vars kopia registreras. I varje utbyte jämförs den fysiska adressen för den begärda informationen med "tagg"-fälten för alla celler, och om de matchar ställs träffsignalen in i vilken cell som helst.

Vid läsning och värdet på signalen Hit = 1 skickas data till databussen, men om det inte finns några matchningar (Hit = 0), då vid läsning från huvudminnet placeras data tillsammans med adressen i en ledig eller den senast oanvända cacheminnescellen.

Vid skrivning av data, tillsammans med adressen, placeras först, som regel, i cacheminnet (i den detekterade cellen vid Hit = 1 och ledig vid Hit = 0). Kopiering av data till huvudminnet utförs under kontroll av en speciell styrenhet när det inte finns några minnesåtkomster.

FACM-minne är en mycket komplex enhet och används endast för små kapaciteter, främst i speciella applikationer. Samtidigt ger denna typ av cacheminne den största funktionella flexibiliteten och konfliktfria adresser, eftersom vilken informationsenhet som helst kan laddas in i valfri cell i cacheminnet.

Från föreläsningar:

Associativa lagringsenheter

Den grundläggande skillnaden är att systemet för att hämta information från dem inte utförs på en unik adress där informationen finns, utan av något attribut, som i själva verket är en del av den information som krävs.

Information

En tagg är en särskiljande egenskap, av en slump med vilken en bit information får.

Förenklat diagram över det associativa minnet:

Lagringsområdet är ett adresserbart minne med numrerade celler som lagrar information och taggar.

För att komma åt associativt minne placeras ett prov av den erforderliga taggen i begäranderegistret. Jämförelseschemat jämför frågan. Ställ in en matchning i matchregistret där taggen från minnet matchade mönstret. Reaktioner är möjliga (inga matchningar; det finns minst en matchning - i detta fall placeras den hittade cellen i dataregistret; multipel matchning - CC:n måste bestämma vilken av cellerna som ska hämtas för bearbetning).

Applikation: DB, kunskapsbas, PC som cache.

65 nanometer är nästa mål för Zelenograd-anläggningen "Angstrem-T", som kommer att kosta 300-350 miljoner euro. Företaget har redan lämnat in en ansökan om ett mjukt lån för att modernisera produktionsteknik till Vnesheconombank (VEB), rapporterade Vedomosti denna vecka med hänvisning till Leonid Reiman, styrelseordförande för anläggningen. Nu förbereder "Angstrem-T" att lansera en produktionslinje för mikrokretsar med en 90nm topologi. Betalningar på det tidigare VEB-lånet, som det köptes för, påbörjas i mitten av 2017.

Peking kollapsar Wall Street

Viktiga amerikanska index markerade de första dagarna av det nya året med ett rekordfall, miljardären George Soros har redan varnat för att världen förväntar sig en upprepning av 2008 års kris.

Den första ryska konsumentprocessorn Baikal-T1 till ett pris av $ 60 lanseras i massproduktion

Företaget "Baikal Electronics" i början av 2016 lovar att lansera i industriell produktion den ryska processorn Baikal-T1 värd cirka 60 $. Enheter kommer att efterfrågas om denna efterfrågan skapas av staten, säger marknadsaktörerna.

MTS och Ericsson ska tillsammans utveckla och implementera 5G i Ryssland

Mobile TeleSystems PJSC och Ericsson tecknade ett avtal om samarbete vid utveckling och implementering av 5G-teknik i Ryssland. I pilotprojekt, bland annat under VM 2018, avser MTS att testa utvecklingen hos den svenska leverantören. I början av nästa år inleder operatören en dialog med ministeriet för tele- och masskommunikation om bildandet av tekniska krav för den femte generationens mobilkommunikation.

Sergey Chemezov: Rostec är redan ett av de tio största maskinbyggarföretagen i världen

I en intervju med RBC svarade chefen för Rostec, Sergey Chemezov, på skarpa frågor: om Platon-systemet, problemen och utsikterna för AVTOVAZ, statens intressen i läkemedelsbranschen, talade om internationellt samarbete inför sanktioner tryck, importsubstitution, omorganisation, utvecklingsstrategier och nya möjligheter i svåra tider.

Rostec "inhägnad" och inkräktar på Samsungs och General Electrics lagrar

Rostecs förvaltningsråd godkände "Utvecklingsstrategin fram till 2025". Huvudmålen är att öka andelen högteknologiska civila produkter och komma ikapp General Electric och Samsung när det gäller finansiella nyckelindikatorer.

Artikeln gör ett försök att fastställa sammansättningen av den medföljande dokumentationen för de utvecklade digitala modulerna för programmerbara logiska integrerade kretsar (FPGA). Denna medföljande dokumentation måste tillhandahållas av utvecklarna till konsumenten/kunden för framgångsrik vidare användning av den utvecklade digitala modulen i deras projekt vid designstadiet av digitala enheter baserade på FPGA:er.

Introduktion

Så, vilken typ av designdokumentation bör man fråga utvecklaren om, om företaget eller kundföretaget eller en annan utvecklare kommer att använda en "utländsk" utvecklad enhet i sina projekt i framtiden? Den här artikeln kan fungera som ett "fuskblad" för att först korrekt utfärda ett tekniskt uppdrag för utveckling av en digital enhet för en FPGA, och sedan be utvecklaren om designdokumentation för en redan utvecklad digital enhet. Baserat på tidigare erfarenhet av designdokumentation använder ett företag eller företag vanligtvis följande standarder och föreskrifter:

  • GOST 2.102-68 ESKD. Typer och fullständighet av designdokument.
  • GOST 15.101-98. System för produktutveckling och lansering i produktion. Proceduren för att utföra forskningsarbete.
  • GOST R 15.201-20-00. System för produktutveckling och lansering i produktion. Produkter för industriella och tekniska ändamål. Förfarandet för utveckling och lansering av produkter för produktion.

Som regel var dessa en firmwarefil och ett program (en beskrivning av en digital enhet i VHDL / Verilog eller en uppsättning digitala kretsar utvecklade i en kretsredigerare med hjälp av bibliotekselement av digital logik, såsom triggers, register, räknare, avkodare , etc.) på CD eller DVD och programmeringsinstruktioner. Och det är allt.

Författaren stötte till exempel på följande problem. En av de anställda utvecklade en sofistikerad digital enhet med flera moduler. Han beskrev alla moduler i VHDL och tittade på operationssekvenserna för dessa moduler och den digitala enheten som helhet på ett bra och dyrt oscilloskop. Han kände inte till Test Bench-filer och om möjligheten att modellera eller visste inte hur man skrev dem, det fanns för övrigt inga kommentarer till projektet och till beskrivningarna av modulerna heller. Situationen kan bli ännu värre om modulerna representeras av digitala kretsar utvecklade i en schematisk editor med hjälp av bibliotekselement. Detta är en av de största nackdelarna: förutom utvecklaren själv kommer knappast någon annan att förstå den här digitala enheten, särskilt om projektet är multimodul och beskrivningen av varje modul är mer än 100 rader eller mer än en bildskärm. Så om en annan utvecklare vill introducera en sådan redan utvecklad digital enhet för FPGA i en ny utveckling eller ett nytt projekt, måste han återigen lägga tid på att utveckla denna digitala enhet.

Historien om designen för FPGA:er

För närvarande är FPGA-marknaden en av de mest dynamiskt utvecklande. FPGA används inom många teknikgrenar. För närvarande finns det ingen entydig metod för att erhålla FPGA-konfigurationen från enhetens funktionella modell på systemnivå som tillfredsställer alla hårdvaruutvecklare. Det mest populära sättet att lösa detta problem är användningen av IP-kärnteknik (Intellectual Property Cores). IP-kärnor är färdiga komponenter som gör att du enkelt kan integrera dem i ditt eget projekt för att skapa ett mer komplext system. Detta tillvägagångssätt har en betydande nackdel - fastsättningen av IP-kärnor till den elementära basen. Varje IP-kärna är optimerad för en specifik serie mikrokretsar från en viss tillverkare, vilket avsevärt försämrar förmågan att överföra redan skapade enheter från en elementbas till en annan. Den slutna karaktären hos kommersiella CAD-arkitekturer gör det omöjligt att lägga till dina egna funktionella enhetsmodeller på systemnivå för att erhålla enhetsmodeller baserade på dem på registeröverföringsnivån (RTL). Utvecklingen av en digital modul utförs i form av en digital krets ritad i en kretsredigerare med hjälp av biblioteket av grundläggande kretselement inbyggda i tillverkarens CAD-system, såsom triggers, avkodare, räknare, adderare, etc.

Ett annat populärt tillvägagångssätt som möjliggör övergången från en funktionell modell på systemnivå till en enhetsmodell på registeröverföringsnivå är användningen av hårdvarubeskrivningsspråk på systemnivå (designspråk på systemnivå, SLDL). Sådana språk inkluderar SystemC, Handel-C, VHDL, Verilog, System Verilog. Den största fördelen är oberoende av hårdvarubasen där enheten kommer att implementeras.

Sålunda, å ena sidan, när man använder tekniken för IP-kärnor, får hårdvaruutvecklaren en högkvalitativ lösning, men styvt knuten till hårdvarubasen där enheten är implementerad. Å andra sidan, när du använder hårdvarubeskrivningsspråk på systemnivå, är enhetsimplementeringen hårdvaruoberoende. Det följer av ovanstående att det för närvarande är relevant att gemensamt använda digitala moduler i maskinvarubeskrivningsspråket och IP-kärnor hos tillverkaren (Xilinx, Altera, Actel, etc.) och tredjepartsutvecklare för att påskynda designprocessen. Vid användning av digitala moduler från tredje part saknas ibland informationsinnehållet i den medföljande dokumentationen.

Tillhandahåller information om den utvecklade digitala modulen för FPGA

Beroende på metodiken för att erhålla FPGA-konfigurationen enligt enhetens funktionella modell på systemnivå, kan utvecklaren särskilja följande typer av digitala moduler för FPGA:er:

  • programvara - en utvecklad digital modul som överförs till konsumenten i form av en beskrivning i hårdvarubeskrivningsspråket (VHDL, Verilog) eller/och utvecklad i Schematic Editor för vidare användning i program för automatisk syntes av logiska kretsar och optimerad i termer av funktionell parametrar.
  • Firmware - en digital modul utvecklad av en tredjepartsutvecklare, som kallas IP-kärnan, överförd till konsumenten i form av en logisk krets (netlist) i basen av FPGA-tillverkarens logiska elementbibliotek och optimerad för funktionell och elektriska parametrar.

Vid utvecklingsstadiet för dokumentation, baserat på personlig erfarenhet, är det nödvändigt att utöver den vanliga designdokumentationen och tekniska specifikationer utarbeta i enlighet med GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114, dokumentation för alla typer av modeller (system, logiska, schematiska) skapade vid designstadiet av digitala enheter på FPGA.

Med andra ord bör uppsättningen designdokumentation för en digital enhet för FPGA, förutom firmwarefilen, programmeringsinstruktioner och det inspelade projektet på CD/DVD, även innehålla medföljande dokumentation.

Tabell. Lista över avsnitt i medföljande dokumentation

Avsnittstitel Se
programvara Firmware
Allmän information
Syfte och omfattning O R
Specifikationer O O
Beskrivning av återställningssignaler O O
Beskrivning av synksignaler O O
Beskrivning av gränssnitt O R
Tidtabeller R O
Beskrivning av kontrollregister O O
Strukturell (funktionell) diagram R R
Programmeringsguide O O
FPGA-modell eller familj,
företagets tillverkare
R O
Presentation av den digitala modulen
för logisk design på FPGA
RTL-modell O Nej
Logisk modell Nej O
Designbegränsningar O O

Här är en lista över avsnitt (tabell) som bör ingå i den medföljande dokumentationen för projektet med en digital modul för FPGA. För varje avsnitt visas tecken på behovet av att inkludera ett avsnitt i dokumentuppsättningen:

  • "О" - ett obligatoriskt tillhandahållet avsnitt;
  • "R" - avsnitt rekommenderas för leverans.

Rekommenderade filformat för överföring av medföljande dokumentation - MS Word, PDF (bästa format), HTML. Beskrivningsfiler på hårdvarubeskrivningsspråket (VHDL, Verilog) eller/och utvecklade i Schematisk redigerare tillhandahålls som krävs av CAD-programvaran för utveckling. Ett undantag kan vara ytterligare tillhandahållande i ett grafiskt format (JPEG, BMP) av digitala systemfiler som utvecklats i Schematic Editor.

Allmän information

Detta avsnitt beskriver allmän information om den utvecklade digitala modulen i form av en beskrivning:

  • funktionsdiagram och dess ingående block / delar;
  • återställningssignaler, synkronisering;
  • använda gränssnitt;
  • kontrollregister;
  • tidtabell;
  • programmering.

Syfte och omfattning

Syftet med den digitala modulen och dess omfattning bestäms.

Specifikationer

En beskrivning av dess huvudsakliga tekniska egenskaper ges, såsom prestanda, strömförbrukning för en specifik FPGA-kristall, antalet upptagna grindar och vilken typ av FPGA-kristall som används. Dessutom anges FPGA-tillverkaren som används vid utvecklingen av den digitala CAD-modulen och programvaran som används för modellering och verifiering. För alla program som används anges version och installerade uppdateringar. En grafisk representation av den digitala modulen i form av en "svart låda" med beteckningen externa ingångar / utgångar ges och en kort beskrivning av deras syfte ges.

Beskrivning av återställningssignaler

Detaljer om återställningssignalerna ges:

  • Lista över externa och interna återställningssignaler.
  • Tidsparametrar och tidsdiagram för återställningssignaler.
  • Kretsar för att generera interna återställningssignaler, om sådana finns, ingår i den digitala modulen.
  • Förhållande till andra signaler (särskilt med synkroniseringssignaler).

Beskrivning av synksignaler

Detaljer om synkroniseringssignalerna ges:

  • beskrivning av externa synkroniseringssignaler;
  • tidsparametrar för synkroniseringssignaler;
  • beskrivning av interna synkroniseringssignaler och deras genereringssystem;
  • tidsförhållande mellan synkroniseringssignaler från olika källor;

Beskrivning av gränssnitt

Funktioner för användningen av alla gränssnitt som är en del av den utvecklade digitala modulen, helst förenade för att organisera interaktion med andra noder i systemet på ett chip, ges. Dessutom tillhandahålls en Internetlänk till en fullständig beskrivning av standardgränssnittet, eller beskrivningen av själva gränssnittet tillhandahålls. För närvarande accepteras gränssnitt till bussen AMBA, PLB, Wishbone som enhetliga gränssnitt för digitala moduler.

Tidtabeller

Den nödvändiga informationen för att organisera datautbyte genom gränssnitten och andra ingångar/utgångar på den digitala modulen tillhandahålls: en grafisk presentation av tidsdiagram, en beskrivning av dataöverföringsprotokoll, krav på externa signaler som levereras till den digitala modulen (varaktighet, frekvens, etc.), och annan information ...

Beskrivning av kontrollregister

En beskrivning av alla styrregister för den digitala modulen tillhandahålls. En typisk beskrivning av ett kontrollregister innehåller namnet på registret, adressen till registret i det interna adressutrymmet, initialvärdet efter att återställningssignalen tagits bort, typen av åtkomst (läs/skriv) och en beskrivning av den interna fält.

Strukturell (funktionell) diagram

En bild av den interna strukturen av anslutningarna för de viktigaste interna noderna / blocken i den digitala modulen visas, såväl som deras korta textbeskrivning. Dessutom ges en beskrivning av de viktigaste interna blocken i den digitala modulen. Syftet med detta dokument är att ge konsumenten den information som krävs för att förstå principerna för den digitala modulen.

Antalet beskrivna block och omfattningen av beskrivningen bestäms av utvecklaren av den digitala modulen. Företrädesvis motsvarar det minsta antalet beskrivna moduler antalet element i den digitala modulens strukturella (funktionella) krets.

En typisk beskrivning av inomhusenheten innehåller:

  • syftet med blocket;
  • strukturellt (funktionellt) blockschema (om nödvändigt);
  • arbetssätt och algoritmer;
  • tidsdiagram för arbetet;
  • blockhanteringsorganisation;
  • organisation av kommunikation med andra block;
  • annan information.

Programmeringsguide

Tillhandahåller all nödvändig information om processen för programmering med CAD-tillverkaren av den digitala modulen i FPGA, de nödvändiga verktygen för mjukvaruutveckling och felsökning, mjukvarubibliotek.

FPGA-modell eller familj, tillverkare

För firmware för en digital modul anges tillverkaren av FPGA, modellen eller familjen av FPGA och dess hastighetsegenskaper. För programvarans digitala modul tillhandahålls information om mängden resurser som upptas, kraven för den tillämpade FPGA.

Representation av en digital modul för logisk design

Artikeln diskuterade svårigheterna med att använda ett "utländskt" projekt i VHDL – bristen på lämpliga riktlinjer för namngivning och regler för att skriva program. Den gav också allmänna riktlinjer för namngivning, bra formregler för att skriva program och riktlinjer för syntetisering. Dessa frågor bör diskuteras så detaljerat som möjligt med utvecklaren, om du i framtiden planerar att fortsätta utvecklingen eller moderniseringen på egen hand, innan han börjar utveckla RTL-modellen av den digitala modulen på FPGA. Detta gäller speciellt typen av digital mjukvarumodul på FPGA. Samma del av artikeln beskriver de allmänna kraven för hela projektet för den utvecklade digitala modulen på FPGA. Här är frågorna som du bör vara uppmärksam på när du upprättar ett tekniskt uppdrag för utveckling av en digital modul på en FPGA, och framför allt handlar det om överföring av arbetsresultat.

RTL-modell

En digital modul som beskrivs i en syntetiserad delmängd av Verilog-språket eller VHDL eller / och utvecklad i Schematic Editor är avsedd att användas i skedet av logisk FPGA-syntes. Levereras till Software som ett sammansatt projekt av en digital modul i CAD från en FPGA-tillverkare. För digital Firmware tillhandahålls RTL-modellen genom separat avtal.

Utöver RTL-modellfilerna överförs följande:

  • Instruktioner för användning av modellen.
  • Beskrivning av minnesblocken som ingår i modellen, inklusive minnestyp, storlek, antal minnesblock, hierarkiskt namn på minnesblocket.
  • Beskrivning av processen för att skapa färdiga kärnor med hjälp av program för att skapa dem (till exempel CoreGenerator för Xilinx ISE). I avsaknad av beskrivningar kan det finnas begränsningar för omdesign och tillämpning på grund av teknik och tillverkarberoende.
  • Om du använder en mikroprocessor från tillverkaren (till exempel från Altera - Nios-processor; från Xilinx - Microblaze, PowerPC-mikroprocessorer), krävs en beskrivning av processen för att konfigurera processorkärnan och dess kringutrustning.
  • En uppsättning tester (Test Bench-filer) för verifiering och simulering av en digital modul, skrivna på Verilog-språket eller / och i VHDL, eller / och i System Verilog.
  • All annan ytterligare information.

Logisk modell

Modellen är en lista över nät, som beskrivs med Verilog eller VHDL i FPGA-tillverkarens biblioteksbas, och tillhandahålls för den digitala modulens firmware.

Förutom filerna i den logiska modellen överförs följande:

  • Instruktioner för användning av denna modell.
  • En uppsättning tester (Test Bench-filer) för verifiering och simulering av en digital modul, skrivna på Verilog-språket eller / och i VHDL, eller / och i System Verilog.
  • Riktlinjer för att arbeta med en uppsättning tester för modellering och verifiering av en digital modul.
  • All annan ytterligare information.

Designbegränsningar

Designbegränsningar tillhandahålls i form av en fil som beskriver en uppsättning begränsningar som åläggs en digital modul när den ingår i den logiska system-på-chip-modellen. Denna uppsättning inkluderar klockrestriktioner, tidsbegränsningar, restriktioner för hur en digital modul interagerar med andra moduler och driftsförhållandena för en digital modul. Det föredragna formatet är Synopsis Design Constraints (SDC) eller FPGA-tillverkarens CAD-format.

En exempellista på begränsningar för synkroniseringssignaler:

  • tidsdiagram (Klockvågform);
  • klockfrekvensinstabilitet (Jitter);
  • ändring av fasen för klockfrekvensen;
  • varaktighet av kopplingstider (övergångstider);
  • Genererade klockvågformer
  • annan ytterligare information.

En uppsättning begränsningar för tidssignaler är obligatoriska för digitala moduler för programvara och firmware.

En ungefärlig lista över tidsbegränsningar:

  • Ankomsttider vid ingångar;
  • tidpunkt för uppkomsten av signaler vid utgångar (Obligatoriska tider vid utgångar);
  • flercykelvägar;
  • falska vägar;
  • varaktigheten av datasignalens övergångstid;
  • annan ytterligare information.

Slutsats

Den givna sammansättningen av den medföljande dokumentationen för de utvecklade digitala modulerna för FPGA tillhandahålls genom överenskommelse mellan konsumenten och utvecklaren. Oftast tillhandahåller utvecklaren en enkel digital modul, beskriven i VHDL, Verilog, System Verilog och / eller utvecklad i en schematisk editor. Angående ytterligare dokumentation är svaret från utvecklaren oftast följande: ”Den digitala modulen fungerar, så ta den och använd den. Det är inget komplicerat i att beskriva en krets på hårdvaruspråket: du kommer att ta reda på det själv."

Enligt författarens åsikt kan du ta reda på vad som helst, allt beror på önskan och den tid som spenderas, och tiden som ägnas åt att försöka lista ut ett "främmande" projekt för en redan utvecklad digital modul är direkt proportionell mot upplevelsen av att beskriva hårdvara i VHDL, Verilog och kunskaps digitala och mikroprocessorkretsar. Detta kan undvikas om du initialt kommer överens med utvecklaren om sammansättningen av den medföljande dokumentationen, då blir användningen av den digitala modulen i ditt projekt enklare, och dess implementering kommer att ske snabbare.

Sammanfattningsvis vill författaren notera att när du formulerar uppgiften att utveckla en digital enhet på en FPGA bör du följa rekommendationerna som ges i artikeln, då kommer det inte att uppstå några problem när du återanvänder eller uppgraderar en tidigare utvecklad digital enhet.

Litteratur

  1. Denisov A. Flera tips för att designa digitala enheter på VHDL för FPGA // Komponenter och teknologier. 2009. Nr 12.
  2. GOST 2.102-68 ESKD. Typer och fullständighet av designdokument.
  3. GOST 2.114-95 ESKD. Tekniska förhållanden.
  4. GOST 15.101-98. System för produktutveckling och lansering i produktion. Ordningen för att utföra vetenskapligt forskningsarbete.
  5. GOST R 15.201-20-00. System för produktutveckling och lansering i produktion. Produkter för industriella och tekniska ändamål. Förfarandet för utveckling och lansering av produkter för produktion.