Skip to content

Commit 4f10b2a

Browse files
committed
Add AXI interface definitions
1 parent f7ad55c commit 4f10b2a

File tree

2 files changed

+242
-0
lines changed

2 files changed

+242
-0
lines changed

interfaces/axi4_if.sv

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
//------------------------------------------------------------------------------
2+
// axi4_if.sv
3+
// published as part of https://github.com/pConst/basic_verilog
4+
// Konstantin Pavlov, pavlovconst@gmail.com
5+
//------------------------------------------------------------------------------
6+
7+
8+
// INFO ------------------------------------------------------------------------
9+
// AXI4-M instantiation
10+
//
11+
12+
13+
interface axi4_if #( parameter
14+
ADDR_W = 32,
15+
DATA_W = 32,
16+
17+
ID_W = 8,
18+
19+
ARUSER_W = 0,
20+
AWUSER_W = 0,
21+
BUSER_W = 0,
22+
RUSER_W = 0,
23+
WUSER_W = 0
24+
);
25+
26+
27+
localparam STRB_W = DATA_W/8;
28+
29+
logic [ ADDR_W-1:0] araddr;
30+
logic [ 1:0] arburst;
31+
logic [ 3:0] arcache;
32+
logic [ ID_W-1:0] arid;
33+
logic [ 7:0] arlen;
34+
logic [ 1:0] arlock;
35+
logic [ 2:0] arprot;
36+
logic [ 3:0] arqos;
37+
logic arready;
38+
logic [ 3:0] arregion;
39+
logic [ 2:0] arsize;
40+
logic [ARUSER_W-1:0] aruser;
41+
logic arvalid;
42+
43+
logic [ ADDR_W-1:0] awaddr;
44+
logic [ 1:0] awburst;
45+
logic [ 3:0] awcache;
46+
logic [ ID_W-1:0] awid;
47+
logic [ 7:0] awlen;
48+
logic [ 1:0] awlock;
49+
logic [ 2:0] awprot;
50+
logic [ 3:0] awqos;
51+
logic awready;
52+
logic [ 3:0] awregion;
53+
logic [ 2:0] awsize;
54+
logic [AWUSER_W-1:0] awuser;
55+
logic awvalid;
56+
57+
logic [ ID_W-1:0] bid;
58+
logic bready;
59+
logic [ 1:0] bresp;
60+
logic [ BUSER_W-1:0] buser;
61+
logic bvalid;
62+
63+
logic [ DATA_W-1:0] rdata;
64+
logic [ ID_W-1:0] rid;
65+
logic rlast;
66+
logic rready;
67+
logic [ 1:0] rres
68+
logic [ RUSER_W-1:0] ruser;
69+
logic rvalid;
70+
71+
logic [ DATA_W-1:0] wdata;
72+
logic wid;
73+
logic wlast;
74+
logic wready;
75+
logic [ STRB_W-1:0] wstrb;
76+
logic [ WUSER_W-1:0] wuser;
77+
logic wvalid;
78+
79+
80+
modport master(
81+
82+
input arready,
83+
input awready,
84+
input bid,
85+
input bresp,
86+
input bvalid,
87+
input rdata,
88+
input rid,
89+
input rlast,
90+
input rresp,
91+
input rvalid,
92+
input wready,
93+
94+
output araddr,
95+
output arburst,
96+
output arcache,
97+
output arid,
98+
output arlen,
99+
output arlock,
100+
output arprot,
101+
output arqos,
102+
output arregion,
103+
output arsize,
104+
output aruser,
105+
output arvalid,
106+
output awaddr,
107+
output awburst,
108+
output awcache,
109+
output awid,
110+
output awlen,
111+
output awlock,
112+
output awprot,
113+
output awqos,
114+
output awregion,
115+
output awsize,
116+
output awuser,
117+
output awvalid,
118+
output bready,
119+
output buser,
120+
output rready,
121+
output ruser,
122+
output wdata,
123+
output wid,
124+
output wlast,
125+
output wstrb,
126+
output wuser,
127+
output wvalid
128+
);
129+
130+
131+
modport slave(
132+
133+
input araddr,
134+
input arburst,
135+
input arcache,
136+
input arid,
137+
input arlen,
138+
input arlock,
139+
input arprot,
140+
input arqos,
141+
input arregion,
142+
input arsize,
143+
input aruser,
144+
input arvalid,
145+
input awaddr,
146+
input awburst,
147+
input awcache,
148+
input awid,
149+
input awlen,
150+
input awlock,
151+
input awprot,
152+
input awqos,
153+
input awregion,
154+
input awsize,
155+
input awuser,
156+
input awvalid,
157+
input bready,
158+
input buser,
159+
input rready,
160+
input ruser,
161+
input wdata,
162+
input wid,
163+
input wlast,
164+
input wstrb,
165+
input wuser,
166+
input wvalid,
167+
168+
output arready,
169+
output awready,
170+
output bid,
171+
output bresp,
172+
output bvalid,
173+
output rdata,
174+
output rid,
175+
output rlast,
176+
output rresp,
177+
output rvalid,
178+
output wready
179+
);
180+
181+
182+
endinterface
183+

interfaces/axis_if.sv

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
//------------------------------------------------------------------------------
2+
// axis_if.sv
3+
// published as part of https://github.com/pConst/basic_verilog
4+
// Konstantin Pavlov, pavlovconst@gmail.com
5+
//------------------------------------------------------------------------------
6+
7+
8+
// INFO ------------------------------------------------------------------------
9+
// AXI4-Stream instantiation
10+
//
11+
12+
13+
interface axis_if #( parameter
14+
DATA_W = 32,
15+
ID_W = 8,
16+
USER_W = 0
17+
);
18+
19+
20+
logic [ DATA_W-1:0 ] tdata;
21+
logic [ ID_W-1:0 ] tdest;
22+
logic [ ID_W-1:0 ] tid;
23+
logic [ DATA_W/8-1:0 ] tkeep;
24+
logic tlast;
25+
logic tready;
26+
logic [ USER_W-1:0 ] tuser;
27+
logic tvalid;
28+
29+
30+
modport master(
31+
32+
input tready,
33+
34+
output tdata,
35+
output tdest,
36+
output tid,
37+
output tkeep,
38+
output tlast,
39+
output tuser,
40+
output tvalid
41+
);
42+
43+
44+
modport slave(
45+
46+
input tdata,
47+
input tdest,
48+
input tid,
49+
input tkeep,
50+
input tlast,
51+
input tuser,
52+
input tvalid,
53+
54+
output tready
55+
);
56+
57+
58+
endinterface
59+

0 commit comments

Comments
 (0)