Forum: FPGA, VHDL & Co. Analog Digital Wandlung mit Spartan 3A


von Christoph (Gast)


Lesenswert?

Hallo,
ich bin derzeit dabei mich in die Welt der FPGAs einzuarbeiten. Zur 
Verfügung steht mir ein Xilinx Spartan 3A Starter Kit mit dem ISE 
WEebPack 9.1. Das langfristige Ziel ist es, mehrere analoge Regelkreise 
zu ersetzen.

Der erste Schritt soll sein, die onboard adc und dac zu nutzen, um das 
Signal eines Funktionsgenerators einzuspeisen und wieder auszugeben. Nun 
ist es mir mit Hilfe der Xilinx Tutorials die Stopuhr sowie den LED 
Counter ans laufen zu bekommen. Allerdings hänge ich jetzt relativ lange 
daran, die beiden externen Resourcen einzubinden. Ich weis nicht, welche 
Komponenten mein Design unbedingt benötigt (dcm, clock divider, state 
machine?) und kann vor allem trotz stundenlanger suche kein Tutorial in 
der Richtung finden, daher denke ich suche ich einfach falsch.

Ich wäre für jeden Hinweis dankbar, open source ip, tutorial egal alles 
kann helfen.

Christoph

von Rick Dangerus (Gast)


Lesenswert?

Vielleicht hilft der Blick ins Datenblatt?
Mach Dir doch erstmal klar, in welchem Format Deine (Audio-)Daten ein- 
und ausgegeben werden.

Rick

von Christoph (Gast)


Lesenswert?

Das Datenblatt liegt mir vor, ich kenne die entsprechenden 
Pin-Belegungen und habe das ganze so verstanden:
Es geht der Befehl zum Wandler mit dem Sampeln zu starten. Beide Wandler 
erzeugen simultan eine Zweierkomplementzahl, dann werden die bits 
seriell an den FPGA gesendet mit Pausen zwischen den beiden Zahlen.

Problem: Was muss ich da an Timing beachten und wie setze ich das um?

von antworter (Gast)


Lesenswert?

> Was muss ich da an Timing beachten und wie setze ich das um?

Da sich Datenblätter bei diesen Angaben bedeckt halten, mußt auf 
Insiderwissen für die minimale Pulsdauer (in ns) zurückgreifen:

3.2 * IC-Gehäuselänge (in Seemeilen !) + Raumtemperatur * IQ des 
Benutzers

von Christoph (Gast)


Lesenswert?

Mag ja für den ein oder anderen lustig sein, aber ich habe als Anfänger 
da nunmal Schwierigkeiten mit ...

von Dirk (Gast)


Lesenswert?

Antworter will Dir damit auf seine etwas fragwürdige Art sagen das Du 
das Timing in den Datenblättern findest. Das ist nämlich der Sinn von 
Datenblättern.

von Christoph (Gast)


Lesenswert?

Dann habe ich mich wohl falsch ausgedrückt: Ich habe die Angaben, 
wieviele Clock Cycle welcher Prozess dauert, aber Probleme, den FPGA 
entsprechend zu programmieren. Was mir fehlt ist ein ganz konkreter 
Ansatz, das Inputsignal zu verarbeiten.
Bisher habe ich es geschafft, einfache binäre Zähler zu realisieren, auf 
Schaltereingaben zu reagieren und die LEDs anzusteuern, aber jetzt geht 
es ja um einen kontinuierlichen input.

Ich will hier auch gar nichts vorgekaut bekommen, wenn mir einer sagt, 
wonach ich da suchen muss, reicht mir das. Bisher habe ich nach adc, 
vhdl, fpga, ip core gesucht, aber ich habe nichts gefunden, was mir 
dabei hilft, ein einfaches Signal aus einem Funktionsgenerator erst AD 
und dann wieder DA zu wandeln.

von antworter (Gast)


Lesenswert?

Also ich vermute jetzt mal ein bißchen, da Dich ausschweigst, welchen 
A/D Wandler nun genau einsetzt:

