Patent ID: 12219599

The use of the same reference symbols in different drawings indicates similar or identical items.

DETAILED DESCRIPTION

Embodiments described herein support IoT concurrent listening by providing a dynamic multi-protocol receiver that can handle multiple protocols concurrently as well as quickly switch between protocols. Embodiments described herein utilize multiple and simultaneous protocol detections at preamble, sync-word, or packet payload phases. To provide robust detection and achieve fewer false detections, the receiver extends the cross-correlation length once a short cross-correlation is determined to be valid.

Embodiments use a single demodulator configuration to concurrently detect IEEE 802.15.4, BLE1, BLE Long Range (BLELR) in accordance with Bluetooth Version 5.0, and BLE2 packets, where BLE1 and BLE2 refer to the bit rate (1 Mbps or 2 Mbps). As described further herein, the demodulator does not require reconfiguration when switching from BLE to Zigbee or from Zigbee to BLE. Note that for the purposes of the radio demodulator and system described herein the term Zigbee will be used for ease of reference to describe IEEE 802.15.4 based protocols including Zigbee and Thread.

As such, it allows near-instantaneous switching from BLE to Zigbee with little or no dropped communications. Thus, the communication between devices is faster, more efficient, and more scalable. The single demodulator approach with fast frequency switching provides a substantial improvement over DMP, but without the increased cost of multiple IoT radios.

While the demodulator described herein provides performance enhancement, another aspect that provides performance enhancement is utilization of a fast-switching synthesizer to provide local oscillator (LO) signals suitable for the selected receive channel. The use of a fast-switching frequency synthesizer for the local oscillator allows switching, e.g., to new BLE or Zigbee frequencies quickly. Such a fast-switching frequency synthesizer is described in the application entitled “Fast Frequency Synthesizer Switching”, naming Rangakrishnan Srinivasan et al. as inventors, application Ser. No. 17/709,642, filed Mar. 31, 2022, which application is incorporated herein by reference. In an embodiment, the RF synthesizer can settle to an 802.15.4 RX channel or any BLE channel (including ADV channels and DATA channels that can be used as advertising channels with Wake-up radio applications) in, e.g., less than 10 μs. Note also that the switching speed between channels depends on how a particular embodiment is implemented and the switching speed requirements of a particular application.

FIG.1illustrates a high-level block diagram of an embodiment of a receiver100included in a wireless communications device that includes a fast-switching frequency synthesizer and a fast context switching demodulator. Antenna101provides an RF signal to passive network (PN)103that provides impedance matching, filtering, and electrostatic discharge protection. Low-noise amplifier (LNA)105amplifies the signals from passive network103without substantial degradation to the signal-to-noise ratio and provides the amplified RF signals to mixer107. Mixer107performs frequency translation or shifting of the RF signals, provided by the I/Q generation block112, which is supplied from a local oscillator (LO) implemented in embodiments as a fast frequency synthesizer. The I/Q generation block112converts the local oscillator signal from local oscillator109to I and Q signals for the RX mixer107and the transmit (TX) mixer (not shown separately in TX block123).

Mixer107provides the translated output signal as a set of two signals, an in-phase (Im) signal, and a quadrature (Qm) signal, to programmable gain amplifiers (PGA)108. The Im and Qm signals are analog time-domain signals. In at least one embodiment of receiver100, the analog amplifiers108and filters (not separately illustrated) provide amplified and filtered version of the Im and Qm signals to an analog-to-digital converter (ADC)110, which converts those versions of the Im and Qm signals to digital Id and Qd signals. ADC110provides digital Id and Qd signals to channel filters111, which provide digital filtering of the digital Id and Qd signals and provides the filtered Ic and Qc signals to a fast context switching demodulator118capable of concurrent demodulation of multiple physical layer (PHY) transmission modes including IEEE 802.15 based PHYs, Bluetooth, BLE, and BLELR transmission modes.

The demodulator118demodulates the digital Ic and Qc signals to retrieve or extract information, such as data signals, that were modulated (e.g., in a transmitter not shown), and provided to antenna101as RF signals. As explained further herein, the demodulator includes multiple paths for different PHYs for concurrent demodulation. The demodulator118provides the demodulated data to the data processing circuitry119. In embodiments data processing circuitry119performs a variety of functions (e.g., logic, arithmetic, etc.). While shown separately, portions of the data processing circuitry119are also used for demodulation. Those portions may be dedicated to demodulation functions. Other portions of the data processing circuitry119uses the demodulated data in a program, routine, or algorithm (whether in software, firmware, hardware, or a combination) to perform desired control or data processing tasks. In an embodiment, the data processing circuitry includes one or more processors such as a microcontroller(s) and software and/or firmware to perform the desired functions. The memory120stores software and firmware for use by data processing circuitry119to perform various tasks and stores data supplied to or from data processing circuitry119. The memory120may include multiple kinds of memory in various embodiments including dynamic random-access memory (DRAM), static random access memory (SRAM), and/or non-volatile memory (NVM), according to system needs. In addition, while the data processing circuitry can access memory120, in embodiments, other system components, such as LO control block121can also access memory120, or portions thereof. In embodiments, at least some functionality of LO control block121are implemented by software/firmware running on a processor in data processing circuitry119.FIG.1also shows a transmit path123that utilizes the same antenna and local oscillator as the receive path. The transmit data may be sent from the memory120. Details of the transmit path are well known in the art and not further described herein.

As described further herein, embodiments of system100include preamble detection capability, arbitrary symbol identification capability, and noise detection capability to assist in concurrently listening to transmissions of multiple PHYs. Embodiments provide significant performance improvement in monitoring both 802.15.4 unknown RX arrival listening and BLE/BT Mesh unknown RX arrival on BLE advertising (ADV) channels in the 2.4 GHz frequency band. Embodiments described herein support background concurrent listening to IEEE 802.15.4 based protocols, e.g., Zigbee receive (RX) channels (2405 MHz to 2480 MHz spaced 5 MHz apart) and BLE advertising channels as shown inFIG.2.FIG.2shows the 40 RF channels in BLE separated by 2 MHz center to center. The BLE channels include Primary Advertising Channels 37, 38, and 39 with center frequencies of 2402 MHz, 2426 MHz, and 2480 MHz respectively. The remaining 37 channels are called the Secondary Advertisement Channels and are used for data transfers during the Connection state. Secondary advertising channels are used as auxiliary channels meaning that a device has to first advertise on the primary advertising channels before sending out advertising packets on the secondary channels. In the Advertising state, a device sends out packets containing useful data for others to receive and process. The advertising packets are sent at an interval defined as the Advertising Interval. The Advertising interval has both a fixed interval and a random delay. The BLE connection interval is the time between two data transfer events between the central and the peripheral device.

