Sunt nou în FPGA și iau în prezent clasa HDL (în special Verilog). Am suficiente cunoștințe în designul digital, cum ar fi circuite combinaționale și secvențiale.
Vreau să creez un proiect similar cu cel afișat în acest videoclip YouTube .
Știu, de asemenea, că Xilinx ISE poate procesa semnale logice și simula forme de undă. Are o capacitate suplimentară, cum ar fi obținerea semnalelor de intrare prin USB, cameră etc. și transmiterea în computerul dvs.
Este posibil să rulați acest proiect (cum ar fi o simulare în computer) fără a cumpăra o placă FPGA reală? Ce vreau să spun este, pot construi, codifica și rula proiectul respectiv în computer și doar să conectez camera prin USB, apoi să las semnalele video primite să fie procesate de simulatoare HDL precum Xilinx ISE etc. (fără să cumpăr într-adevăr o placă FPGA și să vă sintetizați proiectul acolo, momentan nu am bugetul pentru a avea una)
( Ceea ce vreau să spun cu adevărat este să interfațez designul HDLl în surse din lumea reală, cod C etc.)
Comentarii
- Nu nu știți dacă puteți face acest lucru cu simulatorul Xilinx ‘, dar ceva de genul Icarus Verilog vă va permite interfața de simulare cu codul C care ar putea obține date de la surse din lumea reală; cu toate acestea, este probabil să execute ordine de mărime mai lent decât în timp real, astfel încât procesarea unei surse video live ar fi dificilă.
- oh, asta este fraza im găsire, interfață cu surse din lumea reală
- @vvavepacket susține comentariile / postările pentru a mulțumi comentatorului / posterului.
- FPGA din videoclip arată ca Altera DE2. ‘ este între 200 și 600 USD, în funcție de licență și cip. Există ‘ re simulatoare la csc.kth.se/~emille/niisim
- Terasic DE0-nano este de ordinul a 80 USD și poate interfața cu camerele și LCD-urile; de fapt, au demonstrații despre acest lucru pe site-ul lor. Nu sunt afiliați la acestea, dar DE0-nano ‘ au primit un FPGA destul de frumos pe o placă cu preț decent. ‘ am urât întotdeauna cât de scumpe sunt cele mai multe plăci de programe.
Răspuns
Instrumentele Xilinx nu pot interfața în timp real din câte știu, nici ModelSim (utilizat de IDE Libero de la Actel)
Nu știu despre simulatoarele open source, există unele mai degrabă proiecte exotice acolo, așa că este posibil să existe ceva care ar putea face acest lucru.
Cu toate acestea, acesta poate fi un răspuns pe care nu l-ați cerut (îl voi șterge dacă nu este util), dar aș lua în considerare crearea propriei plăci FPGA pentru a face acest lucru sau cel puțin Începeți de-a lungul drumului. Am gravat prima mea placă FPGA și, deși a fost foarte simplă (placa nu este procesul ;-)), m-a învățat destul de repede.
Pro:
- Ieftin
- Treceți direct la capăt și aflați tot ce trebuie să știți despre aspectele hardware. Vă obligă să citiți mai întâi majoritatea fișelor tehnice și să scrieți propriile dvs. codul de pornire, care IMHO este adesea mai bun decât abordarea de învățare a tabloului plug and play.
- Puneți doar pe tablă ceea ce aveți nevoie.
- Vă îndreaptă mai departe către obiectivul unui proiect de lucru real cu posibil același efort / cercetare ca și cum ar fi să afli cum să simulezi totul în timp real.
Contra:
- Încă trebuie să cumpărați un programator, deși versiunile ieftine ale programatorilor Xilinx / Altera pot fi găsite pe eBay.
- Dacă proiectarea și problemele de integritate a semnalului PCB nu sunt ceva pe care doriți să vă concentrați, atunci este posibil să nu vă intereseze o mare parte din cunoștințele care trebuie dobândite făcând acest lucru.
Înțeleg că gravarea propriului tău bord este probabil inutilă, am făcut-o doar pentru că aveam FPGA acolo, era nerăbdător și nu voiam să aștept 2 săptămâni pentru sosirea unui PCB. Există oferte extrem de ieftine aici pentru plăcile cu 2 straturi, ceea ce ar face pentru a vă rula cel puțin designul (posibil la viteze mai mici decât în cele din urmă dorite – în mod normal, numărul minim de straturi pentru un design FPGA de mare viteză ar fi 4, dar acestea sunt mult mai scump)
Oricum, Spirit Circuits face o ofertă complet gratuită cu 2 straturi „cu oase goale” pe PCB (una pe lună, un design, fără mască sau serigrafie), care este utilă pentru un design unic .
De asemenea, pentru plăci prototip ieftine cu 2 și 4 straturi, ITead și Seed Studio merg până la 10 USD pentru 10 plăci (sau, eventual, 5 la acel preț) servicii.
Comentarii
- abordare foarte interesantă! și încurajator, de asemenea,
Răspuns
Xilinx ISE Webpack standard (versiunea gratuită care puteți descărca de pe xilinx.com) include un simulator numit iSim. Nu este un simulator excelent, dar este pe deplin funcțional și prețul este corect.
Deși nu am folosit instrumentele Altera, m-ar surprinde dacă nu ar fi inclus un simulator.
Dar … Trebuie să știi ce poate și ce nu poate face un simulator Pentru început, nu poate simula un FPGA care rulează la viteză maximă. De fapt, acestea sunt destul de lente. În funcție de complexitatea simulării FPGA, nu m-ar surprinde să văd că durează 1 minut pentru a simula 1 ms de „simulat timp „. Dacă doriți să simulați o oră de” timp simulat „, ar necesita 1000 de ore de timp real.
De asemenea, un FPGA simulat nu poate comunica direct cu lucruri precum portul dvs. USB. FPGA simulat comunică cu un „testbench”. Testbench este o bucată de cod VHDL sau Verilog care alimentează intrările FPGA (sau părți ale FPGA) și verifică ieșirea FPGA dvs. Puteți face unele lucruri destul de complexe într-un testbench , cum ar fi utilizarea numerelor cu virgulă mobilă, citirea și scrierea fișierelor și rularea unei logici imposibil de sintetizat.
Comentarii
- A Ltera ‘ s-a primit ediții gratuite de Quartus care includ ModelSim. Versiunea gratuită a ModelSim vă limitează viteza de simulare, iar versiunea gratuită a Quartus limitează numărul de nuclee CPU utilizate pentru sintetizare, dar sunt altfel complet funcționale.
- Altera ModelSim nu acceptă co-simularea VHDL și Verilog în același design.
Răspuns
Nu știu de niciun simulator care va interfața direct la semnale care sosesc pe un port USB (sau alt hardware).
Cel puțin în teorie, ar fi posibil să scrieți un software care să preia semnale care sosesc pe un port și să le traducă într-un fișier testbench care un simulator ar putea fi procesat. Din păcate, nu știu niciun software existent pentru a face acest lucru, iar scrierea dvs. personală ar fi cu siguranță non-banală.
Comentarii
- atunci cel mai bun mod este să obții o placă fpga low-cost la nivel de intrare pentru n00bs ca mine
- Nu ‘ de fapt trebuie să treci printr-o fișier testbench dacă aveți un simulator care h acceptă o interfață pentru codul personalizat, cum ar fi un astfel de VPI, cu toate acestea, având în vedere că simulatorul va rula ordine de mărime mai lent decât în timp real, poate fi mai ușor să gestionați datele capturate într-un fișier care poate fi citit la viteza simulării.
- @ChrisStratton Sunt interesat de ideea de date capturate într-un fișier. Aveți resurse pentru asta? Mulțumim
- Ar depinde în totalitate de perifericele pe care doriți să le utilizați ca surse de date.
Răspuns
Va trebui să utilizați interfețe de co-simulare (DPI, VPI, VHPI, FLI) care vă permite să scrieți cod care se conectează în simulator și, astfel, să faceți legătura între RTL care rulează în simulare și hardware-ul real de pe mașina dvs. .
Problemele semnificative pe care le veți întâlni (în afară de interfețele slab documentate) sunt legate de sincronizare și sincronizare. RTL care rulează în simulare este mult mai lent decât hardware-ul real – va trebui să puteți parcurge interacțiunile cu interfața externă pentru a se potrivi cu viteza de simulare. Unele interfețe hardware nu vor fi așa! De exemplu, dacă utilizați TCP, este posibil să trebuiască să controlați cronometrele din stiva de nucleu pentru a evita retransmiterile false etc.
Icarus acceptă VPI și este gratuit, astfel încât să puteți experimenta fără a cheltui bani pe licențe. S-ar putea să doriți să vă uitați în cadrele existente care fac parte din co-simularea ridicării grele și oferă o abstracție mai curată simulatorului. Un astfel de cadru este Cocotb , o bibliotecă open-source care oferă o interfață Python simulatorului. ( Disclaimer: Eu sunt unul dintre dezvoltatorii de cocotb.)
Un exemplu care poate fi relevant: ieri am adunat unele RTL pentru a răspunde cererilor de ping și am creat un testbench care deschide o interfață TUN. Puteți apoi face ping pe interfață utilizând comanda ping
, iar RTL care rulează în simulare primește ping-ul și răspunde. Întregul testbench are mai puțin de 50 de linii Python! Codul sursă pentru acest exemplu este pe Github și rulează pe Icarus sub Linux.
Răspuns
În marea majoritate a cazurilor, orice faceți în simulare rămâne în simulare. Nu puteți accesa hardware-ul real din acesta – trebuie să aveți un model de simulare al hardware-ului real.
Cu toate acestea, dacă sunteți dispus să depuneți ceva efort, majoritatea simulatoarelor au o interfață cu cod arbitrar. În Verilog este „o interfață destul de standard așa cum o înțeleg eu, așa că partea Verilog a lucrurilor va fi portată între simulatoare. În VHDL-land, există un mod standard de a face acest lucru, dar cel puțin unul dintre marii furnizori are propriul lor mod de a face acest lucru. faci asta!
Rețineți, de asemenea, că interfața în timp real (adică cu rata pe care ar face-o FPGA) este foarte puțin probabilă – și restul simulării dvs. (HDL) nu va rula în real -timp fie.După cum sa menționat în comentarii, procesarea simulată în timp real a videoclipurilor nu este fezabilă în acest mod.
Personal, „nu am avut niciodată nevoie să încerc asta, consider că sunt modele de scriere mai productive hardware-ul și rularea tuturor în VHDL.
Dar, nu trece cu vederea avantajele de a face simulare – este „o modalitate mult mai rapidă de a afla dacă lucrurile funcționează (compilările durează câteva secunde), apoi construirea fluxurilor de biți (compilările iau zeci de minute până la ore) și încercarea lor în hardware.
Comentarii
- Neadevărat, consultați comentariile la întrebare.
- OK, ar trebui să ‘ să fiu mai clar – îmi limitam răspunsul la ” eu ‘ m nou la nivelul FPGA ” 🙂 Răspuns actualizat