PM8621 PMC-Sierra, Inc., PM8621 Datasheet - Page 154

no-image

PM8621

Manufacturer Part Number
PM8621
Description
NSE-8G Standard Product Data Sheet Preliminary
Manufacturer
PMC-Sierra, Inc.
Datasheet
12.12.3 Handling the Transmit Header
Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers’ Internal Use
Document ID: PMC-2010850, Issue 1
--
--
--
---
---
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
PAGE Bits
If the IPAGE bits are changed, they are not sent in the header bits until the next frame. They will
be continually sent for each message in subsequent frames until they change again.
USER, LINK and AUX Bits
When any of these bits change they are sent in the header bits of the next message. They will be
continually sent for each subsequent message until they change again.
END Message_Receive;
Poll the bit here before startiong next message.
Simulation Stuff
End Simulation Stuff
When we think we're done check that we really are.
Update the current value of RX_MSG_LVL. Allows for the case where a
message has arrived while processing.
At this point we have read all the messages we thought we had at the
start of the loop so whatever number is returned now is the number of
new messages receieved while we've been reading messages.
Unless we're running real slow this should only be 1 or 0.
We adjust our loop variable by this amount to keep the loop going
long enough to get the extra messages received.
Note in this code I'm not checking for more messages received than
read. We'd be in real trouble in the system in this case! We
also can't get there in the sim!
END LOOP;
ELSE
END IF;
END LOOP;
Check_Rx_Msg(Payload_Chk,No_Header_Chk); -- Check payload only.
rx_msg_cnt_o <= rx_msg_cnt_o + 1;
msgs_rd := msgs_rd + 1;
rd(RX_STTS);
WHILE rx_stts_valid = '0' OR rx_fi_busy = '1' LOOP
END LOOP;
IF rx_msg_lvl > 0 THEN
END IF;
msgs_rd := msgs_rd - rx_msg_lvl;
END IF;
rd(RX_STTS);
tst_report("Message(s) Received while processing messages");
tst_report("Executing Receive buffer resync " & "
wr(RX_STTS, "00000000000000000000000000000001");
rd(RX_STTS);
WHILE rx_fi_busy = '1' LOOP
END LOOP;
rd(RX_STTS);
following short message of length " &
to_str(dword_rd_cnt) & ".");
--
msgs_rd = msg_lvl_loop
NSE-8G™ Standard Product Data Sheet
Preliminary
153

Related parts for PM8621