URL
https://opencores.org/ocsvn/tcp_socket/tcp_socket/trunk
Subversion Repositories tcp_socket
[/] [tcp_socket/] [trunk/] [TCPIP.rst] - Rev 2
Go to most recent revision | Compare with Previous | Blame | View Log
Chips-2.0 Demo for SP605 Development Card=========================================:Author: Jonathan P Dawson:Date: 2013-10-17:email: chips@jondawson.org.ukThis project implements a TCP/IP stack. The TCP/IP stack acts as a server, andcan accept a single connection to a TCP port. The connection is provided as abidirectional stream of data to the application. The following protocols are supported:+ ARP request/response (with 16 level cache)+ ICMP echo request/response (ping)+ TCP/IP socketSynthesis Estimate==================The TCP/IP server consumes around 800 LUTs and 300 Flip-Flops in a Xilinx Spartan 6 device.Dependencies============The stack is implemented in C, and needs Chips-2.0 to compile it into a Verilogmodule.Source Files============The TCP/IP stack is provided by two source files:+ source/server.h+ source/server.cConfiguration=============The following parameters can be configured at compile time within source/server.h:+ Local Ethernet MAC address+ Local IP Address+ Local TCP Port numberCompile=======Compile into a Verilog module (server.v) using the following command::$ chip2/c2verilog source/server.vInterface=========Ethernet Interface------------------The Ethernet interface consists of two streams of data:+ An input, input_eth_rx.+ An output, output_eth_tx.Both streams are 16 bits wide, and use the following protocol:+------+-----------------+| word | designation |+------+-----------------+| 0 | length in bytes |+------+-----------------+| n | data |+------+-----------------+Socket Interface----------------The socket interface consists of two streams of data:+ An input, input_socket.+ An output, output_socket.Both streams are 16 bits wide, and use the following protocol:+------+-----------------+| word | designation |+------+-----------------+| 0 | length in bytes |+------+-----------------+| n | data |+------+-----------------+Stream Interconnect Conventions===============================The main aims of the interface are:- To be simple to implement.- Add little performance/logic overhead.- Allow designs to grow without adding extra levels of asynchronous logic.- Easy to interface with standard interconnects.::RST >-o-----------------------------+CLK >-+-o-------------------------+ || | | || | +-----------+ | | +--------------+| | | TX | | | | RX || +---> | | +-----> |+-----> | +-------> || | | || | <BUS_NAME> | || out >=================> in || | <BUS_NAME>_STB | || out >-----------------> in || | <BUS_NAME>_ACK | || in <-----------------< out || | | |+-----------+ +--------------+Global Signals--------------+------+-----------+------+-------------+| Name | Direction | Type | Description |+------+-----------+------+-------------+| CLK | input | bit | Clock |+------+-----------+------+-------------+| RST | input | bit | Reset |+------+-----------+------+-------------+Interconnect Signals--------------------+----------------+-----------+------+-----------------------------------------------------------+| Name | Direction | Type | Description |+----------------+-----------+------+-----------------------------------------------------------+| <BUS_NAME> | TX to RX | bus | Payload Data |+----------------+-----------+------+-----------------------------------------------------------+| <BUS_NAME>_STB | TX to RX | bit | '1' indicates that payload data is valid and TX is ready. |+----------------+-----------+------+-----------------------------------------------------------+| <BUS_NAME>_ACK | TX to RX | bit | '1' indicates that RX is ready. |+----------------+-----------+------+-----------------------------------------------------------+Interconnect Bus Transaction----------------------------- Both transmitter and receiver shall be synchronised to the '0' -> '1' transition of CLK.- If RST is set to '1' upon the '0' -> '1' transition of clock the transmitter shall terminate any active bus transaction and set <BUS_NAME>_STB to '0'.- If RST is set to '1' upon the '0' -> '1' transition of clock the receiver shall terminate any active bus transaction and set <BUS_NAME>_ACK to '0'.- If RST is set to '0', normal operation shall commence as follows:- The transmitter may insert wait states on the bus by setting <BUS_NAME>_STB '0'.- The transmitter shall set <BUS_NAME>_STB to '1' to signify that data is valid.- Once <BUS_NAME>_STB has been set to '1', it shall remain at '1' until the transaction completes.- The transmitter shall ensure that <BUS_NAME> contains valid data for the entire period that <BUS_NAME>_STB is '1'.- The transmitter may set <BUS_NAME> to any value when <BUS_NAME>_STB is '0'.- The receiver may insert wait states on the bus by setting <BUS_NAME>_ACK to '0'.- The receiver shall set <BUS_NAME>_ACK to '1' to signify that it is ready to receive data.- Once <BUS_NAME>_ACK has been set to '1', it shall remain at '1' until the transaction completes.- Whenever <BUS_NAME>_STB is '1' and <BUS_NAME>_ACK are '1', a bus transaction shall complete on the following '0' -> '1' transition of CLK.::RST--------------------------------------------------------------- - - - - - - - - - - - - - -CLK | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |- - - - - - - - - - - - - - - ------ ------- ------------------------------------------------<BUS_NAME> X VALID X----- ------- -------------------------------------------------------<BUS_NAME>_STB | |----- ---------------------------------------------------<BUS_NAME>_ACK | |--------- ------------------------------------------------^^^^ RX adds wait states^^^^ Data transfersRST--------------------------------------------------------------- - - - - - - - - - - - - - -CLK | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |- - - - - - - - - - - - - - - ------ ------- ------------------------------------------------<BUS_NAME> X VALID X----- ------- ---------------------------------------------------<BUS_NAME>_STB | |--------- -------------------------------------------------------<BUS_NAME>_ACK | |----- ------------------------------------------------^^^^ TX adds wait states^^^^ Data transfers..- Both the transmitter and receiver may commence a new transaction without inserting any wait states.::RST--------------------------------------------------------------- - - - - - - - - - - - - - -CLK | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |- - - - - - - - - - - - - - - ------ ------- ---- ---- --------------------------------------<BUS_NAME> X D0 X D1 X D2 X----- ------- ---- ---- ---------------------------------------------------<BUS_NAME>_STB | |--------- -------------------------------------------------------<BUS_NAME>_ACK | |----- --------------------------------------^^^^ TX adds wait states^^^^ Data transfers^^^^ STB and ACK needn't return to 0 between data words..- The receiver may delay a transaction by inserting wait states until the transmitter indicates that data is available.- The transmitter shall not delay a transaction by inserting wait states until the receiver is ready to accept data.- Deadlock would occur if both the transmitter and receiver delayed a transaction until the other was ready.
Go to most recent revision | Compare with Previous | Blame | View Log
