Datenaustausch Entity und NIOS II

Gast #873529
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
Gast #873548
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
Gast #873563
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?
Gast #873584
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren