[go: up one dir, main page]

KR20070040841A - How to process data words in multiple processing cycles - Google Patents

How to process data words in multiple processing cycles Download PDF

Info

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
Application number
KR1020077005435A
Other languages
Korean (ko)
Other versions
KR101031566B1 (en
Inventor
마르크 호프만
Original Assignee
노키아 코포레이션
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 노키아 코포레이션 filed Critical 노키아 코포레이션
Publication of KR20070040841A publication Critical patent/KR20070040841A/en
Application granted granted Critical
Publication of KR101031566B1 publication Critical patent/KR101031566B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • 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/709Correlator structure
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO 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/00Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
    • G01S19/01Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
    • G01S19/13Receivers
    • G01S19/24Acquisition or tracking or demodulation of signals transmitted by the system
    • G01S19/30Acquisition or tracking or demodulation of signals transmitted by the system code related
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO 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/00Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
    • G01S19/01Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
    • G01S19/13Receivers
    • G01S19/35Constructional details or hardware or software details of the signal processing chain
    • G01S19/37Hardware or software details of the signal processing chain
    • 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
    • H04B2201/00Indexing scheme relating to details of transmission systems not covered by a single group of H04B3/00 - H04B13/00
    • H04B2201/69Orthogonal indexing scheme relating to spread spectrum techniques in general
    • H04B2201/707Orthogonal indexing scheme relating to spread spectrum techniques in general relating to direct sequence modulation
    • H04B2201/70715Orthogonal 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

다수의 프로세싱 사이클에서 데이터 워드를 처리하는 방법{Processing a data word in a plurality of processing cycles}Processing a data word in a multiple of processing cycles

본 발명은 다수의 프로세싱 사이클에서 데이터 워드를 처리하는 방법에 관한 것이다. 본 발명은 상기 처리 방법에 상응하는 처리 모듈, 전자 디바이스, 및 시스템에 관한 것이다. 마지막으로, 상응하는 소프트웨어 프로그램 프로덕트에 관한 것이다.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 mobile device 20 and a number of GPS satellites 29.

모바일 디바이스(200)은 GPS 모듈(21)을 포함하는 어떠한 모바일 디바이스일 수 있다. 예를 들면, 모바일 디바이스(20)는 셀룰러 네트워크으로 통신할 수 있는 셀룰러 단말의 필수적인 컴포넌트들을 포함한 셀룰러 단말일 수 있다. 선택적으로, 모바일 디바이스(20)는 예를 들면 개인 휴대 정보 단말기(Portable Digital Assistant, PDA)일 수 있다. 또한, 선택적으로, 순수한 GPS 디바이스일 수 있다.Mobile device 200 can be any mobile device including GPS module 21. For example, mobile device 20 may be a cellular terminal that includes the essential components of a cellular terminal capable of communicating over a cellular network. Optionally, the mobile device 20 may be a portable digital assistant (PDA), for example. Also optionally, it may be a pure GPS device.

GPS 모듈(21)은 수신 컴포넌트, 하드웨어(HW) 및/또는 소프트웨어(SW)로 구현된 상관기, 및 계산 컴포넌트((24)를 포함한다. 여기서 계산 컴포넌트(24)는 모바일 디바이스(20)의 다른 기능들을 위해 사용되는 프로세서를 이용하거나 또는 일 부분일 수 있다.The GPS module 21 comprises a receiving component, a correlator implemented in hardware (HW) and / or software (SW), and a computing component 24. Here, the computing component 24 is a different component of the mobile device 20. It may be or part of the processor used for the functions.

상관기(23)는 도 3의 블록 다이어그램에 더 상세히 도시된다.The correlator 23 is shown in more detail in the block diagram of FIG. 3.

상관기(23)에서, 코드 생성기(30)는 멀티플렉서(31)로부터 제어 신호들을 수 신한다. 코드 생성기(30)의 출력은 카운터(32)를 통해 멀티플렉서(31)의 제어 입력으로 피드백된다. 멀티플렉서(31)는 제어 입력에서의 신호에 따라 2개의 제어 신호들 중 하나를 코드 생성기(30)로 포워딩한다. 제1 제어 신호는 명령 'L 칩만큼 증가'를 나타내는 반면, 제2 제어 신호는 명령 '2L 칩만큼 증가'를 나타낸다.In the correlator 23, the code generator 30 receives control signals from the multiplexer 31. The output of the code generator 30 is fed back to the control input of the multiplexer 31 via the counter 32. The multiplexer 31 forwards one of the two control signals to the code generator 30 in accordance with the signal at the control input. The first control signal indicates the command 'increase by L chip', while the second control signal '�' indicates 'increase by 2L chip'.

또한, 코드 생성기(30)의 출력은 L 칩을 저장할 수 있는 코드 시프트 레지스터(33)를 통해 비트 단위의 곱셈기(bit-wise multiplier, 34)의 입력에 접속된다. The output of the code generator 30 is also connected to the input of a bit-wise multiplier 34 via a code shift register 33 that can store L chips.

또한, L 샘플들을 저장할 수 있는 샘플 시프트 레지스터(35)는 비트 단위의 곱셈기(34)의 입력에 접속된다. 샘플 시프트 레지스터(35)는 GPS 모듈(21)의 수신 컴포넌트(22)로부터 입력 샘플들을 수신한다. In addition, a sample shift register 35, which can store L samples, is connected to the input of the multiplier 34 in units of bits. The sample shift register 35 receives input samples from the receiving component 22 of the GPS module 21.

비트 단위의 곱셈기(34)의 출력은 적분기(36)와 결합 컴포넌트(37)를 통해 메모리(38)에 접속된다. 메모리(38)는 결합 컴포넌트(37)의 제2 입력에 다시 결합된다. 비트 단위의 곱셈기(34), 적분기(36) 및 결합 컴포넌트(37)는 덧셈기 트리(adder tree)를 형성한다. The output of the bitwise multiplier 34 is connected to the memory 38 through the integrator 36 and the coupling component 37. The memory 38 is again coupled to the second input of the coupling component 37. The bitwise multiplier 34, integrator 36 and coupling component 37 form an adder tree.

이제, 상관기(23)의 동작이 도 4 및 도 5의 흐름도를 참조하여 설명될 것이다. 도 5의 다이어그램은 간략한 예시에 의해 동작의 원리를 설명한다. The operation of the correlator 23 will now be described with reference to the flowcharts of FIGS. 4 and 5. The diagram of FIG. 5 illustrates the principle of operation by brief illustration.

GPS 모듈(21)이 GPS 위성(29)으로부터 신호를 수신하는 경우, GPS 모듈(21)은 신호를 발신한 위성 및 신호가 가지는 코드 위상을 결정하여야 한다. 이를 위해, 수신 컴포넌트(22)는 수신된 신호의 샘플들을 공지의 샘플링 속도로 상관기(23)에 포워딩한다. When the GPS module 21 receives a signal from the GPS satellites 29, the GPS module 21 must determine the code phase of the signal and the satellite that sent the signal. To this end, the receiving component 22 forwards the samples of the received signal to the correlator 23 at a known sampling rate.

상관기(23)에서, 처음 L 샘플들이 샘플 시프트 레지스터(35)에 저장된다(단 계 401)., 도 5에 도시된 개략적인 예시에서, L은 3이고, 샘플 시프트 레지스터(35)에 저장된 처음 3개의 샘플들은 'abc'이고, 도면부호 12로 도시되어 있다. In the correlator 23, the first L samples are stored in the sample shift register 35 (step 401). In the schematic example shown in FIG. 5, L is 3 and the first stored in the sample shift register 35 Three samples are 'abc' and are shown at 12.

동시에, 코드 생성기(30)는 C/A 코드의 첫 번째 블록을 생성한다(단계 402). C/A 코드는 특정 GPS 위성, 가능한 신호를 전송한 위성(29)에 의해 사용되는 것으로 공지되어 있다. 생성된 블록은 코드의 L 다음 칩들(L subsequent chips)을 포함하고, 코드 레지스터(33)에 저장된다. 도 5에 도시된 개략적인 예시에서, 코드 레지스터(33)에 저장된 처음 L=3 샘플들은 'ABC'이고, 도면부호 11로 도시되어 있다.At the same time, code generator 30 generates the first block of C / A code (step 402). C / A codes are known to be used by particular GPS satellites, satellites 29 which transmit possible signals. The generated block contains L subsequent chips of the code and is stored in the code register 33. In the schematic example shown in FIG. 5, the first L = 3 samples stored in the code register 33 are 'ABC' and are shown at 11.

다음, 곱셈기(34)는 샘플 시프트 레지스터(35)로부터 샘플들과 코드 레지스터(33)의 칩들을 비트 단위로 곱셈한다. 적분기(36)는 곱셈 결과들을 적분하고, 결합 컴포넌트(37)는 메모리(38)의 첫 번째 메모리 주소에 부분 상관 값으로 적분 결과들을 저장한다(단계 403). 메모리(38)가 관계된 메모리 주소에 어떠한 부분 상관 값들을 포함하지 않는 한, 결합 컴포넌트(37)는 어떠한 합산 태스크(tasks)도 가지지 않는다. The multiplier 34 then multiplies the samples from the sample shift register 35 and the chips of the code register 33 bit by bit. Integrator 36 integrates the multiplication results, and combining component 37 stores the integration results as a partial correlation value in the first memory address of memory 38 (step 403). Unless the memory 38 includes any partial correlation values in the associated memory address, the coupling component 37 has no summation tasks.

도 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 code generator 30 outputs a block and also provides a corresponding indication to the counter 32. Starting with a zero counter value, the counter 32 receives a signal from the code generator 30 and increments the counter value by one until the N x L counter value is reached. Only when the N × L counter value is reached, the counter provides the control signal to the multiplexer 31.

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 sample shift register 34 remain the same. N blocks contain all samples of the code exactly once. The code generator 30 generates the next block with L chips at regular intervals because the multiplexer 31 provides the code generator 30 with an instruction 'increment by L chips' (step 402). No signal is provided to the counter 32. The new block is generated by the code generator 30 at a frequency that is N times greater than the sampling frequency. Each next block is correlated with the samples stored in the sample shift register 35, as described for the first block, and the resulting partial correlation value is stored in the memory of the memory address incremented by one for the new partial correlation value. (Step 403). In the example shown in FIG. 5, the second code block is 'DEF' and the second correlation result 'D * a + E * b + F * c' is stored at the memory address '2'. The third code block is 'GHI', and the third correlation result 'G * a + H * b + I * c' is stored at the memory address '3'.

샘플 시프트 레지스터(35)의 입력 샘플들이 코드 생성기(30)에 의한 제N 블록 출력을 처리하도록 N번 동안 곱셈기(34)에 제공된 후(단계 404), 또 다른 입력 샘플이 샘플 시프트 레지스터(35)에 저장된다(단계 405). 이는 코드 생성기(30)뿐만 아니라 전체 상관기(23)가 샘플링 주파수보다 N배 더 큰 주파수에서 동작되도록 함으로써 달성가능하다. 도 5에 도시된 예시에서, 샘플 시프트 레지스터에 저장된 3개의 샘플은 이제 'bcd'이다.After the input samples of the sample shift register 35 are provided to the multiplier 34 for N times to process the Nth block output by the code generator 30 (step 404), another input sample is sent to the sample shift register 35. Is stored in step 405. This is achievable by allowing the entire correlator 23 as well as the code generator 30 to be operated at a frequency that is N times greater than the sampling frequency. In the example shown in FIG. 5, the three samples stored in the sample shift register are now 'bcd'.

카운터(32)가 값 'N x L'에 도달하지 않는 한(단계 406), 코드 생성기(30)는 코드의 다음 블록을 생성하고, 각각의 부분 상관 값을 결정하고, 하나씩 증가된 메모리 주소의 메모리(38)에 결과를 저장하는 것을 계속한다(단계 402, 403, 404). 각각의 N 부분 상관 값들이 결정된 후에, 또는 제N 부분 상관 값이 결정된 후에, 새로운 샘플이 다음 N 부분 상관 값들을 위해 샘플 시프트 레지스터(35)에 입력된다(단계 404, 405).As long as the counter 32 does not reach the value 'N x L' (step 406), the code generator 30 generates the next block of code, determines each partial correlation value, and increments the memory address by one. Continue storing the results in memory 38 (steps 402, 403, 404). After each N partial correlation values have been determined, or after the Nth partial correlation value has been determined, a new sample is input to the sample shift register 35 for the next N partial correlation values (steps 404, 405).

도 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 sample shift register 35 are 'cde', the seventh block is 'ABC' again, the eighth block is 'DEF', and the ninth block is 'GHI'. The seventh partial correlation value 'A * c + B * d + C * e' is stored in memory address' 7 'and the eighth partial correlation value' D * c + E * d + F * e 'is stored in memory address' 8 'and the ninth partial correlation value' G * c + H * d + I * e 'is stored in memory address' 9'.

카운터(32)가 값 'N x L'에 도달하면(단계 406), 제1 프로세싱 사이클에 대한 모든 블록이 코드 생성기(30)에 의해 제공된다. 결과 부분 상관 값들은 N x L 이용 가능한 메모리 주소들에 저장되고, 각각은 수신된 샘플들과 공지된 코드 사이에 다른 위상 시프트에 속한다. 도 5의 예시에서, 상관 값들은 제1 프로세싱 사이클 후에 9개의 이용 가능한 메모리 주소들 '1' 내지 '9'에 저장된다.When the counter 32 reaches the value 'N x L' (step 406), all blocks for the first processing cycle are provided by the code generator 30. The resulting partial correlation values are stored in N × L available memory addresses, each belonging to a different phase shift between the received samples and the known code. In the example of FIG. 5, correlation values are stored at nine available memory addresses '1' through '9' after the first processing cycle.

다음 프로세싱 사이클 동안, 카운터(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 counter 32 provides a control signal to the multiplexer 31, and the multiplexer 31 provides the code generator 30 with an instruction 'increment by 2L chips'. As a result of the control signal from the multiplexer 31, the code generator 30 generates the next 2L chips, but outputs the last L chips to the code register 33. That is, one block having the length of the L chips is skipped at the output of the code generator 30 (steps 407 and 408). In the example of FIG. 5, as in the case of the conventional block correlator, the ninth block 'GHI' follows the tenth block 'DEF' in place of the block 'ABC'. Samples in the sample register 35 are automatically updated to 'def'.

다음, 곱셈기(34)는 다시 샘플 시프트 레지스터(35)로부터의 샘플들과 코드 레지스터(33)의 블록을 비트 단위로 곱한다. 적분기(36)는 곱셈 결과들을 적분한다. 또 다른 부분 상관 값을 형성하는 적분 결과에 결합 컴포넌트(37)에 의해 메모리(38)의 첫 번째 메모리 주소에 저장된 값이 더해진다(단계 409). 도 5의 예시에서, 부분 상관 값 'D*d + E*e + F*f'에 메모리(38)의 첫 번째 메모리 주소 '1'에 저장된 값 'A*a + B*b + C*c'이 더해진다. The multiplier 34 then multiplies the blocks from the code register 33 by the bits from the sample shift register 35 again. Integrator 36 integrates the multiplication results. The value stored at the first memory address of the memory 38 by the coupling component 37 is added to the integration result forming another partial correlation value (step 409). In the example of FIG. 5, the value 'A * a + B * b + C * c stored at the first memory address' 1' of the memory 38 at the partial correlation value 'D * d + E * e + F * f' 'Is added.

이러한 프로세스는 다음 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 (steps 410, 408, 409). In the example of FIG. 5, the partial correlation value 'G * d + H * e + I * f' has a value 'D * a + E * b + F * c' stored at the memory address '2' of the memory 38. Is added. After that, the value 'G * a + H * b + I * c' stored at the memory address '3' of the memory 38 is added to the partial correlation value 'A * d + B * e + C * f'.

그 후에, 새로운 샘플이 다시 샘플 시프트 레지스터(35)에 입력된다(단계 410, 411). 도 5의 예시에서, 이는 'efg' 의 샘플 시프트 레지스터(24)의 레지스 터 값을 가져온다. After that, a new sample is input again to the sample shift register 35 (steps 410 and 411). In the example of FIG. 5, this results in the register value of the sample shift register 24 of 'efg'.

이전처럼(단계 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 sample shift register 35 after each N new blocks are generated until the next N x L blocks are processed. In the example of FIG. 5, the last input sample in this cycle results in the value 'fgh' of the sample shift register 36.

부분 상관들은 연속적으로 생성된 블록들에 대해 샘플 시프트 레지스터(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 sample shift register 35 for successively generated blocks (steps 408-412). Each determined partial correlation value is combined with the values stored at each next memory address. In the example of FIG. 5, the last blocks during the second processing cycle are again blocks 'DEF', 'GHI' and 'ABC'. The partial correlation value 'D * f + E * g + F * h' is added with the value 'A * c + B * d + C * e' stored at the memory address '7' of the memory 38. The partial correlation value 'G * f + H * g + I * h' is added with the value 'D * c + E * d + F * e' stored at the memory address '8' of the memory 38. The partial correlation value 'A * f + B * g + C * h' is added with the value 'G * c + H * d + I * e' stored at the memory address '9' of the memory 38.

단계 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 calculation component 24 by the memory 38, for example, and the final correlation values determine whether the C / A code under consideration is the correct C / A code for the received signal. Calculated to determine the exact phase shift. The obtained information can be used for later processing steps required by the functions provided by the GPS module 21, for example, decoding the received signal, extracting the navigation information, and navigating the navigation information and the measurement results. It can be used to determine the current location of the mobile device 20 based. The GPS module 21 may provide location information, for example, to an application running on the mobile device 20.

이상 본 발명의 바람직한 실시 예들을 기초로 설명되었지만, 당업자들은 본 발명이 속하는 기술분야의 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해되어야 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 한정되며, 특허청구범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.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)

다수의 프로세싱 사이클들에서 데이터 워드를 처리하는 방법으로서,A method of processing a data word in multiple processing cycles, 상기 방법은,The method, 각각의 프로세싱 사이클 동안에 상기 데이터 워드를 다수의 연속적인 데이터 블록들 - 상기 연속적인 데이터 블록들은 하나의 프로세싱 사이클로부터 다음 프로세싱 사이클까지 하나의 데이터 블록만큼 시프팅됨- 로 나누는 단계;Dividing 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 processing cycle; 상기 프로세싱 사이클들 각각에서, 상기 연속적인 데이터 블록들 각각을 시퀀스로 처리하는 단계; In each of the processing cycles, processing each of the consecutive data blocks in sequence; 첫 번째 프로세싱 사이클에서, 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소들의 메모리에 상기 첫 번째 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 저장하는 단계; 및In a first processing cycle, storing 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 각각의 다음(subsequent) 프로세싱 사이클에서, 상기 다음 프로세싱 사이클에서의 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소에, 이전(preceding) 프로세싱 사이클 동안에 상기 메모리에 저장된 처리 결과들과 상기 다음 프로세싱 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 결합하는 단계를 포함하는 데이터 워드 처리 방법.  In each subsequent processing cycle, the processing results stored in the memory during the preceding processing cycle and the next processing at a memory address that varies constantly from one processing result in the next processing cycle to the next processing result. Combining the processing results for the successive data blocks of a cycle. 제 1 항에 있어서, The method of claim 1, 상기 처리 결과들을 저장하고 결합하기 위해, To store and combine the processing results, 상기 메모리는 라운드 회전 방식(round rotating manner)으로 각각의 메모리 액세스에 대해 증가한 어드레스 포인터로 어드레스되는 것을 특징으로 하는 데이터 워드 처리 방법.And the memory is addressed with an incremented address pointer for each memory access in a round rotating manner. 제 1 항에 있어서,The method of claim 1, 하나의 프로세싱 사이클부터 다음 프로세싱 사이클까지 각각의 데이터 블록만큼 상기 연속적인 데이터 블록들을 시프팅하기 위해,To shift the consecutive data blocks by each data block from one processing cycle to the next processing cycle, 상기 데이터 워드의 연속적인 데이터 블록들은,Consecutive data blocks of the data word, 하나의 데이터 블록이 각각의 다음 프로세싱 사이클의 시작에서 스킵(skip)되는 것을 제외하고, 순환적 및 연속적으로 생성되는 것을 특징으로 하는 데이터 워드 처리 방법.A method of processing data words, characterized in that one data block is generated cyclically and continuously except that it is skipped at the start of each next processing cycle. 제 1 항에 있어서,The method of claim 1, 상기 연속적인 데이터 블록들의 처리하는 단계는,Processing the consecutive data blocks may include: 상기 공지의 데이터 워드와 제공된 샘플들과 블록 단위로 상관시키는 단계를 포함하는 것을 특징으로 하는 데이터 워드 처리 방법. And correlating block-by-block with the samples provided and the known data word. 제 4 항에 있어서, The method of claim 4, wherein 상기 데이터 워드는 공지의 데이터 코드이고,The data word is a known data code, 상기 제공된 샘플들은 코드 변조된 신호의 샘플들인 것을 특징으로 하는 데 이터 워드 처리 방법.And said provided samples are samples of a code modulated signal. 다수의 프로세싱 사이클들에서 데이터 워드를 처리하기 위한 처리 모듈에 있어서, A processing module for processing a data word in multiple processing cycles, 상기 처리 모듈은,The processing module, 각각의 프로세싱 사이클 동안에 상기 데이터 워드를 다수의 연속적인 데이터 블록들 - 상기 연속적인 데이터 블록들은 하나의 프로세싱 사이클로부터 다음 프로세싱 사이클까지 하나의 데이터 블록만큼 시프팅됨- 로 나누는 데이터 워드 분할 컴포넌트;A data word dividing 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 processing cycle; 상기 프로세싱 사이클들 각각에서 상기 연속적인 데이터 블록들 각각을 시퀀스로 처리하는 처리 컴포넌트; 및A processing component that processes each of the consecutive data blocks in sequence in each of the processing cycles; And 첫 번째 프로세싱 사이클에서, 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소들의 메모리에 상기 첫 번째 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 저장하고,In a first processing cycle, storing 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, 각각의 다음 프로세싱 사이클에서, 상기 다음 프로세싱 사이클에서의 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소에, 이전 프로세싱 사이클 동안에 상기 메모리에 저장된 처리 결과들과 상기 다음 프로세싱 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 결합하는 결합 컴포넌트를 포함하는 데이터 워드 처리 모듈. In each next processing cycle, the processing results stored in the memory during the previous processing cycle and the continuous data of the next processing cycle, at a memory address that constantly varies from one processing result in the next processing cycle to the next processing result. A data word processing module comprising a combining component that combines the processing results for the blocks. 제 6 항에 있어서,The method of claim 6, 상기 처리 결과들을 저장하고 결합하기 위한 결합 컴포넌트는,Coupling component for storing and combining the processing results, 라운드 회전 방식으로 각각의 메모리 액세스에 대해 증가한 어드레스 포인터를 포함하는 것을 특징으로 하는 데이터 워드 처리 모듈. And an incremented address pointer for each memory access in a round rotational manner. 제 6 항에 있어서,The method of claim 6, 하나의 프로세싱 사이클부터 다음 프로세싱 사이클까지 각각의 데이터 블록만큼 상기 연속적인 데이터 블록들을 시프팅하기 위해,To shift the consecutive data blocks by each data block from one processing cycle to the next processing cycle, 상기 데이터 워드 분할 컴포넌트는,The data word division component is 하나의 데이터 블록이 각각의 다음 프로세싱 사이클의 시작에서 스킵되는 것을 제외하고, 순환적 및 연속적으로 생성하는 것을 특징으로 하는 데이터 워드 처리 모듈.A data word processing module, characterized in that it generates circularly and continuously except that one data block is skipped at the beginning of each next processing cycle. 제 6 항에 있어서,The method of claim 6, 상기 데이터 워드 분할 컴포넌트는,The data word division component is 데이터 워드 생성기, 멀티플렉서 및 카운터를 포함하고,Includes a data word generator, a multiplexer and a counter, 상기 데이터 워드 생성기는 순환 방식으로 상기 데이터 워드의 블록들을 생성하고,The data word generator generates blocks of the data word in a cyclic manner; 상기 카운터는 생성된 블록들의 수를 카운터하고, 하나의 프로세싱 사이클에 대해 필요한 블록들의 수가 생성될 될 때마다 소정의 제어 신호를 상기 멀티플렉서 에 제공하고, The counter counters the number of blocks generated, provides a predetermined control signal to the multiplexer each time the number of blocks needed for one processing cycle is generated, 상기 멀티플렉서는 상기 카운터가 상기 제어 신호를 제공하지 않는 한 상기 데이터 워드 생성기가 상기 데이터 워드의 연속적인 블록들을 생성하도록 하고, 상기 카운터가 상기 제어 신호를 제공할 때마다 상기 데이터 워드 생성기가 상기 데이터 워드의 하나의 블록을 스킵하도록 하는 것을 특징으로 하는 데이터 워드 처리 모듈.The multiplexer causes the data word generator to generate successive blocks of the data word unless the counter provides the control signal, and each time the counter provides the control signal, the data word generator causes the data word. And skip one block of the data word processing module. 제 6 항에 있어서,The method of claim 6, 상기 처리 컴포넌트는,The processing component, 상기 데이터 워드를 제공된 샘플들과 블록 단위로 상관시킴으로써 연속적인 데이터 블록들을 처리하는 것을 특징으로 하는 데이터 워드 처리 모듈.And processing the successive blocks of data by correlating the data word block by block with the provided samples. 제 10 항에 있어서,The method of claim 10, 상기 데이터 워드는 공지의 코드이고,The data word is a known code, 상기 제공된 샘플들은 코드 변조된 신호의 샘플들인 것을 특징으로 하는 데이터 워드 처리 모듈.And said provided samples are samples of a code modulated signal. 제 6 항에 있어서,The method of claim 6, 상기 처리 모듈은 하드웨어로 구현된 것을 특징으로 하는 데이터 워드 처리 모듈.And said processing module is implemented in hardware. 다수의 프로세싱 사이클에서 데이터 워드를 처리하기 위한 처리 모듈을 포함하는 전자 디바이스로서, An electronic device comprising a processing module for processing data words in a number of processing cycles, the method comprising: 상기 처리 모듈은,The processing module, 각각의 프로세싱 사이클 동안에 상기 데이터 워드를 다수의 연속적인 데이터 블록들 - 상기 연속적인 데이터 블록들은 하나의 프로세싱 사이클로부터 다음 프로세싱 사이클까지 하나의 데이터 블록만큼 시프팅됨- 로 나누는 데이터 워드 분할 컴포넌트;A data word dividing 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 processing cycle; 상기 프로세싱 사이클들 각각에서 상기 연속적인 데이터 블록들 각각을 시퀀스로 처리하는 처리 컴포넌트; 및A processing component that processes each of the consecutive data blocks in sequence in each of the processing cycles; And 첫 번째 프로세싱 사이클에서, 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소들의 메모리에 상기 첫 번째 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 저장하고, In a first processing cycle, storing 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, 각각의 다음 프로세싱 사이클에서, 상기 다음 프로세싱 사이클에서의 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소에, 이전 프로세싱 사이클 동안에 상기 메모리에 저장된 처리 결과들과 상기 다음 프로세싱 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 결합하는 결합 컴포넌트를 포함하는,In each next processing cycle, the processing results stored in the memory during the previous processing cycle and the continuous data of the next processing cycle, at a memory address that constantly varies from one processing result in the next processing cycle to the next processing result. A combining component that combines the processing results for the blocks, 전자 디바이스. Electronic device. 제 13 항에 있어서,The method of claim 13, 상기 디바이스는,The device, 모바일 폰인 것을 특징으로 하는 전자 디바이스.An electronic device, characterized in that a mobile phone. 제 13 항에 있어서,The method of claim 13, 상기 디바이스는,The device, 코드 분할 다중 접속이 가능한 수신기인 것을 특징으로 하는 전자 디바이스.An electronic device, characterized in that the receiver is capable of code division multiple access. 제 13 항에 있어서,The method of claim 13, 상기 디바이스는,The device, 위성 신호 수신기인 것을 특징으로 하는 전자 디바이스.An electronic device, characterized in that the satellite signal receiver. 다수의 프로세싱 사이클들에서 데이터 워드를 처리하기 위한 처리 모듈과, 상기 처리 모듈과 데이터를 적어도 일정 방향(uni-directionally)으로 교환하는 적어도 하나의 다른 모듈을 포함하는 시스템으로서,A system comprising a processing module for processing a data word in a plurality of processing cycles and at least one other module for exchanging data with the processing module at least uni-directionally, 상기 처리 모듈은,The processing module, 각각의 프로세싱 사이클 동안에 상기 데이터 워드를 다수의 연속적인 데이터 블록들 - 상기 연속적인 데이터 블록들은 하나의 프로세싱 사이클로부터 다음 프로세싱 사이클까지 하나의 데이터 블록만큼 시프팅됨- 로 나누는 데이터 워드 분할 컴포넌트;A data word dividing 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 processing cycle; 상기 프로세싱 사이클들 각각에서 상기 연속적인 데이터 블록들 각각을 시퀀스로 처리하는 처리 컴포넌트; 및A processing component that processes each of the consecutive data blocks in sequence in each of the processing cycles; And 첫 번째 프로세싱 사이클에서, 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소들의 메모리에 상기 첫 번째 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 저장하고, In a first processing cycle, storing 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, 각각의 다음 프로세싱 사이클에서, 상기 다음 프로세싱 사이클에서의 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소에, 이전 프로세싱 사이클 동안에 상기 메모리에 저장된 처리 결과들과 상기 다음 프로세싱 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 결합하는 결합 컴포넌트를 포함하는,In each next processing cycle, the processing results stored in the memory during the previous processing cycle and the continuous data of the next processing cycle, at a memory address that constantly varies from one processing result in the next processing cycle to the next processing result. A combining component that combines the processing results for the blocks, 시스템.system. 다수의 프로세싱 사이클들에서 데이터 워드를 처리하기 위한 소프트웨어 코드 - 상기 소프트웨어 코드는 프로세싱 컴포넌트에서 실행하는 경우 다음 단계들을 구현함 - 가 저장된 소프트웨어 프로그램 프로덕트로서,Is a stored software program product for processing a data word in multiple processing cycles, the software code implementing the following steps when executed in a processing component: 각각의 프로세싱 사이클 동안에 상기 데이터 워드를 다수의 연속적인 데이터 블록들 - 상기 연속적인 데이터 블록들은 하나의 프로세싱 사이클로부터 다음 프로세싱 사이클까지 하나의 데이터 블록만큼 시프팅됨- 로 나누는 단계; Dividing 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 processing cycle; 상기 프로세싱 사이클들 각각에서, 상기 연속적인 데이터 블록들 각각을 시퀀스로 처리하는 단계; In each of the processing cycles, processing each of the consecutive data blocks in sequence; 첫 번째 프로세싱 사이클에서, 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소들의 메모리에 상기 첫 번째 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 저장하는 단계; 및In a first processing cycle, storing 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 각각의 다음 프로세싱 사이클에서, 상기 다음 프로세싱 사이클에서의 하나의 처리 결과부터 다음 처리 결과까지 일정하게 변하는 메모리 주소에, 이전 프로세싱 사이클 동안에 상기 메모리에 저장된 처리 결과들과 상기 다음 프로세싱 사이클의 상기 연속적인 데이터 블록들에 대한 처리 결과들을 결합하는 단계를 포함하는 소프트웨어 프로그램 프로덕트. In each next processing cycle, the processing results stored in the memory during the previous processing cycle and the continuous data of the next processing cycle, at a memory address that constantly varies from one processing result in the next processing cycle to the next processing result. A software program product comprising combining the processing results for the blocks.
KR1020077005435A 2004-09-08 2004-09-08 How to process data words in multiple processing cycles KR101031566B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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