rmii: Do not prepend sync header

This is done by the MAC.
This commit is contained in:
Markus Koch 2025-09-23 12:50:29 +02:00
parent 3c592dbd23
commit faa915824a

View File

@ -182,7 +182,7 @@ begin
signal temp_tx_data_en : std_logic; signal temp_tx_data_en : std_logic;
signal temp_tx_data_ack : std_logic; signal temp_tx_data_ack : std_logic;
type state_t is (IDLE, HEADER, DATA, IPG); type state_t is (IDLE, DATA, IPG);
signal state : state_t; signal state : state_t;
signal sr : byte; signal sr : byte;
signal dibit_cnt : integer range 0 to 3; signal dibit_cnt : integer range 0 to 3;
@ -250,25 +250,14 @@ begin
if byte_done then if byte_done then
if byte_cnt > 0 then if byte_cnt > 0 then
byte_cnt <= byte_cnt - 1; byte_cnt <= byte_cnt - 1;
else
end if; end if;
end if; end if;
case state is case state is
when IDLE => when IDLE =>
sr <= x"55"; sr <= temp_tx_data;
byte_cnt <= SYNC_HEADER_SIZE_BYTES - 1;
dibit_cnt <= 0; dibit_cnt <= 0;
if temp_tx_data_en then if temp_tx_data_en then
state <= HEADER;
end if;
when HEADER =>
sr <= x"55";
if not temp_tx_data_en then
state <= IDLE;
elsif block_done then
sr <= x"D5";
state <= DATA; state <= DATA;
end if; end if;
@ -291,10 +280,10 @@ begin
byte_done <= '1' when dibit_cnt = 3 else '0'; byte_done <= '1' when dibit_cnt = 3 else '0';
block_done <= '1' when (byte_cnt = 0) and (byte_done = '1') else '0'; block_done <= '1' when (byte_cnt = 0) and (byte_done = '1') else '0';
temp_tx_data_ack <= '1' when (state = DATA) and (byte_done = '1') and (temp_tx_data_en = '1') else '0'; temp_tx_data_ack <= '1' when (state = DATA) and (byte_done = '1') and (temp_tx_data_en = '1') else '0';
phy_out.tx_active <= '1' when (state = HEADER) or (state = DATA) else '0'; phy_out.tx_active <= '1' when state = DATA else '0';
rmii_txd <= sr(1 downto 0); rmii_txd <= sr(1 downto 0);
rmii_tx_en <= '1' when (state = HEADER) or (state = DATA) else '0'; rmii_tx_en <= '1' when state = DATA else '0';
end block transmitter; end block transmitter;
end architecture rtl; end architecture rtl;