Upotreba nabora u modernim uređajima. Novosti i analitički portal "vrijeme elektronike" Primjeri dizajna za velike FPGA projekte

Zamislite da će se procesor, umjesto da izvršava određeni skup instrukcija, ponovno izgraditi za svaki program i pretvoriti algoritam izravno u hardver. Upravo tako funkcioniraju FPG-ovi. U današnjem članku ću vam reći kako je to uopće moguće i predstaviti vam razne metode dizajna FPGA.

Za početak, morate razumjeti nešto o digitalnoj logici ASIC čipova, ali započeti s njima je vrlo teško i skupo, i bolje je umjesto toga početi s FPGA.

Što je FPGA?

FPGA stoji za field-programmable gate array (user-programmable gate arrays, FPGA). Općenitije, oni se nazivaju FPGA - programabilni logički integrirani krugovi.

Koristeći FPGA, možete doslovno dizajnirati digitalne mikrosklopove dok sjedite kod kuće s dostupnom pločom za otklanjanje pogrešaka na stolu i softverom za razvojne programere za nekoliko tisuća zelenih rubalja. Ali postoje i besplatne opcije. Imajte na umu: to je dizajn, a ne programiranje, jer ćemo na izlazu dobiti fizički digitalni sklop koji izvodi određeni algoritam na hardverskoj razini, a ne program za procesor.

Radi na sljedeći način. Postoji gotova tiskana pločica sa skupom sučelja koja su spojena na FPGA čip instaliran na ploči, nešto poput ove cool ploče za podatkovni centar ili ove debug ploče za obuku.

Sve dok ne konfiguriramo FPGA, unutar čipa jednostavno nema logike za obradu podataka sa sučelja, i stoga, naravno, ništa neće raditi. Ali kao rezultat dizajna, stvorit će se firmware, koji će nakon učitavanja u FPGA stvoriti digitalni sklop 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 značajka FPGA je njegova rekonfigurabilnost. Recimo da nam sada treba 100G Ethernet kontroler, a za tjedan dana ista se ploča može koristiti za implementaciju četiri neovisna 25G Ethernet sučelja.

Dva su vodeća proizvođača FPGA čipova na tržištu: dobro poznati Intel i Xilinx. Drže 58 i 42% tržišta. Osnivači Xilinxa izumili su svoj prvi FPGA čip još 1985. godine. Intel je nedavno ušao na tržište - 2015., nakon što je apsorbirao Alteru, koja je osnovana u isto vrijeme kada i Xilinx. Tehnologije Altera i Xilinx slične su na mnogo načina, kao i razvojna okruženja. Češće sam radio s proizvodima Xilinxa, pa nemojte biti iznenađeni njegovim stalnim spominjanjem u članku.

FPGA se široko koriste u raznim područjima: potrošačka elektronika, telekomunikacijska oprema, akceleratorske ploče za upotrebu u podatkovnim centrima, robotika, izrada prototipova ASIC čipova. U nastavku ću pogledati nekoliko primjera.

Također ćemo se osvrnuti na tehnologiju koja omogućuje rekonfiguraciju hardvera, upoznati se s procesom projektiranja te pogledati jednostavan primjer implementacije hardverskog brojača u Verilogu. Ako imate bilo kakvu FPGA razvojnu ploču, trebali biste je moći replicirati sami. Ako nema ploče, još uvijek se možete upoznati s Verilogom simulirajući rad kruga na računalu.

Princip rada FPGA

FPGA čip je isti prilagođeni ASIC čip, koji se sastoji od istih tranzistora od kojih se sastavljaju flip-flopovi, registri, multiplekseri i drugi logički elementi za konvencionalne sklopove. Naravno, nemoguće je promijeniti redoslijed spajanja ovih tranzistori. Ali arhitektonski, mikrosklop je izgrađen na tako pametan način da je moguće mijenjati prebacivanje signala između većih blokova: oni se zovu CLB - programabilni logički blokovi.

Također je moguće promijeniti logičku funkciju koju CLB obavlja. To je postignuto činjenicom da je cijeli čip prožet memorijskim ćelijama konfiguracije statičkog RAM-a. Svaki bit ove memorije ili kontrolira neku vrstu ključa za prebacivanje signala ili je dio tablice istinitosti logičke funkcije koju implementira CLB.

Budući da je konfiguracijska memorija izgrađena korištenjem Static RAM tehnologije, prvo, kada je FPGA uključen, čip mora biti konfiguriran, a drugo, čip se može rekonfigurirati gotovo beskonačan broj puta.

Vrlo pojednostavljena 2D struktura čipa bez konfiguracijske memorije

CLB-ovi se nalaze u sklopu preklopnika koji definira veze između ulaza i izlaza CLB-ova.

Dijagram sklopne matrice

Na svakom sjecištu vodiča nalazi se šest preklopnih sklopki kojima upravljaju vlastite konfiguracijske memorijske ćelije. Otvaranjem nekih i zatvaranjem drugih možete osigurati različito prebacivanje signala između CLB-ova.

CLB

CLB se vrlo jednostavno sastoji od bloka koji definira Booleovu funkciju iz nekoliko argumenata (naziva se Look Up Table, LUT) i okidača (flip-flop, FF). U modernim FPGA, LUT ima šest ulaza, ali slika prikazuje tri radi jednostavnosti. Izlaz LUT-a dovodi se do CLB izlaza ili asinkrono (izravno) ili sinkrono (preko FF flip-flopa koji radi na sistemskom satu).

Princip implementacije LUT-a

Zanimljivo je pogledati princip implementacije LUT-a. Neka imamo neku Booleovu funkciju y = (a & b) | ~ c . Njegov dijagram strujnog kruga i tablica istinitosti prikazani su na slici. Funkcija ima tri argumenta, pa uzima 2^3 = 8 vrijednosti. Svaki od njih odgovara vlastitoj kombinaciji ulaznih signala. Ove vrijednosti izračunava program za razvoj firmvera FPGA i zapisuje ih u posebne konfiguracijske memorijske ćelije.

Vrijednost svake ćelije šalje se na njezin ulaz izlaznog multipleksera LUT, a ulazni argumenti Booleove funkcije koriste se za odabir jedne ili druge vrijednosti funkcije. CLB je najvažniji hardverski resurs FPGA. Broj CLB-ova u modernim FPGA čipovima može varirati i ovisi o vrsti i kapacitetu čipa. Xilinx ima matrice s brojem CLB-a u rasponu od oko četiri tisuće do tri milijuna.

Uz CLB, postoji niz drugih važnih hardverskih resursa unutar FPGA. Na primjer, hardverske multiply-acumulate jedinice ili DSP jedinice. Svaki od njih može izvoditi operacije množenja i zbrajanja na 18-bitnim brojevima u svakom taktu. U vrhunskim kristalima broj DSP blokova može premašiti 6000.

