Datum: 16.07.2007 15:47
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
Datum: 16.07.2007 16:38
Vielleicht hilft der Blick ins Datenblatt? Mach Dir doch erstmal klar, in welchem Format Deine (Audio-)Daten ein- und ausgegeben werden. Rick
Datum: 16.07.2007 17:38
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?
Datum: 16.07.2007 18:14
> 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
Datum: 16.07.2007 18:57
Mag ja für den ein oder anderen lustig sein, aber ich habe als Anfänger da nunmal Schwierigkeiten mit ...
Datum: 16.07.2007 19:08
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.
Datum: 16.07.2007 19:25
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.
Datum: 16.07.2007 19:38
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))
Datum: 17.07.2007 08:36
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
Datum: 17.07.2007 08:51
@ 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"
Datum: 12.08.2007 17:51
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?
Datum: 12.08.2007 20:32
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.
Datum: 16.05.2008 13:11
@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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [vhdl]VHDL-Code[/vhdl]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel