In
Class 1, reader and tag commands and data are transmitted
in discrete packets. The Class 1 Forward Link provides a spinup
of 20 consecutive binary ‘0’ symbols to help the tag identify
the beginning of a packet, followed by a fairly complex command
structure containing multiple parity check bits to provide
the tag with some error detection capability. Most Reverse
Link responses include an 8-bit Preamble that allows the reader
to lock on to the tag signal.
Like Class 1, Gen 2 reader and tag commands and
data are transmitted in discrete packets. Forward Link packets
include preambles that contain a delimiter enabling the tag
to identify the start of a packet, and a timing pulse to tell
the tag how fast the reader is about to transmit. When the
Reader is about to initiate an inventory round, it sends a
command with a special preamble that contains a second timing
pulse that sets the rate at which tags should reply. This
command also specifies the data encoding (FM0 or MMS) and
which of two possible preambles the tag should use: one that
is short (fast) but more difficult to acquire, and a longer one that contains
a pilot tone, similar to the Class 1 tag preamble.
These Reverse Link preambles take slightly different forms
depending on whether the tag uses FM0 or MMS encoding. Use
of the pilot tone gives better noise protection at the cost
of additional overhead; users may or may not have control
over enabling the pilot tone.
Commands
A
detailed discussion of the commands and states implemented
by the three standards is beyond the scope of this brief article.
The Gen 2 standard defines a set of mandatory commands
that must be implemented by all tags and readers, and a set
of optional commands that, if implemented, must be
done so according to the definition in the standard. In addition,
vendors can provide their own proprietary commands
so long as these do not replicate a function already available
within the mandatory or optional command sets. The mandatory
commands provide the minimum basic functions required to make
the protocol work. They can be grouped into three functional
types (Table 4). The command set is optimized for speed and
noise protection. The most common commands are shorter and
are protected by a unique bit length. Longer commands, or
those of variable length, have a cyclic redundancy check
(CRC) for error correction. Thus Gen 2 communications
should be both more time efficient and more robust in the
presence of interference than either 1st generation standard.
Table
4: Gen 2 mandatory and optional commands
|
Type
|
Command
|
|
Select
|
Select
|
|
Inventory
|
Query
|
|
QueryRep
|
|
QueryAdjust
|
|
ACK (can also be used for access)
|
|
NAK
|
|
Req_RN
|
|
Access
|
Read
|
|
Write
|
|
Kill
|
|
Lock
|
|
Access
|
|
BlockWrite
|
|
BlockErase
|
It is unlikely that the user of a reader will
ever interact with a tag at the command level. Even an applications
level programmer will be provided with a higher-level interface
that encapsulates these low level interactions. The internal
reader software (usually known as firmware) is responsible
for this. However, many of these commands involve specific
terminology and parameters that may be adjustable at the user
level. For example, it is generally up to a user to decide
whether non-zero passwords are required for a given tag, and,
if so, to choose whether and when to lock the passwords and
other parts of the tag memory. We will discuss some of these
commands and their parameters in more detail in subsequent
articles.
Collision Arbitration
In certain applications, such as low-density
conveyor belt monitoring, or a RFID label printer, only one
tag will be readable at any given time. In many other applications,
multiple tags are contemporaneously readable by a single reader.
When all tags reply at once, using the same frequency channel
and the same symbol set, all the tag responses interfere with
each other and the reader sees either a jumbled set of collisions
or just an incomprehensibly noisy channel. The various RFID
protocols are designed to arbitrate these collisions, in other
words, to partition the available time amongst an unknown
population of tags such that they can all communicate their
information to a single reader.
Both Class 0 and Class 1 employ a binary-tree
approach, in which some unique identifier is assigned
to each tag, and the reader “walks down the tree” of possible
numbers, until it is confident that it is talking to just
a single tag. At that point the tag is read, and put to sleep.
The reader then retreats up the tree and tries to “singulate”
another tag. This process repeats until there are no more
tags left responding. For Class 1 the unique identifier is
always the tag ID (usually an EPC). For Class 0 it is the
tag’s ID, a short static random number, or a dynamically generated
random number. Binary-tree protocols are, in principle, exhaustive
– they should find all tags present in the field – but they
may be suboptimal in many situations. For example, the tag
must be able to reliable decode the entire exchange with the
reader. Tags whose received signal momentarily fades could
lose track of where they reader was in its search and either
miss their singulation slot, or even worse, talk at the wrong
time (sometimes called babbling).