Drugi resurs su blokovi Unutarnja memorija(Blokiraj 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-ovi i DSP blokovi povezani su sklopivim sklopom i obuhvaćaju cijeli čip. Međusobnim povezivanjem CLB, DSP i BRAM blokova mogu se dobiti vrlo učinkoviti sklopovi za obradu podataka.

Prednosti FPGA

Prvi FPGA čip koji je stvorio Xilinx 1985. sadržavao je samo 64 CLB-a. U to je vrijeme integracija tranzistora na čipovima bila znatno niža nego sada, a digitalni uređaji često su koristili čipove s "raspršenom logikom". Postojali su zasebni mikro krugovi za registre, brojače, multipleksere i množitelje. Pod, ispod određeni uređaj stvorili smo vlastitu tiskanu ploču na koju su ugrađeni ovi mikrosklopovi niske integracije.

Korištenje FPGA omogućilo je napuštanje ovog pristupa. Čak i 64 CLB FPGA značajno štedi prostor isprintana matična ploča, a dostupnost rekonfiguracije dodala je mogućnost ažuriranja funkcionalnosti uređaja nakon proizvodnje tijekom rada, kako kažu "na terenu" (otuda i naziv - field-programmable gate array).

Zbog činjenice da se bilo koji hardverski digitalni sklop može stvoriti unutar FPGA (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 pogreške je vrlo visoka, a pitanje logičkog testiranja je kritično. Stoga je jedna od faza razvoja, čak i prije početka rada na fizičkoj topologiji sklopa, bila njegova izrada prototipa na jednom ili više FPGA čipova.

Za razvoj ASIC-a proizvode se posebne ploče koje sadrže mnogo međusobno povezanih FPGA. Prototip mikro kruga radi na znatno nižim frekvencijama (možda deseci megaherca), ali omogućuje uštedu na identificiranju problema i grešaka.

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


Usporedba hardverskih platformi

Razmislimo o tome kako se CPU, GPU, FPGA i ASIC bitno razlikuju. CPU je univerzalan, na njemu možete pokrenuti bilo koji algoritam, najfleksibilniji je i najlakši za korištenje zahvaljujući ogromnom broju programskih jezika i razvojnih okruženja.

U isto vrijeme, zbog svestranosti i sekvencijalnog izvršavanja CPU instrukcija, performanse se smanjuju, a potrošnja energije kruga raste. To se događa jer za svaki koristan aritmetička operacija CPU izvodi mnoge dodatne operacije vezane uz čitanje uputa, premještanje podataka između registara i predmemorije i druge pomake.

S druge strane je ASIC. Na ovoj platformi je traženi algoritam ugrađen u hardver izravnim povezivanjem tranzistora; sve operacije se odnose samo na izvršavanje algoritma i ne postoji način da se on promijeni. Otuda maksimalne performanse i najmanja potrošnja energije platforme. Ali nemoguće je reprogramirati ASIC.

S desne strane CPU-a nalazi se GPU. Ovi su čipovi izvorno dizajnirani za obradu grafike, ali sada se također koriste za rudarsko računalstvo. Opća namjena. Sastoje se od tisuća malih računalnih jezgri i izvode paralelne operacije na nizu podataka.

Ako se algoritam može paralelizirati, tada GPU može postići značajno ubrzanje u usporedbi s CPU-om. S druge strane, sekvencijalni algoritmi bit će lošije implementirani, pa se platforma pokazuje manje fleksibilnom od CPU-a. Također, za razvoj za GPU morate imati posebne vještine, poznavati OpenCL ili CUDA.

Konačno, FPGA. Ova platforma kombinira učinkovitost ASIC-a s mogućnošću promjene programa. FPGA nisu univerzalni, ali postoji klasa algoritama i zadataka koji će pokazati bolje performanse na njima nego na CPU-u ili čak GPU-u. Složenost razvoja za FPGA je veća, ali novi razvojni alati smanjuju ovaj jaz.

Odlučujuća prednost FPGA je mogućnost obrade podataka čim stignu uz minimalno kašnjenje odgovora. Kao primjer, možete zamisliti pametni mrežni usmjerivač s veliki iznos portovi: Kada Ethernet paket stigne na jedan od svojih portova, prije odabira izlaznog porta moraju se provjeriti mnoga pravila. Možda ćete morati promijeniti neka polja u paketu ili dodati nova.

Korištenje FPGA omogućuje trenutno rješavanje ovog problema: bajtovi paketa tek su počeli pristizati na čip s mrežnog sučelja, a njegovo se zaglavlje već analizira. Korištenje procesora ovdje može značajno usporiti brzinu obrade mrežnog prometa. Jasno je da usmjerivači mogu imati prilagođeni ASIC koji radi najučinkovitije, ali što ako se pravila za obradu paketa moraju promijeniti? Samo FPGA mogu postići potrebnu fleksibilnost u kombinaciji s visokim performansama.

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

FPGA u oblaku

U računalstvu u oblaku, FPGA se koriste za brze izračune, ubrzanje mrežnog prometa i pristup podatkovnim nizovima. Ovo također uključuje korištenje FPGA za visokofrekventno trgovanje na burzama. FPGA ploče sa PCI Express i optičko mrežno sučelje proizvođača Intel (Altera) ili Xilinx.

FPGA su izvrsni za kriptografske algoritme, usporedbu sekvenci DNK i znanstvene zadatke poput molekularne dinamike. Microsoft već dugo koristi FPGA za ubrzavanje usluge pretraživanja Bing, kao i za organiziranje softverski definiranog umrežavanja unutar Azure oblaka.

Procvat strojnog učenja također nije poštedio FPGA. Xilinx i Intel nude alate temeljene na FPGA za rad s dubokim neuronskim mrežama. Omogućuju vam da nabavite FPGA firmware koji implementira određenu mrežu izravno iz okvira kao što su Caffe i TensorFlow.

Štoviše, sve ovo možete isprobati bez napuštanja doma i korištenja usluge u oblaku. Na primjer, možete unajmiti od Amazona virtualni stroj s pristupom FPGA ploči i svim razvojnim alatima, uključujući strojno učenje.

FPGA na rubu

Koje još zanimljive stvari rade FPGA? Zašto ništa ne rade! Robotika, samovozeći automobili, dronovi, znanstveni instrumenti, medicinska oprema, običaji Mobilni uredaji, pametne CCTV kamere i tako dalje.

Tradicionalno, FPGA su se koristili za digitalnu obradu jednodimenzionalnih signala (i natjecali su se s DSP procesorima) u radarskim uređajima, radio primopredajnicima. S povećanjem integracije čipova i performansi, FPGA platforme se sve više koriste za računalstvo visokih performansi, kao što je 2D obrada signala na rubu oblaka.

Ovaj koncept je najlakše razumjeti na primjeru prometne kamere s prepoznavanjem registarskih pločica. Možete uzeti kameru s mogućnošću prijenosa videa preko Etherneta i obraditi stream na udaljenom poslužitelju. S povećanjem broja kamera raste i opterećenje mreže, što može dovesti do kvarova sustava.

Umjesto toga, bolje je implementirati prepoznavanje registarskih pločica na računalu instaliranom izravno u kućištu video kamere i prenijeti brojeve registarskih pločica u oblak u tekstualnom formatu. Da biste to učinili, možete čak uzeti relativno jeftine FPGA s niskom potrošnjom energije kako biste zadovoljili bateriju. Istodobno, ostaje moguće promijeniti radnu logiku FPGA, na primjer, kada se mijenja standard registarske pločice.

Što se tiče robotike i bespilotnih letjelica, u ovom području posebno je važno ispuniti dva uvjeta - visoke performanse i nisku potrošnju energije. FPGA platforma je idealna i može se koristiti, posebice, za izradu kontrolera leta za dronove. Oni već proizvode bespilotne letjelice koje mogu donositi odluke u hodu.

Razvoj projekta na FPGA

Postoje različite razine dizajna: niska, blok i visoka. Niska razina uključuje korištenje jezika kao što su Verilog ili VHDL, u kojima 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 sklopovi uvijek rade na određenim brzinama takta (obično 100-300 MHz), a na RTL razini definirate ponašanje sklopa do frekvencije takta sustava. Ovaj mukotrpan rad rezultira dizajnom koji je što je moguće učinkovitiji u pogledu performansi, potrošnje resursa FPGA matrice i potrošnje energije. Ali to zahtijeva ozbiljne vještine u dizajnu sklopova, a čak i s njima proces je spor.

Na razini bloka, vi ste uglavnom angažirani u povezivanju gotovih velikih blokova koji obavljaju određene funkcije kako biste dobili funkcionalnost sustava na čipu koja vam je potrebna.

Na visokoj razini dizajna više ne kontrolirate podatke u svakom taktu, već se umjesto toga usredotočujete na algoritam. Postoje prevoditelji ili prevoditelji iz C i C++ na RTL razinu, primjerice Vivado HLS. Prilično je pametan i omogućuje vam prevođenje široke klase algoritama na hardversku razinu.

Glavna prednost ovog pristupa u odnosu na RTL jezike je ubrzanje razvoja i posebno testiranje algoritma: C++ kod se može pokrenuti i provjeriti na računalu, a to će biti mnogo brže od testiranja promjena algoritma na RTL razini. Naravno, morate platiti za praktičnost - shema možda neće biti tako brza i zauzet će više hardverskih resursa.

Često smo spremni platiti ovu cijenu: ako ispravno koristimo prevoditelj, tada učinkovitost neće mnogo patiti, a moderni FPGA imaju dovoljno resursa. U našem svijetu s kritičnim pokazateljem vremena do tržišta, to se pokazalo opravdanim.

Često morate kombinirati sva tri stila razvoja u jednom dizajnu. Recimo da trebamo napraviti uređaj koji bismo mogli ugraditi u robota i dati mu mogućnost prepoznavanja objekata u video streamu – na primjer, prometnih znakova. Uzmimo čip video senzora i spojimo ga izravno na FPGA. Za otklanjanje pogrešaka možemo koristiti hdmi monitor, također spojen na FPGA.

Okviri iz kamere će se prenijeti na FPGA preko sučelja koje je jasno definirao proizvođač senzora (USB ovdje nije koristan), obraditi i prikazati na monitoru. Za obradu okvira trebat će vam međuspremnik okvira koji se obično nalazi u vanjskom DDR memorija instaliran na tiskanoj ploči pored FPGA čipa.


Tipični blok dijagram FPGA dizajna

Ako proizvođač video senzora ne osigura IP sučelja za naš FPGA čip, tada ćemo ga morati sami napisati u RTL-u, brojeći cikluse takta, bitove i bajtove u skladu sa specifikacijom protokola za prijenos podataka. Najvjerojatnije ćemo uzeti gotove blokove Preprocess, DDR Controller i HDMI IP i jednostavno povezati njihova sučelja. I možemo napisati HLS blok, koji pretražuje i obrađuje dolazne podatke, u C++ i emitirati ga koristeći Vivado HLS.

Najvjerojatnije će nam i dalje trebati neka vrsta gotove biblioteke detektora i klasifikatora prometnih znakova, prilagođenih za korištenje u FPGA. U ovom primjeru, naravno, predstavljam vrlo pojednostavljen dijagram toka dizajna, ali on ispravno odražava logiku rada.

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

Put dizajna

Dakle, pišete RTL kod koji implementira krug koji želite. Prije testiranja na stvarnom hardveru, morate se uvjeriti da je ispravan i ispravno rješava traženi problem. Da bi se to postiglo, RTL modeliranje se koristi u simulatoru na računalu.

Uzmete svoj sklop, za sada prikazan samo u RTL kodu, i postavite ga na virtualnu klupu, gdje nanosite sekvence digitalnih signala na ulaze sklopa, snimate izlazne dijagrame, vremenske ovisnosti izlaznih signala i uspoređujete s očekivanim rezultatima. Obično pronađete pogreške i vratite se pisanju RTL-a.

Zatim se logički provjereni kod unosi kao ulaz u program sintesajzera. Pretvara tekstualni opis sklopa u povezani popis digitalnih elemenata iz biblioteke koja je dostupna za dati FPGA kalup. Ovaj popis će prikazati stavke kao što su LUT-ovi, okidači i veze između njih. U ovoj fazi elementi još nisu povezani s određenim hardverskim resursima. Da biste to učinili, morate nametnuti ograničenja na krug - posebno, odrediti na koje fizičke I/O pinove FPGA čipa su povezani logički ulazi i izlazi vašeg kruga.

Ova ograničenja također zahtijevaju da navedete na kojim brzinama takta krug mora raditi. Izlaz sintesajzera i datoteka ograničenja šalju se Implementacijskom procesoru, koji, između ostalog, rukuje mjestom i rutom.

Proces Place veže svaki još uvijek anonimni element s liste mreža na određeni element unutar FPGA čipa. Zatim počinje s radom Route proces koji pokušava pronaći optimalnu vezu ovih elemenata za odgovarajuću konfiguraciju FPGA sklopne matrice.

Place i Route rade na temelju ograničenja koja smo postavili na krug: I/O pinovi i brzina takta. Period takta ima vrlo jak utjecaj na implementaciju: ne bi trebao biti manji od vremenskog kašnjenja na logičkim vratima u kritičnom krugu između dva uzastopna flip-flopa.

Često nije moguće odmah zadovoljiti ovaj zahtjev, a zatim se morate vratiti na početnu fazu i promijeniti RTL kod: na primjer, pokušati smanjiti logiku u kritičnom lancu. Nakon što je Implementacija uspješno dovršena, znamo koji elementi idu kamo i kako su povezani.

Tek nakon toga započinje proces stvaranja binarne FPGA datoteke firmvera. Ostaje samo učitati ga u pravi hardver i provjeriti radi li kako se očekuje. Ako se problemi pojave u ovoj fazi, to znači da je modeliranje bilo nepotpuno i da sve pogreške i nedostaci nisu otklonjeni u ovoj fazi.

Možete se vratiti u fazu simulacije i simulirati hitnu situaciju, a ako to ne uspije, kao posljednje sredstvo, mehanizam za otklanjanje pogrešaka osiguran je izravno u radnom hardveru. Možete odrediti koje signale želite pratiti tijekom vremena, a okruženje dizajna će generirati dodatni sklop logičkog analizatora koji se nalazi na čipu pored vašeg dizajna, povezuje se sa signalima koji vas zanimaju i pohranjuje njihove vrijednosti tijekom vremena . Spremljeni vremenski dijagrami željenih signala mogu se preuzeti na računalo i analizirati.

IMPLEMENTACIJA PROJEKTA NA FPGA

Nakon testiranja logičkog sklopa funkcionalnim modeliranjem potrebno ga je postaviti na čip. Zatim izvršite simulaciju sklopa uzimajući u obzir stvarna kašnjenja elemenata dobivenih nakon postavljanja sklopa na čip. Ako je potrebno, prilagodite dobivena rješenja. Nakon toga se sklop učitava u FPGA i testira na stolu.

Riža. 82. Faze projektiranja digitalnog uređaja na FPGA

Glavne faze projektiranja na FPGA (iz predavanja):

    Dijagram uređaja se razvija i unosi u XILINX.

    Izvodi se IMPLEMENTACIJA (translacija, formiranje sklopa izdvajanjem elemenata knjižnice, optimizacija, postavljanje na čip).

    Programiranje.

  1. Asocijativno pamćenje. Organizacija, način uzorkovanja, razlike u odnosu na pohranu adrese.

Asocijativni pristup implementira traženje informacije na temelju neke karakteristike, a ne na temelju njezine lokacije u memoriji (adresa ili mjesto u redu čekanja). U najcjelovitijoj verziji, sve riječi pohranjene u memoriji istovremeno se provjeravaju na usklađenost sa značajkom, na primjer, na podudaranje određenih polja riječi (oznake - od engleske riječi tag) sa značajkom određenom ulaznom riječi (adresa oznake ). Ispisuju se riječi koje zadovoljavaju kriterij. Disciplina za izdavanje riječi ako više riječi zadovoljava oznaku, kao i disciplina za upisivanje novih podataka, mogu biti različite. Glavno područje primjene asocijativne memorije u modernim računalima je predmemoriranje podataka.

U asocijativnim uređajima za pohranu informacije se pretražuju prema asocijativnom obilježju zabilježenom u svakoj memorijskoj ćeliji.

U registar maske upisuje se riječ koja omogućuje upit za sve ili samo neke bitove asocijativnog atributa; korištenje maske omogućuje vam da skratite ili proširite područje pretraživanja.

Traženje informacija provodi se paralelno u svim ćelijama uspoređujući zahtjev s asocijativnim obilježjem svake ćelije.

Rezultat pretraživanja generira poseban kombinacijski krug koji generira signale koji obavještavaju o nedostatku riječi koje zadovoljavaju uvjete pretraživanja, o prisutnosti samo jedne riječi, o prisutnosti nekoliko riječi koje imaju takvo asocijativno svojstvo.

Nakon generiranja i obrade signala upozorenja, upravljački krug očitava potrebne informacije. Prilikom pisanja, slobodna ćelija se pronalazi na temelju vrijednosti bita zauzetosti, a informacija se upisuje u prvu pronađenu slobodnu ćeliju.

Znamenka zauzetosti se provjerava postavljanjem n-te znamenke (znamenka zauzetosti) maske. Kada koristite dodatne kombinacijske sklopove u asocijativnoj memoriji, možete izvoditi različite logičke operacije, određujući maksimalni ili minimalni broj, broj riječi koje imaju istu asocijativnu značajku itd. Memorijske ćelije asocijativnog uređaja za pohranu moraju biti elementi statičke memorije; u asocijativnoj memoriji se pristupa svim ćelijama istovremeno i ne smiju se prekidati ciklusima regeneracije. Asocijativna memorija je najbrža, ali vrlo skupa, jer zahtijeva uvođenje dodatnog usporednog kruga koji omogućuje pretraživanje svake memorijske ćelije. Stoga se takva memorija obično ne koristi u svom čistom obliku, a memorijski uređaji tipa cache velike brzine obično se implementiraju kao djelomično asocijativni.

Upotpuno asocijativno cache memorija (FACM, Fully Associated Cache Memory), svaka ćelija pohranjuje podatke, au polju "tag" - punu fizičku adresu informacija, čija se kopija bilježi. Tijekom bilo koje razmjene, fizička adresa traženih informacija uspoređuje se s poljima "tag" svih ćelija i ako se podudaraju, Hit signal se postavlja u bilo koju ćeliju.

Prilikom čitanja i vrijednosti signala Hit = 1, podaci se izlaze u podatkovnu sabirnicu, ali ako nema podudaranja (Hit = 0), tada se prilikom čitanja iz glavne memorije podaci zajedno s adresom smještaju u slobodnu ili posljednja neiskorištena ćelija predmemorije.

Pri upisivanju se podaci zajedno s adresom u pravilu prvo smještaju u cache memoriju (u detektiranu ćeliju s Hit = 1 i slobodnu s Hit = 0). Kopiranje podataka u glavnu memoriju vrši se pod kontrolom posebnog kontrolera kada nema pristupa memoriji.

FACM memorija je vrlo složen uređaj i koristi se samo u malim kapacitetima, uglavnom u posebnim aplikacijama. U isto vrijeme, ova vrsta cache memorije pruža najveću funkcionalnu fleksibilnost i odsutnost sukoba adresa, budući da se bilo koja jedinica informacija može učitati u bilo koju ćeliju cache memorije.

Iz predavanja:

Asocijativni uređaji za pohranu

Temeljna razlika je u tome što se sustav dohvaćanja informacija iz njih ne provodi prema jedinstvenoj adresi na kojoj se informacija nalazi, već prema određenoj karakteristici, koja je zapravo dio informacije koja se traži.

Informacija

Oznaka je razlikovno obilježje kojim se slučajno dobiva podatak.

Pojednostavljeni dijagram asocijativne memorije:

Zona pohrane je adresabilna memorija s numeriranim ćelijama koja pohranjuje informacije i oznake.

Za pristup asocijativnoj memoriji, uzorak željene oznake stavlja se u registar zahtjeva. Shema usporedbe uspoređuje upit. Podudaranje se uspostavlja na registru podudaranja gdje se oznaka iz memorije podudara s uzorkom. Reakcije su moguće (nema podudaranja; postoji najmanje jedno podudaranje - u ovom slučaju pronađena ćelija se stavlja u registar podataka; više podudaranja - CS mora odlučiti koju će ćeliju dobiti za obradu).

Primjena: baza podataka, baza znanja, PC kao predmemorija.

KORIŠTENJE FPGA U SUVREMENIM UREĐAJIMA

Tupikov Pavel Andrejevič

Student 5. godine, Odsjek za umjetnost, Omsk State Technical University, Ruska Federacija, Omsk

Danas se programabilni logički integrirani sklopovi (FPGA) sve više koriste u raznim modernim uređajima, a to je zbog činjenice da FPGA imaju značajne prednosti u odnosu na konvencionalne digitalne čipove. Te prednosti uključuju:

· Poboljšana su privremena svojstva proizvoda.

· Cijena proizvoda se smanjuje.

· Dimenzije proizvoda su smanjene.

· Povećava se pouzdanost proizvoda (smanjuje se broj diskretnih čipova)

Povećava fleksibilnost proizvoda (FPGA se uvijek mogu reprogramirati)

FPGA arhitektura ima složenu strukturu (slika 1)

Slika 1. Unutarnja struktura FPGA

Kao što se može vidjeti na slici 1, glavni dio FPGA sastoji se od programabilnih logičkih blokova i programabilnih unutarnje veze.

Proces programiranja (firmware) FPGA sastoji se od formiranja potrebnih veza između ulaza i izlaza uređaja.

Danas postoje dva svjetska lidera u proizvodnji FPGA. Riječ je o američkim tvrtkama Xilinx i Altera.

Svaka tvrtka nudi vlastiti CAD softver za rad s FPGA. Xilinx nudi Xilinx Software Development Kit (SDK). Altera nudi Max+Plus II i Quartus II, kao i ModelSim sustav modeliranja.

Za izradu firmware programa obično se koriste sljedeći jezici za opisivanje rada hardvera;

· Verilog HDL.

VHDL je najteži jezik za naučiti, ali također ima najveće mogućnosti na funkcionalnoj i bihevioralnoj razini apstrakcije, ali ima manje mogućnosti na strukturnoj razini apstrakcije u usporedbi s Verilog HDL-om, VITAL biblioteka je razvijena za proširenje mogućnosti VHDL jezika (slika 2).


Slika 2. Razine apstrakcije Verilog I VHDL

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


Slika 3. Opći pogled na ploču Mini - DiLab

Ovaj program implementira sekvencijalno prebacivanje led0-led7 LED dioda, s izborom povećanja kretanja "svjetla" pomoću gumba pba i pbb, kao i upravljanjem brzinom prebacivanja pomoću prekidača sw0, sw1.

//Tekst programa

modul projekt( izlaz vodio, ulazni clk_25mhz, ulazni pba ulazni pbb

ulazni sw);

// Svrha internih projektnih veza

žica s1;

žica s2;

žica s3;

// Poziv drugih datoteka (potprograma) povezanih s projektom

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

Brojač counter_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));

