2/24/2008 9T6WP
Preliminary Hardware Data Module
BCM7405
06/29/07
Functional Description
Bro a d c o m Co rp o r a ti o n
Document
7405-1HDM00-R
Data Transport Processor Page 1-21
PES Parser
The PES parser delineates PES packets and sends them to the message buffers. Any number of the PID channels 0-127
can be enabled for PES processing. When a complete PES packet is received, a data available interrupt is generated by the
message buffer manager. The PES parser checks for PES packet lengths and generates length error interrupts. PES
Padding streams (i.e., PES messages with stream_id of 0xBE) are removed by default, or optionally retained. When stored
to memory, padding bytes (0x55) are optionally added at the end of each PES packet to word align to 32-bit boundaries in
the message buffers. During data transport playback, the padding bytes are removed.
The PES Parser checks for PES packet length and can generate length error interrupts if enabled. It uses the
payload_unit_start_indicator bit in the transport packet to detect the beginning of the PES packet. A length error is generated
whenever the end of a PES packet does not coincide with the end of a transport packet or the payload_unit start_indicator
is received prior to the end of the current PES packet. Only PID channels 0 to 127 can be routed to PES parser.
PSI Section Filter and Processor
The PSI processor delineates MPEG PSI section messages and performs section filtering, SAM filtering, and CRC checking.
It also performs similar processing for DIRECTV messages.
The PSI processor for this device supports sixteen banks of 32 4-byte generic filters for a total of 512 generic filters. Banks
of 4-byte generic filters can be cascaded to make up groups of filters that are effectively up to 64 bytes wide. Each of the
PID channels 0-127 can independently select one group of filter. Each PID channel can use any number up to 32 filters in
that group. Furthermore, each section filter can be applied to any number of these 128 PID channels. Each PID channel can
also independently select its own programmable generic filter offset.
For MPEG mode only, the SAM filters examine the PSI section header syntax, and the filters on address compare with the
special mode addresses. There is one 40 bit physical address and one multicast 24 address. There are two-40 bit network
addresses and two multicast 40 addresses. The network addresses and multicast 40 addresses each support a wildcard of
4 or 8 bits. In addition, each PID has four multicast 16 addresses. The SAM filter also compares the table ID with a set of
lower and upper table ID limits and rejects the sections that fall within these limits. Each of these addressing modes can be
enabled on a per PID basis for PID channels 0–127.
The PSI processor verifies section starts, removes padding bytes, and performs CRC checks. Messages which are greater
than 4096 in length can be optionally rejected and messages which are less than seven in length can be optionally rejected.
If a CRC check fails, the section is rejected. There is a per PID disable for the CRC check. There is also an option to modify
the message as it's being saved to DRAM buffer by one of the following methods:
•
Replace the CRC with a sentinel.
•
Replace the CRC with the section filter match tag.
•
Append the message with the section filter match tag.
The option to modify the message is enabled on a per PID basis. The filter match tag options provide a way to identify which
filtering options were used to accept different PSI messages within a common PID stream. When using the filter match tag
options, only one PID channel is opened. All PSI messages for that PID will be saved to a single message buffer; and
software will use the filter match tag to identify which filtering options were used to accept different PSI messages for that
PID.
Each generic filter is comprised of 4 bytes of coefficients, 4 bytes of inclusion masks and 4 bytes of exclusion masks. The
inclusion and exclusion masks work independently during the filter compare process. For a particular section filter to accept
a message, all of the message bits marked for inclusion (i.e., MASK = 0) must match the corresponding coefficient bits, and
at least one of the message bits marked for exclusion (i.e., EXCL = 0) must mismatch the corresponding coefficient bits.
Disabled message bits (i.e., MASK = 1 and EXCL = 1) are not considered.