US9270418B1 - Identifying a code for signal decoding - Google Patents

Identifying a code for signal decoding Download PDF

Info

Publication number
US9270418B1
US9270418B1 US14/843,167 US201514843167A US9270418B1 US 9270418 B1 US9270418 B1 US 9270418B1 US 201514843167 A US201514843167 A US 201514843167A US 9270418 B1 US9270418 B1 US 9270418B1
Authority
US
United States
Prior art keywords
code
wireless signal
superposition
binary
subset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US14/843,167
Inventor
Stephen A. Devison
Mohammad Omer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cognitive Systems Corp
Original Assignee
Cognitive Systems Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cognitive Systems Corp filed Critical Cognitive Systems Corp
Assigned to COGNITIVE SYSTEMS CORP. reassignment COGNITIVE SYSTEMS CORP. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DEVISON, STEPHEN A., OMER, MOHAMMAD
Priority to US14/843,167 priority Critical patent/US9270418B1/en
Priority to CN201580082181.XA priority patent/CN107852191B/en
Priority to KR1020187002666A priority patent/KR102101667B1/en
Priority to JP2018504725A priority patent/JP6720290B2/en
Priority to CA2992624A priority patent/CA2992624C/en
Priority to PCT/CA2015/000603 priority patent/WO2017035623A1/en
Priority to EP15902479.3A priority patent/EP3345318B1/en
Publication of US9270418B1 publication Critical patent/US9270418B1/en
Application granted granted Critical
Assigned to 2606440 ONTARIO LIMITED reassignment 2606440 ONTARIO LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: COGNITIVE SYSTEMS CORP.
Assigned to COGNITIVE SYSTEMS CORP. reassignment COGNITIVE SYSTEMS CORP. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: 2606440 ONTARIO LIMITED
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0054Maximum-likelihood or sequential decoding, e.g. Viterbi, Fano, ZJ algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • H04B1/7073Synchronisation aspects
    • H04B1/70735Code identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • H04B1/7073Synchronisation aspects
    • H04B1/7075Synchronisation aspects with code phase acquisition
    • H04B1/7077Multi-step acquisition, e.g. multi-dwell, coarse-fine or validation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • H04B1/7073Synchronisation aspects
    • H04B1/7075Synchronisation aspects with code phase acquisition
    • H04B1/708Parallel implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J13/00Code division multiplex systems
    • H04J13/16Code allocation
    • H04J13/18Allocation of orthogonal codes
    • H04J13/20Allocation of orthogonal codes having an orthogonal variable spreading factor [OVSF]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0064Concatenated codes
    • H04L1/0066Parallel concatenated codes

