1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
library ieee;
use ieee.std_logic_1164.all;
use IEEE.std_logic_arith.all;
-------------------------------------------------------------------------------------
--
--
-- Definition of Ports
-- ACLK : Synchronous clock
-- ARESETN : System reset, active low
-- S_AXIS_TREADY : Ready to accept data in
-- S_AXIS_TDATA : Data in
-- S_AXIS_TLAST : Optional data in qualifier
-- S_AXIS_TVALID : Data in is valid
-- M_AXIS_TVALID : Data out is valid
-- M_AXIS_TDATA : Data Out
-- M_AXIS_TLAST : Optional data out qualifier
-- M_AXIS_TREADY : Connected slave device is ready to accept data out
--
-------------------------------------------------------------------------------
------------------------------------------------------------------------------
-- Entity Section
------------------------------------------------------------------------------
entity accelerator is
GENERIC(
constant DATA_WIDTH : positive := 8;
constant IMAGE_WIDTH : positive := 13;
constant IMAGE_SIZE : positive := 169;
constant DOUT_WIDTH : positive := 5 -- TO BE CALCULATED
);
port(
-- DO NOT EDIT BELOW THIS LINE ---------------------
-- Bus protocol ports, do not add or delete.
ACLK : in std_logic;
ARESETN : in std_logic;
S_AXIS_TREADY : out std_logic;
S_AXIS_TDATA : in std_logic_vector(31 downto 0);
S_AXIS_TLAST : in std_logic;
S_AXIS_TVALID : in std_logic;
M_AXIS_TVALID : out std_logic;
M_AXIS_TDATA : out std_logic_vector(15 downto 0);
--M_AXIS_TLAST : out std_logic;
M_AXIS_TREADY : in std_logic;
EN_LOC_STREAM_1: in std_logic
-- DO NOT EDIT ABOVE THIS LINE ---------------------
);
end accelerator;
------------------------------------------------------------------------------
-- Architecture Section
------------------------------------------------------------------------------
architecture Behavior of accelerator is
signal DOUT_1_1 : std_logic_vector(DOUT_WIDTH-1 downto 0);
signal DOUT_2_1 : std_logic_vector(DOUT_WIDTH-1 downto 0);
signal EN_STREAM_OUT_1 : std_logic;
signal VALID_OUT_1 : std_logic;
signal INTERNAL_RST : std_logic;
---------------------------------- MAP NEXT LAYER - COMPONENTS START----------------------------------
COMPONENT CONV_LAYER_1
port(
DIN :IN std_logic_vector(DATA_WIDTH-1 downto 0);
CLK,RST :IN std_logic;
EN_STREAM :IN std_logic; -- S_AXIS_TREADY : Ready to accept data in
EN_STREAM_OUT_1 :OUT std_logic; -- M_AXIS_TREADY : Connected slave device is ready to accept data out/ Internal Enable
VALID_OUT_1 :OUT std_logic; -- M_AXIS_TVALID : Data out is valid
EN_LOC_STREAM_1 :IN std_logic;
DOUT_1_1 :OUT std_logic_vector(DOUT_WIDTH-1 downto 0);
DOUT_2_1 :OUT std_logic_vector(DOUT_WIDTH-1 downto 0);
INTERNAL_RST :OUT std_logic
);
END COMPONENT CONV_LAYER_1;
begin
CONV_LYR_1 : CONV_LAYER_1
port map(
CLK => ACLK,
RST => ARESETN,
DIN => S_AXIS_TDATA(7 downto 0),
EN_STREAM => M_AXIS_TREADY,
DOUT_1_1 => DOUT_1_1,
DOUT_2_1 => DOUT_2_1,
EN_LOC_STREAM_1 => EN_LOC_STREAM_1,
EN_STREAM_OUT_1 => EN_STREAM_OUT_1,
VALID_OUT_1 => VALID_OUT_1,
INTERNAL_RST => INTERNAL_RST
);
M_AXIS_TDATA(4 downto 0) <= DOUT_1_1;
M_AXIS_TDATA(9 downto 5)<= DOUT_2_1;
M_AXIS_TDATA (15 downto 10) <= (others => '0');
S_AXIS_TREADY<= EN_STREAM_OUT_1;
M_AXIS_TVALID<= VALID_OUT_1;
end architecture Behavior;
|