mirror of
https://github.com/aolofsson/oh.git
synced 2025-01-30 02:32:53 +08:00
Adding images, rearranging
This commit is contained in:
parent
a68a094285
commit
b5e53f8196
203
elink/README.md
203
elink/README.md
@ -1,76 +1,57 @@
|
|||||||
|
![alt tag](docs/elink_header.png)
|
||||||
|
|
||||||
ELINK INTRODUCTION
|
ELINK INTRODUCTION
|
||||||
=====================================
|
=====================================
|
||||||
The "elink" is a low-latency/high-speed interface for communicating between
|
The "elink" is a low-latency/high-speed interface for communicating between
|
||||||
FPGAs and ASICs (such as Epiphany) that uses 24 signals for full duplex
|
FPGAs and ASICs (such as Epiphany) that uses 24 signals for full duplex
|
||||||
communication. The interface can achieve a peak throughput of 8 Gbit/s (duplex)
|
communication. The interface can achieve a peak throughput of 8 Gbit/s (duplex)
|
||||||
in modern FPGAs using differential LVDS signaling.
|
in modern FPGAs using differential LVDS signaling.
|
||||||
|
|
||||||
###I/O INTERFACE
|
|
||||||
|
|
||||||
SIGNAL |DIR| DESCRIPTION
|
|
||||||
------------------|---|--------------
|
|
||||||
txo_frame_{p/n} | O | TX packet framing signal
|
|
||||||
txo_lclk{p/n} | O | TX clock aligned in the center of the data eye
|
|
||||||
txo_data{p/n}[7:0]| O | TX dual data rate (DDR) that transmits packet
|
|
||||||
txi_rd_wait{p/n} | I | TX push back (input) for read transactions
|
|
||||||
txi_wd_wait{p/n} | I | TX push back (input) for write transactions
|
|
||||||
rxi_frame{p/n} | I | RX packet framing signal.
|
|
||||||
rxi_lclk{p/n} | I | RX clock aligned in the center of the data eye
|
|
||||||
rxi_data{p/n}[7:0]| I | RX dual data rate (DDR) that transmits packet
|
|
||||||
rxo_rd_wait{p/n} | O | RX push back (output) for read transactions
|
|
||||||
rxo_wr_wait{p/n} | O | RX push back (output) for write transactions
|
|
||||||
|
|
||||||
|
###STRUCTURE
|
||||||
|
|
||||||
|
![alt tag](docs/elink.png)
|
||||||
|
|
||||||
###SYSTEM SIDE INTERFACE
|
```
|
||||||
|
elink
|
||||||
SIGNAL |DIR| DESCRIPTION
|
|----ereset (elink and chip reset)
|
||||||
------------------|---|--------------
|
|----ecfg_clocks (controls clock and reset)
|
||||||
reset | I | Reset input
|
|----eclocks (PLL/divider instantiation)
|
||||||
clkin | I | Clock input for CCLK/LCLK PLL
|
|----ecfg_cdc (etx-->erx path for configuration registe access)
|
||||||
sys_clk | I | System clock for FIFOs
|
|----erx (receive path)
|
||||||
clkbypass[2:0] | I | Clocks inputs for bypassing PLL
|
| |----erx_io (chip level I/O interface
|
||||||
testmode | I | Puts elink transmitter in test mode
|
| |----erx_protocol (elink protocol-->emesh packet converter)
|
||||||
rx_lclk_div4 | O | rxi_lclk clock divided by 4
|
| |----erx_remap (simple dstaddr remapping)
|
||||||
tx_lclk_div4 | O | txo_lclk clock divided by 4
|
| |----erx_mmu (advanced dstaddr mapping)
|
||||||
embox_not_empty | O | Mailbox not empty (connect to interrupt line)
|
| |----erx_cfgif (configuration interface)
|
||||||
embox_full | O | Mailbox is full indicator
|
| |----erx_cfg (basic rx config registers)
|
||||||
timeout | O | Read request timeout indicator
|
| |----emailbox (fifo mailbox)
|
||||||
txwr_access | I | TX write
|
| |----erx_dma (DMA master)
|
||||||
txwr_packet[103:0]| I | TX write packet
|
| |----erx_arbiter (sends rx transaction to WR/RD/RR fifo)
|
||||||
txwr_wait | O | TX write wait (pushback)
|
| |----rxwr_fifo (write fifo)
|
||||||
txrd_access | I | TX read
|
| |----rxrd_fifo (read request fifo)
|
||||||
txrd_packet[103:0]| I | TX read packet
|
| |----rxrr_fifo (read response fifo)
|
||||||
txrd_wait | O | TX read wait (pushback)
|
|----etx (transmit path)
|
||||||
txrr_access | I | TX read-response
|
| |----etx_io (chip level I/O interface)
|
||||||
txrr_packet[103:0]| I | TX read-response packet
|
| |----etx_protocol (emesh-->elink protocol converter)
|
||||||
txrr_wait | O | TX read-response wait (pushback)
|
| |----etx_remap (simple dstaddr remapping)
|
||||||
rxwr_access | O | RX write
|
| |----etx_mmu (advanced dstaddr mapping)
|
||||||
rxwr_packet[103:0]| O | RX write packet
|
| |----etx_cfgif (configuration interface)
|
||||||
txwr_wait | I | RX write write (pushback)
|
| |----etx_cfg (basic rx config registers)
|
||||||
rxrd_access | O | RX read
|
| |----etx_dma (DMA master)
|
||||||
rxrd_packet[103:0]| O | RX read packet
|
| |----etx_arbiter (sends rx transaction to WR/RD/RR fifo)
|
||||||
rxrd_wait | I | RX read wait (pushback)
|
| |----txwr_fifo (write fifo)
|
||||||
rxrr_access | O | RX read-response
|
| |----txrd_fifo (read request fifo)
|
||||||
rxrr_packet[103:0]| O | RX read-response packet
|
| |----txrr_fifo (read response fifo)
|
||||||
rxrr_wait | I | RX read-response wait (pushback)
|
|--------------------------------------------------------------------
|
||||||
|
```
|
||||||
###EPIPHANY SIGNALS
|
|
||||||
|
|
||||||
SIGNAL |DIR| DESCRIPTION
|
|
||||||
------------------|---|--------------
|
|
||||||
cclk_{p/n} | O | Epiphany differential high speed clock
|
|
||||||
chip_resetb | O | Epiphany reset (active low)
|
|
||||||
chipid[11:0] | O | Epiphany chip-id selector
|
|
||||||
|
|
||||||
The Epiphany specific output signals can be left unconnected in systems that
|
|
||||||
don't include Epiphany chips.
|
|
||||||
|
|
||||||
###I/O PROTOCOL
|
###I/O PROTOCOL
|
||||||
The default protocol for the elink is the Epiphany chip to chip interface.
|
The default protocol used is is the eLink Epiphany chip-to-chip interface.
|
||||||
The Epiphany protocol uses a source synchronous clocks, a packet frame signal,
|
The Epiphany protocol uses a source synchronous clocks, a packet frame signal,
|
||||||
an 8-bit wide dual data rate data bus, and separate read and write packet wait
|
an 8-bit wide dual data rate data bus, and separate read and write packet wait
|
||||||
signals to implement a gluless point to point link.
|
signals to implement a gluless point to point link. The protocol can "easily"
|
||||||
|
be changed by modifying or replacing the etx_protocol and erx_protcol blocks.
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
___ ___ ___ ___ ___ ___ ___ ___
|
___ ___ ___ ___ ___ ___ ___ ___
|
||||||
@ -130,7 +111,7 @@ completed without interruption.
|
|||||||
###SYSTEM SIDE PROTOCOL
|
###SYSTEM SIDE PROTOCOL
|
||||||
|
|
||||||
Communication between the elink and the system side (i.e. the AXI side) is done
|
Communication between the elink and the system side (i.e. the AXI side) is done
|
||||||
using the rx and tx parallel interfaces. Read, write, and read response
|
using 104 bit parallel interfaces. Read, write, and read response
|
||||||
transactions have independent channels into the elink. Data from a receiver
|
transactions have independent channels into the elink. Data from a receiver
|
||||||
read request is expected to return on the read response transmit chanel.
|
read request is expected to return on the read response transmit chanel.
|
||||||
|
|
||||||
@ -148,40 +129,70 @@ has the following bit ordering.
|
|||||||
data[31:0] | [71:40] | Data for write transaction, data for read response
|
data[31:0] | [71:40] | Data for write transaction, data for read response
|
||||||
srcaddr[31:0] | [103:72]| Return address for read-request, upper data for write
|
srcaddr[31:0] | [103:72]| Return address for read-request, upper data for write
|
||||||
|
|
||||||
###INTERNAL STRUCTURE
|
|
||||||
```
|
|
||||||
elink
|
###Clocking and Reset
|
||||||
|----ereset (elink and chip reset)
|
The elink has the following clock domains:
|
||||||
|----ecfg_clocks (controls clock and reset)
|
|
||||||
|----eclocks (PLL/divider instantiation)
|
*sys_clk : used by the axi interfaces
|
||||||
|----ecfg_cdc (etx-->erx path for configuration registe access)
|
*rxi_lclk_div4: Used for the erx_core logic
|
||||||
|----erx (receive path)
|
*txo_lclk_div: Used for the etx_core logic
|
||||||
| |----erx_io (chip level I/O interface
|
*rxi_lclk: Used by the erx_io for clocking in dual data rate data at pins
|
||||||
| |----erx_protocol (elink protocol-->emesh packet converter)
|
*txo_lclk: Used by the etx_io for transmitting dual rate data at pins
|
||||||
| |----erx_remap (simple dstaddr remapping)
|
*txo_lclk90: The txo_lclk phase shifted by 90 degrees. Used by RX to sample the dual data rate data.
|
||||||
| |----erx_mmu (advanced dstaddr mapping)
|
|
||||||
| |----erx_cfgif (configuration interface)
|
|
||||||
| |----erx_cfg (basic rx config registers)
|
###I/O INTERFACE
|
||||||
| |----erx_mailbox (fifo mailbox)
|
|
||||||
| |----erx_dma (DMA master)
|
SIGNAL |DIR| DESCRIPTION
|
||||||
| |----erx_disty (sends rx transaction to WR/RD/RR fifo)
|
------------------|---|--------------
|
||||||
| |----rxwr_fifo (write fifo)
|
txo_frame_{p/n} | O | TX packet framing signal
|
||||||
| |----rxrd_fifo (read request fifo)
|
txo_lclk{p/n} | O | TX clock aligned in the center of the data eye
|
||||||
| |----rxrr_fifo (read response fifo)
|
txo_data{p/n}[7:0]| O | TX dual data rate (DDR) that transmits packet
|
||||||
|----etx (transmit path)
|
txi_rd_wait{p/n} | I | TX push back (input) for read transactions
|
||||||
| |----etx_io (chip level I/O interface)
|
txi_wd_wait{p/n} | I | TX push back (input) for write transactions
|
||||||
| |----etx_protocol (emesh-->elink protocol converter)
|
rxi_frame{p/n} | I | RX packet framing signal.
|
||||||
| |----etx_remap (simple dstaddr remapping)
|
rxi_lclk{p/n} | I | RX clock aligned in the center of the data eye
|
||||||
| |----etx_mmu (advanced dstaddr mapping)
|
rxi_data{p/n}[7:0]| I | RX dual data rate (DDR) that transmits packet
|
||||||
| |----etx_cfgif (configuration interface)
|
rxo_rd_wait{p/n} | O | RX push back (output) for read transactions
|
||||||
| |----etx_cfg (basic rx config registers)
|
rxo_wr_wait{p/n} | O | RX push back (output) for write transactions
|
||||||
| |----etx_dma (DMA master)
|
|
||||||
| |----etx_arbiter (sends rx transaction to WR/RD/RR fifo)
|
###AXI INTERFACE
|
||||||
| |----txwr_fifo (write fifo)
|
When used win the "emax" and "esaxi" interface, standard AXI interfaces
|
||||||
| |----txrd_fifo (read request fifo)
|
|
||||||
| |----txrr_fifo (read response fifo)
|
###SYSTEM SIDE INTERFACE
|
||||||
|--------------------------------------------------------------------
|
|
||||||
```
|
SIGNAL |DIR| DESCRIPTION
|
||||||
|
------------------|---|--------------
|
||||||
|
reset | I | Reset input
|
||||||
|
pll_clk | I | Clock input for CCLK/LCLK PLL
|
||||||
|
sys_clk | I | System clock for FIFOs
|
||||||
|
embox_not_empty | O | Mailbox not empty (connect to interrupt line)
|
||||||
|
embox_full | O | Mailbox is full indicator
|
||||||
|
|
||||||
|
###CORE INTERFACE
|
||||||
|
Interface presented to the AXI interfaces "emaxi" and "esaxi".
|
||||||
|
|
||||||
|
SIGNAL |DIR| DESCRIPTION
|
||||||
|
------------------|---|--------------
|
||||||
|
txwr_access | I | TX write
|
||||||
|
txwr_packet[103:0]| I | TX write packet
|
||||||
|
txwr_wait | O | TX write wait (pushback)
|
||||||
|
txrd_access | I | TX read
|
||||||
|
txrd_packet[103:0]| I | TX read packet
|
||||||
|
txrd_wait | O | TX read wait (pushback)
|
||||||
|
txrr_access | I | TX read-response
|
||||||
|
txrr_packet[103:0]| I | TX read-response packet
|
||||||
|
txrr_wait | O | TX read-response wait (pushback)
|
||||||
|
rxwr_access | O | RX write
|
||||||
|
rxwr_packet[103:0]| O | RX write packet
|
||||||
|
txwr_wait | I | RX write write (pushback)
|
||||||
|
rxrd_access | O | RX read
|
||||||
|
rxrd_packet[103:0]| O | RX read packet
|
||||||
|
rxrd_wait | I | RX read wait (pushback)
|
||||||
|
rxrr_access | O | RX read-response
|
||||||
|
rxrr_packet[103:0]| O | RX read-response packet
|
||||||
|
rxrr_wait | I | RX read-response wait (pushback)
|
||||||
|
|
||||||
###REGISTER MAP
|
###REGISTER MAP
|
||||||
|
|
||||||
@ -194,8 +205,8 @@ REGISTER | AC | ADDRESS | DESCRIPTION
|
|||||||
---------------|----|---------|------------------
|
---------------|----|---------|------------------
|
||||||
E_RESET | -W | 0xF0200 | Soft reset
|
E_RESET | -W | 0xF0200 | Soft reset
|
||||||
E_CLK | -W | 0xF0204 | Clock configuration
|
E_CLK | -W | 0xF0204 | Clock configuration
|
||||||
***************|****|*********|********************
|
|
||||||
E_CHIPID | RW | 0xF0208 | Chip ID to drive to Epiphany pins
|
E_CHIPID | RW | 0xF0208 | Chip ID to drive to Epiphany pins
|
||||||
|
***************|****|*********|********************
|
||||||
E_VERSION | RW | 0xF020C | Version number (static)
|
E_VERSION | RW | 0xF020C | Version number (static)
|
||||||
ETX_CFG | RW | 0xF0210 | TX configuration
|
ETX_CFG | RW | 0xF0210 | TX configuration
|
||||||
ETX_STATUS | R- | 0xF0214 | TX status
|
ETX_STATUS | R- | 0xF0214 | TX status
|
||||||
|
Loading…
x
Reference in New Issue
Block a user