Upotreba plisa u modernim uređajima. Novosti i analitički portal "vrijeme elektronike" Primjeri dizajniranja velikih FPGA projekata

Zamislite da će procesor, umjesto izvršavanja određenog skupa instrukcija, biti ponovo izgrađen za svaki program i pretvoriti algoritam direktno u hardver. Tako funkcionišu FPG-ovi. U današnjem članku ću objasniti kako je to uopće moguće i upoznati vas s različitim metodama dizajna FPGA.

Da biste započeli, morate malo razumjeti digitalnu logiku rada ASIC-a, ali vrlo je teško i skupo početi s njima, a bolje je početi s FPGA.

Šta je FPGA?

FPGA označava polje programabilnih gejta (korisnički programabilni niz kapija, FPGA). U općenitijem slučaju, nazivaju se FPGA - programibilna logička integrirana kola.

Uz pomoć FPGA, možete, u pravom smislu te riječi, dizajnirati digitalna mikrokola dok sjedite kod kuće s pristupačnom pločom za otklanjanje grešaka na stolu i softverom za razvoj za nekoliko hiljada zelenih rubalja. Ali, postoje i besplatne opcije. Napomena: treba dizajnirati, a ne programirati, jer ćemo na izlazu dobiti fizičko digitalno kolo koje izvodi određeni algoritam na hardverskom nivou, a ne prog za procesor.

Radi na sljedeći način. Postoji gotova štampana ploča sa skupom interfejsa koji su povezani sa FPGA čipom koji je instaliran na ploči, nešto poput cool data centra ploče ili ove ploče za debagovanje za obuku.

Dok ne konfigurišemo FPGA, jednostavno nema logike unutar čipa za obradu podataka sa interfejsa, i stoga, naravno, ništa neće raditi. Ali kao rezultat dizajna, kreirat će se firmver, koji će, nakon učitavanja u FPGA, stvoriti digitalni krug koji nam je potreban. Na ovaj način možete kreirati 100G Ethernet kontroler koji će primati i obrađivati ​​mrežne pakete.

Važna karakteristika FPGA je mogućnost rekonfiguracije. Recimo da nam je sada potreban 100G Ethernet kontroler, a za nedelju dana ista ploča može da se koristi za implementaciju četiri nezavisna 25G Ethernet interfejsa.

Dva su lidera u proizvođačima FPGA čipova na tržištu: dobro poznati Intel i Xilinx. Oni kontrolišu 58 i 42% tržišta. Osnivači Xilinxa izumili su svoj prvi FPGA čip davne 1985. godine. Intel je na tržište ušao sasvim nedavno - 2015. godine, apsorbujući Alteru, koja je osnovana u isto vreme kada i Xilinx. Altera i Xilinx tehnologije su slične na mnogo načina, kao i razvojna okruženja. Često sam radio sa Xilinx proizvodima, tako da nemojte biti iznenađeni kada vidite da se ona stalno spominje u članku.

FPGA se široko koriste u raznim oblastima: potrošačka elektronika, telekomunikacijska oprema, akceleratorske ploče za korištenje u podatkovnim centrima, robotika, ASIC prototipovi. Proći ću kroz nekoliko primjera u nastavku.

Takođe ćemo pogledati tehnologiju koja omogućava rekonfiguraciju hardvera, upoznati se sa procesom projektovanja i analizirati jednostavan primer implementacije hardverskog brojača u Verilog jeziku. Ako imate bilo koju FPGA ploču za otklanjanje grešaka, trebali biste biti u mogućnosti to sami replicirati. Ako nema ploče, još uvijek se možete upoznati sa Verilog-om simulacijom rada kola na vašem računalu.

Kako radi FPGA

FPGA čip je isti prilagođeni ASIC čip, koji se sastoji od istih tranzistora koji se koriste za sklapanje flip-flopova, registara, multipleksora i drugih logičkih elemenata za konvencionalna kola. Naravno, nemoguće je promijeniti redoslijed povezivanja ovih tranzistora. Ali arhitektonski, mikrokolo je izgrađeno na tako lukav način da možete promijeniti prebacivanje signala između većih blokova: oni se zovu CLB - programabilni logički blokovi.

Također možete promijeniti logičku funkciju koju CLB izvodi. To se postiže činjenicom da je cijeli čip prožet ćelijama konfiguracijske memorije statičke RAM memorije. Svaki bit ove memorije ili kontrolira neku vrstu ključa za prebacivanje signala, ili je dio tablice istinitosti logičke funkcije koju CLB implementira.

Budući da je konfiguracijska memorija izgrađena pomoću statičke RAM tehnologije, prvo, kada je FPGA uključen, mikrokolo mora biti konfigurirano, a drugo, mikrokolo se može rekonfigurirati gotovo beskonačan broj puta.

Vrlo pojednostavljena struktura 2D čipa bez konfiguracijske memorije

CLB-ovi se nalaze u matrici prebacivanja koja definira veze za ulaze i izlaze CLB-ova.

Dijagram matrice prebacivanja

Na svakoj raskrsnici provodnika nalazi se šest prekidača kojima upravljaju njihove vlastite konfiguracijske memorijske ćelije. Otvaranjem jednih i zatvaranjem drugih moguće je osigurati različito prebacivanje signala između CLB-ova.

CLB

CLB se vrlo jednostavno sastoji od bloka koji definira Booleovu funkciju od nekoliko argumenata (naziva se tabela pretraživanja - Look Up Table, LUT) i okidača (flip-flop, FF). U modernim FPGA, LUT ima šest ulaza, ali slika pokazuje tri radi jednostavnosti. LUT izlaz se dovodi na CLB izlaz ili asinhrono (direktno) ili sinhrono (preko FF flip-flopa koji radi na sistemskom taktu).

Princip implementacije LUT-a

Zanimljivo je pogledati princip implementacije LUT-a. Recimo da imamo neku Bulovu funkciju y = (a & b) | ~c. Njegov šematski prikaz i tabela istinitosti prikazani su na slici. Funkcija ima tri argumenta, tako da uzima 2^3 = 8 vrijednosti. Svaki od njih odgovara vlastitoj kombinaciji ulaznih signala. Ove vrijednosti izračunava FPGA program za razvoj firmvera i upisuje u memorijske ćelije posebne konfiguracije.

Vrijednost svake ćelije se dovodi na njen ulaz LUT izlaznog multipleksera, a ulazni argumenti Booleove funkcije se koriste za odabir jedne ili druge vrijednosti funkcije. CLB je najvažniji FPGA hardverski resurs. Količina CLB-a u modernim FPGA čipovima može varirati i ovisi o vrsti i kapacitetu čipa. Xilinx ima CLB kristale u rasponu od oko četiri hiljade do tri miliona.

Pored CLB-a, postoji niz važnih hardverskih resursa unutar FPGA. Na primjer, blokovi za hardversko množenje-akumulaciju ili DSP blokovi. Svaki od njih može raditi množenje i sabiranje 18-bitnih brojeva u svakom ciklusu. U high-end kristalima, broj DSP blokova može premašiti 6000.

Drugi resurs su blokovi interna memorija(Blok RAM, BRAM). Svaki blok može pohraniti 2 KB. Ukupni kapacitet takve memorije, ovisno o kristalu, može doseći od 20 KB do 20 MB. Poput CLB-ova, BRAM i DSP blokovi su povezani komutacijskom matricom i prožimaju cijeli čip. Povezivanjem CLB, DSP i BRAM blokova mogu se dobiti vrlo efikasne šeme za obradu podataka.

Prednosti FPGA

