Aktuelle Nachrichten Die nächsten 50 Programmiersprachen Die folgende Liste der Sprachen bezeichnet 51 bis 100. Da die Unterschiede relativ klein sind, werden die Programmiersprachen nur in alphabetischer Reihenfolge aufgelistet. (OS400), Clipper, Gemeinsame Lisp, Kristall, Eiffel, Elixier, Elm, Emacs Lisp, Faktor, Forth,,,,,,,,,,,,,,,,,,,, Hack, Icon, IDL, Informieren, Io, J, Julia, Korn Shell, Kotlin, Maple, ML, NATURAL, NXT-G, OCaml, OpenCL, OpenEdge ABL, Oz, PLI, PowerShell, reine Daten, REXX, S, Smalltalk , SPAR, SPSS, Standard ML, Stata, Tcl, VBScript, Verilog Diese Monatsliste im Index In diesem Monat wurden folgende Änderungen an der Definition des Index vorgenommen: ClojureScript wurde zum Clojure-Eintrag hinzugefügt. Das war ein Vorschlag von Alex Miller. Olaf Buddenhagen und einige andere fragten sich, warum Nim noch nicht Teil des TIOBE-Index war. In der Tat qualifiziert sich Nim für den Index. Es tritt der TIOBE-Index an Position 129 in diesem Monat ein. Neben Lua wird auch LuaJIT als Eintrag für Lua akzeptiert. Das ist dank Szbnwer. Schließlich schlug Mahmoud Fayed vor, die Programmiersprache des Ranges dem Index hinzuzufügen. Diese Sprache hat ihr Debüt auf Platz 104 gemacht. Es gibt viele Mails, die noch verarbeitet werden müssen. Sobald es mehr Zeit gibt, wird Ihre Mail beantwortet. Bitte haben Sie Geduld. Sehr langjährige Geschichte Um das größere Bild zu sehen, finden Sie unten die Positionen der Top 10 Programmiersprachen von vielen Jahren zurück. Bitte beachten Sie, dass es sich um durchschnittliche Positionen für einen Zeitraum von 12 Monaten handelt. Bugs amp Change Requests Dies ist die Top 5 der am meisten angeforderten Änderungen und Bugs. Wenn Sie irgendwelche Vorschläge haben, wie Sie den Index verbessern können donapost zögern, eine E-Mail an tpcitiobe zu senden. Abgesehen von quotltlanguagegt Programmierung, auch andere Abfragen wie z. B. Programmierung mit ltlanguagegtquot, quotltlanguagegt developmentquot und quotltlanguagegt codingquot sollte ausprobiert werden. Fügen Sie Abfragen für andere natürliche Sprachen hinzu (abgesehen von Englisch). Die Idee ist, mit der chinesischen Suchmaschine Baidu zu beginnen. Dies wurde teilweise umgesetzt und wird in den nächsten Monaten abgeschlossen sein. Fügen Sie eine Liste aller abgelehnten Suchbegriffe hinzu. Dies ist, um die Anzahl der wiederkehrenden Mails über Rails, JQuery, JSP, etc. zu minimieren. Starten Sie einen TIOBE-Index für Datenbanken, Software-Konfigurations-Management-Systeme und Anwendungs-Frameworks. Einige Suchmaschinen erlauben die Abfrage von Seiten, die im letzten Jahr hinzugefügt wurden. Der TIOBE-Index sollte nur die zuletzt hinzugefügten Seiten verfolgen. Häufig gestellte Fragen (FAQ) Q: Bin ich erlaubt, den TIOBE-Index in meiner Weblog-Präsentation zu zeigen A: Ja, die einzige Bedingung bezieht sich auf seine ursprüngliche Quelle quottiobequot. F: Wie kann ich eine neue Sprache benennen, die dem TIOBE-Index A hinzugefügt werden soll: Wenn eine Sprache die Kriterien erfüllt, die aufgeführt sind (dh es ist Turing komplett und hat einen eigenen Wikipedia-Eintrag, der anzeigt, dass es sich um eine Programmiersprache handelt) und es Ist genügend populär (mehr als 5.000 Hits für quotltlanguagegt Programmierung für Google), dann schreiben Sie bitte eine E-Mail an tpcitiobe. F: Ich hätte gern den kompletten Datensatz des TIOBE-Index. Ist das möglich A: Wir haben viel Mühe gemacht, um alle Daten zu erhalten und den TIOBE-Index auf dem neuesten Stand zu halten. Um dies zu kompensieren, bitten wir um eine Gebühr von 5.000 US für den kompletten Datensatz. Der Datensatz läuft von Juni 2001 bis heute. Es begann mit 25 Sprachen im Jahr 2001 und misst jetzt mehr als 150 Sprachen einmal im Monat. Die Daten sind im Komma getrennt verfügbar. Bitte kontaktieren Sie salestiobe für weitere Informationen. F: Warum ist das Maximum, um das Ranking für eine Gruppierung zu berechnen, warum nicht die Summe A: Nun, du kannst es entweder so machen und beide sind falsch Wenn du die Summe nimmst, dann bekommst du die Kreuzung zweimal. Wenn Sie die max nehmen, dann vermissen Sie den Unterschied. Welches zu wählen Angenommen, jemand kommt mit einem neuen Suchbegriff, der 10 des Originals ist. Wenn du das Maximum nimmst, ändert sich nichts. Wenn Sie die Summe nehmen, dann werden die Bewertungen steigen 10. So wird die Summe ein Anreiz für einige zu kommen mit allen Arten von obskuren Begriffe für eine Sprache. Thataposs warum wir uns entschieden haben, die max. Der richtige Weg, dies zu lösen, ist natürlich, die Summe zu nehmen und die Kreuzung zu subtrahieren. Dies führt zu einer Explosion von zusätzlichen Abfragen, die durchgeführt werden müssen. Angenommen, eine Sprache hat eine Gruppierung von 15 Begriffen, dann müssen Sie 32.768 Abfragen durchführen (alle Kombinationen von Kreuzungen). So scheint das auch nicht möglich zu sein. Wenn jemand eine Lösung dafür hat, lass es uns wissen. F: Was ist mit Java im April 2004 passiert Haben Sie Ihre Methodik geändert A: Nein, wir haben unsere Methodik zu diesem Zeitpunkt nicht verändert. Google hat seine Methodik geändert. Sie führten eine allgemeine Sweep-Aktion, um loszuwerden, alle Arten von Websites, die nach oben geschoben worden war. Infolgedessen gab es einen riesigen Tropfen für Sprachen wie Java und C. Um solche Schwankungen in der Zukunft zu minimieren, haben wir zwei weitere Suchmaschinen (MSN und Yahoo) einige Monate nach diesem Vorfall hinzugefügt. F: Warum wird YouTube als Suchmaschine für den TIOBE-Index verwendet A: Zuerst zählt YouTube für weniger als 10 aller Ratings, so dass es kaum Einfluss auf den Index hat. YouTube wurde als Experiment hinzugefügt. Es qualifizierte sich für den TIOBE-Index wegen seiner hohen Rangliste auf Alexa. YouTube ist eine junge Plattform (also ein Indikator für die Popularität) und es gibt einige Vorlesungen, Präsentationen, Programmiertipps und Spracheinführungen auf YouTube. TIOBE überprüft mehr als 586 Millionen Zeilen Software-Code für seine Kunden weltweit, Echtzeit, jeden Tag. Homemade GPS Receiver Abbildung oben ist der Front-End, erste Mixer und IF-Verstärker eines experimentellen GPS-Empfängers. Die linke SMA ist mit einer handelsüblichen Antenne mit integriertem LNA - und SAW-Filter verbunden. Ein synthetisierter erster lokaler Oszillator treibt die untere SMA an. Pin-Header auf der rechten Seite sind Power-Eingang und IF-Ausgang. Letzteres ist mit einem Xilinx FPGA verbunden, das nicht nur DSP durchführt, sondern auch einen Fraktional-N Frequenzsynthesizer hostet. Mehr dazu später. Ich war motiviert, diesen Receiver nach dem Lesen der Arbeit 1 von Matjax017E Vidmar, S53MV, zu entwerfen, der vor über 20 Jahren einen GPS-Empfänger vor Kratzer entwickelte, der hauptsächlich diskrete Komponenten benutzte. Seine Verwendung von DSP nach einem hart-limitierenden IF und 1-bit ADC interessierte mich. Der hier beschriebene Empfänger arbeitet nach demselben Prinzip. Sein 1-Bit-ADC ist die 6-polige IC in der Nähe der Pin-Header, ein LVDS-Ausgang Komparator. Versteckt unter Lärm, aber nicht in den zweistufigen quantisierten Mush ausgelöscht, die entstehen, sind Signale von jedem Satelliten im Blick. Alle GPS-Satelliten senden auf der gleichen Frequenz, 1575.42 MHz, mit direkte Sequenz Spreizspektrum (DSSS). Der L1-Träger ist über eine Bandbreite von 2 MHz verteilt und seine Festigkeit auf der Erdoberfläche beträgt -130 dBm. Die thermische Rauschleistung in der gleichen Bandbreite beträgt -111 dBm, so dass ein GPS-Signal an der Empfangsantenne 20 dB unter dem Rauschboden liegt. Dass irgendwelche der anwesenden Signale, die übereinander liegen und in Rauschen vergraben sind, nach einer zweistufigen Quantisierung wiederherstellbar sind, scheint mir eine Intimierung zu schreiben, um mich zu überzeugen. GPS beruht auf den Korrelationseigenschaften von Pseudozufallssequenzen, die als Gold-Codes bezeichnet werden, um Signale von Rauschen und voneinander zu trennen. Jeder Satellit überträgt eine eindeutige Sequenz. Alle unkorrelierten Signale sind Rauschen, auch solche anderer Satelliten und Hard-Limiter-Quantisierungsfehler. Das Mischen mit demselben Code in der richtigen Phase dehnt das gewünschte Signal aus und breitet sich weiter aus. Die schmalbandige Filterung entfernt dann Breitbandrauschen, ohne das (noch einmal schmale) Nutzsignal zu beeinflussen. Hard-Limiting (1-Bit-ADC) verschlechtert SNR um weniger als 3 dB, ein Preis wert, um Hardware-AGC zu vermeiden. Mai 2013 Update Dies ist jetzt ein wirklich tragbarer, batteriebetriebener, 12-Kanal-GPS-Empfänger mit schlüsselfertiger Software, der Satelliten erfasst und verfolgt und seine Position kontinuierlich neu berechnet, ohne Benutzereingriff. Das komplette System (unten, links) umfasst: 16x2 LCD-Display, Himbeer-Pi-Modell Ein Computer, zwei benutzerdefinierte Leiterplatten, kommerzielle Patch-Antenne und Li-Ion-Akku. Gesamtsystemstromverbrauch beträgt 0,4A für eine Batterielebensdauer von 5 Stunden. Die Himbeer-Pi wird über das Flachbandkabel mit dem GPIO-Header an die Frac7 FPGA-Platine angetrieben und benötigt keine weiteren Anschlüsse. Derzeit läuft der Pi Raspbian Linux. Eine kleinere distro würde die Zeit verkürzen, um zuerst zu reparieren. Nach dem Booten von SD-Card startet die GPS-Anwendungssoftware automatisch. Beim Ausstieg gibt es eine Möglichkeit, das Pi vor dem Ausschalten ordnungsgemäß abzuschalten. Pi-Software-Entwicklung wurde kopflos über SSH und FTP über einen USB-Wi-Fi-Dongle durchgeführt. Quellcode und Dokumentation finden Sie am Ende dieser Seite. Beide kundenspezifischen Leiterplatten sind einfache 2-lagige PTH-Platten mit durchgehenden Bodenebenen auf der Unterseite. Im Uhrzeigersinn um den Xilinx Spartan 3 auf der Frac7 FPGA-Platine: von 12 Uhr bis 3 Uhr sind der Loop-Filter, VCO, Power Splitter und Prescaler des Mikrowellen-Frequenzsynthesizers unten rechts der Joystick und der JTAG-Stecker und um 6 Uhr Pin-Header für das Himbeer-Pi-Flachbandkabel. Weit links ist der LCD-Anschluss. In der Nähe ist ein temperaturkompensierter spannungsgesteuerter Kristalloszillator (TCVCXO), der eine stabile Referenzfrequenz liefert, die für den GPS-Empfang unerlässlich ist. Die TCVCXO ist gut, aber nicht ganz bis zum GPS-Standard bei der Bedienung von un-boxed an windigen Standorten. Das Blasen desselben verdrängt den 10,000000 MHz-Kristalloszillator um etwa 1 Teil in 10 Millionen oder 1 Hz, der 150 Mal durch den Synthesizer PLL vergrößert wird. Das ist genug, um die Satelliten-Tracking-Loops vorübergehend freizuschalten, wenn es plötzlich geschieht. Die Vorrichtung ist auch etwas empfindlich gegenüber Infrarot, z. B. Aus Halogenbirnen und TV-Fernbedienungen Als erstmals im Jahr 2011 gepostet wurde, war dies ein Vier-Kanal-Empfänger, dh es konnte nur vier Satelliten gleichzeitig verfolgen. Mindestens vier sind erforderlich, um für Benutzer Position und Empfänger Uhr Vorspannung zu lösen, aber größere Genauigkeit ist mit mehr möglich. In dieser ursprünglichen Version füllten vier identische Instanzen des Tracker-Moduls das FPGA. Aber die meisten Flops wurden nur einmal pro Millisekunde getaktet. Nun, eine benutzerdefinierte Soft-Core-CPU im Inneren des FPGA serialisiert die Verarbeitung und nur 50 der FPGA-Gewebe ist für einen 8-Kanal-Empfänger oder 67 für 12-Kanäle erforderlich. Anzahl der Kanäle ist ein Parameter in der Quelle und könnte höher gehen. Die Positionsgenauigkeit ist am besten, wenn die Antenne 360 ° des Himmels sehen und Signale aus allen Richtungen empfangen kann. Im Allgemeinen, je mehr Satelliten im Blick, desto besser. Zwei oder mehr Satelliten auf demselben Lager können zu einer schlechten Geometrie führen. Die beste Fix so weit war plusmn1 Meter an einem sehr offenen Ort mit 12 Satelliten, aber Genauigkeit ist in der Regel plusmn5 Meter in ärmeren Standorten mit weniger Satelliten. September 2014 Update Der Quellcode für dieses Projekt wurde unter der GNU General Public License (GPL) erneut veröffentlicht. Architektur Verarbeitung ist zwischen FPGA und Pi durch Komplexität und Dringlichkeit aufgeteilt. Der Pi verarbeitet mathematisch-intensive Heavy-Heben in seinem eigenen Tempo. Der FPGA synthetisiert den ersten lokalen Oszillator, bedient hochrangige Ereignisse in Echtzeit und verfolgt Satelliten autonom. Der Pi steuert den FPGA über eine SPI-Schnittstelle. Zweckmäßigerweise wird das gleiche SPI verwendet, um den FPGA-Konfigurationsbitstream und den binären ausführbaren Code für die eingebettete CPU zu laden. Das FPGA kann auch über ein Xilinx Platform USB JTAG Kabel von einem Windows PC gesteuert werden und erkennt automatisch, welche Schnittstelle benutzt wird. Die L1-Frequenzen werden durch Mischen mit einem 1552,82 MHz lokalen Oszillator auf der GPS3-Front-End-Platine auf eine 1. IF von 22,6 MHz heruntergewandelt. Alle nachfolgenden IF - und Basisband-Signalverarbeitung erfolgt digital im FPGA. Zwei Proportional-Integral - (PI) - Controller pro Satellit, Track-Carrier und Code-Phase. NAV-Daten, die von den Satelliten übertragen werden, werden im FPGA-Speicher gesammelt. Dies wird in den Pi hochgeladen, der die Parität überprüft und Ephemeride aus dem Bitstrom extrahiert. Wenn alle erforderlichen Orbitalparameter gesammelt werden, wird ein Schnappschuss von bestimmten internen FPGA-Zählern genommen, von denen die Zeit der Übertragung auf plusmn 15ns Präzision berechnet wird. Ein Großteil des 1552,82 MHz Synthesizers ist im FPGA implementiert. Man könnte Jitterprobleme erwarten, Co-Hosting ein Phasendetektor mit anderen Logik, aber es funktioniert. Synthesizer-Ausgangsspektral-Reinheit ist hervorragend, obwohl der FPGA-Kern wütend ist und nicht alle auf harmonisch bedingten Frequenzen. Dieser Ansatz wurde getroffen, weil ein Board ähnlich wie Frac7 bereits aus einem früheren Synthesizer-Projekt existierte. Das Hinzufügen eines Front-Endes war der kürzeste Weg zu einem Prototyp-Empfänger. Aber diese erste Version war nicht tragbar: es hatte unangenehme Stromanforderungen und keinen On-Board-Frequenzstandard. Signalverarbeitung bis hin zum Hard-Limiter: Der LMH7220 Komparator hat eine maximale Eingangs-Offsetspannung von 9,5mV. Verstärktes thermisches Rauschen muss dies übertreffen, um es zu umgehen. Schwache GPS-Signale beeinflussen nur den Komparator in der Nähe von Nulldurchgängen Sie werden durch das Rauschen abgetastet Um den Rauschpegel am Vergleichseingang abzuschätzen, tabellieren wir Gewinne, Einfügungsverluste und Rauschzahlen: In-Band-Rauschen am Mischerausgang ist -1740.828-1.5-3.920- 610log10 (2,5e6) -73 dBm oder 52microV RMS. Der Mischer wird in 50-Ohm resistiv beendet und die Stufen arbeiten danach mit höherer Impedanz. Der diskrete ZF-Streifen hat eine Gesamtspannungsverstärkung von 1000, so dass der Komparator-Eingangspegel 52mV RMS beträgt. Der LMH7220 fügt 59 dB Verstärkung hinzu, was insgesamt 119 dB für die ganze IF macht. Die Bereitstellung von so viel Gewinn bei einer Frequenz war ein Risiko. Um es zu minimieren, wurde eine ausgeglichene Schaltkreise über eine feste Grundebene verwendet und abgeschirmtes Twisted-Pair führt den Ausgang zum FPGA. Die Motivation war die Einfachheit, die Vermeidung einer zweiten Umwandlung. In der Praxis ist die Strecke stabil, so dass das Glücksspiel ausgezahlt wird. Aktiver Entkoppler Q1 liefert 5V für die Fernbedienung LNA. Der MMIC-Verstärker U2 bietet 20 dB Verstärkung (nicht bei IF) und sorgt für eine niedrige Gesamtsystem-Rauschzahl, auch wenn lange Antennenkabel verwendet werden. L1 und L2 sind handgewickelte Mikrowellen-Drosseln mit sehr hoher Eigenresonanzfrequenz, die senkrecht zueinander angeordnet sind und von der Grundebene frei sind. Wind 14 dreht, luftgekühlt, 1mm Innendurchmesser von 7cm Längen von 32wg emailliertem Kupferdraht. Mit dem Tracking-Generator auf einer Marconi 2383 SA überprüft, waren diese gut bis 4 GHz. Die Mini-Schaltungen MBA-15L DBM wurde für seinen niedrigen 6 dB Umwandlungsverlust bei 1,5 GHz und niedrigem 4 dBm LO Antriebsbedarf gewählt. R9 beendet den IF-Port. Drei volldifferenzielle ZF-Verstärkerstufen folgen dem Mischer. Low-Q parallel abgestimmte Schaltkreise zwischen Kollektoren, die die Bandbreite von -3 dB um 2,5 MHz einstellen und den Aufbau von DC-Offsets verhindern. L4, L5 und L6 sind Toko 7mm Spulen abgeschirmt. Der BFS17 wurde für seine hohe (aber nicht zu hohe) 1 GHz f T gewählt. I e ist 2mA für das niedrigste Geräusch und vernünftige Betar e. Die 22,6 MHz 1. IF wird durch Unterabtastung bei 10 MHz im FPGA digital auf 2,6 MHz abgesenkt. 2,6 MHz liegt nahe der Mitte der 5 MHz Nyquist Bandbreite. Es ist am besten, das genaue Zentrum zu vermeiden, aus Gründen, die später erklärt werden. Mehrere andere ZF-Frequenzen sind möglich: 27,5 MHz, die bei der 2. IF eine Frequenzumkehr erzeugt, wurde auch erfolgreich versucht. Es gibt einen Kompromiss zwischen Bildproblemen bei niedrigerer und verfügbarer BFS17-Verstärkung bei höheren Frequenzen. Die Signaldetektion beinhaltet die Lösung von drei Unbekannten: welche Satelliten sind im Blick, ihre Doppler-Verschiebungen und Code-Phasen. Eine sequentielle Suche dieses dreidimensionalen Raumes von einem sogenannten Kaltstart konnte viele Minuten dauern. Ein Warmstart mit Almanach-Daten zur Vorhersage von Positionen und Geschwindigkeiten erfordert noch eine Codesuche. Alle 1023 Codephasen müssen getestet werden, um den maximalen Korrelationspeak zu finden. Die Berechnung von 1023 Korrelationsintegralen im Zeitbereich ist sehr teuer und redundant. Dieser GPS-Empfänger verwendet einen FFT-basierten Algorithmus, der alle Codephasen parallel testet. Von kalt, dauert es 2,5 Sekunden auf einem 1,7 GHz Pentium, um die Signalstärke, die Dopplerverschiebung und die Codephase jedes sichtbaren Satelliten zu messen. Die Himbeer-Pi ist etwas langsamer. Bei der Konjugation ist die Kreuzkorrelationsfunktion y (Tau) des komplexen Signals s (t) und des durch den Offset Tau verschobenen Codes c (t): Der Korrelationstheorem besagt, dass die Fourier-Transformation eines Korrelationsintegrals gleich ist Das Produkt des komplexen Konjugats der Fourier-Transformation der ersten Funktion und der Fourier-Transformation der zweiten Funktion: FFT (y) CONJUGATE (FFT (s)) FFT (c) Korrelation wird im Basisband durchgeführt. Der 1.023 Mbps CA Code ist 1023 Chips oder 1ms lang. Vorwärts FFT Länge muss ein Vielfaches davon sein. Die Abtastung bei 10 MHz für 4 ms ergibt eine FFT-Behältergröße von 250 Hz. 41 Doppler-Verschiebungen müssen durch Drehen der Frequenzbereichsdaten getestet werden, jeweils ein Bin bis zu plusmn20 Bins plusmn5 KHz. Die Rotation kann auf jede Funktion angewendet werden. Die 22,6 MHz 1. IF aus dem 1-Bit-ADC wird von einem 10-MHz-Takt im FPGA unter-abgetastet, digital umwandelnd auf eine 2. IF von 2,6 MHz. In der Software wird die 2. IF mit Hilfe von Quadratur-Lokaloszillatoren in ein komplexes Basisband (IQ) umgewandelt. Bei zweistufigen Signalen sind die Mischer einfache XOR-Tore. Obwohl oben nicht gezeigt, werden die Proben vorübergehend im FPGA-Speicher gepuffert. Die Pi ist nicht in der Lage, sie mit 10 Mbps zu akzeptieren. 1,023 Mbps und 2,6 MHz werden durch numerisch gesteuerte Oszillator (NCO) Phasenakkumulatoren erzeugt. Diese Frequenzen sind im Vergleich zur Abtastrate ziemlich groß und sind keine exakten Teilharmonischen davon. Folglich haben die NCOs fraktionierte Sporen. Die Anzahl der Samples pro Code-Chip-Dithers zwischen 9 und 10. Glücklicherweise sind DSSS-Receiver tolerant gegenüber schmalbandigen Interferenten, extern oder selbstgeneriert. Komplexes Basisband wird durch eine Vorwärts-FFT in den Frequenzbereich transformiert, die nur einmal berechnet werden müssen. Eine FFT jedes Satelliten-CA-Codes wird vorberechnet. Die Verarbeitungszeit wird von der innersten Schleife dominiert, die Verschiebung, Konjugation, komplexe Multiplikation und eine inverse FFT pro Satelliten-Doppler-Test durchführt. Die Himbeer-Pis-Videocore-GPU könnte genutzt werden, um die Dinge zu beschleunigen. Bei 10 MHz Abtastrate wird die Codephase auf die nächsten 100ns aufgelöst. Die typische CCF-Ausgabe ist nachstehend dargestellt: Die Berechnung der Peak-to-Average-Leistung über diese Daten ergibt eine gute Schätzung des SNR und wird verwendet, um die stärksten Signale zu finden. Am 4. März 2011 wurden in Cambridge, UK, mit der Antenne auf einer Außenseite nach Norden gerahmte Fensterleiste 20:14 GMT eingeholt: Von den nördlichen Breiten werden im Norden des Himmels im Süden mehr GPS-Satelliten gefunden. Wenn Sie längere Proben nehmen, erhöht sich das SNR und zeigt schwächere Signale, aber die Aufhebung erfolgt, wenn die Aufnahme NAV-Datenübergänge umfasst. Vorwärts FFT-Länge ist eine ganzzahlige Anzahl von Millisekunden, aber die inverse FFT kann verkürzt werden, einfach durch das Werfen von Daten in höherfrequenten Bins. SNR bleibt erhalten, aber die Codephase ist nicht so scharf aufgelöst. Trotzdem wird eine gute Schätzung der Peak-Position durch gewichtete Mittelung der beiden stärksten benachbarten Bins und Off-Air-Tests ergeben, was darauf hindeutet, dass dies sogar bis zu sehr kurzen inversen FFT-Längen funktionieren könnte. Nachdem ein Signal erkannt wurde, wird der nächste Schritt verriegelt, verfolgt und demoduliert die 50 bps NAV-Daten. Dies erfordert zwei inter-abhängige Phasenregelschleifen (PLLs), um Code - und Trägerphase zu verfolgen. Diese PLLs müssen in Echtzeit betrieben werden und sind als DSP-Funktionen im FPGA implementiert. Pi-Software hat eine aufsichtsrechtliche Rolle: Entscheiden, welche Satelliten zu verfolgen, den Sperrstatus zu überwachen und die empfangenen NAV-Daten zu verarbeiten. Die Tracking Loops sind gut in der Aufrechterhaltung Sperre, weil sie sehr schmale Bandbreiten haben, aber diese gleiche Charakteristik macht sie schlecht bei Erwerb Schloss ohne Hilfe. Sie können nicht über Schleifenbandbreite sehen, um etwas weiter weg zu erfassen. Anfängliche Phasen und Frequenzen müssen auf die gemessene Codephase und die Dopplerverschiebung des Zielsatelliten vorgegeben werden. Dies ist unter Pi-Kontrolle orchestriert. Die Schleifen sollten von Anfang an in-Lock sein und bleiben so. Die Codephase wird relativ zum FFT-Abtastwert gemessen. Der Code NCO im FPGA wird zu Beginn der Abtastung zurückgesetzt und akkumuliert die Phase bei einem festen 1.023 MHz. Es wird später mit dem empfangenen Code durch kurzes Pausieren des Phasenspeichers ausgerichtet. Die Dopplerverschiebung auf dem 1575,42 MHz Träger beträgt plusmn5 KHz oder plusmn3 ppm. Es beeinflusst auch die 1.023 Mbps Code Rate von plusmn3 Chips pro Sekunde. Die Länge der Pause wird in der Zeit, in der die Probe aufgenommen wurde, für Code-Kriechen eingestellt. Glücklicherweise ist der Code-Doppler proportional zum Träger-Doppler, für den wir eine gute Schätzung haben. Hardware-Software-Split In der folgenden Abbildung zeigt die Farbcodierung, wie die Implementierung des Tracking-DSP nun zwischen Hardware und Software aufgeteilt wird. Zuvor war dies alles in der Hardware, mit identischen parallelen Instanzen für jeden Kanal wiederholt, wodurch ineffiziente Verwendung von FPGA Ressourcen. Nun wird die langsamere 1-kHz-Verarbeitung per Software durchgeführt, und doppelt so viele Kanäle können in der Hälfte der FPGA-Immobilien untergebracht werden. Die sechs Integrations-und-Dump-Akkumulatoren (Sigma) werden in ein Schieberegister auf der Code-Epoche verriegelt. Ein Dienstanforderungsflag signalisiert die CPU, die die Daten bitweise seriert. Mit 8 Kanälen aktiv, 8 der CPU-Zeit verbrachte die Ausführung der oprdBit-Anweisung Aber es gibt viel Zeit und serielle IO verwendet FPGA-Gewebe wirtschaftlich. Luxuren wie RSSI - und IQ-Protokollierung (z. B. für Scatter-Plots) können nun gewährt werden. Die F (z) Schleifenfilterübertragungsfunktionen verschlingen 2 der CPU-Bandbreite pro aktivem Kanal. Dies sind Standard-Proportional-Integral - (PI) - Regler: 64-Bit-Präzision wird verwendet und Verstärkungskoeffizienten KI und KP, obwohl beschränkt auf Potenzen von 2, sind dynamisch einstellbar. Jeder Kanal, der seine Wendung abwarten muss, kann NCO-Rate-Updates durch zehn oder Hunderte von Mikrosekunden nach einer Code-Epoche verzögern, aber dies führt zu einer vernachlässigbaren Phasenverschiebung bei Frequenzen, bei denen der Phasenrand bestimmt wird. Dünne Spuren sind 1-Bit, sinnlich repräsentierend plusmn1. Der 2,6-MHz-Träger wird zuerst durch Mischen mit frühen, späten und pünktlichen Codes verteilt. I und Q komplexe Basisbandprodukte aus dem zweiten Rang der XOR-Gate-Mischer werden über 10000 Proben oder 1ms summiert. Diese Tiefpaßfilterung reduziert die Rauschbandbreite drastisch und erhöht dadurch das SNR. Downsampling auf 1 KHz erfordert breitere Datenpfade im Softwarebereich. Die Code-Phase wird mit einem herkömmlichen verzögerungsverriegelten Schleife oder einem frühen Spät-Gate verfolgt. Die Leistung in den frühen und späten Kanälen wird unter Verwendung von P I 2 Q 2 berechnet, die unempfindlich gegenüber der Phase ist. Frühe und späte Codes sind ein Chip auseinander, d. h. Frac12 Chip vor und hinter pünktlich. Dieses Diagramm hilft, den Fehler richtig zu machen: Ein Costas Loop wird für die Tracksicherung und die NAV-Datenwiederherstellung im pünktlichen Kanal verwendet. NAV-Daten, m, wird aus dem I-Arm-Zeichen-Bit mit 180-Grad-Phasenunsicherheit genommen. K empfangene Signalamplitude und theta ist die Phasendifferenz zwischen dem empfangenen Träger (sans modulation) und dem lokalen NCO. K variiert von rund 400 für die schwächsten erzielbaren Signale bis über 2000 für die stärksten. Beachten Sie, wie der Fehlerfaktor, der an den F (z) Anlagenregler in der Costas-Schleife zurückgeführt wird, proportional zur empfangenen Signalleistung ksup2 ist. Die Spurverfolgung und damit die Schleifenverstärkung variieren auch mit der Signalleistung in der Codeschleife. Unten ist ein Bode-Plot der Open-Loop-Verstärkung für die Costas Loop bei k500: Costas Loop Bandbreite ist etwa 20 Hz, was für die Carrier-Tracking optimal ist. Die Code-Loop-Bandbreite beträgt 1 Hz. Die Geräuschleistung in solchen Bandbreiten ist klein und die Schleifen können sehr schwache Signale verfolgen. Die oben genannten kI und kP arbeiten für die meisten Signale, aber müssen eine Kerbe für die sehr stärksten fallen lassen. Scilab prognostiziert, und Streuungsplots bestätigen, der Beginn der Instabilität bei kge1500. Paritätsfehler treten nicht auf, wenn die Proben in die entgegengesetzte Hälfte der IQ-Ebene übergehen. (I) Instabilität bei kge1500 Die obigen sind 2 aufeinanderfolgende Frames von jeweils 5 Subframes. Subframes sind 300 Bits lang und nehmen 6 Sekunden zum Senden. Spalte 1 ist die Präambel 10001011. Diese erscheint am Anfang jedes Teilrahmens, kann aber überall in den Daten auftreten. Der 17-Bit-Zähler in Spalte 5 ist wöchentlich (TOW) und setzt um Mitternacht Sonntag auf Null zurück. Der 3-Bit-Zähler in Spalte 7 ist der Teilrahmen ID 1 bis 5. Die Unterrahmen 4 und 5 werden jeweils in 25 Seiten unterteilt und eine vollständige Datennachricht mit 25 Vollbilder dauert 12,5 Minuten. Ich verwende derzeit nur die Daten in den Teilrahmen 1, 2 und 3. Lösen für Benutzerposition Jeder GPS-Satellit überträgt seine Position und die Zeit. Subtrahierende Zeit, die von der empfangenen Zeit gesendet wird, und das Multiplizieren mit der Lichtgeschwindigkeit ist, wie ein Empfänger den Abstand zwischen sich und den Satelliten misst. So würde mit drei Satelliten drei gleichzeitige Gleichungen in drei Unbekannten (Benutzerposition: x, y, z) ergeben, wenn die genaue Zeit verfügbar war. In der Praxis sind die Empfangsuhren nicht genau genug, die genaue Zeit ist eine vierte Unbekannte, daher sind vier Satelliten erforderlich und es müssen vier simultane Gleichungen gelöst werden: Eine iterative Methode wird verwendet, weil die Gleichungen nicht linear sind. Mit dem Erdzentrum (0, 0, 0) und der ungefähre Zeit als Ausgangspunkt konvergiert der Algorithmus in nur fünf oder sechs Iterationen. Die Lösung wird gefunden, auch wenn der Benutzer-Taktfehler groß ist. Die Satelliten tragen Atomuhren, aber diese haben auch Fehler und Korrekturkoeffizienten im Teilrahmen 1 müssen auf die Zeit der Übertragung angewendet werden. Typische Anpassungen können Hunderte von Mikrosekunden sein. Die unkorrigierte Zeit der Übertragung wird durch Skalierung und Hinzufügen von mehreren Zähler gebildet. Time-of-Week (TOW) in Sekunden seit Mitternacht Sonntag wird jeder Unterrahmen gesendet. Datenkanten markieren 20ms Intervalle innerhalb von 300-Bit-Subframes. Der Code wiederholt sich 20 mal pro Datenbit. Code-Länge ist 1023 Chips und Chip-Rate ist 1.023 Mbps. Schließlich werden die 6 höchstwertigen Bits der Code-NCO-Phase angehängt, die Fixierzeit der Übertragung zu plusmn 15ns. Satellitenpositionen bei der korrigierten Sendezeit werden unter Verwendung von Ephemeriden in den Subframes 2 und 3 berechnet. Die Orbitalposition zu einer Referenzzeitzeile (Ephemeriszeit) wird zusammen mit Parametern bereitgestellt, die eine (x, y, z) Position bis zu einigen berechnen lassen Stunden vor oder nachher. Ephemeriden werden regelmäßig aktualisiert und Satelliten übertragen ihre eigenen. Langzeitbahnen der gesamten Konstellation können mit den Almanach-Daten in den Unterrahmen 4 und 5 weniger genau vorhergesagt werden. Dies ist jedoch nicht wesentlich, wenn eine schnelle FFT-basierte Suche verwendet wird. Lösungen werden in erdzentrierten, erdfixierten (ECEF) Koordinaten berechnet. Der Benutzerstandort wird mit einer Korrektur für die Exzentrizität der Erde, die sich am Äquator ausbucht, in Breiten-, Längen - und Höhenweiten umgerechnet. Die unten dargestellten Streudiagramme veranschaulichen die Wiederholbarkeit, den Nutzen der Mittelung und die Wirkung von schlechten Satellitenwahlen. Gitterquadrate sind 0,001 Grad auf jeder Seite. Blaue Punkte markieren 1000 Fixes. Gelbe Dreiecke markieren die Schwerpunkte: (i) Nordwandfenster (ii) Dachantenne (iii) Ostfrontfensterleiste Der enge Cluster (ii) wurde mit Satelliten in vier verschiedenen Seiten des Himmels gewonnen. Nur die Dachantenne hatte eine klare Sicht in alle Richtungen. Aber gute Fixes wurden durch Mittelung erhalten, auch wenn der halbe Himmel verdeckt war. Rooftop-Fixes zeigen auch Ausbreitung wie (i) und (iii) wenn die falschen Satelliten gewählt werden. Die obigen Lösungen wurden ohne Kompensation von ionosphärischen Ausbreitungsverzögerungen unter Verwendung von Parametern in Seite 18 des Teilrahmens 4 erzeugt, die angewendet werden sollten, da dies ein Einzelfrequenzempfänger ist. Ionosphärenrefraktion erhöht die Pfadlängen zwischen Nutzern und Satelliten. Im April 2012 habe ich einen Fehler behoben, der bei Benutzer-Positionslösungen erhebliche Fehler verursacht hat. Ursprünglich war ich durch die Umwandlung von Satellitenpositionen von erdzentriert-erdfixierten (ECEF) zu Erde-zentriert-inertialen (ECI) - Koordinaten wirksam die Erdrotation während der 60 bis 80 ms, die Signale im Flug waren. Ich sehe jetzt Positionslösungsgenauigkeiten von plusmn 5 Meter nach der Mittelung, auch bei eingeschränkter Sichtbarkeit des Satelliten. Ive hat einen Anhang erstellt, der zeigt, wie die iterative Lösung entwickelt wird, ausgehend von einer geometrischen Bereichsgleichung, die mit einer Taylor Series Expansion linearisiert und durch Matrixmethoden für den Spezialfall von vier Satelliten oder den allgemeinen Fall von mehr, mit dem Möglichkeit, gewichtete kleinste Quadrate zu verwenden, um den Einfluss bestimmter Satelliten zu kontrollieren. Youll finden Sie diese und Lösung C Quellcode in den Links am unteren Rand der Seite. Ich danke Dan Doberstein für die Zusendung eines frühen Entwurfs seines GPS Buches 2, der mir half, den Lösungsalgorithmus zu verstehen. Die offizielle US-Regierung GPS-Schnittstelle Spezifikation 3 ist eine wesentliche Referenz. Signalüberwachung Die oben beschriebene Schaltungsanordnung, die meistens in FPGA implementiert ist, dehnt sich aus, indem sie das Produkt aus dem 1-Bit-IF und dem pünktlichen Code nimmt und 50 BPS Datenmodulation hinterlässt. Eine kleine Kerbe durch BPSK-Trägerunterdrückung ist nur zu sehen: Diese Spektren zeigen die gleiche dekomprimierte Übertragung in verschiedenen Spannweiten und Auflösungsbandbreiten (RBW). Die Dopplerverschiebung betrug -1,2 KHz. Der Geräuschboden ist Antennen-Thermo-Rauschen verstärkt und gefiltert durch den ZF-Streifen. -3 dB Bandbreite sieht etwa 3 MHz, etwas breiter als geplant. Der de-spread Träger ist 5 dB über Rauschen bei 30 kHz RBW und 25 dB oben bei 300 Hz RBW. Die empfangene Signalstärke an der Antenne kann als -174110log10 (30e3) 5 -123 dBm geschätzt werden. Es ist immer noch erstaunt mich, wie gut die Frequenzdomain-Informationen durch die Festlegung beibehalten werden. Der LVDS-Sender hat einen konstanten Ausgangsstrom von 1mW in 100 Ohm. Die Spitzenleistung der SA kann 0 dBm nicht überschreiten. Hier sehen wir diese verfügbare Macht über eine Reihe von Frequenzen verteilt. Breitband integrierte Leistungsspektraldichte muss der erste Lokaloszillator sein Ive baute experimentelle Fraktional-N-Synthesizer mit einer universellen programmierbaren Logik für mehrere Jahre: Xilinx Spartan 3 FPGA Frac7 wurde für diesen Zweck gebaut, aber ich hatte keine Ahnung, dass Frac5 in einem GPS verwendet würde Wenn ich es ursprünglich entworfen habe. Das Foto unten zeigt, wie der ROS-1455 VCO-Ausgang auf Frac5 resistiv zwischen dem Ausgang SMA und einem Hittite HMC363 Divide-by-8-Prescaler aufgeteilt wurde. Der 200-MHz-Teilerausgang wird (anders) in den FPGA geleitet, wobei diese Phase mit einer Masterreferenz unter Verwendung von in meinen früheren Projekten dokumentierten Methoden verriegelt wird. Mikrowellenkreis auf Frac7 ist ähnlich, aber verwendet einen Mini-Circuits 3dB Splitter. Hohe Stabilität und niedriges Phasenrauschen werden erreicht, wie in den unten gezeigten VCO-Ausgangsspektren zu sehen ist. Als Frac5 ursprünglich entwickelt wurde, wurde als eigenständiger Frequenzsynthesizer das gleichzeitige Umschalten auf Frequenzen, die nicht harmonisch verwandt waren, vermieden, um Intermodulationssporen zu minimieren. Das FPGA war statisch, als Taktimpulse, die den Phasendetektorausgang umschlossen, das Gewebe überkreuzten. Kein solcher Luxus ist praktisch, wenn das FPGA einen GPS-Empfänger hostet, aber zum Glück ist der lokale Oszillatorausgang gut genug: Die Marconi 2383 Spektrumanalysatoren 50 MHz STD OUTPUT wurden als Masterreferenzquelle für Frac5 und alle internen GPS-Empfängeruhren verwendet. GPS-Empfänger benötigen Genauigkeiten besser als 1 ppm (Teile pro Million), um plusmn5 KHz Doppler-Verschiebungen auf dem 1575.42 MHz L1 Träger zu messen. Jede Frequenzunsicherheit würde einen breiteren Suchbereich erfordern. Eingebettete CPU Mein ursprünglicher GPS-Empfänger konnte nur 4 Satelliten verfolgen. Das verfügbare Gewebe wurde nicht effizient genutzt und das FPGA war voll. Die identische Logik wurde für jeden Kanal repliziert und nur in der 1-kHz-Code-Epoche getaktet. GPS-Aktualisierungsraten sind ziemlich unauffällig und die meisten der parallelen Verarbeitung können einfach nacheinander durchgeführt werden. Das Einbetten einer CPU für diese Aufgabe hat sowohl die Anzahl der Kanäle als auch den freigegebenen Speicherplatz im FPGA erhöht. Diese CPU führt direkt FORTH-Primitive als native Anweisungen aus. Die Besucher meiner Mark 1 FORTH Computer Seite werden mir schon mein Interesse an der Sprache bewusst sein. FORTH ist nicht Mainstream und seine Verwendung hier könnte eine esoterische Barriere sein, aber ich konnte nicht widerstehen, eine andere FORTH CPU zu tun, diesmal in FPGA, nachdem ich das hervorragende J1-Projekt gesehen hatte, was eine Inspiration war. FORTH ist eine Stack-basierte Sprache, die im Grunde bedeutet, dass die CPU Stacks anstelle von Allzweckregistern hat. Wikipedia hat einen guten Überblick. FPGA-Ressourcen: 360 Slices 2 BRAMs Single-Cycle-Befehlsausführung FORTH-ähnliche Dual-Stack-Architektur 32-Bit-Stack und ALU-Datenpfade 64-Bit-Doppelpräzisionsoperationen Hardware-Multiplikator 2k Byte (erweiterbar auf 4k Byte) Code und Daten RAM Makro Assembler-Code-Entwicklung Speicher und IO Zwei BRAMs werden verwendet: eine für Hauptspeicher, die andere für Stacks. Xilinx-Block-RAM ist dual portiert, so dass eine Instanz Host sowohl Daten und Rückkehr Stacks. Jeder Stapelzeiger reicht über die Hälfte des Arrays. Die doppelte Portierung des Hauptspeichers erlaubt den Datenzugriff gleichzeitig mit dem Befehlsabruf. Ein Speicher-Port wird durch den Programmzähler adressiert, der andere von T, der Oberseite des Stapels. Writes an den PC-adressierten Port werden auch für Code-Download verwendet, wobei der Programmzähler inkrementelle Adressen liefert. Code und Daten teilen sich den Hauptspeicher, der als 1024 (erweiterbar auf 2048) 16-Bit-Worte organisiert ist. Speicherzugriffe können 16-, 32- oder 64-Bit sein, Wort-ausgerichtet. Alle Anweisungen sind 16-Bit. Gesamtcode plus Datengröße der GPS-Anwendung ist weniger als 750 Wörter, obwohl alle Schleifen abgerollt sind. IO ist nicht speicherzugeordnet und besetzt seinen eigenen 36-Bit-Auswahlraum (12 in 12 aus 12 Ereignissen). Eine Heißkodierung wird verwendet, um die Auswahldekodierung zu vereinfachen. IO-Operationen sind unterschiedlich 1-Bit seriell, 16- oder 32-Bit parallel. Serielle Daten verschieben 1 Bit pro Taktzyklus. Ereignisse werden hauptsächlich als Hardware-Strobes verwendet und unterscheiden sich von Schriften, indem sie den Stapel nicht auftauchen. Instruktionsformat 24 Befehle aus einem möglichen 32 werden derzeit im opcode space h80XX - h9FXX vergeben. Dies sind meist Null-Operand-Stack-ALU-Operationen. Die ret-Option, die die Rückkehr aus der Subroutine durchführt, führt parallel zum gleichen Zyklus aus. Add-Sofort ist die einzige Ein-Operand-Anweisung. Eine Carry-In-Option erweitert (Stack, impliziert) Addition Präzision. HF0000 - hFFFF ist Ersatz. Stack - und ALU-Datenpfade sind 32-Bit, jedoch werden 16-, 32- und 64-Bit-Operationen unterstützt. 64-Bit-Werte besetzen zwei Plätze auf dem Stapel, mit niedrigstwertigen Bits oben. Top of Stack, T, und weiter auf Stack, N, sind außerhalb der BRAM für Effizienz registriert. Abgesehen von der 64-Bit-Linksverschiebung (opshl64), die für die Einzelzyklus-Ausführung fest verdrahtet ist, sind alle anderen doppelten Präzisionsfunktionen Software-Subroutinen. Assembler-Sprache Die GPS-eingebettete Binärdatei wurde mit Microsofts Macro Assembler MASM erstellt. Dies unterstützt nur x86 mnemonics, aber Opcodes werden mit equ deklariert und Code wird mit dw-Richtlinien zusammengestellt. MASM bietet nicht nur Etikettenauflösung, Makroerweiterung und Ausdrucksauswertung, sondern auch Datenstrukturen Der MASM dup () - Operator wird ausgiebig verwendet, um Loops, z. B. Dw N dup (opcall dest) ruft eine Subroutine N mal auf. Dieses Fragment gibt etwas Geschmack des Quell-Stils. Stack-Effekt wird auf jeder Zeile kommentiert: opfetch16 und opstore16 sind primitives. Opstore32 und opstore64 sind Unterroutinen oder zusammengesetzte Anweisungen, die als primitiv verwendbar sind. T ist eigentlich 15: 0,31: 16 nach opswap16. Aber wir interessieren uns nicht für die oberen 16-Bits hier. Opstore16 verlässt die Adresse Stapeltiefe kann nur plusmn1 pro Zyklus ändern. Puristen mögen es vorziehen: dw N addi Host serielle Schnittstellen Das FPGA kann über SPI mit dem Raspberry Pi oder über einen Windows PC mit einem Xilinx Platform USB JTAG Kabel gesteuert werden. Es gibt zwei Ebenen der Anforderungspriorität: Senden Sie den neuen Befehl und die Abfrage für die Antwort auf vorherige Neue Codebilder werden über einen dritten BRAM, der die CPU und serielle Clock Domains überbrückt, in den Hauptspeicher kopiert. So werden heruntergeladen, Binärbilder werden automatisch ausgeführt. Host-Befehle werden in der Bridge BRAM erfasst und die CPU wird signalisiert, sie zu handeln. Seine Antworten werden vom Gastgeber aus der Brücke beim nächsten Scan gesammelt. Die Top-Level-Hauptschleife fragt nach Host-Service-Anfragen ab. Das erste Wort einer beliebigen Host-Nachricht ist ein Befehlscode. Anfragen werden über die Befehle Sprungtabelle verschickt: optor bewegt den Vektor in den Rückgabestapel. Einige Host-Anfragen (z. B. CmdGetSamples) erlangen langwierige Antworten. Datenports auf der CPU-Seite der Brücke sind 16-Bit. Die CPU kann diese über den Datenstapel lesen und schreiben, jedoch sind für den Hochladen von Hauptspeicher und GPS-IF-Samples mehr direkte Pfade vorhanden. Die Anweisung opwrEvt GETMEMORY überträgt ein Speicherwort direkt an die Brücke, wobei T als auto-inkrementierender Zeiger verwendet wird. 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:Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. Wenn Sie die Seite weiter durchsuchen, stimmen Sie der Verwendung von Cookies auf dieser Website zu. Siehe unsere Benutzervereinbarung und Datenschutzbestimmungen. Slideshare verwendet Cookies, um Funktionalität und Leistung zu verbessern und Ihnen relevante Werbung zu bieten. Wenn Sie die Seite weiter durchsuchen, stimmen Sie der Verwendung von Cookies auf dieser Website zu. Weitere Informationen finden Sie in unserer Datenschutzerklärung und Benutzervereinbarung. Explore all your favorite topics in the SlideShare app Get the SlideShare app to Save for Later even offline Continue to the mobile site Upload Login Signup Double tap to zoom out Designing of 8 BIT Arithmetic and Logical Unit and implementing on Xilinx Vertex 4 FPGA Share this SlideShare LinkedIn Corporation copy 2017
No comments:
Post a Comment