KR101168158B1 - Address generator for searching an algebraic code book - Google Patents
Address generator for searching an algebraic code book Download PDFInfo
- Publication number
- KR101168158B1 KR101168158B1 KR1020090027317A KR20090027317A KR101168158B1 KR 101168158 B1 KR101168158 B1 KR 101168158B1 KR 1020090027317 A KR1020090027317 A KR 1020090027317A KR 20090027317 A KR20090027317 A KR 20090027317A KR 101168158 B1 KR101168158 B1 KR 101168158B1
- Authority
- KR
- South Korea
- Prior art keywords
- address
- adder
- correlation matrix
- search
- algebraic codebook
- Prior art date
Links
- 239000011159 matrix material Substances 0.000 claims abstract description 51
- 238000004364 calculation method Methods 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims description 43
- 230000008569 process Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 8
- 101000712600 Homo sapiens Thyroid hormone receptor beta Proteins 0.000 description 7
- 102100033451 Thyroid hormone receptor beta Human genes 0.000 description 7
- 238000013139 quantization Methods 0.000 description 5
- 230000005284 excitation Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/08—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
- G10L19/10—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a multipulse excitation
- G10L19/107—Sparse pulse excitation, e.g. by using algebraic codebook
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/08—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
- G10L19/12—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Acoustics & Sound (AREA)
- Signal Processing (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
본 발명은 대수 코드북 검색을 위한 어드레스 생성기에 관한 것으로, 그 장치는 상관관계 매트릭스의 크기와 가로값을 곱하는 곱셈기 상기 상관관계 매트릭스의 세로값과 오프셋 어드레스를 합하는 제1 덧셈기 및 상기 곱셈기와 상기 제1덧셈기의 계산 결과를 합하여 대수 코드북 검색을 위한 어드레스를 생성하는 제2 덧셈기를 포함하여 구성되며, 대수 코드북 검색을 위한 어드레스 계산시 필요한 계산량을 감소시켜 준다. The present invention relates to an address generator for algebraic codebook retrieval, the apparatus comprising: a multiplier for multiplying a magnitude and a horizontal value of a correlation matrix; a first adder and a multiplier and a first adder for adding a vertical value and an offset address of the correlation matrix; And a second adder for generating an address for algebraic codebook search by summing the calculation results of the adder, thereby reducing the amount of computation required when calculating an address for algebraic codebook search.
대수 코드북 검색, 어드레스 생성기, 어드레스 계산 Algebra Codebook Search, Address Generator, Address Calculation
Description
본 발명은 ACELP형 음성코덱에서 대수 코드북 검색 기술에 관한 것으로, 특히 대수 코드북 검색을 위한 어드레스 계산량을 감소시킬 수 있도록 하는 대수 코드북 검색을 위한 어드레스 생성기에 관한 것이다.BACKGROUND OF THE
본 발명은 지식경제부 및 정보통신연구진흥원의 IT원천기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2006-S-048-03, 과제명: 오디오 비디오 신호처리용 임베디드 DSP Platform]. The present invention is derived from the research conducted as part of the IT source technology development project of the Ministry of Knowledge Economy and the Ministry of Information and Communication Research and Development. [Task management number: 2006-S-048-03] ].
디지털 이동통신 시스템에서는 전송채널의 대역폭을 효율적으로 사용하고, 무선채널 환경에서 고음질의 통화를 위하여 다양한 음성코딩 알고리즘들을 사용하고 있다. In digital mobile communication system, the bandwidth of the transmission channel is efficiently used and various voice coding algorithms are used for high quality call in the wireless channel environment.
일반적으로 음성코덱 알고리즘들 중에서 많은 표준들에 의해 채택된 CELP(Code Excited Linear Prediction) 알고리즘은 4 내지 8 kbps의 낮은 전송율에서 매우 좋은 성능을 보여준다. In general, the Code Excited Linear Prediction (CELP) algorithm, adopted by many standards among voice codec algorithms, shows very good performance at low data rates of 4 to 8 kbps.
이러한 CELP 알고리즘은 더욱 개선되어 고정 코드북의 검색 시간을 단축하고, 코드북을 위한 메모리가 필요없는 ACELP(Algebraic CELP)로 발전되었고, 최근의 대부분의 세계표준에서 널리 채택되어 사용되고 있다.These CELP algorithms have been further improved to shorten the search time of fixed codebooks, and have been developed into ACELP (Algebraic CELP), which requires no memory for codebooks, and is widely adopted and used in most of the recent world standards.
ACELP형 음성코덱에서 채택하고 있는 대수 코드북 알고리즘은 여기 신호를 모델링하기 위한 코드북을 사용하지 않기 때문에, 코드북을 위한 저장공간이 필요없고 코드북 검색방법도 효율적인 방법들을 사용하기 때문에 적은 계산량으로 검색을 할 수 있다. Since the algebraic codebook algorithm adopted by the ACELP type voice codec does not use the codebook to model the excitation signal, it does not need the storage space for the codebook and the codebook search method uses efficient methods, so it can be searched with a small amount of computation. have.
그러나 대수 코드북 알고리즘에서도 목표신호와 가장 오차를 적게 하는 여기 신호의 펄스의 위치와 크기를 검색하는 과정에서 상대적으로 많은 계산량이 필요하게 된다. However, even in the algebraic codebook algorithm, a relatively large amount of computation is required in the process of searching for the position and magnitude of the pulse of the excitation signal that has the least error with the target signal.
이에 검색과정에서의 계산량을 줄이기 위해 집중 검색(focused search) 방법과 깊이 우선 가지 검색(depth first tree search) 방법 등이 제안되어 사용되고 있다. In order to reduce the amount of computation in the search process, a focused search method and a depth first tree search method have been proposed and used.
G.729 음성코덱에서 사용하는 집중 검색방법은 문턱값을 사용하여 검색 범위를 제한하는 것이고, G.729A에서 사용하는 깊이 우선 가지 검색방법은 집중 검색방법보다 더 효과적으로 계산량을 줄이기 위하여 지역적인 최대값을 만족하는 경로에 대해서만 검색을 수행하는 방법이다. 다른 대부분의 ACELP 형 음성코덱들에서도 검색 계산량을 줄이기 위하여 집중 검색방법 및 깊이 우선 가지 검색방법등을 채택하여 사용하고 있다.The intensive search method used in the G.729 voice codec is to limit the search range using thresholds, and the depth-first branch search method used in G.729A uses local maximum values to reduce the computation more effectively than the intensive search method. This method searches only the paths that satisfy the. Most other ACELP type voice codecs adopt intensive search method and depth-first search method to reduce search computation.
음성코덱들의 실시간 구현은 대부분 상용 DSP(Digital Signal Processor)을 이용하는 것이 일반적이다. 즉, 구현하고자 하는 음성 코덱의 알고리즘에 적합한 상용 DSP를 선택한 후, 컴파일러 및 어셈블러 등을 이용하여 선택된 DSP의 특성을 최대한 이용하여 최적의 구현결과를 얻도록 한다. The real-time implementation of voice codecs is generally using a commercial DSP (Digital Signal Processor). That is, after selecting a commercial DSP suitable for the algorithm of the voice codec to be implemented, the compiler and assembler are used to obtain the optimal implementation result by maximizing the characteristics of the selected DSP.
또한 필요한 경우에는, 음성코덱의 알고리즘을 보다 최적화할 수 있는 DSP를 직접 설계하고, 이를 기반으로 음성코덱을 구현하게 되면 가장 최적의 성능을 얻기도 한다. In addition, if necessary, by designing a DSP that can further optimize the algorithm of the voice codec and implementing the voice codec based on this, the most optimal performance is obtained.
하지만 이러한 구현 방법에서는 DSP 개발에 오랜 기간이 필요하게 되고, 개발된 DSP가 특정한 음성코덱 알고리즘에 대해서는 최적의 구현이 가능하지만 또 다른 알고리즘을 사용하는 음성코덱의 구현에는 오히려 최적의 결과를 얻지 못할 수도 있다. However, such an implementation method requires a long time to develop a DSP, and the developed DSP can be optimally implemented for a specific voice codec algorithm, but may not be optimal for the implementation of a voice codec using another algorithm. have.
한편, ACELP형 음성코덱의 대수 코드북 검색에서는 검색 전에 상관관계 매트릭스 값을 미리계산해 놓고 검색과정에서 이들 값을 이용한다. On the other hand, in the algebraic codebook search of the ACELP type voice codec, correlation matrix values are precomputed before the search and the values are used in the search process.
그러나 이러한 상관관계 매트릭스 값들은 2차원 배열 값인 반면, 실제로 메모리에 저장되는 것은 1차원 배열로 구현되는 특징을 가진다. However, while these correlation matrix values are two-dimensional array values, what is actually stored in the memory has a feature that is implemented as a one-dimensional array.
1차원 배열로 저장된 상관관계 매트릭스 값들을 실제 대수 코드북 검색 과정에서 이용하려면, 적절한 어드레스 계산이 수반되어야 하는데, 일반적인 상용 DSP 어셈블리 언어로 구현되는 경우, 약 5 사이클 정도의 계산량이 필요하게 된다. In order to use the correlation matrix values stored in the one-dimensional array in the actual algebraic codebook retrieval process, proper address calculation must be involved. When implemented in a general commercial DSP assembly language, a calculation amount of about 5 cycles is required.
이러한 계산은 대수 코드북 검색과정에서 계속 반복되어야 하므로, 이는 대수 코드북 검색과정의 계산량을 증대시키는 주요 요인이 된다. Since this calculation must be repeated in the algebraic codebook retrieval process, this is a major factor to increase the calculation amount of the algebraic codebook retrieval process.
이에 본 발명에서는 대수 코드북 검색과정에서 매우 큰 비중을 차지하고 있는 상관관계 매트릭스 값들에 접근하기 위한 계산량을 감소시킬 수 있도록, 상관관계 매트릭스 값을 저장하고 있는 메모리의 어드레스 값을 간단하게 생성할 수 있는 어드레스 생성기를 제공하고자 한다. Accordingly, in the present invention, an address that can easily generate an address value of a memory storing the correlation matrix value in order to reduce the amount of computation for accessing the correlation matrix values that occupy a very large portion in the algebraic codebook search process. We want to provide a generator.
본 발명의 제1측면에 따르면 상기와 같은 문제점을 해결하기 위한 수단으로서, 상관관계 매트릭스의 크기와 가로값을 곱하는 곱셈기 상기 상관관계 매트릭스의 세로값과 오프셋 어드레스를 합하는 제1 덧셈기 및 상기 곱셈기와 상기 제1덧셈기의 계산 결과를 합하여 대수 코드북 검색을 위한 어드레스를 생성하는 제2 덧셈기를 포함하는 대수 코드북 검색을 위한 어드레스 생성기를 제공한다. According to a first aspect of the present invention, as a means for solving the above problems, a multiplier for multiplying the magnitude and the horizontal value of the correlation matrix, the first adder and the multiplier and the sum of the vertical value and the offset address of the correlation matrix An address generator for algebraic codebook retrieval comprising a second adder that adds the calculation results of the first adder to generate an address for algebraic codebook retrieval.
상기 어드레스 생성기는 상기 제2 덧셈기의 계산 결과를 저장하는 레지스터를 더 포함할 수 있다. The address generator may further include a register that stores a calculation result of the second adder.
상기 제2 덧셈기에 의해 생성되는 어드레스는 상기 상관관계 매트릭스의 메모리중 첫번째로 접근해야 할 어드레스인 것을 특징으로 한다. The address generated by the second adder may be an address to be accessed first of the memory of the correlation matrix.
본 발명의 제2측면에 따르면 상기와 같은 문제점을 해결하기 위한 수단으로서, 본 발명의 제1측면에 따른 어드레스 생성기를 이용하여, 대수 코드북 검색시 상관관계 매트릭스 값을 저장하고 있는 2차원 배열의 변수값으로부터 1차원 메모리 에 접근하기 위한 어드레스를 생성하는 것을 특징으로 하는 ACELP형 음성코덱의 인코딩 장치를 제공한다.According to the second aspect of the present invention, as a means for solving the above problems, a variable of a two-dimensional array that stores correlation matrix values during algebraic codebook retrieval using an address generator according to the first aspect of the present invention. An apparatus for encoding an ACELP type speech codec, which generates an address for accessing a one-dimensional memory from a value.
이와 같이 본 발명의 대수 코드북 검색을 위한 어드레스 생성기는 상관관계 매트릭스 값을 저장하고 있는 메모리의 어드레스 값을 간단하게 생성함으로써, 대수 코드북 검색과정에서 매우 큰 비중을 차지하고 있는 상관관계 매트릭스 값들에 접근하기 위한 어드레스 계산량을 감소시켜 준다. 이에 본 발명에서는 대수 코드북 검색 효율을 증대시켜 줌과 동시에 계산 속도를 향상시켜 줄 수 있게 된다. As described above, the address generator for algebraic codebook retrieval simply generates an address value of a memory storing a correlation matrix value, thereby accessing correlation matrix values that occupy a very large part in the algebraic codebook retrieval process. This reduces the amount of address computation. Accordingly, in the present invention, the algebraic codebook retrieval efficiency can be increased and the calculation speed can be improved.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시 예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, in describing in detail the operating principle of the preferred embodiment of the present invention, if it is determined that the detailed description of the related known function or configuration may unnecessarily obscure the subject matter of the present invention, the detailed description thereof will be omitted.
도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. In order to clearly illustrate the present invention, parts not related to the description are omitted, and like parts are denoted by similar reference numerals throughout the specification.
또한, 어떤 부분이 어떤 구성 요소를 '포함'한다고 할 때, 이는 특별히 반대 되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. In addition, when a part is said to include a certain component, this means that it may further include other components, without excluding other components unless otherwise stated.
본 발명의 일실시예에 따른 어드레스 생성기를 생성하기에 앞서, 본 발명의 이해를 돕기 위해 일반적인 ACELP형 음성코덱의 인코딩 장치, 대수 코드북 검색을 위한 C 코드, 대수 코드북 검색을 위한 상관관계 매트릭스, 그리고 상관관계 매트릭스 배열이 DSP를 이용하여 실시간 구현되는 경우, 1차원 메모리에 저장되는 과정을 먼저 설명하기로 한다. Prior to generating an address generator according to an embodiment of the present invention, a general ACELP-type speech codec encoding apparatus, a C code for algebraic codebook search, a correlation matrix for algebraic codebook search, and When the correlation matrix array is implemented in real time using a DSP, a process of storing the one-dimensional memory will be described first.
도1은 일반적인 ACELP형 음성코덱의 인코딩 장치의 구성을 도시한 도면이다. 1 is a diagram showing the configuration of an encoding apparatus for a general ACELP type voice codec.
도1을 참조하면, ACELP형 음성코덱의 인코딩 장치는 선형 분석부(10), LSP(Line Spectral Pair) 변환부(11), LSP 양자화부(12), 개루프 피치 검색부(13), 폐루프 피치 검색부(14), 임펄스 응답 계산부(15), 제1차 목표신호 계산부(16), 제2차 목표신호 계산부(17), 및 대수 코드북 검색부(18)을 포함하여 구성된다.Referring to FIG. 1, an apparatus for encoding an ACELP type speech codec includes a
선형 분석부(10)는 8 kHz로 샘플링된 음성신호 160 샘플(20 msec)을 한 프레임으로 하여 10차의 LPC(Linear Predictive Coding) 계수를 구한다. 바람직하게는 선형 분석부(10)는 높은 비트율의 경우에는 프레임당 2번의 선형분석을 수행하도록 하고, 대부분의 경우 프레임당 1번의 선형분석만을 수행하도록 한다. The
LSP 변환부(11)는 LPC 계수를 양자화 왜곡 및 전송오류를 줄이고, 보간 특성이 좋은 LSP계수로 변환한다. The
LSP 양자화부(12)는 SMQ(Split Matrix Quantization), SVQ(Split Vector Quantization) 등의 다양한 알고리즘을 통해 LSP계수에 대한 벡터 양자화를 수행한다. The
개루프 피치 검색부(13)에서는 피치 검색을 위한 계산량을 줄이기 위해 개루프 피치 검색 동작을 통해 정수 지연 값을 우선적으로 결정한다. The open loop
폐루프 피치 검색부(14)에서는 개루프 피치 검색부(13)에 의해 결정된 정수 지연 값을 기준으로 주변 값들에 대해서만 폐루프 검색 동작을 수행한다. 이때, 개루프 피치 검색은 가중화된 음성신호 상에서 검색이 이루어지며, 낮은 전송율의 경우에는 프레임당 한번 수행되고, 높은 전송율의 경우에는 프레임당 두번 수행되도록 한다. The closed loop
개루프 검색이 끝나면 임펄스 응답 계산부(15) 및 제1차 목표신호 계산부(16)는 폐루프 검색을 위한 임펄스응답(h(n)) 및 제1차 목표신호(x(n))를 계산한다. 이때, 제1차 목표신호(x(n))의 계산은 가중화된 입력 음성 신호에서 가중화 합성필터의 영입력 응답 신호를 제거함으로써 구해진다. 폐루프 검색에서는 앞서 구해진 개루프 지연 값의 주변 값에 대하여 목표신호와 합성된 음성신호와의 평균 자승 오차를 최소화하는 정수값의 지연 값을 결정하도록 한다.After the open loop search is completed, the
제2차 목표신호 계산부(17)는 대수 코드북 검색을 하기 위하여 제2차 목표신호(x2(n))을 계산한다. 제2차 목표신호(x2(n))은 제1차 목표신호(x(n))에서 피치 성분을 제거함으로써 구해진다. The second
대수 코드북 검색부(18)은 제2차 목표신호(x2(n))과 합성된 음성 신호와의 평 균 자승 오차를 최소화하는 펄스의 위치 및 부호를 결정해준다. 즉, 대수 코드북을 검색해준다. The algebraic
대수 코드북은 ACELP형 음성코덱에서 비트할당의 많은 부분을 차지하고 있으며, 여러 가지 비트율에 따라 서브 프레임당 펄스의 개수를 수십 개에서 한 개까지 사용할 수 있다. Algebra codebooks occupy a large portion of bit allocation in ACELP-type speech codecs, and the number of pulses per subframe can be used from several tens to one according to various bit rates.
예를 들어, 서브 프레임을 5개의 트랙으로 나누고 각 트랙마다 2개의 펄스를 정하여 그 위치와 부호 정보를 전송하게 되면, 대수 코드북은 총 10개의 펄스를 사용하여 구성된다. 그리고 서브 프레임을 4개의 트랙으로 나누고 각 트랙마다 2개의 펄스를 사용하여 모델링하면, 대수 코드북은 총 8개의 펄스를 사용하여 구성된다. For example, if a subframe is divided into five tracks, two pulses are defined for each track, and the position and sign information are transmitted, the algebraic codebook is configured using a total of ten pulses. If the subframe is divided into four tracks and modeled using two pulses for each track, the algebraic codebook is composed of eight pulses in total.
ACELP형 음성코덱에서의 대수 코드북 검색 과정은 이하의 수학식1에서와 같이 입력음성과 합성음성 사이의 평균자승오차를 최소화하는 여기 신호의 펄스열을 찾는 과정이다. The algebraic codebook search process in the ACELP speech codec is a process of finding a pulse train of an excitation signal that minimizes the mean square error between the input voice and the synthesized voice, as shown in
이때, x는 적응코드북의 예측이득이 제거된 제1차 목표신호(x(n))이고, g는 코드북 이득이고, H=hth는 토플리츠 길쌈 행렬(lower triangular Toeplitz convolution matrix)이고, Ck는 인덱스를 k로 하는 대수 코드 벡터이다. Where x is the first target signal x (n) from which the predictive gain of the adaptive codebook has been removed, g is the codebook gain, H = h t h is the lower triangular Toeplitz convolution matrix, C k is an algebraic code vector whose index is k.
상기 수학식1을 최소화하는 것은 이하의 수학식2를 최대화하는 것과 동일한 의미를 가진다. Minimizing
이때, d는 제1차 목표신호(x(n))과 임펄스 응답(h(n))의 상관관계를 나타내는 신호로써 역필터링 된 목표신호라고 지칭되고, Ф=HtH는 h(n)의 상관관계 매트릭스이다.In this case, d is a signal indicating the correlation between the first target signal x (n) and the impulse response h (n), and is referred to as a target signal that is inversely filtered, and Ф = H t H is h (n). Is the correlation matrix.
대수 코드 벡터(Ck)는 적은 수의 영이 아닌 펄스로 구성되기 때문에, 수학식2에서의 분자항은 이하의 수학식3과 같이 표현되고, 분모항은 이하의 수학식4와 같이 표현된다.Since the algebraic code vector C k is composed of a small number of nonzero pulses, the molecular term in
이때, mi는 i 번째 펄스의 위치이고, si는 펄스의 부호이고, Np는 펄스의 개수이다. At this time, m i is the position of the i-th pulse, s i is the sign of the pulse, N p is the number of pulses.
수학식3의 d(mi)신호와 상관관계 매트릭스 Ф(mi, mj)는 검색과정에서의 계산량을 줄이기 위하여 검색과정 이전에 미리 계산되는 것이 바람직하다. The d (m i ) signal and the correlation matrix Ф (m i , m j ) in Equation 3 are preferably calculated before the search process in order to reduce the amount of computation in the search process.
대수 코드북 검색방법 중에서 전체 검색방법은 펄스의 조합의 수가 많기 때문에 보다 효율적인 검색을 위하여 집중 검색방법이나, 깊이 우선 가지 검색방법 등이 사용되고 있다. Among the algebraic codebook retrieval methods, since the entire retrieval method has a large number of combinations of pulses, an intensive retrieval method or a depth-first branch retrieval method is used for more efficient retrieval.
집중 검색방법은 검색과정을 좀더 간단히 하기 위하여 마지막 루프에 대한 검색을 하기 전에 미리 계산된 문턱값을 사용하여 문턱값을 초과하는 경우에만 루프에 들어가 검색을 계속하도록 하는 방법이다. In order to simplify the search process, the intensive search method uses a pre-calculated threshold value before searching for the last loop to enter the loop and continue the search only when the threshold value is exceeded.
깊이 우선 가지 검색방법은 집중 검색방법을 더욱 개선한 것으로 각 트랙의 로컬 최대값을 초기펄스로 선택하여 지역적으로 최적인 값을 선택하여 가능성이 제일 큰 트리(tree)에 대해서만 검색을 수행하는 방법이다. The depth-first search method is an improvement on the intensive search method. It selects the local maximum value of each track as the initial pulse and selects the local optimal value, and searches only the most probable tree. .
또한 대수 코드북 알고리즘에서는 서브 프레임의 여기 신호를 효율적으로 모 델링하기 위하여 서브 프레임을 미리 정해진 트랙으로 나누고 각 트랙별로 일정한 개수의 펄스를 할당하게 된다. 그리고 각 펄스의 크기도 검색과정에서의 계산량을 줄이기 위하여 미리 '±1'로 고정하고 있다. In addition, the algebraic codebook algorithm divides a subframe into predetermined tracks and allocates a predetermined number of pulses to each track in order to efficiently model the excitation signal of the subframe. Also, the magnitude of each pulse is fixed to '± 1' in advance in order to reduce the calculation amount in the searching process.
도2는 ACELP형 음성코덱 중의 하나인 TETRA 음성코덱의 대수 코드북 검색을 위한 C 코드의 일실시예를 나타낸 도면이다. FIG. 2 is a diagram illustrating an embodiment of a C code for algebraic codebook search of a TETRA voice codec, which is one of ACELP type voice codecs.
도2에서, 21,22,24,26 의 C 코드는 중첩 루프(nested loop)를 나타내고, 23 및 25의 C 코드는 중첩 루프로의 합류(join)여부를 결정하기 위한 문턱값을 조사하도록 한다. In Figure 2, the C codes of 21, 22, 24, and 26 represent nested loops, and the C codes of 23 and 25 allow to examine the threshold for determining whether to join into the nested loop. .
이러한 C 코드를 참조하면, 대수 코드북의 검색에서 임펄스 응답(impulse response)의 h(n)의 자기상관 매트릭스(autocorrelation matrix)인 rr[][]을 반복하여 사용하고 있음을 알 수 있다. Referring to the C code, it can be seen that in the search of the algebraic codebook, rr [] [], which is an autocorrelation matrix of h (n) of an impulse response, is repeatedly used.
수학식 2의 에서 분모항의 에너지(E)를 계산할 때 수학식5에서와 같은 계산이 이루어지고, 이를 위해서는 상관관계 매트릭스 Ф(mi, mj)가 반복 사용된다. Of equation (2) When calculating the energy (E) of the denominator in, the same calculation as in
이때, Ф(mi, mj)의 값들은 검색 전에 계산되어 메모리에 사전에 저장된다. At this time, the values of Ф (m i , m j ) are calculated before retrieval and stored in memory in advance.
Ф(mi, mj)는 매트릭스 형식이므로 C 코드로 구현시는 2차원 배열 구조의 메모리에 저장되는 것이 바람직하나, 앞서 설명된 바와 같이 실제 DSP에 실시간 구현시에는 1차원 메모리에 저장되는 문제가 있다. Since Ф (m i , m j ) is a matrix type, it is preferable to store it in a memory of a two-dimensional array structure when implemented in C code, but as described above, in a real-time implementation in a real-time DSP, it is stored in a one-dimensional memory. There is.
그 결과, 1차원 메모리에 저장된 Ф(mi, mj)에 접근하기 위한 어드레스를 생성에 많은 사이클이 소요된다. 즉, 어드레스 계산량이 많아지는 문제가 발생한다. As a result, many cycles are required to generate an address for accessing Ф (m i , m j ) stored in the one-dimensional memory. That is, a problem arises in that the amount of address calculation increases.
일 예로, Tetra 코덱의 경우 상관관계 매트릭스는 도 3과 같이 구성된다. For example, in the case of the Tetra codec, the correlation matrix is configured as shown in FIG. 3.
Tetra 코덱의 경우, 서브 프레임의 길이는 60 이지만 짝수에 대한 상관관계 값만 필요하므로 실제로 임펄스응답(h(n))의 길이는 30이 된다. 이에 h(0) 내지 h(29)의 임펄스 응답에 대한 상관관계 매트릭스를 구하면 되나, 대수 코드북의 트랙 구성상 상관관계 매트릭스의 크기(dimension)는 32가 되어, 상관관계 매트릭스의 [30], [31] 번째 요소들은 0이 된다. In the case of the Tetra codec, the length of the subframe is 60, but since only correlation values for even numbers are needed, the length of the impulse response h (n) is 30. The correlation matrix for the impulse response of h (0) to h (29) may be obtained. However, the dimension of the correlation matrix in the log structure of the algebraic codebook is 32, so that [30], [ 31] elements are zero.
도4은 도3의 상관관계 매트릭스 배열(41)이 DSP를 이용하여 실시간 구현되는 경우, 1차원 메모리(42)에 저장되는 과정을 나타낸 도면이다. FIG. 4 is a diagram illustrating a process of storing the
도4의 상관관계 매트릭스는 rr[0][0] 내지 rr[29][29]의 대각선 요소를 가지고, 하위 삼각형(lower triangle)과 상위(higher triangle) 요소가 같은, 즉 rr[i][j] = rr[j][i]인 매트릭스이다. 1차원 메모리에서의 이 매트릭스의 마지막 요소, 즉 rr[29][29]의 번지수는 '32 × 29 + 29 = 957' 이 된다. The correlation matrix of FIG. 4 has diagonal elements of rr [0] [0] to rr [29] [29], and the lower and higher triangle elements are the same, that is, rr [i] [ j] = rr [j] [i]. The last element of this matrix in one-dimensional memory, that is, the address of rr [29] [29], becomes '32 × 29 + 29 = 957 '.
앞서 설명된 바와 같이, 대수 코드북의 검색 과정에서 가장 많은 계산량을 차지하고 있는 중첩 루프 형태의 수행과정에서, 대수 코드북의 검색을 위한 계산 시 2차원 매트릭스 구조의 변수값을 계속적으로 사용하게 된다. As described above, in the execution of the nested loop form, which takes up the largest amount of computation in the algebraic codebook search, the variable values of the two-dimensional matrix structure are continuously used in the calculation for the search of the algebraic codebook.
그러므로 실시간 구현 시 2차원 매트릭스 구성을 갖는 변수를 1차원 메모리로 구현하였을 때 접근이 용이하도록 하는 어드레스 생성기를 설계하면, 대수 코드북의 검색 계산량을 획기적으로 줄여줄 수 있다. Therefore, by designing an address generator that can be easily accessed when a variable having a two-dimensional matrix configuration is implemented in a one-dimensional memory in real time, it is possible to drastically reduce the computational complexity of algebraic codebooks.
그러나 종래에는 도 2에서와 같이 C 코드 상에서 2차원 매트릭스 구조의 변수 값에 접근하는 경우, 실시간 구현에서는 도 4와 같이 2차원 배열의 매트릭스 구조(41)가 1차원 구조의 메모리(42)로 구현되어, 어드레스 계산과정이 복잡해져 더욱 많은 계산량이 필요하게 된다. However, when accessing the variable value of the two-dimensional matrix structure in C code as shown in FIG. 2, in the real-time implementation, the
어드레스 계산 과정을 실제로 상용 DSP 중에서 널리 사용되고 있는 TI DSP 54X 시리즈의 어셈블리 언어로 구현하면, 다음과 같이 구현될 수 있다.If the address calculation process is implemented in the assembly language of TI DSP 54X series, which is widely used among commercial DSPs, it can be implemented as follows.
C 코드 Assembly codeC code Assembly code
rr[ii0][ii2] STM #32, Trr [ii0] [ii2]
MPY @ii0, AMPY @ ii0, A
ADD @ii2, A ADD @ ii2, A
ADD #rr, AADD #rr, A
STLM A, AR3 STLM A, AR3
여기서, 32는 매트릭스의 크기(dimension)이고, #rr 값은 매트릭스의 시작 어드레스, 즉 오프셋 어드레스(offset)이다.Here, 32 is the dimension of the matrix, and the #rr value is the start address of the matrix, that is, the offset address.
즉, 도 2의 C 코드에서 rr[ii0][ii2] 라는 2차원 변수값에 접근하기 위해서는 실제로 어셈블리 언어로 구현하면, 5개의 명령어가 필요하고, 그 결과 약 5 사이클 정도의 계산량이 필요해진다. That is, in order to access a two-dimensional variable value of rr [ii0] [ii2] in the C code of FIG. 2, when implemented in assembly language, five instructions are required, and as a result, about five cycles of calculation amount are required.
그리고 이러한 계산은 대수 코드북 검색과정에서 계속 반복되어야 하므로, 이는 대수 코드북 검색과정의 계산량을 증대시키는 주요 요인이 된다. Since this calculation must be repeated in the algebraic codebook retrieval process, this is a major factor in increasing the computational volume of the algebraic codebook retrieval process.
따라서 본 발명에서는 이러한 5개의 명령어를 1개의 명령어로 구성할 수 있도록 하는 어드레스 생성기를 제안하여, 어드레스 계산과정에 필요한 계산량을 획기적으로 감소하고자 한다. Therefore, the present invention proposes an address generator that can configure these five instructions into one instruction, and dramatically reduces the amount of computation required for the address calculation process.
즉, 본 발명에서는 대수 코드북 검색시 상관관계 매트릭스 값을 저장하고 있는 2차원 배열의 변수값으로부터 1차원 메모리에 접근하기 위한 어드레스를 새로운 방식으로 생성할 수 있도록 하는 어드레스 생성기를 제안하고자 한다. That is, the present invention proposes an address generator for generating an address for accessing a one-dimensional memory from a variable value of a two-dimensional array that stores a correlation matrix value in algebraic codebook retrieval.
도5는 본 발명의 일실시예에 따른 어드레스 생성기의 구성을 도시한 도면이다. 5 is a diagram illustrating a configuration of an address generator according to an embodiment of the present invention.
도5를 참조하면, 본 발명의 어드레스 생성기는 상관관계 매트릭스의 크기(dimension)와 가로값(row)을 곱하는 곱셈기(21)와, 세로값(column)과 오프셋 어드레스(offset)을 합하는 제1 덧셈기(22), 곱셈기(21)와 제1덧셈기(23)의 계산 결과를 다시 합하는 제2 덧셈기(23), 제2 덧셈기(23)의 계산 결과를 저장하는 레지스터(24)로 구성된다. Referring to FIG. 5, the address generator of the present invention includes a
이에 본 발명의 어드레스 생성기는 앞서 설명된 5개 명령어를 이하와 같이 하나의 명령어로 대체하고, 이를 통해 2차원 배열의 어드레스로부터 1차원 메모리에 접근하기 위한 어드레스를 생성해준다. Accordingly, the address generator of the present invention replaces the five instructions described above with one instruction as follows, thereby generating an address for accessing the one-dimensional memory from the addresses of the two-dimensional array.
STM &(raw, column), AR3STM & (raw, column), AR3
이때, raw 는 2차원 배열의 어드레스의 가로값이고, column은 2차원 배열의 어드레스의 세로값이고, AR3는 어드레스 생성기의 동작 결과값을 생성하는 레지스터(24)를 의미한다. At this time, raw is the horizontal value of the address of the two-dimensional array, column is the vertical value of the address of the two-dimensional array, AR3 means the
참고로, 대수 코드북 검색과정에서 보면 도5의 어드레스 생성기에 따른 동작은 1차원 메모리에서 2차원 상관관계값을 가져오기 위한 어드레스를 생성하는 것이지만, DSP 하드웨어 관점에서 보면 도5의 어드레스 생성기에 따른 동작은 특정한 값을 생성해서 레지스터에 저장하는 명령어로 생각될 수 있다. For reference, in the algebraic codebook retrieval process, the operation according to the address generator of FIG. 5 generates an address for obtaining a two-dimensional correlation value from the one-dimensional memory, but from the DSP hardware point of view, the operation according to the address generator of FIG. Can be thought of as a command that generates a specific value and stores it in a register.
그러므로, 본 발명의 어드레스 생성기는 실제로 DSP 하드웨어의 어드레스 생성블록과는 구별되는 특정 명령어를 수행하는 하드웨어로써 생각하면 된다. Therefore, the address generator of the present invention can be thought of as hardware that actually performs a specific instruction that is distinct from the address generation block of the DSP hardware.
본 발명의 어드레스 생성기를 통해 생성된 어드레스 값은 상관관계 매트릭스 메모리 중에 첫번째로 접근해야 할 어드레스이고, 실제로 중첩 루프 내에서는 어드레스 레지스터값들이 스텝(step)값만큼 증가하면서 어드레싱이 이루어진다.The address value generated by the address generator of the present invention is the first address to be accessed in the correlation matrix memory, and actually addressing is performed while the address register values increase by a step value in the overlapping loop.
본 발명에서는 곱셈기(21)의 비트 계산량을 8×8(bit × bit)로 설정하였으나, 이는 ACELP 음성코덱의 특성에 따라 능동적으로 변경될 수 있다. 예를 들어, 본 발명의 어드레스 생성기가 Tetra 코덱에 적용되는 경우, 곱셈기(21)는 5×5로 설계될 수 도 있다. 그리고 제1 및 제2 덧셈기(22,23)은 16비트로 구성하면 충분하 다. In the present invention, the bit calculation amount of the
그리고 매트릭스의 크기(dimension)와 오프셋 어드레스(offset)는 중첩 루프밖에서 미리 셋팅되고, 실제로 중첩 루프내에서는 가로값(raw)과 세로값(column)만이 피연산자(operand)로써 공급된다. The dimension and offset address of the matrix are set in advance outside the nested loop, and in the nested loop, only the raw and column values are supplied as operands.
이에 본 발명의 어드레스 생성기는 종래의 기술에 따른 5개의 명령어를 1개의 명령어로 대치하고, 2차원 배열의 어드레스인 가로값(raw)과 세로값(column)로부터 1차원 메모리에 접근하기 위한 어드레스를 생성해준다. Therefore, the address generator of the present invention replaces five instructions according to the prior art with one instruction and replaces an address for accessing the one-dimensional memory from the raw and vertical values of the two-dimensional array. Create
이하에서는 본 발명의 어드레스 생성기를 사용하는 경우, ACELP 대수 코드북 검색 시에 매트릭스 메모리 접근을 위한 어드레스 계산량을 감소효과를 설명하고자 한다. Hereinafter, when using the address generator of the present invention, the effect of reducing the amount of address calculation for matrix memory access when searching the ACELP algebra codebook will be described.
이러한 예측은 DSP 하드웨어에 의해 매우 큰 영향을 받으므로, 본 발명에서는 TI 320C54X를 기준하여 어드레스 계산량 감소효과를 설명하기로 한다. Since this prediction is greatly affected by the DSP hardware, the present invention will be described in terms of address computation reduction based on the TI 320C54X.
먼저, Tetra 코덱의 경우, 도 2와 같은 C 코드의 중첩 루프에서 검색 횟수를 계산해 보면 다음과 같다.First, in the case of the Tetra codec, the number of searches in the nested loop of the C code as shown in FIG. 2 is as follows.
1) 제1문턱값(THR1)을 한번도 넘지 않은 경우: 30 × 8 = 2401) If the first threshold value THR1 is not exceeded: 30 × 8 = 240
2) 제1문턱값(THR1)을 전부 넘고, 제2문턱값(THR2)은 한번도 넘지 않은 경우: 30 × 8 × 8 = 1,9202) When the first threshold value THR1 is exceeded and the second threshold value THR2 is not exceeded: 30 × 8 × 8 = 1,920
3) 제1문턱값(THR1), 제2문턱값(THR2)를 전부 넘은 경우: 30 × 8 × 8 × 8 = 15,3603) When the first threshold value THR1 and the second threshold value THR2 are all exceeded: 30 × 8 × 8 × 8 = 15,360
하지만 문턱값 둘중에 하나라도 넘는 경우는 최대 검색 횟수를 제한하는 로직이 동작되기 때문에 실제 검색 횟수는 위와 같은 검색 횟수보다 더 많이 줄어든다. However, if any one of the thresholds is exceeded, the logic that limits the maximum number of searches is operated, so the actual number of searches is reduced more than the number of searches above.
최대 검색 횟수를 제한하는 로직은 루프에 들어가기 전에 카운터를 350으로 셋팅해 놓은 후, 제1문턱값(THR1)을 통과한 경우는 4를 감소시키고 제2문턱값(THR2)를 통과한 경우는, 즉 제일 안쪽의 루프가 수행되는 경우는 3을 감소시키게 설정된다. The logic for limiting the maximum number of searches is to set the counter to 350 before entering the loop, and then decrease 4 if the first threshold value THR1 is passed and decrease the value to 4 if the second threshold value THR2 is passed. In other words, if the innermost loop is performed, it is set to decrease 3.
그러므로 이러한 최대 검색 횟수 제한 로직을 적용하면 실제로 제일 안쪽의 루프 2개는 약 13번 정도가 수행된다. 따라서 최대 검색 횟수는 다음과 같이 줄어들게 된다.Therefore, applying this maximum number of search limit logic, the two innermost loops are actually about 13 times. Therefore, the maximum number of searches is reduced as follows.
1) 제1문턱값(THR1)을 한번도 넘지 않은 경우: 30 × 8 = 2401) If the first threshold value THR1 is not exceeded: 30 × 8 = 240
2) 제1문턱값(THR1)을 전부 넘고, 제2문턱값(THR2)은 한번도 넘지 않은 경우: 153 + 87 × 8 = 8492) When the first threshold value THR1 is exceeded and the second threshold value THR2 is not exceeded: 153 + 87 × 8 = 849
3) 제1문턱값(THR1), 제2문턱값(THR2)를 전부 넘은 경우: 227 + 13 × 64 = 1,0593) When the first threshold value THR1 and the second threshold value THR2 are all exceeded: 227 + 13 × 64 = 1,059
이와 같은 검색 횟수와 검색 루프에 대한 C 코드를 참조하면 다음과 같이 매트릭스 메모리에 대한 어드레스 계산에 얼마만큼의 계산량이 필요한지 계산할 수 있고, 그에 따라 본 발명의 어드레스 생성기를 사용하면 얼마만큼의 계산량을 감소할 수 있는지도 예측할 수 있다.Referring to the number of searches and the C code for the search loop, it is possible to calculate how much calculation is required for address calculation for the matrix memory as follows. You can also predict if you can.
도 2의 검색 루프에 대한 C 코드를 보면 첫 번째 루프에서는 rr[i0][i0], 두 번째 루프에서는rr[i1][i1], rr[i0][i1], 세 번째 루프에서는rr[i2][i2], rr[i0][i2], rr[i1][i2], 네 번째 루프에서는rr[i3][i3], rr[i1][i3], rr[i0][i3], rr[i2][i3]의 메모리에 대한 어드레스 계산이 필요하다. Looking at the C code for the search loop of Figure 2, rr [i0] [i0] in the first loop, rr [i1] [i1], rr [i0] [i1] in the second loop, and rr [i2 in the third loop. ] [i2], rr [i0] [i2], rr [i1] [i2], in the fourth loop rr [i3] [i3], rr [i1] [i3], rr [i0] [i3], rr Address calculation for the memory of [i2] [i3] is necessary.
그리고 앞서 설명한 어셈블리 코드에서 매트릭스의 크기(dimension)가 '32'로 설정되었다고 가정하면, 각각의 어드레스 계산에 필요한 사이클 수는 '4' 사이클이므로, 앞에서 계산된 전체 루프에서의 검색 횟수를 고려하면 필요한 계산량은 다음과 같이 계산된다.In the assembly code described above, assuming that the matrix dimension is set to '32', the number of cycles required for each address calculation is '4' cycles. The amount of calculation is calculated as follows.
1) {30 + 30 × 2 + (8 × 3 + 8 × 8 × 4) × 13} × 4 = 149,2001) {30 + 30 × 2 + (8 × 3 + 8 × 8 × 4) × 13} × 4 = 149,200
2) 14,920 × 4서브 프레임(subframe) × 33프레임/초(frame/sec)= 1.97 MIPS2) 14,920 × 4 subframes × 33 frames / sec = 1.97 MIPS
그러나 본 발명의 어드레스 생성기를 이용하면 1/4로 감소하므로, 어드레스 검색을 위한 계산량은 최종적으로 0.5 MIPS 정도로 감소된다. However, since the address generator of the present invention is reduced to 1/4, the calculation amount for address retrieval is finally reduced to about 0.5 MIPS.
또한, G.729 코덱의 경우, 도 2와 같은 C 코드의 루프에서 검색 횟수를 계산해 보면 다음과 같다.In the case of the G.729 codec, the number of searches in the loop of the C code as shown in FIG. 2 is calculated as follows.
1) 문턱값(THR)을 한번도 넘지 않은 경우: 8 × 8 × 8 = 5121) If the threshold (THR) is never exceeded: 8 × 8 × 8 = 512
2) 문턱값(THR)을 전부 넘은 경우: 8 × 8 × 8 × 16 = 8,1922) When the threshold (THR) is exceeded: 8 × 8 × 8 × 16 = 8,192
하지만 문턱값을 넘는 경우는 최대 검색 횟수를 제한하는 로직이 동작되기 때문에 실제 검색 횟수는 위와 같은 검색 횟수보다 많이 줄어든다. However, if the threshold is exceeded, the logic that limits the maximum number of searches is operated, so the actual number of searches is reduced more than the number of searches above.
최대 검색 횟수를 제한하는 로직은 문턱값을 넘겨서 마지막 루프를 수행한 횟수를 세어서 결정하게 된다. 그러므로 이러한 최대 검색 횟수 제한 로직을 적용하면 실제로 제일 안쪽의 루프는 첫 번째 서브 프레임에서는 105번, 두 번째 서브 프레임에서는 180번이 수행되게 된다.The logic for limiting the maximum number of searches is determined by counting the number of times the last loop is executed by passing the threshold. Therefore, when the maximum number of search limit logic is applied, the innermost loop is actually performed 105 times in the first subframe and 180 times in the second subframe.
1) 문턱값(THR)을 한번도 넘지 않은 경우: 8 × 8 × 8 = 5121) If the threshold (THR) is never exceeded: 8 × 8 × 8 = 512
2) 문턱값(THR)을 전부 넘은 경우: 2) When the threshold (THR) is exceeded:
3) 서브 프레임0 : (512-105) + 105 × 16 = 2,087, 3) Subframe 0: (512-105) + 105 × 16 = 2,087,
4) 서브 프레임1 : (512-180) + 180 × 16 = 3,2124) Subframe 1: (512-180) + 180 × 16 = 3212
5) 루프 내에서 2차원 매트릭스 형태의 메모리에 접근하는 것은 Tetra 코덱과 거의 유사하므로 각각의 어드레스 계산에 필요한 사이클 수를 계산해보면 다음과 같다.5) Accessing a two-dimensional matrix type memory in a loop is almost similar to the Tetra codec. Therefore, the number of cycles required for each address calculation is as follows.
1) {(8 + 8 × 2 + 8 × 8 × 3) × (512-105)/512 + 105 × 16 × 4} × 4 + {(8 + 8 × 2 + 8 × 8 × 3) × (512-180)/512 + 180 × 16 × 4} × 4 = 27,568 + 46,640 = 74,208,1) ((8 + 8 × 2 + 8 × 8 × 3) × (512-105) / 512 + 105 × 16 × 4} × 4 + {(8 + 8 × 2 + 8 × 8 × 3) × ( 512-180) / 512 + 180 × 16 × 4} × 4 = 27,568 + 46,640 = 74,208,
2) 74,208 × 100 frame/sec= 7.4 MIPS2) 74,208 × 100 frame / sec = 7.4 MIPS
여기서도 본 발명의 매트릭스 어드레스 생성기를 이용하면 계산량이 1/4로 감소하므로 1.85 MIPS 정도로 계산량이 줄어줌을 알 수 있다. Here again, when the matrix address generator of the present invention is used, the calculation amount is reduced to 1/4, and thus the calculation amount is reduced to about 1.85 MIPS.
이상에서 설명한 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경할 수 있다는 것은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 당업자에게 있어 명백할 것이다. The present invention described above is not limited to the above-described embodiments and the accompanying drawings, and it is common in the art that various substitutions, modifications, and changes can be made without departing from the technical spirit of the present invention. It will be apparent to those skilled in the art.
도1은 일반적인 ACELP형 음성코덱의 인코딩 장치의 구성을 도시한 도면이다. 1 is a diagram showing the configuration of an encoding apparatus for a general ACELP type voice codec.
도2는 ACELP형 음성코덱 중의 하나인 TETRA 음성코덱의 대수 코드북 검색의 C 코드의 일실시예를 나타낸 도면이다. FIG. 2 is a diagram showing an embodiment of a C code of algebraic codebook search of a TETRA voice codec, which is one of ACELP type voice codecs. FIG.
도3은 대수 코드북 검색을 위한 상관관계 매트릭스의 일예를 도시한 도면이다.3 is a diagram illustrating an example of a correlation matrix for algebraic codebook search.
도 4은 도3의 상관관계 매트릭스 배열이 DSP를 이용하여 실시간 구현되는 경우, 1차원 메모리에 저장되는 과정을 나타낸 도면이다. 4 is a diagram illustrating a process of storing the correlation matrix array of FIG. 3 in a one-dimensional memory when the correlation matrix array of FIG. 3 is implemented in real time using a DSP.
도5는 본 발명의 일실시예에 따른 어드레스 생성기의 구성을 도시한 도면이다. 5 is a diagram illustrating a configuration of an address generator according to an embodiment of the present invention.
Claims (4)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/553,736 US20100153100A1 (en) | 2008-12-11 | 2009-09-03 | Address generator for searching algebraic codebook |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080125843 | 2008-12-11 | ||
KR20080125843 | 2008-12-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100067583A KR20100067583A (en) | 2010-06-21 |
KR101168158B1 true KR101168158B1 (en) | 2012-07-24 |
Family
ID=42366231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090027317A KR101168158B1 (en) | 2008-12-11 | 2009-03-31 | Address generator for searching an algebraic code book |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101168158B1 (en) |
-
2009
- 2009-03-31 KR KR1020090027317A patent/KR101168158B1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR20100067583A (en) | 2010-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100389693B1 (en) | Linear Coding and Algebraic Code | |
KR100806470B1 (en) | Fixed codebook searching apparatus and fixed codebook searching method | |
CN101847414B (en) | Method and apparatus for voice coding | |
US20100153100A1 (en) | Address generator for searching algebraic codebook | |
KR101691549B1 (en) | An Apparatus for Encoding a Speech Signal employing ACELP in the Autocorrelation Domain | |
KR100463559B1 (en) | Method for searching codebook in CELP Vocoder using algebraic codebook | |
JP3095133B2 (en) | Acoustic signal coding method | |
KR100465316B1 (en) | Speech encoder and speech encoding method thereof | |
US7337110B2 (en) | Structured VSELP codebook for low complexity search | |
KR101168158B1 (en) | Address generator for searching an algebraic code book | |
Yeh et al. | An efficient complexity reduction algorithm for G. 729 speech codec | |
JPWO2008072732A1 (en) | Speech coding apparatus and speech coding method | |
JPH1063300A (en) | Voice decoding and voice coding device | |
Mobini et al. | An FPGA based implementation of G. 729 | |
US20050256702A1 (en) | Algebraic codebook search implementation on processors with multiple data paths | |
Abhijna et al. | Implementation of CELP encoder using Vivado HLS | |
Wang et al. | Chip design of portable speech memopad suitable for persons with visual disabilities | |
KR100576024B1 (en) | Apparatus and Method for Codebook Search of Akelp Voice Compressor | |
KR20110086919A (en) | Intercoding Method and Apparatus for SM V and AM Speech Coding Technique | |
JP3024467B2 (en) | Audio coding device | |
WO2023064736A1 (en) | Audio coding using combination of machine learning based time-varying filter and linear predictive coding filter | |
Yang et al. | The Implementation and Optimization of AMR on Mobile Device. | |
Zhou | A modified low-bit-rate ACELP speech coder and its implementation | |
Falahati et al. | A proposed fast ACELP codebook search | |
Villette et al. | IIIGII QUALITY SPLIT BAND LPCVOCODER AND ITS FIXED POINT REAL TIME |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20090331 |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20120529 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20120718 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20120719 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
FPAY | Annual fee payment |
Payment date: 20150629 Year of fee payment: 4 |
|
PR1001 | Payment of annual fee |
Payment date: 20150629 Start annual number: 4 End annual number: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160628 Year of fee payment: 5 |
|
PR1001 | Payment of annual fee |
Payment date: 20160628 Start annual number: 5 End annual number: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170627 Year of fee payment: 6 |
|
PR1001 | Payment of annual fee |
Payment date: 20170627 Start annual number: 6 End annual number: 6 |
|
FPAY | Annual fee payment |
Payment date: 20180627 Year of fee payment: 7 |
|
PR1001 | Payment of annual fee |
Payment date: 20180627 Start annual number: 7 End annual number: 7 |
|
FPAY | Annual fee payment |
Payment date: 20190625 Year of fee payment: 8 |
|
PR1001 | Payment of annual fee |
Payment date: 20190625 Start annual number: 8 End annual number: 8 |
|
PR1001 | Payment of annual fee |
Payment date: 20200625 Start annual number: 9 End annual number: 9 |
|
PC1903 | Unpaid annual fee |
Termination category: Default of registration fee Termination date: 20220429 |