KR20070040841A - How to process data words in multiple processing cycles - Google Patents
How to process data words in multiple processing cycles Download PDFInfo
- Publication number
- KR20070040841A KR20070040841A KR1020077005435A KR20077005435A KR20070040841A KR 20070040841 A KR20070040841 A KR 20070040841A KR 1020077005435 A KR1020077005435 A KR 1020077005435A KR 20077005435 A KR20077005435 A KR 20077005435A KR 20070040841 A KR20070040841 A KR 20070040841A
- Authority
- KR
- South Korea
- Prior art keywords
- processing
- cycle
- data
- blocks
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details 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/69—Spread spectrum techniques
- H04B1/707—Spread spectrum techniques using direct sequence modulation
- H04B1/709—Correlator structure
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
- G01S19/13—Receivers
- G01S19/24—Acquisition or tracking or demodulation of signals transmitted by the system
- G01S19/30—Acquisition or tracking or demodulation of signals transmitted by the system code related
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
- G01S19/13—Receivers
- G01S19/35—Constructional details or hardware or software details of the signal processing chain
- G01S19/37—Hardware or software details of the signal processing chain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details 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/69—Spread spectrum techniques
- H04B1/707—Spread spectrum techniques using direct sequence modulation
- H04B1/7073—Synchronisation aspects
- H04B1/7075—Synchronisation aspects with code phase acquisition
- H04B1/7077—Multi-step acquisition, e.g. multi-dwell, coarse-fine or validation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B2201/00—Indexing scheme relating to details of transmission systems not covered by a single group of H04B3/00 - H04B13/00
- H04B2201/69—Orthogonal indexing scheme relating to spread spectrum techniques in general
- H04B2201/707—Orthogonal indexing scheme relating to spread spectrum techniques in general relating to direct sequence modulation
- H04B2201/70715—Orthogonal indexing scheme relating to spread spectrum techniques in general relating to direct sequence modulation with application-specific features
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Position Fixing By Use Of Radio Waves (AREA)
Abstract
본 발명은 다수의 프로세싱 사이클들에서 데이터 워드의 처리에 관한 것이다. 프로세싱을 효율적으로 수행하기 위해, 데이터 워드는 다수의 연속적인 데이터 블록들로 각 사이클 동안 분할된다. 블록들은 한 사이클에서 다음 사이클까지 하나의 블록만큼 시프트된다. 각각의 사이클에서, 각각의 연속적인 블록들은 시퀀스로 처리된다. 첫 번째 프로세싱 사이클에서, 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소들의 메모리에 첫 번째 사이클의 연속적인 데이터 블록들에 대한 처리 결과들을 저장한다. 각각의 다음 프로세싱 사이클에서, 다음 프로세싱 사이클에서의 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소에, 이전 프로세싱 사이클 동안에 메모리에 저장된 처리 결과들과 다음 프로세싱 사이클의 연속적인 데이터 블록들에 대한 처리 결과들을 결합한다.The present invention relates to the processing of a data word in multiple processing cycles. In order to perform the processing efficiently, the data word is divided during each cycle into a number of consecutive data blocks. Blocks are shifted by one block from one cycle to the next. In each cycle, each successive block is processed in sequence. In the first processing cycle, the processing results for consecutive data blocks of the first cycle are stored in the memory of memory addresses that vary constantly from one processing result to the next. In each next processing cycle, at a memory address that varies constantly from one processing result in the next to the next, the processing results stored in memory during the previous processing cycle and for successive data blocks of the next processing cycle. Combine the processing results.
블록, 처리, 사이클, 메모리 주소, 데이터 워드 Block, processing, cycle, memory address, data word
Description
본 발명은 다수의 프로세싱 사이클에서 데이터 워드를 처리하는 방법에 관한 것이다. 본 발명은 상기 처리 방법에 상응하는 처리 모듈, 전자 디바이스, 및 시스템에 관한 것이다. 마지막으로, 상응하는 소프트웨어 프로그램 프로덕트에 관한 것이다.The present invention relates to a method of processing data words in multiple processing cycles. The present invention relates to a processing module, an electronic device, and a system corresponding to the above processing method. Finally, it relates to a corresponding software program product.
데이터 워드는 다수의 사이클, 예를 들면 블록 상관(block correlation)에서 다양한 애플리케이션에서 처리되어야만 한다. 블록 상관은 공지의 데이터 워드와 수신된 데이터 워드 사이에 위상 시프트를 결정하는데 이용될 수 있으며, 예를 들면 네비게이션 시스템에 기초한 위성에서의 위성 신호들을 트래킹하는데 이용될 수 있다.Data words must be processed in various applications in multiple cycles, for example block correlation. Block correlation can be used to determine the phase shift between a known data word and a received data word, for example to track satellite signals at a satellite based navigation system.
위성 위치 확인 시스템(Global Positioning System, GPS)에서, 예를 들면 코드 변조된 신호들은 지구를 돌고 있는 몇몇 위성들에 의해 전송되고, 현재 위치가 결정되는 GPS 수신기들에 의해 수신된다. 위성들 각각은 2개의 마이크로웨이브 캐리어 신호들을 전송한다. 이러한 캐리어 신호들 중 하나(L1)는 네비게이션 메시지와 표준 위치 서비스(standard positioning service, SPS)의 코드 신호들을 전송하 는데 이용된다. L1 캐리어 신호는 각각의 위성들에 의해 수신기에서 공지된 ㄷ다다양한 C/A(Coarse Acqusition) 코드로 변조된다. 따라서, 다양한 위성들에 의한 전송을 위해 다양한 채널들이 얻어진다. -1 및 1의 값을 포함하고, 1MHz의 대역폭으로 대역 확산한 C/A 코드는 매 1023 칩들로 반복되고, 코드 에포치(epoch)는 1ms이다. 칩이란 용어는 C/A 코드의 비트를 제정하기 위해 사용된다. L1 신호의 캐리어 주파수는 50bit/s의 비트율로 네이게이션 정보와 함께 변조된다. 데이터 시퀀스를 구성하는 네이게이션 정보는, 예를 들면 각각의 수신기의 위치를 결정하기 위해 계산될 수 있다.In a Global Positioning System (GPS), for example, code modulated signals are transmitted by several satellites orbiting the earth and received by GPS receivers whose current position is determined. Each of the satellites transmits two microwave carrier signals. One of these carrier signals L1 is used to transmit code signals of a navigation message and a standard positioning service (SPS). The L1 carrier signal is modulated by the respective satellites into various Coarse Acqusition (C / A) codes known at the receiver. Thus, various channels are obtained for transmission by various satellites. The C / A code, which includes values of -1 and 1, and has been spread with a bandwidth of 1 MHz, is repeated every 1023 chips, and the code epoch is 1 ms. The term chip is used to establish bits of C / A code. The carrier frequency of the L1 signal is modulated with the navigation information at a bit rate of 50 bits / s. Navigation information constituting the data sequence may be calculated, for example, to determine the location of each receiver.
코드 변조된 신호를 수신한 수신기는 신호의 데이터 시퀀스를 역확산(de-spread)할 수 있도록, 이용된 변조 코드의 동기 리플리카(synchronized replica)에 액세스해야만 한다. 특히, 동기화는 수신된 코드 변조된 신호와 이용 가능한 복제 코드 사이에 수행되어야만 한다. 대개, "획득(acquisition)"이라 불리는 초기 동기화 다음에 "트래킹(tracking)"이라 불리는 정교한 동기화가 뒤따른다. 두 가지 동기화 과정에서, 상관기들은 복제 코드 시퀀스와 수신된 신호 사이에 최상의 매치를 찾고나서, 코드 위상이라 불리는 상대적인 시프트를 찾는데 이용된다. 획득과정 동안, 이용 가능한 복제 코드에 비교하여 수신된 신호의 위상은 위성의 위치와 수신된 신호의 전송 시간의 불확실성으로 인하여 가능한 값을 가질 수 있다.A receiver receiving a code modulated signal must access a synchronous replica of the modulation code used to be able to de-spread the data sequence of the signal. In particular, synchronization must be performed between the received code modulated signal and the available duplicated code. Usually, an initial synchronization called "acquisition" is followed by an elaborate synchronization called "tracking". In both synchronization processes, correlators are used to find the best match between the duplicate code sequence and the received signal, and then to find a relative shift called the code phase. During the acquisition process, the phase of the received signal as compared to the available replica code may have a possible value due to the uncertainty of the position of the satellite and the transmission time of the received signal.
상관기들로서, 예를 들면 블록 상관기들이 이용될 수 있다.As correlators, for example block correlators may be used.
도 1은 블록 상관기의 동작을 개략적으로 설명하는 도면이다.1 is a diagram schematically illustrating an operation of a block correlator.
상관기는 공지의 고정 데이터 워드, 예를 들면 C/A 코드에 액세스한다. 본 발명의 실시 예에서, 이러한 데이터 워드는 비트 열 "ABCDEFGH"로 표현된다. 또한, 샘플들이 상관기에 입력되는데, 여기서, 샘플들은 수신된 위성 신호들의 샘플들이다. 본 발명의 일 실시 예에서, 이러한 샘플은 비트 열 "abcdefghiabc..."로 표현된다. 이제, 상관기는 이용 가능한 데이터 워드와 각각의 가능한 위상 시프트에 대한 입력 샘플들, 및 이용 가능한 데이터 워드와 수신된 샘플들 사이의 상관을 결정한다.The correlator accesses known fixed data words, for example C / A codes. In an embodiment of the invention, this data word is represented by the bit string "ABCDEFGH". Also, samples are input to the correlator, where the samples are samples of the received satellite signals. In one embodiment of the invention, such a sample is represented by the bit string "abcdefghiabc ...". The correlator now determines the available data word and the input samples for each possible phase shift, and the correlation between the available data word and the received samples.
블록 상관기는 전체 이용 가능한 데이터 워드를 연속적으로 N=3의 데이터 블록들, 블록 'ABC', 블록 'DEF', 블록 'GHI'로 나누는데, 샘플들은 L=3의 길이를 각각 가진다. 이는 도 1의 도면부호 11에 도시되어 있다. 처음 L=3 인커밍 샘플들 'abc'가 도 1의 도면부호 12에 도시되어 있다.The block correlator successively divides the entire available data word into N = 3 data blocks, block 'ABC', block 'DEF' and block 'GHI', with samples having a length of L = 3, respectively. This is shown at 11 in FIG. 1. The first L = 3 incoming samples 'abc' are shown at 12 in FIG. 1.
이어, 상관기는 각각의 블록의 비트들과 처음 L=3 인커밍 샘플들 'abc'를 곱하고, 각각의 곱셈 결과들을 적분하고, 연속적인 메모리 주소에 각각의 적분 결과를 저장한다. 예를 들면, 'A*a + B*b + C*c' 값은 메모리 주소 '1'에 저장되고, 'D*a + E*b + F*c' 값은 메모리 주소 '2'에 저장되고, 'G*a + H*b + I*c' 값은 메모리 주소 '3'에 저장된다. 저장된 적분 결과 각각은 부분 상관 값을 나타낸다.The correlator then multiplies the bits of each block by the first L = 3 incoming samples 'abc', integrates each multiplication result, and stores each integration result in a contiguous memory address. For example, the value 'A * a + B * b + C * c' is stored at memory address '1' and the value 'D * a + E * b + F * c' is stored at memory address '2' The value 'G * a + H * b + I * c' is stored at memory address '3'. Each stored integration result represents a partial correlation value.
동일한 과정이 입력 샘플들 'bcd'에 대해 반복되고, 적분 결과가 연속적인 메모리 주소 '4', '5' 및 '6'에 각각 저장된다. 또한, 동일한 과정이 입력 샘플들 'cde'에 대해 반복되고, 연속적인 메모리 주소 '7', '8' 및 '9'에 저장된다.The same process is repeated for the input samples 'bcd' and the integration result is stored in consecutive memory addresses '4', '5' and '6', respectively. The same process is also repeated for input samples 'cde' and stored at consecutive memory addresses '7', '8' and '9'.
이제, 처음 3개의 입력 샘플들 'abc'가 완전히 처리되고, 메모리 주소 '1' 내지 '9'에 이용된 모든 N x L이 특정 위상 시프트에 대한 부분 상관 결과들로 채 워진다. 이러한 메모리 할당은 도 1의 왼편에 도시되어 있다.Now, the first three input samples 'abc' are fully processed and all N x L used at memory addresses '1' through '9' are filled with partial correlation results for a particular phase shift. This memory allocation is shown on the left side of FIG.
블록 상관기는 전체 이용 가능한 데이터 워드를 N=3 데이터 블록들 'ABC', 'DEF' 및 'GHI'로 나누는 것을 계속한다. 설명된 곱셈과 적분은 다음 N x L 데이터 블록들 및 다음 3개의 입력 샘플들 'def' 각각에 대해 반복된다. 도 1의 도면부호 13의 오른편에 도시되어 있는 적분 결과들에 도 1의 도면부호 13에 화살표도 도시된 것처럼, 적당한 메모리 주소들에 이미 저장된 부분 상관 값들이 더해진다.The block correlator continues to divide the entire available data word into N = 3 data blocks 'ABC', 'DEF' and 'GHI'. The multiplication and integration described are repeated for each of the next N x L data blocks and the next three input samples 'def'. The partial correlation values already stored at the appropriate memory addresses are added to the integration results shown to the right of 13 in FIG. 1, as indicated by the arrows in 13 to FIG. 1.
예를 들면, 'A*d + B*e + C*f' 값이 메모리 주소 '3'에 저장된 현재 값에 더해지고, 'D*d + E*e F*f' 값이 메모리 주소 '1'에 저장된 현재 값에 더해지고, 'G*d + H*e + I*f' 값이 메모리 주소 '2'에 저장된 현재 값에 저장된다.For example, the value 'A * d + B * e + C * f' is added to the current value stored at memory address '3', and the value 'D * d + E * e F * f' is added to memory address '1' In addition to the current value stored at ', the value' G * d + H * e + I * f 'is stored at the current value stored at memory address' 2'.
입력 샘플들 'def' 가 완전하게 처리된 경우, 블록 상관기는 전체 이용 가능한 데이터 워드를 N=3 데이터 블록들 'ABC', 'DEF' 및 'GHI'로 나누는 것을 계속한다. 설명한 곱셈과 적분은 다음 N x L 데이터 블록들 각각과 마지막 3개의 입력 샘플들 'ghi'에 대해 반복된다. 각각의 위상 시프트에 대한 마지막 상관 값들을 얻기 위해서, 적분 결과들이 적당한 메모리 주소들 '1' 내지 '9'에 이미 저장된 부분 상관 값들에 더해진다. 이 처리 부분은 도 1에 도시되지 않았다.If the input samples 'def' are fully processed, the block correlator continues to divide the entire available data word into N = 3 data blocks 'ABC', 'DEF' and 'GHI'. The multiplication and integration described are repeated for each of the next N x L data blocks and the last three input samples 'ghi'. In order to obtain the last correlation values for each phase shift, the integration results are added to the partial correlation values already stored at the appropriate memory addresses '1' through '9'. This processing part is not shown in FIG.
따라서, 메모리 주소 '1'에 저장된 최종 상관 값은 'A*a + B*b + C*c + D*d + E*e + F*f + G*g + H*h + I*i'이고, 메모리 주소 '2'에 저장된 최종 상관 값은 'D*a + E*b + F*c + G*d + H*e + I*f + A*g + B*h + C*i' 이고, 메모리 주소 '3'에 저장된 최종 상관 값은 'G*a + H*b + I*c + A*d + B*e + C*f + D*g + E*h + F*i' 등이다. 전체적으로, 이용 가능한 코드와 인커밍 샘플들 사이에 메모리 주소 '1' 내지 '9'에 저장된, 9개의 다른 위상 시프트들에 대한 9개의 다른 상관 값들이 있다. Therefore, the final correlation value stored at memory address '1' is 'A * a + B * b + C * c + D * d + E * e + F * f + G * g + H * h + I * i' The final correlation value stored at memory address '2' is 'D * a + E * b + F * c + G * d + H * e + I * f + A * g + B * h + C * i' The final correlation value stored at memory address '3' is 'G * a + H * b + I * c + A * d + B * e + C * f + D * g + E * h + F * i' And so on. In total, there are nine different correlation values for nine different phase shifts, stored at memory addresses '1' through '9' between available code and incoming samples.
도 1에 도시된 것처럼, 새로운 부분 상관 값들과 저장된 부분 상관 값들의 조합은 메모리에 액세스하는 경우 점프(jump)를 요구한다. 따라서, 메모리 주소는 복잡한 상태 머신(state machine)에 의해 각각의 조합에 대해 계산되어야만 한다.As shown in FIG. 1, the combination of new partial correlation values and stored partial correlation values requires a jump when accessing the memory. Thus, memory addresses must be calculated for each combination by a complex state machine.
특히 데이터 워드에 속한 9개 이상의 많은 샘플의 경우에 있어서, 상태 머신에 의해 수행되는 계산 노력은 상당하다. 예를 들면, GPS 수신기가 C/A 코드의 한번 반복에 L=66 샘플들을 가진 N=31 블록을 사용하는 것이 공지되어 있다.Especially in the case of many more than nine samples belonging to a data word, the computational effort performed by the state machine is significant. For example, it is known that a GPS receiver uses N = 31 blocks with L = 66 samples in one iteration of the C / A code.
본 발명은 이용 가능한 자원, 특히 처리 자원들을 더 효과적으로 사용할 수 있는 방법, 처리 모듈, 디바이스, 시스템 및 소프트웨어 프로그램 프로덕트를 제공한다.The present invention provides methods, processing modules, devices, systems and software program products that can more effectively use available resources, in particular processing resources.
다수의 프로세싱 사이클들에서 데이터 워드를 처리하는 방법을 제공하는데, 상기 방법은 각각의 프로세싱 사이클 동안에 상기 데이터 워드를 다수의 연속적인 데이터 블록들로 나누는 단계를 포함하는데, 상기 연속적인 데이터 블록들은 하나의 프로세싱 사이클로부터 다음 프로세싱 사이클까지 하나의 데이터 블록만큼 시프팅된다. 제안된 방법은 상기 프로세싱 사이클들 각각에서, 상기 연속적인 데이터 블록들 각각을 시퀀스로 처리하는 단계를 더 포함한다. 제안된 방법은 첫 번째 프로세싱 사이클에서, 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소들의 메모리에 상기 첫 번째 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 저장하는 단계를 더 포함한다. 제안된 방법은 각각의 다음 프로세싱 사이클에서, 상기 다음 프로세싱 사이클에서의 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소에, 이전 프로세싱 사이클 동안에 상기 메모리에 저장된 처리 결과들과 상기 다음 프로세싱 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 결합하는 단계를 더 포함한다.A method of processing a data word in a plurality of processing cycles, the method comprising dividing the data word into a plurality of contiguous data blocks during each processing cycle, the contiguous data blocks being one Shift by one data block from processing cycle to next processing cycle. The proposed method further comprises processing, in each of said processing cycles, each of said successive data blocks in sequence. The proposed method further comprises storing, in a first processing cycle, processing results for the successive data blocks of the first cycle in a memory of memory addresses that vary constantly from one processing result to the next. . The proposed method is characterized in that in each next processing cycle, the processing results stored in the memory during the previous processing cycle and the next processing cycle are stored at a memory address that constantly varies from one processing result in the next processing cycle to the next processing result. Combining the processing results for the consecutive data blocks.
또한, 다수의 프로세싱 사이클들에서 데이터 워드를 처리하기 위한 처리 모듈을 제안한다. 처리 모듈은 각각의 프로세싱 사이클 동안에 상기 데이터 워드를 다수의 연속적인 데이터 블록들로 나누는 데이터 워드 분할 컴포넌트를 포함하는데, 상기 연속적인 데이터 블록들은 하나의 프로세싱 사이클로부터 다음 프로세싱 사이클까지 하나의 데이터 블록만큼 시프팅된다. 제안된 처리 모듈은 상기 프로세싱 사이클들 각각에서 상기 연속적인 데이터 블록들 각각을 시퀀스로 처리하는 처리 컴포넌트를 더 포함한다. 제안된 처리 모듈은 첫 번째 프로세싱 사이클에서, 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소들의 메모리에 상기 첫 번째 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 저장하고, 각각의 다음 프로세싱 사이클에서, 상기 다음 프로세싱 사이클에서의 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소에, 이전 프로세싱 사이클 동안에 상기 메모리에 저장된 처리 결과들과 상기 다음 프로세싱 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 결합하는 결합 컴포넌트를 더 포함한다. Also proposed is a processing module for processing data words in multiple processing cycles. The processing module includes a data word splitting component that divides the data word into a plurality of consecutive data blocks during each processing cycle, wherein the consecutive data blocks are shifted by one data block from one processing cycle to the next. Will be added. The proposed processing module further includes a processing component that processes each of the consecutive data blocks in sequence in each of the processing cycles. The proposed processing module stores, in the first processing cycle, processing results for the successive data blocks of the first cycle in a memory of memory addresses that constantly vary from one processing result to the next processing result, and each next In a processing cycle, at a memory address that constantly varies from one processing result in the next processing cycle to the next processing result, the processing results stored in the memory during the previous processing cycle and the successive data blocks of the next processing cycle. It further comprises a coupling component for combining the processing results for.
처리 모듈은 하드웨어로 구현될 수 있지만, 소프트웨어로 동일하게 구현될 수 있거나 또는 하드웨어와 소프트웨어의 조합으로 구현할 수도 있다.The processing module may be implemented in hardware, but may be implemented identically in software or in a combination of hardware and software.
또한, 그러한 처리 모듈을 포함하는 전자 디바이스가 제안된다. Also proposed is an electronic device comprising such a processing module.
또한, 그러한 처리 모듈과, 처리 모듈과 데이터를 적어도 일정 방향(uni-directionally)으로 교환하는 적어도 하나의 다른 모듈을 포함하는 시스템을 제안한다.It is also proposed a system comprising such a processing module and at least one other module that exchanges the processing module and data at least uni-directionally.
마지막으로, 소프트웨어 프로그램 프로덕트가 제안되는데, 프로덕트에는 다수의 프로세싱 사이클들에서 데이터 워드를 처리하기 위한 소프트웨어 코드가 저장된다. 소프트웨어 코드는 프로세싱 컴포넌트에서 운영하는 경우 제안된 방법의 단계들을 구현한다.Finally, a software program product is proposed, which stores software code for processing data words in multiple processing cycles. The software code implements the steps of the proposed method when running on a processing component.
본 발명은 데이터 워드의 블록들이 적당한 순서로 각각의 프로세싱 사이클에서 이미 처리된다면, 메모리 주소들 사이의 점핑의 필요성을 피할 수 있다는데 기초한다. 따라서, 메모리 주소들에 대한 액세스의 순서가 데이터 블록들이 관계된 메모리 주소들의 실제 순서에 상응하도록, 각각의 프로세싱 사이클 동안에 재배열 되게 하는 것이 제안된다. 이는 하나의 프로세싱 사이클부터 다음까지 각각 하나의 블록만큼 데이터 블록들을 시프팅함으로써 달성된다.The present invention is based on the fact that if blocks of data words are already processed in each processing cycle in the proper order, the need for jumping between memory addresses can be avoided. Thus, it is proposed that the order of access to the memory addresses be rearranged during each processing cycle such that the data blocks correspond to the actual order of the memory addresses involved. This is accomplished by shifting the data blocks by one block each from one processing cycle to the next.
본 발명은 장점은 필요한 계산의 횟수를 줄일 수 있다는 것이다. 각각의 프로세싱 사이클 동안에, 각각의 메모리 액세스에 대한 메모리 주소를 결정하기 위해 많은 계산 대신에 한 번의 계산이 필요하다. 특히, 본 발명은 많은 수의 데이터 블록들이 처리되어야만 하는 애플리케이션에 있어서 장점이 있다.The advantage of the present invention is that it can reduce the number of calculations required. During each processing cycle, one calculation is needed instead of many calculations to determine the memory address for each memory access. In particular, the present invention is advantageous in applications where a large number of data blocks must be processed.
또한, 본 발명의 장점은 간단하고 유연한 방식으로 구현될 수 있다는 것이다. 예를 들면 다른 길이의 데이터 워드들 및 다른 길이의 데이터 블록들이 쉽게 이용될 수 있다.It is also an advantage of the present invention that it can be implemented in a simple and flexible manner. For example, data words of different lengths and data blocks of different lengths can be readily used.
일반적으로 모든 관계된 메모리 주소들은 프로세싱 사이클 동안에 정확하게 한번 액세스될 것이다. 각각의 프로세싱 사이클 동안에, 데이터 워드가 데이터 블록들에 의해 한 번 이상 표현될 수 있다는 것은 자명하다. 데이터 블록들은 보통 정수의 데이터 블록들은 전체 데이터 워드를 표현하도록 선택될 것이다. In general, all relevant memory addresses will be accessed exactly once during the processing cycle. It is obvious that during each processing cycle, a data word can be represented more than once by the data blocks. Data blocks will usually be selected so that integer data blocks represent the entire data word.
메모리 주소들은 일정하게 변화될 수 있는데, 예를 들면 하나의 프로세싱 사이클 내에 각각의 처리 결과에 대한 고정 값만큼 주소를 증가시키거나 감소시킴으로써 변화될 수 있다.The memory addresses can be changed constantly, for example by increasing or decreasing the address by a fixed value for each processing result in one processing cycle.
본 발명의 일 실시 예에서, 메모리의 액세스는 라운드 회전 방식으로 각각의 메모리 액세스에 대해 증가되는 어드레스 포인터로 달성된다. 즉, 새로운 프로세싱 사이클의 시작에서, 포인터는 초기 메모리 주소로부터 신규로 시작된다. 예를 들면, 포인터는 저장하고 처리 결과들을 결합하기 위한 결합 컴포넌트로 사용될 수 있다. 그러한 어드레스 포인터는 매우 간단하고 작을 수 있다.In one embodiment of the invention, the access of the memory is accomplished with an address pointer that is incremented for each memory access in a round rotation manner. In other words, at the start of a new processing cycle, the pointer starts new from the initial memory address. For example, a pointer can be used as a coupling component for storing and combining processing results. Such an address pointer can be very simple and small.
하나의 블록만큼 데이터 블록들의 시퀀스를 시프팅하는 것은, 예를 들면 이전 프로세싱 사이클의 첫 번째 데이터 블록을 마지막으로 옮기는 것을 의미하고, 데이터 블록들의 시퀀스는 각각의 프로세싱 사이클에서 이전 두 번째 데이터 블록으로 움직이기 시작한다.Shifting a sequence of data blocks by one block means, for example, moving the first data block of the previous processing cycle last, and the sequence of data blocks moves to the previous second data block in each processing cycle. It starts to win.
본 발명의 일 실시 예에서, 이는 하나의 데이터 블록이 각각의 다음 프로세싱 사이클의 시작에서 스킵되는 것을 제외하고, 순환적 및 연속적으로 생성함으로써 구현된다. In one embodiment of the invention, this is implemented by generating circularly and continuously, except that one data block is skipped at the beginning of each next processing cycle.
본 발명의 처리 모듈의 일 실시 예에서, 데이터 워드 분할 컴포넌트는 이러한 목적을 달성하기 위해, 데이터 워드 생성기, 멀티플렉서 및 카운터를 포함한다. 데이터 워드 생성기는 순환 방식으로 데이터 워드 블록들을 생성한다. 카운터는 생성된 블록들의 수를 카운트하고, 하나의 프로세싱 사이클 동안에 필요한 블록들의 수가 생성될 때마다 멀티플렉서에 소정의 제어 신호를 제공한다. 멀티플렉서는 카운터가 제어 신호를 제공하지 않는 한, 데이터 워드 생성기가 데이터 워드의 연속적인 블록들을 생성하도록 하고, 카운터가 제어 신호를 제공할 때마다 상기 데이터 워드 생성기가 상기 데이터 워드의 하나의 블록을 스킵하도록 한다. In one embodiment of the processing module of the present invention, the data word splitting component comprises a data word generator, a multiplexer and a counter to achieve this purpose. The data word generator generates data word blocks in a circular fashion. The counter counts the number of blocks generated and provides a control signal to the multiplexer each time the number of blocks needed during one processing cycle is generated. The multiplexer causes the data word generator to generate successive blocks of data words, unless the counter provides a control signal, and the data word generator skips one block of the data word each time the counter provides a control signal. Do it.
종래의 코드 상관기들이 코드 위상의 트래킹이 가능하도록 카운터에 생성된 코드 블록들을 제공하는 것은 공지되어 있다. 이러한 카운터는, 카운터가 라운드 회전할 때마다, 공지된 코드 블록들의 순환 순서에 하나의 블록씩 추가로 어드밴스되도록 하는 것을 보장함으로써 사용될 수 있다. It is known that conventional code correlators provide code blocks generated in a counter to enable tracking of code phase. This counter can be used by ensuring that each time the counter rotates round, it further advances one block in the circular order of known code blocks.
본 발명은 블록-지향 알고리즘(block-oriented algorithm)을 이용하는 애플리케이션에 이용될 수 있다. 하드웨어의 블록 상관은 그러한 애플리케이션들의 일 예이다. 블록 상관에서, 데이터 워드는 제공된 샘플들과 블록 단위로 상관된다. 이러한 경우에 데이터 워드는, 예를 들면 공지된 코드일 수 있고, 제공된 샘플들은 수신된 코드 변조 신호의 샘플들일 수 있다.The present invention can be used in applications that use block-oriented algorithms. Block correlation in hardware is an example of such applications. In block correlation, the data word is correlated block by block with the samples provided. In this case the data word may be a known code, for example, and the samples provided may be samples of the received code modulated signal.
따라서, 데이터 블록들의 프로세싱은 다른 메모리 주소들에 저장되어야만 하거나 또는 다른 메모리 주소들에 이미 저장되어 있는 값들과 결합해야만 하는 중간 결과들을 만드는 어떠한 종류의 블록 프로세싱을 포함한다. 애플리케이션에 따라서, 새로운 프로세싱의 결과들과 저장된 프로세싱 결과들을 결합하는 것은, 덧셈 또는 곱셈, 또는 이미 저장된 결과들에 새로운 프로세싱 결과를 단순히 저장하는 것과 같은 어떠한 종류의 결합을 포함할 수 있다.Thus, processing of data blocks involves some kind of block processing that produces intermediate results that must be stored at other memory addresses or must be combined with values already stored at other memory addresses. Depending on the application, combining the results of the new processing with the stored processing results may include any kind of combining, such as addition or multiplication, or simply storing the new processing result in already stored results.
본 발명에 따른 전자 디바이스는 데이터 워드가 다수의 프로세싱 사이클들에서 처리되어야만 하는 어떠한 디바이스일 수 있다. 이는 모바일 또는 고정 디바이스일 수 있다. 전자 디바이스는, 이에 한정되지는 않지만 예를 들면 모바일 폰, 코드분할 다중 접속(CDMA)이 가능한 수신기 또는 CPS 수신기와 같은 위성 신호 수신기일 수 있다. 또한, GPS 수신기를 포함하는 모바일 폰과 같이 다른 기능들을 결합한 디바이스일 수 있다. 이러한 경우에, 본 발명에 따른 데이터 워드 프로세싱은 하나 이상의 기능을 가진 디바이스로 구현될 수 있다.The electronic device according to the present invention can be any device in which a data word must be processed in multiple processing cycles. This may be a mobile or fixed device. The electronic device may be, for example, but not limited to, a satellite signal receiver such as a mobile phone, a code division multiple access (CDMA) capable receiver or a CPS receiver. It may also be a device combining other functions, such as a mobile phone including a GPS receiver. In such a case, data word processing according to the present invention may be implemented in a device having one or more functions.
본 발명에 따른 시스템은 다양한 종류의 시스템들일 수 있는데, 다음에 설명되는 특징들을 포함하고 있다.The system according to the present invention may be various kinds of systems, including the features described below.
시스템은, 예를 들면 에어 인터페이스를 통해 신호들을 수신하고, 블록 프로세싱을 포함하는 계산을 위해 처리 모듈에 수신된 신호들을 제공하는 추가 모듈로서 수신기를 포함할 수 있다. 처리 모듈은 수신기에 직접, 케이블을 통해, 또는 에어 인터페이스를 통해 접속될 수 있다. 예를 들면, 수신기가 위성 신호 수신기이고 모바일 통신 디바이스의 일부라면, 처리 모듈은 신호들의 샘플들이 계산을 위해 제공되는 모바일 통신 네트워크의 일 부분일 수 있다. The system may include a receiver as an additional module, for example, receiving signals via an air interface and providing the received signals to a processing module for calculations including block processing. The processing module may be connected directly to the receiver, via a cable, or via an air interface. For example, if the receiver is a satellite signal receiver and is part of a mobile communication device, the processing module may be part of a mobile communication network in which samples of signals are provided for calculation.
선택적으로, 시스템은, 예를 들면 처리 모듈이 모바일 단말인 경우, 추가 모듈로서 모바일 통신 네트워크의 네트워크 구성요소를 포함할 수 있다. 여기서 네트워크 구성요소는 블록 기반의 프로세싱을 지원하기 위해 모바일 단말에 보조 데이터를 제공할 수 있다.Optionally, the system may include the network components of the mobile communication network as additional modules, for example when the processing module is a mobile terminal. The network component may provide auxiliary data to the mobile terminal in order to support block-based processing.
또한 선택적으로, 시스템은, 예를 들면 추가 모듈로서 적어도 하나의 위성, 및 수신기의 기능을 추가로 포함하는 처리 모듈을 포함하는 위성 기반의 네비게이션 시스템일 수 있다. 처리 모듈은 이러한 위성들에서 전송된 신호들을 수신할 수 있다.Also optionally, the system may be a satellite based navigation system comprising, for example, at least one satellite as an additional module, and a processing module further comprising the functionality of a receiver. The processing module may receive signals transmitted from these satellites.
본 발명의 다른 목적들 및 특징들은 첨부한 도면들을 참조하여 다음 상세한 설명으로부터 명확해 질 것이다. 그러나, 도면들을 단지 설명을 위한 목적으로 제시되는 것이고, 본 발명의 범위가 이에 한정되는 것은 아니며, 본 발명의 범위는 첨부한 청구범위들에 의해 정하여 진다. 또한, 도면에 도시된 크기에 상관없이 이하에 설명되는 구성과 과정을 개념적으로 설명하기 위한 것이다.Other objects and features of the present invention will become apparent from the following detailed description with reference to the accompanying drawings. However, the drawings are presented for purposes of illustration only, and the scope of the present invention is not limited thereto. The scope of the present invention is defined by the appended claims. In addition, regardless of the size shown in the drawings for the purpose of illustrating the configuration and process described below.
도 1은 종래의 메모리 할당을 설명하기 위한 도면이다.1 is a diagram illustrating a conventional memory allocation.
도 2는 본 발명의 일 실시 예에 따른 개략적인 시스템 블록 다이어그램이다.2 is a schematic system block diagram according to an embodiment of the present invention.
도 3은 도 2의 시스템의 상관기의 블록 다이어그램이다.3 is a block diagram of a correlator of the system of FIG.
도 4는 도 3의 상관기의 동작을 설명하기 위한 흐름도이다.4 is a flowchart for describing an operation of the correlator of FIG. 3.
도 5는 도 3의 상관기의 메모리 할당의 원리를 설명하기 위한 다이어그램이다.FIG. 5 is a diagram for explaining a principle of memory allocation of the correlator of FIG. 3.
<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>
20: 모바일 디바이스 21:GPS 모듈20: mobile device 21: GPS module
22: 수신 컴포넌트 23: 상관기22: Receive component 23: Correlator
24: 계산 컴포넌트 29: GPS 위성24: Compute Component 29: GPS Satellite
도 2는 본 발명의 일 실시 예에 따른 데이터 워드 프로세싱이 구현된 GPS 위치 확인 시스템의 개략적인 블록 다이어그램이다.2 is a schematic block diagram of a GPS positioning system implemented with data word processing according to an embodiment of the present invention.
위치 확인 시스템은 모바일 디바이스(20)과 다수의 GPS 위성들(29)을 포함한다.The positioning system includes a
모바일 디바이스(200)은 GPS 모듈(21)을 포함하는 어떠한 모바일 디바이스일 수 있다. 예를 들면, 모바일 디바이스(20)는 셀룰러 네트워크으로 통신할 수 있는 셀룰러 단말의 필수적인 컴포넌트들을 포함한 셀룰러 단말일 수 있다. 선택적으로, 모바일 디바이스(20)는 예를 들면 개인 휴대 정보 단말기(Portable Digital Assistant, PDA)일 수 있다. 또한, 선택적으로, 순수한 GPS 디바이스일 수 있다.Mobile device 200 can be any mobile device including
GPS 모듈(21)은 수신 컴포넌트, 하드웨어(HW) 및/또는 소프트웨어(SW)로 구현된 상관기, 및 계산 컴포넌트((24)를 포함한다. 여기서 계산 컴포넌트(24)는 모바일 디바이스(20)의 다른 기능들을 위해 사용되는 프로세서를 이용하거나 또는 일 부분일 수 있다.The
상관기(23)는 도 3의 블록 다이어그램에 더 상세히 도시된다.The
상관기(23)에서, 코드 생성기(30)는 멀티플렉서(31)로부터 제어 신호들을 수 신한다. 코드 생성기(30)의 출력은 카운터(32)를 통해 멀티플렉서(31)의 제어 입력으로 피드백된다. 멀티플렉서(31)는 제어 입력에서의 신호에 따라 2개의 제어 신호들 중 하나를 코드 생성기(30)로 포워딩한다. 제1 제어 신호는 명령 'L 칩만큼 증가'를 나타내는 반면, 제2 제어 신호는 명령 '2L 칩만큼 증가'를 나타낸다.In the
또한, 코드 생성기(30)의 출력은 L 칩을 저장할 수 있는 코드 시프트 레지스터(33)를 통해 비트 단위의 곱셈기(bit-wise multiplier, 34)의 입력에 접속된다. The output of the
또한, L 샘플들을 저장할 수 있는 샘플 시프트 레지스터(35)는 비트 단위의 곱셈기(34)의 입력에 접속된다. 샘플 시프트 레지스터(35)는 GPS 모듈(21)의 수신 컴포넌트(22)로부터 입력 샘플들을 수신한다. In addition, a
비트 단위의 곱셈기(34)의 출력은 적분기(36)와 결합 컴포넌트(37)를 통해 메모리(38)에 접속된다. 메모리(38)는 결합 컴포넌트(37)의 제2 입력에 다시 결합된다. 비트 단위의 곱셈기(34), 적분기(36) 및 결합 컴포넌트(37)는 덧셈기 트리(adder tree)를 형성한다. The output of the
이제, 상관기(23)의 동작이 도 4 및 도 5의 흐름도를 참조하여 설명될 것이다. 도 5의 다이어그램은 간략한 예시에 의해 동작의 원리를 설명한다. The operation of the
GPS 모듈(21)이 GPS 위성(29)으로부터 신호를 수신하는 경우, GPS 모듈(21)은 신호를 발신한 위성 및 신호가 가지는 코드 위상을 결정하여야 한다. 이를 위해, 수신 컴포넌트(22)는 수신된 신호의 샘플들을 공지의 샘플링 속도로 상관기(23)에 포워딩한다. When the
상관기(23)에서, 처음 L 샘플들이 샘플 시프트 레지스터(35)에 저장된다(단 계 401)., 도 5에 도시된 개략적인 예시에서, L은 3이고, 샘플 시프트 레지스터(35)에 저장된 처음 3개의 샘플들은 'abc'이고, 도면부호 12로 도시되어 있다. In the
동시에, 코드 생성기(30)는 C/A 코드의 첫 번째 블록을 생성한다(단계 402). C/A 코드는 특정 GPS 위성, 가능한 신호를 전송한 위성(29)에 의해 사용되는 것으로 공지되어 있다. 생성된 블록은 코드의 L 다음 칩들(L subsequent chips)을 포함하고, 코드 레지스터(33)에 저장된다. 도 5에 도시된 개략적인 예시에서, 코드 레지스터(33)에 저장된 처음 L=3 샘플들은 'ABC'이고, 도면부호 11로 도시되어 있다.At the same time,
다음, 곱셈기(34)는 샘플 시프트 레지스터(35)로부터 샘플들과 코드 레지스터(33)의 칩들을 비트 단위로 곱셈한다. 적분기(36)는 곱셈 결과들을 적분하고, 결합 컴포넌트(37)는 메모리(38)의 첫 번째 메모리 주소에 부분 상관 값으로 적분 결과들을 저장한다(단계 403). 메모리(38)가 관계된 메모리 주소에 어떠한 부분 상관 값들을 포함하지 않는 한, 결합 컴포넌트(37)는 어떠한 합산 태스크(tasks)도 가지지 않는다. The
도 5의 예시에서, 부분 상관 값 'A*a + B*b + C*c'는 메모리(38)의 메모리 주소 '1'에 저장되고, 이는 도면 부호 13에 도시되어 있다.In the example of FIG. 5, the partial correlation value 'A * a + B * b + C * c' is stored at memory address '1' of the memory 38, which is shown at 13.
매번, 코드 생성기(30)는 블록을 출력하고, 또한 상응하는 지시를 카운터(32)에 제공한다. 제로의 카운터 값으로 시작해서, 카운터(32)는 N x L 카운터 값에 도달할 때까지, 코드 생성기(30)로부터 신호를 받아 하나씩 카운터 값을 증가시킨다. N x L 카운터 값에 도달된 경우에만, 카운터는 제어 신호를 멀티플렉 서(31)에 제공한다. Each time, the
N 블록들 이하가 처리되는 한(단계 404), 샘플 시프트 레지스터(34)의 L 샘플들은 동일하게 남는다. N 블록들은 코드의 모든 샘플들을 정확하게 한 번 포함한다. 코드 생성기(30)는 L 칩들을 가진 다음 블록을 규칙적인 간격으로 생성하는데, 왜냐하면 멀티플렉서(31)는 명령 ' L칩들만큼 증가'을 코드 생성기(30)에 제공하기 때문이고(단계 402), 제어 신호가 카운터(32)에 제공되지 않는다. 새로운 블록은 샘플링 주파수보다 N배 더 큰 주파수로 코드 생성기(30)에 의해 생성된다. 각각의 다음 블록은 첫 번째 블록에 대해 설명된 것처럼, 샘플 시프트 레지스터(35)에 저장된 샘플들과 상관되고, 결과적인 부분 상관 값은 새로운 부분 상관 값에 대해 하나 씩 증가한 메모리 주소의 메모리에 저장된다(단계 403). 도 5에 도시된 예시에서, 제2 코드 블록은 'DEF'이고, 제2 상관 결과 'D*a + E*b + F*c'가 메모리 주소 '2'에 저장된다. 제3 코드 블록은 'GHI' 이고, 제3 상관 결과 'G*a + H*b + I*c'는 메모리 주소 '3'에 저장된다.As long as N blocks or less are processed (step 404), the L samples in the
샘플 시프트 레지스터(35)의 입력 샘플들이 코드 생성기(30)에 의한 제N 블록 출력을 처리하도록 N번 동안 곱셈기(34)에 제공된 후(단계 404), 또 다른 입력 샘플이 샘플 시프트 레지스터(35)에 저장된다(단계 405). 이는 코드 생성기(30)뿐만 아니라 전체 상관기(23)가 샘플링 주파수보다 N배 더 큰 주파수에서 동작되도록 함으로써 달성가능하다. 도 5에 도시된 예시에서, 샘플 시프트 레지스터에 저장된 3개의 샘플은 이제 'bcd'이다.After the input samples of the
카운터(32)가 값 'N x L'에 도달하지 않는 한(단계 406), 코드 생성기(30)는 코드의 다음 블록을 생성하고, 각각의 부분 상관 값을 결정하고, 하나씩 증가된 메모리 주소의 메모리(38)에 결과를 저장하는 것을 계속한다(단계 402, 403, 404). 각각의 N 부분 상관 값들이 결정된 후에, 또는 제N 부분 상관 값이 결정된 후에, 새로운 샘플이 다음 N 부분 상관 값들을 위해 샘플 시프트 레지스터(35)에 입력된다(단계 404, 405).As long as the
도 5의 예시에서, 네 번째 블록은 다시 'ABC'이고, 다섯 번째 블록은 'DEF' 및 여섯 번째 블록은 'GHI'이다. 네 번째 부분 상관 값 'A*b + B*c + C*d' 이 메모리 주소 '4'에 저장되고, 다섯 번째 부분 상관 값 'D*b + E*c + F*d' 이 메모리 주소 '5'에 저장되고, 여섯 번째 부분 상관 값 'G*b + H*c + I*d' 이 메모리 주소 '6'에 저장된다. 샘플 시프트 레지스터(35)에 다음에 저장된 3개의 샘플은 'cde'이고, 일곱 번째 블록은 다시 'ABC', 여덟 번째 블록은 'DEF', 아홉 번째 블록은 'GHI'이다. 일곱 번째 부분 상관 값 'A*c + B*d + C*e' 이 메모리 주소 '7'에 저장되고, 여덟 번째 부분 상관 값 'D*c + E*d + F*e' 이 메모리 주소 '8'에 저장되고, 아홉 번째 부분 상관 값 'G*c + H*d + I*e' 이 메모리 주소 '9'에 저장된다.In the example of FIG. 5, the fourth block is again 'ABC', the fifth block is 'DEF' and the sixth block is 'GHI'. The fourth partial correlation value 'A * b + B * c + C * d' is stored in memory address' 4 ', and the fifth partial correlation value' D * b + E * c + F * d 'is stored in memory address' 5 'and the sixth partial correlation value' G * b + H * c + I * d 'is stored in memory address' 6'. The next three samples stored in the
카운터(32)가 값 'N x L'에 도달하면(단계 406), 제1 프로세싱 사이클에 대한 모든 블록이 코드 생성기(30)에 의해 제공된다. 결과 부분 상관 값들은 N x L 이용 가능한 메모리 주소들에 저장되고, 각각은 수신된 샘플들과 공지된 코드 사이에 다른 위상 시프트에 속한다. 도 5의 예시에서, 상관 값들은 제1 프로세싱 사이클 후에 9개의 이용 가능한 메모리 주소들 '1' 내지 '9'에 저장된다.When the
다음 프로세싱 사이클 동안, 카운터(32)는 제어 신호를 멀티플렉서(31)에 제 공하고, 멀티플렉서(31)는 명령 ' 2L 칩들만큼 증가'을 코드 생성기(30)에 제공한다. 멀티플렉서(31)로부터의 제어 신호의 결과로, 코드 생성기(30)는 다음 2L 칩들을 생성하지만, 마지막 L 칩들을 코드 레지스터(33)에 출력한다. 즉, L 칩들의 길이를 가지는 하나의 블록이 코드 생성기(30)의 출력에서 스킵된다(단계 407, 408). 도 5의 예시에서, 종래의 블록 상관기의 경우처럼, 아홉 번째 블록 'GHI'이 블록 'ABC'를 대신하여 열 번째 블록 'DEF' 다음에 이어진다. 샘플 레지스터(35)의 샘플들은 'def'로 자동으로 업데이트된다.During the next processing cycle, the
다음, 곱셈기(34)는 다시 샘플 시프트 레지스터(35)로부터의 샘플들과 코드 레지스터(33)의 블록을 비트 단위로 곱한다. 적분기(36)는 곱셈 결과들을 적분한다. 또 다른 부분 상관 값을 형성하는 적분 결과에 결합 컴포넌트(37)에 의해 메모리(38)의 첫 번째 메모리 주소에 저장된 값이 더해진다(단계 409). 도 5의 예시에서, 부분 상관 값 'D*d + E*e + F*f'에 메모리(38)의 첫 번째 메모리 주소 '1'에 저장된 값 'A*a + B*b + C*c'이 더해진다. The
이러한 프로세스는 다음 N-1 블록들에 대해 반복된다(단계 410, 408, 409). 도 5의 예시에서, 부분 상관 값 'G*d + H*e + I*f'에 메모리(38)의 메모리 주소 '2'에 저장된 값 'D*a + E*b + F*c'이 더해진다. 그 후에, 부분 상관 값 'A*d + B*e + C*f'에 메모리(38)의 메모리 주소 '3'에 저장된 값 'G*a + H*b + I*c'이 더해진다.This process is repeated for the next N-1 blocks (
그 후에, 새로운 샘플이 다시 샘플 시프트 레지스터(35)에 입력된다(단계 410, 411). 도 5의 예시에서, 이는 'efg' 의 샘플 시프트 레지스터(24)의 레지스 터 값을 가져온다. After that, a new sample is input again to the sample shift register 35 (
이전처럼(단계 408, 409, 410), 부분 상관 값들은 연속적으로 생성된 블록들을 가진 이러한 레지스터 값들에 대해 결정된다. 도 5의 예시에서, 생성된 블록들은 다시 블록 'DEF', GHI' 및 'ABC'이다. 부분 상관 값 'D*e + E*f + F*g'에 메모리(38)의 메모리 주소 '4'에 저장된 값 'A*b +B*c + C*d' 이 더해진다. 부분 상관 값 'G*e + H*f + I*g'에 메모리(38)의 메모리 주소 '5'에 저장된 값 'D*b + E*c + F*d' 이 더해진다. 부분 상관 값 'A*e + B*f + C*g'에 메모리(38)의 메모리 주소 '6'에 저장된 값 'G*b + H*c + I*d' 이 더해진다.As before (steps 408, 409, 410), partial correlation values are determined for these register values with successively generated blocks. In the example of FIG. 5, the generated blocks are again blocks' DEF ', GHI' and 'ABC'. The partial correlation value 'D * e + E * f + F * g' is added with the value 'A * b + B * c + C * d' stored at the memory address '4' of the memory 38. The partial correlation value 'G * e + H * f + I * g' is added with the value 'D * b + E * c + F * d' stored at the memory address '5' of the memory 38. The partial correlation value 'A * e + B * f + C * g' is added to the value 'G * b + H * c + I * d' stored at the memory address '6' of the memory 38.
또한, 다음 N x L 블록들이 처리될 때까지, 각각의 N 개의 새로운 블록들이 생성된 후에 각각의 새로운 샘플이 샘플 시프트 레지스터(35)에 입력된다. 도 5의 예시에서, 이러한 사이클에서의 마지막 입력 샘플은 샘플 시프트 레지스터(36)의 값 'fgh' 을 가져온다.Also, each new sample is input into the
부분 상관들은 연속적으로 생성된 블록들에 대해 샘플 시프트 레지스터(35)에서 각각의 값들로 수행된다(단계 408 내지 412). 각각의 결정된 부분 상관 값은 각각의 다음 메모리 주소에 저장된 값들과 결합된다. 도 5의 예시에서, 두 번째 프로세싱 사이클 동안에 마지막 블록들은 다시 블록 'DEF', 'GHI' 및 'ABC'이다. 부분 상관 값 'D*f + E*g + F*h'에 메모리(38)의 메모리 주소 '7'에 저장된 값 'A*c + B*d + C*e' 이 더해진다. 부분 상관 값 'G*f + H*g + I*h'에 메모리(38)의 메모리 주소 '8'에 저장된 값 'D*c + E*d + F*e' 이 더해진다. 부분 상관 값 'A*f + B*g + C*h'에 메모리(38)의 메모리 주소 '9'에 저장된 값 'G*c + H*d + I*e' 이 더해진다.Partial correlations are performed at respective values in the
단계 407 내지 412는 모든 N x L x N 프로세싱 사이클이 완료될 때까지 계속된다. 각각의 프로세싱 사이클의 시작에서, 다음 블록이 생성된 경우(단계 408), 하나의 블록이 스킵된다(단계 407).Steps 407-412 continue until all N x L x N processing cycles are completed. At the beginning of each processing cycle, if the next block is generated (step 408), one block is skipped (step 407).
도 5의 예시에서, 메모리 주소 '1'에서 메모리의 마지막 값은, 예를 들면 'A*a + B*b + C*c + D*d + E*e + F*f + G*g + H*h + I*i'이다. 이 값은 수신된 신호와 공지의 C/A 코드 사이에 제로 위상 시프트에 대한 상관 값이다. 나머지 8개의 메모리 주소 '2' 내지 '9'에서, 가능한 8개의 다른 위상 시프트들에 대한 마지막 상관 값들이 저장된다.In the example of FIG. 5, the last value of the memory at memory address' 1 'is, for example,' A * a + B * b + C * c + D * d + E * e + F * f + G * g + H * h + I * i '. This value is the correlation value for the zero phase shift between the received signal and a known C / A code. At the remaining eight memory addresses '2' through '9', the last correlation values for the eight possible different phase shifts are stored.
각각의 프로세싱 사이클의 시작에서 하나의 블록에 의한 시프트로 인하여, 필요한 메모리 주소가 이용 가능한 메모리 주소들을 단순한 라운드 회전에 의한 상관 프로세스를 통해 얻어질 수 있는데, 이는 단순하고 작은 어드레스 포인터에 의해 구현될 수 있다. 따라서, 메모리 주소들 사이에 점프와 종래의 블록 상관기들에서 요구되는 복잡한 상태 기계는 필요치 않다. Due to a shift by one block at the beginning of each processing cycle, the required memory address can be obtained through a correlation process by simple round rotation of the available memory addresses, which can be implemented by a simple small address pointer. have. Thus, the jump between memory addresses and the complex state machines required in conventional block correlators are not necessary.
본 발명의 실시 예가 각각 3개의 샘플의 3개의 블록으로 나누어진 코드들에 대해서 이해를 돕기 위해 설명되었지만, 당업자는 블록당 샘플들의 수에 한정되지 않는다는 것을 이해할 것이다.Although embodiments of the present invention have been described in order to facilitate understanding of codes divided into three blocks of three samples each, those skilled in the art will understand that they are not limited to the number of samples per block.
마지막 상관 값들의 추가적인 사용은 공지기술이다. 마지막 상관 값들은 예를 들면 메모리(38)에 의해 계산 컴포넌트(24)에 제공될 수 있으며, 마지막 상관 값들은 고려하고 있는 C/A 코드가 수신된 신호에 대한 정확한 C/A 코드인지와, 정 확한 위상 시프트를 결정하기 위해 계산된다. 획득한 정보는 GPS 모듈(21)에 의해 제공되는 기능들에서 필요한 이후 프로세싱 단계들에 사용될 수 있는데, 예를 들면, 수신된 신호를 디코딩하고, 내비게이션 정보를 추출하고, 내비게이션 정보와 측정 결과들에 기초한 모바일 디바이스(20)의 현재 위치를 결정하는데 사용될 수 있다. GPS 모듈(21)은, 예를 들면 모바일 디바이스(20)에서 운영하는 애플리케이션에 위치 정보를 제공할 수 있다.Further use of the last correlation values is known in the art. The last correlation values may be provided to the
이상 본 발명의 바람직한 실시 예들을 기초로 설명되었지만, 당업자들은 본 발명이 속하는 기술분야의 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해되어야 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 한정되며, 특허청구범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.Although described above based on the preferred embodiments of the present invention, those skilled in the art will understand that it can be carried out in other specific forms without changing the technical spirit or essential features of the technical field to which the present invention belongs. Therefore, the embodiments described above are to be understood as illustrative and not restrictive in all aspects. The scope of the present invention is defined by the appended claims rather than the foregoing description, and all changes or modifications derived from the meaning and scope of the claims and their equivalent concepts should be construed as being included in the scope of the present invention. do.
Claims (18)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2004/002915 WO2006027638A1 (en) | 2004-09-08 | 2004-09-08 | Processing a data word in a plurality of processing cycles |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020097006582A Division KR100914232B1 (en) | 2009-03-30 | 2004-09-08 | Processing a data word in a plurality of processing cycles |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070040841A true KR20070040841A (en) | 2007-04-17 |
KR101031566B1 KR101031566B1 (en) | 2011-04-27 |
Family
ID=34958585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077005435A KR101031566B1 (en) | 2004-09-08 | 2004-09-08 | How to process data words in multiple processing cycles |
Country Status (5)
Country | Link |
---|---|
US (1) | US7590828B2 (en) |
EP (1) | EP1828922A1 (en) |
KR (1) | KR101031566B1 (en) |
CN (1) | CN100580659C (en) |
WO (1) | WO2006027638A1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073053B (en) * | 2010-12-20 | 2012-10-03 | 东莞市泰斗微电子科技有限公司 | Pseudo random noise code generation unit of multi-mode GNSS (global navigation satellite system) receiver |
US9130786B2 (en) * | 2013-03-15 | 2015-09-08 | Qualcomm Incorporated | Device and method for computing a channel estimate |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1572622A (en) * | 1977-03-29 | 1980-07-30 | Secr Defence | Code synchronising apparatus |
US5317283A (en) * | 1993-06-08 | 1994-05-31 | Nokia Mobile Phones, Ltd. | Method to reduce noise in PLL frequency synthesis |
US5515300A (en) * | 1993-09-30 | 1996-05-07 | The United States Of America As Represented By The Secretary Of The Navy | Coherent signal power detector using higher-order statistics |
GB2321833B (en) * | 1997-02-03 | 2001-08-08 | Symmetricom Inc | Phase detector |
JP3503433B2 (en) * | 1997-07-31 | 2004-03-08 | 株式会社日立製作所 | Spread spectrum receiver |
GB9814960D0 (en) * | 1998-07-10 | 1998-09-09 | Koninkl Philips Electronics Nv | Coding device and communication system using the same |
EP1067702A1 (en) * | 1999-05-14 | 2001-01-10 | Alcatel | Electrical correlator |
US6965631B2 (en) * | 2000-03-13 | 2005-11-15 | Pri Research & Development Corp. | Low power passive correlators for multichannel global positioning system signal receiver |
EP1279239B1 (en) * | 2000-05-01 | 2005-08-10 | Telefonaktiebolaget LM Ericsson (publ) | Matched filter and receiver for mobile radio communication system |
US7190710B2 (en) * | 2001-06-08 | 2007-03-13 | Broadcom Corporation | Successive interference canceling for CMDA |
US7272622B2 (en) * | 2001-10-29 | 2007-09-18 | Intel Corporation | Method and apparatus for parallel shift right merge of data |
JP4210649B2 (en) * | 2002-10-15 | 2009-01-21 | テンソルコム インコーポレイテッド | Method and apparatus for channel amplitude estimation and interference vector construction |
EP1441449A1 (en) * | 2003-01-27 | 2004-07-28 | Agilent Technologies, Inc. - a Delaware corporation - | Programmable acquisition module for multi-standard CDMA based receivers |
-
2004
- 2004-09-08 CN CN200480043822A patent/CN100580659C/en not_active Expired - Fee Related
- 2004-09-08 KR KR1020077005435A patent/KR101031566B1/en not_active IP Right Cessation
- 2004-09-08 US US11/660,896 patent/US7590828B2/en not_active Expired - Fee Related
- 2004-09-08 WO PCT/IB2004/002915 patent/WO2006027638A1/en active Application Filing
- 2004-09-08 EP EP04769314A patent/EP1828922A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
WO2006027638A1 (en) | 2006-03-16 |
EP1828922A1 (en) | 2007-09-05 |
CN101006440A (en) | 2007-07-25 |
KR101031566B1 (en) | 2011-04-27 |
US7590828B2 (en) | 2009-09-15 |
US20070255930A1 (en) | 2007-11-01 |
CN100580659C (en) | 2010-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1071966B1 (en) | Matched Filter | |
CN101356449B (en) | Method and apparatus for performing signal correlation for signals received from satellites in multiple satellite systems | |
US6934322B2 (en) | Data message bit synchronization and local time correction methods and architectures | |
CN102378921B (en) | Method and apparatus for software GPS receiver | |
US8351486B2 (en) | Parallel correlator implementation using hybrid correlation in spread-spectrum communication | |
WO2003017503A2 (en) | Spread spectrum receiver architectures and methods therefor | |
MXPA02006219A (en) | Programmable matched filter searcher for multiple pilot searching. | |
US7526014B2 (en) | Correlator for spread spectrum receiver | |
US6519237B1 (en) | Apparatus and method for parallel searching and correlating for CDMA system | |
CN201152895Y (en) | GPS signal correlating device | |
JP2734956B2 (en) | PN code synchronization method for spread spectrum | |
KR101031566B1 (en) | How to process data words in multiple processing cycles | |
KR100914232B1 (en) | Processing a data word in a plurality of processing cycles | |
US6847676B1 (en) | All-lag spread-spectrum correlators with rotating references | |
JP3450299B2 (en) | Collection method and apparatus for implementing the method | |
US7558312B2 (en) | Parallel correlator implementation using block integration for spread-spectrum communication | |
EP1152544A1 (en) | A time efficient real time correlator for CDMA systems | |
US7124352B2 (en) | Tracking a code modulated signal | |
JP7150396B2 (en) | CODE GENERATOR AND SPREAD SPECTRUM SIGNAL RECEIVING SYSTEM | |
WO2004088531A1 (en) | Method for determining the correlation between received samples and available replica samples | |
AU754282B2 (en) | Fast acquisition, high sensitivity GPS receiver | |
AU8756098A (en) | Fast acquisition, high sensitivity gps receiver | |
JP2003078450A (en) | Correlation detector | |
JP2002101015A (en) | Reverse-spread apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
PA0105 | International application |
Patent event date: 20070307 Patent event code: PA01051R01D Comment text: International Patent Application |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20080228 Patent event code: PE09021S01D |
|
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20080829 Patent event code: PE09021S01D |
|
E601 | Decision to refuse application | ||
PE0601 | Decision on rejection of patent |
Patent event date: 20090227 Comment text: Decision to Refuse Application Patent event code: PE06012S01D Patent event date: 20080829 Comment text: Notification of reason for refusal Patent event code: PE06011S01I Patent event date: 20080228 Comment text: Notification of reason for refusal Patent event code: PE06011S01I |
|
A107 | Divisional application of patent | ||
AMND | Amendment | ||
J201 | Request for trial against refusal decision | ||
PA0104 | Divisional application for international application |
Comment text: Divisional Application for International Patent Patent event code: PA01041R01D Patent event date: 20090330 |
|
PJ0201 | Trial against decision of rejection |
Patent event date: 20090330 Comment text: Request for Trial against Decision on Refusal Patent event code: PJ02012R01D Patent event date: 20090227 Comment text: Decision to Refuse Application Patent event code: PJ02011S01I Appeal kind category: Appeal against decision to decline refusal Decision date: 20101229 Appeal identifier: 2009101002915 Request date: 20090330 |
|
PB0901 | Examination by re-examination before a trial |
Comment text: Amendment to Specification, etc. Patent event date: 20090330 Patent event code: PB09011R02I Comment text: Request for Trial against Decision on Refusal Patent event date: 20090330 Patent event code: PB09011R01I Comment text: Amendment to Specification, etc. Patent event date: 20080428 Patent event code: PB09011R02I |
|
B601 | Maintenance of original decision after re-examination before a trial | ||
PB0601 | Maintenance of original decision after re-examination before a trial | ||
PJ1301 | Trial decision |
Patent event code: PJ13011S01D Patent event date: 20101230 Comment text: Trial Decision on Objection to Decision on Refusal Appeal kind category: Appeal against decision to decline refusal Request date: 20090330 Decision date: 20101229 Appeal identifier: 2009101002915 |
|
PS0901 | Examination by remand of revocation | ||
S901 | Examination by remand of revocation | ||
GRNO | Decision to grant (after opposition) | ||
PS0701 | Decision of registration after remand of revocation |
Patent event date: 20110131 Patent event code: PS07012S01D Comment text: Decision to Grant Registration Patent event date: 20101230 Patent event code: PS07011S01I Comment text: Notice of Trial Decision (Remand of Revocation) |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20110420 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20110421 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
LAPS | Lapse due to unpaid annual fee | ||
PC1903 | Unpaid annual fee |
Termination category: Default of registration fee Termination date: 20150309 |