Line 13... |
Line 13... |
-- Dependencies:
|
-- Dependencies:
|
--
|
--
|
-- Revision:
|
-- Revision:
|
-- Revision 0.01 - File Created
|
-- Revision 0.01 - File Created
|
-- Revision 0.02 - separated RX and TX clocks
|
-- Revision 0.02 - separated RX and TX clocks
|
|
-- Revision 0.03 - Added mac_tx_tfirst
|
-- Additional Comments:
|
-- Additional Comments:
|
--
|
--
|
----------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------
|
LIBRARY ieee;
|
LIBRARY ieee;
|
USE ieee.std_logic_1164.ALL;
|
USE ieee.std_logic_1164.ALL;
|
Line 45... |
Line 46... |
ip_pkt_count : out STD_LOGIC_VECTOR(7 downto 0); -- number of IP pkts received for us
|
ip_pkt_count : out STD_LOGIC_VECTOR(7 downto 0); -- number of IP pkts received for us
|
-- MAC Transmitter
|
-- MAC Transmitter
|
mac_tx_tdata : out std_logic_vector(7 downto 0); -- data byte to tx
|
mac_tx_tdata : out std_logic_vector(7 downto 0); -- data byte to tx
|
mac_tx_tvalid : out std_logic; -- tdata is valid
|
mac_tx_tvalid : out std_logic; -- tdata is valid
|
mac_tx_tready : in std_logic; -- mac is ready to accept data
|
mac_tx_tready : in std_logic; -- mac is ready to accept data
|
|
mac_tx_tfirst : out std_logic; -- indicates first byte of frame
|
mac_tx_tlast : out std_logic; -- indicates last byte of frame
|
mac_tx_tlast : out std_logic; -- indicates last byte of frame
|
-- MAC Receiver
|
-- MAC Receiver
|
mac_rx_tdata : in std_logic_vector(7 downto 0); -- data byte received
|
mac_rx_tdata : in std_logic_vector(7 downto 0); -- data byte received
|
mac_rx_tvalid : in std_logic; -- indicates tdata is valid
|
mac_rx_tvalid : in std_logic; -- indicates tdata is valid
|
mac_rx_tready : out std_logic; -- tells mac that we are ready to take data
|
mac_rx_tready : out std_logic; -- tells mac that we are ready to take data
|
Line 85... |
Line 87... |
-- MAC layer TX signals
|
-- MAC layer TX signals
|
mac_tx_req : out std_logic; -- indicates that ip wants access to channel (stays up for as long as tx)
|
mac_tx_req : out std_logic; -- indicates that ip wants access to channel (stays up for as long as tx)
|
mac_tx_granted : in std_logic; -- indicates that access to channel has been granted
|
mac_tx_granted : in std_logic; -- indicates that access to channel has been granted
|
mac_data_out_ready : in std_logic; -- indicates system ready to consume data
|
mac_data_out_ready : in std_logic; -- indicates system ready to consume data
|
mac_data_out_valid : out std_logic; -- indicates data out is valid
|
mac_data_out_valid : out std_logic; -- indicates data out is valid
|
|
mac_data_out_first : out std_logic; -- with data out valid indicates the first byte of a frame
|
mac_data_out_last : out std_logic; -- with data out valid indicates the last byte of a frame
|
mac_data_out_last : out std_logic; -- with data out valid indicates the last byte of a frame
|
mac_data_out : out std_logic_vector (7 downto 0) -- ethernet frame (from dst mac addr through to last byte of frame)
|
mac_data_out : out std_logic_vector (7 downto 0) -- ethernet frame (from dst mac addr through to last byte of frame)
|
);
|
);
|
END COMPONENT;
|
END COMPONENT;
|
|
|
Line 107... |
Line 110... |
mac_tx_req : out std_logic; -- indicates that ip wants access to channel (stays up for as long as tx)
|
mac_tx_req : out std_logic; -- indicates that ip wants access to channel (stays up for as long as tx)
|
mac_tx_granted : in std_logic; -- indicates that access to channel has been granted
|
mac_tx_granted : in std_logic; -- indicates that access to channel has been granted
|
data_out_clk : in std_logic;
|
data_out_clk : in std_logic;
|
data_out_ready : in std_logic; -- indicates system ready to consume data
|
data_out_ready : in std_logic; -- indicates system ready to consume data
|
data_out_valid : out std_logic; -- indicates data out is valid
|
data_out_valid : out std_logic; -- indicates data out is valid
|
|
data_out_first : out std_logic; -- with data out valid indicates the first byte of a frame
|
data_out_last : out std_logic; -- with data out valid indicates the last byte of a frame
|
data_out_last : out std_logic; -- with data out valid indicates the last byte of a frame
|
data_out : out std_logic_vector (7 downto 0); -- ethernet frame (from dst mac addr through to last byte of frame)
|
data_out : out std_logic_vector (7 downto 0); -- ethernet frame (from dst mac addr through to last byte of frame)
|
-- system signals
|
-- system signals
|
our_mac_address : in STD_LOGIC_VECTOR (47 downto 0);
|
our_mac_address : in STD_LOGIC_VECTOR (47 downto 0);
|
our_ip_address : in STD_LOGIC_VECTOR (31 downto 0);
|
our_ip_address : in STD_LOGIC_VECTOR (31 downto 0);
|
Line 125... |
Line 129... |
|
|
req_1 : in std_logic;
|
req_1 : in std_logic;
|
grant_1 : out std_logic;
|
grant_1 : out std_logic;
|
data_1 : in std_logic_vector(7 downto 0); -- data byte to tx
|
data_1 : in std_logic_vector(7 downto 0); -- data byte to tx
|
valid_1 : in std_logic; -- tdata is valid
|
valid_1 : in std_logic; -- tdata is valid
|
|
first_1 : in std_logic; -- indicates first byte of frame
|
last_1 : in std_logic; -- indicates last byte of frame
|
last_1 : in std_logic; -- indicates last byte of frame
|
|
|
req_2 : in std_logic;
|
req_2 : in std_logic;
|
grant_2 : out std_logic;
|
grant_2 : out std_logic;
|
data_2 : in std_logic_vector(7 downto 0); -- data byte to tx
|
data_2 : in std_logic_vector(7 downto 0); -- data byte to tx
|
valid_2 : in std_logic; -- tdata is valid
|
valid_2 : in std_logic; -- tdata is valid
|
|
first_2 : in std_logic; -- indicates first byte of frame
|
last_2 : in std_logic; -- indicates last byte of frame
|
last_2 : in std_logic; -- indicates last byte of frame
|
|
|
data : out std_logic_vector(7 downto 0); -- data byte to tx
|
data : out std_logic_vector(7 downto 0); -- data byte to tx
|
valid : out std_logic; -- tdata is valid
|
valid : out std_logic; -- tdata is valid
|
|
first : out std_logic; -- indicates first byte of frame
|
last : out std_logic -- indicates last byte of frame
|
last : out std_logic -- indicates last byte of frame
|
);
|
);
|
END COMPONENT;
|
END COMPONENT;
|
|
|
---------------------------
|
---------------------------
|
Line 151... |
Line 158... |
-- MAC arbitration busses
|
-- MAC arbitration busses
|
signal ip_mac_req : std_logic;
|
signal ip_mac_req : std_logic;
|
signal ip_mac_grant : std_logic;
|
signal ip_mac_grant : std_logic;
|
signal ip_mac_data_out : std_logic_vector (7 downto 0);
|
signal ip_mac_data_out : std_logic_vector (7 downto 0);
|
signal ip_mac_valid : std_logic;
|
signal ip_mac_valid : std_logic;
|
|
signal ip_mac_first : std_logic;
|
signal ip_mac_last : std_logic;
|
signal ip_mac_last : std_logic;
|
signal arp_mac_req : std_logic;
|
signal arp_mac_req : std_logic;
|
signal arp_mac_grant : std_logic;
|
signal arp_mac_grant : std_logic;
|
signal arp_mac_data_out : std_logic_vector (7 downto 0);
|
signal arp_mac_data_out : std_logic_vector (7 downto 0);
|
signal arp_mac_valid : std_logic;
|
signal arp_mac_valid : std_logic;
|
|
signal arp_mac_first : std_logic;
|
signal arp_mac_last : std_logic;
|
signal arp_mac_last : std_logic;
|
-- MAC RX bus
|
-- MAC RX bus
|
signal mac_rx_tready_int : std_logic;
|
signal mac_rx_tready_int : std_logic;
|
-- MAC TX bus
|
-- MAC TX bus
|
signal mac_tx_tdata_int : std_logic_vector (7 downto 0);
|
signal mac_tx_tdata_int : std_logic_vector (7 downto 0);
|
signal mac_tx_tvalid_int : std_logic;
|
signal mac_tx_tvalid_int : std_logic;
|
|
signal mac_tx_tfirst_int : std_logic;
|
signal mac_tx_tlast_int : std_logic;
|
signal mac_tx_tlast_int : std_logic;
|
-- control signals
|
-- control signals
|
signal mac_tx_granted_int : std_logic;
|
signal mac_tx_granted_int : std_logic;
|
|
|
begin
|
begin
|
Line 173... |
Line 183... |
mac_rx_tready_int <= '1'; -- enable the mac receiver
|
mac_rx_tready_int <= '1'; -- enable the mac receiver
|
|
|
-- set followers
|
-- set followers
|
mac_tx_tdata <= mac_tx_tdata_int;
|
mac_tx_tdata <= mac_tx_tdata_int;
|
mac_tx_tvalid <= mac_tx_tvalid_int;
|
mac_tx_tvalid <= mac_tx_tvalid_int;
|
|
mac_tx_tfirst <= mac_tx_tfirst_int;
|
mac_tx_tlast <= mac_tx_tlast_int;
|
mac_tx_tlast <= mac_tx_tlast_int;
|
|
|
mac_rx_tready <= mac_rx_tready_int;
|
mac_rx_tready <= mac_rx_tready_int;
|
|
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
Line 201... |
Line 212... |
arp_req_rslt => arp_req_rslt_int,
|
arp_req_rslt => arp_req_rslt_int,
|
mac_tx_req => ip_mac_req,
|
mac_tx_req => ip_mac_req,
|
mac_tx_granted => ip_mac_grant,
|
mac_tx_granted => ip_mac_grant,
|
mac_data_out_ready => mac_tx_tready,
|
mac_data_out_ready => mac_tx_tready,
|
mac_data_out_valid => ip_mac_valid,
|
mac_data_out_valid => ip_mac_valid,
|
|
mac_data_out_first => ip_mac_first,
|
mac_data_out_last => ip_mac_last,
|
mac_data_out_last => ip_mac_last,
|
mac_data_out => ip_mac_data_out,
|
mac_data_out => ip_mac_data_out,
|
mac_data_in => mac_rx_tdata,
|
mac_data_in => mac_rx_tdata,
|
mac_data_in_valid => mac_rx_tvalid,
|
mac_data_in_valid => mac_rx_tvalid,
|
mac_data_in_last => mac_rx_tlast
|
mac_data_in_last => mac_rx_tlast
|
Line 228... |
Line 240... |
mac_tx_req => arp_mac_req,
|
mac_tx_req => arp_mac_req,
|
mac_tx_granted => arp_mac_grant,
|
mac_tx_granted => arp_mac_grant,
|
data_out_clk => tx_clk,
|
data_out_clk => tx_clk,
|
data_out_ready => mac_tx_tready,
|
data_out_ready => mac_tx_tready,
|
data_out_valid => arp_mac_valid,
|
data_out_valid => arp_mac_valid,
|
|
data_out_first => arp_mac_first,
|
data_out_last => arp_mac_last,
|
data_out_last => arp_mac_last,
|
data_out => arp_mac_data_out,
|
data_out => arp_mac_data_out,
|
-- system signals
|
-- system signals
|
our_mac_address => our_mac_address,
|
our_mac_address => our_mac_address,
|
our_ip_address => our_ip_address,
|
our_ip_address => our_ip_address,
|
Line 249... |
Line 262... |
|
|
req_1 => ip_mac_req,
|
req_1 => ip_mac_req,
|
grant_1 => ip_mac_grant,
|
grant_1 => ip_mac_grant,
|
data_1 => ip_mac_data_out,
|
data_1 => ip_mac_data_out,
|
valid_1 => ip_mac_valid,
|
valid_1 => ip_mac_valid,
|
|
first_1 => ip_mac_first,
|
last_1 => ip_mac_last,
|
last_1 => ip_mac_last,
|
|
|
req_2 => arp_mac_req,
|
req_2 => arp_mac_req,
|
grant_2 => arp_mac_grant,
|
grant_2 => arp_mac_grant,
|
data_2 => arp_mac_data_out,
|
data_2 => arp_mac_data_out,
|
valid_2 => arp_mac_valid,
|
valid_2 => arp_mac_valid,
|
|
first_2 => arp_mac_first,
|
last_2 => arp_mac_last,
|
last_2 => arp_mac_last,
|
|
|
data => mac_tx_tdata_int,
|
data => mac_tx_tdata_int,
|
valid => mac_tx_tvalid_int,
|
valid => mac_tx_tvalid_int,
|
|
first => mac_tx_tfirst_int,
|
last => mac_tx_tlast_int
|
last => mac_tx_tlast_int
|
);
|
);
|
|
|
end structural;
|
end structural;
|
|
|