13.01.2015 Views

Digital Subscriber Line Access Multiplexer (DSLAM) Example Design

Digital Subscriber Line Access Multiplexer (DSLAM) Example Design

Digital Subscriber Line Access Multiplexer (DSLAM) Example Design

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Digital</strong> <strong>Subscriber</strong> <strong>Line</strong> <strong>Access</strong> <strong>Multiplexer</strong> (<strong>DSLAM</strong>) <strong>Example</strong> <strong>Design</strong><br />

// transform the IP header based on the routing information<br />

//<br />

// Size:<br />

// 221 instructions<br />

//<br />

// <strong>Example</strong> usage:<br />

// ATM_IP_Route_Lookup_And_Transform(status, net_model, $ip_header, \<br />

// llc_encap_type, fifo_addr, cnx_entry_address, sdram_buff_addr)<br />

3.1.4 Egress Microblock<br />

Two egress microblocks are available for the receive microblock group in the Receive Processor:<br />

• <strong>DSLAM</strong>_Enqueue (enqueues packets to the transmit microblock group)<br />

• <strong>DSLAM</strong>_SA_Enqueue (enqueues exception packets to the StrongARM core)<br />

The following macro headers describe the egress microblocks for outgoing PDUs and flow control<br />

packets. They are contained in the file $Gen_<strong>DSLAM</strong>\hyannis\<br />

microblocks\dslam_rx_ublock_group_a.uc.<br />

// <strong>DSLAM</strong>_Enqueue<br />

//<br />

// Description:<br />

// This is an egress block that queues either a flow control<br />

// packet or a PDU to a ring buffer for ingress into the<br />

// transmit microblock group.<br />

//<br />

// Inputs:<br />

// packet_type type of packet (control or data) (if<br />

// supporting control packets)<br />

// pdu_completion whether the PDU is complete, if packet type<br />

// is data<br />

// buffer_descriptor_address address for buffer descriptor<br />

// physical_port_type ATM, Ethernet, Frame Relay, etc.<br />

// connection_entry_address index of connection entry<br />

// pdu_length length of PDU in buffer<br />

//<br />

// Implementation:<br />

// if packet_type is control<br />

// enqueue the flow control packet<br />

// else<br />

// enqueue the PDU<br />

//<br />

// Size:<br />

// 61 instructions (without flow control packet support and without other<br />

// protocol support)<br />

// with other protocol support, +18 instructions<br />

// with flow control packet support, +25 instructions<br />

//<br />

// <strong>Example</strong> usage:<br />

// <strong>DSLAM</strong>_Enqueue(pkt_type, pdu_complete, bd_address, phy_port_type, \<br />

// cnx_entry_address, length)<br />

//<br />

// <strong>DSLAM</strong>_SA_Enqueue<br />

//<br />

// Description:<br />

// This is an egress block that queues an ATM PDU to the<br />

// StrongARM core for exception processing.<br />

//<br />

// Inputs:<br />

Application Note 17

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!