Jeg er ny i FPGA og tar for tiden HDL (spesielt Verilog) -klasse. Jeg har tilstrekkelig kunnskap innen digital design som kombinasjons- og sekvensielle kretser.

Jeg vil lage et prosjekt som ligner på det som vises i denne YouTube-videoen .

Jeg vet også at Xilinx ISE kan behandle logiske signaler og simulere bølgeformer. Har den ekstra evner som å få inngangssignalene via USB, kamera osv. Og sende dem ut på datamaskinen din.

Er det mulig å kjøre Dette prosjektet (som en simulering i datamaskinen) uten å kjøpe et faktisk FPGA-kort? Hva jeg mener er, kan jeg bygge, kode og kjøre det prosjektet på datamaskinen min, og bare koble kameraet mitt via USB, så la innkommende videosignaler være behandlet av HDL-simulatorer som Xilinx ISE, etc. (uten å kjøpe et FPGA-kort og syntetisere prosjektet ditt der, har jeg foreløpig ikke budsjett til å ha et)

( Det jeg egentlig mener er å koble HDLl-designen inn i virkelige kilder, C-kode osv.)

Kommentarer

  • Jeg don ‘ vet ikke om du kan gjøre det med Xilinx ‘ s simulator, men noe som Icarus Verilog vil la simuleringsgrensesnittet ditt til C-kode som kan skaffe data fra virkelige kilder; men det vil sannsynligvis kjøre størrelsesordener langsommere enn sanntid, så det ville være vanskelig å behandle en live videokilde.
  • Åh, det er uttrykket jeg finner, grensesnitt mot virkelige kilder
  • @vvavepacket stemmer opp kommentarene / innleggene for å takke kommentatoren / plakaten.
  • FPGA i videoen ser ut som Altera DE2. Det ‘ er mellom 200 og 600 USD, avhengig av lisens og chip. Der ‘ er simulatorer på csc.kth.se/~emille/niisim
  • The Terasic DE0-nano er i størrelsesorden $ 80 og kan grensesnitt til kameraer og LCD-skjermer; faktisk har de demoer av det på nettstedet deres. Ikke tilknyttet dem, men DE0-nano ‘ fikk en ganske fin liten FPGA på et anstendig priset bord. Jeg ‘ har alltid hatet hvor dyre de fleste dev-kort er.

Svar

Xilinx-verktøyene kan ikke grensesnitt i sanntid så vidt jeg vet, heller ikke ModelSim (brukt av Actels Libero IDE). Jeg vet ikke om simulatorer med åpen kildekode, det er noen ganske eksotiske prosjekter der ute, så det er mulig det er noe som kan gjøre dette.

Dette kan imidlertid være deg et svar du ikke ba om (jeg sletter det hvis det ikke er nyttig), men jeg vil vurdere å bygge ditt eget FPGA-kort for å gjøre dette eller i det minste komme i gang underveis mot det. Jeg etset mitt første FPGA-kort, og selv om det var veldig enkelt (styret ikke prosessen ;-)), lærte det meg veldig raskt.

Fordeler:

  • Billig
  • Hopp rett inn i den dype enden og lær alt du trenger å vite om maskinvarehensyn. Tvinger deg til å lese de fleste databladene først og skrive dine egne startkode, som IMHO ofte er bedre enn plug and play-utviklingsbrettet tilnærming til læring.
  • Sett bare på tavlen det du trenger.
  • Få deg lenger mot din Målet med en ekte arbeidsdesign med muligens samme innsats / forskning som å finne ut hvordan du kan simulere det hele i sanntid.

Ulemper:

  • Fortsatt å kjøpe en programmerer, selv om billige versjoner av Xilinx / Altera-programmererne kan bli funnet på eBay.
  • Hvis design og problemer med PCB / signalintegritet ikke er noe du ønsker å fokusere på, er du kanskje ikke interessert i mye av kunnskapen du kan få ved å gjøre det på denne måten.

Jeg forstår at etsingen på ditt eget brett sannsynligvis er unødvendig. Jeg gjorde det bare fordi jeg hadde FPGA-ene der, var utålmodig og ville ikke vente 2 uker på at et PCB skulle komme. Det er ekstremt billige tilbud her for 2-lags kort, noe som i det minste vil gjøre for å kjøre designet ditt (muligens med lavere hastigheter enn til slutt ønsket – normalt vil minimum lagantall for en høyhastighets FPGA-design være 4, men disse er mye dyrere)

Uansett gjør Spirit Circuits en helt gratis 2-lags «bare bein» PCB-avtale (en i måneden, ett design, ingen maske eller silketrykk) som er nyttig for en engangsdesign .
I tillegg til riktige 2 og 4-lags billige prototypeplater, går ITead og Seed Studio så lite som $ 10 for 10 brett (eller muligens 5 til den prisen) tjenester.

Kommentarer

  • veldig interessant ta på deg dette! og oppmuntrende også

Svar

Standard Xilinx ISE Webpack (gratisversjonen som du kan laste ned fra xilinx.com) inneholder en simulator som heter iSim. Det er ikke en flott simulator, men er fullt funksjonell og prisen er riktig.

Selv om jeg ikke har brukt Altera-verktøyene, vil det overraske meg hvis en simulator ikke var inkludert.

