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

Subversion Repositories rio

[/] [rio/] [trunk/] [rtl/] [vhdl/] [RioSerial.vhd] - Diff between revs 4 and 8

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 4 Rev 8
Line 43... Line 43...
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
 
 
 
 
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- RioSerial
-- 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;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.numeric_std.all;
use work.rio_common.all;
use work.rio_common.all;

powered by: WebSVN 2.1.0

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