Jag är ny på FPGA och tar för närvarande HDL-klass (särskilt Verilog). Jag har tillräcklig kunskap inom digital design som kombinerande och sekventiella kretsar.

Jag vill skapa ett projekt som liknar det som visas i den här YouTube-videon .

Jag vet också att Xilinx ISE kan bearbeta logiska signaler och simulera vågformer. Har den extra kapacitet som att få insignaler via USB, kamera etc. och mata ut den i din dator.

Är det möjligt att köra det här projektet (som en simulering i datorn) utan att köpa ett verkligt FPGA-kort? Vad jag menar är, kan jag bygga, koda och köra det projektet på min dator, och bara ansluta min kamera via USB och sedan låta de inkommande videosignalerna vara bearbetas av HDL-simulatorer som Xilinx ISE, etc. (utan att verkligen köpa ett FPGA-kort och syntetisera ditt projekt där, jag har för närvarande inte budgeten att ha en)

( Vad jag egentligen menar är att koppla in HDLl-designen i verkliga källor, C-kod, etc.)

Kommentarer

  • Jag don ’ vet inte om du kan göra det med Xilinx ’ s simulator, men något som Icarus Verilog låter ditt simuleringsgränssnitt till C-kod som kan få data från verkliga världskällor; men det kommer sannolikt att köra storleksordningar långsammare än i realtid, så det skulle vara svårt att bearbeta en live videokälla.
  • Åh där, det är frasen jag hittar, gränssnitt till verkliga källor
  • @vvavepacket röstar upp kommentarer / inlägg för att tacka kommentaren / affischen.
  • FPGA i videon ser ut som Altera DE2. Det ’ är mellan 200 och 600 USD beroende på licens och chip. Det finns ’ simulatorer vid csc.kth.se/~emille/niisim
  • The Terasic DE0-nano är i storleksordningen $ 80 och kan gränssnitt till kameror och LCD-skärmar; de har faktiskt demos på det på deras webbplats. Inte ansluten till dem, men DE0-nano ’ har en ganska fin liten FPGA på ett anständigt prissatt bräde. Jag ’ har alltid hatat hur dyra de flesta dev-kort är.

Svar

Xilinx-verktygen kan inte gränssnitt i realtid så vitt jag vet, inte heller ModelSim (används av Actels Libero IDE). Jag vet inte om simulatorer med öppen källkod, det finns några ganska exotiska projekt där ute så det är möjligt att det finns något som kan göra detta.

Detta kan dock vara du ett svar du inte bad om (jag kommer att radera det om det inte är till hjälp), men jag skulle överväga att bygga ditt eget FPGA-kort för att göra detta eller åtminstone komma igång på vägen mot det. Jag etsade mitt första FPGA-kort och även om det var väldigt enkelt (kortet var inte processen ;-)), lärde det mig väldigt mycket ganska snabbt.

Fördelar:

  • Billigt
  • Hoppa rakt in i djupet och lär dig allt du behöver veta om maskinvaruöverväganden. Tvingar dig att läsa de flesta datablad först och skriva dina egna startkod, vilken IMHO ofta är bättre än plug-and-play-anslagstavlan för inlärning.
  • Sätt bara på tavlan vad du behöver.
  • Få dig längre mot din mål med en verklig arbetsdesign med möjligen samma ansträngning / forskning som att räkna ut hur man simulerar allt i realtid skulle göra.

Nackdelar:

  • Behöver fortfarande köpa en programmerare, även om billiga versioner av Xilinx / Altera-programmerarna finns på eBay.
  • Om design och problem med PCB / signalintegritet inte är något du vill fokusera på, kanske du inte är intresserad av mycket av den kunskap du kan få genom att göra det på detta sätt.

Jag förstår att din egen tavla antagligen är onödig, jag gjorde det bara för att jag hade FPGA: erna där, var otålig och ville inte vänta 2 veckor på att ett PCB skulle komma fram. Det finns extremt billiga erbjudanden här för 2-skivkort, vilket skulle göra för att åtminstone köra din design (eventuellt vid lägre hastigheter än vad som så småningom önskades – normalt skulle lägsta lagerantal för en FPGA-design med hög hastighet vara 4, men dessa är mycket dyrare)

Hur som helst, Spirit Circuits gör en helt gratis 2-lagers ”nakna ben” PCB-affär (en i månaden, en design, ingen mask eller silkscreen) som är praktiskt för en engångsdesign .
Dessutom, för korrekta 2 och 4-lagers billiga prototypkort, går ITead och Seed Studio så lågt som $ 10 för 10 kort (eller möjligen 5 till det priset) tjänster.

Kommentarer

  • väldigt intressant ta det här! och uppmuntrande också

Svar

Standard Xilinx ISE Webpack (gratisversionen som du kan ladda ner från xilinx.com) innehåller en simulator som heter iSim. Det är inte en bra simulator, men är helt funktionell och priset är rätt.

Även om jag inte har använt Altera-verktygen, skulle det förvåna mig om en simulator inte inkluderades.

Men … Du måste veta vad en simulator kan och inte kan göra Till att börja med kan det inte simulera en FPGA som körs med full hastighet. De är faktiskt ganska långsamma. Beroende på komplexiteten hos FPGA som simuleras skulle det inte förvåna mig att se att det tar 1 minut att simulera 1 ms simulerad tid ”. Om du vill simulera en timme med” simulerad tid ”skulle det kräva 1000 timmars realtid.

