Jeg er ny på FPGA og tager i øjeblikket HDL-klasse (især Verilog). Jeg har tilstrækkelig viden inden for digitalt design som kombinerende og sekventielle kredsløb.

Jeg vil oprette et projekt, der ligner det, der vises i denne YouTube-video .

Jeg ved også, at Xilinx ISE kan behandle logiske signaler og simulere bølgeformer. Har den ekstra kapacitet som at få indgangssignalerne via USB, kamera osv. Og output det på din computer.

Er det muligt at køre dette projekt (som en simulering i computeren) uden at købe et egentligt FPGA-kort? Hvad jeg mener er, kan jeg bygge, kode og køre dette projekt på min computer og bare tilslutte mit kamera via USB, så lad de indgående videosignaler være behandlet af HDL-simulatorer som Xilinx ISE osv. (uden virkelig at købe et FPGA-kort og syntetisere dit projekt der, har jeg i øjeblikket ikke budgettet til at have et)

( Hvad jeg virkelig mener er at interface HDLl-designet til kilder i den virkelige verden, C-kode osv.)

Kommentarer

  • Jeg don ‘ ved ikke, om du kan gøre det med Xilinx ‘ s simulator, men noget som Icarus Verilog vil lade din simuleringsgrænseflade til C-kode, som kunne få data kilder i den virkelige verden dog vil det sandsynligvis køre størrelsesordener langsommere end realtid, så det ville være svært at behandle en live videokilde.
  • Åh der, det er udtrykket jeg finder, grænseflade til kilder i den virkelige verden
  • @vvavepacket opstemmer kommentarerne / indlægene for at takke kommentatoren / plakaten.
  • FPGA i videoen ligner Altera DE2. Det ‘ er mellem 200 og 600 USD afhængigt af licens og chip. Der ‘ er simulatorer ved csc.kth.se/~emille/niisim
  • The Terasic DE0-nano er i størrelsesordenen $ 80 og kan interface til kameraer og LCD-skærme; faktisk har de demoer af det på deres hjemmeside. Ikke tilknyttet dem, men DE0-nano ‘ har en ret flot lille FPGA på et anstændigt prissat bord. Jeg ‘ har altid hadet, hvor dyre de fleste dev-boards er.

Svar

Xilinx-værktøjerne kan ikke grænseflade i realtid, så vidt jeg ved, heller ikke ModelSim (brugt af Actels Libero IDE). Jeg ved ikke noget om open source-simulatorer, der er nogle temmelig eksotiske projekter derude, så det er muligt, at der er noget, der kan gøre dette.

Dette kan dog være dig et svar, du ikke bad om (jeg sletter det, hvis det ikke er nyttigt), men jeg ville overveje at opbygge dit eget FPGA-kort til at gøre dette eller i det mindste kom i gang undervejs mod det. Jeg ætsede mit første FPGA-kort, og selvom det var meget simpelt (brættet ikke processen ;-)), lærte det mig meget hurtigt.

Fordele:

  • Billig
  • Hop lige ind i den dybe ende og lær alt hvad du behøver at vide om hardwareovervejelser. Tvinger dig til først at læse de fleste datablade og skrive dine egne startkode, som IMHO ofte er bedre end plug and play-dev-board-tilgangen til læring.
  • Sæt kun på tavlen, hvad du har brug for.
  • Få dig længere mod din Målet med et ægte arbejdsdesign med muligvis samme indsats / forskning som at finde ud af, hvordan man simulerer det hele i realtid.

Ulemper:

  • Har stadig brug for at købe en programmør, selvom billige versioner af Xilinx / Altera-programmørerne kan findes på eBay.
  • Hvis design og problemer med PCB / signalintegritet ikke er noget, du ønsker at fokusere på, er du måske ikke interesseret i meget af den viden, der opnås ved at gøre det på denne måde.

Jeg forstår, at ætsningen af dit eget bord sandsynligvis er unødvendig, jeg gjorde det kun, fordi jeg havde FPGAerne der, var utålmodig og ikke ønskede at vente 2 uger på, at et printkort skulle ankomme. Der er ekstremt billige tilbud her for 2-lags boards, hvilket ville gøre for i det mindste at køre dit design (muligvis ved lavere hastigheder end til sidst ønsket – normalt ville det mindste lagantal for et højhastigheds FPGA-design være 4, men disse er meget dyrere)

Alligevel udfører Spirit Circuits en helt gratis 2-lags “bare bone” PCB-aftale (en om måneden, et design, ingen maske eller silketryk), som er praktisk til et engangs design .
For ordentlige billige prototype-kort med 2 og 4 lag går ITead og Seed Studio så lavt som $ 10 for 10 boards (eller muligvis 5 til den pris) tjenester.

Kommentarer

  • meget interessant, tag det på! og opmuntrende også

Svar

Standard Xilinx ISE Webpack (den gratis version, der du kan downloade fra xilinx.com) inkluderer en simulator kaldet iSim. Det er ikke en god simulator, men er fuldt funktionel, og prisen er rigtig.

Selvom jeg ikke har brugt Altera-værktøjerne, ville det overraske mig, hvis en simulator ikke var inkluderet.

Men … Du skal vide, hvad en simulator kan og ikke kan gøre For det første kan det ikke simulere en FPGA, der kører med fuld hastighed. Faktisk er de ret langsomme. Afhængig af kompleksiteten af den FPGA, der simuleres, ville det ikke overraske mig at se det tage 1 minut at simulere 1 ms simuleret tid “. Hvis du vil simulere en times” simuleret tid “, ville det kræve 1000 timers realtid.

