SURF  1.0
SrpV3Pkg.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : SrpV3Pkg.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2016-04-19
5 -- Last update: 2016-05-04
6 -------------------------------------------------------------------------------
7 -- Description: SRPv3 Package File
8 -------------------------------------------------------------------------------
9 -- This file is part of 'SLAC Firmware Standard Library'.
10 -- It is subject to the license terms in the LICENSE.txt file found in the
11 -- top-level directory of this distribution and at:
12 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.
13 -- No part of 'SLAC Firmware Standard Library', including this file,
14 -- may be copied, modified, propagated, or distributed except according to
15 -- the terms contained in the LICENSE.txt file.
16 -------------------------------------------------------------------------------
17 
18 library ieee;
19 use ieee.std_logic_1164.all;
20 
21 use work.StdRtlPkg.all;
22 use work.AxiStreamPkg.all;
23 use work.SsiPkg.all;
24 
25 package SrpV3Pkg is
26 --! @file
27  --! @ingroup protocols_srp
28 
29 -- constant SRP_AXIS_CONFIG_C : AxiStreamConfigType := (
30 -- TSTRB_EN_C => false,
31 -- TDATA_BYTES_C => 4,
32 -- TDEST_BITS_C => 0,
33 -- TID_BITS_C => 0,
34 -- TKEEP_MODE_C => TKEEP_NORMAL_C,
35 -- TUSER_BITS_C => 2,
36 -- TUSER_MODE_C => TUSER_FIRST_LAST_C);
37 
38  constant SRP_VERSION_C : slv(7 downto 0) := x"03";
39 
40  -- opcodes
41  constant SRP_READ_C : slv(1 downto 0) := "00";
42  constant SRP_WRITE_C : slv(1 downto 0) := "01";
43  constant SRP_POSTED_WRITE_C : slv(1 downto 0) := "10";
44  constant SRP_NULL_C : slv(1 downto 0) := "11";
45 
46  type SrpV3ReqType is record
48  remVer : slv(7 downto 0);
49  opCode : slv(1 downto 0);
50  spare : slv(13 downto 0);
51  tid : slv(31 downto 0);
52  addr : slv(63 downto 0);
53  reqSize : slv(31 downto 0);
54  end record;
55 
57  request => '0',
58  remVer => (others => '0'),
59  opCode => (others => '0'),
60  spare => (others => '0'),
61  tid => (others => '0'),
62  addr => (others => '0'),
63  reqSize => (others => '0'));
64 
65  type SrpV3AckType is record
66  done : sl;
67  respCode : slv(7 downto 0);
68  end record;
69 
71  done => '0',
72  respCode => (others => '0'));
73 
74 
75 end package SrpV3Pkg;
76 
77 package body SrpV3Pkg is
78 
79 -- function srpHeader (
80 -- opcode : in slv(1 downto 0);
81 -- addr : in slv;
82 -- reqSize : in natural := 0;
83 -- txnId : in slv(31 downto 0) := (others => '0');
84 -- timeout : in slv(7 downto 0) := (others => '0'))
85 -- return Slv32Array
86 -- is
87 -- variable header : slv32Array(0 to 4);
88 -- begin
89 -- header(0)(7 downto 0) := X"03"; -- Version
90 -- header(0)(9 downto 8) := opcode; -- Opcode
91 -- header(0)(23 downto 10) := (others => '0'); -- Reserved
92 -- header(0)(31 downto 24) := timeout; -- TimeoutCnt
93 -- header(1)(31 downto 0) := txnId; --TID
94 -- header(2) := resize(addr, 32);
95 -- header(3) := resize(addr(addr'high downto 32), 32);
96 -- header(4) := toSlv(reqSize, 32);
97 -- return header;
98 -- end function;
99 
100 -- procedure srpSimWrite (
101 -- signal clk : in sl;
102 -- signal master : out AxiStreamMasterType;
103 -- signal slave : in AxiStreamSlaveType;
104 -- addr : in slv;
105 -- data : in Slv32Array;
106 -- txnId : in slv(31 downto 0) := (others => '0');
107 -- timeout : in slv(7 downto 0) := (others => '0');
108 -- posted : in boolean := false)
109 -- is
110 -- variable txData : slv32array(0 to 4+data'length-1);
111 -- begin
112 -- -- Build frame
113 -- txData(0 to 4) := srpHeader(ite(posted, SRP_POSTED_WRITE_C, SRP_WRITE_C), addr, data'length*4-1, txnId, timeout);
114 -- txData(5 to txData'length-1) := data;
115 
116 -- axiStreamSimSendFrame(SRP_AXIS_CONFIG_C, clk, master, slave, txData, "02", "00");
117 
118 -- -- Need to check response if non posted
119 
120 -- end procedure;
121 
122 -- procedure srpSimRead (
123 -- signal clk : in sl;
124 -- signal master : out AxiStreamMasterType;
125 -- signal slave : in AxiStreamSlaveType;
126 -- addr : in slv;
127 -- data : inout Slv32Array;
128 -- txnId : in slv(31 downto 0) := (others => '0');
129 -- timeout : in slv(7 downto 0) := (others => '0'))
130 -- is
131 -- variable txData : slv32array(0 to 4);
132 -- begin
133 -- -- Build frame
134 -- txData(0 to 4) := srpHeader(SRP_READ_C, addr, data'length*4-1, txnId, timeout);
135 -- axiStreamSimSendFrame(SRP_AXIS_CONFIG_C, clk, master, slave, txData, "02", "00");
136 
137 -- --axiStreamSimReceiveFrame(SRP_AXIS_CONFIG_C, clk,
138 
139 -- end procedure;
140 
141 end package body SrpV3Pkg;
SrpV3ReqType
Definition: SrpV3Pkg.vhd:46
slv( 7 downto 0) remVer
Definition: SrpV3Pkg.vhd:48
slv( 31 downto 0) reqSize
Definition: SrpV3Pkg.vhd:53
std_logic sl
Definition: StdRtlPkg.vhd:28
slv( 1 downto 0) opCode
Definition: SrpV3Pkg.vhd:49
slv( 1 downto 0) := "00" SRP_READ_C
Definition: SrpV3Pkg.vhd:41
SrpV3ReqType :=(request => '0',remVer =>( others => '0'),opCode =>( others => '0'),spare =>( others => '0'),tid =>( others => '0'),addr =>( others => '0'),reqSize =>( others => '0')) SRPV3_REQ_INIT_C
Definition: SrpV3Pkg.vhd:56
_library_ ieeeieee
Definition: SrpV3Core.vhd:24
slv( 63 downto 0) addr
Definition: SrpV3Pkg.vhd:52
slv( 7 downto 0) respCode
Definition: SrpV3Pkg.vhd:67
slv( 7 downto 0) := x"03" SRP_VERSION_C
Definition: SrpV3Pkg.vhd:38
sl done
Definition: SrpV3Pkg.vhd:66
slv( 1 downto 0) := "01" SRP_WRITE_C
Definition: SrpV3Pkg.vhd:42
slv( 1 downto 0) := "11" SRP_NULL_C
Definition: SrpV3Pkg.vhd:44
slv( 31 downto 0) tid
Definition: SrpV3Pkg.vhd:51
sl request
Definition: SrpV3Pkg.vhd:47
SrpV3AckType
Definition: SrpV3Pkg.vhd:65
SrpV3AckType :=(done => '0',respCode =>( others => '0')) SRPV3_ACK_INIT_C
Definition: SrpV3Pkg.vhd:70
slv( 1 downto 0) := "10" SRP_POSTED_WRITE_C
Definition: SrpV3Pkg.vhd:43
std_logic_vector slv
Definition: StdRtlPkg.vhd:29
slv( 13 downto 0) spare
Definition: SrpV3Pkg.vhd:50