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

no-image

PM8621

Manufacturer Part Number
PM8621
Description
NSE-8G Standard Product Data Sheet Preliminary
Manufacturer
PMC-Sierra, Inc.
Datasheet
Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers’ Internal Use
Document ID: PMC-2010850, Issue 1
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- We're in this loop 2nd time without a good msg inbetween. Need 2
-- RX_XFER_SYNC writes to do a message skip
--
--
--
--
--
Poll the bit here before starting next message.
Get the MSG_LVL
rd(RX_STTS);
WHILE rx_stts_valid = '0' LOOP
END LOOP;
msg_lvl_loop := rx_msg_lvl;
Now Check the RX_SYNC_DONE status to be sure we're not going to skip
the 1st message...
IF rx_sync_done = '0' THEN
Do the RX_XFER_SYNC
Poll the RX_FI_BUSY bit
END IF;
Next RX MSG Buffer is now synched and we know how many messages we have.
Just read the messages out.
msgs_rd := 0;
tst_report("Processing " & to_str(msg_lvl_loop) & " messages.");
WHILE msgs_rd < msg_lvl_loop LOOP
Check the CRC_ERR bit for this message
This code skips errored messages.
rd(RX_STTS);
wr(RX_STTS, "00000000000000000000000000000001");
rd(RX_STTS);
WHILE rx_fi_busy = '1' LOOP
END LOOP;
rd(RX_STTS);
rxmsg.crc_err := crc_err_reg;
WHILE crc_err_reg = '1' AND rndm_skip_msg_mode LOOP
rd(RX_STTS);
tst_report("Errored message received and being skipped...");
IF rx_sync_done = '1' THEN
ELSE
END IF;
rx_msg_cnt_o <= rx_msg_cnt_o + 1;
msgs_rd := msgs_rd + 1;
wr(RX_STTS, "00000000000000000000000000000001");
wr(RX_STTS, "00000000000000000000000000000001");
rd(RX_STTS);
WHILE rx_fi_busy = '1' LOOP
rd(RX_STTS);
-- Loop on read value of rx_msg_lvl
NSE-8G™ Standard Product Data Sheet
---
Simulation Stuff
Preliminary
151

Related parts for PM8621