FIG.3shows the Zigbee channels 11 to 26 (2405 MHz to 2480 MHz) with a width of 2 MHz separated by 5 MHz center to center. Note that the BLE advertising channel 39 (2480 MHz) and the Zigbee channel 26 (2480 MHz) are centered at the same frequency. Thus, simultaneous listening and demodulation is required for concurrent listening. Note that the Zigbee channels 15, 20, and 25 are popular channels because they fall in the gaps between popular WiFi channels. The popular Wi-Fi channels are channels 1, 6, and 11, each with 20 MHz bandwidth. Respective center frequencies are 2412 MHz, 2437 MHz, and 2462 MHz.

A typical implementation of a single radio implementing DMP cannot receive two packets for two different protocols simultaneously and switching between protocols requires a time consuming process of reconfiguring the demodulator for the new protocol. In contrast, the demodulator described herein can run several radio protocols simultaneously without the time-consuming process of demodulator reconfiguration. Switching between protocols requires only a synthesizer frequency change of the radio peripheral, since protocols may operate on different frequencies. Thus, embodiments described herein simultaneously monitor four PHYs (IEEE 802.15.4, BLE1, BLE2, BLELR). That allows near-instantaneous switching from BLE to Zigbee or Thread with little or no dropped communications. While monitoring one protocol, the demodulator can simultaneously monitor the other protocol. For an example, after BLE is in the connection state, if another transmitter is transmitting IEEE 802.15.4 on the same channel, the demodulator is able to detect IEEE 802.15.4 traffic.

FIG.4illustrates an embodiment of a portion400of an RF receiver that can simultaneously monitor multiple protocols. The embodiment includes dual RAMs RAM0427and RAM1429. The portion400includes portions of the receiver100including channel filters111, demodulator118, data processing circuitry119, and memory120. The portion400includes two demodulator paths shown as Channel-0 and Channel-1. The paths are coupled to receive data from the ADC (see ADC110inFIG.1). The Channel-0 path includes a channel filter402having a bandwidth of 2.5 MHz and the Channel-1 path includes a decimator404that reduces the data by two and a channel filter406having a bandwidth of 1.25 MHZ, which is half the bandwidth of the Channel-0 filter. The two paths include sample rate converters (SRC)408and410supplying I and Q samples at 8 mega samples per second (MSPS) and4MSPS, respectively, to Coordinate Rotation Digital Computer (CORDIC)412and414. In general, a CORDIC implements known techniques to perform calculations, including trigonometric functions and complex multiplies, without using a multiplier. The operations the CORDIC uses are addition, subtraction, bit-shift, and table-lookup operations. In other embodiments, a digital signal processor executing firmware is used. CORDICs412and414convert digital I and Q signals from a Cartesian representation into polar representation by performing an arctangent operation. The polar representation includes a phase and magnitude. The phase information from Channel-0 is oversampled with an oversampling rate (OSR) equal to 4 and the ph0[n] samples are supplied to the differentiator416. Similarly, Channel-1 is oversampled with an OSR=4, and the ph1[n] data is supplied to differentiator418. The differentiators provide frequency information, which is routed through the phase difference (PH_diff) router420to the correlator bank422. Channel-0 is used for detecting Zigbee and BLE2 and Channel-1 is used for detecting BLE1 and BLELR.

The differentiator416provides Channel-0 data as:
ph_diff0[m,n]=ph0[4*n+m]−ph0[4*n+m−4],
and the differentiator418provides Channel-1 data as:
ph_diff1[m,n]=ph1[4*n+m]−ph1[4*n+m−4],
where m varies inclusively between 0 and 3 cyclically, n is the sample number, and the bit width of ph0, ph_diff0, ph1 and ph_diff1 are same. For example, the table below illustrates calculating ph_diff( ) for three samples (n=0,1,2):

nmph_diff0[m, n]00ph_diff0[0, 0] = ph0[0] − ph0[−4]01ph_diff0[1, 0] = ph0[1] − ph0[−3]02ph_diff0[2, 0] = ph0[2] − ph0[−2]03ph_diff0[3, 0] = ph0[3] − ph0[−1]10ph_diff0[0, 1] = ph0[4] − ph0[0]11ph_diff0[1, 1] = ph0[5] − ph0[1]12ph_diff0[2, 1] = ph0[6] − ph0[2]13ph_diff0[3, 1] = ph0[7] − ph0[3]20ph_diff0[0, 2] = ph0[8] − ph0[4]21ph_diff0[1, 2] = ph0[9] − ph0[5]22ph_diff0[2, 2] = ph0[10] − ph0[6]23ph_diff0[3, 2] = ph0[11] − ph0[7]

The RAM write control block424also receives the ph_diff( ) data and saves ph_diff0[m,n] in the RAM0427. The RAM write control block426receives ph_diff1 [m,n] data and saves ph_diff1[m,n] data in RAM1429. After the PHY selection decision has made as to which kind of preamble has been received, if Zigbee or BLE2 data has been received, data in RAM0 is sent to one of the demodulator processors427and specifically to the direct-sequence spread spectrum (DSSS) processor428. If the selected PHY is BLE1 or BLELR, the controller causes the data to be sent to the BLE processor430or to the BLELR processor432for demodulation.

FIG.5shows an embodiment that uses a single RAM425instead of RAM0 and RAM1. Before the PHY is selected ph_diff0[m,n] is saved in the RAM425with even addresses and ph_diff1[m,n] is saved in the RAM with odd addresses. Note that m=mod(n,4). The “mod” is the modulo operation that returns the remainder of a division, after one number “n” is divided by another number, here “4”. For even addresses, ram_data=ph_diff0[mod(n,4),n] and for odd addresses, ram_data=ph_diff1[mod(n,4),n]. After the PHY selection decision, if Zigbee or BLE2 is selected as the PHY, only ph_diff0[m,n] will be saved in the RAM as ram_data=ph_diff0[mod(n,4),n]. If BLE1 or BLELR is selected, only ph_diff1 [m,n] will be saved in the RAM as ram_data=ph_diff1[mod(n,4),n].

