beautypg.com

3 enq and deq commands, 4 ring data structure commands, 5 journaling commands – Intel NETWORK PROCESSOR IXP2800 User Manual

Page 217: 6 csr accesses, 5 parity, Enq and deq commands, Ring data structure commands, Journaling commands, Csr accesses, Parity

background image

Hardware Reference Manual

217

Intel

®

IXP2800 Network Processor

SRAM Interface

6.4.3.3

ENQ and DEQ Commands

These commands add or remove elements from the queue structure while updating the

Q_array

registers. Refer to the sections, “SRAM (Enqueue)” and “SRAM (Dequeue)”, in the IXP2400 and

IXP2800 Network Processor Programmer’s Reference Manual, for more information.

6.4.4

Ring Data Structure Commands

The ring structure commands use the

Q_array

registers to hold the head tail and count data for a

ring data structure, which is a fixed-size array of data with insert and remove pointers. Refer to the
section, “SRAM (Ring Operations)” in the IXP2400 and IXP2800 Network Processor

Programmer’s Reference Manual, for more information.

6.4.5

Journaling Commands

Journaling commands use the

Q_array

registers to index into an array of memory in the QDR

SRAM that will be periodically written with information to help debug applications running on the

IXP2400 and IXP2800 processors. Once the array has been completely written once, subsequent
journal writes overwrite the previously written data — only the most recent data will be present in

the data structure. Refer to the section, “SRAM (Journal Operations)”, in the IXP2400 and

IXP2800 Network Processor Programmer’s Reference Manual, for more information.

6.4.6

CSR Accesses

CSR accesses will write or read CSRs within each controller. The upper address bits will determine

which channel will respond, while the CSR address within a channel are given in the lower address
bits.

6.5

Parity

SRAM can be optionally protected by byte parity. Even parity is used — the combination of eight

data bits and the corresponding parity bit will have an even number of ‘1s’. The SRAM controller
generates parity on all SRAM writes. When parity is enabled (

SRAM_Control[Par_Enable]

),

the SRAM controller checks for correct parity on all reads.

Upon detection of a parity error on a read, or the read portion of an atomic read-modify-write, the

SRAM controller records the address of the location with bad parity in

SRAM_Parity[Address]

and sets the appropriate

SRAM_Parity[Error]

bit(s). Those bit(s) interrupt the Intel XScale

®

core when enabled in

IRQ_Enable[SRAM_Parity]

or

FIQ_Enable[SRAM_Parity]

.

The Data Error signal in the

Push_CMD

is asserted when the data to be read is delivered (unless the

token

Ignore Data Error

was asserted in the command; in that case, the SRAM controller does

not assert Data Error). When Data Error is asserted, the Push Arbiter suppresses the Microengine

signal if the read was originated by a Microengine (it uses

0x0

, which is a null signal, in place of

the requested signal number).