Prvi FPGA čip koji je kreirao Xilinx 1985. godine sadržavao je samo 64 CLB-a. U to vrijeme integracija tranzistora na čipovima bila je mnogo niža nego sada, a čipovi "labave logike" često su se koristili u digitalnim uređajima. Postojali su zasebni čipovi za registre, brojače, multipleksore, množitelje. Ispod određeni uređaj napravljena je štampana ploča na kojoj su instalirani ovi mikro krugovi niske integracije.

Upotreba FPGA omogućila je napuštanje ovog pristupa. Čak i 64 CLB FPGA štedi prostor na štampanoj ploči, a dostupnost rekonfiguracije dodala je mogućnost ažuriranja funkcionalnosti uređaja nakon proizvodnje tokom rada, kako kažu "na terenu" (otuda i naziv - polje programabilnih kapija ).

Zbog činjenice da se unutar FPGA može kreirati bilo koji hardverski digitalni sklop (glavno je da ima dovoljno resursa), jedna od važnih primjena FPGA je izrada prototipova ASIC čipova.

Razvoj ASIC-a je vrlo složen i skup, cijena greške je vrlo visoka, a pitanje logike testiranja je kritično. Stoga je jedna od faza razvoja, čak i prije početka rada na fizičkoj topologiji kola, bila njegova prototipizacija na jednom ili više FPGA čipova.

Za razvoj ASIC-a izdaju se specijalne ploče koje sadrže mnogo međusobno povezanih FPGA. Prototip mikročipa radi na mnogo nižim frekvencijama (možda desetinama megaherca), ali štedi novac na identifikaciji problema i grešaka.

Međutim, po mom mišljenju, postoje zanimljivije primjene FPGA. Fleksibilna struktura FPGA omogućava implementaciju hardverskih kola za brzu i paralelnu obradu podataka sa mogućnošću promjene algoritma.


Poređenje hardverskih platformi

Razmislimo o fundamentalnoj razlici između CPU-a, GPU-a, FPGA i ASIC-a. CPU je univerzalan, na njemu možete pokrenuti bilo koji algoritam, najfleksibilniji je i najlakši za korištenje zbog ogromnog broja programskih jezika i razvojnih okruženja.

Istovremeno, zbog svestranosti i sekvencijalnog izvršavanja CPU instrukcija, performanse se smanjuju i povećava potrošnja energije kola. To se događa zato što za svaku korisnu aritmetičku operaciju, CPU izvodi mnoge dodatne operacije vezane za čitanje instrukcija, premještanje podataka između registara i keša i druge pokrete.

S druge strane je ASIC. Na ovoj platformi je traženi algoritam ugrađen u hardver zbog direktnog povezivanja tranzistora, sve operacije su vezane samo za izvršenje algoritma i nema načina da se to promijeni. Otuda maksimalne performanse i najmanja potrošnja energije platforme. Ali nemoguće je reprogramirati ASIC.

Desno od CPU-a je GPU. U početku su ovi čipovi bili dizajnirani za grafičku obradu, ali sada se koriste i za kompjutersko rudarenje. opće namjene. Sastoje se od hiljada malih računarskih jezgara i izvode paralelne operacije na nizu podataka.

Ako se algoritam može paralelizirati, tada će na GPU-u biti moguće postići značajno ubrzanje u odnosu na CPU. S druge strane, sekvencijalni algoritmi će biti lošije implementirani, pa je platforma manje fleksibilna od CPU-a. Takođe, za razvoj GPU-a, morate imati posebne vještine, znati OpenCL ili CUDA.

Konačno, FPGA. Ova platforma kombinuje efikasnost ASIC-a sa mogućnošću promene programa. FPGA nisu univerzalni, ali postoji klasa algoritama i zadataka koji će pokazati bolje performanse na njima nego na CPU-ima, pa čak i GPU-ovima. Složenost razvoja za FPGA je veća, ali novi razvojni alati čine ovaj jaz manjim.

Odlučujuća prednost FPGA je mogućnost obrade podataka brzinom njihovog dolaska uz minimalno kašnjenje odgovora. Kao primjer, zamislite pametni mrežni ruter s velikim brojem portova: kada Ethernet paket stigne na jedan od njegovih portova, mnoga pravila moraju se provjeriti prije nego što se izabere izlazni port. Možda ćete morati promijeniti neka polja u paketu ili dodati nova.

Korištenje FPGA omogućuje vam trenutno rješavanje ovog problema: bajtovi paketa su tek počeli da pristižu u mikrokolo iz mrežnog sučelja, a njegovo zaglavlje se već analizira. Upotreba procesora ovdje može značajno usporiti brzinu obrade mrežnog prometa. Jasno je da možete napraviti prilagođeni ASIC čip za rutere koji će raditi najefikasnije, ali šta ako se pravila za obradu paketa moraju promijeniti? Samo FPGA vam može pomoći da postignete potrebnu fleksibilnost u kombinaciji sa visokim performansama.

Stoga se FPGA koriste tamo gdje su potrebne visoke performanse obrade, najbrže vrijeme odziva i niska potrošnja energije.

FPGA u oblaku

U računarstvu u oblaku, FPGA se koriste za brzo brojanje, ubrzanje mrežnog saobraćaja i pristup nizovima podataka. Ovo takođe uključuje upotrebu FPGA za visokofrekventno trgovanje na berzama. FPGA ploče se ubacuju u servere sa PCI Express i optički mrežni interfejs proizvođača Intel (Altera) ili Xilinx.

FPGA su odlični za kriptografske algoritme, poređenje DNK sekvenci i naučne zadatke poput molekularne dinamike. Microsoft već dugo koristi FPGA da ubrza uslugu pretraživanja Bing, kao i da organizuje softverski definisano umrežavanje unutar Azure oblaka.

Bum mašinskog učenja nije zaobišao ni FPGA. Xilinx i Intel nude alate zasnovane na FPGA za rad sa dubokim neuronskim mrežama. Oni vam omogućavaju da dobijete FPGA firmver koji implementira određenu mrežu direktno iz okvira kao što su Caffe i TensorFlow.

Štaviše, sve ovo možete isprobati bez napuštanja kuće i korištenja cloud usluga. Na primjer, na Amazonu možete iznajmiti virtuelna mašina sa pristupom FPGA ploči i svim razvojnim alatima, uključujući mašinsko učenje.

FPGA na ivici

Šta je još zanimljivo raditi na FPGA? Zašto to jednostavno ne urade! Robotika, bespilotna vozila, dronovi, naučni instrumenti, medicinska oprema, po meri mobilnih uređaja, pametne sigurnosne kamere i tako dalje.

Tradicionalno, FPGA su se koristili za digitalnu obradu jednodimenzionalnih signala (i takmičili se sa DSP procesorima) u radarskim uređajima, primopredajnicima radio signala. Sa sve većom integracijom čipova i povećanjem performansi, FPGA platforme se sve više koriste za računanje visokih performansi, na primjer, za obradu dvodimenzionalnih signala "na rubu oblaka" (engl. edge computing).

Ovaj koncept je najlakše razumjeti na primjeru kamere za analizu saobraćaja sa prepoznavanjem registarskih tablica. Možete uzeti kameru s mogućnošću prijenosa videa preko Etherneta i obraditi stream na udaljenom serveru. Kako se broj kamera povećava, povećava se i opterećenje mreže, što može dovesti do kvarova sistema.

Umjesto toga, bolje je implementirati prepoznavanje registarskih tablica na kalkulatoru instaliranom direktno u tijelo video kamere i prenijeti registarske tablice u oblak u tekstualnom formatu. Da biste to učinili, čak možete uzeti relativno jeftine FPGA male snage da biste se snašli s baterijom. Istovremeno, ostaje moguće promijeniti logiku FPGA, na primjer, prilikom promjene standarda za registarske tablice.

Što se tiče robotike i dronova, u ovoj oblasti posebno je važno ispuniti dva uslova – visoke performanse i nisku potrošnju energije. FPGA platforma se savršeno uklapa i može se koristiti, posebno, za kreiranje kontrolera leta za dronove. Već se prave bespilotne letjelice koje mogu donositi odluke u hodu.