krajnji modul// kraj programa

Potprogram tr

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

// Dodjeljivanje ulaza/izlaza

izlazreg van;

ulazni postaviti;

ulazni res;

// Inicijalizacija

početni

početi

Van<= 1"d0;

// Glavni programski kod

stalno @(negedge postaviti ili negedge res)

početi

ako(~(set))

Van<= 1"d1;

drugo

Van<= 1"d0;

krajnji modul // Kraj programa

Brojač potprograma

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

izlazreg con;

izlaz q = con;

ulazni gore, clk;

// Glavni programski kod

stalno @(posedge clk)

početi

ako(clk)

ako(gore)

Con<= con - 1"d1;

drugo

Con<= con + 1"d1;

krajnji modul//Kraj programa

Potprogram mx (multiplekser)

modul mx( izlazna reg a, ulazni u, ulazni opterećenje);

// Glavni programski kod

stalno @*

početi

slučaj(opterećenje)

2"b00: a = unutra;

2"b01: a = unutra;

2"b10: a = unutra;

2"b11: a = unutra;

završni slučaj

krajnji modul // Kraj programa

Potprogram dc3_8 (multiplekser)

modul dc3_8(van, unutra); // Početak programa

// Dodjeljivanje ulaza/izlaza

izlazna reg van;

