Hallo Leute, beim Entwurf meiner Hardware für ein Uni-Projekt könnte ich Hilfe gebrauchen. Es geht um Folgendes: 1. Ein ADC soll ein Empfangssignal mit 1GHz Bandbreite unterabtasten. 2. Die digitalisierten Daten sollen zur weiteren Verarbeitung auf den PC übertragen werden. Im empfangenen Signal ist ein periodischer 128-bit breiter Bitstream, der jedoch als solcher nicht mehr erkennbar ist. Da es eine periodische Bitfolge ist, ist eine Unterabtastung möglich, ohne dass Nyquist-Kriterium verletzt wird. Das analoge Empfangssignal soll also "nur" digitalisiert werden. Was mit den digitalen Daten auf dem PC geschieht, ist eine andere Story. Ich habe mich bei High-Speed-ADCs umgeschaut ein paar ausgesucht (als PDF angehängt). Dabei kommt es auf deren Eingangsbandbreite an. Bei dem ADS5103 ist sie mit 950MHz (bei -3dB) angegeben und ich frage mich, ob das für meine Zwecke reicht. Schwierigkeit sehe bei der Handhabung der digitalen Daten am Ausgang des ADC. Die Auflösung von 10bit ist m.E. ausreichend und bei z.B. 40MSPS Abtastrate kommen da schon zig MByte/s zusammen (40MB/s bei 8bit-Auflösung). Wie kann ich diese Datenmenge ohne viel Aufwand auf einen PC übertragen? Vielleicht hat jemand hier aus dem Forum Erfahrung mit solchen Sachen... Ich wäre für jeden Tipp oder Rat dankbar. Grüße lele
naja das ist schon heftig, was steht dir den HW seitig zur Verfügung? Gbit Ethernet? USB2.0? FireWire? Die Daten könnte man event. vorher komprimieren und dann an den PC weiter Leiten, oder lokal Speichern wenn es geht und dnan abrufbar machen? Wie lange musst du die Daten aufzeichnen?
fällt mir da ein das FT232H usb2 high speed modul in verbindung mit nem cpld
Bei der Sample-Sequenz nehme ich mal salopp 1s an. Bei der Schnittstelle zum PC habe ich an USB 2.0 gedacht, mit einem FTDI-Chip relativ einfach umzusetzen. Mit 480Mbit/s = 60MByte/s, abzüglich Overhead könnte es hinkommen. Aber das ist nur eine Vermutung. Ich habe auch an einen Static-RAM gedacht, wo die Daten erst mal gesammelt werden und dann zum PC übertragen. Das wäre dann wohl eine Lösung mit einem uC oder DSP. Auf FPGA/CPLD möchte ich verzichten, da die Zeit (Programmieraufwand) und Mittel knapp sind. Was könnte ich denn in so einem Fall als uC verwenden, der die Daten auf dem RAM vorerst unterbringt? (bevorzugt sind AVR und PIC)
Ja wenn du nur 1 sek. Samplest, nimm einen ARM mit externen D-RAM und dort speicherst du alles rein und dann schickst du es "langsam" an den PC.
der LTC2242 ist auch im QFN-Gehäuse während der ADS5103 im TQFP- Gewand daher kommt. Wenn man das nicht selber löten muß oder das nötige Gerät dazu hat ist beides kein Problem, aber wenn nicht hmmm Ich denk nicht das ein normaler AVR oder PIC diese Datenmenge rockt. Gruß Andi
@Andi: solange es kein BGA ist, ist Gehäuseform nicht wichtig. Liege ich richtig in der Annahme, dass der uC mindestens die gleiche Taktfrequenz haben müssße wie ADC-Abtastrate? Also bei dem ADS5103 wären es dann mind. 40MHz, beim LTC2242 250MHz. Oder ist eher die MIPS-Angabe des uC relevant? Wie ist da der Zusammenhang und worauf muss ich achten?
Ich habe da gleich mehrere Gedanken, wenn ich den ersten Post des TE lese: - A/D 10 Bit, mind. 1 GHz Bandbreite, e2v stellt sowas her, Analog Devices auch, sogar mit 12 Bit. Die haben Multiplex-Ausgänge, also eine reduzierte Rate für die Daten, "nur noch" 1.25 GSPS beim e2v. Da braucht es ein mächtiges FPGA zur Weiterverarbeitung der Daten. - Die Algorithmen für die "Demodulation" müssen im FPGA und angeschlossenen sehr schnellen Cache-RAMs stattfinden, sonst ist die Datenrate gar nicht zu schaffen. Wir reden von mindestens 2 GByte/s, die auch so schnell verarbeitet werden müssen. Kein Pappenstiel..... - Der Dynamikbereich eines 10 bit A/D-Wandlers ist begrenzt, das thermische Grundrauschen ist bei der Bandbreite recht hoch. Man muß sehr aufpassen, daß das gesuchte Signal nicht im Quantisierungsrauschen verschwindet, und der Wandler gleichzeitig nicht übersteuert wird. Nicht einfach! So ein System habe ich mal in einer Firma "erlebt". Die Programmierung des FPGA machte ein Dr.-Ing., der brauchte länger als 1 Jahr um es sauber zum Laufen zu bringen. Das Layout benötigte länger.......12 Lagen. Gruß, Jochen
@ Jochen: Danke, du hast Recht, aber ich möchte unterabtasten - z.B. mit 40MSPS. Deswegen habe ich oben im 1. Thread die beiden ADCs vorgeschlagen. Das Quantisierungsrauschen ist nicht von Belang, da das eigentliche Empfangssignal ohnehin u.a. im Weißen Rauschen untergegangen ist. Aber darum geht es nicht. Ich arbeite am Konzept für die Übertragung der digitalisierten Daten zum PC. Das ist das eigentliche Problem und hier benötige ich Hilfe.
Achtung: Der Trick mit "untergegangenen" Signalen ist die Überabtastung, und die anschließende Summierung zum Reduzieren des Rauschanteils. Das muß gründlich gerechnet werden, sonst kommt da nix heraus.
@Jochen: Ja, danke für den Hinweis. Aber das ist mir auch bewußt, nur es soll dabei auch nichts "rauskommen". Die ganze Bearbeitung, Spektralanalyse, Korrelation mit anderen Signalen usw. erfolgt später am PC, aber wie gesagt - es ist eine andere Geschichte. Was später genau mit den Daten passiert weiß ich nicht, also um Auswertung in dem Sinne geht es hier nicht.
Toll! Schon wieder ein Marketingexperte, der sich für einen Ingenieur hält..... Die Versprechen an den Aufsichtsrat werden wie Seifenblasen zerplatzen, und übrig bleibt - ein Verlust für die Aktionäre. Ich habe wirklich genug von den Sprücheklopfern mit ihrem gefährlichem Halbwissen!
Jochen Fe. schrieb: > ... der sich für einen Ingenieur > hält..... ...noch nicht, aber hoffentlich bald - noch bin ich Student. Habe eine Aufgabe vom Prof eine Hardware zu entwerfen. Aber genug Rechtfertigung - falls du mir keinen Rat zu meinem eigentlichen, oben beschriebenen Problem geben kannst, bitte ich dich diesen Thread zu ignorieren. Für bisherige Hinweise - danke.
Rat habe ich genug gegeben. Gruß an den Prof. im Fachbereich BWL!
Bedenke vorher, wie spaeter auf den Datenstrom sychronisiert wird.
Hab gerade mal geschaut ob jemand was interessantes hier reingeschrieben hat. Ist ja nicht so ergiegig. Sag mal Michi (wenn du überhaupt noch hier reinschaust!): Ist das soweit richtig das du nicht genug Samples pro Sekunde aufnimmst um ein Signal höher als 20 MHz (habe mal gelesen das man die Taktfrequenz, also hier deine 40 MHz, halbiert) noch korrekt darstellen zu können? Da bleibt bis zum 1 GHz ja noch ne Menge platz ;o) ABER das scheint auch nicht die Aufgabenstellung zu sein hier ein Signal bis zu 1 GHz darstellen zu wollen. Du sollst die Daten dir du mit den 40 MHz Takt sampelst entweder über ein µC oder irgendeinen anderen Chip zum PC wuchten. FTDI wird da auch nicht ohne einen µC auskommen. Wenn du etwas Zeit hast und 50 Euronen mitbringst dann würde ich zu einem PIC32MX795F512L mit 80MHz Taktrate raten (ich würde es damit jedenfalls mal probieren!). Wenn es nicht geht scheiß drauf und versuch was anderes. Damit du nicht zuviel Zeit da reinsteckst schau dir das Board hier an: TDGL003 - chipKIT Max32 Development Board http://www.microchipdirect.com/ProductSearch.aspx?Keywords=TDGL003 USB2 OTG und Ethernet 10/100, 2 gute Möglichkeiten. Ich nehme an das du Samples über einen langen Zeitraum aufnimmst und weil du einen periodischen Bitstream in dem Signal versteckt hast am Ende durch puzzeln darauf kommst wie der aussieht. Aber das ist ja dann auch nicht deine Baustelle sondern das übernehmen die Jungs am PC. Die anderen scheinen der Meinung zu sein das du nur an diesen Stream wieder rankommst wenn du das Signal annähernd gut wiedergeben kannst. Und daher wohl die Verwirrung im Thread. Gruß Andi
@Andi: Du hast es erfasst, worum es geht. Danke für den Tipp. Ich versuche noch mal deutlicher meine Überlegung darzustellen. Ihr könnt ja sagen, ob ich falsch liege. Der Sender sendet mit 1GHz Takt periodisch eine 128bit-breite Bitfolge (ein PN-Signal), also ein Rechteck-Signal. Die Bitfolge-Sequenz hat also eine Wiederholungsfrequenz von 1GHz/128=7,8125MHz Es geht darum, inwiefern ein "langsamer" ADC für dessen Unterabtastung geeignet ist. Ich war nicht dabei, aber die haben diese Prozedur bereits mit einem Digitaloszilloskop hinbekommen. Also Unterabtastung, Daten-Speicherung, auf dem PC mit Matlab ausgewertet.(wie genau sie das gemacht haben - werde ich wohl nächste Woche in Erfahrung bringen) Jetzt geht es darum eine Platine mit z.B. dem ADS5103 aufzubauen, die das auch kann. Ich bin auf der Suche nach einem System (uC, Speicher, Übertragungsschnittstelle), das so eine Datenmenge (40MSPS x 10Bit = 50MByte/s) bewältigen kann. Die meisten EvoBoards mit solchen High-Speed-ADCs haben einen FPGA. Ich denke mann kann es auh mit einem uC realisieren. Im Moment weiß ich noch nicht so recht was ich alles bedenken muss und wie ich an die Sache rangehe. Deswegen suche ich Hilfe hier. Da sind z.B. Fragen zu klären: 1. Reicht eine Samplingdauer von 1s aus? 2. Kann ich den parallelen Ausgang des ADC mit einem uC synchron auslesen? 3. Braucht die Schnittstelle ADC-uC einen Buffer? 4. Ist für die Verarbeitungsgeschwindigkeit die Taktfrequenz des uC relevant oder eher die MIPS-Angabe? 5. Wie groß soll der statische Speicher auf dem Board sein. (hängt wohl von Samplingdauer ab)
>4. Ist für die Verarbeitungsgeschwindigkeit die Taktfrequenz des uC >relevant oder eher die MIPS-Angabe? Sicher dass du dir sowas zutraust? Wenn der Prozessor für eine Instruktion 10 Takte braucht bringen dir 100MHz auch nix. Geht natürlich um die MIPS. Du musst außerdem überlegen was für nen Prozessor du nutzt. Wenn du ARMs oder vergleichbares benutzt kannst du evtl. sogar was mit DMA reißen, sprich den eigentlichen Prozessor entlasten. Kommt aber wohl auf die Schnittstelle zum ADC an, wenn du einen externen nutzt. >5. Wie groß soll der statische Speicher auf dem Board sein. (hängt wohl >von Samplingdauer ab) 40 MSPS * 10bit macht 400 MBit/s macht also 50MB/s. Wenn du eine Sekunde samplen willst also 50MB. Da du mit Sicherheit nicht so viel SRAM billig kriegst läufts wohl auf SDRAM raus. Da kann man schon mal 64MB an nen ARM hängen. Auf der anderen Seite kriegst du das halt auch nich durch 100MBit Ethernet. Also die eine Möglichkeit wäre wirklich nen riesen RAM ranzuhängen, die andere einfach nen ARM mit Gbit LAN zu nehmen und den DMA die Daten von einem in den anderen Puffer zu schieben. Da ist die Frage ob das schnell genug geht, müsste man mal rechnen. Alles in allem hat es schon seinen Grund, dass für sowas meist FPGAs genutzt werden.
Es gibt eine Aktualisierung der Anforderung an meinen Empfänger. Das Signal muß nicht zwangsläufig mit 40MSPS abgetastet werden. Da es sich hierbei um Unterabtastung handelt, ist die Samplingrate kein entscheidendes Kriterium. D.h. ich kann auch langsamer und dafür über längeren Zeitraum samplen - bis der Speicher eben voll ist. Also folgende Prozedur: - uC liest digitalen ADC-Wert aus - uC schreibt den Wert in SRAM (paar ADC-Werte gehen solange "verloren") - uC liest digitalen ADC-Wert aus - uC schreibt den Wert in SRAM (paar ADC-Werte gehen solange "verloren") ... ... - Speicher voll Dann werden die ganzen Daten an den PC übertragen. Die Datenübertragung soll über USB mit der simulierten RS232-Schnittstelle erfolgen. So die Vorgabe. Das bedeutet der ADC tastet zwar mit 40MSPS ab, jedoch bestimmt der uC die "effektive" Abtastrate. Jetzt etsteht bei euch evtl. die Frage warum ich nicht einen langsameren ADC nehme oder den internen vom uC benutze? Die Antwort ist: Weil hier die Eingangsbandbreite von 1GHz entscheidend ist und langsame ADCs mit so einer Bandbreite gibts nicht auf dem Markt. Ich muss noch in Erfahrung bringen, ob 950MHz schon ausreichen. Wobei ich das bezweifele, da 1GHz der Takt des Senders ist und zwar nur die sin-Grundschwingung. Übrigens - der Takt für mein System kommt vom Sender (vermutlich 1GHz - das muss ich noch erfragen), d.h. mein Empfänger soll mit dem Sender synchron laufen. Hat jemand einen konkreteren Vorschlag zur Realisierung? Welchen uC könnte ich nehmen, um die Sache möglichst einfach zu machen? (Andreas G. hat bereits den PIC32MX795F512L mit 80MHz vorgeschlagen) Danke im voraus lele
Schau Dir mal den LPC1769 von NXP an. Der läuft mit 120 MHz, hat jede Menge Schnittstellen, DMA ... Gruß, Klaus
Moin Michi, das wichtige wird das synchronisieren sein und das der PIC32MX795F512L mit einen Takt von 1 GHz zu synchen ist wage ich zu bezweifeln. DMA hat der µC übrigens auch auch. Aber ich habe keinen Plan wie das mit dem synchronisieren laufen soll. Gruß Andi
Michi B. schrieb: > die Frage warum > > ich nicht einen langsameren ADC nehme oder den internen vom uC benutze? > > Die Antwort ist: Weil hier die Eingangsbandbreite von 1GHz entscheidend > > ist und langsame ADCs mit so einer Bandbreite gibts nicht auf dem Markt. Du brauchst keinen so schnellen ADC, es reicht schon eine geeignet S&H-Einheit.
@ NoPoP: Bisher habe ich keine S&H-Einheit mit 1GHz bandbreite gefunden. Der ADC ADS808 von TI hat die Bandbreite von genau 1GHz (so brauche ich keinen Band- bzw. Tiefpass) und einen CMOS-Parallel-Ausgang (viele ADCs in diesem Sektor haben LVDS). 80MSPS Samplingrate und 12-bit-Auflösung sind zu viel, aber nicht entscheidend. Hat TQFP-Gehäuse. Der erwähnte PIC32MX795F512L sollte den Ansprüchen genügen. Was benötige ich für eine Takt-Synchronisierung? Reicht ein Frequenzteiler?
Kann mir jemand sagen wie lange der PIC32MX795F512L (80MHz) braucht, um einen externen 12-bit-ADC über seine I/Os auszulesen und den Wert sofort in einem externen SRAM abzuspeichern? Die Frage bezieht sich nur auf softwareseitige Umsetzung, also ohne DMA. Zur Auswahl stehen zwei SRAMs - einmal mit 10ns Zugriffszeit und einaml mit 55ns. Ich weiß, dass es von der Komplexität des Codes abhängt bzw. wie umständlich man programmiert hat. Ich möchte es gern so PI x Daumen wissen, bei einem mehr oder weniger optimalen Code. Danke im voraus lele
Probier doch mal direkt bei Microchip im Forum genau diese Frage zu stellen! Hast du denn schon ne Idee wie du das mit dem synchronisieren machst?
Nach dem heutigen Gespräch mit dem Erbauer des Senders hab ich folgendes grobes Konzept: s. Bild. ADC1 erfasst Sender-Signal, identischer ADC2 erfasst synchron das Empfänger-Signal. Daten werden gespeichert bis der Speicher voll ist. Dann erfolgt die Datenübertragung zum PC. Mir stellt sich die Frage, ob der Takt für ADCs vom Sender komen muss... Ich glaube in diesem Fall nicht.
Sorry! Hier ist das Bild. (leider etwas zu groß geraten)
Der Senfgeber Jochen!!! Passt leider nicht, esse gerade Käse ;)
Der Bitstream läuft im Sender mit 2GHz Takt. Das Spektrum des eigentlichen PN-Signals ist eine sin(x)/x Funktion mit dem ersten Nullpunkt bei 2GHz. Da der Anteil der zu übertragenden Leistung im Bereich 1GHz... 2GHz sehr gering ist, wird alles über 1GHz weggefiltert, um es nicht senden zu müssen ("nur" 5%... 10% des Signals gehen so verloren). Seit gestern habe ich etwas mehr Infos über die ganze Sache. Es ist ein Radar-Projekt und es soll die Phasenverschiebung zwischen dem Sende- und Empfangssignal gemessen werden. Sender und Empfänger befinden sich also in einem Gerät. So vereinfacht sich die ganze Sache, ich nehme einen zweiten ADC. Der eine tastet den Sender ab, der andere den Empfänger. Da beide denselben Takt verwenden, laufen sie synchron. Damit erübrigt sich das Problem mit der Synchronisierung. Den Takt für meine Komponenten kann ich dann selbst vorgeben. So stelle ich mir das ganze vor. Ist meine Überlegung soweit richtig?
Wenn die Leitungslänge vom "Taktsignal" zu den ADCs gleich ist, joa! Läßt du beim µC dann einen Timer mitlaufen, braucht man da so einen Timestamp oder sowas?
Ja - im uC einen Counter laufen lassen, der periodisch die Zeitpunkte zum Einlesen der digitalen Werte vorgibt. Wo steht es im Datenblatt vom z.B. ADS808 (s.o.) wie lange der digitalisierte Messwert am ADC-Ausgang gehalten wird bzw. zum Lesen zur Verfügung steht? Ist diese Dauer fest vorgegeben oder ist das gleich der Abtastzeit bzw. davon abhängig, also z.B. bei 1MSPS wäre das 1us?
im Datenblatt vom PIC32MX steht folgendes: "• Parallel Master and Slave Port (PMP/PSP) with 8-bit and 16-bit Data and Up to 16 Address Lines" Bedeutet das, dass ich maximal 64k x 16bit = 128kByte externen SRAM nutzen kann?
Das mit der Unterabtastung koennte man ja so ausdruecken: im ersten 128er Zeitschlitz wird das erste Bit abgetastet, im 2. das zweite, im 3. das dritte u.s.w. Da man im 3. Schlitz nicht das 4. bit abtasten will, muss der Takt am ADC mit einer Praezision von 1/3 ns anliegen . Der Mikrocontroller koennte mit einem Takt von 1GHz/129 betrieben werden, das stellt sicher dass das load und store immer exakt mit jedem Zeitschlitz ein bit spaeter passiert. Eine PLL kann diesen Takt generieren und sollte auch direkt den ADC-Takt erzeugen. Den Takt vom Mikrocontroller zu entnehmen halte ich fuer keine gute Idee, da ist zuviel jitter drauf. Der Mikrocontroller kann allenfalls ein clock-gating-Signal erzeugen mit der der PLL-Takt an den ADC weitergeschaltet wird. Das gate-Signal muss eben ein paar ns vor dem eigentlichen ADC Takt auf HIGH gehen, 13 Takte auf HIGH bleiben ( bei 12 bite pipelined ADC reicht das, aber trotzdem Datenblatt checken ) und dann wieder auf LOW.
Michi B. schrieb: > im Datenblatt vom PIC32MX steht folgendes: > > "• Parallel Master and Slave Port (PMP/PSP) with > 8-bit and 16-bit Data and Up to 16 Address Lines" > > Bedeutet das, dass ich maximal 64k x 16bit = 128kByte externen SRAM > nutzen kann? Hab die Antwort selbst gefunden. Falls es noch jemanden interessiert, folgendes steht im Datenblatt: Question 1:Is it possible for the PMP module to address memory devices larger than 64K? Answer:Yes; however, not directly under the control of the PMP module. When using the PMCS2 or PMCS1 Chip Select pins, the addressable range is limited to 16K or 32K locations, depending on the Chip Select pin being used. Disabling PMCS2 and PMCS1 as Chip Selects allows these pins to function as address lines PMA15 and PMA14, increasing the range to 64K addressable locations. A dedicated I/O pin is required to function as the Chip Select and the user’s software must now control the function of this pin. To interface to memory devices larger than 64K, use additional available I/O pins as the higher order address lines A16, A17, A18, etc., as shown in Figure 13-46.
Uwe schrieb: > Nimm ein FPGA ist einfacher für die Aufgabe. Ja, das stimmt, das ist einfacher! Nur wer programmiert den FPGA?
Kann mir jemand sagen mit welchem IC (Frequenzteiler) ich den Takt dieses ADC (Anhang) über seinen Clock-Eingang einstellen/ändern kann? Ich möchte bei 1MHz anfangen und aufwärts die Samplerate einstellbar machen (Schrittweite erst mal egal). Muss aber nicht bis 70MSPS gehen (s. Datenblatt), 20MSPS oder 40MSPS als Maximum würden reichen.
@ Michi B. Solche Teiler können im einfachsten Fall schnelle Logik-Binärcounter der HC Serie sein oder PLLs. Bei geraden Verhältnissen billige Logik, wenn die Teiler ungerade sein sollen, dann PLL. Je nach Auflösung des Phasenakkumulators kannst du Teiler bis XXXbit aufbauen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.