Ich habe zwei ADCs, die parallel Strom und Spannung messen und mit 30MHz getaktet werden. Nun will ich die im FPGA durch Fensterfunktion und FFT schicken. Da meine Lookup tables für die Fensterung und FFT schnell recht groß werden dachte ich mir, dass ich jeweils nur eine Lookup table nehme, da die für beide ADC Daten ja nach aktuellem sample zählwert immer das gleiche Ergebnis liefern. Wird sowas von toolchains dann hinreichend beim Timing berücksichtigt, wenn der Datenbus der Lookup table Adresse (kommend von einem Zähler) und das Ergebnis der Lookup table dann jeweils parallel an die Multipliziereingänge gehen? Beide ADC sampling Einheiten werden mit der gleichen Clock versorgt, die dann jeweils beide ADCs und die FPGA Logik treibt.
Hängt von der Toolchain, dem FPGA und der Plazierung ab. Somit: Ausprobieren, und allenfalls weitere Pipeline-Register spendieren, bis das Timing stimmt.
Die Frage ist nicht wirklich 100% sinnvoll, weil mit "constraints" auf das timing zwischen zwei Taktflanken abgezielt wird, was impliziert, dass du das Auslesen der LUT (= Anlegen der Adresse und Gewinnung der Daten) in einem Takt machen möchtest, was aber der anderen Aussage "große Tabellen" widerspricht. Das wird man also nicht machen, sondern per design dafür sorgen, dass das Daten-timing stimmt, also alle Wege, die zum gleichen Zeitpunkt an einem Punkt DAten anliefern müssen, dies auch in der gleichen Zahl der Takte tun. Das sind zwei unterschiedliche Themen. Du wirst in jedem Fall mit FFs arbeiten MÜSSEN, weil deine "LUT" zu einem BRAM mutieren wird, dass ohne Takt praktisch keine Bandbreite liefert.
Meine lookup tables sind für einen Takt ausgelegt also meine fensterung ist gepipelined
In der Timinganalyse werden alle Pfade mit den vorgegebenen Randbedingungen geprüft. Also ja, beide Pfade werden separat analysiert. Bei 30 MHz sollte das aber wirklich kein Problem sein.
Wie würde man das denn designtechnisch besser machen wenn zwei ADCs gleichzeitig Daten liefern und nur eine lookup table vorhanden ist. Insbesondere hinsichtlich Erhöhung der samplerate.
Jan G. schrieb: > Wie würde man das denn designtechnisch besser machen wenn zwei ADCs > gleichzeitig Daten liefern und nur eine lookup table vorhanden ist. Wenn du für die Signalverläufe beider ADCs die identische Bearbeitung machen willst: eine lookup table reicht, auf beiden Kanälen wird jeweils der identische Wert aus der look up table benötigt, ihr Ausgang geht in die Verarbeitung beider Signale ein. Wenn du eine look up table hast, aber die Werte für die beiden ADC-Kanäle von unterschiedlichen Stellen gelesen werden: lege die look up table als dual ported ROM an. Dann kann jeder Kanal auf die Stelle zugreifen, die er grade benötigt.
Beide Kanäle benötigen zum Beispiel beim windowing den gleichen wert aus dem block RAM.
Jan G. schrieb: > Beide Kanäle benötigen zum Beispiel beim windowing den gleichen wert aus > dem block RAM. Wo ist das Problem? Du kannst doch in VHDL jedes Signal mehrfach nutzen und hindrahten (???) Und wenn man ihn etwas später braucht, einfach speichern ...
Jan G. schrieb: > eine lookup tables sind für einen Takt ausgelegt Wie langsam ist das getaktet, dass das geht? wie auch immer, die LUT ist dann funktionell und realisationstechnisch nichts anderes, als eine reine Kombinatorik und für die gilt, was auch sonst gilt. Ich frage mich nur, wie groß und breit man da werden kann, wenn alles noch in einem Takt passieren muss.
Beitrag #7079283 wurde von einem Moderator gelöscht.
Jan G. schrieb im Beitrag #7079283: > Wieso sollte das nicht gehen? Ein Wort in einem Takt zu bekommen sollte > doch wohl machbar sein. Wie soll man das sonst machen? Einfach ein Missverständnis aufgrund unklarer Begrifflichkeiten und Darstellungen. Jürgen geht wohl davon aus, dass du die Adresse anlegen und noch im selbem Takt den Datenwert verwenden willst. Man kann speziell deine ursprüngliche Frage so verstehen, und wenn du tatsächlich ein BRAM ohne Takt verwenden wolltest (als reine Kombinatorik) wäre das ungeschickt. Was du stattdessen wohl machst: in Takt n die Adresse anlegen, in Takt n+1 die Daten verwenden. Also einfach ein getaktetes BRAM. Das funktioniert problemlos auch bei höheren Frequenzen. Jan G. schrieb: > Beide Kanäle benötigen zum Beispiel beim windowing den gleichen wert aus > dem block RAM. Genau wie Franko verstehe ich dann nicht, wo du ein Problem siehst. Wie schon weiter oben geschrieben: Achim S. schrieb: > Wenn du für die Signalverläufe beider ADCs die identische Bearbeitung > machen willst: eine lookup table reicht, auf beiden Kanälen wird jeweils > der identische Wert aus der look up table benötigt, ihr Ausgang geht in > die Verarbeitung beider Signale ein.
Jan G. schrieb: > Wie würde man das denn designtechnisch besser machen wenn zwei > ADCs > gleichzeitig Daten liefern und nur eine lookup table vorhanden ist. > Insbesondere hinsichtlich Erhöhung der samplerate. Ich würde eine State Machine (FSM) verwenden, die die beiden ADC-Werte nimmt, zwischenspeichert und nacheinander in die Lookup-Table steckt. Wenn die Größe der Lookup-Table überschaubar ist, wird die vermutlich vom Synthesetool als Block-RAM realisiert. Bei den großen FPGA-Herstellern gibt es Dual-Port-Block-RAM. Da können auch zwei Instanzen gleichzeitig von unterschiedlichen Adressen lesen. Die Methode klappt aber nur, wenn es auf absehbare Zeit bei zwei ADCs bleibt. Duke
Die FSM habe ich sowieso. Ich mache es jetzt so, dass ich meine fsm, blockram für die fensterparameter und ADC jeweils mit der gleichen clock betreibe, dann aber nur die kontrollsignale der ersten ADC sampling Einheit benutze. Es soll zwar bei 2 ADCs bleiben. Aus reiner Neugier würde ich gerne wissen wie sowas skaliert.
Wie gut das skaliert hängt im Wesentlichen von der Platzierung und den Leitungslängen nach dem Routing ab. Die dominieren schnell mal die Latenzen der LUTs. Vor allem, weil die Multiplizierer nicht beliebig über den FPGA verteilt sind. 30 MHz sind aber noch völlig harmlos, spannend wird es eher bei 200+ MHz. Wieviel Bit hat überhaupt ein ADC Sample?
rossi schrieb: > Wie gut das skaliert hängt im Wesentlichen von der Platzierung und > den > Leitungslängen nach dem Routing ab. Die dominieren schnell mal die > Latenzen der LUTs. Vor allem, weil die Multiplizierer nicht beliebig > über den FPGA verteilt sind. 30 MHz sind aber noch völlig harmlos, > spannend wird es eher bei 200+ MHz. > > Wieviel Bit hat überhaupt ein ADC Sample? Ein ADC Sample hat 14 Bit.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.