Line 20... |
Line 20... |
-- Dependencies:
|
-- Dependencies:
|
--
|
--
|
-- Revision:
|
-- Revision:
|
-- Revision 0.01 - File Created
|
-- Revision 0.01 - File Created
|
-- Revision 0.02 - Added req for mac tx and wait for grant
|
-- Revision 0.02 - Added req for mac tx and wait for grant
|
|
-- Revision 0.03 - Added data_out_first
|
|
|
-- Additional Comments:
|
-- Additional Comments:
|
--
|
--
|
----------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------
|
library IEEE;
|
library IEEE;
|
use IEEE.STD_LOGIC_1164.ALL;
|
use IEEE.STD_LOGIC_1164.ALL;
|
Line 45... |
Line 47... |
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 553... |
Line 556... |
set_chn_reqd, clear_reply_req)
|
set_chn_reqd, clear_reply_req)
|
begin
|
begin
|
-- set output followers
|
-- set output followers
|
mac_tx_req <= tx_mac_chn_reqd;
|
mac_tx_req <= tx_mac_chn_reqd;
|
|
|
|
-- set initial values for combinatorial outputs
|
|
data_out_first <= '0';
|
|
|
case tx_state is
|
case tx_state is
|
when SEND =>
|
when SEND =>
|
if data_out_ready = '1' and kill_data_out_valid = '0' then
|
if data_out_ready = '1' and kill_data_out_valid = '0' then
|
data_out_valid <= '1';
|
data_out_valid <= '1';
|
else
|
else
|
Line 602... |
Line 608... |
when SEND =>
|
when SEND =>
|
if data_out_ready = '1' then
|
if data_out_ready = '1' then
|
tx_count_mode <= INCR;
|
tx_count_mode <= INCR;
|
end if;
|
end if;
|
case tx_count is
|
case tx_count is
|
when x"00" => data_out <= x"ff"; -- dst = broadcast
|
when x"00" =>
|
|
data_out_first <= data_out_ready;
|
|
data_out <= x"ff"; -- dst = broadcast
|
|
|
when x"01" => data_out <= x"ff";
|
when x"01" => data_out <= x"ff";
|
when x"02" => data_out <= x"ff";
|
when x"02" => data_out <= x"ff";
|
when x"03" => data_out <= x"ff";
|
when x"03" => data_out <= x"ff";
|
when x"04" => data_out <= x"ff";
|
when x"04" => data_out <= x"ff";
|
when x"05" => data_out <= x"ff";
|
when x"05" => data_out <= x"ff";
|