www.mikrocontroller.net

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


Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rick Dangerus (Gast)
Datum:

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

Rick

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph (Gast)
Datum:

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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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))

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Meines Wissens sind auf dem 3A und 3E Board die gleichen Wandler drauf.
Unter 
http://www.xilinx.com/products/boards/s3estarter/r...
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

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: alexey (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.