Dessutom kan en simulerad FPGA inte kommunicera direkt med saker som din USB-port. Den simulerade FPGA kommunicerar med en ”testbänk”. Testbänken är en bit av VHDL- eller Verilog-kod som matar ingångarna till FPGA (eller delar av FPGA) och verifierar utdata från din FPGA. Du kan göra några ganska komplexa saker i en testbänk , som att använda flytande siffror, läsa och skriva filer och köra logik som är omöjlig att syntetisera.

Kommentarer

  • A ltera ’ har gratisutgåvor av Quartus som inkluderar ModelSim. Den fria versionen av ModelSim begränsar din simuleringshastighet, och den fria versionen av Quartus begränsar antalet CPU-kärnor som används för att syntetisera, men är annars fullt fungerande.
  • Altera ModelSim stöder inte samsimulering av VHDL och Verilog i samma design.

Svar

Jag känner inte till någon simulator som direkt kommer att gränssnitt till signaler som anländer till en USB-port (eller annan hårdvara).

Åtminstone i teorin skulle det vara möjligt att skriva programvara som skulle ta signaler som anländer till en port och översätta dem till en testbänkfil som en simulator kunde bearbeta. Tyvärr känner jag inte till någon befintlig programvara för att göra detta, och att skriva det själv skulle vara utan tvekan.

Kommentarer

  • då är det bästa sättet att få en inträdesnivå, låg kostnad fpga-kort för n00bs som jag
  • Du behöver inte ’ t måste faktiskt gå igenom en testbench-fil om du har en simulator h stöder ett gränssnitt för anpassad kod, en sådan VPI, men med tanke på att simulatorn kommer att köra storleksordningar långsammare än realtid, kan det vara lättare att hantera fångad data i en fil som kan läsas med simuleringshastigheten.
  • @ChrisStratton Jag är intresserad av idé om fångad data i en fil. Några resurser för det? Tack
  • Det beror helt på de kringutrustning du vill använda som datakällor.

Svar

Du måste använda ett samsimuleringsgränssnitt (DPI, VPI, VHPI, FLI) som låter dig skriva kod som ansluts till simulatorn och därmed överbrygga mellan RTL som körs i simulering och riktig hårdvara på din maskin .

De betydande problemen du stöter på (förutom dåligt dokumenterade gränssnitt) är synkronisering och tidsrelaterad. RTL som körs i simulering är långsammare än riktig hårdvara – du måste kunna gå igenom interaktioner med det externa gränssnittet för att matcha simuleringshastigheten. Vissa hårdvarugränssnitt kommer inte så här! Om du till exempel använder TCP kan du behöva fudge timern i kärnstacken för att undvika falska återutsändningar etc.

Icarus stöder VPI och är gratis så att du kan experimentera utan att spendera några pengar på licenser. Du kanske vill titta på befintliga ramar som gör en del av samsimuleringen tunga lyft och ger en renare abstraktion till simulatorn. Ett sådant ramverk är Cocotb , ett bibliotek med öppen källkod som ger ett Python-gränssnitt till simulatorn. ( Ansvarsfriskrivning: Jag är en av utvecklarna av cocotb.)

Ett exempel som kan vara relevant: igår slog jag upp några RTL för att svara på pingförfrågningar och skapade en testbänk som öppnar ett TUN-gränssnitt. Du kan sedan pinga gränssnittet med kommandot ping och RTL som körs i simulering tar emot pingen och svarar. Hela testbänken är mindre än 50 rader Python! Källkoden för detta exempel finns på Github och den körs på Icarus under Linux.

Svar

I de allra flesta fall förblir allt du gör i simuleringen i simuleringen. Du kan inte få tillgång till riktig hårdvara från den – du måste ha en simuleringsmodell av den verkliga hårdvaran.

Men om du är villig att anstränga dig har de flesta simulatorer ett gränssnitt för godtycklig kod. I Verilog är det ett ganska standardgränssnitt som jag förstår det, så Verilog-sidan kommer att hamna mellan simulatorer. I VHDL-land finns det ett vanligt sätt att göra det men åtminstone en av de stora leverantörerna har sitt eget sätt att gör det!

Tänk också på att gränssnitt i realtid (dvs. i den takt som FPGA skulle göra det) är mycket osannolikt – och resten av din simulering (HDL) kommer inte att köras i riktigt -tid heller.Som noterats i kommentarerna är simulerad bearbetning av video i realtid inte möjlig på detta sätt.

Personligen har jag aldrig haft ett behov av att prova det, jag tycker att jag är mer produktiva skrivmodeller av hårdvaran och kör allt i VHDL.

Men glöm inte fördelarna med att göra simulering – det är ett mycket snabbare sätt att hitta om saker fungerar (sammanställningar tar sekunder) och sedan bygga bitströmmar (kompilerar tar tio minuter till timmar) och prova dem i hårdvara.

Kommentarer

  • Osant, se kommentarer till frågan.
  • OK, jag borde ’ ha varit tydligare – jag begränsade mitt svar till ” I ’ m ny på FPGA ” nivå 🙂 Svaret uppdaterat

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *