OpenCores
URL https://opencores.org/ocsvn/rio/rio/trunk

Subversion Repositories rio

[/] [rio/] [branches/] [2.0.0-development/] [rtl/] [vhdl/] [RioCommon.vhd] - Diff between revs 41 and 45

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 41 Rev 45
Line 218... Line 218...
  ---------------------------------------------------------------------------
  ---------------------------------------------------------------------------
  -- Create a NWRITE RapidIO frame.
  -- Create a NWRITE RapidIO frame.
  ---------------------------------------------------------------------------
  ---------------------------------------------------------------------------
  function RioNwrite(
  function RioNwrite(
    constant wrsize : in std_logic_vector(3 downto 0);
    constant wrsize : in std_logic_vector(3 downto 0);
 
    constant address : in std_logic_vector(28 downto 0);
 
    constant wdptr : in std_logic;
 
    constant xamsbs : in std_logic_vector(1 downto 0);
 
    constant dataLength : in natural range 1 to 32;
 
    constant data : in DoublewordArray(0 to 31))
 
    return RioPayload;
 
 
 
  ---------------------------------------------------------------------------
 
  -- Create a NWRITER RapidIO frame.
 
  ---------------------------------------------------------------------------
 
  function RioNwriteR(
 
    constant wrsize : in std_logic_vector(3 downto 0);
    constant tid : in std_logic_vector(7 downto 0);
    constant tid : in std_logic_vector(7 downto 0);
    constant address : in std_logic_vector(28 downto 0);
    constant address : in std_logic_vector(28 downto 0);
    constant wdptr : in std_logic;
    constant wdptr : in std_logic;
    constant xamsbs : in std_logic_vector(1 downto 0);
    constant xamsbs : in std_logic_vector(1 downto 0);
    constant dataLength : in natural range 1 to 32;
    constant dataLength : in natural range 1 to 32;
Line 582... Line 594...
  -----------------------------------------------------------------------------
  -----------------------------------------------------------------------------
  -- 
  -- 
  -----------------------------------------------------------------------------
  -----------------------------------------------------------------------------
  function RioNwrite(
  function RioNwrite(
    constant wrsize : in std_logic_vector(3 downto 0);
    constant wrsize : in std_logic_vector(3 downto 0);
    constant tid : in std_logic_vector(7 downto 0);
 
    constant address : in std_logic_vector(28 downto 0);
    constant address : in std_logic_vector(28 downto 0);
    constant wdptr : in std_logic;
    constant wdptr : in std_logic;
    constant xamsbs : in std_logic_vector(1 downto 0);
    constant xamsbs : in std_logic_vector(1 downto 0);
    constant dataLength : in natural range 1 to 32;
    constant dataLength : in natural range 1 to 32;
    constant data : in DoublewordArray(0 to 31))
    constant data : in DoublewordArray(0 to 31))
    return RioPayload is
    return RioPayload is
    variable payload : RioPayload;
    variable payload : RioPayload;
  begin
  begin
    payload.data(0)(15 downto 12) := "0100";
    payload.data(0)(15 downto 12) := "0100";
    payload.data(0)(11 downto 8) := wrsize;
    payload.data(0)(11 downto 8) := wrsize;
 
    payload.data(0)(7 downto 0) := (others=>'0');
 
 
 
    payload.data(1) := address(28 downto 13);
 
 
 
    payload.data(2)(15 downto 3) := address(12 downto 0);
 
    payload.data(2)(2) := wdptr;
 
    payload.data(2)(1 downto 0) := xamsbs;
 
 
 
    for i in 0 to dataLength-1 loop
 
      payload.data(3+4*i) := data(i)(63 downto 48);
 
      payload.data(4+4*i) := data(i)(47 downto 32);
 
      payload.data(5+4*i) := data(i)(31 downto 16);
 
      payload.data(6+4*i) := data(i)(15 downto 0);
 
    end loop;
 
 
 
    payload.length := 3 + 4*dataLength;
 
 
 
    return payload;
 
  end function;
 
 
 
  -----------------------------------------------------------------------------
 
  -- 
 
  -----------------------------------------------------------------------------
 
  function RioNwriteR(
 
    constant wrsize : in std_logic_vector(3 downto 0);
 
    constant tid : in std_logic_vector(7 downto 0);
 
    constant address : in std_logic_vector(28 downto 0);
 
    constant wdptr : in std_logic;
 
    constant xamsbs : in std_logic_vector(1 downto 0);
 
    constant dataLength : in natural range 1 to 32;
 
    constant data : in DoublewordArray(0 to 31))
 
    return RioPayload is
 
    variable payload : RioPayload;
 
  begin
 
    payload.data(0)(15 downto 12) := "0101";
 
    payload.data(0)(11 downto 8) := wrsize;
    payload.data(0)(7 downto 0) := tid;
    payload.data(0)(7 downto 0) := tid;
 
 
    payload.data(1) := address(28 downto 13);
    payload.data(1) := address(28 downto 13);
 
 
    payload.data(2)(15 downto 3) := address(12 downto 0);
    payload.data(2)(15 downto 3) := address(12 downto 0);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.