Monday 16 October 2017

Vhdl Glidande Medelvärde Exempel


Jag försöker skriva en VHDL glidande genomsnittsviktad modul som använder FSMD ata. Från vad jag förstår skulle de nödvändiga staterna vara något som hämta, dela, utföra. Nedan är processen jag skrev, men jag känner att min logik är lite av Observera att de data jag m medger är bara en konstant serie med 8 bitars tal, så jag tänkte att det borde vara bra att använda en icke-orsakssammanställning. Data har 64 poster, och för närvarande är fönstret för medeltalet 4. Hur fel ser det här ut. Ett fåtal problem kan jag se omedelbart. Du börjar inte initiera temp någonstans. Du har inte några gränskontroller för att räkna är det en subtyp eller bara ett naturligt heltal. Vad händer med mönsterräkning jag när du närma sig gränsen Hur rullar du över. Din för-loop är 0 till len - är du säker på att du inte menar 0 för att länka - 1. Eftersom hela din avkodningsprocess är klockad behöver du inte alls nstate alls. Observera att du börjar inte ens initiera cstate men du avkodar det fortfarande. Du kan antingen avkoda din egen separat kombination al process eller bara bli av med nstate och tilldela cstate direkt. Annars beror det på dina designmål Om du inte bryr dig om genomströmning men behöver springa med en mycket hög klockfrekvens, kanske du vill utföra ditt tillägg i följd istället för parallellt, till exempel. ansvarsfullt september 5 14 på 13 32.thanks, som definitivt gör saker bättre om count rollover, jag är inte säker på riktigt hur man gör det eftersom för varje mönster räkna upp till 63, jag vill visa sin värde och medelvärdet av fönstret runt det, så om jag rullar över i landet, borde det inte gå utom gränserna men det kommer inte visa fullständiga data om jag genomförde ett kausalt genomförande, jag skulle ha försening i början, är det en liknande sak som jag behöver här men hos slutanvändaren1710566 5 september 14 vid 23 23.my lösning var elsif clk händelse då om räkna 64 sedan räkna 0 annars beräkna slutet om i för loop jag sätter en utgång om räkning jag var större än 63 user1710566 Sep 6 14 på 0 05. Jag har en fråga relaterad till kontinuerlig medelvärdering av ADC v alue Tillvägagångssättet som jag använde är kontinuerlig medelvärde av exempel 256 prover. Adcaout-värdet som visas i koden nedan som jag får i mina GUI-inkrementer långsamt. Exempelvis, om jag förväntar mig värde 100mA, visar min GUI 4mA, 8mA, 15mA och sedan äntligen efter 2 minuter får jag ett stabilt 100mA-värde Jag vill se 100mA direkt på min GUI från adcaout istället för stegvärden och stabilisera efter en gång En annan fråga är det, kan jag på något sätt göra processen så snabb att jag inte behöver vänta på 3 minuter för att ta emot stabila 100 mA från adcaout Klockan clk i den digitala designen nedan är 20 MHz Klockan för att ta emot ADC-värden på FPGA-kortet är 15 KHz. Filen är nedan. Din kod ändras enligt följande. Final output som jag tittar på min GUI är slvvalue1 och slvvalue2.How om detta vid återställning eller när som helst om du vill, tilldela datainvärdet till alla element i din scenmatris. Detta bör genast ange ditt medelvärde till det aktuella värdet. Exempel nedan visar t han kompletterar koden för en glidande medelkalkylator Mitt förslag är att du studerar det tills du förstår det. Försök sedan använda det i din design. Slutligen, och först efter att du har en grundläggande krets som fungerar, kan du ändra den så att den uppfyller dina konstruktionsbegränsningsdata bredd, antal prover, intervall av heltal, användning av signerad vs heltal etc. Finally, om du vill använda ovanstående kod för att hålla två separata medelvärden för två separata signaler, enkelt instansera den genomsnittliga enheten twice. Edit Som jag förstår från din kommentarer, kan du behöva en extra ingång för att ställa in genomsnittsvärdet direkt till det aktuella ingångsvärdet. Då kan du använda en inmatningsinmatning enligt nedan. Ansökan 26 november 13 vid 15 45.VGA-gränssnitt och kontroll med MENTOR GRAPHICS HDL DESIGNER Software. and Altera DE1 Development Board. SE MY DEVOTED DE1 SIDAN I LÄNKAN HÄRVIDDEN. Programvaran som används i denna handledning kallas HDL Designer av Mentor Graphics tillsammans med de olika följeslagsprogrammen, som. ModelSim och Precision Synthesis. Bara att informera alla innan vi går längre. kommer INTE att ge ut hela VHDL källkodsfiler för nedladdning. Om du är ny på VHDL-programmering, rekommenderar jag att du granskar min VHDL-sida som en introduktion. Men om du redan programmerar och förstår VHDL i viss mån kan du Hoppa över Intro och fortsätt .- Companion Textbook för detta Project. A Rekommenderas starkt Textbok för detta projekt är en av de två böckerna nedan. RAPID PROTOTYPING OF DIGITAL SYSTEMS. Dessa specifika läroböcker innehåller lite bra information om VGA-gränssnitt och det ger några av Basic VHDL-koden för att skapa en VGA-kontroller Jag rekommenderar starkt att du köper en av dessa böcker för att stärka din förståelse. Denna handledning visar dig hur du programmerar Altera DE1 D evelopment Board, för att producera de nödvändiga VGA-kontroll - och datasignalerna för visning av 2D-färggrafik på en VGA-datorskärm. Detta ger dig möjlighet att producera ett grundläggande 2D PONG-stilspel. Många VHDL PONG-stilspel har visats online. den här nedan Det här liknar vad ditt slutliga projekt kommer att se ut när det är klart. Du är dock fri att lägga till fler funktioner till spelet om du har tid att göra det innan slutet av din semester. Tilläggsfunktioner kan läggas till ditt spel för dig som vill gå utöver översikten av de här handledningfunktionerna som ett resultatstyrelse, tidsbegränsning, ljudeffekter eller till och med ett joystick-spelplattans kontrollgränssnitt för två spelare. Detta uppmuntras definitivt eftersom det hjälper till att stärka din förståelse av VHDL-koden. Denna handledning använder en skärmupplösning på 640 x 480 med en 60 Hz skärmuppdateringsfrekvens Om du vill gå ut och försöka använda högre upplösningsinställningar som 800 x 600, 1024 x 768 eller till och med 1600 x 1200 så gör det med allihop Du skulle definitivt vara uppe för några viktiga bonuspoäng om du kan få det till jobbet. Se länken nedan för en lista över de olika VGA-signaleringskraven för olika upplösningsinställningar. Denna handledning kan enkelt appliceras till andra utvecklingsbord och andra VHDL-programvarupaket. Bord som Altera DE2, Altera UP1, UP2, CPLDT-2 och många fler Du kan även använda en Universal Programmerare för att programmera din egen CPLD eller FPGA. Det finns också möjlighet att använda en JTAG-gränssnitt Programmerare och ansluta det till en JTAG-kompatibel FPGA Med detta kan du använda en 15 00 JTAG programmerare som Altera USB-BLASTER för att programmera din egen CPLD eller FPGA-enhet. Så länge som FPGA du köper stöder en JTAG-gränssnittet så kan du koppla upp det själv och helt enkelt Programma det med samma Logic-programvara som du använder med DE1-utvecklingsbordet. För en detaljerad förklaring på JTAG-gränssnittet, kolla in min JTAG-gränssida och instruktionsvideo på länken B elow. I har utarbetat en uppsättning instruktionsvideor för detta projekt för din recension. Videon kommer att täcka de begrepp som behövs för att du ska kombinera 10 separata VHDL-block i HDL Designer för att skapa ett PONG Style-videospel på din Altera DE1 Development Board. Gränssnitt din DE1 till en VGA-skärm med inbyggd DB-15 VGA-port. Nu, eftersom det här är ett populärt TERM-projekt för många högskolor och universitet, kommer jag INTE att ge VHDL Source Code-filer för att du bara ska ladda ner, kopiera och klistra in i din projekt och skicka sedan in det till din professor och få en gratis åktur för detta projekt. Jag kommer att ha olika instruktionsvideor som går över de grundläggande begreppen i projektet och jag kommer också att ha några allmänna VHDL ARCHITECTURE och PROCESS-exempel för var och en av de 10 VHDL-block Det är upp till dig att använda exempelkoden till ditt eget projekt. Jag anser att det är viktigt att du skriver ut din egen kod, kör simuleringar och se hur sakerna fungerar genom rättegång och fel. Bara kom ihåg Yo Du kan göra det här. Försök skriva ut en viss VHDL-kod själv, kör MultiSim-simuleringar och du kommer se hur snabbt du kan lära dig. Så igen, kommer jag INTE att ge ut VHDL-källkodsfilerna för nedladdning. Om du använder den här webbsidan och min Instruktionsvideo s som en guide, du kommer att göra det bra. Du kan göra det här. Nu, om jag skulle svara på 100 s av e-postmeddelanden skickar du alla mig och frågar om hjälp med din VHDL-kod, skulle jag inte kunna att hitta tiden att arbeta eller ens äta Så snälla Registrera, och fråga alla dina VHDL-relaterade frågor på CPLD FPGA Digital Design Forum. Om du behöver hjälp med din VHDL-kod eller andra Engineering-relaterade projekt är forumet rätt plats Du kan prata med andra yrkesverksamma inom branschen för att hjälpa till att felsöka och lösa dina VHDL-kodningsproblem. Deras webbhotellbaserade GUI är utrustat med både CODE - och COMMENT-formatering. Det gör meddelandeposterna mycket tydliga och organiserade. Med dina meddelanden klart formaterade på det här sättet, tillåter andra att hjälpa dig mer effi känsligt och i rätt tid Så det här är en fantastisk resurs och jag rekommenderar starkt att du går med i VGA-gränssnittet. VGA-gränssnittet standardiserades av IBM år 1987 med signalbehov för att visa färgbilder på en katodstrålbussdator eller CRT för kort När LCD-skärmar släpptes senare antog de samma VGA-signalstandard för att kunna fungera med den nuvarande datorns infrastruktur ute i världen. CRT-katodstråle Tube. CRT LCD Differences. CRT LCD - Cutaway Diagram. Därför har LCD-skärmar en internt översättarkrets som omvandlar VGA-signaler till den önskade LCD-kontrollen för flytande kristaller Signaler Allt detta sker automatiskt inuti LCD-skärmarna och fungerar alldeles för oss så vi behöver inte oroa oss för det. Vi är bra att gå. VGA-enheten Gränssnitt - Signalkrav. Basiskt finns det 5 separata signalkrav för VGA-gränssnittet att fungera. Dessa är H-SYNC V-SYNC-upplösningskontrollsignaler och RÖD GRÖN och BLÅ färg display signaler. H-SYNC V-SYNC signalerar du skickar till bildskärmen, diktera vilken upplösningsinställning du försöker använda Beroende på bildskärmen kan den bara stödja en specifik upplösning, där andra skärmar kan stödja mer än en Skärmen lagrar referenssignal Mönster för alla tillgängliga upplösningsinställningar, inom ett EEPROM-minneskrets som ingår i interna kretsar för monitorerna. Varje upplösningsinställning kräver en specifik H-SYNC V-SYNC-frekvens. Pulsbredd och Driftscykel Dessa signalkrav har standardiserats av IBM Vi kommer att använda den äldsta och minsta skärmupplösningsstorleken som finns tillgänglig, eftersom de flesta VGA-bildskärmar kommer att stödja den. Det är VGA 640 x 480-upplösningen med 60 Hz uppdateringshastighet. RÖD, GRÖN och BLÅ färgkontrollsignallinjer, varje användning Analoga spänningsnivåer mellan 0 0 till 0 7 Volt DC för att bestämma mängden färgintensitet som används för varje pixel Som du vet är alla färger gjorda av att blanda olika mängder RÖD, GRÖN och BLÅ tillsammans. H-SYNC V-SYNC-puls signaler. Tryck och se H-SYNC - och V-SYNC-signaler som Custom COUNTERS som ständigt körs och räknar upp till sitt maximala deklarerade värde, återställer till noll och räknar sedan upp igen varje gång H-SYNC-räknaren återställs till noll, V-SYNC-räknaren ökas endast med 1. Den animerade GIF-bilden som visas nedan visar hur H-SYNC V-SYNC-signalerna används tillsammans för att skapa skärmuppdateringscykeln när du tittar på dessa signaler som XY-räknare, räknar de väsentligen igenom varje bildpunkt på skärmen från det övre vänstra hörnet hela vägen ner i följd till det nedre högra hörnet. Denna process upprepar 60 gånger per sekund på grund av det faktum att vi använder en 60Hz uppdateringshastighet. H-SYNC - och V-SYNC-signalmönstren som vi skickar till VGA-bildskärmen, när de arbetar tillsammans skapar de Zig-Zag-skanningseffekten som visas nedan Nu, beroende på frekvens, pulsbredd och arbetscykel för dessa signalmönster vi kan skapa olika upplösningsinställningar ngs för att monitorn ska visas. Så vi har en specifik H-SYNC - och V-SYNC-signal Mönster för att skapa Zig-Zag-skanningsprocessen med en 640 X 480 skärmupplösning, och vi har också ett annat H-SYNC - och V-SYNC-signal Mönster för en 1600 X 1200 skärmupplösning och många fler. Bilden ovan visar faktiskt vad som heter Interlaced Frames Du behöver inte oroa dig för det just nu, eftersom vi inte använder det här formatet. Den animerade bilden är främst att vara brukade visa dig det grundläggande konceptet för en skärmuppdateringscykel. Nu när vi använder en upplösningsinställning på 640 x 480 betyder det att vi har 640 pixlar som går från vänster sida av skärmen till höger sida. Det betyder också att vi har 480 pixlar som går från toppen av skärmen till botten. Med andra ord, vad vi har här är en 640 x 480 pixelmatrix. Du kan överväga skärmens övre vänstra hörn som utgångspunkt för din H - SYNC och V-SYNC-räknare som börjar vid Zero H-SYNC-räknaren fortsätter sedan att öka genom alla 640 pixlar på den första horisontella raden från vänster till höger När den når slutet av raden, återställs den till början Men den här tiden går den också nedåt med en pixel till nästa rad och ökar V - SYNC-räknare med 1.Denna processen upprepas tills V-SYNC-räknaren räknas till 479, vilken tar den till den sista raden längst ner på skärmen. När H-SYNC-räknaren når den sista pixeln i nedre högra hörnet av Skärmen 639, både H-SYNC och V-SYNC-räknarna återställs till Zero. This tar oss tillbaka till pixeln Över vänster hörn och hela räknarprocessen startas om igen. Ett enda pass över hela skärmen kallas en skärm Uppdateringscykel och detta upprepas 60 gånger per sekund för att uppdatera skärmen och uppdatera varje pixel för en viss färg och i sin tur skapar detta en bild på skärmen. Granska den animerade GIF-bilden ovan för att få en bättre förståelse för denna skärmuppdateringsprocess i åtgärd .- Översikt över vårt 10-block VHDL Circuit .- VHDL BLOCKS - Arkitektur exempel. Sedan har jag lagt fram några VHDL Architecture och PROCESS-exempel som liknar vad du skulle behöva för var och en av de 10 VHDL-blocken för att utföra sin specifika funktion. Det är upp till dig att räkna ut hur man applicerar koden till ditt eget projekt och generera de signaler du behöver. VHDL BLOCK 1 - Klockdelaren. Klockdelaren ska vara en snap för dig att räkna ut, så inget reellt behov för ett exempel För vårt VGA-projekt behöver vi en CLOCK-signal av 25 175 MHz 25 MHz i vårt fall är bra Vi uppnår detta genom att dividera DE1-korten 50Mhz Clock-signal i halv. För MultiSim-simuleringar. För en 50MHz CLOCK-inställning, använd en klockperiod på 20ns. För en 25MHz CLOCK-inställning, använd en klockperiod av 40ns. VHDL BLOCK 2 3 - Ett typiskt MOD Counter-exempel. Min MOD25 Counter med en Power ON Reset-linje och en 25Mhz Clock. Single MOD Counter-exempel. Om du har problem med att få VGA-kontrollpulserna att fungera korrekt, försök byta återställningsstatus för MOD-räknare. Försök dessa räknevärden nedan och och kör några simuleringar. MOD-800 räknas från 0 till 793.MOD-525 räknas från 0 till 522.VHDL BLOCK 4 5 - Statens horisontella vertikala dekoder. MOMENTARPULSER FÖR UTGÅNGSLINJER. Vara medveten om att denna speciella VHDL-statliga maskin endast skapar Momentary Logic High Pulse på dina utgångar. De utgående STATE-linjerna kommer att förbli HÖG för endast 1 klockpuls, baserat på den inmatade CLK-källan som används för detta specifika VHDL-block. STATEoutputsna måste matas in i en Latch-krets som hålls HÖG under vilken tid som helst. Enstaka tillståndsmaskiner Exempel ovan är några exempel på olika motståndsstatpulser. På skärmen Capture som visas ovan, noggrant uppmärksamma tidsskillnaden mellan de två markörerna. och hur de relaterar till de andra staterna som visas. Horisontell vertikal SYNC DISPLAYTIME Signaler. LATCH CIRCUIT STAT MASKINER SOM ANVÄNDAS HÄR. Horisontell SYNC Signal Timing Waveforms. In SIGNAL TIMING Diagrammen som följer visar de Horisontal Vertikal SYNC pulser och även Horisontal och Vertikal DISLAYTIME Pulser Dessa Waveform mönster förekommer i en repeterande sekvens och jag har angett start - och stopppunkten för detta repeterande mönster. Jag har också inkluderat H-DECODER - och V-DECODER Momentaty HIGH PULSE-staterna i förhållande till det vågformade Mönstret i fråga. - Horisontell DISPLAYTIME Signalvågform .- Vertikal SYNC Signalvågform .- Vertikal DISPLAYTIME Signal Waveforms. LATCH CIRCUIT STAT MASKINER. VHDL-koden nedan är ett exempel på en låskrets som aktiverar en utsignal för att förbli antingen HÖG eller LÅG under vilken tid som helst tills den aktuella utgången är tilldelad för att ändra dess tillstånd. LATCH RESET Input Pulser används att som utlösare att initiera några förändringar Detta är i huvudsak den typ av krets som du behöver implementera för var och en av signalerna som visas i ovanstående Waveform-diagram. Visning av objekt på skärmen. Nu blir saker lite mer komplicerade här kommer jag att ha några exempel på DISPLAY PROCESS för att styra dig längs vägen, men det är upp till dig att räkna ut hur man lägger till rörelsekontrollerna på dina objekt. Det bästa sättet att förstå hur grundläggande färgade objekt visas på skärmen är som följer. Försök att titta på Horz och Vert MOD-räknare, mer som ett XY 2D-koordinatsystem på en Map. So föreställa våra Horz - och Vert MOD-räknare som XY-positionskoordinaterna för en ficklampa som skannar skärmen. Denna Fla Shlight kontrollerar Etiketter på varje pixel som kommer över etiketterna Anger vilken färg som pixel ska visa Röd, Grön eller Blå eller någon kombination av de tre. Hur vi gör det här i VHDL är att använda en extra uppsättning stdlogicvectors eller COUNTERS Precis som det brukade generera H-SYNC - och V-SYNC-signalerna Counterparterna blir XY-referenskoordinaterna för varje enskilt objekt som vi visar på skärmen. Det betyder att vi behöver ett XY-counterpar för varje separat objekt som vi På skärmen. Så, när våra Horz - och Vert MOD-räknare körs genom skärmen Uppdateringscykel, om räknarna vid någon tidpunkt råkar ha exakt samma X - och Y-koordinater som en av New XY-räknaren. YREFERENCECUNTER V-COUNTER OCH XREFERENCECUNTER H-COUNTER. then vi kan använda det här tillståndet för att aktivera RGB-linjerna för att börja visa en viss färg. I REPEAT STARTING från dessa XY-koordinater. Det betyder att du måste lägga till antalet XY pixlar för objektet som du vill visa, till förklaringen ovan. Eftersom du bara har sagt till systemet där du ska börja måla färgerna, men inte riktigt vilken väg du ska gå UPP NER VÄNSTER RÄTT eller ens var du ska sluta. YREFERENCECUNTER V-COUNTER OCH XREFERENCECUNTER H-COUNTER-storlek. Det finns fortfarande lite mer till det, så granska DISPLAYPROCESS-exemplen som jag har angett nedan och se om du kan räkna ut det. BALL-displayprocess Exempel - VHDL Block 7.PADDLE 1 Visa PROCESS Exempel - VHDL Block 8 9.Också granska sidorna 208 och 209 från den medföljande textboken som jag nämnde tidigare. Sedan är 2 PROCESS-exempel som kan ge dig några idéer för att få en boll studsande på skärmen. Granska de två exemplen, försök Koden, manipulera den, ändra den med dina egna idéer, prova olika saker och se om du kan få en boll att visa och studsa på skärmen. Nu, för att få bollkollisionerna att fungera med paddlarna kan det visa sig vara mer utmanande. Hjälpfullt kan dessa PROCESS-exempel hjälpa dig att komma igång och tänka på bättre sätt att skriva din egen VHDL-kod. VIDEO DEL 4 - ATT POSTAS. ADDITIONAL ANMÄRKNINGAR OM BALLCOLLISONS. Detaljerna nedan om paddla kollisioner kan vara lite överkill för de flesta av dig Men om du är en perfektionister och blir riktigt frustrerad eftersom bollkollisionerna med dina paddlar inte är uppför hur du vill ha dem till dig kanske vill läsa detaljerna nedan. Det är viktigt att inse att oavsett vilken riktning bollen reser, UPP, NED eller på en vinkel de villkor som du tillämpar på varje paddla för en boll Kollision varje villkor kommer att orsaka samma svar oavsett vilken sida kolliden kolliderar på paddeln. Det beror på att det är ett enda objekt. Kollisionsförhållandena för varje paddla är baserade på sin XY-talspar. För att ha olika kollisionssvar för var och en av 4 sidor. Du behöver i sin tur 4 separata räknepar eller 4 separata sidor som utgör en paddle. RGB Concatenation Display Block. This Block är helt enkelt en grupp av AND-grindar som går med eller CONCATENATE all o f RGB-färgerna tillsammans till en MASTER RGB-utgång. Så har du i princip en Multi-Input AND-grind för var och en av de enskilda RGB-färgerna En för alla RÖDA färger, en för alla GRÖN och en för alla BLÅ Slutligen kan denna MASTER RGB-utgång endast vara aktiv under den horisontella visningstiden OCH den vertikala visningstiden Så en annan AND-grind används, aktivera MASTER RGB-utsignalen endast när H-DISPAYTIME V-DISPLAYTIME är i ett logiskt HIGH-läge. ALTERA DE1 Board - Oanvända RGB-linjer måste vara bundna till GND. Det är viktigt att du kopplar ihop oanvända RGB-ingångsledningar till GND Eftersom dessa ibland kan orsaka att de oanslutna signalerna Float, vilket ger störningar och ljud på din VGA-skärm. Välja det om summan det up Folks. Hopefully kommer denna handledning åtminstone att få dig lite närmare att slutföra dina VHDL PONG-projekt.

No comments:

Post a Comment