Razvoj FPGA projekta

Postoje različiti nivoi dizajna: niski, blok i visoki. Niski nivo uključuje korištenje jezika kao što su Verilog ili VHDL, gdje kontrolirate razvoj na razini prijenosa registra (RTL). U ovom slučaju formirate registre, kao u procesoru, i definirate logičke funkcije koje mijenjaju podatke između njih.

FPGA kola uvijek rade na određenim brzinama takta (obično 100-300 MHz), a na nivou RTL-a vi definirate ponašanje kola u okviru sistemskog takta. Ovaj mukotrpan rad rezultira najefikasnijim krugovima u smislu performansi, potrošnje resursa FPGA matrice i potrošnje energije. Ali ovdje su potrebne ozbiljne vještine u elektrotehnici, a proces s njima nije brz.

Na nivou bloka, u osnovi povezujete gotove velike blokove koji obavljaju određene funkcije da biste dobili funkcionalnost sistema na čipu (sistem-na-čipu) koja vam je potrebna.

Na visokom nivou dizajna, više nećete imati kontrolu nad podacima u svakom ciklusu takta, već ćete se koncentrisati na algoritam. Postoje kompajleri ili prevodioci od C i C++ do RTL nivoa, kao što je Vivado HLS. Prilično je pametan i omogućava vam da prevedete široku klasu algoritama na nivo hardvera.

Glavna prednost ovog pristupa u odnosu na RTL jezike je brzina razvoja, a posebno testiranje algoritama: C++ kod se može pokrenuti i verificirati na računalu, i to će biti mnogo brže od testiranja promjena algoritma na RTL nivou. Naravno, morat ćete platiti za udobnost - krug se može pokazati ne tako brzim i zauzeti više hardverskih resursa.

Često smo spremni platiti ovu cijenu: ako pravilno koristite prevodilac, onda efikasnost neće mnogo patiti, a u modernim FPGA ima dovoljno resursa. U našem svijetu s indikatorom kritičnog vremena do tržišta, ovo se pokazalo opravdanim.

Često se sva tri razvojna stila moraju kombinirati u jednom dizajnu. Recimo da trebamo napraviti uređaj koji bismo mogli ugraditi u robota i dati mu mogućnost da prepozna objekte u video streamu - na primjer, putokaze. Uzmimo čip video senzora i spojimo ga direktno na FPGA. Za otklanjanje grešaka možemo koristiti HDMI monitor, također povezan na FPGA.

Okviri sa kamere će se preneti na FPGA preko interfejsa koji je unapred određen od strane proizvođača senzora (USB ovde ne radi), obrađeni i prikazani na monitoru. Za obradu okvira potreban vam je framebuffer, koji se obično nalazi u vanjskom DDR memorija instaliran na PCB pored FPGA čipa.


Tipični blok dijagram FPGA dizajna

Ako proizvođač video senzora ne obezbijedi Interface IP za naš FPGA čip, onda ćemo ga morati sami napisati u RTL jeziku, računajući taktove, bitove i bajtove u skladu sa specifikacijom protokola za prijenos podataka. Preproces, DDR Controller i HDMI IP blokove, najvjerovatnije ćemo uzeti gotove i jednostavno spojiti njihova sučelja. A HLS blok, koji vrši pretragu i obradu dolaznih podataka, možemo pisati u C ++ i emitovati pomoću Vivado HLS.

Najvjerovatnije nam još uvijek treba neka vrsta gotovih detektora saobraćajnih znakova i biblioteke klasifikatora, prilagođenih za korištenje u FPGA. U ovom primjeru, naravno, dajem uvelike pojednostavljeni dijagram toka dizajna, ali on ispravno odražava logiku rada.

Razmotrite put dizajna od pisanja RTL koda do dobivanja konfiguracijske datoteke za učitavanje u FPGA.

Putanja dizajna

Dakle, pišete RTL kod koji implementira shemu koja vam je potrebna. Prije testiranja na stvarnom hardveru, morate se uvjeriti da je ispravan i da ispravno rješava traženi problem. Za to se koristi RTL modeliranje u simulatoru na računaru.

Uzimate svoje kolo, do sada predstavljeno samo u RTL kodu, i stavljate ga na virtuelnu klupu, gdje primjenjujete nizove digitalnih signala na ulaze kola, registrujete izlazne dijagrame, vremenske ovisnosti izlaznih signala i upoređujete s očekivanim rezultatima . Obično pronađete greške i vratite se pisanju RTL-a.

Dalje, logički verifikovani kod se dovodi na ulaz programa sintisajzera. On pretvara tekstualni opis kola u povezanu listu digitalnih elemenata iz biblioteke koja je dostupna za dati FPGA čip. Ova lista će prikazati elemente kao što su LUT-ovi, okidači i veze između njih. U ovoj fazi, elementi još nisu vezani za specifične hardverske resurse. Da biste to učinili, trebate nametnuti ograničenja (Constraints) na krug - posebno navedite koji su fizički I/O pinovi FPGA čipa povezani na logičke ulaze i izlaze vašeg kola.

Ova ograničenja također zahtijevaju od vas da navedete na kojim brzinama kola treba da radi. Izlaz sintisajzera i datoteka ograničenja daju se procesoru implementacije, koji, između ostalog, rukuje mjestom i rutom.

Proces Place povezuje svaki još bezlični element iz liste mreža za određeni element unutar FPGA čipa. Zatim počinje raditi proces Route koji pokušava pronaći optimalnu vezu ovih elemenata za odgovarajuću konfiguraciju FPGA matrice prebacivanja.

Mjesto i ruta funkcionišu na osnovu ograničenja koja smo nametnuli kolu: I/O pinovi i brzina takta. Period takta ima vrlo snažan uticaj na implementaciju: ne smije biti manji od vremenskog kašnjenja na logičkim vratima u kritičnom kolu između dva uzastopna flip-flopa.

Često se ovaj zahtjev ne može odmah ispuniti i tada je potrebno vratiti se na početnu fazu i promijeniti RTL kod: na primjer, pokušati smanjiti logiku u kritičnom lancu. Nakon što je implementacija uspješno završena, znamo koji su elementi gdje i kako su povezani.

Tek nakon toga počinje proces kreiranja binarne FPGA firmverske datoteke. Ostaje ga učitati u pravi hardver i provjeriti radi li kako se očekuje. Ako se u ovoj fazi pojave problemi, to znači da je modeliranje bilo nekompletno i da u ovoj fazi nisu otklonjene sve greške i nedostaci.

Možete se vratiti u fazu simulacije i simulirati abnormalnu situaciju, a ako to ne uspije, u ekstremnim slučajevima, mehanizam za otklanjanje grešaka se obezbjeđuje direktno u hardveru koji radi. Možete odrediti koje signale želite pratiti tijekom vremena, a razvojno okruženje će generirati dodatni sklop logičkog analizatora koji se postavlja na čip pored vašeg dizajnerskog kola, povezuje se sa signalima od interesa i pohranjuje njihove vrijednosti tijekom vremena. Sačuvani vremenski dijagrami željenih signala mogu se preuzeti na računar i analizirati.

IMPLEMENTACIJA FPGA PROJEKTA

Nakon što se razradi logičko kolo korištenjem funkcionalnog modeliranja, potrebno ga je postaviti na čip. Zatim, simulirajte kolo uzimajući u obzir stvarna kašnjenja elemenata dobijenih nakon postavljanja kola na čip. Ako je potrebno, ispravite rezultirajuća rješenja. Nakon toga, sklop se učitava u FPGA i testira na postolju.

Rice. 82. Faze projektovanja digitalnog uređaja na FPGA