FIG.6illustrates the Channel-0 path and Channel-1 path into RAM0 and RAM1 memory.FIG.7illustrates the Channel-0 and Channel-1 path into RAM425.FIGS.6and7isolate the path into memory from other circuitry shown inFIGS.4and5.

Referring again toFIG.4, the correlator bank422provides correlator information to the comparators434,436,438, and440, which compare the output of each of the correlators to appropriate thresholds. For example, comparator434receives the outputs from correlators[0:3] and compares the outputs to a threshold for Zigbee (thd_Zigbee). Comparator436receives the outputs from correlators[4:7] and compares the outputs to a threshold for BLE2 (thd_BLE2). Comparator438receives the outputs from correlators[8:11] and compares the outputs to a threshold for BLELR (thd_BLELR). Comparator440receives the outputs from correlators[12:15] and compares the outputs to a threshold for BLE1 (thd_BLE1). Control logic, implemented, e.g., as a finite state machine (FSM) or as programmed microcontroller unit (MCU)442, receives the outputs from the comparators and MCU442controls correlator functionality as described further herein and determines the appropriate action to take based on whether preambles (and sync-words in some cases) for a particular protocol have been received. The MCU442controls other functions for the demodulator such as selecting appropriate data streams for the demodulation processors. Note that the correlator bank operates in real time as the data is received from the two demodulator paths—the Channel-0 path and the Channel-1 path. Payload data for demodulation is stored in the RAM before it is sent to the demodulation processors428,430, or432. The MCU442also receives outputs from the noise detectors446and448and the arbitrary symbol identifiers (ASI)450and452. Noise detector448detects noise on the Channel-0 path and noise detector446detects noise on the Channel-1 path. The actions that occur when noise is detected on one or both of these paths is described further herein.

Noise can be determined in several ways by noise detectors446and448. For example, if the frequency values of the received signal are outside a predetermined range, that may indicate noise. For example, 2FSK (frequency shift keying) modulates the carrier frequency (Fc) by a deviation frequency (Fd), resulting in signals with frequencies of Fc-Fd and Fc+Fd. If the incoming signal has frequencies above Fc+Fd or below Fc-Fd, that may indicate noise. BLE1 and BLELR both have symbol frequency deviation of +/−250 KHz. BLE2 symbols have frequency deviation of +/−500 KHz. The Zigbee chip sequence has +/−500 KHz frequency deviation, which is similar to BLE2. Zigbee is further qualified by correlating with the Zigbee 32-chip sequence. Note that each Zigbee symbol is spread into a 32-chip sequence.

Additionally, BLE and Zigbee have a minimum data bit duration. For example, BLE1 has a bit rate of 1 Mbps, while Zigbee has a bit rate of 250 kbps. However, with DSSS, a 4-bit nibble (symbol) is expanded to 32-chips for a 2 mega chips per second (Mcps). Rapid changes in frequency, especially from positive frequencies to negative frequencies or vice versa, may be referred to as spikes. If the duration of spikes in the incoming signal is less than the minimum bit duration, that may indicate noise.

Thus, in one embodiment, noise detectors446and448detect noise if the frequency range of the incoming signal is outside the expected range or the bit duration of the incoming signal is less than or exceeds the expected values. Detection of noise is described in U.S. Pat. No. 11,184,272, entitled “Zigbee, Thread and BLE Signal Detection in a WiFi Environment”, naming Yan Zhou et al. as inventors, filed Dec. 13, 2018, which patent is incorporated herein by reference. The actions that occur when noise is detected is described further herein.

The ASIs450and452detect symbols, e.g., from a payload. Zigbee utilizes offset quadrature phase-shift keying (OQPSK), while BLE utilizes 2FSK. By determining whether the incoming data utilizes the sixteen distinct chips specified by Zigbee, it can be determined that the incoming data is a Zigbee symbol. For BLE1 and BLE2, ASI checks if the frequency deviation of multiple averaged symbols falls within a range around fc+fd and fc−fd, respectively. The frequency deviation checking is common for BLE2 and Zigbee. BLE2 is 2 Mbps while Zigbee is 2Mcps. Zigbee ASI has an additional stage to check 32-chip correlation. BLE1 and BLELR both use 1 Mbps 2FSK. BLELR uses digital coding for a lower data rate but more robust detection with improved sensitivity and range. U.S. Pat. No. 11,184,272, entitled “Zigbee, Thread and BLE Signal Detection in a WiFi Environment”, naming Yan Zhou et al. as inventors, filed Dec. 13, 2018, which is incorporated herein by reference, describes symbol identification for BLE and Zigbee. Referring back toFIGS.4and5, asynchronous symbol identifier450detects arbitrary Zigbee symbols and BLE2 symbols and ASI452looks for BLE symbols and BLELR. Note that the ASIs and noise detectors, like the correlators run in real time.

Referring now toFIG.8, the path from the differentiators416and418through the phase difference router420to the correlator bank422is separated out from other circuitry shown inFIGS.4and5for ease of reference.FIG.9illustrates the number of preamble symbols and potentially sync/access address symbols detected for the various PHYs, (at least initially), the time it takes to detect the symbols based on transmission rate, and the number of correlator delay line stages required to detect the symbols. For BLE, the sync symbols are the access address, which is a constant in ADV channels. Each of the Zigbee symbols is made of 32 chips and the chip rate is 2 Mchips/s, so each chip is 0.5 μs and each symbol is 16 μs. For BLELR, each symbol is four chips and the 12 symbols shown includes 10 preamble symbols (80 μs) and 2 sync-words (16 μs) for a total of 96 μs. The chip rate for both BLELR 125 Kbps and BLELR 500 Kbps is 1Mcps (MegaChipsPerSecond). Note that the coded preamble symbol for BLELR is 00111100.

