mikrocontroller.net

Forum: FPGA, VHDL & Co. Datenaustausch Entity und NIOS II


Autor: Sebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich möchte Daten zwischen einer Entity und dem NIOS II in einem FPGA 
austauschen. Dafür würde ich jetzt mehrere parallele Datenleitungen 
verwendent. Es geht sicher auch eleganter. Hat da jemand eine Idee wie 
man das möglichst einfach realisieren könnte?

Ich brauche mehrere Verschiedene Zahlen, die in die Entity rein sollen.

Gruß,Sebi

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Avalon PIO oder am besten AVALON-Interface, sowas in der Art:

entity Component is

  port (
    clk : in std_logic;

    -- AVALON Slave Interface
    as_address       : in  std_logic_vector(7 downto 0);
    as_chipselect    : in  std_logic;
    as_read          : in  std_logic;
    as_write         : in  std_logic;
    as_writedata     : in  std_logic_vector(31 downto 0);
    as_readdata      : out std_logic_vector(31 downto 0);
    as_readdatavalid : out std_logic;
    as_waitrequest   : out std_logic
    );

end Component;

architecture behave of Component is

as_waitrequest   <= not (as_write or as_read);

 process(clk)
  begin
    if rising_edge(clk) then

      if as_chipselect = '1' and as_write = '1' then

        -- Schreiben von Registern
        case as_address is
          when x"00" => bla lba
          when others => null;
        end case;

      end if;
  end if;
end behave


in NIOS hast Du dann

IOWR_32DIRECT(BASE, adresse, value) und IORD_32DIRECT(BASE, adresse)

oder entsprechend 8 oder 16 Bit.

Grüße,

Kest

Autor: Sebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!!

Ich hab das mal etwas zusammengestaucht, da ich nur die eine Richtung 
brauche.
Die Stelle mit dem x"00" ist ein hex wert für das adressregister?

Wie kann ich werte von dem writedata vektor übernehmen?

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, x"00" ist die interne Registeradresse

 case as_address is
          when x"00" => mein_register0 <= as_writedata;
          when x"01" => mein_register1 <= as_writedata;
          ...
          when others => null;
  end case;

Danach erstellst Du einfach eine Komponente (SOPC-Builder) und dann 
kannst Du diese Komponente einfach mit dem NIOS verdrahten. Am besten 
machst Du Dich mit AVALON vertraut und liest ein Paar Dokus -- einfach 
so zu erklären ist zu kompliziert.

Grüße,

Kest

Autor: Sebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar, Danke!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.