83 coprocessor with memory mapped fifo ports – Intel NETWORK PROCESSOR IXP2800 User Manual

Page 222

Advertising
background image

222

Hardware Reference Manual

Intel

®

IXP2800 Network Processor

SRAM Interface

The external coprocessor interface is based on FIFO communication.

A thread can send parameters to the coprocessor by doing a normal SRAM write instruction:

sram[write, $sram_xfer_reg, src1, src2, ref_count], optional_token

The number of parameters (longwords) passed is specified by

ref_count

. The address can be

used to support multiple coprocessor FIFO ports. The coprocessor performs some operation using

the parameters, and then will later pass back some number of results values (the number of

parameters and results will be known by the coprocessor designers). The time between the input
parameter and return values is not fixed; it is determined by the amount of time the coprocessor

requires to do its processing and can be variable. When the coprocessor is ready to return the

results, it signals back to the SRAM controller through a mailbox-valid bit that the data in the read
FIFO is valid. A thread can get the return values by doing a normal SRAM read instruction:

sram[read, $sram_xfer_reg, src1, src2, ref_count], optional_token

Figure 83

shows the coprocessor with

1

-to-

n

memory-mapped FIFO ports.

If the read instruction executes before the return values are ready, the coprocessor signals

data-invalid through the mailbox register on the read data bus (

Qn[17:0]

). Signaling a thread

upon pushing its read data works exactly as in a normal SRAM read.

Figure 83. Coprocessor with Memory Mapped FIFO Ports

A9749-01

Read

Control

Logic

Port 1

Mail Box

FIFO

Valid

Write

Control

Logic

Port 2

Mail Box

Valid

Port n

Mail Box

Valid

Network Processor

Coprocessor

Qn[17:0]

RPE_Ln[0]

BWEn[1:0]

WPE_Ln[0]

Dn[17:0]

An[x:0]

Port 1

Mail Box

FIFO

Port 2

Mail Box

FIFO

Port n

Mail Box

FIFO

FIFO

FIFO

Advertising