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

Subversion Repositories rio

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 31 to Rev 32
    Reverse comparison

Rev 31 → Rev 32

/rio/branches/singleSymbol/rtl/vhdl/RioSerial.vhd
177,11 → 177,8
-- information that should be forwarded. Should be active for one tick.
-- inboundSymbol_i - The inbound symbol. See outboundSymbol_o for formating.
-------------------------------------------------------------------------------
-- REMARK: Multi-symbol support is not fully supported yet...
-- REMARK: Optimize the piggy-backing of symbols from the receiver, use the
-- number of words that remain to determine when to insert a control-symbol
-- into a stream of data-symbols...
-- REMARK: Optimize the transmitter better, too low performance...
-- REMARK: Remove multi-symbol support to make the code more readable...
-- REMARK: Make more signals synchronous...
 
library ieee;
use ieee.std_logic_1164.all;
986,10 → 983,11
constant FRAME_FIRST : std_logic_vector(3 downto 0) := "0011";
constant FRAME_MIDDLE : std_logic_vector(3 downto 0) := "0100";
constant FRAME_INSERT_IDLE : std_logic_vector(3 downto 0) := "0101";
constant FRAME_LAST : std_logic_vector(3 downto 0) := "0110";
constant FRAME_START_CONTINUE : std_logic_vector(3 downto 0) := "0111";
constant FRAME_END : std_logic_vector(3 downto 0) := "1000";
constant FRAME_DISCARD : std_logic_vector(3 downto 0) := "1001";
constant FRAME_INSERT_WAIT : std_logic_vector(3 downto 0) := "0110";
constant FRAME_LAST : std_logic_vector(3 downto 0) := "0111";
constant FRAME_START_CONTINUE : std_logic_vector(3 downto 0) := "1000";
constant FRAME_END : std_logic_vector(3 downto 0) := "1001";
constant FRAME_DISCARD : std_logic_vector(3 downto 0) := "1010";
component Crc5ITU is
port(
1503,7 → 1501,7
frameContent_o <= readContentData_i;
frameState_o <= FRAME_MIDDLE;
when FRAME_MIDDLE =>
when FRAME_MIDDLE | FRAME_INSERT_WAIT =>
---------------------------------------------------------------
-- The frame has not been fully sent.
-- Send a data symbol until the last part of the packet is
1520,12 → 1518,15
-- The packet is ending.
readWindowNextOut <= '1';
frameState_o <= FRAME_LAST;
elsif (rxControlEmpty_i = '0') then
elsif ((frameState_i = FRAME_MIDDLE) and (rxControlEmpty_i = '0')) then
-- There is a pending control-symbol from the receiver.
-- This must only be entered if the previous state was a data
-- symbol, not if an idle symbol was inserted.
frameState_o <= FRAME_INSERT_IDLE;
else
-- The packet is not ending.
readContentOut <= '1';
frameState_o <= FRAME_MIDDLE;
end if;
 
when FRAME_INSERT_IDLE =>
1536,7 → 1537,7
 
symbolDataOut <= '0';
readContentOut <= '1';
frameState_o <= FRAME_MIDDLE;
frameState_o <= FRAME_INSERT_WAIT;
when FRAME_LAST =>
-----------------------------------------------------------------

powered by: WebSVN 2.1.0

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