Hallo, ich habe hier ein größeres FPGA Projekt. IIR Filter (SM mit 1x Multiplizierer Pipeline Spreicher ...) FFT mit 32bit Daten Inverse FFT ADC Interface Modulator ... Samplerate ist 1 MSample auf 8 Kanälen, alles darf nur 1 bis 2 Samples Verzögerung haben deshalb FPGA und kein DSP. Die Einzelblöcke traue ich mir zu. Doch wie schalte ich das alles am besten Zusammen? Jeder einzelne Teil mit WB Interface + IRQ und dann ein Prozessor der die Daten verschiebt. Massiv Parallele ein und Ausgänge FFT hat ja 32bit x 256 Kanäle Wie löst man sowas? Danke Michael
Hi Michael, für Datenschleudereien kann ich den Ansatz mit einem simplen soft-core plus DMA-Engine mit mehreren Kanälen empfehlen. Die CPU macht dabei meist nur Konfiguration, aber erleichtert das Debuggen deutlich. Die grosse Frage ist immer, welche CPU. Das wiederum hängt u.U. vom FPGA-Hersteller ab. Gut gefahren bin ich bisher mit einer aufgebohrten ZPU. Wenige Samples Latenz ist allerdings noch knackig, da würde ich keine CPU zwischenschalten. Grüsse, - Strubi
Hallo Strubi, der FPGA Hersteller wäre Xilinx (Spartan6). Das mit dem DMA Controller klingt logisch. Habe mir soetwas auch schon überlegt. Woher bekomme ich aber den DMA Controller. Gibt es da Beispiele, IP? Der Controller ist ja schon etwas komplexer. Kannst du mir einen empfehlen, oder ist der DMA Controller eine Eigenentwicklung? Mfg Michael
Hi Michael, angehängt ein Schnipselchen. Einen simplen DMA-Controller schreibt man sich am besten selber, und guckt sich woanders ab, wie man es nicht machen sollte :-) Nee, nun ernsthaft: Das Problem ist meist, dass man den DMA-Kram ziemlich auf seinen Bus bzw. sein Memory zuschneiden muss plus noch eine Menge an Arbiter-Logik dazukommt, sobald mehrere Kanäle gleichzeit arbeiten müssen. Bei einer brauchbaren Soft-CPUs sollte ansich sowas dabei sein, bisher habe ich aber auch noch nicht das passende "komplett fertig" gefunden. Der Kollege Rene D., der hier ab und an auch mitliest und schreibt, hat eine CPU geschrieben, die im Gesamtsystem recht gut performt (schneller als die ZPU). Am SoC dazu wird noch gearbeitet. Bevor ich's vergesse: Die Daten werden bei diesem einfachen DMA-Sklaven eine Ebene höher weitergereicht. Werden also nur Adressen unter Berücksichtigung der Busy-Pins generiert. Auf dem Spartan6 kannst du über die "Hintertür", d.h. den zweiten Memory-Port auf den Speicher zugreifen und per 'done'-IRQ und Buffer-Pingpong Daten schaufeln. Aber du brockst Dir damit natürlich mehr als ein paar Samples Latenz ein. Drum nutze ich den DMA auch meist eher im Testdatengenerator, später wird's dann in eine separate Pipeline optimiert. Grüsse, - Strubi
Ja, doch noch ganz vergessen: Hast Du den microblaze schon evaluiert? Ist halt big X-proprietär... M.W. gibt es da aber fertiges DMA.
Hallo, wozu möchtest du DMA bemühen? Wenn ich das richtig verstehe hast du mehrere Module die du zu einer Verarbeitungskette verschalten möchtest. Ja es gibt auch das Wishbone-Stream Modell, aber Wishbone ist im Allgemeinen nicht gerade das schnellste Protokoll... Wie wäre es mit dem LocalLink Interface von Xilinx? Im Gegensatz zum AXI-Stream Protokoll kann man LocalLink frei einsetzen. Im Grunde ist LocalLink nichts anderes als ein FIFO Interface und für die direkte Kopplung von Teilverarbeitungskomponenten als Verarbeitungkette gedacht (Streaming optimiert) LocalLink: - Quelle bereit (src_ready_n) - Ziel bereit (dest_ready_n) - Daten (src_data) --------- optionale Signale - Start eines Frames (src_sof_n) - Ende eines Frames (src_eof_n) - ..... FIFO Interface (mit got-Semantik): write-port - put (= not src_ready_n) - data_in (=data) - full (= dest_ready_n) read-port - got (= not dest_ready_n) - data-out (= data) - valid (= not src_ready_n) Wem das low-aktive LocalInk nicht so zusagt, kann dieses auch in high-aktiv umschreiben :) LocalLink findet man unter SP0006 bei Xilinx zum Download.
Strubi schrieb: > angehängt ein Schnipselchen. Einen simplen DMA-Controller schreibt man > > sich am besten selber, und guckt sich woanders ab, wie man es nicht > > machen sollte :-) Ja das ist doch schon was... Wenn man das jetzt noch mit CodePatata Tool analysiert, und die ProzessVariablen, bzw. Prozess-LeitPV, Trigger-Pv, Init-PV ... in Tabellen hast (z.B EXCEL ) Glossar: (PV Prozess-Variable), (ARMED - Not/ARMED, Reset-Init.. ) in ein Block-Schalt-Bild einzeichnet. Somit hat man einen Lego-Baustein mit I/O und Parameter fertig. Mit Doxygen schreibst du die eigene Doku. zu deinem Baustein. Also machst du dir dein eigenes Reverse Ing. Handbuch fertig. ###################################################################### Somit habe ich mein Lattice MachXo Ref.Design SOC weiter aufgebohrt. Hint: AMBA Bus lesen. Viel Erfolg Gruss Holger.
Link: Beitrag "Code Patata VHDL VERILOG EDITOR" Hier sind die Bilder von CodePatata dazu. Z.B Modul Betr_Stunden_Zähler der dan als Modul/IO am WishBone-Bus via Wrapper hängt. Nur was ich mit der CodePatata Funktion Signal-Path machen kann hat mir leider keiner sagen können. Somit kann man sich auch in fremde Projecte einarbeiten, und damit die Modul-Daten-Bank Erfahrungen erweitern. Handschriftliche farbig markierte Zeichnungen auf A3 format ergänzen das ganze (Halt nach den JAPANISCHEN Strom-Laufpan mit Pictogram usw.) Als Gedankenstütze ....nach dem 3 Wochen Urlaub findet sich man da wieder ein. Gruss Holger.
Michael schrieb: > Samplerate ist 1 MSample auf 8 Kanälen, alles darf nur 1 bis 2 Samples > > Verzögerung haben deshalb FPGA und kein DSP. Wie hoch ist den deine Design Master Clock Oversampling rate. Die ist doch relativ zu sehen, und nicht absolut 1 bis 2 bezogen ??? ------------ Hallo da ist mir noch was eingefallen. http://www.ohp.de/de/tipps_tricks.htm ################################################################# Ich arbeite an einer DatenBank für Modul-Variablen, Bit-Spur[n-m] .....für mein Wireing Harness Component Tester SEWS Das ganze habe ich von einer Prozess-Leittechnik-Soft übergeführt. InterProzess-Kommunikation & Kopplung. Ich bin da mit Latice Diamond IDE am aufbohren. Ich mache das in Verilog Perspektive. (-->)'Prozess-Daten-Modell(-->)... Verilog ist mit Prog-Sprace FORTH als STack zu verleichen. ----------------------------------------------------------------- Google mal nach Ben Krassnow mit seinem Verilog Tutorial auf You-Tube. ----------------------------------------------------------------- Verwendung von Bussen im UCF-File. via Index. Aehnlich wie in C mit Addr. &Struct als Parameter. Über das Struct Konzept geht das besser in der Parameter-übergabe. via Modul. Also ist das übersichtlicher als einzel-Parameter zu machen. Vergeiche das mit C Struct... modul_1(&pDCB) pDCB->Baud_Rate pDCB->Time_out Die Busse sind 32Bit oder je nach # Parameter 16Bit breit. ------------------------------------------------------------- Conditional Compiling in HDL ... ------------------------------------------------------------- Du hast es hier mit einem nicht sequenziellem Prozess zu tun. Das gute an den Modulen ist alles lauft somit "Kongruent". Hirracical Modell ( Tree -Leaf-Prinzip) Gefädelter Code via Modul to Modul usw. ---#--#------------------------------------------------------ Querkopplung von Prozessanschlüssen. Sie wollen die Eingaben eines Prozessanschlusses (A) über einen anderen Prozessanschluss (B) ausgeben und umgekehrt. Benutzen Sie die Eingabe-PVs (Meldungen, Messwerte etc.) des Prozessanschluss A als Eingangs- PVs für Ausgaben auf den Prozessanschluss B (Befehle, Sollwerte etc.). Definieren Sie eine PV-Gruppe in der alle entsprechenden Eingabe-PVs enthalten sind. Diese PVGruppe wird als Startkriterium (Trigger-PV) für ein HDL-Modul verwendet. Wählen Sie bei der HDL-Script Definition die Einstellung "PV-Gruppe hat: Pos. und Neg. Flanke". .... Denke dir einen Auto-Kabel-Baum, wo via UCF-FILE also Port-Namen I/O letzlich auch da was rauskommt was oben eingegeben wurde, nun liegen die Module[][][][] gefadelt dazwischen. Und mit Kabel-Baum-Plan geht das dan durch die Module via Input. und Output. (Parameter-Übergabe) Viel Erfolg & Gruss Holger.
Michael schrieb: > IIR Filter (SM mit 1x Multiplizierer Pipeline Spreicher ...) > > FFT mit 32bit Daten HINT: Hallo da ist mir noch was eingefallen. Was noch hilfreich ist, sind die Daten-Blätter und Blockschaltbilder. Evtl. suchen & Finden von HDL Source Code, in den Rigol-Modder-Foren. von z.B Rigol DS4014 4-channel digital scope. 50 MHz Grenze falls nur ein Kanal aktiv ist. Das Overclocking Daten-Modell ist FPGA Typenspezifisch bei der Bit-Rate begenzt. Aquisition Rate ..ohne jitter usw.glitch.#_#' 64000 Aquisitions ... 112K sample Points Viel Erfolg & Gruss Holger.
@Michael http://www.ovro.caltech.edu/~dwh/correlator/pdf/ESC-100Paper_Hawkins.pdf ################ Hier Seite 124 sind die Filter mit modulus 128,64,16... Das ist wie ein Stufen-Getiebe mit modulus wieder als Synchron Takt..(128)(64)(16)...--#Daten-Übergabe http://www.ovro.caltech.edu/~dwh/correlator/pdf/ESC-100Slides_Hawkins.pdf ------------------------------------------------------------------------ - ######################################################################## # http://www.ovro.caltech.edu/~dwh/correlator/pdf/esc2011_fpga_dsp_code.zip Gruss Holger.
Hage? Rapante? Zu später Stunde entlockt sich mir zu obigen Postings gerade nur: WTF? (oder auf deutsch: Hä?)
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.