ulazna žica u;

// Glavni programski kod

stalno @*

početi

slučaj(u)

3"d0: van = 8"b11111110;

3"d1: van = 8"b11111101;

3"d2: van = 8"b11111011;

3"d3: van = 8"b11110111;

3"d4: van = 8"b11101111;

3"d5: van = 8"b11011111;

3"d6: van = 8"b10111111;

3"d7: van = 8"b01111111;

završni slučaj

krajnji modul // Kraj programa

Program je implementiran u Quartus II CAD softveru.

Nakon prevođenja programa, prevodilac nije generirao pogreške ili komentare u programu koji se odnose na analizu i sintaksu programa (slika 4).


Slika 4. Prozor s porukom projekta

Komentari kompajlera upućuju na nepostojanje licence za Quartus II (besplatna verzija programa korištena je za obuku) i nepostojanje datoteka potrebnih za modeliranje projekta.

RTL Struktura ovog projekta prikazana je na sl. 5.


Slika 5. Implementacija projekta ( RTL struktura)

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

Slika 6. Dio FPGA uključen u projekt

Zaključci: Programabilni logički integrirani krugovi mogu se koristiti u mnogim uređajima. Da biste naučili raditi s njima, poznavanje jezika opisa hardvera (Verilog HDL i VHDL) trebalo bi uvesti u obrazovni program specijalnosti koji se odnose na dizajn i konstrukciju elektroničke opreme.

