Wednesday, 29 November 2017

Glidande medelvärde filter xilinx


Hög upplösning, låg fördröjning, SDR-baserad videotransmission i UAV-applikationer Integrerade RF-agila transceiverare används inte bara i programvarudefinierade radio (SDR) 1-arkitekturer i mobiltelefonbasbaser, såsom multiservice distribuerat åtkomstsystem (MDAS) och små cell, men även för trådlös HD-videoöverföring för industriella, kommersiella och militära applikationer, såsom obemannade flygbilar (UAV). Denna artikel kommer att undersöka en implementering av en bredbands trådlös videosignalkedja genom att använda AD9361 AD9364 2,3 integrerade transceiver IC, mängden data som sänds, motsvarande RF-upptagna signalbandbredd, överföringsavståndet och transmitterrsquos-effekten. Det kommer också att beskriva genomförandet av PHY-skiktet av OFDM och presentera hopp-frekvens-tidtestresultat för att undvika RF-störningar. Slutligen kommer vi att diskutera fördelarna och nackdelarna mellan Wi-Fi och RF-agile sändtagare i bredbands trådlösa applikationer. Signalkedjan Figur 1 illustrerar det förenklade trådlösa videotransmissionsschemat med användning av AD9361AD9364 och en BBIC. Kameran fångar bilden och överför videodata till en basbandsprocessor via Ethernet, HDMI reg. USB, eller ett annat gränssnitt. Bildkodningsavkodning kan hanteras av hårdvara eller FPGA. RF-fronten innehåller omkopplaren, LNA och PA till den programmerbara integrerade sändtagaren. Hur mycket data behöver sändas Tabell 1 visar den signifikanta storleksskillnaden mellan de okomprimerade och komprimerade datahastigheterna. Genom att använda högpresterande videokodning (HEVC), även känd som H.265 och MPEG-H Del 2, kan vi minska datahastigheten och spara bandbredd. H.264 är för närvarande ett av de vanligaste formaten för inspelning, komprimering och distribution av videoinnehåll. Det presenterar ett enormt steg framåt i videokomprimeringsteknik och är en av flera potentiella efterföljare till den mycket använda AVC (H.264 eller MPEG-4 Del 10). Tabell 1 sammanfattar de okomprimerade och komprimerade datahastigheterna i olika videoformat. Förutsättningar inkluderar ett videobitdjup på 24 bitar och en bildhastighet på 60 bilder / sek. I 1080p-exemplet är datahastigheten 14,93 Mbps efter komprimering, som då enkelt kan hanteras av basbandsprocessorn och det trådlösa PHY-lagret. Tabell 1. Komprimerad datahastighetssignalbandbredd AD9361AD9364 stödkanalbandbredd från lt200 kHz till 56 MHz genom att ändra provhastighet, digitala filter och decimering. AD9361AD9364 är noll-IF-transceivers med I - och Q-kanaler för att överföra komplexa data. Komplexdata innefattar reella och imaginära delar, som motsvarar respektive I respektive Q, vilka lokaliseras vid samma frekvensbandbredd för att dubbla spektrumseffektiviteten jämfört med en enda del. Den komprimerade videodata kan kartläggas till I - och Q-kanalerna för att skapa konstellationspunkter, vilka är kända som symboler. Figur 2 visar ett 16 QAM-exempel där varje symbol representerar fyra bitar. För ett enda bärarsystem måste den digitala vågformen I och Q passera genom ett pulsformningsfilter före DAC för att forma den överförda signalen inom en begränsad bandbredd. Ett FIR-filter kan användas för pulsformning, och filterresponsen illustreras i figur 4. För att upprätthålla informationens trohet är det en minsta signalbandbredd som motsvarar symbolhastigheten. Och symbolhastigheten är proportionell mot den komprimerade videodata som visas i ekvationen nedan. För OFDM-systemet bör den komplexa data moduleras till subbärarna med hjälp av IFFT, som också sänder signalen i en begränsad bandbredd. Antalet bitar som sänds med varje symbol beror på moduleringsordningen. I vilken alfa är filterbandbreddsparametern. Från de tidigare formlerna kan vi härleda denna ekvation, så vi kan beräkna den RF-upptagna signalbandbredden som sammanfattas i Tabell 2. Tabell 2. Upptagen RF Signal Bandbredd med Typ av Modulationsorder (alfa 0,25) AD9361AD9364, med upp till 56 MHz signal bandbredd, stöd för alla Tabell 2-videoformatöverföringar och ännu högre bildhastigheter. Högre ordning modulering upptar mindre bandbredd och symbolen representerar mer informationsbitar, men en högre SNR behövs för demodulering. Transmissionsavståndet och sändarens ström I applikationer som UAV är det maximala överföringsavståndet en kritisk parameter. Det är dock lika viktigt att kommunikationen inte skärs av, även på ett begränsat avstånd. Syre, vatten och andra hinder (med undantag för fri utrymmesdämpning) kan dämpa signalen. Figur 6 visar den trådlösa kommunikationskanalförlustmodellen. Mottagarens känslighet tas normalt som minsta ingångssignal (S min) som krävs för att demodulera eller återställa informationen från sändaren. Efter mottagningens känslighet kan det maximala överföringsavståndet beräknas med vissa antaganden, som visas här: (SN) min är det minsta signal-brusförhållandet som behövs för att behandla en signal. NF är brusfältet hos mottagaren k är Boltzmannrsquos konstant 1,38 gånger 10 ndash23 joulek T 0 är den absoluta temperaturen för mottagarinmatningen (Kelvin) 290 KB är mottagarens bandbredd (Hz) Parametern (SN) min beror på modulationsdemoduleringsordningen. Med samma SNR får lägre ordermodulering ett lägre symbolfel, och med samma symbolfel behöver högre ordermodulering högre SNR att demodulera. Så när sändaren är långt ifrån mottagaren är signalen svagare och SNR kan inte stödja demoduleringen med hög ordning. För att hålla sändaren online och behålla ett videoformat med samma videodata, bör basbandet använda lägre ordermodulering på bekostnad av ökad bandbredd. Detta hjälper till att säkerställa att de mottagna bilderna inte är suddiga. Lyckligtvis erbjuder programvarudefinierad radio med digital modulering och demodulering möjligheten att ändra moduleringen. Den tidigare analysen baseras på antagandet att sändarens RF-effekt är konstant. Medan större RF-sändningseffekt med samma antennförstärkning kommer att nå en mer avlägsen mottagare med samma mottagarkänslighet, bör maximal sändningseffekt överensstämma med FCCCE-strålningsstandarder. Dessutom kommer bärarfrekvensen att påverka överföringsavståndet. När en våg sprider sig genom rymden är det en förlust på grund av dispersionen. Fritt utrymmeförlust bestäms av vid vilken R är avståndet, lambda är våglängden, f är frekvensen och C är ljusets hastighet. Därför kommer den större frekvensen att ha mer förlust över samma fria rymdavstånd. Exempelvis dämpas bärarfrekvensen vid 5,8 GHz med mer än 7,66 dB jämfört med 2,4 GHz över samma överföringsavstånd. RF-frekvens och växling AD9361AD9364 har ett programmerbart frekvensområde från 70 MHz till 6 GHz. Detta kommer att uppfylla de flesta NLOS-frekvensapplikationer, inklusive olika typer av licensierade och olicensierade frekvenser, till exempel 1,4 GHz, 2,4 GHz och 5,8 GHz. 2,4 GHz-frekvensen används ofta för Wi-Fi, Bluetooth reg. och IoT kortfattad kommunikation, vilket gör det alltmer trångt. Att använda den för trådlösa videotransmissions - och styrsignaler ökar chanserna för signalinterferens och instabilitet. Detta skapar oönskade och ofta farliga situationer för UAV. Med hjälp av frekvensomkoppling för att upprätthålla en ren frekvens kommer data och styranslutning att vara mer tillförlitliga. När sändaren känner av en trång frekvens, växlar den automatiskt till ett annat band. Till exempel kommer två UAV-datorer som använder frekvensen och arbetar nära varandra att störa varandra med andra kommunikationer. Automatiskt byte av LO-frekvens och återval av bandet hjälper till att upprätthålla en stabil trådlös länk. Adaptivt val av bärarfrekvens eller kanal under uppstartperioden är en av de utmärkta funktionerna i high end UAV. Frekvenshopping Snabbfrekvenshopping, som används ofta i elektroniska motåtgärder (ECM), hjälper också till att undvika störningar. Normalt om vi vill hoppa på frekvensen behöver PLL relock efter proceduren. Detta inkluderar att skriva frekvensregistren och gå igenom VCO-kalibreringstid och PLL-låsningstid så att intervallet för hoppfrekvensen är approximativt till hundratals mikrosekunder. Figur 7 visar ett exempel på hoppande sändare LO-frekvens från 816,69 MHz till 802,03 MHz. AD9361 används i normalt frekvensbyte och transmitterns RF-utgångsfrekvens hoppar från 814,69 MHz till 800,03 MHz med en 10 MHz referensfrekvens. Hoppfrekvenstiden testas med hjälp av E5052B som visas i Figur 7. VCO-kalibreringen och PLL-låsningstiden är cirka 500 mikron enligt figur 7b. Signalkällanalysatorn E5052B kan användas för att fånga över det PLL-transienta svaret. Figur 7a visar bredbandsmetoden för övergående mätning, medan Figur 7b och 7d ger signifikant fin upplösning i frekvens - och fasövergångsmätning med frekvenshoppning. 6 Figur 7c visar utgångseffektresponsen. 500 mikron är ett mycket långt intervall för hoppapplikationen. AD9361AD9364 innehåller dock ett snabbt låsläge som gör det möjligt att uppnå snabbare än normala frekvensändringar genom att lagra uppsättningar av synthesizerprogrammeringsinformation (kallad profiler) i devicersquos-registren eller basbandsprocessorns minnesutrymme. Figur 8 visar testresultatet med hjälp av snabblåsningsläget för att genomföra hoppfrekvensen från 882 MHz till 802 MHz. Tiden är nere till mindre än 20 mikron, enligt figur 8d-fasresponsen. Faskurvan ritas genom att referera till fasen 802 MHz. SPI-skrivtiden och VCO-kalibreringstiden elimineras båda i det läget på grund av att frekvensinformationen och kalibreringsresultaten sparas i profiler. Som vi kan se visar figur 8b den snabba frekvenshoppningsförmågan hos AD9361AD9364. Implementering av PHY LayermdashOFDM Orthogonal Frequency Division Multiplexing (OFDM) är en form av signalmodulering som delar en högdatahastighetsmodulerande ström på många långsamt modulerade smalbandslånga delbärare. Detta gör det mindre känsligt för selektiv frekvensfading. Nackdelarna är ett högt topp till genomsnittligt effektförhållande och känslighet för bärarens offset och drift. OFDM tillämpas i stor utsträckning i det bredbandiga trådlösa kommunikations PHY-skiktet. OFDM: s kritiska teknik innefattar IFFTFFT, frekvenssynkronisering, synkronisering av samplingstider och symbolframe-synkronisering. IFFTFFT bör genomföras via FPGA på snabbast möjliga sätt. Det är också mycket viktigt att välja subcarriers intervall. Intervallet bör vara tillräckligt stor för att motstå mobilitetskommunikationen med Doppler-frekvensskiftet och tillräckligt liten för att bära fler symboler inom den begränsade frekvensbandbredden för att öka spektraffektiviteten. COFDM avser en kombination av kodningsteknik och OFDM-modulering. COFDM med högt motstånd av signaldämpning och framåtfelskorrigering (FEC) - fördelar kan skicka videosignaler från alla rörliga objekt. Kodningen kommer att öka signalbandbredden men det är vanligtvis värt att byta. Genom att kombinera modellbaserad design och automatiska kodgenereringsverktyg från MathWorks med de kraftfulla Xilinx reg Zynq SoCs och Analog Devices integrerade RF-transceivers, kan SDR-systemdesign, verifiering, testning och implementering vara effektivare än någonsin, vilket leder till högre prestandaradio system och sänka tiden till marknaden. 7 Vad är fördelarna med Wi-Fi-droner som är utrustade med Wi-Fi, är det mycket enkelt att ansluta till en mobiltelefon, bärbar dator och andra mobila enheter, vilket gör dem väldigt bekväma att använda. Men för trådlös videoöverföring i UAV-applikationer, erbjuder FPGA plus AD9361-lösningen många fördelar jämfört med Wi-Fi. Först och främst, i PHY-skiktet hjälper agile frekvensomkoppling och snabb hoppning av AD9361AD9364 att undvika störningar. De flesta integrerade Wi-Fi-chips fungerar också på det crowed 2,4 GHz-frekvensbandet utan någon frekvensbandsmelektionsmekanism för att göra den trådlösa anslutningen mer stabil. För det andra kan, med FPGA plus AD9361-lösningen, överföringsprotokollet definieras och utvecklas flexibelt av konstruktörer. Wi-Fi-protokollet är standard och bygger på ett tvåvägs handslag med varje paket med data. Med Wi-Fi måste varje datapaket bekräfta att ett paket har tagits emot, och att alla 512 byte i paketet mottogs intakta. Om en byte förloras måste hela 512 byte-paketet sändas igen. 8 Medan detta protokoll säkerställer datarillförlitlighet är det komplext och tidskrävande att återställa den trådlösa datalänken. TCPIP-protokollet orsakar hög latens som resulterar i icke-realtidsvideo och - kontroll, vilket kan leda till en UAV-krasch. SDR-lösningen (FPGA plus AD9361) använder en enkelriktad dataström, vilket innebär att dronen i himlen sänder videosignalen som en tv-sändning. Det finns ingen tid att skicka om paket när realtidsvideo är målet. Dessutom erbjuder Wi-Fi inte rätt säkerhetsnivå för många applikationer. Genom att använda krypteringsalgoritmen och användardefinierade protokoll är lösningen FPGA plus AD9361AD9364 mycket mindre mottaglig för säkerhetshot. Vidare ger den envägsutsända dataströmmen överföringsdistansmöjligheter två till tre gånger så mycket som Wi-Fi-tillvägagångssätt. 8 Flexibiliteten från den programvarudefinierade radiokapaciteten möjliggör anpassning av digital modulationsdemodulering för att uppfylla avståndskraven eller och anpassning till ändrade SNR i komplexa rymdstrålningsmiljöer. Slutsatser Den här artikeln illustrerade de kritiska parametrarna för att använda en FPGA plus AD9361AD9364 lösning för implementering av högupplösta trådlösa videoöverföringar. Med flexibel frekvensbandskifte och snabbfrekvenshoppning är det möjligt att skapa en stabilare och pålitlig trådlös länk för att motstå den alltmer komplexa strålningen i rymden och minska sannolikheten för en krasch. I protokollskiktet är lösningen mer flexibel, med en enkelriktad överföring för att minska den trådlösa etableringstiden och skapa en lägre latentanslutning. I industriella och kommersiella applikationer som jordbruk, kraftövervakning och övervakning, stabila, säkra och tillförlitliga överföringar är viktiga för framgång. Referenser 2 AD9361 datablad. Analog Devices, Inc. 3 AD9364 datablad. Analog Devices, Inc. 4 Ken Gentile. Anm. Anm. AN-922, Grunder för digital pulsformning. Analog Devices, Inc. 5 Scott R. Bullock. Transceiver och systemdesign för digital kommunikation. 4: e utgåvan. SciTech Publishing, Edison, NJ, 2014. Wei Zhou är en applikationsingenjör för Analog Devices, Inc. som stöder design och utveckling av RF-transceiverprodukter och applikationer, särskilt i trådlösa videotransmission och trådlösa kommunikationsfält. Han har arbetat i ADIs Central Applications Center i Peking, Kina, i fem år som stödjer olika produkter, inklusive DDS, PLL, DACADC med hög hastighet och klockor. Innan han kom till ADI fick han sin B. S. grad från Wuhan University, Wuhan, Kina, 2006, och hans M. S. examen från Institute of Electronics, Kinesiska vetenskapsakademin (CAS), Beijing, Kina 2009. Han arbetade som RF - och mikrovågskretsar och systemdesigner för ett rymdteknikföretag från 2009 till 2011. Relaterade artiklar Relaterade produkter RF Agile TransceiverHomemade GPS-mottagare Bilden ovan är front-end, första mixer och IF-förstärkare av en experimentell GPS-mottagare. Den vänstra SMA är ansluten till en kommersiell antenn med integrerat LNA - och SAW-filter. En syntetiserad första lokaloscillator driver botten SMA. Pinhuvudet till höger är strömingång och IF-utgång. Den senare är ansluten till en Xilinx FPGA som inte bara utför DSP utan också värd en fraktional-N-frekvenssyntetiserare. Mer om detta senare. Jag var motiverad att designa denna mottagare efter att ha läst arbetet 1 av Matjax017E Vidmar, S53MV, som utvecklat en GPS-mottagare från början, med huvudsakligen diskreta komponenter, för över 20 år sedan. Hans användning av DSP efter en hårdbegränsande IF och 1-bit ADC intresserade mig. Mottagaren som beskrivs här fungerar på samma princip. Dess 1-bitars ADC är 6-polig IC nära stifthuvudena, en LVDS-utgångs-komparator. Dold under buller men inte utplånad i den bi-nivå kvantifierade mush som framträder är signaler från varje satellit i sikte. Alla GPS-satelliter sänder på samma frekvens, 1575,42 MHz, med direktsekvensbredds spektrum (DSSS). L1-bäraren är spridd över en 2 MHz bandbredd och dess styrka vid jordytan är -130 dBm. Värmeffekten i samma bandbredd är -111 dBm, så en GPS-signal vid mottagningsantennen är 20 dB under brusvåningen. Att någon av de signaler som finns närvarande, överlagd på varandra och begravd i ljud, kan återvinnas efter bi-nivå kvantisering verkar kontraintuitiv Jag skrev en simulering för att övertyga mig själv. GPS bygger på korrelationsegenskaperna hos pseudo-slumpmässiga sekvenser som kallas guldkoder för att separera signaler från brus och varandra. Varje satellit överför en unik sekvens. Alla okorrelerade signaler är ljud, inklusive de för andra satelliter och hårdbegränsande kvantiseringsfel. Om du blandar med samma kod i rätt fas sprider du den önskade signalen och sprider vidare allt annat. Smalbandsfiltrering tar bort bredbandsljud utan att påverka den önskade signalen (återigen smal). Hårdbegränsande (1-bitars ADC) försämrar SNR med mindre än 3 dB, ett pris som är värt att betala för att undvika hårdvara AGC. May 2013 Update Det här är nu en bärbar, batteridriven 12-kanals GPS-mottagare med nyckelfärdig programvara, som köper och spårar satelliter och kontinuerligt omberäknar sin position utan användarintervention. Det kompletta systemet (nedan, vänster) omfattar: 16x2 LCD-skärm, Raspberry Pi Model A-dator, två anpassade kretskort, kommersiell patchantenn och Li-Ion-batteri. Total strömförbrukning är 0,4A för batterilivslängd på 5 timmar. Raspberry Pi drivs genom bandkabeln som kopplar sin GPIO-header till Frac7 FPGA-kortet och kräver inga andra anslutningar. För närvarande kör Pi kör Raspbian Linux. En mindre distro skulle förkorta tiden för att först fixa. Efter uppstart från SD-kort startar GPS-programvaran automatiskt. Vid utgången, det ger ett sätt att ordentligt stänga av pi före avstängning. Pi-mjukvaruutveckling gjordes huvudlöst via SSH och FTP via en USB Wi-Fi-dongle. Källkod och dokumentation finns längst ner på den här sidan. Både anpassade PCB är enkla 2-lags PTH-brädor med kontinuerliga markplan på botten. Går medurs runt Xilinx Spartan 3 på Frac7 FPGA-kortet: från 12 oclock till 3 oclock är loopfiltret, VCO, strömbrytare och prescaler av mikrovågsfrekvenssyntesen till höger, joysticken och JTAG-kontakten och vid 6 oclock en stiftrubrik för Raspberry Pi-bandkabeln. Längst till vänster är LCD-kontakten. Nästan vänster är en temperaturkompenserad spänningsstyrd kristalloscillator (TCVCXO) som ger en stabil referensfrekvens, som är avgörande för GPS-mottagning. TCVCXO är bra men inte helt upp till GPS-standard när man arbetar unboxed på blåsiga platser. Blåsning på den förskjuter 10.000000 MHz kristalloscillatorn med ungefär 1 del i 10 miljoner eller 1 Hz, vilket förstoras 150 gånger av syntetiseraren PLL. Detta räcker för att tillfälligt låsa upp satellitspårningsslingorna, om de görs plötsligt. Anordningen är också något känslig för infraröd, t. ex. från halogenlampor och TV-fjärrkontroller När det första publicerades 2011 var det en 4-kanals mottagare, vilket innebär att den bara kunde spåra fyra satelliter samtidigt. Minst fyra krävs för att lösa användarposition och mottagarklocka, men större noggrannhet är möjlig med mer. I den ursprungliga versionen fyllde fyra identiska instanser av spårningsmodulen FPGA. Men de flesta flopsna klockades bara en gång per millisekund. Nu serierar en anpassad mjukkärna-processor inuti FPGA behandlingen och endast 50 av FPGA-materialet krävs för en 8-kanals mottagare eller 67 för 12-kanaler. Antal kanaler är en parameter i källan och kan gå högre. Positionsnoggrannhet är bäst när antennen ser 360deg av himmel och tar emot signaler från alla håll. Generellt sett desto mer satelliter är de bättre. Två eller flera satelliter på samma lager kan leda till vad som kallas dålig geometri. Den bästa lösningen hittills var plusmn1 meter på en mycket öppen plats med 12 satelliter men precisionen är vanligtvis plusmn5 meter i fattigare platser med färre satelliter. September 2014 Uppdatering Källkoden för detta projekt har publicerats under GNU General Public License (GPL). Arkitektur Behandling är uppdelad mellan FPGA och Pi efter komplexitet och brådskande. Pi hanterar matteintensiv tunglyftning i sin egen takt. FPGA syntetiserar den första lokala oscillatorn, tjänster högprioriterade händelser i realtid och spår satelliter autonomt. Pi kontrollerar FPGA via ett SPI-gränssnitt. Bekvämt används samma SPI för att ladda FPGA-konfigurationsbitström och binär exekverbar kod för den inbäddade CPU. FPGA kan också styras via en Xilinx Platform USB JTAG-kabel från en Windows-dator och auto-detekterar vilket gränssnitt som används. L1-frekvenserna nedkonverteras till en 1: a IF av 22,6 MHz genom att blandas med en lokal oscillator på 1552,82 MHz på frontpanelen GPS3. Alla efterföljande IF - och basbandssignalbehandling görs digitalt i FPGA. Två proportionella integrerade (PI) styrenheter per satellit, spårbärare och kodfas. NAV-data som överförs av satelliterna samlas in i FPGA-minne. Detta laddas upp till Pi, som kontrollerar paritet och extraherar ephemerides från bitströmmen. När alla nödvändiga orbitalparametrar samlas in tas en ögonblicksbild av vissa interna FPGA-räknare, från vilken tidpunkt överföringen beräknas till plusmn 15ns precision. Mycket av 1552.82 MHz syntetiseraren implementeras i FPGA. Man kan förvänta sig jitterproblem, med en fasdetektor med annan logik, men det fungerar. Syntetiseringsutgångspektral-renhet är utmärkt, även om FPGA-kärnan växlar bort rasande och inte alla på harmoniskt relaterade frekvenser. Detta tillvägagångssätt togs eftersom en styrelse som liknar Frac7 existerade redan från ett tidigare syntetiseringsprojekt. Lägga till ett front-end var den kortaste vägen till en prototypmottagare. Men den första versionen var inte bärbar: den hade obekväma strömkrav och ingen frekvensstandard ombord. Signalbehandling till och med hårdbegränsare: LMH7220-komparatorn har en maximal ingångsspänning på 9,5mV. Förstärkt termiskt ljud måste bekvämt överstiga detta för att hålla det växlande. Svaga GPS-signaler påverkar endast komparatorn nära nollkorsningar De samplas av bruset För att uppskatta ljudnivån vid komparatorns ingång, tabulerar vi vinster, infogningsförluster och ljudsiffror: In-band-brus vid mixerutgången är -1740.828-1.5-3.920- 610log10 (2,5e6) -73 dBm eller 52microV RMS. Blandaren är resistivt avslutad i 50 ohm och stegen arbetar därefter med högre impedans. Den diskreta IF-remsan har en övergripande spänningsökning på 1000, så komparatorns ingångsnivå är 52mV RMS. LMH7220 lägger till 59 dB förstärkning, vilket ger totalt 119 dB för hela IF. Att utnyttja så mycket vinst vid en frekvens var en risk. För att minimera det användes balanserade kretsar över ett fast markplan och skärmade tvinnpar bär utmatningen till FPGA. Motivationen var enkelhet, undvikande av en andra omvandling. I praktiken är kretskortet stabilt, så spelningen betalas av. Aktiv decoupler Q1 levererar 5V för fjärr LNA. MMIC-förstärkaren U2 ger 20 dB förstärkning (inte vid IF) och garanterar låg övergripande system brusfel, även om långa antennkablar används. L1 och L2 är handlindade mikrovågsskakor med mycket hög självresonansfrekvens, monterad vinkelrätt mot varandra och fri från markplanet. Vind 14 varv, luftkärnad, 1 mm innerdiameter från 7 cm längder av 32swg emaljerad koppartråd. Kontrolleras med spårningsgeneratorn på en Marconi 2383 SA, dessa var bra till 4 GHz. Mini-kretsarna MBA-15L DBM valdes för sin låga 6 dB omvandlingsförlust vid 1,5 GHz och låg 4 dBm LO-drivkrav. R9 avslutar IF-porten. Tre full-differential IF-förstärkningssteg följer mixern. Låg Q-parallellinställda kretsar som är spända mellan samlarna ställer in -3 dB bandbredd omkring 2,5 MHz och förhindrar uppbyggnad av DC-offset. L4, L5 och L6 är screenade Toko 7mm spolar. BFS17 valdes för sin höga (men inte för höga) 1 GHz f T. Jag är 2mA för lägsta ljud och rimliga betar e. Den 22,6 MHz 1: a IF är digitalt nedkonverterad till 2,6 MHz genom undersampling vid 10 MHz i FPGA. 2,6 MHz ligger nära mitten av 5 MHz Nyquist bandbredd. Det är bäst att undvika exakt centrum, av skäl som förklaras senare. Flera andra första IF-frekvenser är möjliga: 27,5 MHz, som producerar spektruminversion vid 2: e IF, har också testats framgångsrikt. Det finns ett kompromiss mellan bildproblem vid lägre och tillgänglig BFS17 förstärkning vid högre frekvenser. Signaldetektering innebär att man löser tre okända: vilka satelliter är i sikte, deras Doppler-skift och kodfaser. En sekventiell sökning av detta tredimensionella utrymme från en så kallad kallstart kan ta många minuter. En varm start med almanac data för att förutsäga positioner och hastigheter kräver fortfarande en kodsökning. Alla 1023 kodfaser måste testas för att hitta den maximala korrelationstoppen. Att beräkna 1023 korrelationsintegraler i tidsdomänen är mycket dyr och överflödig. Denna GPS-mottagare använder en FFT-baserad algoritm som testar alla kodfaser parallellt. Från kyla tar det 2,5 sekunder på en 1,7 GHz Pentium för att mäta signalstyrkan, Doppler shift och kodfasen hos varje synlig satellit. Raspberry Pi är lite långsammare. Med överskrift som betecknar konjugation är korskorrelationsfunktionen y (Tau) för komplexsignalen s (t) och koden c (t) som förskjuts av förskjutning Tau: Korrelationsteoretet anger att Fouriertransformen av en korrelationsintegral är lika med produkten av det komplexa konjugatet av Fourier-transformen av den första funktionen och Fourier-transformen av den andra funktionen: FFT (y) CONJUGATE (FFT (s)) FFT (c) Korrelation utförs vid basband. 1.023 Mbps CA-koden är 1023 chips eller 1ms lång. Framåt FFT-längd måste vara en multipel av detta. Provtagning vid 10 MHz för 4 ms resulterar i en FFT-binstorlek på 250 Hz. 41 Doppler-skift måste testas genom att rotera frekvensdomändata, ett fack i taget, upp till plusmn20-fack plus5n5 KHz. Rotation kan appliceras på antingen funktionen. 22.6 MHz 1: a IF från 1-bitars ADC är samplad av en 10 MHz klocka i FPGA, digital nedkonvertering av den till en 2: a IF av 2,6 MHz. I mjukvara är den andra IF nedkonverterad till komplex basband (IQ) med användning av kvadratur lokala oscillatorer. För bi-nivå signaler är blandarna enkla XOR-portar. Även om det inte visas ovan, buffras proverna temporärt i FPGA-minne. Pi kan inte acceptera dem vid 10 Mbps. 1,023 Mbps och 2,6 MHz alstras av numeriskt styrda oscillatorns (NCO) fasackumulatorer. Dessa frekvenser är ganska stora jämfört med samplingsfrekvensen, och är inte exakta undertoner av det. Följaktligen har de icke-statliga organisationerna delade sporer. Antalet prover per kodchip dithrar mellan 9 och 10. Lyckligtvis är DSSS-mottagare toleranta för smalbandsstörare, externa eller självgenererade. Komplex basband transformeras till frekvensdomänen med en framåtriktad FFT som endast behöver beräknas en gång. En FFT för varje satellit-CA-kod är förberäknad. Behandlingstiden domineras av den inre slingan som utför skiftning, konjugering, komplex multiplikation och en invers-FFT per satellit-Doppler-test. Raspberry Pis Videocore GPU kan utnyttjas för att påskynda sakerna. Vid 10 MHz samplingsfrekvens löses kodfasen till närmaste 100ns. Typisk CCF-utmatning illustreras nedan: Beräkning av topp till genomsnittlig effekt över denna data ger en bra uppskattning av SNR och används för att hitta de starkaste signalerna. Följande mottogs klockan 20:14 GMT den 4 mars 2011 i Cambridge, Storbritannien med antennen på en utsidan av norrskyddsfönstret: Från norra breddgrader kommer fler GPS-satelliter generellt att hittas i den södra himlen, dvs mot ekvatorn. Att ta längre prover ökar SNR, vilket avslöjar svagare signaler men avbokning sker när infångningen spänner över NAV-övergångar. Framåt FFT-längd är ett integrerat antal millisekunder, men den inverse FFT kan förkortas, helt enkelt genom att kasta bort data i högre frekvensfack. SNR bevaras men kodfas är inte så kraftigt löst. En bra uppskattning av toppläget erhålls emellertid genom vägd medelvärde mellan de två starkaste intilliggande behållarna och avluftstester tyder på att detta kan fungera till och med till ganska korta inverse FFT-längder. Efter att ha upptäckt en signal låses nästa steg, spårar det och demodulerar 50 bps NAV-data. Detta kräver två interberoende faslåsade slingor (PLL) för att spåra kod och bärarfas. Dessa PLL måste fungera i realtid och implementeras som DSP-funktioner i FPGA. Pi-programvaran har en roll som övervakning: bestämmer vilka satelliter som ska spåras, övervakar låsstatus och behandlar mottagna NAV-data. Spårningsspåren är bra för att bibehålla lås, eftersom de har mycket smala bandbredder, men det är samma egenskaper som gör dem stackars för att få låsa utan hjälp. De kan inte se bortom bandbredd för att fånga någonting längre bort. Initiala faser och frekvenser måste vara förinställda till den uppmätta kodfasen och Doppler-skiftet i målsatelliten. Detta är orkestrerat under Pi-kontroll. Slingorna bör vara inlås från början och förbli så. Kodfas mäts i förhållande till FFT-provet. Koden NCO i FPGA återställs vid samplingsstart och ackumulerar fas vid en fast 1.023 MHz. Den är senare inriktad mot den mottagna koden genom att pausa fasen ackumulatorn kort. Doppler-skift på bäraren 1575.42 MHz är plusmn5 KHz eller plusmn3 ppm. Det påverkar också 1,023 Mbps kodfrekvensen med plusmn3 chips per sekund. Pausens längd justeras för kodkrypning i tiden sedan provet togs. Lyckligtvis är kod Doppler proportionell mot bärare Doppler, för vilken vi har en bra uppskattning. Hårdvaruprogramvaruuppdelning I diagrammet nedan visar färgkodning hur implementeringen av spårnings DSP nu delas mellan hårdvara och programvara. Tidigare var detta gjort i hårdvara, med identiska parallella instanser upprepade för varje kanal, vilket gjorde ineffektiv användning av FPGA-resurser. Nu görs långsammare 1 KHz-bearbetning med programvara, och dubbelt så många kanaler kan rymma i hälften av FPGA-fastigheten. De sex integrations-och-dump ackumulatorerna (Sigma) låses i ett skiftregister på kodperioden. En tjänstförfrågningsflagg signalerar CPU: n, vilken läser data bit-seriellt. Med 8 kanaler aktiva, används 8 CPU-tidar genom att utföra instruktionen oprdBit Men det finns gott om tid, och seriell IO använder ekonomiskt FPGA-material. Luxuries som RSSI och IQ-loggning (till exempel för scatter plots) kan nu ges. F (z) slingens filteröverföringsfunktioner svalar 2 av CPU-bandbredd per aktiv kanal. Dessa är standard proportionella integrerade (PI) kontroller: 64-bitars precision används och förstärkningskoefficienterna KI och KP, även om de är begränsade till krafter på 2, är dynamiskt inställbara. Varje kanal som måste vänta sin tur kan NCO-prisuppdateringar fördröjas med tiotals eller hundratals mikrosekunder efter en kodperiod, men detta introducerar försumbart fasskifte vid frekvenser där fasmarginalen bestäms. Tunna spår är 1-bit, som representerar plusmn1. 2.6 MHz bäraren först-sprids genom att blanda med tidiga, sena och punktliga koder. I och Q komplexa basbandsprodukter från andra rangen av XOR-grindblandare summeras över 10000 prover eller 1ms. Denna lågpassfiltrering minskar dramatiskt brusbredd och därigenom höjer SNR. Nedsampling till 1 KHz kräver bredare framåtriktad datapanel i programdomen. Kodfas spåras med hjälp av en konventionell fördröjningslåst slinga eller tidig sänd gate. Effekt i de tidiga och sena kanalerna beräknas med hjälp av P I 2 Q 2, vilket är okänsligt för fas. Tidiga och sena koder är ett chip från varandra, dvs frac12-chip före och bakom punktligt. Detta diagram hjälper till att få felkänslan korrekt: En Costas Loop används för bärarspårning och NAV-dataåterställning i punktljudkanalen. NAV-data, m, tas från I-arm-teckenbiten med 180-graders fasosäkerhet. k är mottagen signalamplituden och theta är fasskillnad mellan mottagen bärare (sans modulering) och lokal NCO. k varierar från omkring 400 för de svagaste återställbara signalerna upp till 2000 för de starkaste. Lägg märke till hur felet som matas tillbaka till F (z) - anläggningskontrollen i Costas Loop är proportionellt mot mottagen signalkraft ksup2. Spårningshöjd, och därigenom slingförstärkning, varierar också med signalstyrkan i kodslingan. Nedan följer en Bode-plot med öppen slinga för Costas Loop på k500: Costas Loop bandbredd är cirka 20 Hz, vilket handlar om optimalt för bärarspårning. Kodslingbandbredden är 1 Hz. Bullerkraft i sådana bandbredd är liten och looparna kan spåra mycket svaga signaler. Ovanstående kI och kP arbetar för de flesta signaler, men behöver släppa en hack för den allra starkaste. Scilab förutsäger, och scatter-plottar bekräftar instabiliteten hos kge1500. Paritetsfel uppstår inte om inte proven går in i motsatt hälft av IQ-planet. (i) Instabilitet vid kge1500 Ovanstående är 2 på varandra följande ramar med 5 delramar vardera. Underramar är 300 bit långa och tar 6 sekunder att sända. Kolumn 1 är ingressen 10001011. Detta visas i början av varje underram, men kan förekomma var som helst i data. 17-biträknaren i kolumn 5 är veckodags (TOW) och återställs till noll vid midnatt söndag. 3-biträknaren i kolumn 7 är delram ID 1 till 5. Underramar 4 och 5 delas in i 25 sidor vardera och en fullständig datameddelande omfattande 25 fulla ramar tar 12,5 minuter att sända. Jag använder bara data i delramar 1, 2 och 3 för närvarande. Lösning för användarposition Varje GPS-satellit sänder sin position och tiden. Att subtrahera tiden som skickas från tiden som mottas och multiplicera med ljusets hastighet är hur en mottagare mäter avståndet mellan sig själv och satelliterna. Att göra det med tre satelliter skulle ge tre samtidiga ekvationer i tre okända (användarposition: x, y, z) om den exakta tiden var tillgänglig. I praktiken är mottagarklockor inte noggranna, den exakta tiden är en fjärde okänd, därför krävs fyra satelliter och fyra samtidiga ekvationer måste lösas. En iterativ metod används eftersom ekvationerna är olinjära. Med hjälp av jordens centrum (0, 0, 0) och den ungefärliga tiden som utgångspunkt, konvergerar algoritmen i endast fem eller sex iterationer. Lösningen finns även om användarklockfel är stor. Satelliterna bär atomur, men dessa har också fel och korrigeringskoefficienter i underram 1 måste appliceras vid överföringstidpunkten. Typiska justeringar kan vara hundratals mikrosekunder. Den okorrigerade tiden för överföring bildas genom skalning och adderar flera räknare. Tidsvecka (TOW) i sekunder sedan midnatt söndag skickas varje underram. Datakanter markerar 20ms intervall inom 300-bitars underramar. Koden upprepas 20 gånger per databit. Kodlängden är 1023 chips och chiphastigheten är 1.023 Mbps. Slutligen bifogas de 6 mest signifikanta bitarna i kod NCO-fasen, fixeringstid för överföring till plusmn 15ns. Satellitpositioner vid den korrigerade sändningstiden beräknas med hjälp av efemer i underramar 2 och 3. Orbitalposition vid en referenstidstid (tid för efemeri) tillhandahålls tillsammans med parametrar som tillåter (x, y, z) position att beräknas upp till några timmar före eller efter. Ephemerider uppdateras regelbundet och satelliter sänder endast sina egna. Långsiktiga banor av hela konstellationen kan förutsägas mindre noggrant med användning av Almanac-data i delramar 4 och 5 men detta är inte nödvändigt om en snabb FFT-baserad sökning används. Lösningarna beräknas i jordbaserade, jordbundna (ECEF) koordinater. Användarplatsen omvandlas till latitud, longitud och höjd med en korrigering för jordens excentricitet, som bulker vid ekvatorn. Scatterdiagrammen nedan illustrerar repeterbarhet, fördelarna med medelvärdet och effekten av dåliga satellitval. Rutnätet är 0.001deg på varje sida. Blå prickar markerar 1000 fixar. Gula trianglarna markerar tyngdpunkten: (i) Nordfasad fönsterhiss (ii) Takantenn (iii) Östvendt fönsterhöjd Det snäva klustret (ii) uppnåddes med hjälp av satelliter i fyra olika delar av himlen. Endast takpanelens antenn hade en tydlig vy i alla riktningar. Men bra korrigeringar erhölls genom medelvärde, även när halva himlen var förmörkad. Taket fixar uppvisar också spridning som (i) och (iii) om fel satelliter väljs. Ovanstående lösningar genererades utan att kompensera för jonosferiska förökningsfördröjningar med användning av parametrar på sidan 18 i delram 4 som bör appliceras eftersom detta är en enfrekvensmottagare. Ionosfärisk brytning ökar stiglängder mellan användare och satelliter. I april 2012 fixade jag ett fel som orsakade signifikanta fel i lösningar för användarpositioner. Ursprungligen, genom att inte omvandla satellitpositioner från jord-centrerad jordfast (ECEF) till jord-centrerad-tröghets (ECI) - koordinater, ignorerade jag effektivt jordens rotation under 60-80 ms som signalerar i flygning. Jag ser nu positionella lösningsnoggrannheter på plusmn 5 meter efter medelvärde, även med begränsad satellitsynlighet. Ive skapade en bilaga som visar hur den iterativa lösningen utvecklas, utgående från en geometrisk räckviddsligning, som är linjäriserad med en Taylor-serie expansion och löses med matrismetoder, för det speciella fallet med fyra satelliter eller det allmänna fallet med mer, med möjlighet att använda vägda minsta kvadrater för att kontrollera påverkan av vissa satelliter. Du hittar denna källkod och lösning C i länkarna längst ner på sidan. Jag är tacksam mot Dan Doberstein för att skicka mig ett tidigt utkast till hans GPS-bok 2 som hjälpte mig att förstå lösningsalgoritmen. Den officiella amerikanska regeringens GPS-gränssnittsspecifikation 3 är en viktig referens. Signalmonitor Ovannämnda kretsarrangemang, som i huvudsak implementeras i FPGA, sprider sig genom att ta produkten av 1-bitars IF och punktlig kod, vilket lämnar 50 bps datamodulation. En liten hak på grund av BPSK-bärarens undertryckning kan bara ses: Dessa spektra visar samma spridningsöverföring vid olika spänningar och upplösningsbandbredd (RBW). Dopplerskiftet var -1,2 KHz. Ljudgolvet är antennens termiska brus förstärkt och filtrerat av IF-remsan. -3 dB bandbredd ser runt 3 MHz, något bredare än planerat. Den spridna bäraren är 5 dB över brus vid 30 KHz RBW och 25 dB ovan vid 300 Hz RBW. Mottagen signalstyrka vid antennen kan uppskattas som -174110log10 (30e3) 5 -123 dBm. Det förvånar mig fortfarande hur väl frekvensdomäninformationen bevaras genom hårdbegränsning. LVDS-sändaren har en konstant utgångsström på 1mW i 100 ohm. Toppkraft som ses vid SA kan inte överstiga 0 dBm. Här ser vi den tillgängliga strömfördelningen över en rad frekvenser. Wideband integrerad effektspektral densitet måste vara Första lokala oscillatorn Ive byggde experimentella fraktionerande N-syntheserare med allmänt användbar programmerbar logik i flera år: Xilinx Spartan 3 FPGA Frac7 byggdes för detta ändamål men jag hade ingen aning om att Frac5 skulle användas i en GPS mottagare när jag ursprungligen designade den. Bilden nedan visar hur ROS-1455 VCO-utgången på Frac5 var resistivt delad mellan utgången SMA och en Hittite HMC363 divide-by-8 prescaler. 200 MHz-divideringsutgången dirigeras (differentiellt) i FPGA, vilken fas låser den till en referensreferens med metoder som dokumenterats i mina tidigare projekt. Mikrovågsugn på Frac7 är liknande men använder en Mini-Circuits 3dB splitter. Hög stabilitet och lågfassbrus uppnås, vilket framgår av VCO-utgångsspektra som visas nedan. När Frac5 ursprungligen utvecklades, som en dedikerad frekvenssyntetiserare, undviks samtidig växling på frekvenser som inte var harmoniskt relaterade för att minimera intermodulationssporer. FPGA var statisk när klockpulser som växlade fasdetektorutgången korsade tyget. Ingen sådan lyx är praktisk när FPGA är värd för en GPS-mottagare, men lyckligtvis är den lokala oscillatorns utsignal tillräckligt bra: Marconi 2383-spektrumanalysatorerna 50 MHz STD OUTPUT användes som huvudkälla för Frac5 och alla interna GPS-mottagarklockor. GPS-mottagare behöver noggrannheter bättre än 1 ppm (delar per miljon) för att mäta plusmn5 KHz Doppler-skift på 1575.42 MHz L1-bäraren. Eventuell frekvensosäkerhet skulle kräva ett bredare sökområde. Inbyggd CPU Min ursprungliga GPS-mottagare kan bara spåra 4 satelliter. Det tillgängliga tyget användes inte effektivt och FPGA var fullt. Identisk logik replikerades för varje kanal och endast klockaktiverad vid 1 KHz-kodens epok. GPS-uppdateringshastigheten är ganska oåterkallande och det mesta av den parallella bearbetningen kan enkelt utföras i följd. Bädda in en CPU för denna uppgift har både ökat antalet kanaler och frigjort utrymme i FPGA. Denna CPU exekverar direkt FORTH primitives som inbyggda instruktioner. Besökare på min Mark 1 FORTH Datorsida kommer redan att vara medveten om mitt intresse för språket. FORTH är inte vanligt och dess användning här kan vara en esoterisk barriär, men jag kunde inte motstå att göra en annan FORTH CPU, den här gången i FPGA, efter att ha sett det utmärkta J1-projektet, vilket var en inspiration. FORTH är ett stapelbaserat språk, vilket i grunden betyder att CPU-enheten har staplar istället för generella register. Wikipedia har en bra översikt. FPGA-resurser: 360 skivor 2 BRAMs Encykelinstruktionsexempel FORTH-liknande, dubbelstack arkitektur 32-bitars stack och ALU-datapaner 64-bitars dubbel precision Operativsystem multiplicerare 2k byte (expandable to 4k byte) kod och data RAM Macro assembler kodutveckling Minne och IO Två BRAM används: en för huvudminne, den andra för staplar. Xilinx block RAM är dubbelt portat, vilket gör att en instans kan vara värd för både data och returstabler. Varje stapelpekare sträcker sig över hälften av matrisen. Dual porting av huvudminne möjliggör dataråtkomst samtidigt som instruktionshämtning. En minnesport adresseras av programräknaren, den andra av T, toppen av stapeln. Skriv till den PC-adresserade porten används också för kodnedladdning, programräknaren som ger inkrementella adresser. Kod och data delar huvudminnet, som är organiserat som 1024 (expandable to 2048) 16-bitars ord. Minnesåtkomst kan vara 16-, 32- eller 64-bitars, ordinriktad. Alla instruktioner är 16-bitars. Den totala koden plus datastorleken för GPS-applikationen är mindre än 750 ord, trots att alla slingor rullas in. IO är inte minneskortad, upptar sitt eget 36 bitars valda utrymme (12 i 12 ut 12 händelser). En-het-kodning används för att förenkla valda avkodning. IO-operationer är olika 1-bitars serie-, 16- eller 32-bitars parallella. Seriell data skiftar 1 bit per klockcykel. Händelser används huvudsakligen som hårdvara strober och skiljer sig från att skriva genom att inte poppa stacken. Instruktionsformat 24 instruktioner av en möjlig 32 är för närvarande allokerade i opcode space h80XX - h9FXX. Dessa är mestadels operationer med nolloperandstack ALU. Ret alternativet, som utför returnerar från subrutinen, utförs parallellt, i samma cykel. Tillägget är den enda enoperandinstruktionen. Ett inbyggnadsalternativ sträcker sig (stack, underförstådd) tillsats precision. hF0000 - hFFFF är reserv. Stack - och ALU-databanor är 32-bitars, men 16-, 32- och 64-bitarsoperationer stöds. 64-bitars värden upptar två platser på stapeln, med minst signifikanta bitar ovanpå. Överst på stapeln, T, och nästa på stapeln, N, är registrerade utanför BRAM för effektivitet. Bortsett från 64-bitars vänstra skiftet (opshl64) som är hårdkopplat för exekvering med en enda cykel, är alla andra dubbla precisionsfunktioner programvarubutrutiner. Sammansättningsspråk Den inbäddade binära GPS-enheten skapades med Microsofts Macro Assembler MASM. Detta stöder endast x86 mnemonics men opkoder deklareras med hjälp av equ och kod samlas med hjälp av dw-direktiv. MASM tillhandahåller inte bara etikettupplösning, makroexpansion och expressionsutvärdering utan även datastrukturer Operatören MASM dup () används i stor utsträckning för att avrulla slingor, t. ex. dw N dup (opcall dest) kallar en subrutin N gånger. Detta fragment ger lite smak av källstil. Stack-effekt kommenteras på varje rad: uppfetch16 och opstore16 är primitives. opstore32 och opstore64 är subrutiner eller sammansatta instruktioner som är användbara som om de var primitiva. T är faktiskt 15: 0,31: 16 efter opswap16. men vi bryr oss inte om de övre 16 bitarna här. opstore16 lämnar adressstackdjupet kan bara ändra plusmn1 per cykel. Purister kanske föredrar: dw N addi Host seriella gränssnitt FPGA kan styras via SPI av Raspberry Pi, eller av en Windows PC med en Xilinx Platform USB JTAG-kabel. Det finns två nivåer av begäran prioritet: Skicka nytt kommando och poll för svar på tidigare Nya kodbilder kopieras till huvudminne via en tredje BRAM som överbryggar CPU - och serieklockdomenerna. Således laddas binära bilder automatiskt. Värdkommandon är fångade i broen BRAM och CPU-signalen är signalerad för att åtgärda dem. Dess svar samlas in av värden från bron vid nästa skanning. Huvudlocksundersökningarna på toppnivå för värdtjänstförfrågningar. Det första ordet i ett värdmeddelande är en kommandokod. Requests are dispatched through the Commands jump table: optor moves vector to the return stack. Some host requests (e. g. CmdGetSamples) elicit lengthy responses. Data ports on the CPU side of the bridge are 16-bit. The CPU can read and write these via the data stack however, more direct paths exist for uploading main memory and GPS IF samples. The instruction opwrEvt GETMEMORY transfers a memory word directly to the bridge, using T as an auto-incrementing pointer. GETMEMORY is the only event which has stack effect. The instruction opwrEvt GETSAMPLES transfers 16 bits from the IF sampler: Unrolling loops at assembly time with dup() trades code size for performance, avoiding a decrement-test-branch hit and the entire application binary is still tiny however, long loops must be nested, as illustrated above. CHANNEL data structure An array of structures holds state variables and buffered NAV data for the channels. MASM has excellent support for data structures. Field offsets are automatically defined as constants and the sizeof operator is useful. The epoch service routine (labelled Method: ) is called with a pointer to a CHANNEL structure on the stack. Affecting OO-airs, stack-effect comments refer to it as this throughout the routine. A copy is conveniently kept on the return stack for accessing structure members like so: The Chans array is regularly uploaded to the host. Raspberry Pi application software The Raspberry Pi software is multi-tasked using what are variously known as coroutines, continuations, user-mode or light-weight threads. These co-operatively yield control, in round-robin fashion, using the C library setjmplongjmp non-local goto, avoiding the cost of a kernel context-switch: Up to 16 threads can be active:Embedded Engineering In post. Jag ska visa dig hur man implementerar det enklaste möjliga digitala filtret kvoterande genomsnittliga filterquot. även om det är väldigt lätt att implementera men fortfarande i många applikationer är det mer än tillräckligt bra. till exempel reducera slumpmässigt brus från signal. naturligtvis när det är väldigt enkelt har det problem som. det har ingen mycket skarp filterrespons. Kanal 1 ingång. svep från 20Hz till 6kHz, kanal 4 (grön) 15-punkts filtrerad utgång, M (röd) - utdata i freq-domän lördag den 1 oktober 2016 Detta projekt är den sista delen i Att göra ett riktigt kraftfullt solljus. I detta projekt intigrerar vi LTC3478 Based philips lumileds Driver och BQ24650 Based MPPT Solar Li-Ion charge Controller. Vi använder totalt 3 9 watt varje LED-styrkort och en laddningsregulator för att ladda 6 Cell 7.6V 20000mah li-lion batteri. Det finns 4 LED-bar grafdisplay för att visa uppskattning av batterinivå och en enda knapp för att styra Onoff, Different Level av ljusstyrka. och välj en. alla eller få av LED-kort till litup. Det finns inte mycket att beskriva i termen av schmeatic och firmware som alla Firmware och Schmeatic aer redan på mitt github konto. Användargränssnittpanelen är tillverkad av PCB med 4 batteriladdnings-LED en port för solpanelkontakt och en kontrollbrytare. när batteriet laddas, lysdiodens status visas i enlighet därmed och när batteriet laddas ur ledningsstatus uppdateras i enlighet med detta. I tillägg till det lilla solbelysnings projektet som jag arbetade med har jag skapat den här lilla laddningsregulatorn för laddning av litiumjonbatterier (li-ion). Circuit Utnyttja Texas Instrument BQ24650 i hjärtat av loop för att kontrollera laddning. som krets har extern musfet så högst 160charge ström kan justeras till riktigt höga värden. 160Circuit accepterar solpanelvärden från 5V till 28V. Jag har testat den med 12V nominell (17Volts öppen krets) 160. och 24 volt nominell solpanel vid batteriladdningsström upp till 4A. För närvarande installerad i mitt hus sedan några månader Laddning ett 20000 mah li-ion batteri. Kretskortet har en stor 4-polig högkapacitets Molex-kontakt för solpanel. 6-polig kontakt för batteri - och lastbrytare. Det är också möjligt att ansluta NTC för övervakning av batteritemperaturen. BQ24650 kan automatiskt övervaka temperaturen på batteriet. Microcontroller har dedikerad 3 PWM-utgång för LED-dimning och 6 gpio-pinhuvud för bettery status ledd och en användargränssnittsknapp. Hallo zu Deutsch Leser. Das ist mein erste Artikel auf Deutsch. Jag habe viel aufrufe aus Deutschland avhoppet Jetzt ab, som var en av de tyska publicisterna, och det var inte så mycket som jag skulle vilja ha. Det var inte så mycket som jag hade på engelska och engelska. När Widerspruch zwischen dem artikel på Deutsch och Engelska, fick engelska berwiegt weil meine erfahrungen auf deutsch kurze ist.160 160 160 160Så börjar vi. Heutzutage arbeite ich an einem Projekt. quotMPPT Solar li-ion Laderquot. Bei diesem projekt brauche ich eine160sehr160vollmacht 25W LED leicht. aber 25W ist viel fur ein160LED-Triber. Det här är en av de ledande 25 W LED-Triber zu entwerfen. Hauptsorge är en proffs för att se till att det är en MP-Larder-programvara och en mjukvara som Algorithmus sind. Das Projekt ist einte von ein Projekt var publiziere ich spter.160 160 160 160 Jag arbetade med ett ljussystem för solglasögon , jag behöver en riktigt ljus galen 25W 160LED-belysning. Men problemet var för 25W det var mycket kraft för LED och det kräver lite färdigheter för att göra en så hög LED-drivrutin. Huvudsyftet med detta projekt är att få en nedstigningskunskap om MPPT-laddningsregulator och MPPT-laddningsalgoritmer. projektet är en del av projektet. som jag kommer posta senare. 160160160 Det här inlägget kommer att vara fjärde delen i serie med att göra en Linux-kompatibel ARM-styrelse hemma. klicka först. Andra och tredje för att gå till tidigare delar, så kan vi börja. vad är en Bootloader, varför behöver vi it160 en boot loader är ett program som är den första som ska köras av CPU. Det ger en del mycket specifika ändamål med att konfigurera några väsentliga saker innan du laddar huvudprogrammet (kan vara OS) i huvudminnequot. det är anledningen till att det kallas startlastare. beroende på behov startlocket kan göra en annan uppgift (vi kommer att täcka dem här). Det finns olika former och storlekar för bootloadersna. de tjänar alla nästan samma syfte. med mikrokontroller. vissa gånger laddar det inte egentligen huvudprogrammet i minnet utan vidarebefordrar körpekaren till huvudprogrammet så att huvudprogrammet kan springa direkt från minnet där det är. Board med 4,3 tums LCD-skärm som kör Qt5-applikation för att visa JPEG-bild och tid

No comments:

Post a Comment