Forum: Mikrocontroller und Digitale Elektronik Digital Oszilloskop FPGA


von sakul (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich plane gerade ein 2-Kanal Digitaloszilloskop.

1MSPS 16bit ADC: LTC2383-16
ADC-Treiber: LT6350
FPGA: Xilinx XC3S100E

Anbindung über RS232 an PC. Das FPGA befindet sich auf einem externen 
Board.
Angehängt habe ich mal den ersten Plan für einen 
Eingangsspannungsbereich von +/-10V (1 Kanal).
Ich wäre sehr dankbar wenn da mal jemand mit mehr Erfahrung drüber 
schauen könnte. Wie sollte ich die beiden Tiefpassfilter am Eingang 
auslegen?

von sakul (Gast)


Lesenswert?

push

von Thomas R. (tinman) Benutzerseite


Lesenswert?

sakul schrieb:
> *push*

push ?

Du hast doch LTC2383 application note komplett kopiert, damit
bist du schon auf der sicheren seite.

Wegen den filtern, wenn du schon app note kopierst lese es mindestens
was drin steht.

Und übrigens, 1MSPS ADC und FPGA, und dann RS232? Die kombination
ist etwas seltsam.

von sakul (Gast)


Lesenswert?

> Wegen den filtern, wenn du schon app note kopierst lese es mindestens
> was drin steht.
Das habe ich. 48kHz Tiefpass am Eingang. Da bleibt von einem 
Rechtecksignal was man aufnehmen will nicht viel übrig oder sehe ich das 
falsch?

von Mazze (Gast)


Lesenswert?

sakul schrieb:
> 48kHz Tiefpass am Eingang. Da bleibt von einem
> Rechtecksignal was man aufnehmen will nicht viel übrig oder sehe ich das
> falsch?
Kennst du LTspice?

von Max M. (maxmustermann)


Lesenswert?

Hallo sakul,

also bezüglich der PC Schnittstelle würde ich dir empfehlen das serielle 
Interface mit einem USB Bridge Chip von FTDI zu machen. Nicht mehr viele 
PCs, besonders Notebooks haben keine RS232 Schnittstelle mehr und du 
bräuchtest einen separaten USB seriell Wandler. Mit z.B. einem FT240X 
von FTDI hast du ein paralleles Interface und schaffst Datenraten bis zu 
1MByte/s. Mit dem FPGA ist auch das Interface schnell implementiert. 
Solltest du eine höhere Datenrate benötigen, kannst du einen FT232H 
nehmen, mit dem gehts dann bis zu 40MByte/s, jedoch ist dort die externe 
Beschaltung etwas komplexer. Zum Programmen gibt es die D2XX Lib mit der 
du Daten senden und empfangen kannst.

Viel Erfolg bei deinem Projekt!

LG Max

von sakul (Gast)


Lesenswert?

Mazze schrieb:
> Kennst du LTspice?

Bis gerade eben nicht. Habe die Treiberschaltung simuliert. Sie 
funktioniert! Mit Tiefpass am Eingang gibts halt Probleme bei 
Rechtecksignalen. Lässt man den dann komplett weg?

von Tokyo D. (tokyodrift)


Lesenswert?

Max Mustermann schrieb:
> Solltest du eine höhere Datenrate benötigen, kannst du einen FT232H
> nehmen, mit dem gehts dann bis zu 40MByte/s, jedoch ist dort die externe
> Beschaltung etwas komplexer. Zum Programmen gibt es die D2XX Lib mit der
> du Daten senden und empfangen kannst.

Hier kommen wir der Sache schon näher. Da kann man dann auch hübsch die 
Daten im PC RAM ablegen.

sakul schrieb:
> Mazze schrieb:
>> Kennst du LTspice?
>
> Bis gerade eben nicht.

Na das kann ja nur gut gehen...

Ein DSO ist eben nicht nur ein schneller ADC (im übrigen viel schneller 
als 1MSPS, die haben ja 1GSPS und mehr), ein hübscher FPGA für die 
Signalverarbeitung und nem ARM für FFT und co.
Da gehört viel Analoges an den Eingangsstufen dazu. Guck dir mal die 
Schaltpläne von richtigen Oszis an.

EDIT: Achso, ja, soweit ich weiß werden für höhere Datenraten mehrere 
ADCs Phasenverschoben benutzt. Natürlich trotzdem welche mit mehr Power 
als 1 MSPS...

von Oli (Gast)


Lesenswert?


von sakul (Gast)


Angehängte Dateien:

Lesenswert?

Danke Max, werde nun zusätzlich einen FT240X nutzen.

Tokyo Drift schrieb:
> sakul schrieb:
>> Mazze schrieb:
>>> Kennst du LTspice?
>> Bis gerade eben nicht.
> Na das kann ja nur gut gehen...
Nicht falsch verstehen, PSpice ist mir durchaus bekannt. Ich kannte nur 
LTspice nicht.

Dass ein DSO viel komplexer ist, ist mir durchaus bewusst. Ich würde die 
Eingangsstufe nur gerne so einfach wie möglich aufbauen.
Ziel des Projekts ist mehr der Lerneffekt. Zu komplex sollte das ganze 
nicht werden.

von Tokyo D. (tokyodrift)


Lesenswert?

Hast du schon ein FPGA (Modul) im Auge?
Habe in letzter Zeit ein wenig mit Xilinx FPGAs gespielt und würde wohl 
einen XC6SLX25 vorschlagen. 1mm Pitch BGA256, das ist mit ein wenig 
Tricksen noch auf 2 Layern und mit normalen Fertigungstechnologien 
machbar, Man müsste eben einen SPI Flash anschließen und käme dann wohl 
so auf 60 IOs.
SI-Technisch sollte das schon gehen, das DDR RAM Interface wirst du 
allerings entbehren müssen. Ein Bekannter von mir hat letzteres mit 8bit 
DDR (1) Speicher auf 4 Lagen (günstig zu bekommen bei DorkbotPDX) 
gemacht.
Was soll der FPGA denn so machen?

von tt2t (Gast)


Lesenswert?

>> Solltest du eine höhere Datenrate benötigen, kannst du einen FT232H
>> nehmen, mit dem gehts dann bis zu 40MByte/s, jedoch ist dort die externe
>> Beschaltung etwas komplexer. Zum Programmen gibt es die D2XX Lib mit der
>> du Daten senden und empfangen kannst.
>Hier kommen wir der Sache schon näher. Da kann man dann auch hübsch die
>Daten im PC RAM ablegen.

Schau mal hier 
http://www.mikrocontroller.net/articles/Minila_Version_MockUp das ist 
ein Logic Analyzer mit FPGA 100 MHz sample rate und 512k x 32 Kanäle 
Speichertiefe, das könnte man mit eineAbguckenr Verstärker- und 
ADC-Vorstufe schön zum DSO erweitern (und den FT2232 hat er auch). Ich 
habe das Teil und finde es genial.

Und da Beitrag "Selbstbau Digital Storage Oszilloskop" gibt es auch ein 
Selbstbau-DSO zum weiterentwickeln.

von Thomas T. (knibbel)


Lesenswert?

Hallo,

wenn du bei deinem XC3S100E bleibst, solltest du die Versorgung für 
VCCint überdenken. Die ist bei dir ausgelegt für 1.25V. Sie soll aber 
gemäß Datenblatt nominell 1.2V sein. Mit deinen 1.25V bist du schon sehr 
nah am oberen Maximum von 1.26V.

Eine einfache Lösung wäre der Einsatz der "Adjustable"-Version des 
Spannungsreglers, also ein "TPS73601", dann einfach den Ausgang "Out" 
mit dem Feedback-Eingang "FB" verbinden und der Regler gibt (dem 
Datenblatt nach) 1.2V raus. Das wäre ein sauberes Design.

Du kannst jedoch auch dem Vorschlag von tokyodrift folgen und auf den 
Spartan 6 wechseln. Der braucht nur zwei statt drei verschiedene 
Spannungen. Du würdest evtl. eine Reglerebene sparen. Die "kleineren" 
Spartan 6-FPGA kommen auch im TQFP144-Gehäuse und du brauchst dich nicht 
mit BGA-Gehäusen rumschlagen.

Wenn du allerdings schon ein Spartan 3-FPGA vorliegen hast, würde ich 
nur den Spannungsregler anpassen.

Gruß,
Thomas

von Wolfgang (Gast)


Lesenswert?

Tokyo Drift schrieb:
> Achso, ja, soweit ich weiß werden für höhere Datenraten mehrere
> ADCs Phasenverschoben benutzt.

Das kommt drauf an, was man unter "höher" versteht.
Bis 250 MSa/s schafft das locker einer alleine und da ist noch nicht das 
Ende der Fahnenstange.

von sakul (Gast)


Lesenswert?

Vielen Danke für die Links, tt2t!

Thomas T. schrieb:
> wenn du bei deinem XC3S100E bleibst, solltest du die Versorgung für
> VCCint überdenken. Die ist bei dir ausgelegt für 1.25V. Sie soll aber
> gemäß Datenblatt nominell 1.2V sein. Mit deinen 1.25V bist du schon sehr
> nah am oberen Maximum von 1.26V.
Danke Thomas!
Das XC3S100E befindet sich auf einem externen Board auf dem sich u.a. 
ein 1.2V Regler befindet. Die Spannung ist nur nicht auf die Stiftleiste 
geführt.

von Tokyo D. (tokyodrift)


Lesenswert?

Thomas T. schrieb:
> Du kannst jedoch auch dem Vorschlag von tokyodrift folgen und auf den
> Spartan 6 wechseln. Der braucht nur zwei statt drei verschiedene
> Spannungen. Du würdest evtl. eine Reglerebene sparen. Die "kleineren"
> Spartan 6-FPGA kommen auch im TQFP144-Gehäuse und du brauchst dich nicht
> mit BGA-Gehäusen rumschlagen.

Du kannst sowohl Spartan6 alsauch Spartan3 FPGAs mit 2 Spannungen 
versorgen.
Beide brauchen 1.2V Core Spannung (außer die Low Power S6, die machen 
1.0 oder so), 2.5 oder 3.3V VCCAUX und die entsprechenden VCCOs. Wenn du 
3.3V VCCAUX und VCCO nimmst kommst du mit 2 aus.
Ich habe das BGA Gehäuse vorgeschlagen, da es nur die kleinen im TQFP144 
gibt. Bei den Spartan3AN habe ichs grad im Kopf, da ist nur der XC3S50AN 
im TQFP144 verfügbar, XC3S200AN und XC3S400AN gibt es dann im BGA256, 
das wie gesagt auf 2 Lagen auch machbar ist.
Ähnliches gilt für die anderen Spartan3 und 6 FPGAs.
Ich habe den Spartan6 vorgeschlagen, weil er größer und schneller ist, 
nicht weil er weniger Aufwand macht.

von Thomas T. (knibbel)


Angehängte Dateien:

Lesenswert?

Tokyo Drift schrieb:
> Beide brauchen 1.2V Core Spannung (außer die Low Power S6, die machen
> 1.0 oder so), 2.5 oder 3.3V VCCAUX und die entsprechenden VCCOs. Wenn du
> 3.3V VCCAUX und VCCO nimmst kommst du mit 2 aus.

Nö.

Wenn ich 3.3V für VCCaux nehme, ist der Spartan 3E kaputt. Zumindest 
nach dem Datenblatt, welches im Netz verfügbar ist.

Im Anhang ein Ausschnitt der Seite 119. Nominal Voltage ist 2.5V. Im 
Datenblatt auf der Seite 117 ist als "Absolute Maximum Rating" für 
VCCaux 3.00V angegeben.

Ich würde mich hüten, dort 3.3V anzulegen!

Du kannst natürlich VCCaux und VCCo mit 2.5V versorgen. Ist aber nicht 
sehr sinnvoll, wenn externe Komponenten mit 3.3V arbeiten.

Bitte korrigiert mich, sollte ich falsch liegen.

Gruß,
Thomas

von Tokyo D. (tokyodrift)


Angehängte Dateien:

Lesenswert?

Thomas T. schrieb:
> Wenn ich 3.3V für VCCaux nehme, ist der Spartan 3E kaputt. Zumindest
> nach dem Datenblatt, welches im Netz verfügbar ist.

Ja, da hast du Recht. Ich hatte wie gesagt den Spartan3AN im Kopf. Der 
macht 3.3V auf VCCAux, siehe Bild. Also, S3E braucht 3 Spannungen, S3AN 
und S6 nur 2.

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
Noch kein Account? Hier anmelden.