Forum: Mikrocontroller und Digitale Elektronik axi4 simples beispiel: Slave Eingänge


von Stiftlenker (Gast)


Lesenswert?

Ich möchte AXI4 etwas nachvollziehen können und teste gerade ein 
Beispiel in Vivado.

Habe anstatt eines multipliers (Beispiel unten), einen Adder verwendet.
Wollte Eingänge A,B und Ausgang O vom Typ bit haben. Aber slv_reg0 ist 
ein 32-Bit std_logic_vector.

 * Sollten AXI4-Slaves immer 32-Bit große I/O haben?
 * Was soll denn slv_reg0 eigentlich sein.
 * ist der clk-Eingang immer notwendig bei AXI4 ?

Danke

https://www.fpgadeveloper.com/2014/08/creating-a-custom-ip-block-in-vivado.html/
folgendes soll vor begin:
1
signal multiplier_out : std_logic_vector(31 downto 0);
2
 
3
component multiplier
4
port (
5
  clk: in std_logic;
6
  a: in std_logic_VECTOR(15 downto 0);
7
  b: in std_logic_VECTOR(15 downto 0);
8
  p: out std_logic_VECTOR(31 downto 0));
9
end component;
folgendes soll zu -- Add user logic here
1
multiplier_0 : multiplier
2
port map (
3
  clk => S_AXI_ACLK,
4
  a => slv_reg0(31 downto 16),
5
  b => slv_reg0(15 downto 0),
6
  p => multiplier_out);

von Stiftlenker (Gast)


Lesenswert?

(oh nein das muss in die Rubrik FPGA, VHDL & Co.)

von Gustl (Gast)


Lesenswert?

Welchen AXI willst du denn verwenden? Light oder Streaming? Guck dir mal 
die Unterschiede an.

von Stiftlenker (Gast)


Lesenswert?

Gustl schrieb:
> Welchen AXI willst du denn verwenden? Light oder Streaming? Guck
> dir mal
> die Unterschiede an.

Später verwende ich wahrscheinlich Stream. Aber damit ich überhaupt 
etwas verstehe erst mal die Light-Version Lite.

von Gustl (Gast)


Lesenswert?

Stream ist aber sehr viel einfacher als Light.

von dfgh (Gast)


Lesenswert?

Zum Verständnis: Es gibt drei Arten von AXI:

AXI-Stream
AXI-Lite
AXI(-Full)

AXI-Stream ist, wie Gustl schon schreibt das einfachste. Und wenn man 
Daten von A nach B übertragen will völlig ausreichend. Vereinfacht 
gesagt gibt es das Datensignal und zwei Flags (tValid & tReady), mit 
denen Sender und Empfänger jeweils sagen, ob sie gerade 
Sende-/Empfangsbereit sind. Dazu können dann noch weitere Signale wie 
tLast (markiert das Ende eines "Pakets"), tUser usw. kommen, die man 
aber nicht unbedingt bespielen muss um AXI-Stream zu verwenden.

AXI-Lite ist eine vereinfachte Variante von AXI(-Full), hat aber schon 
sehr viel mehr Signale, die man "verwalten" muss. Dafür bekommt man hier 
Adressierte Zugriffe und Bidirektionale Übertragung.

Bei AXI-Full wird es dann noch mal komplizierter - das sollte man nur 
anfassen wenn man es wirklich braucht ;-)

von Stiftlenker (Gast)


Lesenswert?

dfgh schrieb:
> AXI-Stream ist, wie Gustl schon schreibt das einfachste.

Ok danke habe ich nicht erwartet :D

Dann kann ich ja direkt zu AXI-Stream übergehen, da ich das vermutlich 
sowieso verwenden muss!

von dfgh (Gast)


Lesenswert?

Falls du irgendwann dann doch mal AXI-Lite oder AXI-Full benötigst, 
hilft das Wissen über AXI-Stream auch weiter, die beiden bestehen 
nämlich praktisch gesehen aus mehreren AXI-Streams mit diversen 
Zusatzsignalen, die dann aber natürlich noch untereinander diverse 
Abhängigkeiten haben. Ohne die Abhängigkeiten wäre es einfach ;-)

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.