Cum de a începe cu FPGA
FPGA (PLD) - programabil logic circuit integrat (Programmable Logic Dispozitiv)
FPGA (FPGA) - un porți programabile matrice (Câmp Programat Gate Array)
FPGAs sunt compuse din blocuri și seturi de porți logice, configurația conexiunilor între care poate fi stabilită prin programarea microcircuit.
Să începem cu o cantitate mică de teorie. FPGAs sunt împărțite în două grupe principale: CPLD (Complex Programat dispozitiv logic) și FPGA (Câmp Programat Gate Array). CPLD - este, de obicei, FPGA-clasa „economie“, adică Ei au un preț scăzut și cantitate relativ slabe de resurse, în special vizibile pe declanșatoare. FPGA de obicei scumpe, oferă mai multe resurse (logica simplă -. Bistabile) și, cel mai important, în ultimii ani, mai multe blocuri „dificile“, cum ar fi multiplicatori, interfata de memorie de bloc prichindaly (Ethernet, PCI-Express.), Și chiar procesor PowerPC de bază. Separat, puteți menționa o serie de Zinq de la Xilinx - la toate core ARM umplute. Diferența principală de FPGA CPLD este necesar pentru încărcarea de configurare la putere și, în consecință, configurația ROM extern. Chiar și familia SPARTAN-3AN are la bord ROM built-BCCH, din care marfa.
Acum, cel mai important lucru: FPGA este diferit de controler și când să le aplice. Totul e destul de simplu: FPGA (ia cei fără clopote și fluiere) - este, de fapt, logica pungii pe un singur cip, care pot fi conectate în mod liber: aceleași declanșatori, AND, OR, și entități similare, cum ar fi în seria K155 sau 74NS. Controlerul este același - este procesorul gata (deși cu număr insuficient de echipe), built-in memorie, autobuz de date și comenzi, periferice, etc. În general vorbind, un FPGA mare, puteți face un controler de mic, dar această idee, cel puțin, prost. Astfel, controlerul este ascuțit prin implementarea lanțurilor lungi de comandă, repetarea lor ciclică, trecerea de la un lanț la altul, etc. și punerea în aplicare a FPGA ascuțit prin operații simple și logice, mai important, o cantitate mare dintr-o dată (sau chiar pe diferite frecvențe de ceas).
FPGA Xilinx XC95288XL în TQ144 pachet
Să ne întoarcem de la teorie la practică. Pentru început, avem destul de orice chip CPLD. Resursele sunt limitate, dar dezvoltarea cel mai mult ea. Voi lua XC95288XL în TQ144 pachet (din nou, a fost doar disponibil) este, în general, se recomandă să ia ceva mai proaspăt, de exemplu, o serie de CoolRunner 2. Pentru a obține produsul finit (chiar minimal intermitent LED-uri), avem nevoie de: hardware de lipire (aici Sper că nu există probleme, dar voi menționa nuanțele), „scrie“ firmware-ul (în acest caz, mai degrabă, de a desena) și coase firmware-ul la chip. În general, avem nevoie de software-ul, firmware-ul generyaschy și programator. Software-ul (Xilinx ISE WebPACK) se execută de pe site-ul oficial (deși a cerut să vă conectați), licența WebPACK - gratuit. Programatorul se poate face conform schemei din figura 1 (de mai jos TPL-port) sau achiziționați shny serial-USB (în magazinele de Internet din China sa întâlnit la un preț de aproximativ 50 $, dar el nu a cumpărat). Mai multe informații.
Fig. 1
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
Odată ce am FPGA cositorite pe placa de dezvoltare, prin lipire sau cumpărat programator, descărcat și instalat ISE pachet WebPACK (am versiunea 13.2), începe Project Navigator și de a crea un nou proiect. Pentru a crea un proiect, selectați File -> New Project, indicați numele proiectului și unde să-l salvați, de asemenea, să specificați tipul de cod sursă TOP-LEVEL (Figura 2). Faptul că FPGA nu atrage în mod necesar o diagramă a bistabilele și compușii lor pot fi, de exemplu, pentru a scrie în limbaje de nivel înalt (VHDL, Verilog) și nu neapărat în cadrul aceluiași proiect de a utiliza un singur lucru. Noi folosim numai până la schematică, la toate nivelurile.
Fig. 2
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
În fereastra următoare (. Figura 3) pentru a alege cipul nostru (restul la început nu se ating); în fereastra care apare după ce faceți clic pe butonul „Next“, admirand parametrii create de proiect, faceți clic pe „Finish“ - și ați terminat: proiectul este creat.
Acum trebuie să elaboreze o diagrama: click dreapta pe fereastra cu un nou proiect și SOURCE (Figura 4), să fie numit numele sursei (numele schemei noastre, acestea sunt în proiect poate fi o mulțime), vom alege din nou schematică, faceți clic pe „Next „admirând parametrii fișierului nou creat, faceți clic pe“ Finish „și a obține un model curat.
Fig. 4
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
Distracția începe: panourile de pe partea stângă (nu de la margine), faceți clic pe butonul „adaugă simbolul“ (5 fig.).
Fig. 5
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
Și vom obține mai multe caractere la stânga listei bibliotecii curente. Cum de a adăuga, a crea, edita bibliotecă va înțelege apoi (după cum este necesar). Acum este important pentru a selecta caracterul corect. Deci, în fereastra de sus, vedem un calificativ - filtru, care nu este necesar să se utilizeze (bine, de ce răsturnați prin tot felul de declanșatoare și elemente logice, atunci când avem nevoie de un contor).
De exemplu, luați în considerare următoarea problemă: este necesar să se determine cât mai exact posibil timpul de întârziere între muchiile de 2 impulsuri care apar la diferite fire și de scurgere este controler printr-o interfață SPI valoare. Orice problemă similaritate cu tema „Creșterea frecvenței de operare MK“ pe una dintre Forumul robotice intenționată. Astfel, la dispozitivul de intrare 2 pulseze fire 3 și firele pentru Controller SPI. adăuga încă ceas de intrare (nu știm la ce frecvență, putem presupune doar că nu mai puțin de 70 MHz). Vom începe să desenați firmware-ului: avem nevoie de zăvoarele, care va „prinde“ impulsuri, contor de timp, registrul de deplasare (pentru a le crea nu, ei au o bibliotecă). Care sunt declanșatorii și contoare nu voi descrie, sper că cititorii „în subiect“ și nu există probleme, în caz contrar va trebui să scrie câteva articole. A primit doar o astfel de schemă (fig. 6), după cum se poate vedea, nu neapărat trage firul de ieșire al caracterului la intrare, suficienta pentru a apela lanțul. Pentru a se referă la intrările externe și ieșirile folosesc butonul „Add I / O Marker“.
Fig. 6
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
Atunci când circuitul este gata, du-te la tab-ul de proiectare și dablklikaem de implementare, Design - începe orice procese (pentru a începe indiferent de ce - cel mai important, că toate împreună - este un proces de distilare cod sursă în firmware). Când totul se face, uita-te la acoperi în eroare la varningov: tot ceea ce contează, repara, lăsați restul. De exemplu, nu avem nevoie de CEO și ieșiri contorul TS și 15 de biți rămași de paralel registru de deplasare de ieșire este, de asemenea, nu este necesar, și varningov se plânge. Dacă injuriile zbura în eroare pe ceea ce dorim și, de aceea, ne dorim ceva ce nu este. Dacă ne (și sintetizator) sunt îndeplinite - admirăm raport suplimentar: modul în care au petrecut mult resursele publice, ce viteze de ceas disponibile. Dacă totul este bine din nou, atunci este schema prosimulirovat de timp și asigurați-vă că funcționează de fapt, în funcție de sarcina la îndemână. Simularea după verificarea timpilor, propunem să se efectueze din cauza faptului că, uneori, pentru a obține frecvența de ceas dorit este necesar să se agite întreaga schemă, care, desigur, pot afecta rezultatul.
Deci, de simulare: pe fila Design (în priza din stânga) selectați simulare (Figura 7.).
Fig. 7
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
La parter, în acest proces, în loc de procesele de proces de sinteză și de rutare a aparut Simulate Behavioral model, dablklikaem pe ea - rula simulatorul, în care vom vedea semnalele noastre (nu numai de intrare-ieșire, dar, de asemenea, intermediar) (Figura 8).
Fig. 8
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
Fig. 9
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
Pacing în timp prin intrări de manipulare și (dacă este necesar), cu etapa de simulare, obține o diagramă de temporizare (Fig. 10).
Fig. 10
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
Ne asigurăm că totul funcționează conform destinației (sau cu circuite de depanare pe), și trece la următorul pas - distribuirea de intrări și ieșiri de pe picioarele cip. Pentru a face acest lucru, adăugați o altă sursă de fișier (fig. 11), și anume constrângerilor de implementare de fișiere.
Fig. 11
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
Prevede „cip pinilor“ (fig. 12), dar aici stabilește cerințele pentru viteze de ceas. Și aici ajungem la nuanțele asociate cu semnalul de ceas. Faptul este că semnalele de ceas trebuie să vină la așa-numitele linii globale - linii care se execută peste cip, celelalte linii sunt de natură locală și de la un bloc trece prin logica de comutare. La cip XC95288XL TQ144 în carcasă 3 astfel de linii, iar acestea sunt conectate la picioare 30, 32, 38. Semnalele rămase pot fi conectate la picioarele orice intrare-ieșire (I / O).
Fig. 12
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
Din nou Punerea în aplicare a dablklikaem de proiectare, așteptați, citiți comentariile de pe varningov subiect pentru a acoperi în eroare și pentru a trece pe PIN-rapoarte (Figura 13.) și temporizări (fig. 14); vedem că toți suntem mulțumiți, și au fericirea în formă de fișier% PROJECT_NAME% .jed.
Fig. 13
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
Fig. 14
(Clickable imagine pentru a mări, deschide într-o fereastră nouă)
fișier firmware este gata. Să presupunem că dispozitivul, de asemenea. Conectarea la un cablu JTAG calculator și dablklikaem pe dispozitiv Configurare țintă. Start utilitate firmware (Impact.exe), de fapt, este posibil să fie limitată doar lansarea acestuia unul la fabricarea mai multor dispozitive pentru o serie de firmware. Crearea unui proiect nou (un proiect pentru applet-proshivalki), lăsați-l să găsească automat programator și cip conectat, arată fișierul firmware și faceți clic pe program. Așteptăm cu nerăbdare la câteva zeci de secunde, vom vedea o inscripție că totul este bine - dispozitivul este gata.