Hallo zusammen, ich bin ein Einsteiger in der FPGA und habe folgendes Problem. Ich habe ein BRAM in dem FPGA, aus dem ich Daten lesen will. Das funktioniert auch schon. Der nächste Schritt wäre, dass ich über den NIOS 2 in das BRAM die Daten schreiben will. Leider weiß ich nicht genau wie das funktionieren soll und wäre sehr dankbar wenn mir da jemand weiterhelfen kann.
Aha. Wie ist denn der BRAM am NIOS angeschlossen? Das sind schlicht viel zu wenige Informationen.
Das ist die Frage, ob ich das über die Avalon MM Schnittstelle realisieren kann, um dann vom Nios auf den Speicher zugreifen kann? Denn ich will einen Speicher definieren, wo ich zum einen vom Nios daten hineinschreiben kann und vom FPGA Daten nur lesen kann. Der Sinn ist, dass ich in den Speicher einmal die Daten schreibe und dann nur noch die Werte aus dem Speicher herausnehme, dich ich benötige. Ich hoffe es ist jetzt ein bisschen klarer. Sorry für die Verwirrung :)
Klar, du kannst dir einen Dual-Port-RAM mit Avalon einbinden und einen Port an den Nios anbinden. Den anderen exportierst du und greifst vom FPGA drauf zu.
Danke Samuel für die Antwort. Welche Funktion aus dem IP Catalog muss ich dafür verwenden, da gibt es so viele und ich bin ziemlich neu auf dem Gebiet Nios 2 :(?
Wie kann es sein, das du lesen kannst aber nicht schreiben? Das ist doch das gleiche Stück RAM und der gleiche Bus. Hast du mal versucht darauf zu schreiben? Oder ist der RAM als readonly für diesen Port eingestellt?
Ich habe im folgenden den VHDL Code angehängt, mit dem ich die Daten lesen und schreiben kann. Das lesen funktioniert ohne Probleme, jedoch weiß ich nicht wie bzw. wo ich waddr, we und q verknüpfen muss, damit ich den Speicher vom Nios aus beschreiben kann. library ieee; use ieee.std_logic_1164.all; entity mem is port ( clk : in std_logic; raddr : in natural range 0 to 2**15; waddr : in natural range 0 to 2**15; data : in std_logic_vector((15 downto 0); we : in std_logic := '1'; q : out std_logic_vector(15 downto 0) ); end mem; architecture rtl of mem is subtype word_t is std_logic_vector(15 downto 0); type memory_t is array(15 downto 0) of word_t; signal ram : memory_t; begin process(clk) begin if(rising_edge(clk)) then if(we = '1') then ram(waddr) <= data; end if; q <= ram(raddr); end if; end process; end rtl;
Chris schrieb: > wo ich waddr, we und q verknüpfen muss Ist doch alles gemacht, sollte gehen. Was klappt denn nicht? Wird garnichts geschrieben? Falsche Addressen?
Du hast doch den Nios in Qsys konfiguriert, oder? Dort kannst du dann auch einen Dual-Port-RAM einfügen (in Qsys zu finden irgendwo unter Memories, internal, RAM, was auch immer) den einen Port verbindest du in Qsys mit dem Nios und den anderen exportierst du.
Mein Problem ist dass ich nicht weiß wie ich den Avalon damit verbinden kann, dass er die Daten von Nios in den Speicher schreibt.
Indem du die Verbindung zwischen beiden in Qsys anklickst. Und danach musst du noch oben im Menü den Punkt "Assign Base Addresses" o.ä. durchführen. Danach bekommst du in den Headerfiles für deinen Nios die entsprechenden Adressen zur Verfügung gestellt und kannst diese ganz normal wie RAM beschreiben.
Muss ich dann den geposteten Code in qsys als eine neue Komponente erstellen und diese dann mit dem nios verbinden?
Der gepostete Code ist ja nur BRAM mit Interface. Das brauchst du dann nciht mehr. Das gibt es fertig in Qsys.
@Samuel meinst du es dann so? Dass ich dann den S2 exportiere und dann diesen dann zum Lesen des Speichers verwenden soll?
Ziemlich genau so. Du solltest dich allerdings noch entscheiden, ob du eine oder zwei Clockdomains haben willst. Wenn Nios und der Rest der Logik mit dem selben Takt laufen, stell den Onchip-Memory auf Single-Clock. brauchst du zwei verschiedene Takte, dann exprotiere auch clk2 und reset2 und trenne die beiden vom Qsys-System.
Ich werde es heute oder morgen mal versuchen und würde mich sonst nochmal melden. Vielen Dank für eure Unterstützung.
Es hat funktioniert. Vielen Dank. Ich hätte jetzt noch eine Frage. Ich verwende das Intel Cyclone 10 LP FPGA Evaluation Kit und will über eine selbst geschriebene Anwendung auf dem Host PC auf mein FPGA zugreifen. Ist das auch über USB möglich oder nur über die Ethernet-Schnittstelle?
Chris schrieb: > Ich > verwende das Intel Cyclone 10 LP FPGA Evaluation Kit und will über eine > selbst geschriebene Anwendung auf dem Host PC auf mein FPGA zugreifen. > Ist das auch über USB möglich oder nur über die Ethernet-Schnittstelle? ist das nur für die Entwicklung/Debugging oder soll das im späteren Betrieb auch zur Verfügung stehen? Mit dem USB-Blaster läßt sich relativ einfach über das Altera/Intel JTAG-Terminal eine Schnittstelle basteln.
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.