Men … Du må vite hva en simulator kan og ikke kan gjøre For det første kan det ikke simulere en FPGA som kjører i full hastighet. De er faktisk ganske treg. Avhengig av kompleksiteten til FPGA som blir simulert, vil det ikke overraske meg å se det tar 1 minutt å simulere 1 ms simulert tid «. Hvis du vil simulere en time med» simulert tid «, vil det kreve 1000 timers sanntid.

Dessuten kan en simulert FPGA ikke kommunisere direkte med ting som USB-porten din. Den simulerte FPGA kommuniserer med en «testbenk». Testbenken er en del av VHDL eller Verilog-kode som mater inngangene til FPGA (eller deler av FPGA) og verifiserer utgangen på FPGA. Du kan gjøre noen ganske komplekse ting i en testbenk , som å bruke flytende tall, lese og skrive filer og kjøre logikk som er umulig å syntetisere.

Kommentarer

  • A ltera ‘ har gratis utgaver av Quartus som inkluderer ModelSim. Den gratis versjonen av ModelSim begrenser simuleringshastigheten din, og den gratis versjonen av Quartus begrenser antall CPU-kjerner som brukes til å syntetisere, men er ellers fullt funksjonell.
  • Altera ModelSim støtter ikke samsimulering av VHDL og Verilog i samme design.

Svar

Jeg vet ikke om noen simulator som vil grensesnitt direkte til signaler som kommer på en USB-port (eller annen maskinvare).

I det minste vil det i teorien være mulig å skrive programvare som tar signaler som kommer til en port, og oversette dem til en testbenkfil som en simulator kunne behandle. Dessverre vet jeg ikke om noen eksisterende programvare for å gjøre dette, og å skrive det selv ville være klart ikke trivielt.

Kommentarer

  • så er den beste måten å få et inngangsnivå, billig fpga-kort for n00bs som meg
  • Du trenger faktisk ikke ‘ testbench-fil hvis du har en simulator h støtter et grensesnitt for tilpasset kode, slik en VPI, men gitt at simulatoren vil kjøre størrelsesordener langsommere enn sanntid, kan det være lettere å håndtere fanget data i en fil som kan leses med hastigheten på simuleringen.
  • @ChrisStratton Jeg er interessert i ideen om fanget data i en fil. Noen ressurser til det? Takk
  • Det vil helt avhenge av periferiutstyr du vil bruke som datakilder.

Svar

Du må bruke et samsimuleringsgrensesnitt (DPI, VPI, VHPI, FLI) som lar deg skrive kode som hekter seg inn i simulatoren og dermed bygge bro mellom RTL som kjører i simulering og ekte maskinvare på maskinen din. .

De vesentlige problemene du vil støte på (bortsett fra dårlig dokumenterte grensesnitt) er synkronisering og tidsrelatert. RTL som kjører i simulering er langt tregere enn ekte maskinvare – du må være i stand til å gå gjennom interaksjoner med det eksterne grensesnittet for å matche simuleringshastigheten. Noen maskinvaregrensesnitt vil ikke like dette! Hvis du for eksempel bruker TCP, må du kanskje tømme tidtakerne i kjernestakken for å unngå falske videresendinger osv.

Icarus støtter VPI og er gratis slik at du kan eksperimentere uten å bruke penger på lisenser. Det kan være lurt å se på eksisterende rammer som gjør noe av samsimuleringen tungt løft og gir en renere abstraksjon til simulatoren. Et slikt rammeverk er Cocotb , et open source-bibliotek som gir et Python-grensesnitt til simulatoren. ( Ansvarsfraskrivelse: Jeg er en av utviklerne av cocotb.)

Et eksempel som kan være aktuelt: i går banket jeg opp noen RTL for å svare på pingforespørsler og opprettet en testbenk som åpner et TUN-grensesnitt. Du kan deretter pinge grensesnittet ved hjelp av ping -kommandoen, og RTL som kjører i simulering mottar ping og svarer. Hele testbenken er mindre enn 50 linjer Python! Kildekoden for dette eksemplet er på Github og den kjører på Icarus under Linux.

Svar

I de aller fleste tilfeller forblir alt du gjør i simuleringen i simuleringen. Du kan ikke få tilgang til ekte maskinvare fra den – du må ha en simuleringsmodell av den virkelige maskinvaren.

Men hvis du er villig til å gjøre noe, har de fleste simulatorer et grensesnitt mot vilkårlig kode. I Verilog er det et ganske standard grensesnitt slik jeg forstår det, så Verilog-siden av ting vil portere mellom simulatorer. I VHDL-land er det en standard måte å gjøre det på, men i det minste har en av de store leverandørene sin egen måte å gjør det!

Husk også at grensesnitt i sanntid (dvs. med den hastigheten FPGA ville gjort det) er veldig usannsynlig – og resten av simuleringen din (HDL) vil ikke kjøre i virkeligheten -tid heller.Som nevnt i kommentarene er simulert sanntidsbehandling av video ikke mulig på denne måten.

Personlig har jeg aldri hatt noe behov for å prøve dette, jeg synes jeg er mer produktive skrivemodeller av maskinvaren og kjører alt i VHDL.

Men ikke overse fordelene ved å gjøre simulering – det er en mye raskere måte å finne ut om ting fungerer (kompilering tar sekunder) og deretter bygge bitstrømmer (kompilering tar titalls minutter til timer) og prøver dem i maskinvare.

Kommentarer

  • Usann, se kommentarer til spørsmålet.
  • OK, jeg burde ‘ vært tydeligere – jeg begrenset svaret mitt til » I ‘ m ny på FPGA » nivå 🙂 Svar oppdatert

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *