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


von Sebi (Gast)


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

von Kest (Gast)


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

von Sebi (Gast)


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?

von Kest (Gast)


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

von Sebi (Gast)


Lesenswert?

Alles klar, Danke!!

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.