Forum: FPGA, VHDL & Co. Serielles Einlesen von ADC-Daten in VHDL


von User (Gast)


Lesenswert?

Guten Morgen.
Ich möchte serielle Daten von einem A/D-Wandler mit dem FPGA einlesen. 
Anschließend möchte ich diese mit ChipScope darstellen. Hierzu suche ich 
Beispiele. Eventuell hat jemand eine brauchbare Quelle für mich.

Meine erste Überlegung hierzu wäre wie folgt:

1. Anlegen eines Signalvektors (z.B. standart_logic_vector …  input <= 
'0000000000' bei 10 Bit Auflösung)

2. Anlegen eines Prozesses der auf steigende Flanken auslöst (da werden 
in meinem Fall die Daten seriell „bit für bit“ übergeben)

3. Bei steigender Flanke das neu eingelesene Bit per Shift-Operation 
anhängen (input <= 000000001 dann shift ausführen und neues Bit anhängen 
input <= 0000000011, ..)

4. Ist die Anzahl der Bits erreicht (hier 10), dann kann das Wort 
"input" ChipScope übergeben werden.
So ganz grob gesagt. Somit habe ich zwei Taktraten im FPGA. Einmal die 
mit der die Bits ankommen f_in und mit der die "zusammengesetzten" Bits 
(Wort) an ChipScope übergeben werden f_in/10.

Sehe ich das so richtig, oder stellt es sich als sehr ineffizient heraus 
(Ich habe vier Kanäle) ?

von St. D. (st_d)


Lesenswert?

Seriell? SPI, UART, I2C, alles sind seriell...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

User schrieb:
> Ich möchte serielle Daten von einem A/D-Wandler mit dem FPGA einlesen.
Von WELCHEM in WELCHES?

> 1. Anlegen eines Signalvektors (z.B. standart_logic_vector …  input <=
> '0000000000' bei 10 Bit Auflösung)
Ist sinnvoll. Aber eigentlich nur ein klitzekleines unnötiges Detail.

> 2. Anlegen eines Prozesses der auf steigende Flanken auslöst (da werden
> in meinem Fall die Daten seriell „bit für bit“ übergeben)
Prozesse werden nicht "ausgelöst". Du hast eine falsche Denkweise. Die 
wird dir noch einige Probleme bereiten. Es ist im FPGA kein Prozess, der 
auf einen "Anschubser" wartet. Im FPGA sind nur Logikzellen (=LUTs) und 
Flipflops. Darauf muss deine Beschreibung abbildbar sein. Wenn sie das 
nicht ist, dann bekommst du vom Synthesizer entsprechende Meldungen.

> 3. Bei steigender Flanke das neu eingelesene Bit per Shift-Operation
> anhängen (input <= 000000001 dann shift ausführen und neues Bit anhängen
> input <= 0000000011, ..)
Du hast bisther schon (mit) Software programmiert, richtig?
Bei einer steigenden Flanke passiert das alles gleichzeitig, es gibt 
keine Bauteile im FPGA, die das "nacheinander" machen.

> 4. Ist die Anzahl der Bits erreicht (hier 10), dann kann das Wort
> "input" ChipScope übergeben werden. So ganz grob gesagt. Somit habe ich
> zwei Taktraten im FPGA. Einmal die mit der die Bits ankommen f_in und
> mit der die "zusammengesetzten" Bits (Wort) an ChipScope übergeben
> werden f_in/10.
Hast du nicht. Du hast einen Takt, und dierser eine Takt erzeugt (bis 
das Gegenteil bewiesen ist) einfach nur ein anderes Signal für den ADC, 
das zufällig den Namen "Takt" hat, aber für das FPGA keiner ist!

> Sehe ich das so richtig, oder stellt es sich als sehr ineffizient heraus
Ein Schieberegister kann maximal effizient in einem FPGA implementiert 
werden.

> (Ich habe vier Kanäle) ?
Dann wird das eben 4 Mal ins FPGA implementiert.

Was hast du mit VHDL bisher schon gemacht? Das Blinklicht? Ein 
Lauflicht? Eine serielle Schnitte?

: Bearbeitet durch Moderator
von Hans-Georg L. (h-g-l)


Lesenswert?

Das gehört bestimmt zu dem Fred

Beitrag "AD Wandler (> 2 Kanäle) mit parallelem Interface gesucht"

Und dort habe ich schon geschrieben ..

SERDES ! (Es geht um AD Wandler mit 80Mhz Samplefrequenz und seriellem 
Ausgang)

ChipScope ... das geht aber nicht mit dem Webpack.

Als Alternative gibt es Logan, ist ähnlich wie Chipscope, gehört zum 
LEON Projekt und kann bei http://www.gaisler.com/doc/logan_report.pdf 
heruntergeladen werden. Der Code steckt im Pdf Dokument: Design and 
implementation of an On-chip Logic Analyzer.


Zum Thema Einsynchronisieren und Taktdomäne solltest du die vielen 
Beiträge dazu von Lothar Miller lesen.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hans-Georg Lehnard schrieb:
> Das gehört bestimmt zu dem Fred
> Beitrag "AD Wandler (> 2 Kanäle) mit parallelem Interface gesucht"
Kann sehr gut sein...

> SERDES !
> (Es geht um AD Wandler mit 80Mhz Samplefrequenz und seriellem Ausgang)
Das passt aber überhaupt nicht zu der ziemlich anfängerhaften 
Fragestellung...

@User: was soll das werden?
Eine Bachelor-/Masterarbeit oder sowas? 40MHz Abtastfrequenz mit 10Bit 
seriell ist ein gutes halbes GHz. Welche Erfahrung hast du mit Layouts 
in dieser Geschwindigkeitsklasse?

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.