Bibliografija:

1. Grushevitsky R.I. Projektiranje sustava na programskim logičkim čipovima / R.I. Grushevitsky, A.X. Mursaev, E.P. Sumoran. St. Petersburg: BHV Petersburg, 2002. - 608 str.

2. Kolomov D.A. Sustavi za računalno potpomognuto projektiranje Altra MAX+plus II i Quartus II. Kratak opis i poduka / D.A. Kolomov, R.A. Myalk, A.A. Zobenko, A.S. Filippov. M.: IP RadioSoft, 2002. - 126 str.

3. Maxfield K. Dizajn na FPGA. Tečaj za mladog borca./ K. Maxfield. M .: Izdavačka kuća "Dodeka-XXI", 2007. - 408 str. (prijevod s engleskog).

Dok su bili praznici, napravio sam mali projekt u Verilogu koji sam već dugo želio isprobati.

Bit projekta je sljedeća: na FPGA je spojen ADC velike brzine (naravno, relativno) s dva kanala i paralelnim sučeljem (14-16 bita po kanalu). FPGA čita podatke iz ADC-a i dodaje ih u međuspremnik (svoju unutarnju BRAM memoriju). Kada je međuspremnik pun, čitanje prestaje i vanjski uređaj (mikrokontroler) može čitati podatke iz međuspremnika preko SPI sučelja. Također možete konfigurirati neke parametre putem SPI (o tome će biti riječi u sljedećem postu).

Testiranje projekta (slika se može kliknuti).

Rezultat sinteze za Cyclone IVE

Rezultat sam sintetizirao u Quartus II, za FPGA iz obitelji Cyclone IVE (EP4CE6E22A7). Ovo je jedan od najjednostavnijih i najjeftinijih FPGA u QFP144 paketu sa 6272 logička elementa. Čip ima memorijski kapacitet 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 je 8 KB, ovo je stvarni međuspremnik u koji se upisuju podaci. S dva kanala od po 16 bita, rezultat je 32 bita po uzorku i 2048 uzoraka. Zaključio sam da je to sasvim dovoljno, iako se međuspremnik može proširiti barem na cijeli volumen.

Frekvencija je sasvim zadovoljavajuća, očekivao sam da će biti radni takt od 50 MHz, a ADC od 25 MHz. To jest, dobiva se trostruka margina frekvencije.

Broj logičkih elemenata je potpuno beznačajan za takav FPGA, tj. Ako želite, tu možete dodati još puno toga, pogotovo jer je ostalo još 51 igle.

Postoji novija obitelj Cyclone 10.

Rezultat sinteze za ciklon 10

Odaberite čip 10CL006YE144C8G. Ima isti broj logičkih elemenata (6272) kao i verzija na Cyclone 4, te istu količinu memorije (30K x 9). Kućište je isto, QFP144, još je 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) - 145,5 MHz.

Zanimljivo je da je projekt postao kompaktniji u smislu logičkih elemenata. To jest, s istim logičkim kapacitetom, Cyclone 10 može prihvatiti složeniji projekt. Sve ostalo je otprilike na istoj razini.

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

Probajmo FPGA MAX10.