Definitions

  • This specification relates to identifying a code for signal decoding.
  • Communication signals can be encrypted, orthogonalized, randomized, or otherwise manipulated using a large set of codes during transmission in a communication network.
  • scrambling codes can be used to distinguish the distinct transmitters of communication signals in a communication network.
  • users are assigned orthogonal scrambling codes derived from a very large set.
  • a code is identified for decoding a wireless signal.
  • a method of decoding a wireless signal includes identifying multiple superposition codes based on a set of orthogonal binary codes.
  • the set includes a number of subsets; each superposition code corresponds to one of the subsets and includes a combination of the binary codes in the corresponding subset.
  • a first subset of the number of subsets is selected based on a correlation between a wireless signal and a first superposition code.
  • the first superposition code corresponds to the first subset.
  • a first binary code is selected from the first subset based on a correlation between the wireless signal and the first binary code.
  • the wireless signal is decoded based on the first binary code.
  • a wireless signal processing system includes a radio system configured to detect a wireless signal and a data processing system.
  • the data processing system is configured to obtain the wireless signal and superposition codes.
  • the superposition codes are based on a set of orthogonal binary codes, and the set includes a number of subsets. Each superposition code corresponds to one of the subsets and includes a combination of the binary codes in the corresponding subset.
  • a first subset is selected based on a correlation between the wireless signal and a first superposition code.
  • the first superposition code corresponds to the first subset.
  • a first binary code is selected from the first subset based on a correlation between the wireless signal and the first binary code.
  • the wireless signal is decoded based on the first binary code.
  • FIG. 1 is a block diagram showing an example wireless network.
  • FIG. 2 is a flow chart showing an example process of identifying a code for wireless signal decoding.
  • FIG. 3 is a block diagram showing aspects of an example process of identifying a code for wireless signal decoding.
  • FIG. 4 includes example binary trees showing aspects of an example process of identifying a code for wireless signal decoding.
  • a code is identified for signal decoding.
  • a communication signal e.g., a wireless signal transmitted over radio frequency (RF) spectrum or a wireline signal transmitted over copper, optical fiber, or other media
  • RF radio frequency
  • the code can be selected from a large code set.
  • the particular code used by the communication signal is identified.
  • one or more of the example techniques described here can reduce the search space for identifying the code, and thus improve the efficiency and accuracy of the search.
  • a set of codes can be combined in such a way that a single search can yield results over numerous codes.
  • 2,000 codes can be amalgamated within a single search in some instances.
  • the codes can be amalgamated in various ways depending on the application. For example, different phases and amplitudes can be applied to a given code or set of codes prior to combination, and yield different results depending on the intended performance metrics.
  • the combination of multiple orthogonal codes can be referred to as superposition, and the resulting combination of the set of codes can be referred to as a superposition code or a super-code.
  • an iterative search method can be implemented to use successive superposition codes (of decreasing size) to find the individual code, in some instances, in a maximum of log(n) steps, where n is the superposition depth of the current superposition code.
  • the superposition depth n represents the number of codes, out of the allowable code space of the communication system, that are combined to create one code in the super-code dictionary.
  • a superposition depth between these two extremes i.e., greater than 1 and less than N) can provide a tradeoff search space with the ability to discriminate codes and code-sets. In some cases, log(N/n) steps will be required to link a particular signal to a super-code, and log(N/n)+log(n) steps will be required to identify one particular code.
  • an iterative binary search can be implemented to take a current set of orthogonal codes, split it into two halves (each has a half of the total number of orthogonal codes) and correlate both sets with the communication signal.
  • the set with a higher correlation value can be selected as the winning set.
  • the winning set can be further split into two halves and the above procedure can be repeated in a tree-like fashion, eventually leading to the code that was used to encode the communication signal.
  • the selected individual code can give higher noise resolution on the user and, thus, can allow extraction of precise signal-to-noise ratio (SNR) number of the user.
  • the search time for the detection of a code can be reduced significantly.
  • one or more of the example techniques described here may help provide a more “real-time” view of users entering and leaving a network as well as detecting their specific impact on the overall network. This may include assessing the power control response, the spectral content, and many other metrics that can be attributed to a specific user in a given system.
  • the time difference of arrival (TDOA) of multiple users can be extracted from the sensor node, for example, by identifying a peak in the correlation result.
  • TDOA time difference of arrival
  • Such ranging information can be used to cluster users within a certain geographical loci.
  • the ranging information can also be used by multiple sensing nodes using triangulation to identify more precise user location.
  • the magnitude of a correlation result can be used to identify the distance of a user from a sensing terminal. Such information can be combined with the knowledge of base station location to aid in the precise detection of the user location.
  • WCDMA Wideband Code Division Multiple Access
  • the techniques described here can be applied to other systems that use large sets of codes.
  • one or more of the example techniques described here can be used without dependence on a connection to either a user or base station.
  • one or more of the example techniques described here can offer a low-complexity search space without requiring a handshaking mechanism.
  • FIG. 1 is a block diagram showing an example wireless network 100 .
  • the example wireless network 100 includes multiple user equipment (UE, also referred to as “mobile devices” or “mobile nodes”) 105 , multiple wireless sensor devices (also referred to as “RF sensors,” “sensors,” or “spectrum inspection (SI) boxes”) 110 , and a base station 120 .
  • the wireless network 100 can include additional or different components.
  • the wireless network 100 can include more than one base station and the UE can move from a cell covered by one base station to another cell covered by another base station.
  • a wireless network can be arranged as shown in FIG. 1 or in another manner.
  • a base station 120 typically provides wireless service for multiple user equipment (e.g., smartphones, tablets, Internet-of-things devices, and other cellular-connected devices, etc.) in a broad region, for example, over an entire cell of a cellular network (e.g., a cellular voice network, cellular data network, etc.).
  • the base station 120 can wirelessly transmit communication signals to the UE 105 in the downlink direction, and the multiple UEs 105 can transmit communication signals to the base station 120 in the uplink direction.
  • the communication signals can be formatted according to a particular communication standard or protocol, for example, 2G standards such as Global System for Mobile (GSM) and Enhanced Data rates for GSM Evolution (EDGE) or EGPRS; 3G standards such as Code division multiple access (CDMA), Universal Mobile Telecommunications System (UMTS), and Time Division Synchronous Code Division Multiple Access (TD-SCDMA); 4G standards such as Long-Term Evolution (LTE) and LTE-Advanced (LTE-A); wireless local area network (WLAN) or WiFi standards such as IEEE 802.11, Bluetooth, near-field communications (NFC), millimeter communications; or multiple of these or other types of wireless communication standards.
  • GSM Global System for Mobile
  • EDGE Enhanced Data rates for GSM Evolution
  • EGPRS EGPRS
  • 3G standards such as Code division multiple access (CDMA), Universal Mobile Telecommunications System (UMTS), and Time Division Synchronous Code Division Multiple Access (TD-SCDMA)
  • 4G standards such as Long-Term Evolution (LTE) and LTE-Advanced
  • the uplink communication signals transmitted by each UE can be scrambled with a scrambling code.
  • the scrambling code can be selected from a large set of orthogonal binary codes.
  • the base station 120 can de-scramble the received signal by searching over the entire set of scrambling codes to identify the particular scrambling code used by the UE 105 for decoding the received signal.
  • de-scrambling processes of the type shown in FIGS. 2 , 3 and 4 can improve the accuracy and efficiency of identifying the matching scrambling code.
  • a UE 105 can receive wireless signals transmitted from more than one base station 120 . Similarly, to distinguish the multiple base stations, the signals transmitted by each base station 120 can be scrambled with a particular scrambling code. The UE can perform the example techniques to identify the particular scrambling code used by respective base stations for decoding the received downlink signals from the base stations.
  • wireless sensor devices 110 distributed over a geographic region at respective physical locations with spatial coordinates (x i , y i , z i ).
  • the wireless sensor devices 110 can be identical or similar to each other, or a variety of different wireless sensor devices 110 can interact with the wireless network 100 .
  • the locations of the wireless sensor devices 110 can be fixed, or they can be at dynamic or otherwise movable locations.
  • the example wireless sensor devices 110 can monitor and analyze the RF spectrum at the respective locations, detect RF signals transmitted by the UE 105 , and perform analyses of wireless communication services available at the associated geographic location. For instance, the wireless sensor device 110 can detect a wireless signal and decode the wireless signal formatted according to a wireless communication standard, such as, for example, any of the communication standards mentioned above. The example wireless sensor devices 110 can identify data packets and frames, and extract control information and traffic data of the detected wireless signal.
  • the wireless sensor device 110 can extract synchronization information, cells and services identifiers, and quality measurements of RF channels (e.g., channel quality indicator (CQI)), and derive spectral-usage parameters and other information based on these and other control information and traffic data of the wireless signal detected by the wireless sensor device 110 .
  • CQI channel quality indicator
  • the wireless sensor device 110 in order to decode and analyze the detected wireless signal transmitted by a UE 105 or a base station, can perform a decoding process to identify a particular scrambling code used by the particular UE 105 or the base station 120 .
  • the wireless sensor devices 110 may include processors or other computing hardware configured to perform on or more of the operations shown in FIGS. 2 , 3 and 4 .
  • other components of the example wireless network 100 can use the same or similar processes, for example, for searching or otherwise identifying a binary code among a number of binary codes.
  • FIG. 2 is a flow chart showing an example process 200 for identifying a code for wireless signal decoding.
  • the example process 200 can be implemented by a data processor or other computing hardware executing computer instructions stored on computer-readable media of a UE, a base station, a wireless sensor device, or other component of a communication system (e.g., of the example wireless network 100 ).
  • the example process 200 , individual operations of the process 200 , or groups of operations may be iterated or performed in series or in parallel (for example, using multiple threads). In some cases, the example process 200 may include additional, fewer, or different operations performed in the order shown or in a different order.
  • a wireless signal is received, for example, wirelessly by operation of a radio interface of a UE, a base station, a wireless sensor device, or other component of a communication system.
  • the wireless signal can be a signal that has been encrypted, orthogonalized, or otherwise manipulated with a binary code.
  • the binary code can be an individual code (e.g., a scrambling code, a spreading code, or another other type of code that is selected from a set of orthogonal codes) applied to the wireless signal before transmission.
  • the binary code can be selected from a set or a pool of binary codes, for example, from the allowable code space of a wireless communication system.
  • the binary code can be a series of binary values, where each value in the series is one of two possible values (e.g., selected from the set (0,1), the set ( ⁇ 1,1), or another binary set).
  • the binary code that was applied to the wireless signal (which can be referred to as the target binary code) is identified from the full set of binary codes in an iterative manner.
  • a current set of binary codes is identified.
  • the current set of binary codes can be the full or complete set of binary codes that the target binary code was selected from (e.g., the allowable code space of a wireless communication system.
  • the number of binary codes included in the current set can decrease upon each iteration.
  • the current set is divided into a number of (e.g., N) inspection subsets (or groups) of binary codes for the current iteration.
  • the number of binary codes in each inspection subset can be the same or different.
  • the number of inspection subsets i.e., the value of N
  • N can remain as 2 inspection subsets, where each subset has half of the number of binary codes of that of the previous subset.
  • a superposition code corresponding to each of the N inspection subsets can is computed.
  • computing the superposition codes can include manipulation of a phase, amplitude, or both phase and amplitude of each binary code within the subset.
  • computing the superposition code corresponding to a subset can include generating phased codes by applying a distinct phase to each binary code in the subset, and summing the phased codes.
  • the phased codes can be generated by applying a distinct phase and distinct amplitude to each binary code in the subset. Example processes for computing the superposition code are described below with respect to FIG. 3 .
  • FIG. 3 is a block diagram 300 showing example aspects of identifying a code for wireless signal decoding.
  • the complete code set 310 is divided into n groups (inspection subsets) 320 a , 320 b , . . . , 320 n .
  • Each group includes a respective number of binary codes, Code 0, Code 1, Code, . . . , Code m (collectedly referred to as 330 a , 330 b , . . . , 330 n , respectively for each group).
  • FIG. 3 shows an example amplitude process and phase process that can apply phase and amplitude functions to each of the binary codes, Code 0, Code 1, Code, . . .
  • Code m For example, a distinct phase and distinct amplitude can be applied to each binary code in Group 1 ( 320 a ).
  • I′ and Q′ represent the in-phase and quadrature components of the phased Code 0, respectively; and I and Q represent the in-phase and quadrature components of Code 0 (unphased), respectively.
  • the phased Code 0 is obtained by shifting Code 0 by ⁇ in phase, scaling the in-phase component of Code 0 by A in amplitude, and scaling the quadrature component of Code 0 by B in amplitude.
  • I′ C ( I *cos( b ) ⁇ Q *sin( b )) (3)
  • Q′ D ( I *cos( b )+ Q *sin( b )) (4)
  • I′ and Q′ represent the in-phase and quadrature components of phased Code 1, respectively; and I and Q represent the in-phase and quadrature components of Code 1 (unphased), respectively.
  • phased Code 1 is obtained by shifting the Code 1 by b in phase, scaling the in-phase component of Code 1 by C in amplitude and scaling the quadrature component of Code 1 by D in amplitude.
  • amplitude and phase manipulation are applied to Code 2 at 346 , Code m at 348 , etc.
  • the multiple individual binary codes are summed together at 360 a and result in a superposition code 370 a for Group 1 ( 320 a ). Similar or different amplitude and phase manipulations can be applied to codes in other groups.
  • the values of phase shift e.g., a, b, r
  • amplitude change e.g., A, B, C, D, . . . , X and Y
  • the amplitudes can be random values while the phases can be equally spaced from 0 to 2*pi.
  • such amplitude and phase manipulation can reduce or eliminate correlations that may exist that can cause the wireless signal to be limited. Additional or different functions can be applied to the phase and amplitude of each binary code in the inspection subset.
  • superposition code correlations between the wireless signal and the superposition codes are computed.
  • the superposition code correlations can include the respective correlations between the wireless signal and the respective superposition codes of the inspection subsets.
  • the correlation can be obtained, for example, based on a dot product or an inner product between the received signal and the superposition code.
  • the correlation can be the normalized dot product (e.g., normalized by the magnitudes of the received signal and the superposition code).
  • the superposition code correlation can be computed based on the covariance, correlation coefficient, or other indicators of dependence or other statistical relationships between the wireless signal and the superposition code.
  • a received signal 305 is correlated with the superposition code 370 a at correlator 380 a , resulting in a superposition code correlation 390 a .
  • the superposition code correlation 390 a can be obtained, for example, based on a dot product or an inner product between the received signal 305 and the superposition code 370 a normalized by the magnitudes of the received signal 305 and the superposition code 370 a .
  • a superposition code correlation 390 b can be obtained by correlating the received signal 305 with the superposition code 370 b at correlator 380 b for Group 2 ( 320 b )
  • a superposition code correlation 390 n can be obtained by correlating the received signal 305 with the superposition code 370 n at correlator 380 n for Group n ( 320 n ).
  • N superposition code correlations can be obtained for the N inspection subsets for the current iteration.
  • a first subset can be selected based on a peak in the correlation between the wireless signal and the first superposition code of the first subset.
  • the N superposition code correlations only one correlation has a peak in the correlation values.
  • the superposition code correlation 390 a of Group 1 has peak values while the rest of the superposition code correlations 390 b , . . . , 390 n have relatively constant low correlation values.
  • the Group 1 can be selected as the first subset or the winning subset that contains the target binary code that was applied to the wireless signal.
  • the first subset can be selected based on existing peak detection algorithms, for example, by setting a predetermined or configurable threshold and identifying correlations that include values greater than the threshold. In some implementations, more than one superposition code correlation can include peak values. Consequently, the corresponding inspection subsets can be selected as candidate subsets for identifying the target binary code. The first subset can be one of the candidate subsets.
  • the first subset at the current iteration may contain only one individual binary code, and the only binary code in the first subset can be identified as the target binary code.
  • the first subset at the current iteration may contain a small number of individual binary codes (e.g., less than 10, 100, etc.). Selecting the first binary code from the first subset can include computing individual code correlations between the wireless signal and each of the binary codes in the first subset and selecting the first binary code based on a peak in the correlation between the wireless signal and the first binary code.
  • the example process 200 can then proceed to 280 .
  • the first subset at the current iteration may contain a large number of individual binary codes (e.g., more than 10, 100, etc.). For instance, selecting an individual binary code from the large number of codes in the first subset may be computationally expensive. In such cases, the example process 200 can return to 220 . The first subset (or another subset) can then be identified as the current set for the next iteration. The example process 200 can then proceed to 230 and repeat the iterative process until the target binary code is identified.
  • a large number of individual binary codes e.g., more than 10, 100, etc.
  • selecting an individual binary code from the large number of codes in the first subset may be computationally expensive.
  • the example process 200 can return to 220 .
  • the first subset (or another subset) can then be identified as the current set for the next iteration.
  • the example process 200 can then proceed to 230 and repeat the iterative process until the target binary code is identified.
  • the wireless signal is decoded by operation of a data processor based on the first binary code.
  • the wireless signal can be de-scrambled or decrypted based on the first binary code and the transmitter of the wireless signal can be identified.
  • additional or different operations such as channel decoding and source decoding, can be performed on the wireless signal after applying the first binary code, for example, to recover the data information contained in the wireless signal.
  • FIG. 4 includes example binary trees showing aspects of an example process 400 for identifying a code for wireless signal decoding.
  • the full set of binary codes is divided into G groups (or inspection subsets) in the first iteration.
  • Group 1 includes binary codes C 1 , C 2 , . . . , C N1
  • Group 2 includes binary codes C N1+1 , C N2 , C N2 , etc.
  • Group G includes binary codes C Nn+1 , C Nn+2 , . . . , C Nf .
  • the number of binary codes in the G groups can be the same or different.
  • a superposition code and a superposition correlation Ti can be computed for each of the G groups, for example, according to the example operations described with respect to 240 and 250 of the example process 200 or in another manner.
  • the superposition correlation contains peak values (denoted as “pos” in FIG. 4 )
  • the corresponding group can be selected as the candidate group.
  • both Group 1 and Group G return superposition correlations T 1 and T G that have peak values.
  • Group 1 and Group G can be selected as the candidate groups to continue searching the target binary code within the group.
  • the superposition correlation T 2 in Group 2 does not contain peak values (denoted as “neg” in FIG. 4 )
  • the Group 2 is removed from consideration for searching of the target binary code.
  • FIG. 4 shows a binary search tree within each of the candidate groups, Group 1 and Group G.
  • the search within Group 1 includes a binary search tree with the root node 410 that includes the binary codes C 1 , C 2 , . . . , C N1 .
  • These codes can be split into two vectors (or inspection subsets) 420 a and 420 b .
  • Respective superposition code and superposition correlation T can be computed for each of the vectors 420 a and 420 b .
  • the vector 420 a can be discarded from consideration while the vector 420 b can be selected to continue searching for the target binary code.
  • the vector 420 b is further split into two vectors 430 a and 430 b .
  • the iterative search process can be repeated until an individual binary code is found that returns a correlation including one or more peak correlation values. In some instances, no individual binary code is found to have peak correlation values within the last inspection subsect or vector. The latter case implies that the target binary code is not included in Group 1.
  • a binary search tree starts with root node 450 that includes the binary codes C Nn+1 , C Nn+2 , . . . , C Nf .
  • the binary search tree can include different levels of inspection subsets or vectors such as 460 a and 460 b , and 470 a and 470 b .
  • the binary search tree can end, for instance, when the last level of inspection subset includes a single binary code.
  • only a single binary code among the G groups is identified as having a correlation including peak correlation values.
  • the single binary code can be identified as the target binary code (or the first binary code at 270 of the example process 200 ).
  • more than one binary code among the G groups can be identified as having correlations including peak correlation values. In this case, the correlations of these binary codes can be compared.
  • the binary code with the maximum correlation values can be identified as the target binary code (or the first binary code at 270 of the example process 200 ).
  • the target binary code can be selected from these binary codes based on other criteria.
  • a computer system such as, for example, a computer system that includes one or more data processing apparatus that operates on data stored on one or more computer-readable storage devices or received from other sources.
  • data processing apparatus encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing.
  • the apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
  • the apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them.
  • code that creates an execution environment for the computer program in question e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them.
  • the apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
  • a computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment.
  • a computer program may, but need not, correspond to a file in a file system.
  • a program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code).
  • a computer program can be deployed to be executed on one computing device or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
  • Some of the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output.
  • the processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
  • processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computing device.
  • a processor will receive instructions and data from a read-only memory or a random access memory or both.
  • a computing device typically includes a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data.
  • a computing device will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more storage devices for storing data. However, a computing device need not have such devices.
  • a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few.
  • Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
  • the processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
  • subject matter described in this specification can be implemented on a computer having a display device, e.g., an LCD (liquid crystal display) screen for displaying information to the user and a keyboard and a pointing device, e.g., touch screen, stylus, mouse, etc., by which the user can provide input to the computer.
  • a display device e.g., an LCD (liquid crystal display) screen for displaying information to the user
  • a keyboard and a pointing device e.g., touch screen, stylus, mouse, etc.
  • Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
  • a computing device can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on
  • Some of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computing device having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components.
  • the components of the system can be interconnected by any form or medium of digital data communication, e.g., a data network.
  • the computing system can include clients and servers.
  • a client and server are generally remote from each other and typically interact through a data network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
  • a server transmits data to a client device. Data generated at the client device can be received from the client device at the server.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Artificial Intelligence (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

In some aspects, techniques for wireless signal decoding are described. In some instances, a number of superposition codes are computed based on a set of orthogonal binary codes. The set of orthogonal binary codes includes multiple subsets; each superposition code corresponds to one of the subsets and includes a combination of the binary codes in the corresponding subset. One of the subsets is selected based on a correlation between a wireless signal and the superposition code that corresponds to the subset. One of the binary codes is then selected from the selected subset based on a correlation between the wireless signal and the binary code. The wireless signal is decoded based on the selected binary code.

Description

BACKGROUND
This specification relates to identifying a code for signal decoding.
Communication signals can be encrypted, orthogonalized, randomized, or otherwise manipulated using a large set of codes during transmission in a communication network. For example, scrambling codes can be used to distinguish the distinct transmitters of communication signals in a communication network. In the case of WCDMA uplink transmissions, users are assigned orthogonal scrambling codes derived from a very large set. A set can have a large number of codes (e.g., 224=16,777,216).
SUMMARY
In a general aspect, a code is identified for decoding a wireless signal.
In some aspects, a method of decoding a wireless signal includes identifying multiple superposition codes based on a set of orthogonal binary codes. The set includes a number of subsets; each superposition code corresponds to one of the subsets and includes a combination of the binary codes in the corresponding subset. A first subset of the number of subsets is selected based on a correlation between a wireless signal and a first superposition code. The first superposition code corresponds to the first subset. A first binary code is selected from the first subset based on a correlation between the wireless signal and the first binary code. The wireless signal is decoded based on the first binary code.
In some aspects, a wireless signal processing system includes a radio system configured to detect a wireless signal and a data processing system. The data processing system is configured to obtain the wireless signal and superposition codes. The superposition codes are based on a set of orthogonal binary codes, and the set includes a number of subsets. Each superposition code corresponds to one of the subsets and includes a combination of the binary codes in the corresponding subset. A first subset is selected based on a correlation between the wireless signal and a first superposition code. The first superposition code corresponds to the first subset. A first binary code is selected from the first subset based on a correlation between the wireless signal and the first binary code. The wireless signal is decoded based on the first binary code.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.
DESCRIPTION OF DRAWINGS
FIG. 1 is a block diagram showing an example wireless network.
FIG. 2 is a flow chart showing an example process of identifying a code for wireless signal decoding.
FIG. 3 is a block diagram showing aspects of an example process of identifying a code for wireless signal decoding.
FIG. 4 includes example binary trees showing aspects of an example process of identifying a code for wireless signal decoding.
Like reference symbols in the various drawings indicate like elements.
DETAILED DESCRIPTION
In some aspects of what is described here, a code is identified for signal decoding. A communication signal (e.g., a wireless signal transmitted over radio frequency (RF) spectrum or a wireline signal transmitted over copper, optical fiber, or other media) can be multiplied, encrypted, or otherwise manipulated with a code before transmission. The code can be selected from a large code set. To decode the received communication signal, the particular code used by the communication signal is identified. In some implementations, one or more of the example techniques described here can reduce the search space for identifying the code, and thus improve the efficiency and accuracy of the search.
In some implementations, a set of codes can be combined in such a way that a single search can yield results over numerous codes. Using the uplink WCDMA scenario as an example, 2,000 codes can be amalgamated within a single search in some instances. As such, the overall search space can be reduced, for example, from 16 million (224=16,777,216) to 8,000. The codes can be amalgamated in various ways depending on the application. For example, different phases and amplitudes can be applied to a given code or set of codes prior to combination, and yield different results depending on the intended performance metrics.
In some implementations, the combination of multiple orthogonal codes can be referred to as superposition, and the resulting combination of the set of codes can be referred to as a superposition code or a super-code. Once a certain superposition code has been confirmed to be present, an iterative search method can be implemented to use successive superposition codes (of decreasing size) to find the individual code, in some instances, in a maximum of log(n) steps, where n is the superposition depth of the current superposition code. Here, the superposition depth n represents the number of codes, out of the allowable code space of the communication system, that are combined to create one code in the super-code dictionary.
The superposition depth n can generally range from 1 to N, where N represents the total number of codes in the allowable code space of the communication system. If n=N, there would be only one super-code in the super-code dictionary; all signals would correlate and the super-code dictionary would have no discriminating ability. If n=1, the super-code dictionary would be equivalent to the allowable code space of the communication system, and no speedup would be obtained. A superposition depth between these two extremes (i.e., greater than 1 and less than N) can provide a tradeoff search space with the ability to discriminate codes and code-sets. In some cases, log(N/n) steps will be required to link a particular signal to a super-code, and log(N/n)+log(n) steps will be required to identify one particular code.
For example, an iterative binary search can be implemented to take a current set of orthogonal codes, split it into two halves (each has a half of the total number of orthogonal codes) and correlate both sets with the communication signal. The set with a higher correlation value can be selected as the winning set. The winning set can be further split into two halves and the above procedure can be repeated in a tree-like fashion, eventually leading to the code that was used to encode the communication signal.
In some implementations, the selected individual code can give higher noise resolution on the user and, thus, can allow extraction of precise signal-to-noise ratio (SNR) number of the user. In some implementations, the search time for the detection of a code can be reduced significantly. For example, in the monitoring of WCDMA uplink quality, one or more of the example techniques described here may help provide a more “real-time” view of users entering and leaving a network as well as detecting their specific impact on the overall network. This may include assessing the power control response, the spectral content, and many other metrics that can be attributed to a specific user in a given system.
In some implementations, the time difference of arrival (TDOA) of multiple users can be extracted from the sensor node, for example, by identifying a peak in the correlation result. Such ranging information can be used to cluster users within a certain geographical loci. The ranging information can also be used by multiple sensing nodes using triangulation to identify more precise user location. In some implementations, the magnitude of a correlation result can be used to identify the distance of a user from a sensing terminal. Such information can be combined with the knowledge of base station location to aid in the precise detection of the user location.
Although WCDMA is described as an example application, the techniques described here can be applied to other systems that use large sets of codes. In some instances, one or more of the example techniques described here can be used without dependence on a connection to either a user or base station. In some instances, one or more of the example techniques described here can offer a low-complexity search space without requiring a handshaking mechanism.
FIG. 1 is a block diagram showing an example wireless network 100. The example wireless network 100 includes multiple user equipment (UE, also referred to as “mobile devices” or “mobile nodes”) 105, multiple wireless sensor devices (also referred to as “RF sensors,” “sensors,” or “spectrum inspection (SI) boxes”) 110, and a base station 120. The wireless network 100 can include additional or different components. For example, the wireless network 100 can include more than one base station and the UE can move from a cell covered by one base station to another cell covered by another base station. In some implementations, a wireless network can be arranged as shown in FIG. 1 or in another manner.
A base station 120 typically provides wireless service for multiple user equipment (e.g., smartphones, tablets, Internet-of-things devices, and other cellular-connected devices, etc.) in a broad region, for example, over an entire cell of a cellular network (e.g., a cellular voice network, cellular data network, etc.). The base station 120 can wirelessly transmit communication signals to the UE 105 in the downlink direction, and the multiple UEs 105 can transmit communication signals to the base station 120 in the uplink direction. The communication signals can be formatted according to a particular communication standard or protocol, for example, 2G standards such as Global System for Mobile (GSM) and Enhanced Data rates for GSM Evolution (EDGE) or EGPRS; 3G standards such as Code division multiple access (CDMA), Universal Mobile Telecommunications System (UMTS), and Time Division Synchronous Code Division Multiple Access (TD-SCDMA); 4G standards such as Long-Term Evolution (LTE) and LTE-Advanced (LTE-A); wireless local area network (WLAN) or WiFi standards such as IEEE 802.11, Bluetooth, near-field communications (NFC), millimeter communications; or multiple of these or other types of wireless communication standards. In some implementations, other types of communication (e.g., non-standardized signals and communication protocols) are used.
In some implementations, to distinguish the multiple UEs 105 served by the same base station 120, the uplink communication signals transmitted by each UE can be scrambled with a scrambling code. The scrambling code can be selected from a large set of orthogonal binary codes. Once the base station 120 receives the scrambled wireless signal, the base station 120 can de-scramble the received signal by searching over the entire set of scrambling codes to identify the particular scrambling code used by the UE 105 for decoding the received signal. In some cases, de-scrambling processes of the type shown in FIGS. 2, 3 and 4 can improve the accuracy and efficiency of identifying the matching scrambling code.
In some implementations, a UE 105 can receive wireless signals transmitted from more than one base station 120. Similarly, to distinguish the multiple base stations, the signals transmitted by each base station 120 can be scrambled with a particular scrambling code. The UE can perform the example techniques to identify the particular scrambling code used by respective base stations for decoding the received downlink signals from the base stations.
Also shown in FIG. 1 are a number of wireless sensor devices 110 distributed over a geographic region at respective physical locations with spatial coordinates (xi, yi, zi). The wireless sensor devices 110 can be identical or similar to each other, or a variety of different wireless sensor devices 110 can interact with the wireless network 100. The locations of the wireless sensor devices 110 can be fixed, or they can be at dynamic or otherwise movable locations.
The example wireless sensor devices 110 can monitor and analyze the RF spectrum at the respective locations, detect RF signals transmitted by the UE 105, and perform analyses of wireless communication services available at the associated geographic location. For instance, the wireless sensor device 110 can detect a wireless signal and decode the wireless signal formatted according to a wireless communication standard, such as, for example, any of the communication standards mentioned above. The example wireless sensor devices 110 can identify data packets and frames, and extract control information and traffic data of the detected wireless signal. For example, the wireless sensor device 110 can extract synchronization information, cells and services identifiers, and quality measurements of RF channels (e.g., channel quality indicator (CQI)), and derive spectral-usage parameters and other information based on these and other control information and traffic data of the wireless signal detected by the wireless sensor device 110.
In some implementations, in order to decode and analyze the detected wireless signal transmitted by a UE 105 or a base station, the wireless sensor device 110 can perform a decoding process to identify a particular scrambling code used by the particular UE 105 or the base station 120. For instance, the wireless sensor devices 110 may include processors or other computing hardware configured to perform on or more of the operations shown in FIGS. 2, 3 and 4. In some implementations, other components of the example wireless network 100 can use the same or similar processes, for example, for searching or otherwise identifying a binary code among a number of binary codes.
FIG. 2 is a flow chart showing an example process 200 for identifying a code for wireless signal decoding. The example process 200 can be implemented by a data processor or other computing hardware executing computer instructions stored on computer-readable media of a UE, a base station, a wireless sensor device, or other component of a communication system (e.g., of the example wireless network 100). The example process 200, individual operations of the process 200, or groups of operations may be iterated or performed in series or in parallel (for example, using multiple threads). In some cases, the example process 200 may include additional, fewer, or different operations performed in the order shown or in a different order.
At 210, a wireless signal is received, for example, wirelessly by operation of a radio interface of a UE, a base station, a wireless sensor device, or other component of a communication system. The wireless signal can be a signal that has been encrypted, orthogonalized, or otherwise manipulated with a binary code. The binary code can be an individual code (e.g., a scrambling code, a spreading code, or another other type of code that is selected from a set of orthogonal codes) applied to the wireless signal before transmission. The binary code can be selected from a set or a pool of binary codes, for example, from the allowable code space of a wireless communication system. The binary code can be a series of binary values, where each value in the series is one of two possible values (e.g., selected from the set (0,1), the set (−1,1), or another binary set). In the example shown in FIG. 2, to decode the received wireless signal, the binary code that was applied to the wireless signal (which can be referred to as the target binary code) is identified from the full set of binary codes in an iterative manner.
At 220, for the current iteration, a current set of binary codes is identified. For example, for the first iteration, the current set of binary codes can be the full or complete set of binary codes that the target binary code was selected from (e.g., the allowable code space of a wireless communication system. In some implementations, the number of binary codes included in the current set can decrease upon each iteration.
At 230, the current set is divided into a number of (e.g., N) inspection subsets (or groups) of binary codes for the current iteration. The number of binary codes in each inspection subset can be the same or different. In some implementations, the number of inspection subsets (i.e., the value of N) can vary or remain the same from iteration to iteration. For example, the number of inspection subsets can be larger in the first few iterations while becoming smaller in the later iterations. As an example, for the first iteration, the full set can be evenly divided into N=8000 subsets (e.g., as in the WCDMA example described above). In the remaining iterations, N can remain as 2, and each subsequent set can be evenly divided into 2 inspection subsets, where each subset has half of the number of binary codes of that of the previous subset.
At 240, a superposition code corresponding to each of the N inspection subsets can is computed. In some implementations, computing the superposition codes can include manipulation of a phase, amplitude, or both phase and amplitude of each binary code within the subset. For example, computing the superposition code corresponding to a subset can include generating phased codes by applying a distinct phase to each binary code in the subset, and summing the phased codes. The phased codes can be generated by applying a distinct phase and distinct amplitude to each binary code in the subset. Example processes for computing the superposition code are described below with respect to FIG. 3.
FIG. 3 is a block diagram 300 showing example aspects of identifying a code for wireless signal decoding. As shown in FIG. 3, the complete code set 310 is divided into n groups (inspection subsets) 320 a, 320 b, . . . , 320 n. Each group includes a respective number of binary codes, Code 0, Code 1, Code, . . . , Code m (collectedly referred to as 330 a, 330 b, . . . , 330 n, respectively for each group). FIG. 3 shows an example amplitude process and phase process that can apply phase and amplitude functions to each of the binary codes, Code 0, Code 1, Code, . . . , Code m. For example, a distinct phase and distinct amplitude can be applied to each binary code in Group 1 (320 a). As a specific example, as shown at 342 for Code 0:
I′=A(I*cos(a)−Q*sin(a)); and  (1)
Q′=B(I*cos(a)+Q*sin(a)).  (2)
In the example shown in Equations (1) and (2), I′ and Q′ represent the in-phase and quadrature components of the phased Code 0, respectively; and I and Q represent the in-phase and quadrature components of Code 0 (unphased), respectively. As shown in Equations (1) and (2), the phased Code 0 is obtained by shifting Code 0 by α in phase, scaling the in-phase component of Code 0 by A in amplitude, and scaling the quadrature component of Code 0 by B in amplitude. Similarly, for Code 1, as shown at 344,
I′=C(I*cos(b)−Q*sin(b))  (3)
Q′=D(I*cos(b)+Q*sin(b))  (4)
In Equations (3) and (4), I′ and Q′ represent the in-phase and quadrature components of phased Code 1, respectively; and I and Q represent the in-phase and quadrature components of Code 1 (unphased), respectively. As shown in Equations (3) and (4), phased Code 1 is obtained by shifting the Code 1 by b in phase, scaling the in-phase component of Code 1 by C in amplitude and scaling the quadrature component of Code 1 by D in amplitude.
Similarly, amplitude and phase manipulation are applied to Code 2 at 346, Code m at 348, etc. After the phase and amplitude manipulation, the multiple individual binary codes are summed together at 360 a and result in a superposition code 370 a for Group 1 (320 a). Similar or different amplitude and phase manipulations can be applied to codes in other groups.
In some implementations, the values of phase shift (e.g., a, b, r) and amplitude change (e.g., A, B, C, D, . . . , X and Y) can be selected randomly or in various different ways. For example, the amplitudes can be random values while the phases can be equally spaced from 0 to 2*pi. In some implementations, such amplitude and phase manipulation can reduce or eliminate correlations that may exist that can cause the wireless signal to be limited. Additional or different functions can be applied to the phase and amplitude of each binary code in the inspection subset.
At 250, superposition code correlations between the wireless signal and the superposition codes are computed. The superposition code correlations can include the respective correlations between the wireless signal and the respective superposition codes of the inspection subsets. The correlation can be obtained, for example, based on a dot product or an inner product between the received signal and the superposition code. In some implementations, the correlation can be the normalized dot product (e.g., normalized by the magnitudes of the received signal and the superposition code). In some implementations, the superposition code correlation can be computed based on the covariance, correlation coefficient, or other indicators of dependence or other statistical relationships between the wireless signal and the superposition code.
For example, as shown in FIG. 3, for Group 1, a received signal 305 is correlated with the superposition code 370 a at correlator 380 a, resulting in a superposition code correlation 390 a. The superposition code correlation 390 a can be obtained, for example, based on a dot product or an inner product between the received signal 305 and the superposition code 370 a normalized by the magnitudes of the received signal 305 and the superposition code 370 a. Similarly, a superposition code correlation 390 b can be obtained by correlating the received signal 305 with the superposition code 370 b at correlator 380 b for Group 2 (320 b), and a superposition code correlation 390 n can be obtained by correlating the received signal 305 with the superposition code 370 n at correlator 380 n for Group n (320 n). Thus, N superposition code correlations can be obtained for the N inspection subsets for the current iteration.
At 260, a first subset can be selected based on a peak in the correlation between the wireless signal and the first superposition code of the first subset. In some implementations, among the N superposition code correlations, only one correlation has a peak in the correlation values. For example, as shown in FIG. 3, only the superposition code correlation 390 a of Group 1 has peak values while the rest of the superposition code correlations 390 b, . . . , 390 n have relatively constant low correlation values. As such, the Group 1 can be selected as the first subset or the winning subset that contains the target binary code that was applied to the wireless signal. In some implementations, the first subset can be selected based on existing peak detection algorithms, for example, by setting a predetermined or configurable threshold and identifying correlations that include values greater than the threshold. In some implementations, more than one superposition code correlation can include peak values. Consequently, the corresponding inspection subsets can be selected as candidate subsets for identifying the target binary code. The first subset can be one of the candidate subsets.
At 270, whether a first binary code is selected from the first subset as the target binary code can be determined. For instance, the first subset at the current iteration may contain only one individual binary code, and the only binary code in the first subset can be identified as the target binary code. As another example, the first subset at the current iteration may contain a small number of individual binary codes (e.g., less than 10, 100, etc.). Selecting the first binary code from the first subset can include computing individual code correlations between the wireless signal and each of the binary codes in the first subset and selecting the first binary code based on a peak in the correlation between the wireless signal and the first binary code. The example process 200 can then proceed to 280.
In some implementations, the first subset at the current iteration may contain a large number of individual binary codes (e.g., more than 10, 100, etc.). For instance, selecting an individual binary code from the large number of codes in the first subset may be computationally expensive. In such cases, the example process 200 can return to 220. The first subset (or another subset) can then be identified as the current set for the next iteration. The example process 200 can then proceed to 230 and repeat the iterative process until the target binary code is identified.
At 280, the wireless signal is decoded by operation of a data processor based on the first binary code. For example, the wireless signal can be de-scrambled or decrypted based on the first binary code and the transmitter of the wireless signal can be identified. In some implementations, additional or different operations, such as channel decoding and source decoding, can be performed on the wireless signal after applying the first binary code, for example, to recover the data information contained in the wireless signal.
FIG. 4 includes example binary trees showing aspects of an example process 400 for identifying a code for wireless signal decoding. As shown in FIG. 4, the full set of binary codes is divided into G groups (or inspection subsets) in the first iteration. Group 1 includes binary codes C1, C2, . . . , CN1, Group 2 includes binary codes CN1+1, CN2, CN2, etc., and Group G includes binary codes CNn+1, CNn+2, . . . , CNf. The number of binary codes in the G groups can be the same or different.
A superposition code and a superposition correlation Ti (i=1, 2, . . . , G) can be computed for each of the G groups, for example, according to the example operations described with respect to 240 and 250 of the example process 200 or in another manner. When the superposition correlation contains peak values (denoted as “pos” in FIG. 4), the corresponding group can be selected as the candidate group. For example, as shown in FIG. 4, both Group 1 and Group G return superposition correlations T1 and TG that have peak values. As such, Group 1 and Group G can be selected as the candidate groups to continue searching the target binary code within the group. On the other hand, for example, if the superposition correlation T2 in Group 2 does not contain peak values (denoted as “neg” in FIG. 4), then the Group 2 is removed from consideration for searching of the target binary code.
FIG. 4 shows a binary search tree within each of the candidate groups, Group 1 and Group G. For example, the search within Group 1 includes a binary search tree with the root node 410 that includes the binary codes C1, C2, . . . , CN1. These codes can be split into two vectors (or inspection subsets) 420 a and 420 b. Respective superposition code and superposition correlation T can be computed for each of the vectors 420 a and 420 b. By performing peak detection of the superposition correlations, the vector 420 a can be discarded from consideration while the vector 420 b can be selected to continue searching for the target binary code. As shown, the vector 420 b is further split into two vectors 430 a and 430 b. The iterative search process can be repeated until an individual binary code is found that returns a correlation including one or more peak correlation values. In some instances, no individual binary code is found to have peak correlation values within the last inspection subsect or vector. The latter case implies that the target binary code is not included in Group 1.
Similar operations can be performed on Group G, where a binary search tree starts with root node 450 that includes the binary codes CNn+1, CNn+2, . . . , CNf. The binary search tree can include different levels of inspection subsets or vectors such as 460 a and 460 b, and 470 a and 470 b. The binary search tree can end, for instance, when the last level of inspection subset includes a single binary code.
In some implementations, only a single binary code among the G groups is identified as having a correlation including peak correlation values. In this case, the single binary code can be identified as the target binary code (or the first binary code at 270 of the example process 200). In some implementations, more than one binary code among the G groups can be identified as having correlations including peak correlation values. In this case, the correlations of these binary codes can be compared. In some implementations, the binary code with the maximum correlation values can be identified as the target binary code (or the first binary code at 270 of the example process 200). In some implementations, the target binary code can be selected from these binary codes based on other criteria.
Some of the operations described in this specification can be implemented as operations performed by a computer system, such as, for example, a computer system that includes one or more data processing apparatus that operates on data stored on one or more computer-readable storage devices or received from other sources. The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code). A computer program can be deployed to be executed on one computing device or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
Some of the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computing device. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. A computing device typically includes a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computing device will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more storage devices for storing data. However, a computing device need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, subject matter described in this specification can be implemented on a computer having a display device, e.g., an LCD (liquid crystal display) screen for displaying information to the user and a keyboard and a pointing device, e.g., touch screen, stylus, mouse, etc., by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computing device can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
Some of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computing device having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a data network.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a data network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, a server transmits data to a client device. Data generated at the client device can be received from the client device at the server.
While this specification contains many details, these should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of features specific to particular examples. Certain features that are described in this specification in the context of separate implementations can also be combined. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple embodiments separately or in any suitable sub-combination.
A number of examples have been described. Nevertheless, it will be understood that various modifications can be made. Accordingly, other embodiments are within the scope of the following claims.

Claims (15)

What is claimed is:
1. A method of decoding a wireless signal, the method comprising:
identifying superposition codes based on a set of orthogonal binary codes, the set comprising a plurality of subsets, each superposition code corresponding to one of the subsets and comprising a combination of the binary codes in the corresponding subset;
selecting a first subset of the plurality of subsets based on a correlation between a wireless signal and a first superposition code, the first superposition code corresponding to the first subset;
selecting a first binary code from the first subset based on a correlation between the wireless signal and the first binary code; and
decoding the wireless signal by operation of a data processor based on the first binary code.
2. The method of claim 1, comprising:
computing superposition code correlations between the wireless signal and the superposition codes, the superposition code correlations including the correlation between the wireless signal and the first superposition code;
selecting the first subset based on a peak in the correlation between the wireless signal and the first superposition code;
computing individual code correlations between the wireless signal and at least two of the binary codes in the first subset, the individual code correlations including the correlation between the wireless signal and the first binary code; and
selecting the first binary code based on a peak in the correlation between the wireless signal and the first binary code.
3. The method of claim 1, comprising performing an iterative, binary search after selecting the first subset, wherein each iteration of the iterative, binary search comprises:
identifying, for the current iteration, a current subset of the binary codes;
dividing the current subset into two inspection subsets for the current iteration;
identifying superposition codes based on the two inspection subsets for the current iteration; and
based on correlations between the wireless signal and the superposition codes for the two inspection subsets, selecting one of the two inspection subsets as the current subset for the next iteration.
4. The method of claim 1, comprising computing the superposition codes.
5. The method of claim 4, wherein computing the superposition code corresponding to a subset comprises:
generating phased codes by applying a distinct phase to each binary code in the subset; and
summing the phased codes.
6. The method of claim 5, wherein the phased codes are generated by applying a distinct phase and distinct amplitude to each binary code in the subset.
7. The method of claim 1, comprising wirelessly receiving the wireless signal by operation of a radio interface.
8. The method of claim 1, wherein the wireless signal comprises a WCDMA transmission from a mobile device, and selecting the first binary code comprises identifying the first binary code as a scrambling code associated with the mobile device.
9. A wireless signal processing system comprising:
a radio system configured to detect a wireless signal; and
a data processing system configured to perform operations comprising:
receiving the wireless signal from the radio system;
obtaining superposition codes based on a set of orthogonal binary codes, the set comprising a plurality of subsets, each superposition code corresponding to one of the subsets and comprising a combination of the binary codes in the corresponding subset;
selecting a first subset from the plurality of subsets based on a correlation between the wireless signal and a first superposition code, the first superposition code corresponding to the first subset;
selecting a first binary code from the first subset based on a correlation between the wireless signal and the first binary code; and
decoding the wireless signal based on the first binary code.
10. The wireless signal processing system of claim 9, the operations comprising:
computing superposition code correlations between the wireless signal and the superposition codes, the superposition code correlations including the correlation between the wireless signal and the first superposition code;
selecting the first subset based on a peak in the correlation between the wireless signal and the first superposition code;
computing individual code correlations between the wireless signal and at least two of the binary codes in the first subset, the individual code correlations including the correlation between the wireless signal and the first binary code; and
selecting the first binary code based on a peak in the correlation between the wireless signal and the first binary code.
11. The wireless signal processing system of claim 9, the operations comprising performing an iterative, binary search after selecting the first subset, wherein each iteration of the iterative, binary search comprises:
identifying, for the current iteration, a current subset of the binary codes;
dividing the current subset into two inspection subsets for the current iteration;
identifying superposition codes based on the two inspection subsets for the current iteration; and
based on correlations between the wireless signal and the superposition codes for the two inspection subsets, selecting one of the two inspection subsets as the current subset for the next iteration.
12. The wireless signal processing system of claim 9, the operations comprising computing the superposition codes.
13. The wireless signal processing system of claim 12, wherein computing the superposition code corresponding to a subset comprises:
generating phased codes by applying a distinct phase to each binary code in the subset; and
summing the phased codes.
14. The wireless signal processing system of claim 13, wherein the phased codes are generated by applying a distinct phase and distinct amplitude to each binary code in the subset.
15. The wireless signal processing system of claim 9, wherein the wireless signal comprises a WCDMA transmission from a mobile device, and selecting the first binary code comprises identifying the first binary code as a scrambling code associated with the mobile device.
US14/843,167 2015-09-02 2015-09-02 Identifying a code for signal decoding Active US9270418B1 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
US14/843,167 US9270418B1 (en) 2015-09-02 2015-09-02 Identifying a code for signal decoding
CA2992624A CA2992624C (en) 2015-09-02 2015-12-17 Identifying a code for signal decoding
KR1020187002666A KR102101667B1 (en) 2015-09-02 2015-12-17 Code identification for signal decoding
JP2018504725A JP6720290B2 (en) 2015-09-02 2015-12-17 Code identification for signal decoding
CN201580082181.XA CN107852191B (en) 2015-09-02 2015-12-17 Method for decoding wireless signal and wireless signal processing system
PCT/CA2015/000603 WO2017035623A1 (en) 2015-09-02 2015-12-17 Identifying a code for signal decoding
EP15902479.3A EP3345318B1 (en) 2015-09-02 2015-12-17 Identifying a code for signal decoding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/843,167 US9270418B1 (en) 2015-09-02 2015-09-02 Identifying a code for signal decoding

Publications (1)

Publication Number Publication Date
US9270418B1 true US9270418B1 (en) 2016-02-23

Family

ID=55314774

Family Applications (1)

Application Number Title Priority Date Filing Date
US14/843,167 Active US9270418B1 (en) 2015-09-02 2015-09-02 Identifying a code for signal decoding

Country Status (7)

Country Link
US (1) US9270418B1 (en)
EP (1) EP3345318B1 (en)
JP (1) JP6720290B2 (en)
KR (1) KR102101667B1 (en)
CN (1) CN107852191B (en)
CA (1) CA2992624C (en)
WO (1) WO2017035623A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109525531A (en) * 2017-09-19 2019-03-26 上海华虹计通智能***股份有限公司 Demodulation module, demodulator circuit and high frequency card reader

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6507602B1 (en) * 1999-01-07 2003-01-14 Ericsson, Inc. Smoothing receiver channel estimates using spectral estimation
US7440489B2 (en) * 2001-08-07 2008-10-21 Ericsson Inc. Method and apparatus for selective demodulation and decoding of communications signals
US7965761B2 (en) * 1998-02-12 2011-06-21 Lot 41 Acquisition Foundation, Llc Multicarrier sub-layer for direct sequence channel and multiple-access coding
US20110310935A1 (en) * 2010-06-18 2011-12-22 Samsung Electronics Co., Ltd. Reception of spread spectrum signals
US8175068B2 (en) 2008-03-26 2012-05-08 Advanced Receiver Technologies, Llc Active spread code detection
US20120320730A1 (en) * 2008-05-02 2012-12-20 Michele Morelli System and Method for Initial Ranging in Wireless Communication Systems
US8488578B1 (en) 2010-09-27 2013-07-16 Rockwell Collins, Inc. Identifying a CDMA scrambling code
US8761127B2 (en) * 2006-04-24 2014-06-24 Qualcomm Incorporated Superposition coding in a wireless communication system
US20140308972A1 (en) * 2010-12-13 2014-10-16 Zhongliang Deng Mobile broadcast signal demodulation chip for location
US8873605B2 (en) 2012-03-15 2014-10-28 Commissariat à l'énergie atomique et aux énergies alternatives Method of blind estimation of a scrambling code of a WCDMA uplink
US8913686B2 (en) * 2010-05-07 2014-12-16 Yale University Sparse superposition encoder and decoder for communications system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0955716A (en) * 1995-08-11 1997-02-25 Toshiba Corp Spread spectrum radio communication device
JP2000357980A (en) * 1999-06-16 2000-12-26 Matsushita Electric Ind Co Ltd Receiving device
DE10003734A1 (en) * 2000-01-28 2001-08-02 Bosch Gmbh Robert Detection method and device
JP4406337B2 (en) * 2004-08-31 2010-01-27 パナソニック株式会社 Multicarrier transmission apparatus, multicarrier reception apparatus, and synchronization detection method
US7826343B2 (en) * 2004-09-07 2010-11-02 Qualcomm Incorporated Position location signaling method apparatus and system utilizing orthogonal frequency division multiplexing
KR20150138401A (en) * 2008-01-02 2015-12-09 인터디지탈 테크날러지 코포레이션 Method and apparatus for cooperative wireless communications

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7965761B2 (en) * 1998-02-12 2011-06-21 Lot 41 Acquisition Foundation, Llc Multicarrier sub-layer for direct sequence channel and multiple-access coding
US6507602B1 (en) * 1999-01-07 2003-01-14 Ericsson, Inc. Smoothing receiver channel estimates using spectral estimation
US7440489B2 (en) * 2001-08-07 2008-10-21 Ericsson Inc. Method and apparatus for selective demodulation and decoding of communications signals
US8761127B2 (en) * 2006-04-24 2014-06-24 Qualcomm Incorporated Superposition coding in a wireless communication system
US8175068B2 (en) 2008-03-26 2012-05-08 Advanced Receiver Technologies, Llc Active spread code detection
US20120320730A1 (en) * 2008-05-02 2012-12-20 Michele Morelli System and Method for Initial Ranging in Wireless Communication Systems
US8913686B2 (en) * 2010-05-07 2014-12-16 Yale University Sparse superposition encoder and decoder for communications system
US20110310935A1 (en) * 2010-06-18 2011-12-22 Samsung Electronics Co., Ltd. Reception of spread spectrum signals
US8488578B1 (en) 2010-09-27 2013-07-16 Rockwell Collins, Inc. Identifying a CDMA scrambling code
US20140308972A1 (en) * 2010-12-13 2014-10-16 Zhongliang Deng Mobile broadcast signal demodulation chip for location
US8873605B2 (en) 2012-03-15 2014-10-28 Commissariat à l'énergie atomique et aux énergies alternatives Method of blind estimation of a scrambling code of a WCDMA uplink

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
J. Fessler, "Chapter 2-Discrete-time signals and systems," dated May 27, 2004, 21 pages.
K. Higuchi et al., "Fast cell search algorithm in DS-CDMA mobile radio using long spreading codes," IEEE, 1997, 5 pages.
Y.E. Wang, T. Ottosson, "Cell Search in W-CDMA," IEEE Journal on Selected Areas in Communications, vol. 18, No. 8, Aug. 2000, 13 pages.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109525531A (en) * 2017-09-19 2019-03-26 上海华虹计通智能***股份有限公司 Demodulation module, demodulator circuit and high frequency card reader

Also Published As

Publication number Publication date
EP3345318B1 (en) 2020-08-12
KR102101667B1 (en) 2020-04-17
CA2992624C (en) 2020-09-15
KR20180022897A (en) 2018-03-06
JP2018528663A (en) 2018-09-27
WO2017035623A1 (en) 2017-03-09
CA2992624A1 (en) 2017-03-09
EP3345318A1 (en) 2018-07-11
EP3345318A4 (en) 2019-04-24
JP6720290B2 (en) 2020-07-08
CN107852191B (en) 2020-06-30
CN107852191A (en) 2018-03-27

Similar Documents

Publication Publication Date Title
CN103347278B (en) The update method of fingerprint database and device in wireless location
US10638342B2 (en) Device and method for device to device communication
CN107211248B (en) Auxiliary data for the position for determining mobile device
US10256933B2 (en) Method and device for transmitting preamble sequence
JP6507020B2 (en) Cell search method and user apparatus
Guibène et al. Cooperative spectrum sensing and localization in cognitive radio systems using compressed sensing
US10356744B2 (en) Node localization method and device
JP2011530944A5 (en)
Machaj et al. Impact of optimization algorithms on hybrid indoor positioning based on GSM and Wi‐Fi signals
JP6061773B2 (en) Signal processing apparatus, signal processing method, and signal processing program
US9270418B1 (en) Identifying a code for signal decoding
Yi et al. Cellular-assisted COVID-19 contact tracing
TWI555426B (en) Discovery of objects in wireless environments
EP3061292B1 (en) System and method for localization and traffic density estimation via segmentation and calibration sampling
CN109040947B (en) Method, apparatus and computer readable storage medium for locating remote interference sources
JPWO2013140911A1 (en) Signal search method, signal search program, signal search device, GNSS signal reception device, and information equipment terminal
CN105338487B (en) Techniques for multi-pass geolocation
US8958754B2 (en) System and method for sub-coherent integration for geo-location using weak or intermittent signals
Liu et al. A wireless location system in LTE networks
Elbakly et al. A calibration-free RF localization system
CN106941708B (en) Case surveying and recording method and system
US20160309433A1 (en) Method and apparatus for detection of synchronization signals in wireless networks
Schmidt et al. Indoor positioning via WLAN channel state information and machine learning classification approaches
Isaacs et al. NB-IoT System and Method for Radio Cell Synchronization White Paper
Zhou Performance of Cellular-based Positioning with Machine Learning

Legal Events

Date Code Title Description
AS Assignment

Owner name: COGNITIVE SYSTEMS CORP., CANADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DEVISON, STEPHEN A.;OMER, MOHAMMAD;SIGNING DATES FROM 20150818 TO 20150901;REEL/FRAME:036478/0527

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: 2606440 ONTARIO LIMITED, CANADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:COGNITIVE SYSTEMS CORP.;REEL/FRAME:044997/0763

Effective date: 20171221

Owner name: COGNITIVE SYSTEMS CORP., CANADA

Free format text: CHANGE OF NAME;ASSIGNOR:2606440 ONTARIO LIMITED;REEL/FRAME:045405/0209

Effective date: 20171231

FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8