Integra Feature - TID Even Parity Check Application Note

Overview

This application note will explain how to use the Interga feature: TID Even Parity Check.

Impinj’s Integra technology is a suite of diagnostics which ensures consistently accurate data delivery that businesses can depend on. TID Even Parity is part of the Integra suite. For more details about Integra, please see the Integra Overview. Integra is available on all Monza 6 family tag chips.

All tag chips with Integra have TID serial numbers with even parity. If the TID serial number for a tag is found to have odd parity, it indicates potential physical damage to the tag and hence questionable integrity of the data inside it. Checking for even parity in the TID for tag chips with Integra is an important way to screen for defective tags.

This application note describes how to implement the TID Even Parity Check. A parity check on the TID may be run automatically using the Octane LTK on a reader running Octane 5.6 or newer.

Octane LTK Parity Check

Hardware Required

  • Speedway Revolution and Mini-Guardrail Antenna or similar antenna
  • Host PC
  • A Monza 6-based tag tag

Software Required

The serial number of a tag chip with Integra may be checked for even parity using the Octane LTK. The sample code running here is using C# and requires Octane LTK 10.22.0 or newer. For the latest version of the Impinj LLRP Toolkit (LTK), please go to the following link:

https://support.impinj.com/hc/en-us/articles/202755488-LTK-Libraries-for-Readers

In this sample code, the parity check happens in the firmware. FastID must be enabled and the application checks for the parameter ParityError.

Open "DocTidParityCheck.csproj" in Visual Studios 2010 or newer. Right click the project "DocTidParityCheck", select Properties, go to the tab Debug, and enter in the command line arguments "-t speedwayr-10-XX-XX", replacing XX-XX with the MAC address for the Speedway Revolution reader.

Below is an excerpt of the code where the parity check is occurring:

 

#region CheckForImpinjCustomTagData
// check for other Impinj Specific tag data and print it out 
if (msg.TagReportData[i].Custom != null)
{
	opSpecCount++;
	for (int x = 0; x < msg.TagReportData[i].Custom.Count; x++)
	{
		if (msg.TagReportData[i].Custom[x].GetType() ==
			typeof(PARAM_ImpinjSerializedTID))
		{
			PARAM_ImpinjSerializedTID serializedTid =
				(PARAM_ImpinjSerializedTID)msg.TagReportData[i].Custom[x];
			opSpecCount++;
			data += "\n serialTID: " + serializedTid.TID.ToHexWordString();

			// TID Parity Check for Monza 6: ImpinjTIDParity is null when parity check passes
			if (serializedTid.ImpinjTIDParity != null && serializedTid.ImpinjTIDParity.ParityError)
			{
				data += "\n Parity error detected";
			}
			else data += "\n No parity error detected.";
		}
	}
}
#endregion

With the Speedway Revolution reader powered and on the same network as the host PC, place the Monza 6 tag in the field of view of the reader antenna so the tag may be read. Build and run the application (Build -> Start Debugging or press F5).

Here is the short version of the output during an inventory for a tag with even parity and one without:

Success:

EPC: E28011606000020497CB0065
ReadResult(1): Success
Data: E280 1160
serialTID: E280 1160 2000 6065 F960 0892
No parity error detected.

Error:

EPC: E28011606000020497CB0065
ReadResult(1): Success
Data: E280 1160
serialTID: E280 1160 2000 5645 F960 0892
Parity error detected

Application Level TID Parity Check

The serial number may be checked for even parity at the application layer if the Octane LTK is not being used. The 48 bit serial number is found in words 3, 4 and 5 of TID memory. With Integra, if there is an even number of 1s in the the serial number, the parity check passes, while an odd number of 1s would fail. 

  • Calculate parity with bitwise exclusive-OR as follows:
    • X = TID bit(30h) XOR TID bit(31h) XOR … TID bit(5Eh) XOR TID bit(5Fh)
  • Check for even parity
    • If X = 0 the TID data is good
    • If X = 1 the TID data has an error in it

Example 1:

TID: E280 1160 2000 6065 F960 0892

Word 0 1 2 3 4 5
Hex E280 1160 2000 6065 F960 0892
Binary 1110 0010 1000 0000 0001 0001 0110 0000 0010 0000 0000 0000 0110 0000 0110 0101 1111 1001 0110 0000 0000 1000 1001 0010

X = TID bit(30h) XOR TID bit(31h) XOR … TID bit(5Eh) XOR TID bit(5Fh) = (0) XOR (1) XOR (1) ... (1) XOR (0) = 0

X = 0, therefore the TID passes even parity check.

Example 2:

TID: E280 1160 2000 5645 F960 0892

Word 0 1 2 3 4 5
Hex E280 1160 2000 5645  F960 0892
Binary 1110 0010 1000 0000 0001 0001 0110 0000 0010 0000 0000 0000 0101 0110 0100 0101 1111 1001 0110 0000 0000 1000 1001 0010

X = TID bit(30h) XOR TID bit(31h) XOR … TID bit(5Eh) XOR TID bit(5Fh) = (0) XOR (1) XOR (0) ... (1) XOR (0) = 1

X = 1, therefore the TID fails even parity check.

Conclusion

Checking for TID even parity on Impinj tag chips with Integra is simple and may be done using the Octane LTK or in any RAIN RFID application capable of reading the TID and implementing an exclusive-OR on the 48-bit serial number. This feature provides a method to screen for physical defects.

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Article is closed for comments.