Referring back toFIG.8, correlators[0:3] compute 3 Zigbee symbols correlations. Correlators[4:7] compute 32 BLE2 symbols correlations. Correlators[8:11] compute 12 BLELR symbols correlations. Correlators[12:15] compute 32 BLE1 symbols correlations. In the illustrated embodiment inFIG.8, the OSR=4. The phase difference router (PH_diff Router)420operates as follows:for Correlators[0:3]: Correlator[m][n]=ph_diff0[m,n];for Correlators[4:7], Correlator[m+4][n]=ph_diff0[m,n];for Correlators[8:11], Correlator[m+8][n]=ph_diff1[m,n];for Correlators[12:15], Correlator[m+12][n]=ph_diff1[m,n].Thus, Correlators[0:3] and Correlators[4:7] receive Channel-0 data andCorrelator[8:11] and Correlators[12:15] receive Channel-1 data.

FIG.10illustrates an embodiment of a correlator element1000. Correlator element1000is a matched FIR filter of length M=32 (order31). The correlator element1000works in “matched filter” mode and computes true correlation of the signal corrdin(n-k)supplied from the phase difference router420(seeFIG.8) with the template signal c(k) for the duration of the whole symbol sequence. If c(k)=1, the matched filter becomes an average filter and the correlator then works in “average filter” mode. In the implementation, the template signal c(k) is the expected preamble or sync-word or combination of preamble and sync-word, and will be either a binary “1” or a binary “0” and therefore no multiplier is required. The correlator element1000is able to process one Zigbee symbol, 4 BLELR symbols, 32 BLE1 symbols, or 32 BLE2 symbols.

FIG.11shows correlators[0:3] formed of four correlators1101,1102,1103, and1104and a multiplexer1105to select which correlator output goes to the comparator434(seeFIG.4), which compares the correlator output to the threshold thd_Zigbee. There are four correlators based on the OSR of 4, one for each sample. Correlators [8:11] are formed of four correlators1106,1107,1108, and1109and a multiplexer1110to select which correlator output goes to the comparator438(seeFIG.4) to compare the correlator outputs to thd_BLELR. The structure of these correlators is identical. WhileFIG.10shows a single correlator element1000,FIG.12shows a correlator1200formed of three correlator elements1201,1203, and1205. Each of the correlator elements shown inFIG.11can be configured as one correlator element1000or configured as three correlator elements as illustrated by correlator1200inFIG.12.

With reference again toFIG.4, assume as an example that the Zigbee preamble is being detected by correlators[0:3]. Initially, the number of symbols required is short to reduce detection time. For example, in an embodiment the number of correlator elements for correlators [0:3] is initially set at one. One correlator element can detect one Zigbee preamble symbol. The output of a correlator element from each of the correlators[0:3] is compared to the threshold thd_Zigbee in comparator434. If one (or more) of the outputs of correlators [0:3] is greater than the first threshold used for 1-symbol correlation, MCU442determines a first symbol of the Zigbee preamble has been detected. Once one symbol has been detected, in order to achieve more robust detection, the 1-symbol correlation is extended to 3-symbol correlation and the correlators [0:3] are reconfigured to be 3 element correlators as shown inFIG.12. In an embodiment, the first threshold for the initial 1-symbol detection is lower than for the 3-symbol detection. That creates a bias for false positives for the 1-symbol detection. The threshold is then changed to a second threshold for the 3-symbol detection to reduce the chances for false positives. A valid detection is declared once the long correlation (3-symbol) output is greater than the second threshold. Extending the correlation to 3-symbol correlation provides a lower false detection rate and more accurate initial timing. While correlation length extension for Zigbee detection has been described, correlation length extension can also be used with BLELR to extend the correlation from 4-symbols to 12-symbols if a valid detection is found initially for the four symbols. In embodiments, the thresholds are again changed between 4-symbol and 12-symbol detection so the initial correlation is biased for false positives but the longer correlation is more robust and provides for a lower false detection rate and more accurate initial timing.

The correlation can be further extended to achieve even more robust detection. For example, with reference toFIG.13, for IEEE 802.15.4, the 3-symbol correlation is extended to an 8-symbol correlation. With BLELR, the correlation can be extended from 12-symbols to 32-symbols. A shorter correlation length and lower threshold is used initially to shorten detection time with a bias towards false positives. To provide more robust detection, the correlation length is extended if the short correlator output (3-symbol) is greater than the second threshold as described above. A valid detection is declared once long correlation (8-symbol) output is greater than the 8-symbol correlation threshold. The 8-symbol correlation provides even greater precision in preamble detection. The threshold for 8-symbol correlation in an embodiment is higher than for 1-symbol correlation and for 3-symbol correlation. There will be cases where extended correlation to 8-symbol correlation will not be possible because, e.g., a Zigbee packet has been transmitted before the receiver switched to the desired channel. In that case, 3-symbol correlation is used.

With reference toFIGS.4and13, when the correlation is extended from 3-symbol to 8-symbol, additional correlators are required to be combined with correlators [0:3]. Thus, for 8-symbol correlation correlator [0]1301(configured as a three element correlator) is combined with correlator [4]1303with one correlator element, and combined with correlator[8]1305configured as a three element correlator and combined with correlator [12]1307with one correlation element. Similarly, correlator [1] (configured as a three element correlator) is combined with correlator [5] with one correlator element, correlator[9] configured as a three element correlator, and correlator [13] with one correlation element. Correlator [2] (configured as a three element correlator) is combined with correlator [6] with one correlator element, and combined with correlator[10] configured as a three element correlator, and combined with correlator [14] with one correlation element. Correlator [3] (configured as a three element correlator) is combined with correlator [7] with one correlator element, and combined with correlator[11] configured as a three element correlator and combined with correlator [15] with one correlation element. Once the 3-symbol correlation detection occurs for Zigbee, the other correlators [4:7], correlators [8:11], and correlators [12:15] are made available for uses for detecting Zigbee symbols instead of their normal use for BLE2, BLELR, or BLE1. Note that false detection requirements for certain protocols, e.g., Zigbee, can be more stringent than for other protocols, e.g., BLE.

Referring now toFIG.14, the table illustrates an exemplary detection timetable for various components shown inFIGS.4and5. The components include the noise detectors (ND)446and448, the preamble symbol identifier (PSI) provided by the correlator bank422for the various PHYs, e.g., for the first Zigbee symbol, the first extended correlator length (correlator bank stage 1 (CBS_1)), e.g., extended to 3 symbols for Zigbee, the second extended correlator length (correlator bank stage 2 (CBS_2)), e.g., extended to 8 symbols for Zigbee, and the ASI blocks450and452to detect symbols present in the payload for the various PHYs. Note that the PSI, CBS_1 processing, and ASI processing are multi-PHY processing that occurs in parallel. However, CBS_2 is performed on only one PHY as described above, e.g., for the extended 8-symbol correlation for Zigbee. In embodiments shortened detection times, e.g., CBS_1 or even PSI, are used where shortened detection times are desired and the longer correlation times, e.g., 3-symbol or 8-symbol are used where more robust detection is desired and longer detection times are acceptable.

