init EthMac prject with RX, TX core and LED Demo
This commit is contained in:
173
bench/bench_ethmac_rx.vhd
Normal file
173
bench/bench_ethmac_rx.vhd
Normal file
@@ -0,0 +1,173 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
library design;
|
||||
use design.all;
|
||||
|
||||
entity bench_ethmac_rx is
|
||||
end entity bench_ethmac_rx;
|
||||
|
||||
architecture RTL of bench_ethmac_rx is
|
||||
signal clk_hw : std_logic;
|
||||
signal rst_hw : std_logic;
|
||||
signal dv_i : std_logic;
|
||||
signal rxd_i : std_logic_vector(1 downto 0);
|
||||
signal rst : std_logic;
|
||||
signal start_of_frame : std_logic;
|
||||
signal end_of_frame : std_logic;
|
||||
signal data_out : std_logic_vector(7 downto 0);
|
||||
signal data_strb : std_logic;
|
||||
signal crc_check_valid : std_logic;
|
||||
signal clock_fcs : std_logic;
|
||||
signal crc : std_logic_vector(7 downto 0);
|
||||
signal dvalid : std_logic;
|
||||
signal calc : std_logic;
|
||||
signal fcs_init : std_logic;
|
||||
signal fcs_dat : std_logic_vector(7 downto 0);
|
||||
begin
|
||||
rst <= not rst_hw;
|
||||
|
||||
clock_driver : process
|
||||
constant period : time := 20 ns;
|
||||
begin
|
||||
clk_hw <= '0';
|
||||
wait for period / 2;
|
||||
clk_hw <= '1';
|
||||
wait for period / 2;
|
||||
end process clock_driver;
|
||||
|
||||
ethmac_rx_inst : entity design.ethmac_rx
|
||||
port map(
|
||||
clk_50 => clk_hw,
|
||||
rst => rst,
|
||||
rmii_rx => rxd_i,
|
||||
rmii_dv => dv_i,
|
||||
start_of_frame => start_of_frame,
|
||||
end_of_frame => end_of_frame,
|
||||
data_out => data_out,
|
||||
data_strb => data_strb,
|
||||
crc_check_valid => crc_check_valid
|
||||
);
|
||||
|
||||
ethfcs_inst : entity design.ethfcs
|
||||
port map(
|
||||
CLOCK => clock_fcs,
|
||||
RESET => rst,
|
||||
DATA => fcs_dat,
|
||||
LOAD_INIT => fcs_init,
|
||||
CALC => calc,
|
||||
D_VALID => dvalid,
|
||||
CRC => crc,
|
||||
CRC_REG => open,
|
||||
CRC_VALID => open
|
||||
);
|
||||
|
||||
sendphy : process is
|
||||
procedure sendRMII(byte : in std_logic_vector(7 downto 0)) is
|
||||
begin
|
||||
wait until falling_edge(clk_hw);
|
||||
dv_i <= '1';
|
||||
rxd_i <= byte(1 downto 0);
|
||||
wait until falling_edge(clk_hw);
|
||||
rxd_i <= byte(3 downto 2);
|
||||
wait until falling_edge(clk_hw);
|
||||
rxd_i <= byte(5 downto 4);
|
||||
wait until falling_edge(clk_hw);
|
||||
rxd_i <= byte(7 downto 6);
|
||||
|
||||
end procedure sendRMII;
|
||||
begin
|
||||
rst_hw <= '0';
|
||||
dv_i <= '0';
|
||||
rxd_i <= "00";
|
||||
calc <= '0';
|
||||
fcs_dat <= x"00";
|
||||
wait for 2 ns;
|
||||
rst_hw <= '1';
|
||||
fcs_init <= '1';
|
||||
wait for 50 ns;
|
||||
fcs_init <= '0';
|
||||
|
||||
wait for 50 ns;
|
||||
|
||||
wait for 10 ns;
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"D5");
|
||||
|
||||
sendRMII(x"FF");
|
||||
sendRMII(x"DE");
|
||||
sendRMII(x"AD");
|
||||
sendRMII(x"BE");
|
||||
sendRMII(x"EF");
|
||||
sendRMII(x"00");
|
||||
|
||||
sendRMII(x"01");
|
||||
sendRMII(x"02");
|
||||
sendRMII(x"03");
|
||||
sendRMII(x"04");
|
||||
sendRMII(x"05");
|
||||
sendRMII(x"06");
|
||||
|
||||
sendRMII(x"01");
|
||||
sendRMII(x"02");
|
||||
|
||||
sendRMII(x"AA");
|
||||
|
||||
sendRMII(x"01");
|
||||
sendRMII(x"02");
|
||||
sendRMII(x"03");
|
||||
|
||||
-- Send FCS
|
||||
sendRMII(x"BD");
|
||||
sendRMII(x"9B");
|
||||
sendRMII(x"AC");
|
||||
sendRMII(x"54");
|
||||
|
||||
-- sendRMII(x"AB");
|
||||
|
||||
wait until falling_edge(clk_hw);
|
||||
wait for 10 ns;
|
||||
dv_i <= '0';
|
||||
wait for 200 ns;
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"55");
|
||||
sendRMII(x"D5");
|
||||
|
||||
sendRMII(x"00");
|
||||
sendRMII(x"DE");
|
||||
sendRMII(x"AD");
|
||||
sendRMII(x"BE");
|
||||
sendRMII(x"EF");
|
||||
sendRMII(x"00");
|
||||
|
||||
sendRMII(x"01");
|
||||
sendRMII(x"02");
|
||||
sendRMII(x"03");
|
||||
sendRMII(x"04");
|
||||
sendRMII(x"05");
|
||||
sendRMII(x"06");
|
||||
|
||||
sendRMII(x"01");
|
||||
sendRMII(x"02");
|
||||
|
||||
sendRMII(x"FA");
|
||||
wait until falling_edge(clk_hw);
|
||||
dv_i <= '0';
|
||||
wait;
|
||||
end process sendphy;
|
||||
|
||||
end architecture RTL;
|
94
bench/bench_ethmac_tx.vhd
Normal file
94
bench/bench_ethmac_tx.vhd
Normal file
@@ -0,0 +1,94 @@
|
||||
library ieee;
|
||||
library design;
|
||||
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
use design.all;
|
||||
|
||||
entity bench_ethmac_tx is
|
||||
end entity bench_ethmac_tx;
|
||||
|
||||
architecture RTL of bench_ethmac_tx is
|
||||
signal clk : std_logic;
|
||||
signal rst : std_logic;
|
||||
signal tx_ready : std_logic;
|
||||
signal start_of_frame : std_logic;
|
||||
signal end_of_frame : std_logic;
|
||||
signal data_in : std_logic_vector(7 downto 0);
|
||||
signal data_ack : std_logic;
|
||||
signal abort : std_logic;
|
||||
signal rmii_tx : std_logic_vector(1 downto 0);
|
||||
signal rmii_txen : std_logic;
|
||||
|
||||
begin
|
||||
clock_driver : process
|
||||
constant period : time := 20 ns;
|
||||
begin
|
||||
clk <= '0';
|
||||
wait for period / 2;
|
||||
clk <= '1';
|
||||
wait for period / 2;
|
||||
end process clock_driver;
|
||||
|
||||
ethmac_tx_inst : entity design.ethmac_tx
|
||||
port map(
|
||||
clk_50 => clk,
|
||||
rst => rst,
|
||||
tx_ready => tx_ready,
|
||||
start_of_frame => start_of_frame,
|
||||
end_of_frame => end_of_frame,
|
||||
data_in => data_in,
|
||||
data_ack => data_ack,
|
||||
abort => abort,
|
||||
rmii_tx => rmii_tx,
|
||||
rmii_txen => rmii_txen
|
||||
);
|
||||
|
||||
|
||||
abort <= '0';
|
||||
|
||||
sendpkg : process is
|
||||
procedure sendByte(byte : std_logic_vector(7 downto 0); last : std_logic) is
|
||||
begin
|
||||
wait until rising_edge(clk);
|
||||
data_in <= byte;
|
||||
end_of_frame <= last;
|
||||
wait until data_ack = '1';
|
||||
|
||||
end procedure sendByte;
|
||||
|
||||
begin
|
||||
rst <= '1';
|
||||
wait for 5 ns;
|
||||
rst <= '0';
|
||||
wait for 20 ns;
|
||||
start_of_frame <= '1';
|
||||
sendByte(x"FF", '0');
|
||||
start_of_frame <= '0';
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
|
||||
sendByte(x"AA", '0');
|
||||
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '1');
|
||||
|
||||
wait;
|
||||
|
||||
end process sendpkg;
|
||||
|
||||
end architecture RTL;
|
719
bench/bench_ethmac_tx_rx.vhd
Normal file
719
bench/bench_ethmac_tx_rx.vhd
Normal file
@@ -0,0 +1,719 @@
|
||||
library ieee;
|
||||
library design;
|
||||
use design.all;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
entity bench_ethmac_tx_rx is
|
||||
end entity bench_ethmac_tx_rx;
|
||||
|
||||
architecture bench of bench_ethmac_tx_rx is
|
||||
signal clk : std_logic;
|
||||
signal data_in : std_logic_vector(7 downto 0) := (others => '0');
|
||||
signal end_of_frame : std_logic := '0';
|
||||
signal data_ack : std_logic;
|
||||
signal start_of_frame : std_logic := '0';
|
||||
signal rst : std_logic;
|
||||
signal tx_ready : std_logic;
|
||||
signal rmii_tx : std_logic_vector(1 downto 0);
|
||||
signal rmii_txen : std_logic;
|
||||
signal data_out : std_logic_vector(7 downto 0);
|
||||
signal data_strb : std_logic;
|
||||
signal crc_check_valid : std_logic;
|
||||
signal end_of_frame_rx : std_logic;
|
||||
signal start_of_frame_rx : std_logic;
|
||||
|
||||
begin
|
||||
clock_driver : process
|
||||
constant period : time := 20 ns;
|
||||
begin
|
||||
clk <= '0';
|
||||
wait for period / 2;
|
||||
clk <= '1';
|
||||
wait for period / 2;
|
||||
end process clock_driver;
|
||||
|
||||
ethmac_tx_inst : entity design.ethmac_tx
|
||||
port map(
|
||||
clk_50 => clk,
|
||||
rst => rst,
|
||||
tx_ready => tx_ready,
|
||||
start_of_frame => start_of_frame,
|
||||
end_of_frame => end_of_frame,
|
||||
data_in => data_in,
|
||||
data_ack => data_ack,
|
||||
abort => '0',
|
||||
rmii_tx => rmii_tx,
|
||||
rmii_txen => rmii_txen
|
||||
);
|
||||
|
||||
ethmac_rx_inst : entity design.ethmac_rx
|
||||
port map(
|
||||
clk_50 => clk,
|
||||
rst => rst,
|
||||
rmii_rx => rmii_tx,
|
||||
rmii_dv => rmii_txen,
|
||||
start_of_frame => start_of_frame_rx,
|
||||
end_of_frame => end_of_frame_rx,
|
||||
data_out => data_out,
|
||||
data_strb => data_strb,
|
||||
crc_check_valid => crc_check_valid
|
||||
);
|
||||
|
||||
sendpkg : process is
|
||||
procedure sendByte(byte : std_logic_vector(7 downto 0); last : std_logic) is
|
||||
begin
|
||||
wait until rising_edge(clk);
|
||||
data_in <= byte;
|
||||
end_of_frame <= last;
|
||||
wait until data_ack = '1';
|
||||
|
||||
end procedure sendByte;
|
||||
|
||||
begin
|
||||
rst <= '1';
|
||||
wait for 5 ns;
|
||||
rst <= '0';
|
||||
wait for 20 ns;
|
||||
start_of_frame <= '1';
|
||||
sendByte(x"FF", '0');
|
||||
start_of_frame <= '0';
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '1');
|
||||
wait for 100 ns;
|
||||
end_of_frame <= '0';
|
||||
wait for 1 us;
|
||||
start_of_frame <= '1';
|
||||
sendByte(x"FF", '0');
|
||||
start_of_frame <= '0';
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '1');
|
||||
|
||||
wait for 100 ns;
|
||||
end_of_frame <= '0';
|
||||
wait for 1 us;
|
||||
start_of_frame <= '1';
|
||||
sendByte(x"FF", '0');
|
||||
start_of_frame <= '0';
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '1');
|
||||
|
||||
wait for 100 ns;
|
||||
end_of_frame <= '0';
|
||||
wait for 1 us;
|
||||
start_of_frame <= '1';
|
||||
sendByte(x"05", '0');
|
||||
start_of_frame <= '0';
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '0');
|
||||
sendByte(x"04", '0');
|
||||
sendByte(x"05", '0');
|
||||
sendByte(x"06", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"AA", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"DE", '0');
|
||||
sendByte(x"AD", '0');
|
||||
sendByte(x"BE", '0');
|
||||
sendByte(x"EF", '0');
|
||||
sendByte(x"00", '0');
|
||||
sendByte(x"01", '0');
|
||||
sendByte(x"02", '0');
|
||||
sendByte(x"03", '1');
|
||||
wait;
|
||||
end process sendpkg;
|
||||
|
||||
end architecture bench;
|
58
bench/bench_led_demo.vhd
Normal file
58
bench/bench_led_demo.vhd
Normal file
@@ -0,0 +1,58 @@
|
||||
library ieee;
|
||||
library design;
|
||||
use design.all;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
entity bench_led_demo is
|
||||
end entity bench_led_demo;
|
||||
|
||||
architecture RTL of bench_led_demo is
|
||||
signal clk : std_logic;
|
||||
signal data_out : std_logic_vector(3 downto 0);
|
||||
signal rst_hw : std_logic;
|
||||
signal rmii_tx : std_logic_vector(1 downto 0);
|
||||
signal rmii_txen : std_logic;
|
||||
signal rmii_rx : std_logic_vector(1 downto 0);
|
||||
signal rmii_rxen : std_logic;
|
||||
signal mdc : std_logic_vector(1 downto 0);
|
||||
signal mdio : std_logic_vector(1 downto 0);
|
||||
|
||||
begin
|
||||
clock_driver : process
|
||||
constant period : time := 20 ns;
|
||||
begin
|
||||
clk <= '0';
|
||||
wait for period / 2;
|
||||
clk <= '1';
|
||||
wait for period / 2;
|
||||
end process clock_driver;
|
||||
|
||||
rmii_rx <= rmii_tx;
|
||||
rmii_rxen <= rmii_txen;
|
||||
|
||||
rstegen : process is
|
||||
begin
|
||||
rst_hw <= '0';
|
||||
wait for 5 ns;
|
||||
rst_hw <= '1';
|
||||
wait;
|
||||
end process rstegen;
|
||||
|
||||
|
||||
leddemo_inst : entity design.leddemo
|
||||
port map(
|
||||
clk_tx => clk,
|
||||
clk_rx => clk,
|
||||
data_in => "1010",
|
||||
data_out => data_out,
|
||||
rst_hw => rst_hw,
|
||||
rmii_tx => rmii_tx,
|
||||
rmii_txen => rmii_txen,
|
||||
rmii_rx => rmii_rx,
|
||||
rmii_rxen => rmii_rxen,
|
||||
mdc => mdc,
|
||||
mdio => mdio
|
||||
);
|
||||
|
||||
end architecture RTL;
|
Reference in New Issue
Block a user