En simuleret FPGA kan heller ikke kommunikere direkte med ting som din USB-port. Den simulerede FPGA kommunikerer med en “testbænk”. Testbænken er en del af VHDL- eller Verilog-kode, der føder input fra FPGA (eller dele af FPGA) og verificerer output fra din FPGA. Du kan gøre nogle ret komplekse ting i en testbænk som at bruge flydende numre, læse og skrive filer og køre logik, der er umulig at syntetisere.

Kommentarer

  • A ltera ‘ har gratis udgaver af Quartus, der inkluderer ModelSim. Den gratis version af ModelSim begrænser din simuleringshastighed, og den gratis version af Quartus begrænser antallet af CPU-kerner, der bruges til at syntetisere, men er ellers fuldt funktionelle.
  • Altera ModelSim understøtter ikke co-simulering af VHDL og Verilog i samme design.

Svar

Jeg kender ikke nogen simulator, der vil direkte interface til signaler, der ankommer til en USB-port (eller anden hardware).

I det mindste i teorien ville det være muligt at skrive noget software, der ville tage signaler, der ankommer til en port, og oversætte dem til en testbench-fil, der en simulator kunne behandle. Desværre kender jeg ikke nogen eksisterende software til at gøre dette, og det ville bestemt være ikke-trivielt at skrive det selv.

Kommentarer

  • så er den bedste måde at få et indgangsniveau, billig fpga-kort til n00bs ligesom mig
  • Du behøver ‘ ikke faktisk skal gennem en testbench-fil, hvis du har en simulator h understøtter en grænseflade til brugerdefineret kode, sådan en VPI, men i betragtning af at simulatoren kører størrelsesordener langsommere end realtid, kan det være lettere at håndtere fangede data i en fil, der kan læses ved simuleringshastigheden.
  • @ChrisStratton Jeg er interesseret i idé om fangede data i en fil. Har du nogen ressourcer til det? Tak
  • Det vil helt afhænge af det perifere udstyr, du vil bruge som datakilder.

Svar

Du bliver nødt til at bruge en co-simuleringsgrænseflade (DPI, VPI, VHPI, FLI), som giver dig mulighed for at skrive kode, der tilsluttes simulatoren og dermed bygge bro mellem RTL, der kører i simulering og ægte hardware på din maskine .

De væsentlige problemer, du vil støde på (bortset fra dårligt dokumenterede grænseflader), er relateret til synkronisering og timing. RTL, der kører i simulering, er langt langsommere end ægte hardware – du bliver nødt til at være i stand til at gennemgå interaktioner med den eksterne grænseflade for at matche simuleringshastigheden. Nogle hardwaregrænseflader kan ikke lide dette! For eksempel, hvis du bruger TCP, er du muligvis nødt til at fudge timerne i kernestakken for at undgå falske videresendelser osv.

Icarus understøtter VPI og er gratis, så du kan eksperimentere uden at bruge penge på licenser. Det kan være en god idé at se på eksisterende rammer, der gør noget af det tunge løft med co-simulering og giver en renere abstraktion til simulatoren. En sådan ramme er Cocotb , et open source-bibliotek, der giver en Python-grænseflade til simulatoren. ( Ansvarsfraskrivelse: Jeg er en af udviklerne af cocotb.)

Et eksempel, der kan være relevant: i går bankede jeg nogle RTL op for at svare på pinganmodninger og oprettede en testbænk der åbner en TUN-grænseflade. Du kan derefter pinge grænsefladen ved hjælp af kommandoen ping, og RTL, der kører i simulation, modtager ping og svarer. Hele testbænken er mindre end 50 linjer Python! Kildekoden til dette eksempel er på Github , og den kører på Icarus under Linux.

Svar

I langt de fleste tilfælde forbliver alt, hvad du laver i simuleringen, i simuleringen. Du kan ikke få adgang til ægte hardware fra den – du skal have en simuleringsmodel af den rigtige hardware.

Men hvis du er villig til at gøre en indsats, har de fleste simulatorer en grænseflade til vilkårlig kode. I Verilog er det en ret standard grænseflade, som jeg forstår det, så Verilog-siden af tingene porter mellem simulatorer. I VHDL-land er der en standard måde at gøre det på, men mindst en af de store leverandører har deres egen måde at gør det!

Husk også, at grænseflade i realtid (dvs. med den hastighed, som FPGA ville gøre det) er meget usandsynligt – og resten af din simulering (HDL) vil ikke køre i ægte -tid heller.Som bemærket i kommentarerne er simuleret realtidsbearbejdning af video ikke mulig på denne måde.

Personligt har jeg aldrig haft behov for at prøve dette, jeg finder mig mere produktive skrivemodeller af hardwaren og kører alt i VHDL.

Men glem ikke fordelene ved at lave simulering – det er en meget hurtigere måde at finde ud af, om tingene fungerer (kompileringen tager sekunder), så bygger bitstrømme (kompileringen tager ti minutter til timer) og prøver dem i hardware.

Kommentarer

  • Usande, se kommentarer til spørgsmålet.
  • OK, jeg skulle ‘ have været klarere – jeg begrænsede mit svar til ” I ‘ m nyt til FPGA ” niveau 🙂 Svar opdateret

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *