Berekening van bewegende gemiddelde Dit VI bereken en vertoon die bewegende gemiddelde, met behulp van 'n voorafgekies nommer. Eerstens, die VI initialisatie twee verskuiwing registers. Die top skuifregister is geïnisialiseer met een element, voeg dan voortdurend die vorige waarde met die nuwe waarde. Hierdie verskuiwing registreer hou die totaal van die laaste x metings. Na die verdeling van die resultate van dié byvoeging funksie met die vooraf gekies waarde, die VI word bereken dat die bewegende gemiddelde waarde. Die onderste skuifregister bevat 'n verskeidenheid met die dimensie Gemiddelde. Hierdie verskuiwing registreer hou alle waardes van die meting. Die vervanging funksie vervang die nuwe waarde na elke lus. Dit VI is baie effektief en vinnig, want dit gebruik die vervang element funksie binne die while lus, en dit initialisatie die skikking voordat dit die lus gaan. Dit VI is gemaak in LabVIEW 6.1. Bookmark amp ShareCommunity Op: 14 Augustus 2013 12:56 deur SamHorst - Last Modified: 14 Augustus 2013 12:58 deur SamHorst Implementering van 'n doeltreffende, bewegende gemiddelde filter in LabVIEW FPGA Track / Summit: Embedded Systems Abstract: Baie ingeboude beheer en monitering stelsels ly lawaaierige sensor data, om die funksie en die akkuraatheid van die stelsel in gevaar stel. Noisy sensor data kan stryk met behulp van bewegende gemiddelde filters, maar die implementering van sulke filters op 'n CompactRIO stelsel met FPGA en beperkte hulpbronne kan wees uitdagend. Vind die uitdagings en stappe vir die bereiking van 'n doeltreffende-FPGA-gebaseerde bewegende gemiddelde filter algoritme. Kyk na die LabVIEW FPGA-kode in detail en bespreek tegnieke om te help met die bewaring van hulpbronne. Spreker (s): Neville Dholoo, Advanced Metings Inc. I het 'n vraag met betrekking tot deurlopende gemiddeld van ADC waarde. Die benadering wat ek gebruik is deurlopende gemiddeld van byvoorbeeld 256 monsters. Die adcaout waarde (in die onderstaande kode) wat ek ontvang op inkremente my GUI stadig. As 'n voorbeeld, as Ek verwag waarde 100mA, My GUI toon 4mA, 8mA, 15mA. en dan uiteindelik na 2 minute kry ek stabiele 100mA waarde. Ek wil die 100mA direk op my GUI sien uit adcaout in plaas van inkrement waardes en stabiliseer ná een of ander tyd. Nog 'n vraag is dit, kan ek een of ander manier hierdie proses vinnig te maak sodat ek hoef nie te wag vir 3 minute vir die ontvangs van 'n stabiele 100 mA van adcaout. Die klok CLK in die digitale ontwerp hieronder is 20 MHz. Die klok vir die ontvangs van ADC waardes op die FPGA raad is 15 kHz. - Die adc. vhd lêer is hieronder: Jou kode is soos volg verander: Die finale uitset wat ek lees op my GUI is slvvalue1 en slvvalue2 Hoe gaan dit: op herstel (of op enige ander tyd as jy wil), toewys die datain waarde om al die elemente in jou stadium skikking. Dit moet onmiddellik ingestel jou gemiddelde om die huidige waarde: Die voorbeeld hieronder toon die volledige kode vir 'n bewegende gemiddelde sakrekenaar. My voorstel is dat jy dit bestudeer totdat jy dit verstaan. Dan probeer om dit te gebruik in jou ontwerp. Ten slotte, en eers nadat jy 'n basiese kring werk, jy kan dit verander om te voldoen aan jou ontwerp beperkinge (breedte data, aantal monsters, verskeidenheid van heelgetalle, gebruik van onderteken teen heelgetal. Ens) Ten slotte, as jy wil gebruik bogenoemde kode vir twee afsonderlike gemiddeldes vir twee afsonderlike seine te hou, net instansieer die gemiddelde entiteit twee keer: Edit: Soos ek dit verstaan uit jou kommentaar, kan 'n ekstra insette wat jy nodig het om die gemiddelde onmiddellik ingestel om die huidige insette waarde. In daardie geval, kan jy 'n vrag insette gebruik soos hieronder getoon: geantwoord 26 November 13 aan 15: 45Fast Rekenkundige op FPGA Gebruik oortollige Binary Apparaat Abtract Die oortollige binêre voorstelling (RBR) het baie voordele bo tradisionele binêre voorstelling. Hierdie artikel poog om die nut van RBR op FPGA demonstreer. Die prestasie en eienskappe van apparaat vir rekenkundige operasies (optel, aftrek en vermenigvuldiging) en herleiding tussen die volgende twee-twee aanvulling en RBR geëvalueer. 'N vinniger omskakeling skema van RBR om twee-twee aan te vul en bewegende gemiddelde FIR filter word ook gedemonstreer. Inleiding Die oortollige binêre voorstelling (RBR) is 'n syfer stelsel wat meer stukkies as wat nodig is om 'n enkele binêre syfer, sodat die meeste nommers het verskeie vertoë verteenwoordig gebruik. RBR is in teenstelling met gewone binêre getal stelsels, insluitend twees aanvulling, wat 'n enkele stukkie vir elke syfer. Baie van RBRs eienskappe verskil van dié van 'n gereelde binêre voorstelling stelsels. Die belangrikste is dat RBR laat benewens sonder die gebruik van 'n tipiese dra, maar maak bis logiese operasie stadiger. Gewoonlik, elke bietjie 'n teken dat dit nie noodwendig dieselfde as die teken van die getal verteenwoordig. Wanneer syfers het tekens, RBR is ook 'n getekende-syfer verteenwoordiging (1). RBR is 'n plek-waarde notasiestelsel (2). In RBR, syfers is pare van stukkies, dit wil sê vir elke plek RBR gebruik 'n paar stukkies. Die waarde verteenwoordig deur 'n RBR syfer kan gevind word met behulp van 'n vertaling tafel. Hierdie tabel dui die wiskundige waarde van elke moontlike denim stukkies. Soos in die konvensionele binêre voorstelling, die heelgetal waarde van 'n gegewe verteenwoordiging is 'n geweegde som van die waardes van die syfers. Die gewig begin by 1 vir die regterkantste posisie en styg met 'n faktor van 2 vir elke volgende posisie. Gewoonlik, RBR kan negatiewe waardes. Daar is geen enkele teken bietjie wat sê as 'n RBR verteenwoordig getal positief of negatief is. Die meeste heelgetalle het verskeie moontlike vertoë in 'n RBR. 'N heelgetal waarde kan terug van RBR met behulp van die volgende formule, waar n die aantal syfer en dk is die geïnterpreteer waarde van die k - de syfer, waar k begin by 0 op die regterkantste posisie omgeskakel word: Notasie gebruik word om die volgende oorbodig binêre verteenwoordiging word in hierdie artikel: tabel 1 Voorbeeld van oortollige binêre vertaling tafel hierdie notasie het voordele nie in ander onnodige binêre voorstelling. Dit is moontlik om maklik te vind die toevoeging inverse van 'n waarde van daarby al die stukkies van die verteenwoordig waarde behulp NIE hekke. Dit laat bou adder / aftrekker eenheid makliker. (8) Optel Eenheid Optel in oorbodig binêre voorstelling gedoen kan word in 'n konstante tyd Inteendeel om benewens in twees aanvulling notasie. Dit kan verklaar word deur die feit dat die oordrag hoef te propageer deur al die breedte van die toevoeging eenheid. Dit beteken egter nie dat die toevoeging is altyd vinniger in RBR as wat twees aanvulling verteenwoordiging, maar dat die toevoeging uiteindelik vinniger in RBR sal wees met 'n toenemende bietjie breedte, want die twee-twee aanvulling toevoeging eenhede vertraging is eweredig aan te meld (N) (waar n die bietjie breedte) (3). Resultate (Xilinx) Met die oog op, is dit interessant om die prestasie van tipiese binêre opteller eenheid en onnodige binêre opteller eenheid oorweging van hul bietjie breedte vergelyk. Die volgende resultate is verkry deur gebruik te maak van Altera en Xilinx platform. Figuur 2 Kombinatoriese vertraging vir oortollige binêre opteller op Xilinx Virtex 5 Tabel 2 Redundante binêre opteller vertraging op Xilinx platforms Diegene resultate dui daarop dat oortollige binêre voorstelling vinniger as twee-twee aan te vul verteenwoordiging op Xilinx platform wanneer die operande groter as 32 stukkies geword geword. Daarbenewens word die hoeksteen van rekenkundige operasies, kan dit verwag word dat soortgelyke resultaat verkry sal word vir ander rekenkundige operasies. Maar dit kom by die koste van die gebruik van omtrent twee keer soveel LUT hulpbron. Resultate (Altera) Figuur 3 Kombinatoriese vertraging vir oortollige binêre opteller op Altera Stratix III EP3SE80F1152C2 Tweeën aanvulling Tabel 3 Kombinatoriese vertraging vir oortollige binêre opteller op Altera Stratix III Performance van RBR adder eenheid is baie beter op die Altera platform. Die RBR adder is altyd vinniger as die gewone twee-twee aan te vul basilisk. Dit kan verklaar word deur die feit dat Stratix III FPGA argitektuur is veel beter op sewe insette om 'n uitset kombinatoriese funksie (4). Substraction Eenheid Die aftrekking is dieselfde as die toevoeging behalwe dat die toevoeging inverse van een van die operand moet gevind word. In wese, die aftrekking is die toevoeging van een van die operand om die toevoeging inverse van die ander operand. Die gebruik van die notasie wat in hierdie artikel, is die toevoeging inverse van 'n waarde maklik gevind word deur omkeer elke bietjie van 'n operand. Vermenigvuldiging Eenheid Die vermenigvuldiging eenheid hier geëvalueer word gemaak van baie adder eenheid gereël in 'n boom. Die vermenigvuldiging eenheid nie pyplyn hoewel dit maklik kon wees. Eerstens, is alen bereken deur elke syfer van 'n operand vermenigvuldig met elke syfer van die ander operand behulp gewone rekenkundige (5): Tabel 5 Kombinatoriese vertraging in vermenigvuldiging eenheid op Xilinx Virtex 5 Die vertraging in die vermenigvuldiger-eenheid soos gesien in Figuur 4 en Tabel 5 is eweredig aan te meld N waar n die bietjie breedte van die operande. Dit is 'n inherente kenmerk van die adder boom wat in die ontwerp van die vermenigvuldiger-eenheid. Die prestasie van 'n RBR vermenigvuldiger eenheid begin interessant te wees wanneer die vermenigvuldiger-eenheid het bietjie breedte van meer as 32 bit. Wanneer dit die geval is, die vertraging van die vermenigvuldiger kleiner as die vertraging van die gespesialiseerde vermenigvuldiger baan van Xilinx FPGAs. Maar dit kom teen 'n aansienlike koste van LUT (Tabel 6). Daarbenewens kan dit ontwerp maklik pyplyn wat lei tot 'n beduidende vermindering van die vertraging. Byvoorbeeld, kan 'n 64 stukkies RBR vermenigvuldiger eenheid as 'n 6 stadiums pyplyn geïmplementeer word deur die toevoeging van D flip-flop tussen elke vlak van die adder boom dus gebruik te maak van meer van die FPGA hulpbronne. Met inagneming van hierdie, is die frekwensie sal na verwagting ses keer hoër. Hierdie ontwerp sal interessant wees vir 'n verwerker wat net die oortollige binêre voorstelling sou gebruik. xc5vlx85-3ff676 oortollige (nommer van LUT) xc4vlx80-12ff1148 oortollige (nommer van LUT) Table 6 Hulpbronne wat gebruik word deur RBR vermenigvuldiger eenheid op Xilinx Virtex Resultate (Altera) Hierdie vermenigvuldiging eenheid nie goed presteer in vergelyking met die ingeboude in vermenigvuldiging eenheid op Altera platform. Dit was te wagte omdat Stratix III FPGA toegewy vermenigvuldiging eenheid geprogrammeer met inheemse ondersteuning aan 36 stukkies (6). Figuur 5 Vertraging in Altera vermenigvuldiging eenheid EP3SE80F1152C2 Tweeën Komplement Tabel 7 Vertraging in Altera vermenigvuldiging eenheid Redundante binêre binêre converter Die converter wat hier aangebied word gebruik Xilinx en Altera gespesialiseerde dra voortplanting kring om oortollige binêre binêre sukses te versnel. Die basiese idee is om te sit die oortollige binêre nommer twee twees te vul nommer wat dan kan bygevoeg word met enige twee-twee aanvulling adder (7). Dit laat meer doeltreffend gebruik van die FPGA hulpbronne en is die meeste van die tyd vinniger as 'n gereelde oorbodig binêre binêre converter met behulp van 'n opeenvolgende basilisk. X 'n onnodige binêre getal, is dit moontlik om dit te omskep in 2 twees te vul nommer: Diegene 3 nommers moet bygevoeg word met behulp van standaard twees te vul basilisk. 'N Enkele adder is nodig aangesien 1 as 'n dra in kan bygevoeg word. So het die gespesialiseerde adder kring van FPGAs kan gebruik word om die sukses van RBR om binêre voorstelling maak. Resultate Figuur 6 Vertraging in RBR om twee-twee aan te vul omskakeling eenheid op Xilinx platform Table 9 Hulpbronne wat gebruik word deur RBR om binêre converter op Xilinx platform Gespesialiseerde adder gebaseer omsetters teenwoordig, vir operande tot 128 stukkies, die beste vertonings in terme van spoed en hulpbronne gebruik. FIR Filtreer. Bewegende gemiddelde FIR filters word gebruik in 'n verskeidenheid van kommunikasie toepassings. FIR filter kan voorgestel word as 'n reeks van rekenkundige operasie. Omdat beter rekenkundige spoed bereik kan word met RBR op FPGA, is 'n toename in FIR filter spoed verwag. Die FIR filter hier bestudeer is die bewegende gemiddelde. Die uitset is die som van die N laaste insette. geïmplementeer as 'n omsendbrief buffer. Tydens elke siklus 'n waarde is gelees en die nuwe insette waarde is geskryf aan die hoof van die omsendbrief buffer. Die bewegende gemiddelde filter kan ook rekursief word uitgedruk in die volgende manier: die laaste waarde is gestoor in 'n register sodat kan bereken word met behulp van die formule hierbo gedurende die volgende siklus. Tydens elke siklus, moet ons optel en aftrek tot. 'N toevoeging eenheid en 'n aftrek-eenheid word gebruik om die volgende waarde van te bereken. Figuur 8 Maksimum vertraging van bewegende gemiddelde filter op Xilinx platform Table 11 Maksimum vertraging van bewegende gemiddelde filter op Altera EP3SE80F1152C2 Die gevolg van die oortollige binêre eenheid is uitstaande. Veral, die Xilinx 5 platform voer op byna konstante tyd met behulp van oortollige binêre. Ten slotte Die bogenoemde show vertoon gevolg dat binêre voorstelling oortollige nuttig te bespoedig rekenkundige operasie selfs op FPGA. Optelling, aftrekking en vermenigvuldiging gewees show om vinniger te wees wanneer RBR gebruik word, maar een of ander tyd net vir bietjie breedte van 64 bit en hoër. Maar hierdie spoed kom teen 'n koste wat dikwels aanvaarbare oorweging van die tyd kritiese aard van digitale filter. Ook, dit is redelik om RBR gebruik in net 'n subset van 'n groot kring ag geneem word dat RBR om aanvulling omskepping twees is relatief vinnig wanneer dit behoorlik gedoen. Verdere studie oor groter kring met behulp van RBR sal interessant wees. Maklik plek en roete werking verwag as gevolg van die simmetriese aard van RBR apparaat. Bronkode ek hiermee stel dit hiermee bronkode onder GPL. Jy kan dit hier aflaai. Die bron is in VHDL. movingavg. vhd is 'n bewegende gemiddelde filter. radder. vhd is 'n RBR basilisk. raddsub. vhs is 'n RBR adder / substractor. rmul. vhd is 'n RBR vermenigvuldiger. rconv. vhs is RBR om twee-twee aan te vul converter. tworconv. vhd is 'n twee-twee aanvulling tot RBR converter. Werke aangehaal 1. Panami, Behrooz. Algemene Geteken-syfergetal Systems. 'N verenigende raamwerk vir oortollige nommer Vertoë. IEEE Transactions op rekenaars, Vol. 39, NO. 1. pp. 89-98. 2. Wikipedia. Posisionele notasie. Online aangehaal: 18 Augustus 2008 en. wikipedia. org/wiki/Positionalnotation. 3. Pai, Yu-Ting en Chen, Yu-Kumg. Die vinnigste dra look ahead basilisk. Elektroniese Ontwerp, toets en aansoeke. Tweede IEEE International Workshop, 2004. 4. Altera. Stratix II: 8-insette Fracturable LUT in die ALM. Altera webwerf. Online aangehaal: August 20, 2008 www. altera / produkte / toestelle / Stratix-fpgas / Stratix-II / Stratix-II / funksies / argitektuur / ST2-Lot. 5. Guoping Wang, Murad Ozaydin, Monte Tull. High performance deler met behulp van oortollige binêre voorstelling. IEEE. 2002. 6. DSP System Design in Stratix III toestelle. Altera. Online aangehaal: 6 Oktober 2008 www. altera / literatuur / 'n / an504.pdf. 7. Iljoo Choo, R. G. Deshmukh. 'N roman Gesprek Skema Van 'n oortollige binêre getal te Tweeën Komplement Binary nommer vir Parallelle argitektuur. IEEE. 2001 8. sistematiese ontwerp van pyplyn Rekursiewe Comments nie. Lapointe, Marcel, Huynh, Huu Tue en Fortier, Paul. S. L. IEEE Transactions op rekenaars, 1993.Moving Avergare Filter (MAF) in VHDL 2008 vir DE0-NANO met FPGA Cyclone IV. Dit filter werk met 'n vaste punt dat die aantal bisse hang af van die ADC. Oor die bewegende gemiddelde filter 'n bewegende Gemiddelde Filter is 'n digitale filter wat gemiddeld van die insette laaste M 1 terme soos die volgende expresión: Die gebruik van die tweede direkte-vorm kan ons HN definieer soos volg: HN xn HN-1 So yn kan wees expresed in hierdie waw: yn (HN - HN-M) / (M 1) struktuur van die filter die Top hiërargie is maftop. vhd dat al die filters struktuur definieer. Om te genereer uit HN-1 tot HN-M, slippers word gebruik om vertragings. Jy kan nie uit te voer die aksie op hierdie tyd. Jy onderteken met 'n ander blad of venster. Reload om jou sessie te verfris. Jy onderteken in 'n ander blad of venster. Reload om jou sessie te verfris.
No comments:
Post a Comment