Figure
4: Comparison of collision arbitration approaches.
The Gen 2 standard takes a different approach
to generating an inventory, known as a slotted Aloha protocol.
The Aloha protocol was one of the first attempts to allocate
a wireless medium in a non-deterministic fashion. A sender
transmits whenever it has a message to send, and if no acknowledgement
is received, it retries after a waiting random length of time. A slotted Aloha protocol divides
the transmission time into specific time slots. Each sender then randomly chooses a time
slot in which to transmit. If no acknowledgement is received, the sender chooses
another random slot and sends again. The specific approach used by the Gen 2 standard,
sometimes known as the Q-protocol after its key parameter, has inventory rounds
of 2Q slots. At the beginning of each round every
tag sets their slot counter to a random number, from 0 to
2Q-1. The reader then sends a command that starts a slot. Any tag whose
slot counter is 0 sends a reply; all other
tags decrease their slot counter by 1. This process is repeated
for all 2Q slots. By changing Q the reader can optimally adjust the number of slots
per round to adapt to the number of tags present in the read zone. Each round of the
Q-protocol is not guaranteed to see every tag in the field, but by adjusting Q and using
several rounds, the probability of detecting all tags increases rapidly. The algorithm can
be readily optimized for situations with a few, tens, or even hundreds of simultaneously
readable tags (though in the last case, tag antenna interactions may make it difficult
to read the tags, quite independently of the protocol used). A user trying to inventory
tags may find it beneficial to adjust the starting value of Q, and examine how
many slots the reader is providing to access the tag population.
The Gen 2 standard allows the user to include in an inventory
round only tags that meet certain selection criteria. This is intended to simplify the
job of filtering a tag population to find just tags of interest. For example, in a crowded inventory
environment, one might wish to count only tags marking a particular type of product
– a unique SKU or model number
– and exclude other product types. Appropriate combinations
of Select commands can implement complex Boolean criteria within a tag
population.
Finally,
the Gen 2 standard also provides four inventory sessions,
which in principal allow for several readers to simultaneously count
the same population of tags. In order to minimize the added cost and complexity of tags,
the whole apparatus for parsing and tracking inventories from different readers is
not replicated four times. Instead, each session
is allocated a unique inventoried flag, which can take a value
of A or B, but all other
tag resources are shared between the four possible inventory
sessions. The behavior of
this flag differs slightly for each of the sessions. For example,
for some sessions the flag
is persistent (maintains its value when tag power is lost),
in others it is not.
Users need to be aware of the existence of the sessions and
their specific characteristics
in order to choose the appropriate selection criteria, sessions,
and target flag values.
Conclusion
From
this discussion, it should be clear that there are several
aspects of Gen 2 operation that
are distinct from older protocols. These and other aspects
of the Gen 2 standard are likely
to directly impact users and programmers:
• Control of tag populations
to be inventoried, and the inventory process itself
• Tag memory mapping and passwords
for tag write and access control operations
• Data security and user privacy
• Single-, multiple-, and dense-interrogator
operation
In the remainder of this series,
we’ll discuss each of these issues in more detail, showing how
users may configure readers and tags to accomplish typical
tasks.
References
1] “EPC Radio-Frequency Identity Protocols: Class-1 Generation-2
UHF RFID Protocol for Communications at 860 MHz – 960 MHz;
Version 1.1.0”;
www.epcglobalinc.com
2] “Draft protocol specification for a 900 MHz
Class 0 Radio Frequency Identification Tag”; www.epcglobalinc.com
3] “860 MHz – 930 MHz Class 1 Radio Frequency
Identification Tag Radio Frequency & Logical Communication Interface Specification
Candidate
Recommendation, Version 1.0.1”; www.epcglobalinc.com