Höchst wahrscheinlich wird er eine serielle Schnittstelle besitzen - 
diese fällt dann entweder simple aus (I2S-Format bei A/D-Wandlern mit 
sukzessiver Approximation) oder etwas komplizierter (Delta-Sigma).

Bei den Delta-Sigma hast Du typischerweise recht hohe "Hilfstakte" 
(256*Sample-Frequenz und so).

Beiden Ausprägungen ist gemein, daß Du ein Shiftregister benötigst, um 
die seriellen Daten zu parallelisieren.

Ich denke mal (habe keine VHDL-Erfahrung) Du solltest unter Deiner 
Workbench schon fertige Module finden.

(Als einzelne IC's heißen die SIPO (serial-in-parallel-out))

von Michael (Gast)


Lesenswert?

Hallo,
Meines Wissens sind auf dem 3A und 3E Board die gleichen Wandler drauf.
Unter 
http://www.xilinx.com/products/boards/s3estarter/reference_designs.htm
gibt es mehrere Reference Desings für das S3E Board, darunter auch eins 
für den AD und den DA (PicoBlaze Amplifier and A/D Converter Controller 
bzw. PicoBlaze D/A Converter Controller). Beide Beispiele benutzen den 
Picoblaze-Softcoreprozessor von Xilinx zur Kommunikation mit den 
Wandlern.
Du müsstes also nur diese Beispiele auf den 3A Portieren 
(Typenbezeichnung für den FPGA richtig einstellen und Pinbelegung in den 
Constraints ändern).
Ach ja den Sourcecode für den Picoblaze musst du extra von Xilinx 
runterladen.
Grüsse

Michael

von Falk (Gast)


Lesenswert?

@ Christoph (Gast)

>wieviele Clock Cycle welcher Prozess dauert, aber Probleme, den FPGA
>entsprechend zu programmieren. Was mir fehlt ist ein ganz konkreter
>Ansatz, das Inputsignal zu verarbeiten.

Ja welche Kenntnisse hast du denn überhaupt bezüglich Digitalentwurf?

>Bisher habe ich es geschafft, einfache binäre Zähler zu realisieren, auf
>Schaltereingaben zu reagieren und die LEDs anzusteuern, aber jetzt geht

Du hast fertige Beispiele auf des FPGA gespielt, das hat wenig mit 
Kenntnissen zu tun.

>es ja um einen kontinuierlichen input.

>Ich will hier auch gar nichts vorgekaut bekommen, wenn mir einer sagt,
>wonach ich da suchen muss, reicht mir das. Bisher habe ich nach adc,

Nach Grundlagen für Logikentwurf. State Machines, Dekoder, 
Schieberegister etc.

MfG
Falk

Deine State Machine sieht in Prinzip so aus.

Beitrag "Automat-Anzeigemodul"

von alexey (Gast)


Lesenswert?

Hallo Christoph, hast du es schon geschafft, dein analoges signal zu 
verarbeiten, ich sitze gerade mit meinem Spartan-3AN mit dem selben 
problem... Kannst du mir ein paar Tipps geben oder hilfreiche links?

von Axel (Gast)


Lesenswert?

Meine Fresse! Ihr wollt doch nicht im Ernst dem armen Würsten empfehlen, 
einen PICO reinzuschmeissen um schnöde Wandler zu bedienen.

Du brauchst einen Zähler für die Bits und einen Dekoder, der anhand der 
Zähhlerstandes die Signale für den Wandler produziert. Den 1407 (der ist 
gleube ich drauf) kann man mit 40MHz fahren. Am Besten nutzt Du 60-70 
MHz FPGa Frequenz und fährst mit dem niedrigen Bit als Takt. Dann 
bekommst Du vom Wandler die Daten genau so wieder rein. Bei den dann 
30MHz liefert er ohne Delaytricks auf der vollen Taktflanke. Bei 40Meg 
musste ich da schonmal etwas schieben.

von Christian (Gast)


Lesenswert?

@Axel
deine Beschreibung hört sich verständlich und einfach an, habe jetzt 
aber mal das Forum durchgeschaut und bis auf den PicoBlaze nichts 
brauchbares gefunden.

Hat irgend jemand einen VHDL Core für das oben genannte Problem 
gefunden?

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.