In the PSI detection stage, the Zigbee correlators[0:3] computes 1 Zigbee preamble symbol correlation. The BLE2 correlators[4:7] computes 12 BLE2 preamble symbols correlation. The BLELR correlators[8:11] computes 4 BLELR preamble symbols correlations. The BLE1 correlators[12:15] computes 12 BLE1 symbols (8 preamble symbols+4 sync-word symbols) correlations.

In the CBS_1 detection stage, which is the first correlation extension, the Zigbee correlators[0:3] computes 3 Zigbee preamble symbols correlations. The BLE2 correlators[4:7] computes 32 BLE2 symbols (16 preamble symbols+first 16 sync-word symbols) correlations. The BLELR correlators[8:11] computes 12 BLELR symbols (8 preamble symbols+first 4 sync-word symbols) correlations. The BLE1 correlators[12:15] computes 32 BLE1 symbols (8 preamble symbols+24 sync-word symbols) correlations.

Entering the Zigbee CBS_2 detection stage, which is the second correlation extension, requires one or more of the Zigbee correlators [0:3] to pass the Zigbee threshold in the CBS_1 detection stage. If that occurs, correlators [4:7], correlators [8:11] and correlators [12:15] are combined to compute 8 Zigbee symbols (8 Zigbee preamble symbols or 6 symbols and 2 Zigbee sync-word symbols correlations.

Entering the BLELR CBS_2 detection stage requires at least one of the correlators [8:11] in the CBS_1 detection stage to pass the BLELR threshold. If that occurs, correlators [0:3], correlators [4:7], correlators [8:11] and correlators [12:15] are combined to compute 32 BLELR sync-word symbols correlations.

If one or more of the BLE2 correlators [4:7] in the CBS_1 detection stage passes the BLE2 threshold, correlators [4:7] compute 32 BLELR sync-word symbols in the CBS_2 BLE2 detection stage.

If one or more of the BLE1 correlators [12:15] in the CBS_1 detection stage passes the BLE1 threshold, correlators [12:15] compute 32 BLE1 sync-word symbols.

FIGS.15A and15Billustrate a flow chart of context switching for the demodulation and related functions. The flow starts when the receiver is ready to receive transmissions at1501. The flow then goes to check states1503.FIG.16shows the various channel states at1601as 0 to 3, corresponding respectively to BLE advertising channels, BLE data channels, Zigbee only, and the channel 2480 MHz, which is BLE1 channel 39 and Zigbee channel 26. CH state1503provides information for CH switching1505. If CH state-0 (BLE ADV), the demodulator is set to listen BLE advertisement traffic. Since there are 3 advertisement channels, the MCU decides which advertisement channel to jump to next during CH switching1505. If CH state=1 (BLE data channel), the demodulator is set to receive BLE data traffic. The MCU decides which is the next BLE data channel selected during CH switching1505. If CH state=2, the demodulator is set to receive Zigbee traffic. The MCU decides which is the next Zigbee channel for CH switching1505. CH state-3 indicates the shared channel shared by BLE CH39 and Zigbee CH26. The demodulator should be programmed to listen to both BLE and Zigbee traffic.

At1505, the receiver switches to the desired frequency corresponding to the selected channel. At1507the controller, e.g., MCU442inFIGS.4and5, turns on the noise detectors (NDs), preamble symbol identifiers (PSIs), and the arbitrary symbol identifiers (ASIs). The controller then receives outputs from the NDs, PSIs, and ASIs at different times based on how long each task takes to complete. Those functions run in parallel but finish at different times. The detection times for the various tasks described inFIGS.15A and15Bare shown in the detection timetable inFIG.14. In CHK ND1510the noise detectors check for the presence of noise in the selected channel. In1514, the controller checks for the output of the noise detectors. As shown inFIG.14, the noise detection waits 8 μs for the detection process to complete in1512. If both noise detectors indicate noise is present (ND Trigger is yes) in1514, the flow returns to CHK States1503. If neither noise detector triggers or only one noise detector triggers, the controller assumes no noise is present and the other processes continue. A no in1514causes the controller to take no action and wait for the other processes to complete in1515.

In1518a check is made to see if a BLE2 data channel was selected. If so, the wait for detection in1520is 9 μs for BLE2 PSI (12 symbols) and the BLE2 PSI trigger is checked in1522. If no trigger, the flow goes to1515and waits for the other processes to complete. If the preamble symbols (BLE2 PA) were detected (yes in1522) then the first cross correlation extension is utilized for BLE2 shown as Correlator Bank Stage 1 (CBS_1) at1524. After waiting for 16 μs in1526, if a detection trigger was yes for CBS_1 in1528, the second cross correlation extension CBS_2 turns on for BLE2 at1530. As shown inFIG.14, the detection time in1532is 16 μs for BLE2 CBS_2. If CBS_2 triggers in1534, the controller turns on the BLE2 processor in1536and if CBS_2 does not trigger in1534the flow goes to1515to wait for all the processes to complete.

If the check for a BLE2 data channel in1518was no, the system looks for a Zigbee preamble symbol. The detection time for the first Zigbee preamble symbol in1538is 16 μs. After waiting for the required time, the process checks to see if the Zigbee PSI triggered in1540and if so, turns on CBS_1 for Zigbee in1542. If the Zigbee PSI did not trigger in1540, the process goes to1515waiting for all the processes to complete. The detection time for Zigbee CBS_1 is 48 μs as shown at1544. The controller checks for a trigger in1546and if CBS_1 triggers, the controller enables the second cross correlation extension CBS_2 for Zigbee in1548. If the Zigbee CBS_1 did not trigger in1546, the process goes to1515waiting for all the processes to complete. After waiting 128 μs in1548, the controller checks for a CBS_2 trigger in1550and if CBS_2 triggered, the controller turns on the Zigbee processor in1552. If no trigger occurs, the flow returns to1515waiting for all the processes to complete.

The BLE1 PSI detection time takes 15 μs in1554. After the required detection time, if the BLE1 PSI triggered in1556, the controller turns on CBS_1 for BLE1 in1558. If the BLE1 PSI did not trigger in1556the process goes to1515waiting for all the processes to complete. The detection time for BLE1 CBS_1 is 32 μs as shown at1560. The controller checks for a trigger in1562and if CBS_1 triggers, the controller enables the second cross correlation extension CBS_2 for BLE1 in1562. If the BLE1 CBS_1 did not trigger in1562, the process goes to1515waiting for all the processes to complete. After the CBS_2 detection time of 32 μs in1570, the controller checks for a CBS_2 trigger in1572and if CBS_2 triggered, the controller turns on the BLE1 processor in1574. If BLE1 CBS_2 did not trigger, the flow returns to1515waiting for all the processes to complete.

The BLELR PSI detection time takes 35 μs in1576. After the required detection time, if the BLELR PSI triggers in1578, the controller turns on CBS_1 for BLELR in1580. If the BLELR PSI did not trigger in1578the process goes to1515waiting for all the processes to complete. The detection time for BLELR CBS_1 is 96 μs as shown at1582. The controller checks for a trigger in1584and if CBS_1 triggers, the controller enables the second cross correlation extension CBS_2 for BLELR in1586. If the BLELR CBS_1 did not trigger in1584, the process goes to1515waiting for all the processes to complete. After the CBS_2 detection time of 256 μs in1590, the controller checks for a CBS_2 trigger in1592and if CBS_2 triggered, the controller turns on the BLELR processor in1594. If BLE1 CBS_2 did not trigger, the flow returns to1515waiting for all the processes to complete. Note that in1515the process checks if all processes (ND, PSI through CBS_2, and ASI) have completed and if so returns to CHK states1503. Of course, if any of the demodulation processors are turned on, after CBS_2 or ASI causes other demodulation activities, the wait for processes to complete in1515ends. Note that not all protocols require the second or even the first cross correlation extension. Thus, e.g., for BLE1 and BLE2, the demodulation processors may be turned on based on a CBS_1 trigger or even a PSI trigger.

Referring now toFIG.15B, the flow for ASI is illustrated. Note that ASI is running concurrently with ND and PSI. ASI in general takes a longer time to detect than the first stage PSI. However, ASI detection may be shorter than extended PSI detection. The wait times for arbitrary symbol identification for Zigbee, BLE2, and BLE1 are shown at1521,1523, and1525, respectively. The system checks to see if a Zigbee symbol was detected in1527. If a Zigbee preamble symbol is received, Zigbee 1-symbol PSI should be triggered first followed by ASI in1527. Once the 1-symbol PSI triggers, the state machine is programmed to use 3-symbol PSI detection and the state machine waits for 3-symbol PSI detection results regardless if ASI triggers. PSI detection has higher priority than ASI. If yes in1527and assuming no extended PSI correlation, the system goes to a Zigbee detect state in1529, causing the system to stay on the same channel in1531(no channel switch) and turns on the Zigbee processor in1533for demodulation. There is no channel switch in an effort to capture the medium access control (MAC) retry. A time-out (e.g., approximately 15.5 ms) is utilized in case the retry packet is not sent or was not detected and if the retry packet was not sent, the control returns to1503. If a CBS_2 PSI detection is used and triggered inFIG.15A(see1550), the state machine exits the ASI flow since PSI has a higher priority. If no Zigbee ASI trigger in1527, the flow goes to1515waiting for all the processes to complete.

In1535, the system checks for a BLE2 ASI trigger. If no BLE2 ASI trigger is detected, the system goes to1515to wait for completion. If a BLE2 ASI trigger was detected, the system goes to a BLE2 detect state in1537, jumps to the next advertising channel in1539, and turns on the BLE2 processor in1541. In the current BLE specification, BLE2 is not allowed on BLE advertisement channels. However, future systems may include that functionality. Note that a time-out is needed after switching to next advertisement channel. However, there is not a set time for a transmitting device to repeat the message on next advertisement channel. Accordingly, in embodiments the timeout is programmable between at least several tens of μs up to several ms. If the BLE2 processor times out, the flow returns to1503.

In1543the system checks for detection of a BLE1 symbol. If no BLE1 symbol is detected, the system goes to1515to wait for all the context switch processes to complete. If BLE1 ASI triggered in1543, the system goes to a BLE1 detect state in1545. In1547the system checks for a BLE1 PA trigger. The BLE1 trigger check in1547inFIG.15Bis the same as the BLE1 PA trigger check in1556inFIG.15A. In the event an ASI detects BLE1 or BLELR traffic, the ASI cannot tell the difference. Therefore, the state machine checks if PSI has information to determine if BLE1 or BLELR preambles are detected (but won't be able to detect the packet). That information is used to determine which demodulator to use to detect incoming traffic next. In general, this is rare case event. “BLE1 PA”, “BLE2 PA” and “ZB PA” detection are used in the PSI detection stage. In the PSI detection stage, the correlator element1000is configured to process 12 symbols correlation for BLE1 or BLE2 by setting c(k)=0 for 12<=k<=31. Note that the correlation can also be performed as described in U.S. Pat. No. 11,177,993, filed Oct. 31, 2018, naming Hendricus de Ruijter et al. as inventors, entitled “APPARATUS FOR RADIO FREQUENCY RECEIVER WITH IMPROVED TIMING RECOVERY AND FREQUENCY OFFSET ESTIMATION AND ASSOCIATED METHODS” which application is incorporated herein by reference. If a BLE1 preamble was detected in1547, the system jumps to the next advertising channel in1549, and turns on the BLE1 demodulation processor in1551. If no BLE1 PA trigger occurred in1547, the system checks in1553if a BLELR PA trigger was detected in the BLELR PA trigger check1578shown inFIG.15A. If the check in1553indicates a BLELR PA trigger, the flow jumps to the next advertising channel in1555and turns on the BLELR processor in1557. Note that a time-out is needed after switching to next ADV channel. In embodiments the timeout is programmable between at least several tens of μs up to several ms. If the check in1553indicates no BLELR PA trigger, the flow goes to the next advertising channel in1559and turns on both demodulation processors (BLE1 demodulation processor and BLELR demodulation processor) are turned on in1561. Note that a time-out is needed after switching to the next ADV channel. In embodiments the timeout is programmable between at least several tens of μs up to several ms.

While the description above focuses on concurrent 802.15.4 and BLE monitoring, the approach can also be considered for subG frequency band applications. In the subG frequency band, 2GFSK, OQPSK, ASK, and other modulation schemes are used and co-exist. The demodulator architecture described for the industrial, scientific and medical (ISM) frequency band herein can be readily adapted to quickly identify various modulation signals in SubG frequency bands. Once no desired signal is detected in a channel in the frequency band of interest, the demodulator can be switched to a different channel and search for any potential communication traffic. Thus, the CHK states channel and description shown inFIG.16depends on the particular transmission protocols and the frequencies of interest.

While the above description has focused on details of the multi-PHY demodulator along with how the signal identifiers and noise detectors operate with the multi-PHY demodulator,FIG.17illustrates the overall control structure1700for an embodiment of a wireless communication device with concurrent listening capabilities. The controller1702, which may be the MCU442shown inFIG.4, or an additional programmed MCU or other processor (and/or additional control logic) that operates in conjunction with MCU442, controls the overall system for concurrent listening. Of course, the system also transmits and receives data when the listening operations indicate there is data to be transmitted or received by the wireless communication device. Memory1704stores program code and data used by the controller1702. In addition, the memory1704stores various transmit and receive parameters for the wireless communication device.

The controller receives data from the multi-PHY demodulator1706, the signal identifiers1708and1710, the noise detectors1714and controls the channel sequence for concurrent listening and for transitioning the concurrent listening to transmitting and/or receiving and then returning to concurrent listening. BLE transmissions on DATA channels and IEEE 802.15.4 transmissions are schedulable and schedulable events pre-empt background concurrent listening. In operation, the listening switches to a target channel looking for receipt of preambles/symbols as described earlier, dwells on that channel for a predetermined time period, or until preambles, symbols, or noise is received. After the predetermined time period expires or on receipt of noise, the controller1701causes the wireless communication device to switch to the next target receive (RX) channel by changing the frequency of the fast-switching LO synthesizer1716and for at least some embodiments, loading demodulator parameters associated with the target frequency.

FIG.18Aillustrates an example of channel switching for concurrent listening.FIG.18Ashows the channel switch executed at1801, the dwell time at1803, and a context save at1805for an IEEE 802.15.4 channel. The channel switch includes the time to switch the local oscillator to the desired RX channel and loading of any demodulator parameters required for receiving transmissions on the new target RX channel. That sequence is repeated for each target RX channel.FIG.18Ashows an equal priority being given to the IEEE 802.15.4 channel and BLE ADV channels. The IEEE 802.15.4 channel selected is shown as 2405 MHz+(5 MHz×(CH−11)) where CH is the selected channel and is one of channels 11 to 26 and channel 11 is the first channel (lowest frequency) as shown inFIG.3. For example, if channel 15 is selected, that equates to (2405+5×4) or 2425 MHz. Note that embodiments as shown inFIG.18Ainclude a demodulator for which context is saved for each channel. The context includes such factors as automatic gain control (AGC) parameters, channel filter parameters, and of course frequency. For embodiments that use the multi-PHY demodulator described herein the context saving step can be omitted as shown inFIG.18B. In embodiments, the context save is implemented in direct memory access (DMA) between the memory1704and the demodulator1706. That makes the context save and reload more efficient.

FIG.19Aillustrates an embodiment for channel switching for concurrent listening for one IEEE 802.15.4 channel and three BLE ADV channels in which the IEEE 802.15.4 channel is given preference over the BLE ADV channels. Priority is given to the IEEE 802.15.4 channel by listening to the IEEE 802.15.4 channel more often than the BLE ADV channels.FIG.19Billustrates the same preference with the save context step omitted.FIG.20illustrates an embodiment for channel switching for concurrent listening for two IEEE 802.15.4 channels shown as CHa and CHb. Note that the save context step is not shown inFIG.20-22but for embodiments that include a save context step, that operation occurs after the dwell time for each channel.

FIG.21illustrates an embodiment for channel switching for concurrent listening for two IEEE 802.15.4 channels shown as CHa and CHb and three BLE ADV channels with priority being given equally to each channel.FIG.22illustrates an embodiment for concurrent listening for two 802.15.4 channels shown as CHa and CHb and three BLE ADV channels with priority being given to the two IEEE 802.15.4 channels. Priority is given by listening to the two IEEE 802.15.4 channels more often than the BLE ADV channels.

Note that as more channels are added to the concurrent listening sequence, degradation is expected due to the multi-PHY demodulator more frequently missing preamble detection and relying on signal identifiers, retries, and time-outs. WhileFIGS.18A-22show various preferential or equal weight listening sequences, many other weighting sequences can be used for listening. In addition, the weighting sequences can be both programmable and dynamic. Thus, the listening sequence can be initially programmed for a particular environment. In embodiments that sequence is dynamically changed based on detected traffic. For example, if more of one kind of traffic is detected, that traffic is given higher priority. If that traffic subsequently declines, the priority can move back towards a more equal weight or other appropriate weighting factor for the particular embodiment and environment. Thus, priority can change up or down based on detected traffic. In addition, CHK states (seeFIGS.15A and16) can be reconfigured for various concurrent listening approaches, e.g., concurrent 802.15.4/802.15.4, concurrent 802.15.4/BLE, and concurrent 802.15.4/802.15.4/BLE.

FIGS.23-25illustrate an exemplary control flow for an embodiment of a wireless communication device that includes the control structure shown inFIG.17. As shown, e.g., inFIGS.15A and15B, many activities occur concurrently during background listening including preamble detection, symbol identification, and noise detectionFIG.23illustrates the controller functionality associated with preamble detection although some of the functionality, e.g., switching to a next channel2301, is common. As scheduled events (RX or TX) take precedence over background listening, in2300, the controller checks to see if an event is scheduled. If so, the wireless communication device executes the TX/RX event in2302and then the controller switches to an initial/next channel selection in2301. If not, the controller proceeds to2301. In2301the controller switches to a next channel (or an initial channel) in the channel sequence such as the channel sequence shown inFIG.22. The controller determines if a preamble has been detected by the correlators (see, e.g., the correlator bank inFIG.4) in2303. If not, the controller checks if noise has been detected in2305and if dwell time has expired in2306. If either noise is detected or the dwell time has expired, the flow returns to2300for the controller to check for a scheduled event and then switch to the next RX channel in the sequence2301. If the dwell time has not expired and no noise was detected, the controller continues to see if either the preamble is detected in2303, the noise is detected in2305, or dwell time expires in2306. If the controller determines that the preamble has been detected in2303the controller stays on the current channel in2307to capture and decode the transmission associated with the preamble. The controller determines in2309if the transmission is for this wireless communication device or another wireless communication device. For example, the transmission may include an identifier identified with the wireless communication device and if the transmission is for the wireless communication device the controller then takes action based on whether the transmission is an IEEE 802.15.4 transmission or a BLE transmission. If the transmission is not for the wireless communication device the flow returns to2300for the controller to check for a scheduled event and then for the controller to switch to the next RX channel in the sequence. The controller checks in2311if the transmission is an IEEE 802.15.4 transmission requiring an acknowledge (ACK) or other action. If so, the wireless communication device stays on the current channel, transmits the ACK, and adds any events required to the scheduler before returning to2300to check for a scheduled event and then switches to the next RX channel in2301. If the controller determines in2315that the transmission is a BLE ADV transmission requiring a response, the controller in2319causes the wireless communication device to stay on the current channel and transmit or receive additional packets as required. The controller adds any events required to the scheduler and returns to2300to check for any scheduled events and then switches to the next channel in the sequence in2301.

While the control flow shows the scheduled events being checked in2300prior to switching to a next RX channel for concurrent listening, the check for the scheduled event may be an independent thread entered responsive to, e.g., a timer expiring or be interrupt driven to indicate the event needs to be executed.FIG.23Billustrates such an embodiment. The process continually checks for a scheduled event in2300(or is interrupt driven) and executes that event in2302if an event is scheduled. Note that if the scheduled event check operates as an independent process as shown in the embodiment ofFIG.23B, the flow returns to2301from2306,2309,2315,2317, and2319to implement the next channel switch rather than check for a scheduled event.

As shown inFIGS.15A and15B, symbol identification runs concurrently with preamble detection and noise detection.FIG.24illustrates the control flow if an IEEE 802.15.4 symbol was found by the signal identifier but not the demodulator, which indicates that a preamble was not detected. That could be caused, e.g., by the receiver being tuned to that frequency for only a portion of preamble packet and that portion was not identified as a preamble. The more channels that are listened to, the more likely preamble packets will be missed or only partially received. Symbol detection in addition to preamble detection provides a mechanism to more efficiently listen for transmissions. The controller checks in2402if a symbol was detected and if not, the controller checks if the dwell time has expired in2404. The controller waits for either a symbol to be detected or the dwell time to expire. If the dwell time has expired in2404, the flow returns to check for scheduled events in2300(FIG.23) and then switch channels in2301(or alternatively directly to2301if checking for scheduled events is an independent process). If a symbol is detected in2402but not a preamble, the controller causes the wireless communication device to stay on the current channel to capture an expected retry and sets a timeout in2406. The timeout set in an embodiment is, e.g., 16 ms or less. The controller checks in2408if the retry was received and if the time out has expired in2410. If the wireless communication device receives the retry in2408, the wireless communication device transmits any necessary ACK and schedules any TX/RX events in2412and returns to2300(FIG.23) or alternatively to2301. If the timeout occurs before the retry is received, the flow returns to2300(FIG.23) or alternatively to2301.

FIG.25illustrates the control flow during concurrent listening if a BLE symbol was identified by the signal identifier but not the demodulator, which indicates that a symbol was detected but a preamble was not detected. That could be caused, e.g., by the receiver being tuned to that frequency for only a portion of preamble packet and that portion was not identified as a preamble. As stated earlier, the more channels that are listened to, the more likely preamble packets will be missed. The controller checks if a symbol was detected in2502and the controller checks if the dwell time has expired in2504and takes action according to which occurs first. If the dwell time has expired in2504before a symbol is detected, the flow returns to check for a scheduled event in2300(FIG.23) and then switches to a next channel in2301or alternatively directly to2301. If a BLE symbol is detected in2502, the controller causes the wireless communication device to switch to a different advertising channel in2506.

If the current advertising channel (ADV) is logical channel 37 (2402 MHz), the receiver switches to ADV channel 38 (2426 MHz) to match typical legacy switching by the transmitting device, although random ADV pattern transmitting devices may go to ADV channel 39 (2480 MHz) instead. If the current ADV channel is 38 (2426 MHz), the receiver switches to ADV channel 39 (2480 MHz) to match typical legacy switching although random ADV pattern transmitting devices may switch to ADV channel 37 (2402 MHz) instead. If the current ADV channel is 39 (2480 MHz), since channel 39 (2480 MHz) is the last channel, for legacy transmitting devices the ADV packet sequence would have been missed. However, random ADV pattern transmitting devices may switch to either ADV channel 37 (2402 MHz) or to channel 38 (2426 MHz). The controller then waits for the repeated ADV packet to be received in2508or the time-out in2510. If the correct ADV channel was selected in2506, the repeated ADV packet should arrive after the original ADV packet+150 μs for interframe spacing (IFS)+ an RX time-out. If an incorrect ADV channel was selected in2506, the repeated ADV packet should arrive after the original ADV packet+150 μs IFS+ an RX time-out plus the second ADV packet+150 μs IFS+ an RX time-out. The time-out checked in2510should account for the larger time-out related to the possibility of switching to an incorrect ADV channel in2506. If the ADV packet is received in2508, the wireless communication device schedules any TX/RX events as needed and returns to2300(FIG.23) to check on scheduled events and then switch to the next channel in2301or alternatively directly to2301. If the time-out is reached in2510, the wireless communication device returns to2300or alternatively to2301. Note that while current ADV packets are BLE1M or BLELR, future ADV packets may include BLE2M.

While controller methodologies based on preamble and symbol identification, timeouts, dwell time, and the like have been described particularly for BLE and IEEE 802.15.4 protocols, the approaches described herein apply to concurrent listening for other transmission protocols and/or on multiple frequencies for only one transmission protocol.

Thus, a concurrent listening system has been described. The description of the invention set forth herein is illustrative, and is not intended to limit the scope of the invention as set forth in the following claims. Other variations and modifications of the embodiments disclosed herein, may be made based on the description set forth herein, without departing from the scope of the invention as set forth in the following claims.