AXI-Stream Interface HLS/ VHDL

OP #7598535
Lesenswert?
• ▲
▼

Hallo liebe Leute,

ich bin ganz frisch in der FPGA-welt und stoße gerade auf eine Situation. Ich habe ADC-Werte aufgenommen und in einem FIFO-Generator IP als Zwischenspeicher gelagert. Da der FIFO-Ausgang kein AXI-Stream ist, kann ich diese Werte nicht in einem zB. DMA schreiben. Meine Frage lautet: Wie kann ich den Übergang erledigen, also von einem 16 Bits Breite kanal zu einem AXI-Stream Bus. Ich habe mehrere Beispiele gesehen und probiert aber bisher ist mir leider nicht gelungen. Anbei hänge ich ein HLS-Beispiel. Ich würde mich auf ihre Hilfe sehr freuen.

Beste Grüße

#include "ap_axi_sdata.h" #include "hls_stream.h"

#define N 512

void example(//hls::stream< ap_axis<32,2,5,6> > &A, hls::stream< ap_axis<32,2,5,6> > &B, int data_s2mm[N]) { //#pragma HLS INTERFACE axis port=A #pragma HLS INTERFACE axis port=B #pragma HLS INTERFACE mode=ap_fifo port=data_s2mm #pragma hls interface s_axilite port=return

ap_axis<32,2,5,6> tmp; int i ; while(1) { A.read(tmp); tmp.data = tmp.data.to_int() ; B.write(tmp); i = i + 1 ; if(tmp.last || i == N) { i = 0 ; break; } }

}

Angehängte Dateien:
Gast #7598620
Lesenswert?
• ▲
▼

Ohne Einsicht in diese "FIFO - Generator IP" und deren Interface wird es schwer zu beurteilen, was an deinem Code nicht funktionieren könnte. Was sagt denn die Doku dazu?

Beruk schrieb:

ADC-Werte aufgenommen

FPGAs zu programmieren scheint heute sehr komplex zu sein.

Wir haben früher(tm) die ADC-Werte einfach mit ein paar Zeilen Verilog in einen Zwischenspeicher geschoben. Dazu brauchte es einen Zähler für die SRAM-Adresse, ein Inkrement als enable, ein reset und einen Umschalter für Daten- und Adressbus, damit ein zweiter ähnlich gestalteter Teil auf aufs RAM kommt, um mit seinem Tempo an beliebiger Stelle zu lesen. Macht 50% Bandbreite für beide. Am Einschreibezähler hingen ein paar mehr Bit für die Strobes zum ADC. 20ns fürs RAM, 40ns für jeden Zugriff macht 25 MHz maximale ADC-Frequenz.

Hingeschrieben in 1h.

Wahrscheinlich ist diese Methode aber heute zu old style und nicht hip genug.

#7598673
Lesenswert?
• ▲
▼

Beruk schrieb:

Hallo liebe Leute,

ich bin ganz frisch in der FPGA-welt und stoße gerade auf eine Situation. Ich habe ADC-Werte aufgenommen und in einem FIFO-Generator IP als Zwischenspeicher gelagert. Da der FIFO-Ausgang kein AXI-Stream ist,

Am besten du änderst deine ADC eingangs HDL code zu AXI stream, das sollte sehr einfach sein, man kann vielleicht den FIFO_Write direct als TVALID nehmen. Dann kannst du den ADC_AXIS mit einem AXIS FIFO verbinden, und die andere seite der AXIS FIFO geht dann als ganz normales AXIS stream in dein HLS code rein!

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.