Rezultat sinteze za MAX 10

Ovdje čitatelj (ako je upućen) može uzviknuti: ne, nije tako! Obitelj MAX je CPLD, a ne FPGA, i miješanje ovih pojmova je očito neprofesionalno!

Međutim, naporima Intelovih prodavača (svi znaju da govorimo o Intelovim čipovima?), obitelj MAX10 pretvorila se u FPGA, iako ima internu trajnu konfiguracijsku memoriju, kao i svaki CPLD.

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

mikro krug 10M02SCE144A7G.
logički elementi - 298 (13%)
igle - 41 (41%)
memorija - 65536 bita (59%)
najgora frekvencija (125 C) - 153 MHz.

Vidimo da su apsolutni pokazatelji ostali gotovo isti, samo je porastao stupanj punjenja kristala, što je razumljivo - 2304LE naspram 6272 LE.

Mogu li koristiti MAX II?

Sada je pitanje: je li moguće koristiti neki vrlo jeftini CPLD, kao što je MAX II? Ovdje je sve kompliciranije. Nemaju BRAM memoriju,tj. Trebat će vam i vanjski brzi SRAM.

Za spajanje SRAM-a trebat će vam, naravno, dodatna logika. Ako koristimo 4K x 16 memoriju, trebat će nam 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 u veličini. Teško je reći točno koliko, ali u početku neće stati u CPLD na 240 LE, ali možda će stati u 570 LE.

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

Prednosti ovog rješenja: moguća niža cijena (čak i uzimajući u obzir dodatni SRAM čip), mane: veća složenost sklopa i područja ploče.

Cijena izdavanja

Evo što sam pronašao koristeći efind. Mikro krugovi su malo drugačiji, ali broj i slovo na kraju su indeks performansi i temperaturni raspon (komercijalni). Budući da imamo trostruku rezervu frekvencije, te nam brojke apsolutno nisu važne.

EP4CE6E22C8N - 456,55 R (Promelektronika, Ekb, maloprodaja)
10CL006YE144C - 754.71 (Peti element, St. Petersburg, veleprodaja)
10M02SCE144C8G - 456 R (Elitan, Ekb, veleprodaja)
EPM570F100C5N - 368 R (Hi-tech, St. Petersburg) + memorija (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) - 92,51 R (Promelektronika, Ekb, maloprodaja)

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

Vidi se da opcija s CPLD-om nema nikakve prednosti u pogledu cijene, a ima dosta nedostataka. Ostale opcije su približno jednake, osim što je Cyclone 10 ipak malo skuplji i malo tko ga ima na zalihama. Međutim, ovo je potpuno nova obitelj; svi distributeri je još nisu donijeli.

Osobno mi se najviše sviđa opcija na MAX 10. Ima jednu prednost: ne morate učitavati FPGA konfiguraciju pri pokretanju. U verziji 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: bljeskati preko JTAG-a i nikada ne isključiti napajanje iz čipa. Čuo sam da je to netko napravio, ne znam je li šala ili ne, ali sigurno neću.

Međutim, opcija s firmverom Cyclone 4 preko mikrokontrolera ima prednost: mogućnost ažuriranja firmvera FPGA preko korisničkih sučelja: USB, Ethernet, itd.

Moguća je još jedna netrivijalna opcija: uopće nemojte instalirati mikrokontroler, već bljeskajte neku vrstu ugrađenog procesora u FPGA. Ali ovo nije baš dobra opcija, možda zato što... U ovom slučaju svakako će vam trebati vanjski ROM i RAM, kao i, barem, USB most. Nema potrebe namjerno odbijati ovu opciju, naravno, ali čini mi se da je teže implementirati nego s mikrokontrolerom.

U sljedećem postu ću pisati o funkcijama koje ovaj firmware obavlja.

U članku se pokušava odrediti sastav popratne dokumentacije za razvijene digitalne module za programabilne logičke integrirane sklopove (FPGA). Programeri moraju osigurati ovu popratnu dokumentaciju potrošaču/kupcu za uspješnu daljnju upotrebu razvijenog digitalnog modula u svojim projektima u fazi projektiranja digitalnih uređaja na FPGA.

Uvod

Dakle, koju vrstu projektne dokumentacije treba tražiti od programera ako će tvrtka ili poduzeće kupac ili drugi programer naknadno koristiti „strani“ razvijeni uređaj u svojim projektima? Ovaj članak može poslužiti kao “cheat sheet” kako bi se najprije ispravno izdale tehničke specifikacije za razvoj digitalnog uređaja za FPGA, a zatim od programera zatražiti projektna dokumentacija za već razvijen digitalni uređaj. Na temelju prethodnog iskustva u radu s projektnom dokumentacijom, poduzeće ili tvrtka obično koristi sljedeće standarde i regulatorne dokumente:

  • GOST 2.102-68 ESKD. Vrste i cjelovitost projektne dokumentacije.
  • GOST 15.101-98. Sustav za razvoj i puštanje proizvoda u proizvodnju. Postupak izvođenja istraživačkog rada.
  • GOST R 15.201-20-00. Sustav za razvoj i puštanje proizvoda u proizvodnju. Proizvodi za industrijske i tehničke namjene. Postupak razvoja i puštanja proizvoda u proizvodnju.

U pravilu su to bile datoteke firmvera i program (opis digitalnog uređaja u VHDL/Verilogu ili skup digitalnih sklopova razvijenih u uređivaču sklopova korištenjem knjižničnih elemenata digitalne logike, kao što su flip-flopovi, registri, brojači, dekoderi , itd.) na CD-u ili DVD-u i upute za programiranje. To je sve.

Autor se, primjerice, suočio sa sljedećim problemom. Jedan od zaposlenika razvio je složeni višemodulni digitalni uređaj. Sve module opisao sam u VHDL-u, te pogledao ciklograme rada tih modula i digitalnog uređaja u cjelini na dobrom i skupom osciloskopu. Nije znao za Test Bench datoteke i mogućnost provođenja simulacija ili ih nije znao napisati; usput, također nije bilo komentara na projekt i na opise modula. Situacija može biti još gora ako su moduli predstavljeni digitalnim sklopovima dizajniranim u uređivaču sklopova pomoću elemenata knjižnice. Ovdje leži jedan od glavnih nedostataka: osim samog programera, malo je vjerojatno da će itko drugi razumjeti ovaj digitalni uređaj, pogotovo ako je projekt višemodulan, a opis svakog modula ima više od 100 redaka ili više od jednog monitora zaslon. To znači da ako neki drugi programer želi uvesti takav već razvijen digitalni uređaj za FPGA u novi razvoj ili projekt, on opet mora potrošiti vrijeme na razvoj ovog digitalnog uređaja.

Povijest problema dizajna za FPGA

