English
Language : 

PIC18F97J60 Datasheet, PDF (251/474 Pages) Microchip Technology – 64/80/100-Pin, High-Performance, 1 Mbit Flash Microcontrollers with Ethernet
PIC18F97J60 FAMILY
18.8.5 PATTERN MATCH FILTER
The Pattern Match filter selects up to 64 bytes from the
incoming packet and calculates an IP checksum of the
bytes. The checksum is then compared to the EPMCS
registers. The packet meets the Pattern Match filter cri-
teria if the calculated checksum matches the EPMCS
registers. The Pattern Match filter may be useful for
filtering packets which have expected data inside them.
To use the Pattern Match filter, the application must
program the Pattern Match offset (EPMOH:EPMOL),
all of the Pattern Match mask bytes (EPMM0:EPMM7)
and the Pattern Match Checksum register pair
(EPMCSH:EPMCSL). The Pattern Match offset should
be loaded with the offset from the beginning of the des-
tination address field to the 64-byte window which will
be used for the checksum computation. Within the
64-byte window, each individual byte can be selectively
included or excluded from the checksum computation
by setting or clearing the respective bit in the Pattern
Match mask. If a packet is received which would cause
the 64 byte window to extend past the end of the CRC,
the filter criteria will immediately not be met, even if the
corresponding mask bits are all ‘0’. The Pattern Match
Checksum registers should be programmed to the
checksum which is expected for the selected bytes.
The checksum is calculated in the same manner that
the DMA module calculates checksums (see
Section 18.9.2 “Checksum Calculations”). Data
bytes which have corresponding mask bits
programmed to ‘0’ are completely removed for
purposes of calculating the checksum, as opposed to
treating the data bytes as zero.
As an example, if the application wished to filter all
packets having a particular source MAC address of
00-04-A3-FF-FF-FF, it could program the Pattern
Match offset to 0000h and then set bits 6, 7 of EPMM0
and bits 0, 1, 2 and 3 of EPMM1 (assuming all other
mask bits are ‘0’). The proper checksum to program
into the EPMCS registers would be 5BFCh. As an alter-
native configuration, it could program the offset to
0006h and set bits 0, 1, 2, 3, 4 and 5 of EPMM0. The
checksum would still be 5BFCh. However, the second
case would be less desirable as packets less than 70
bytes long could never meet the Pattern Match criteria,
even if they would generate the proper checksum given
the mask configuration.
Another example of a Pattern Match filter is illustrated
in Figure 18-13.
FIGURE 18-13: SAMPLE PATTERN MATCH FORMAT
Input Configuration:
EMPOH:EPMOL = 0006h
EPMM0:EPMM7 = 0000000000001F0Ah
EPMCSH:EPMCSL = 563Fh
Field
DA
SA
Type/Length
Data
FCS
Received
Data
Byte #
11 22 33 44 55 66 77 88 99 AA BB CC 00 5A
0 1 2 3 4 5 6 7 8 9 10 11 12 13
Bytes used for
Checksum Computation
09 0A 0B 0C 0D . . . 40 . . . FE 45 23 01
14 15 16 17 18 . . . 70 . . .
64-byte Window used
for Pattern Match
Values used for Checksum Computation = {88h, AAh, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 00h}
(00h padding byte added by hardware)
Note: Received data is shown in hexadecimal. Byte numbers are shown in decimal format.
© 2006 Microchip Technology Inc.
Advance Information
DS39762A-page 249