Line 1386... |
Line 1386... |
(readContentData_i(19 downto 16) = FTYPE_MAINTENANCE_CLASS)) then
|
(readContentData_i(19 downto 16) = FTYPE_MAINTENANCE_CLASS)) then
|
-- Packet is allowed.
|
-- Packet is allowed.
|
|
|
-- Check if the link is able to accept the new frame.
|
-- Check if the link is able to accept the new frame.
|
if ((bufferStatus_i /= "00000") and
|
if ((bufferStatus_i /= "00000") and
|
((unsigned(ackIdWindow_i) - unsigned(ackId_i)) /= 31)) then
|
((unsigned(ackIdWindow_i)+1) /= unsigned(ackId_i))) then
|
-- New data is available for transmission and there
|
-- New data is available for transmission and there
|
-- is room to receive it at the other side.
|
-- is room to receive it at the other side.
|
-- The packet may be transmitted.
|
-- The packet may be transmitted.
|
|
|
-- Indicate that a control symbol has been sent to start the
|
-- Indicate that a control symbol has been sent to start the
|
Line 1427... |
Line 1427... |
symbolDataOut <= '1';
|
symbolDataOut <= '1';
|
symbolDataContentOut <=
|
symbolDataContentOut <=
|
std_logic_vector(ackIdWindow_i) & "0" &
|
std_logic_vector(ackIdWindow_i) & "0" &
|
frameContent_i((32*NUMBER_WORDS)-7 downto (32*(NUMBER_WORDS-1)));
|
frameContent_i((32*NUMBER_WORDS)-7 downto (32*(NUMBER_WORDS-1)));
|
|
|
-- REMARK: Code frameWordCounter as 0=1 or 1=1???
|
|
if (unsigned(frameWordCounter_i) /= 0) then
|
if (unsigned(frameWordCounter_i) /= 0) then
|
frameWordCounter_o <=
|
frameWordCounter_o <=
|
std_logic_vector(unsigned(frameWordCounter_i) - 1);
|
std_logic_vector(unsigned(frameWordCounter_i) - 1);
|
frameContent_o <=
|
frameContent_o <=
|
frameContent_i((32*(NUMBER_WORDS-1))-1 downto 0) & x"00000000";
|
frameContent_i((32*(NUMBER_WORDS-1))-1 downto 0) & x"00000000";
|
Line 1512... |
Line 1511... |
|
|
-- Note that the packet must be ended if the link-partner
|
-- Note that the packet must be ended if the link-partner
|
-- cannot receive it.
|
-- cannot receive it.
|
if ((readWindowEmpty_i = '0') and
|
if ((readWindowEmpty_i = '0') and
|
(bufferStatus_i /= "00000") and
|
(bufferStatus_i /= "00000") and
|
((unsigned(ackIdWindow_i) - unsigned(ackId_i)) /= 31)) then
|
((unsigned(ackIdWindow_i)+2) /= unsigned(ackId_i))) then
|
readContentOut <= '1';
|
readContentOut <= '1';
|
frameState_o <= FRAME_START;
|
frameState_o <= FRAME_START;
|
else
|
else
|
frameState_o <= FRAME_END;
|
frameState_o <= FRAME_END;
|
end if;
|
end if;
|
Line 1525... |
Line 1524... |
when FRAME_END =>
|
when FRAME_END =>
|
-----------------------------------------------------------------
|
-----------------------------------------------------------------
|
--
|
--
|
-----------------------------------------------------------------
|
-----------------------------------------------------------------
|
|
|
-- Start a new frame the next time.
|
|
frameState_o <= FRAME_IDLE;
|
|
|
|
-- Send a control symbol to end the packet.
|
-- Send a control symbol to end the packet.
|
symbolControlEndOut <= '1';
|
symbolControlEndOut <= '1';
|
|
|
|
-- Start a new frame the next time.
|
|
frameState_o <= FRAME_IDLE;
|
|
|
when FRAME_DISCARD =>
|
when FRAME_DISCARD =>
|
---------------------------------------------------------------
|
---------------------------------------------------------------
|
--
|
--
|
---------------------------------------------------------------
|
---------------------------------------------------------------
|
-- The packet should be discarded.
|
-- The packet should be discarded.
|