Trenutačno je FPGA tržište jedno od najdinamičnijih u razvoju. FPGA se koriste u mnogim industrijama. U ovom trenutku ne postoji jednoznačna metodologija koja zadovoljava sve programere hardvera za dobivanje konfiguracije FPGA na temelju funkcionalnog modela uređaja na razini sustava. Najpopularniji pristup rješavanju ovog problema je korištenje IP jezgrene tehnologije (Intellectual Property Cores). IP jezgre su gotove komponente koje olakšavaju njihovu ugradnju u vlastiti projekt za stvaranje složenijeg sustava. Ovaj pristup ima jedan značajan nedostatak - vezanost IP jezgri 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ć izrađenih uređaja iz jedne baze elemenata u drugu. Zatvorena priroda komercijalnih CAD arhitektura onemogućuje dodavanje vlastitih funkcionalnih modela uređaja na razini sustava za izvođenje modela uređaja na razini prijenosa registra (RTL) na temelju njih. Razvoj digitalnog modula provodi se u obliku digitalnog sklopa iscrtanog u uređivaču sklopova pomoću proizvođačeve ugrađene CAD biblioteke osnovnih elemenata sklopa, kao što su flip-flopovi, dekoderi, brojači, zbrajači itd.

Još jedan popularan pristup koji omogućuje prijelaz s funkcionalnog modela na razini sustava na model uređaja na razini prijenosa registra je korištenje jezika za dizajn na razini sustava (SLDL). Takvi jezici uključuju SystemC, Handel-C, VHDL, Verilog, System Verilog. Glavna prednost je neovisnost o hardverskoj bazi u kojoj će se uređaj implementirati.

Dakle, s jedne strane, korištenjem IP core tehnologije, programer hardvera dobiva visokokvalitetno rješenje, ali strogo vezano uz hardversku osnovu u koju je uređaj implementiran. S druge strane, kada se koriste jezici opisa hardvera na razini sustava, implementacija uređaja je neovisna o hardveru. Iz navedenog proizlazi da je trenutno važno zajedničko korištenje jezika opisa hardvera i IP jezgri proizvođača (Xilinx, Altera, Actel itd.) i razvojnih tvrtki trećih strana kako bi se ubrzao proces projektiranja digitalnih modula. Pri korištenju digitalnih modula trećih proizvođača ponekad nedostaju informacije u popratnoj dokumentaciji.

Pružanje informacija o razvijenom digitalnom modulu za FPGA

Ovisno o metodologiji za dobivanje konfiguracije FPGA na temelju funkcionalnog modela uređaja na razini sustava, programer može razlikovati sljedeće vrste digitalnih modula za FPGA:

  • Softver - razvijeni digitalni modul, prenesen potrošaču u obliku opisa u jeziku za opis hardvera (VHDL, Verilog) i/ili razvijen u uređivaču shema za daljnju upotrebu u programima za automatiziranu sintezu logičkih sklopova i optimiziran za funkcionalne parametre .
  • Firmware - digitalni modul koji je razvila razvojna tvrtka treće strane, nazvan IP jezgra, koji se prenosi potrošaču u obliku logičkog sklopa (netlist) na temelju biblioteke logičkih elemenata proizvođača FPGA i optimiziran za funkcionalne i električne parametre.

U fazi izrade dokumentacije, na temelju osobnog iskustva, potrebno je izraditi, uz uobičajenu projektnu dokumentaciju i specifikacije izvedene u skladu s GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114, dokumentaciju za sve vrste modeli (sustav, logika, inženjerstvo sklopova) stvoreni u fazama projektiranja digitalnih uređaja na FPGA.

Drugim riječima, komplet projektne dokumentacije za digitalni uređaj za FPGA, osim firmware datoteke, programskih uputa i snimljenog projekta na CD/DVD, mora sadržavati i popratnu dokumentaciju.

Stol. Popis odjeljaka popratne dokumentacije

Naslov odjeljka Pogled
Softver Firmware
Opće informacije
Svrha i opseg OKO R
Tehnički podaci OKO OKO
Opis signala resetiranja OKO OKO
Opis signala sinkronizacije OKO OKO
Opis sučelja OKO R
Vremenski dijagrami R OKO
Opis kontrolnih registara OKO OKO
Strukturni (funkcionalni) dijagram R R
Vodič za programiranje OKO OKO
FPGA model ili obitelj,
tvrtka proizvođač
R OKO
Digitalni prikaz modula
za logički dizajn na FPGA
RTL model OKO Ne
Logički model Ne OKO
Ograničenja dizajna OKO OKO

Ovdje je popis odjeljaka (tablica) koji bi trebali biti uključeni u popratnu dokumentaciju za projekt digitalnog modula za FPGA. Za svaki odjeljak prikazani su znakovi potrebe uključivanja odjeljka u skup dokumenata:

  • "O" je obavezan odjeljak;
  • "P" je dio koji se preporučuje za isporuku.

Preporučeni formati datoteka za podnošenje prateće dokumentacije su MS Word, PDF (najbolji format), HTML. Opisne datoteke u jeziku opisa hardvera (VHDL, Verilog) i/ili razvijene u uređivaču shema daju se u obliku koji zahtijeva CAD softver za razvoj. Iznimka može biti dodatna ponuda u grafičkom formatu (JPEG, BMP) datoteka digitalnih sklopova 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;
  • resetiranje signala, sinkronizacija;
  • primijenjena sučelja;
  • kontrolni registri;
  • vremenski dijagram;
  • programiranje.

Svrha i opseg

Određena je namjena digitalnog modula i područja njegove primjene.

Tehnički podaci

Naveden je opis njegovih glavnih tehničkih karakteristika, kao što su performanse, potrošnja energije za određeni FPGA čip, broj zauzetih vrata i vrsta FPGA čipa koji se koristi. Dodatno, naznačen je CAD softver proizvođača FPGA korišten u razvoju digitalnog modula i softver korišten za modeliranje i verifikaciju. Za sve korištene programe navedena je verzija i instalirana ažuriranja. Dat je grafički prikaz digitalnog modula u obliku “crne kutije” s oznakom vanjskih ulaza/izlaza i kratkim opisom njihove namjene.

Opis signala resetiranja

Evo pojedinosti o signalima resetiranja:

  • Popis vanjskih i unutarnjih signala resetiranja.
  • Vremenski parametri i vremenski dijagrami reset signala.
  • Krugovi za generiranje internih signala resetiranja, ako postoje, dio su digitalnog modula.
  • Odnosi s drugim signalima (osobito signalima sinkronizacije).

Opis signala sinkronizacije

Evo pojedinosti o signalima sinkronizacije:

  • opis vanjskih signala sinkronizacije;
  • vremenski parametri signala sinkronizacije;
  • opis internih signala sinkronizacije i sheme za njihovo generiranje;
  • vremenski odnosi između signala sinkronizacije iz različitih izvora;

Opis sučelja

Dane su značajke korištenja svih sučelja koja su dio razvijenog digitalnog modula, po mogućnosti unificiranih za organiziranje interakcije s drugim čvorovima sustava na čipu. Dodatno, navedena je internetska poveznica na potpuni opis standardnog sučelja ili je naveden opis samog sučelja. Trenutno su AMBA, PLB i Wishbone bus sučelja prihvaćena kao objedinjena sučelja za digitalne module.

Vremenski dijagrami

Daju se potrebne informacije za organiziranje razmjene podataka preko sučelja i drugih ulaza/izlaza digitalnog modula: grafički prikaz vremenskih dijagrama, opis protokola prijenosa podataka, zahtjevi za vanjske signale koji se isporučuju digitalnom modulu (trajanje, frekvencija, itd.) , i ostale informacije.

Opis kontrolnih registara

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