Glavne faze projektovanja na FPGA (iz predavanja):

    Dijagram uređaja se razvija i unosi u XILINX.

    Izvodi se IMPLEMENTACIJA (translacija, formiranje kola izdvajanjem elemenata biblioteke, optimizacija, postavljanje na čip).

    Programiranje.

  1. asocijativno pamćenje. Organizacija, metoda uzorkovanja, razlike u memoriji adresa.

Asocijativni pristup implementira pretragu informacija po nekom atributu, a ne prema njihovoj lokaciji u memoriji (adresi ili mjestu u redu). U najkompletnijoj verziji, sve riječi pohranjene u memoriji se istovremeno provjeravaju da li su usklađene s nekom karakteristikom, na primjer, za podudaranje određenih polja riječi (tagova - od engleske riječi tag) sa značajkom specificiranom ulaznom riječi (adresa oznake) . Na izlazu su date riječi koje zadovoljavaju atribut. Disciplina izdavanja riječi, ako više riječi zadovoljava oznaku, kao i disciplina pisanja novih podataka, može biti različita. Glavno područje primjene asocijativne memorije u modernim računalima je keširanje podataka.

U asocijativnim uređajima za skladištenje, informacije se traže pomoću asocijativnog svojstva snimljenog u svakoj memorijskoj ćeliji.

Riječ se upisuje u registar maske koji omogućava upit za sve ili samo neke znamenke asocijativnog svojstva, upotreba maske vam omogućava da smanjite ili proširite područje pretraživanja.

Informacije se traže paralelno za sve ćelije upoređivanjem upita sa asocijativnim svojstvom svake ćelije.

Rezultat pretraživanja generira se posebnim kombinacijskim krugom koji generira signale koji ukazuju na odsustvo riječi koje ispunjavaju uvjete pretraživanja, prisutnost samo jedne riječi, prisustvo nekoliko riječi s takvim asocijativnim svojstvom.

Nakon formiranja i obrade signala upozorenja, upravljački krug čita potrebne informacije. Prilikom pisanja, slobodna ćelija se traži po vrijednosti bita zauzetosti, informacija se upisuje u prvu pronađenu slobodnu ćeliju.

Provjera bita zauzetosti vrši se postavljanjem n-tog bita (bita zauzetosti) maske. Kada koristite dodatna kombinaciona kola u asocijativnoj memoriji, možete izvoditi različite logičke operacije, određivanje maksimalnog ili minimalnog broja, broja reči koje imaju istu asocijativnu osobinu itd. Memorijske ćelije asocijativnog uređaja za pohranu moraju biti elementi statičke memorije; u asocijativnoj memoriji, svim ćelijama se pristupa istovremeno i ne smiju se prekidati ciklusima osvježavanja. Asocijativna memorija je najbrža, ali vrlo skupa, jer zahtijeva uvođenje dodatnog kruga za poređenje koji vam omogućava da pretražujete svaku memorijsku ćeliju. Stoga se takva memorija obično ne koristi u svom čistom obliku, a uređaji keš memorije velike brzine obično se implementiraju kao djelomično asocijativni.

ATpotpuno asocijativno keš memorija (FACM, Fully Associated Cache Memory), svaka ćelija pohranjuje podatke, au polju "tag" - punu fizičku adresu informacije, čija se kopija snima. Tokom bilo koje razmjene, fizička adresa tražene informacije se upoređuje sa poljima "tag" svih ćelija, a ako se poklapaju, signal Hit se postavlja u bilo koju ćeliju.

Prilikom očitavanja i vrijednosti signala Hit = 1, podaci se izdaju na sabirnicu podataka, ali ako nema podudaranja (Hit = 0), tada se pri čitanju iz glavne memorije podaci, zajedno sa adresom, smješten u slobodnu ili najnekorišteniju ćeliju keša.

Prilikom pisanja, podaci se, zajedno sa adresom, po pravilu prvo stavljaju u keš memoriju (u detektovanu ćeliju pri Hit = 1 i slobodnu pri Hit = 0). Kopiranje podataka u glavnu memoriju vrši se pod kontrolom posebnog kontrolera kada nema pristupa memoriji.

Memorija tipa FACM je vrlo složen uređaj i koristi se samo za male kapacitete, uglavnom u posebnim aplikacijama. Istovremeno, ovaj tip keša pruža najveću funkcionalnu fleksibilnost i beskonfliktnost adresa, budući da se bilo koja jedinica informacija može učitati u bilo koju ćeliju keša.

Sa predavanja:

Asocijativni uređaji za skladištenje

Osnovna razlika je u tome što se sistem za izvlačenje informacija iz njih ne odvija po jedinstvenoj adresi za pronalaženje informacija, već po nekom znaku, koji je, zapravo, dio informacije koja se traži.

Informacije

Oznaka je distinktivna karakteristika kojom se slučajno dobija informacija.

Pojednostavljena shema asocijativnog pamćenja:

Područje za pohranu je adresabilna memorija s numeriranim ćelijama koja pohranjuje informacije i oznake.

Za pristup asocijativnoj memoriji, uzorak željene oznake stavlja se u registar zahtjeva. Šema poređenja uspoređuje upit. Podudaranje se uspostavlja na registru podudaranja gdje se memorijska oznaka poklapa sa šablonom. Reakcije su moguće (nema podudaranja; postoji barem jedno podudaranje - u ovom slučaju pronađena ćelija se stavlja u registar podataka; višestruko podudaranje - COP mora odlučiti koju će od ćelija dobiti za obradu).

Aplikacija: baza podataka, baza znanja, PC kao keš.

KORIŠĆENJE FPGA U MODERNIM UREĐAJIMA

Tupikov Pavel Andrejevič

Student 5. godine Odsjeka za umjetnost OmSTU, Ruska Federacija, Omsk

Danas se programibilna logička integrirana kola (FPGA) sve više koriste u raznim modernim uređajima, to je zbog činjenice da FPGA imaju značajne prednosti u odnosu na konvencionalna digitalna mikro kola. Ove prednosti uključuju:

· Poboljšane performanse proizvoda.

· Cijena proizvoda je snižena.

Smanjene dimenzije proizvoda.

Povećava se pouzdanost proizvoda (smanjuje se broj diskretnih mikro krugova)

Povećava se fleksibilnost proizvoda (FPGA se uvijek može reprogramirati)

Arhitektura FPGA ima složenu strukturu (slika 1)

Slika 1. Unutrašnja struktura FPGA

Kao što se može vidjeti sa slike 1, glavni dio FPGA se sastoji od programabilnih logičkih blokova i programabilnih internih veza.

Sam proces programiranja (firmware) FPGA sastoji se u formiranju potrebnih veza između ulaza i izlaza uređaja.

Do danas postoje dva svjetska lidera u proizvodnji FPGA u svijetu. Riječ je o američkim firmama Xilinx i Altera.

Svaka kompanija nudi sopstveni CAD za rad sa FPGA. Xilinx nudi Xilinx Software Development Kit (SDK). Altera nudi Max+Plus II i Quartus II, kao i ModelSim simulacijski sistem.

Za kreiranje firmverskih programa obično se koriste jezici za opisivanje rada opreme, a danas su najčešći sljedeći jezici:

Verilog HDL.

VHDL je najteži jezik za učenje, ali jeste najveće mogućnosti na funkcionalnom i bihevioralnom nivou apstrakcije, ali ima manje mogućnosti na strukturnom nivou apstrakcije u poređenju sa Verilog HDL, VITAL biblioteka je razvijena da proširi mogućnosti VHDL jezika (slika 2).


Slika 2. Slojevi apstrakcije Verilog i VHDL

Primjer rada Verilog HDL jezika je program implementiran na CYCLONE III EP3C5E1444C8N FPGA Mini-DiLab postolja, čiji je opći prikaz prikazan na sl. 3.


