Triggersignal soll Instanz ausführen/starten

OP #1495386
Lesenswert?
• ▲
▼
Hallo,

ich stehe aktuell vor dem Problem, dass ich Daten von einem CCD Sensor 
entgegennehmen muss. Dazu verwende ich einen Spartan 3A DSP.

Die Daten kommen kontinuierlich, es werden also ohne Pause Daten vom CCD 
geschickt.

Nun ist es eine Aufgabe, die sinnvollen Daten von den nutzlosen Daten zu 
unterscheiden und danach entsprechende Maßnahmen einzuleiten.
Für dieses Zweck generiert mir das CCD Frontend zwei Signale. Line_valid 
ist vom ersten gültigen Pixel einer Zeile bis zum letzten gültigen Pixel 
einer Zeile high. Frame_valid ist vom ersten bis zum letzten gültiges 
Pixel des ganzen Bildes high.

Die Daten kommen seriell in DDR an, werden mit einem IDDR2 nach 
steigender und fallender Flanke getrennt, in zwei Schieberegistern 
parallelisiert, in die richtige Reihenfolge sortiert und anschließend 
über ein Fifo vom Busmaster ausgelesen.

Nun will ich natürlich nur die gültigen Pixel in das Fifo schreiben.

Dazu wollte ich Line_valid und Frame_valid nutzen, um die Operation des 
Parallelisierens nur auszuführen, wenn diese Signale anliegen bzw. high 
sind.

Leider fehlt mir dazu wieder das Vorstellungsvermögen, wie ich ein 
solches Problem angehen könnte.
Reicht vielleicht schon eine einfache Abfrage auf LV and FV = '1' ?

Könnte ich das write_enable des Fifos mit diesen Signalen verbinden, 
damit nur die gültigen Daten in das Fifo geschrieben werden? NUr gehen 
die Daten ja einen recht langen Weg IBUFGDS, IDDR2, Schieberegister usw. 
Da müßte ich doch exakt wissen, wieviele Takte für diese und jene 
Operation gebraucht werden, um dann eine entsprechende Verzögerung 
einbauen zu können...

Ich wäre für Hinweise und weitere Ideen sehr sehr dankbar!!!

MfG Andreas
#1495507
Lesenswert?
• ▲
▼
Andreas B. schrieb:
> Könnte ich das write_enable des Fifos mit diesen Signalen verbinden,
> damit nur die gültigen Daten in das Fifo geschrieben werden? NUr gehen
> die Daten ja einen recht langen Weg IBUFGDS, IDDR2, Schieberegister usw.
> Da müßte ich doch exakt wissen, wieviele Takte für diese und jene
> Operation gebraucht werden, um dann eine entsprechende Verzögerung
> einbauen zu können...

Ja, das musst Du.
Du hast 2 Möglichkeiten:
- Du nimmst Dir ein Stück Papier und zählst die Taktstufen durch, ich 
würde es auch mit Hilfe einer Simulation kontrollieren.
- Du schleifst das Enable Signal durch die selben Stufen wie die Daten.

Aber üblicherweise macht man das eigentlich schon beim Design-Entwurf, 
dass man sich überlegt zu welcher Taktflanke was passiert.
OP #1495678
Lesenswert?
• ▲
▼
Ah ok, also war mein Gedankengang gar nicht so falsch.

Ich hab jetzt mal simuliert.
Ich habe alle Signale so gesetzt, dass von Anfang an alle Bedingungen 
für den Dataout process gegeben sind und schaue nun, wann die Daten am 
Ausgang anliegen.

Schreibtakt des Fifos ist synchron zum Takt der seriellen Daten (geteilt 
durch 4 durch die 4bit Schieberegister).
Der Lesetakt ist aber asynchron dazu, weil dieser extern vorgegeben 
wird.

Mein Eingangstakt hat 160MHz, also 6,25ns Periodendauer.
Die ersten Daten kommen, bezogen auf diesen Takt, ca. nach 3125ns an, 
was 500 Perioden entspricht, also 500 Takte. Das kommt mir fast aber ein 
wenig viel vor... kann das denn sein?

Ich habe mir mal die Mühe gemacht und fix mit paint den Signalweg 
dargestellt... ich hoffe es ist verständlich bzw. plausibel. (siehe 
Anhang)

Mit wievielen Takten muss ich denn rechnen bzw. durch welche Gatter muss 
ich die Sync-signale führen, damit das gleiche Delay entsteht.

VIELEN DANK!
Angehängte Dateien:
Persönliche Seite #1499954
Lesenswert?
• ▲
▼
> Mit wievielen Takten muss ich denn rechnen bzw. durch welche Gatter
> muss ich die Sync-signale führen, damit das gleiche Delay entsteht.

Du sprichst hoffentlich nicht von asychronen Getterverzögerungen??

Sinnvoll wäre eher die Frage, wieviele Takte Du beim Einschreiben 
auslassen musst, um die Latenz der Leseanordnung zu berücksichtigen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.