OpenCores
URL https://opencores.org/ocsvn/rio/rio/trunk

Subversion Repositories rio

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /rio/trunk/rtl
    from Rev 7 to Rev 8
    Reverse comparison

Rev 7 → Rev 8

/vhdl/RioSerial.vhd
45,6 → 45,118
 
-------------------------------------------------------------------------------
-- RioSerial
--
-- clk - System clock.
-- areset_n - System reset. Asynchronous, active low.
--
-- portLinkTimeout_i - The number of ticks to wait for a packet-accepted before
-- a timeout occurrs.
-- linkInitialized_o - Indicates if a link partner is answering with valid
-- status-control-symbols.
-- inputPortEnable_i - Activate the input port for non-maintenance packets. If
-- deasserted, only non-maintenance packets are allowed.
-- outputPortEnable_i - Activate the output port for non-maintenance packets.
-- If deasserted, only non-maintenance packets are allowed.
--
-- This interface makes it possible to read and write ackId in both outbound
-- and inbound directions. All input signals are validated by localAckIdWrite.
-- localAckIdWrite_i - Indicate if a localAckId write operation is ongoing.
-- Usually this signal is high one tick.
-- clrOutstandingAckId_i - Clear outstanding ackId, i.e. reset the transmission
-- window. The signal is only read if localAckIdWrite_i is high.
-- inboundAckId_i - The value to set the inbound ackId (the ackId that the
-- next inbound packet should have) to. This signal is only read if localAckIdWrite
-- is high.
-- outstandingAckId_i - The value to set the outstanding ackId (the ackId
-- transmitted but not acknowledged) to. This signal is only read if localAckIdWrite
-- is high.
-- outboundAckId_i - The value to set the outbound ackId (the ackId that the
-- next outbound packet will have) to. This signal is only read if localAckIdWrite
-- is high.
-- inboundAckId_o - The current inbound ackId.
-- outstandingAckId_o - The current outstanding ackId.
-- outboundAckId_o - The current outbound ackId.
--
-- This is the interface to the packet buffering sublayer.
-- The window signals are used to send packets without removing them from the
-- memory storage. This way, many packet can be sent without awaiting
-- packet-accepted symbols and if a packet-accepted gets lost, it is possible
-- to revert and resend a packet. This is achived by reading readWindowEmpty
-- for new packet and asserting readWindowNext when a packet has been sent.
-- When the packet-accepted is received, readFrame should be asserted to remove the
-- packet from the storage. If a packet-accepted is missing, readWindowReset is
-- asserted to set the current packet to read to the one that has not received
-- a packet-accepted.
-- readFrameEmpty_i - Indicate if a packet is ready in the outbound direction.
-- Once deasserted, it is possible to read the packet content using
-- readContent_o to update readContentData and readContentEnd.
-- readFrame_o - Assert this signal for one tick to discard the oldest packet.
-- It should be used when a packet has been fully read, a linkpartner has
-- accepted it and the resources occupied by it should be returned to be
-- used for new packets.
-- readFrameRestart_o - Assert this signal to restart the reading of the
-- current packet. readContentData and readContentEnd will be reset to the
-- first content of the packet.
-- readFrameAborted_i - This signal is asserted if the current packet was
-- aborted while it was written. It is used when a transmitter starts to send a
-- packet before it has been fully received and it is cancelled before it is
-- completed. A one tick asserted readFrameRestart signal resets this signal.
-- readWindowEmpty_i - Indicate if there are more packets to send.
-- readWindowReset_o - Reset the current packet to the oldest stored in the memory.
-- readWindowNext_o - Indicate that a new packet should be read. Must only be
-- asserted if readWindowEmpty is deasserted. It should be high for one tick.
-- readContentEmpty_i - Indicate if there are any packet content to be read.
-- This signal is updated directly when packet content is written making it
-- possible to read packet content before the full packet has been written to
-- the memory storage.
-- readContent_o - Update readContentData and readContentEnd.
-- readContentEnd_i - Indicate if the end of the current packet has been
-- reached. When asserted, readContentData is not valid.
-- readContentData_i - The content of the current packet.
-- writeFrameFull_i - Indicate if the inbound packet storage is ready to accept
-- a new packet.
-- writeFrame_o - Indicate that a new complete inbound packet has been written.
-- writeFrameAbort_o - Indicate that the current packet is aborted and that all
-- data written for this packet should be discarded.
-- writeContent_o - Indicate that writeContentData is valid and should be
-- written into the packet content storage.
-- writeContentData_o - The content to write to the packet content storage.
--
-- This is the interface to the PCS (Physical Control Sublayer). Four types of
-- symbols exist, idle, control, data and error.
-- Idle symbols are transmitted when nothing else can be transmitted. They are
-- mainly intended to enforce a timing on the transmitted symbols. This is
-- needed to be able to guarantee that a status-control-symbol is transmitted
-- at least once every 256 symbol.
-- Control symbols contain control-symbols as described by the standard.
-- Data symbols contains a 32-bit fragment of a RapidIO packet.
-- Error symbols indicate that a corrupted symbol was received. This could be
-- used by a PCS layer to indicate that a transmission error was detected and
-- that the above layers should send link-requests to ensure the synchronism
-- between the link-partners.
-- The signals in this interface are:
-- portInitialized_i - An asserted signal on this pin indicates that the PCS
-- layer has established synchronization with the link and is ready to accept
-- symbols.
-- outboundSymbolEmpty_o - An asserted signal indicates that there are no
-- outbound symbols to read. Once deasserted, outboundSymbol_o will be
-- already be valid. This signal will be updated one tick after
-- outboundSymbolRead_i has been asserted.
-- outboundSymbolRead_i - Indicate that outboundSymbol_o has been read and a
-- new value could be accepted. It should be active for one tick.
-- outboundSymbol_o - The outbound symbol. The two MSB bits are the type of the
-- symbol.
-- bit 34-33
-- 00=IDLE, the rest of the bits are not used.
-- 01=CONTROL, the control symbols payload (24 bits) are placed in the MSB
-- part of the symbol data.
-- 10=ERROR, the rest of the bits are not used.
-- 11=DATA, all the remaining bits contain the data-symbol payload.
-- inboundSymbolFull_o - An asserted signal indicates that no more inbound
-- symbols can be accepted.
-- inboundSymbolWrite_i - Indicate that inboundSymbol_i contains valid
-- information that should be forwarded. Should be active for one tick.
-- inboundSymbol_i - The inbound symbol. See outboundSymbol_o for formating.
-------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.