Slika 3. Opšti pogled na ploču Mini - DiLab

Ovaj program implementira sekvencijalno prebacivanje led0-led7 LED dioda, sa izborom dodavanja „svjetlosnog“ pokreta pomoću pba i pbb dugmadi, kao i kontrolu brzine prebacivanja pomoću prekidača sw0, sw1.

//Tekst programa

modul projekat( izlaz LED, unos clk_25mhz, unos pba, unos pbb,

unos sw);

// Odredište internih veza projekta

žica s1;

žica s2;

žica s3;

// Pozivanje drugih datoteka (potprograma) povezanih s projektom

Tr tr_1 (.out(s2), .set(pba), .res(pbb));

Brojač brojač_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .load(sw));

Dc3_8 dc3_8_1 (.out(led), .in(s3));

endmodule// kraj programa

Podprogram tr

modul tr(out, set, res); // Kreiraj program

// I/O dodjela

izlazreg out;

unos set;

unos res;

// inicijalizacija

početni

početi

van<= 1"d0;

// Glavni programski kod

uvijek @(negedge set ili negedge res)

početi

ako(~(set))

van<= 1"d1;

ostalo

van<= 1"d0;

endmodule // Kraj programa

Brojač potprograma

modul brojač(con, q, clk, up); // Početak programa

izlazreg con;

izlaz q = con;

unos gore, clk;

// Glavni programski kod

uvijek @(posedge clk)

početi

ako(clk)

ako(gore)

Con<= con - 1"d1;

ostalo

Con<= con + 1"d1;

endmodule// Kraj programa

Podprogram mx (multiplekser)

modul mx( izlaz.reg a, unos u, unos opterećenje);

// Glavni programski kod

uvijek @*

početi

slučaj(opterećenje)

2"b00: a = in;

2"b01: a = in;

2"b10: a = in;

2"b11: a = in;

endcase

endmodule // Kraj programa

Potprogram dc3_8 (multiplekser)

modul dc3_8(out, in); // Početak programa

// I/O dodjela

izlaz.reg out;

ulazna žica in;

// Glavni programski kod

uvijek @*

početi

slučaj(u)

3"d0: izlaz = 8"b11111110;

3"d1: izlaz = 8"b11111101;

3"d2: izlaz = 8"b11111011;

3"d3: izlaz = 8"b11110111;

3"d4: izlaz = 8"b11101111;

3"d5: izlaz = 8"b11011111;

3"d6: izlaz = 8"b10111111;

3"d7: izlaz = 8"b01111111;

endcase

endmodule // Kraj programa

Program je implementiran u CAD Quartus II.

Nakon kompajliranja programa, kompajler nije generisao nikakve greške ili primedbe u programu u vezi sa analizom i sintaksom programa (slika 4).


Slika 4. Prozor poruke projekta

Napomene kompajlera ukazuju na nepostojanje licence za Quartus II (besplatna verzija programa je korištena za obuku) i nepostojanje datoteka potrebnih za modeliranje projekta.

RTL Struktura ovog projekta prikazana je na sl. pet.


Slika 5. Implementacija projekta ( RTL struktura)

Kao što je prikazano na sl. 6 u ovom programu se koristi samo mali dio mogućnosti ovog FPGA.

Slika 6. Dio FPGA uključenog u projekat

Nalazi: Programabilna logička integrirana kola se koriste u mnogim uređajima. Da biste naučili kako raditi s njima, potrebno je u obrazovni program uvesti specijalnosti vezane za projektovanje i konstrukciju radioelektronske opreme poznavanje jezika opisa hardvera (Verilog HDL i VHDL).

Bibliografija:

1. Grushevitzky R.I. Projektovanje sistema na bazi mikrokola programske logike / R.I. Grushevitzky, A.X. Mursaev, E.P. Gloomy. Sankt Peterburg: BHV Petersburg, 2002. - 608 str.

2. Kolomov D.A. Sistemi kompjuterski potpomognutog dizajna iz Altra MAX+plus II i Quartusa II. Kratak opis i tutorijal / D.A. Kolomov, R.A. Myalk, A.A. Zobenko, A.S. Filippov. M.: IP RadioSoft, 2002. - 126 str.

3. Maxfield K. FPGA dizajn. Kurs mladog borca. / K. Maxfield. M.: Izdavačka kuća "Dodeka-XXI", 2007. - 408 str. (prevod sa engleskog).

Dok su bili praznici, napravio sam mali projekat na Verilogu, koji sam dugo želeo da isprobam.

Suština projekta je sljedeća: brzi (relativno, naravno) ADC sa dva kanala i paralelnim interfejsom (14-16 bita po kanalu) je povezan na FPGA. FPGA čita podatke iz ADC-a i pohranjuje ih u bafer (svoju internu BRAM memoriju). Kada je bafer pun, očitavanje se zaustavlja i eksterni uređaj (mikrokontroler) može čitati podatke iz bafera preko SPI interfejsa. Također možete konfigurirati neke parametre putem SPI-a (o tome će biti riječi u sljedećem postu).

Test projekta (slika na koju se može kliknuti).

Rezultat sinteze za Cyclone IVE

Rezultat sam sintetizovao u Quartusu II, za FPGA iz porodice Cyclone IVE (EP4CE6E22A7). Ovo je jedan od najjednostavnijih i najjeftinijih FPGA u paketu QFP144 za 6272 logička elementa. Čip ima kapacitet memorije od 30K * 9 bita. Korisničke igle - 92.

čip EP4CE6E22A7
logički elementi - 301 (5%)
igle - 41 (45%)
memorija - 65536 bita (24%)
frekvencija u najgorem slučaju (125 C) - 151 MHz.

Memorija 8 KB, ovo je zapravo bafer u koji se upisuju podaci. Sa dva kanala od 16 bita, ispada 32 bita po uzorku i 2048 uzoraka. Odlučio sam da će to biti dovoljno, iako se bafer može proširiti čak i na cijeli volumen.

Frekvencija je sasvim zadovoljavajuća, očekivao sam da će biti frekvencija takta od 50 MHz, a ADC na 25 MHz. To jest, dobija se trostruka margina frekvencije.

Broj logičkih elemenata je prilično beznačajan za takav FPGA, tj. možete, ako želite, tu zakačiti još puno stvari, pogotovo što je ostalo čak 51 igla.

Postoji novija porodica Cyclone 10.

Rezultat sinteze za Cyclone 10

Odabiremo čip 10CL006YE144C8G. Ima isti broj kapija (6272) kao Cyclone 4 verzija i istu količinu memorije (30K x 9). Kućište je isto kao i QFP144, ima još manje korisničkih pinova - 89.

čip 10CL006YE144C8G
logički elementi - 289 (5%)
igle - 41 (46%)
memorija - 65536 bita (24%)
frekvencija u najgorem slučaju (85 C) je 145,5 MHz.

Zanimljivo je da je projekat postao kompaktniji u smislu logičkih elemenata. Odnosno, sa istim logičkim kapacitetom, složeniji projekat će se uklopiti u Ciklon 10. Sve ostalo je otprilike na istom nivou.

Postavlja se razumno pitanje: da li je moguće uštedjeti novac instaliranjem drugog FPGA ili CPLD-a?

Hajde da probamo FPGA MAX10.

Rezultat sinteze za MAX 10

Ovdje čitalac (ako je u temi) može uzviknuti: ne, nije tako! MAX porodica je CPLD, a ne FPGA, a brkanje ovih koncepata je očigledan neprofesionalizam!

Međutim, zahvaljujući naporima Intelovih marketinških stručnjaka (da li svi znaju da je riječ o Intel čipovima?), MAX10 porodica se pretvorila u FPGA, iako ima internu nepromjenjivu konfiguracijsku memoriju, kao i svaki CPLD.

