## 2 Research Methodology
### EPC Encoder  
Existing commercial RFID backscatter systems adhere to the EPC Gen2 protocol [12], which defines the communication process between the reader and the tags, as shown in Figure 7a. In this process, the reader modulates information onto a continuous wave and transmits it to the tags, which harvest the carrier energy and receive the information. Specifically, the reader sets a parameter value Q in the Query command (with a range of 0 to 15) to divide the frame into \(2^{Q}\) time slots. Upon receiving the Query command from the reader, a tag randomly selects a number from the range (0, \(2^{Q}-1\)) to serve as its slot counter. When the counter value decrements to zero, the tag responds with a 16-bit random number RN16. If only one tag responds with the RN16 at this moment, the reader confirms this tag by sending an acknowledgment (ACK) with the same RN16. Subsequently, the confirmed tag transmits its EPC as the identification result. If multiple tags respond simultaneously, the time slot is considered a conflict slot. The reader may either parse the RN16 sent by one of the tags or classify the conflict as a transmission failure and disregard the information. Following this, the reader reduces the tag slot counter value Q with the QueryRep (or QueryAdjust) command. In Section 3, which will be discussed in detail later, we utilize the USRP RFID reader developed in Ref. [13] to establish our system. When the reader initiates an inventory process, it repeatedly transmits a large number of Query commands to establish communication with the tags present in the surrounding environment. Due to the frequency-shifting capabilities within the tags, data packet collisions are prevented during multi-tag iden  
Figure 6: Illustration of different adaptive pulse-width square wave spectra. (**a**) Adaptive pulse-width square wave spectrum with a pulse width of 0.33, 0.66. (**b**) Adaptive pulse-width square wave spectrum with a pulse width of 0.2, 0.8. Figure 7: Illustration of communication mechanism in the backscatter system. (**a**) Communication process between the reader and the tags. (**b**) FM0 symbols and sequences. tification. Consequently, the communication function of our tags can be simplified to a mode wherein they passively send RN16 and the subsequent PC+EPC+CRC data packets in a cyclic manner, as illustrated in Figure 8. This simplification of the tag communication functionality not only ensures that the reader can successfully receive the EPC information but also promotes a lightweight design for the overall system. Our design adheres to the timing slot requirements of the EPC Gen2 protocol, establishing specifications for the transmission intervals of RN16 and the EPC data packets. This is aimed at maximizing the probability of the reader successfully receiving the EPC, even in conditions where the tags lack synchronization and demodulation capabilities. Additionally, to ensure compatibility with the EPC Gen2 protocol, the tags transmit data to the reader using FM0 encoding, as shown in Figure 7b. In this encoding scheme, the baseband phase undergoes a flip at each boundary, with the data \"0\" inducing an extra intermediate symbol phase flip. Furthermore, all encoding processes are implemented through an algorithm, as shown in Algorithm 1. The algorithm achieves a balance between computational efficiency and error correction performance by simplifying the demodulation function of the tags while fully leveraging the extensive querying processes of the reader. Figure 9a illustrates the identification process between the USRP RFID reader and the tags we designed during actual tests. An enlarged view of this process is presented in Figure 9b, showing that the encoding format for the RN16 and EPC data packets reflected by the tags adheres to FM0 encoding standards. ```
1:Program initialization. 2:Set fixed time slot intervals T1 and T2. 3:Configure static EPC information (i.e., PC, and EPC). 4:whileTrue:
5:Generate and send RN16. (RN16 = _FM0_encode_(RN16_bits))
6:Wait(T2 + **Ack** command duration + T1).