Strukturni (funkcionalni) dijagram

Prikazana je slika unutarnje strukture veza glavnih unutarnjih čvorova/blokova digitalnog modula, kao i njihov kratak tekstualni opis. Dodatno je dan opis glavnih unutarnjih blokova digitalnog modula. Svrha ovog dokumenta je pružiti potrošaču informacije potrebne za razumijevanje principa rada digitalnog modula.

Broj opisanih blokova i opseg 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 unutarnje jedinice sadrži:

  • namjena bloka;
  • strukturni (funkcionalni) dijagram bloka (ako je potrebno);
  • načini rada i algoritmi;
  • dijagrami radnog vremena;
  • organizacija upravljanja blokom;
  • organizacija komunikacije s drugim blokovima;
  • bilo koje druge informacije.

Vodič za programiranje

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

FPGA model ili obitelj, proizvođač

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

Prikaz digitalnog modula za logički dizajn

U članku se raspravljalo o poteškoćama u korištenju "stranog" projekta u VHDL-u - nedostatku odgovarajućih smjernica za imenovanje i pravila za pisanje programa. Također su dane opće smjernice o imenima, dobrim manirama za pisanje programa i smjernice za sintezu. O ovim pitanjima treba što detaljnije razgovarati s programerom ako u budućnosti planirate sami nastaviti s razvojem ili nadogradnjom, prije nego što krene s razvojem RTL modela digitalnog modula na FPGA. Ovo se posebno odnosi na tip softverskog digitalnog modula na FPGA. Ovaj dio članka opisuje opće zahtjeve za cjelokupni projekt razvijenog digitalnog modula na FPGA. Ovdje su pitanja na koja treba obratiti pozornost prilikom izrade tehničkih specifikacija za razvoj digitalnog modula na FPGA, a to se posebno odnosi na prijenos rezultata rada.

RTL model

Digitalni modul, opisan u sintetiziranom podskupu jezika Verilog ili VHDL i/ili razvijen u uređivaču shema, namijenjen je za upotrebu u fazi logičke sinteze FPGA. Softveru se isporučuje u obliku sastavljenog projekta digitalnog modula u CAD softveru proizvođača FPGA. Za digitalni Firmware modul, RTL model je osiguran prema posebnom ugovoru.

Uz datoteke RTL modela, prenosi se sljedeće:

  • Upute za korištenje modela.
  • Opis memorijskih blokova uključenih u model, uključujući vrstu memorije, veličinu, broj memorijskih blokova, hijerarhijski naziv memorijskog bloka.
  • Opis procesa stvaranja gotovih kernela pomoću programa za njihovu izradu (na primjer, CoreGenerator za Xilinx ISE). U nedostatku opisa, mogu postojati ograničenja za redizajn i primjenu zbog ovisnosti o tehnologiji i proizvođaču.
  • U slučaju korištenja mikroprocesora proizvođača (npr. od Altera - Nios procesor; od Xilinx - Microblaze, PowerPC mikroprocesori) potreban je opis procesa konfiguriranja jezgre procesora i njegovih periferija.
  • Skup testova (datoteke Test Bench) za provjeru i simulaciju digitalnog modula, napisanih u Verilogu i/ili VHDL-u i/ili System Verilogu.
  • Sve ostale dodatne informacije.

Logički model

Model je popis sklopova opisanih korištenjem jezika Verilog ili VHDL na temelju biblioteke proizvođača FPGA, a isporučuje se za firmver digitalnog modula.

Uz datoteke logičkog modela, prenosi se sljedeće:

  • Upute za korištenje ovog modela.
  • Skup testova (datoteke Test Bench) za provjeru i simulaciju digitalnog modula, napisanih u Verilogu i/ili VHDL-u i/ili System Verilogu.
  • Vodič za rad sa skupom testova za modeliranje i provjeru digitalnog modula.
  • Sve ostale dodatne informacije.

Ograničenja dizajna

Ograničenja dizajna daju se kao datoteka koja opisuje skup ograničenja nametnutih digitalnom modulu kada je uključen u logički model sustava na čipu. Ovaj skup uključuje ograničenja sata, vremenska ograničenja, ograničenja interakcije digitalnog modula s drugim modulima i radne uvjete za digitalni modul. Poželjan je format Synopsis Design Constraints (SDC) ili CAD format proizvođača FPGA.

Primjer popisa ograničenja za signale sinkronizacije:

  • vremenski dijagram (Clock waveform);
  • nestabilnost taktne frekvencije (Jitter);
  • promjena faze frekvencije takta;
  • trajanje uklopnih vremena (Transition times);
  • vremenski dijagrami izvedenih valnih oblika sata;
  • sve druge dodatne informacije.

Za digitalne module softvera i firmvera potreban je skup ograničenja za signale sinkronizacije.

Primjer popisa vremenskih ograničenja:

  • Vrijeme dolaska na ulaze;
  • vrijeme pojave signala na izlazima (Potrebna vremena na izlazima);
  • Višeciklističke staze;
  • lažni putovi;
  • trajanje vremena prebacivanja signala podataka (vremena prijelaza podatkovnog signala);
  • sve druge dodatne informacije.

Zaključak

Sljedeći skup popratne dokumentacije za razvijene digitalne module za FPGA je osiguran prema dogovoru između potrošača i programera. Najčešće, programer jednostavno daje digitalni modul opisan u VHDL, Verilog, System Verilog i/ili razvijen u uređivaču sklopova. Što se tiče dodatne dokumentacije, odgovor programera je najčešće sljedeći: „Digitalni modul radi, pa ga uzmi i koristi. Nema ništa komplicirano u opisivanju kruga hardverskim jezikom: možete to sami shvatiti.

Po mišljenju autora, možete shvatiti bilo što, sve ovisi o želji i utrošenom vremenu, a vrijeme utrošeno na razumijevanje "tuđeg" projekta za već razvijeni digitalni modul izravno je proporcionalno iskustvu opisivanja opreme u VHDL-u, Verilog i digitalni i mikroprocesorski sklopovi znanja. To se može izbjeći ako se prvo dogovorite s programerom o sastavu popratne dokumentacije, tada korištenje digitalnog modula u vašem projektu postaje lakše, a njegova implementacija će se dogoditi brže.

Ukratko, autor bi želio napomenuti da se prilikom formuliranja zadatka razvoja digitalnog uređaja na FPGA treba pridržavati preporuka danih u članku, tada se neće pojaviti problemi prilikom ponovne uporabe ili nadogradnje prethodno razvijenog digitalnog uređaja.

Književnost

  1. Denisov A. Nekoliko savjeta za projektiranje digitalnih uređaja na VHDL-u za FPGA // Komponente i tehnologije. 2009. br.12.
  2. GOST 2.102-68 ESKD. Vrste i cjelovitost projektne dokumentacije.
  3. GOST 2.114-95 ESKD. Tehnički uvjeti.
  4. GOST 15.101-98. Sustav za razvoj i puštanje proizvoda u proizvodnju. Postupak izvođenja znanstvenoistraživačkog rada.
  5. GOST R 15.201-20-00. Sustav za razvoj i puštanje proizvoda u proizvodnju. Proizvodi za industrijske i tehničke namjene. Postupak razvoja i puštanja proizvoda u proizvodnju.