Dakle, biramo čip, na primjer, 10M02SCE144A7G (2304 LE, 101 GPIO, 12Kx9 BRAM), QFP144 paket.

čip 10M02SCE144A7G.
logički elementi - 298 (13%)
igle - 41 (41%)
memorija - 65536 bita (59%)
frekvencija u najgorem slučaju (125 C) - 153 MHz.

Vidimo da su apsolutni pokazatelji ostali praktički isti, samo se povećao stepen kristalnog punjenja, što je i razumljivo - 2304LE naspram 6272 LE.

Može li se MAX II koristiti?

Sada se postavlja pitanje: da li je moguće koristiti neki vrlo jeftin CPLD, kao što je MAX II? Ovdje je sve komplikovanije. Nemaju BRAM memoriju, tj. također će vam trebati eksterni brzi SRAM.

Za povezivanje SRAM-a biće potrebna dodatna logika, naravno. Ako koristimo 4K x 16 memoriju, tada će nam trebati dodatnih 16 pinova za podatke, 12 za adresu i 3 za kontrolu (/cs, /we, /oe), za ukupno 31 dodatni pin.

Logika će se također povećati. Teško je tačno reći koliko, ali u početku neće stati u CPLD na 240 LE, ali možda će stati u 570 LE.

Mi biramo CPLD EPM570 u paketu QFP100. Trebaju nam samo 72 pina, kućište ima 76 pinova za GPIO, tj. trebalo bi da bude dovoljno za sve, ali već sada ima jako malo prostora za proširenje.

Prednosti ovog rješenja: moguće niža cijena (čak i sa dodatnim SRAM čipom), nedostaci: veća složenost kola i površine ploče.

Cijena izdanja

Evo šta sam pronašao koristeći efind. Mikro kola se malo razlikuju, ali broj i slovo na kraju su indeks performansi i temperaturni raspon (komercijalno). Budući da imamo trostruku marginu u učestalosti, ove brojke nam apsolutno nisu važne.

EP4CE6E22C8N - 456.55 R (Promelectronics, EKB, maloprodaja)
10CL006YE144C - 754,71 (Peti element, Sankt Peterburg, veleprodaja)
10M02SCE144C8G - 456 R (Elitan, Ekb, veleprodaja)
EPM570F100C5N - 368 R (Hitech, St. Petersburg) + memorija (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) - 92,51 R (industrijska elektronika, EKB, maloprodaja)

Naravno, možete naći i jeftinije, to su samo maloprodajne cijene u trgovini, ali će omjer biti otprilike isti.

Može se vidjeti da CPLD opcija ni na koji način ne pobjeđuje u cijeni, a ima mnogo nedostataka. Ostale opcije su otprilike ekvivalentne, osim što je Cyclone 10 još uvijek malo skuplji i malo ljudi ga ima na lageru. Međutim, riječ je o potpuno novoj porodici, do sada je nisu donijeli svi distributeri.

Lično, meni se najviše sviđa opcija MAX 10. Ima jednu prednost: nema potrebe za učitavanjem FPGA konfiguracije pri pokretanju. U varijanti Cyclone 4, morat ćete učitati FPGA konfiguraciju, što se može učiniti pomoću dodatnog konfiguracijskog memorijskog čipa ili pomoću mikrokontrolera. Postoji i treća opcija: flešujte preko JTAG-a i nikada ne isključite napajanje iz čipa. Čuo sam da je neko ovo uradio, ne znam da li je šala ili ne, ali ja to sigurno neću uraditi.

Međutim, varijanta sa Cyclone 4 firmverom preko mikrokontrolera ima prednost: mogućnost ažuriranja FPGA firmvera preko korisničkih interfejsa: USB, Ethernet, itd.

Moguća je još jedna netrivijalna opcija: uopće nemojte instalirati mikrokontroler, već ubaciti neki ugrađeni procesor u FPGA. Ali ovo možda nije baš dobra opcija, jer. ovo će svakako zahtijevati eksterni ROM i RAM, kao i barem USB most. Ovu opciju, naravno, nije potrebno namjerno odbiti, ali čini mi se da je teže implementirati nego s mikrokontrolerom.

O tome koje funkcije ovaj firmver obavlja, pisat ću u sljedećem postu.

U članku se pokušava utvrditi sastav prateće dokumentacije za razvijene digitalne module za programabilna logička integrirana kola (FPGA). Ovu prateću dokumentaciju programeri moraju dostaviti potrošaču/kupcu za uspješno daljnje korištenje razvijenog digitalnog modula u svojim projektima u fazi projektovanja digitalnih uređaja na FPGA.

Uvod

Dakle, kakvu projektnu dokumentaciju treba tražiti od programera ako će kompanija ili preduzeće-kupac ili neki drugi programer u budućnosti koristiti „strani“ razvijen uređaj u svojim projektima? Ovaj članak može poslužiti kao "cheat sheet" kako bi se prvo ispravno izdali projektni zadaci za razvoj digitalnog uređaja za FPGA, a zatim zatražili od programera projektnu dokumentaciju za već razvijeni digitalni uređaj. Na osnovu prethodnog iskustva sa projektnom dokumentacijom, preduzeće ili firma obično koristi sledeće standarde i propise:

  • GOST 2.102-68 ESKD. Vrste i kompletnost projektne dokumentacije.
  • GOST 15.101-98. Sistem za razvoj i proizvodnju proizvoda. Postupak za obavljanje istraživačkog rada.
  • GOST R 15.201-20-00. Sistem za razvoj i proizvodnju proizvoda. Proizvodi za industrijske i tehničke svrhe. Postupak razvoja i proizvodnje proizvoda.

Po pravilu, to su bili firmver fajl i program (opis digitalnog uređaja u VHDL/Verilog ili skup digitalnih kola razvijenih u uređivaču kola koristeći elemente digitalne logičke biblioteke, kao što su flip-flops, registri, brojači, dekoderi, itd.) na CD-u ili DVD-u i uputstva za programiranje. I to je to.

Autor se, na primjer, suočio sa sljedećim problemom. Jedan od zaposlenih razvio je složen multimodulni digitalni uređaj. Opisao sam sve module u VHDL-u, i pogledao ciklograme rada ovih modula i digitalnog uređaja u cjelini na dobrom i skupom osciloskopu. Nije znao za fajlove Test Bench-a i za mogućnost izvođenja simulacija ili nije znao kako ih napisati, inače, također nije bilo komentara na projekat i na opise modula. Situacija može biti još gora ako su moduli predstavljeni digitalnim sklopovima dizajniranim u uređivaču shema koristeći elemente biblioteke. Upravo tu leži jedan od glavnih nedostataka: osim samog programera, malo je vjerovatno da će itko drugi razumjeti ovaj digitalni uređaj, pogotovo ako je projekt višemodulan, a opis svakog modula ima više od 100 linija ili više od jednog ekrana monitora. Dakle, ako drugi programer želi uvesti tako već razvijeni digitalni uređaj za FPGA u novi razvoj ili projekat, on opet mora potrošiti vrijeme na razvoj ovog digitalnog uređaja.

Istorija problema dizajna za FPGA

Trenutno je tržište FPGA jedno od najdinamičnijih u razvoju. FPGA se koriste u mnogim granama tehnologije. Trenutno ne postoji jednoznačna metodologija koja zadovoljava sve programere hardvera za dobijanje FPGA konfiguracije iz funkcionalnog modela uređaja na nivou sistema. Najpopularniji pristup rješavanju ovog problema je korištenje IP-core tehnologije (Intellectual Property Cores). IP jezgre su gotove komponente koje vam omogućavaju da ih lako uključite u svoj projekat kako biste kreirali složeniji sistem. Ovaj pristup ima jedan značajan nedostatak - vezivanje IP-jezgara za elementarnu osnovu. Svaka IP jezgra je optimizirana za određenu seriju čipova određenog proizvođača, što značajno umanjuje mogućnost prijenosa već kreiranih uređaja s jedne baze elemenata na drugu. Zatvorena priroda komercijalnih CAD arhitektura onemogućava dodavanje sopstvenih funkcionalnih modela uređaja na nivou sistema da bi se na njihovoj osnovi dobili modeli uređaja na nivou prenosa registra (RTL). Razvoj digitalnog modula se izvodi u obliku digitalnog kola nacrtanog u uređivaču kola koristeći proizvođačevu ugrađenu CAD biblioteku osnovnih elemenata kola, kao što su flip-flops, dekoderi, brojači, sabirači itd.

Još jedan popularan pristup koji omogućava prelazak sa funkcionalnog modela na nivou sistema na model uređaja na nivou prenosa registra je upotreba jezika dizajna na nivou sistema (SLDL). Takvi jezici uključuju SystemC, Handel-C, VHDL, Verilog, System Verilog. Glavna prednost je nezavisnost od hardverske osnove u kojoj će uređaj biti implementiran.

Dakle, s jedne strane, kada se koristi IP-core tehnologija, programer hardvera dobija visokokvalitetno rješenje, ali striktno vezano za hardversku osnovu u kojoj je uređaj implementiran. S druge strane, kada se koriste jezici za opis hardvera na nivou sistema, implementacija uređaja je neovisna o hardveru. Iz navedenog proizilazi da je trenutno važno koristiti zajedničku upotrebu digitalnih modula u jeziku opisa hardvera i IP jezgri proizvođača (Xilinx, Altera, Actel, itd.) i programera trećih strana za ubrzanje proces projektovanja digitalnih modula. Prilikom korištenja digitalnih modula trećih proizvođača, ponekad postoji nedostatak informacija u pratećoj dokumentaciji.

Pružanje informacija o razvijenom digitalnom modulu za FPGA

U zavisnosti od metodologije za dobijanje FPGA konfiguracije prema funkcionalnom modelu uređaja na nivou sistema, programer može razlikovati sledeće tipove digitalnih modula za FPGA:

  • Softver - razvijen digitalni modul, koji se prenosi do potrošača u obliku opisa na jeziku opisa hardvera (VHDL, Verilog) ili/i razvijen u Schematic Editor-u za dalju upotrebu u programima za automatsku sintezu logičkih kola i optimizovan u smislu funkcionalni parametri.
  • Firmware - digitalni modul razvijen od strane razvojne kompanije treće strane, koji se zove IP jezgro, prenosi se do potrošača u obliku logičkog kola (netlist) zasnovanog na biblioteci logičkih elemenata proizvođača FPGA i optimiziran u smislu funkcionalnosti i električnih parametara.

U fazi izrade dokumentacije, na osnovu ličnog iskustva, potrebno je izdati, pored uobičajene projektne dokumentacije i specifikacije, izvedene u skladu sa GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114, dokumentaciju za sve vrste modela (sistem, logika, kola) kreirani u fazama projektovanja digitalnih uređaja na FPGA.

Drugim riječima, komplet projektne dokumentacije za digitalni uređaj za FPGA, pored fajla firmvera, instrukcija za programiranje i projekta snimljenog na CD/DVD-u, treba da sadrži i prateću dokumentaciju.

Table. Spisak odeljaka prateće dokumentacije

Naziv sekcije Pogled
Softver Firmware
Opće informacije
Svrha i obim O R
Specifikacije O O
Opis signala resetovanja O O
Opis signala sinhronizacije O O
Opis interfejsa O R
Vremenski dijagrami R O
Opis kontrolnih registara O O
Strukturni (funkcionalni) dijagram R R
Vodič za programiranje O O
FPGA model ili porodica,
proizvodna firma
R O
Prezentacija digitalnog modula
za logički dizajn na FPGA
RTL model O Ne
Logički model Ne O
Granice dizajna O O

Evo liste odjeljaka (tabela) koje treba uključiti u prateću dokumentaciju projekta digitalnog modula za FPGA. Za svaki odjeljak prikazani su znakovi potrebe da se odjeljak uključi u set dokumenata:

  • "O" - obavezna isporučena sekcija;
  • "R" - odjeljak koji se preporučuje za isporuku.

Preporučeni formati datoteka za dostavljanje prateće dokumentacije su MS Word, PDF (najbolji format), HTML. Datoteke opisa na jeziku opisa hardvera (VHDL, Verilog) i/ili one koje su razvijene u uređivaču shema daju se prema zahtjevima CAD softvera za dizajn. Izuzetak može biti dodatna odredba u grafičkom formatu (JPEG, BMP) datoteka digitalnih kola razvijenih u uređivaču shema.

Opće informacije

Ovaj odjeljak opisuje opće informacije o razvijenom digitalnom modulu u obliku opisa:

  • funkcionalni dijagram i njegovi sastavni blokovi/dijelovi;
  • reset signali, sinhronizacija;
  • primijenjeni interfejsi;
  • kontrolni registri;
  • vremenski dijagram;
  • programiranje.

Svrha i obim

Određuje se svrha digitalnog modula, obim njegove primjene.

Specifikacije

Dat je opis njegovih glavnih tehničkih karakteristika, kao što su performanse, potrošnja energije za određeni FPGA čip, broj zauzetih kapija, tip korištenog FPGA čipa. Dodatno, naznačen je proizvođač FPGA koji je koristio u razvoju digitalnog CAD modula i softver korišten za modeliranje i verifikaciju. Za sve korišćene programe, naznačena je verzija i instalirana ažuriranja. Dat je grafički prikaz digitalnog modula u obliku „crne kutije“ sa oznakom eksternih ulaza/izlaza i dat je kratak opis njihove namjene.

Opis signala resetovanja

Date su detaljne informacije o signalima resetiranja:

  • Lista eksternih i internih signala resetovanja.
  • Vremenski parametri i vremenski dijagrami resetnih signala.
  • Krugovi za generiranje internih signala resetiranja, ako ih ima, uključeni su u digitalni modul.
  • Odnosi sa drugim signalima (posebno signalima sinhronizacije).

Opis signala sinhronizacije

Date su detaljne informacije o signalima sinhronizacije:

  • opis eksternih sinhronizacionih signala;
  • vremenski parametri sinkronizacijskih signala;
  • opis internih sinhronizacionih signala i šeme njihovog formiranja;
  • vremenski odnosi između sinkronizacijskih signala iz različitih izvora;

Opis interfejsa

Date su karakteristike upotrebe svih interfejsa koji su deo razvijenog digitalnog modula, po mogućnosti objedinjeni za organizovanje interakcije sa drugim čvorovima sistema na čipu. Dodatno je obezbeđena internet veza do kompletnog opisa standardnog interfejsa, ili je obezbeđen opis samog interfejsa. Trenutno su interfejsi za AMBA, PLB, Wishbone sabirnicu prihvaćeni kao objedinjeni interfejsi za digitalne module.

Vremenski dijagrami

Daju se potrebne informacije za organizaciju razmjene podataka preko interfejsa i drugih ulaza/izlaza digitalnog modula: grafički prikaz vremenskih dijagrama, opis protokola prijenosa podataka, zahtjevi za eksterne signale koji se primjenjuju na digitalni modul (trajanje, frekvencija, itd.) , i druge informacije .

Opis kontrolnih registara

Dat je opis svih kontrolnih registara digitalnog modula. Tipičan opis kontrolnog registra sadrži ime registra, adresu registra u internom adresnom prostoru, početnu vrijednost nakon uklanjanja signala resetiranja, vrstu pristupa (čitanje/pisanje), opis internog polja.

Strukturni (funkcionalni) dijagram

Daje se slika unutrašnje strukture veza glavnih internih čvorova/blokova digitalnog modula, kao i njihov kratak tekstualni opis. Dodatno je dat opis glavnih internih blokova digitalnog modula. Svrha ovog dokumenta je da potrošaču pruži informacije potrebne za razumijevanje principa rada digitalnog modula.

Broj opisanih blokova i obim opisa određuje programer digitalnog modula. Poželjno je da minimalni broj opisanih modula odgovara broju elemenata strukturnog (funkcionalnog) dijagrama digitalnog modula.

Tipičan opis unutrašnje jedinice sadrži:

  • blok dodjela;
  • strukturni (funkcionalni) blok dijagram (ako je potrebno);
  • načini rada i algoritmi;
  • vremenski raspored rada;
  • organizacija upravljanja jedinicom;
  • organizacija komunikacije sa drugim blokovima;
  • bilo koje druge informacije.

Vodič za programiranje

Pruža sve potrebne informacije o procesu programiranja koristeći CAD proizvođača digitalnog modula u FPGA, potrebne alate za razvoj i otklanjanje grešaka softvera i softverske biblioteke.

FPGA model ili porodica, proizvođač

Za firmver digitalnog modula, naznačen je proizvođač FPGA, model ili familija FPGA i njegove karakteristike brzine. Za softverski digitalni modul, date su informacije o količini zauzetih resursa, zahtjevima za primijenjeni FPGA.

Reprezentacija digitalnog modula za logičko projektovanje

U članku se raspravljalo o poteškoćama u korištenju "stranog" projekta na VHDL-u - nedostatak odgovarajućih smjernica za imenovanje i pisanje programa. Date su i opće upute o imenima, dobrim manirima za pisanje programa i smjernicama za sintezu. O ovim pitanjima treba što detaljnije razgovarati sa programerom ako u budućnosti planirate da sami nastavite sa razvojem ili nadogradnjom prije nego što on počne razvijati RTL model digitalnog modula na FPGA. Ovo posebno važi za tip softverskog digitalnog modula na FPGA. U istom dijelu članka opisani su opći zahtjevi za cjelokupni projekt razvijenog digitalnog modula na FPGA. Evo pitanja na koja treba obratiti pažnju prilikom izrade projektnog zadatka za razvoj digitalnog modula na FPGA, a to se posebno tiče prijenosa rezultata rada.

RTL model

Digitalni modul opisan u sintetizovanom podskupu Verilog ili VHDL jezika ili/i razvijen u Schematic Editor-u je namenjen za upotrebu u fazi sinteze FPGA logike. Isporučuje se za softver u obliku sklopljenog projekta digitalnog modula u CAD sistemu proizvođača FPGA. Za digitalni modul firmvera, RTL model je predviđen posebnim ugovorom.

Pored datoteka RTL modela, prenose se sljedeće:

  • Upute za korištenje modela.
  • Opis memorijskih blokova uključenih u model, uključujući tip memorije, veličinu, broj memorijskih blokova, hijerarhijski naziv memorijskog bloka.
  • Opisuje kako kreirati unaprijed izgrađene kernele kada koristite programe za njihovo kreiranje (na primjer, CoreGenerator za Xilinx ISE). U nedostatku opisa, mogu postojati ograničenja za redizajn i primjenu zbog tehnologije i ovisnosti o proizvođaču.
  • U slučaju korištenja mikroprocesora proizvođača (na primjer, od Altera - Nios procesora; od Xilinx - Microblaze, PowerPC mikroprocesora), potreban je opis procesa konfiguracije jezgre procesora i njegove periferije.
  • Skup testova (Test Bench fajlovi) za verifikaciju i simulaciju digitalnog modula napisanog u Verilog ili/i VHDL ili/i System Verilog.
  • Sve druge dodatne informacije.

Logički model

Model je netlist opisan korištenjem Verilog ili VHDL jezika na bazi biblioteke proizvođača FPGA i isporučuje se za firmver digitalnog modula.

Pored datoteka logičkog modela, prenose se sljedeće:

  • Upute za korištenje ovog modela.
  • Skup testova (Test Bench fajlovi) za verifikaciju i simulaciju digitalnog modula napisanog u Verilog ili/i VHDL ili/i System Verilog.
  • Vodič za rad sa setom testova za modeliranje i verifikaciju digitalnog modula.
  • Sve druge dodatne informacije.

Granice dizajna

Ograničenja dizajna su data kao datoteka koja opisuje skup ograničenja nametnutih digitalnom modulu kada je uključen u logički model sistem-na-čipu. Ovaj skup uključuje ograničenja za signale sinhronizacije (ograničenja sata), vremenska ograničenja (vremenska ograničenja), ograničenja interakcije digitalnog modula sa drugim modulima i radne uslove digitalnog modula. Poželjni su sinopsis Design Constraints (SDC) ili CAD format proizvođača FPGA.

Primjer liste ograničenja za signale sinhronizacije:

  • vremenski dijagram (valni oblik sata);
  • nestabilnost frekvencije takta (Jitter);
  • promena faze sata;
  • trajanje vremena uključivanja (Tranziciona vremena);
  • vremenski dijagrami izvedenih signala sata (generisani talasni oblici takta);
  • bilo koje druge dodatne informacije.

Skup ograničenja za signale sinhronizacije je obavezan za softver i firmver digitalnih modula.

Primjer liste vremenskih ograničenja:

  • vrijeme pojave signala na ulazima (vrijeme dolaska na ulaze);
  • vrijeme pojave signala na izlazima (potrebna vremena na izlazima);
  • višeciklusne staze;
  • lažne staze (False paths);
  • trajanje prelaznih vremena signala podataka;
  • bilo koje druge dodatne informacije.

Zaključak

Navedeni sastav prateće dokumentacije za razvijene digitalne module za FPGA je dat dogovorom između potrošača i programera. Najčešće, programer daje samo digitalni modul, opisan u VHDL, Verilog, System Verilog i/ili razvijen u uređivaču shema. Što se tiče dodatne dokumentacije, odgovor programera najčešće je sljedeći: „Digitalni modul radi, pa ga uzmi i koristi. Nema ništa teško u opisivanju kola na jeziku hardvera: sami ćete to shvatiti.”

Po mišljenju autora, možete razumjeti bilo šta, sve ovisi o želji i utrošenom vremenu, a vrijeme utrošeno na razumijevanje "stranog" projekta na već razvijenom digitalnom modulu je direktno proporcionalno iskustvu opisivanja opreme u VHDL-u, Verilog i znanja digitalnih i mikroprocesorskih kola. To se može izbjeći ako se u početku dogovorite sa programerom oko sastava prateće dokumentacije, a zatim upotreba digitalnog modula u vašem projektu postaje lakša, a implementacija će biti brža.

Sumirajući, autor želi napomenuti da se pri formuliranju zadatka za razvoj digitalnog uređaja na FPGA treba pridržavati preporuka datih u članku, tada neće biti problema pri ponovnoj upotrebi ili nadogradnji prethodno razvijenog digitalnog uređaja. uređaj.

Književnost

  1. Denisov A. Nekoliko savjeta za dizajniranje digitalnih uređaja na VHDL za FPGA // Komponente i tehnologije. 2009. br. 12.
  2. GOST 2.102-68 ESKD. Vrste i kompletnost projektne dokumentacije.
  3. GOST 2.114-95 ESKD. Specifikacije.
  4. GOST 15.101-98. Sistem za razvoj i proizvodnju proizvoda. Postupak za obavljanje naučnoistraživačkog rada.
  5. GOST R 15.201-20-00. Sistem za razvoj i proizvodnju proizvoda. Proizvodi za industrijske i tehničke svrhe. Postupak razvoja i proizvodnje proizvoda.