KR0183935B1 - Adpcm compression/decompression apparatus and method - Google Patents
Adpcm compression/decompression apparatus and method Download PDFInfo
- Publication number
- KR0183935B1 KR0183935B1 KR1019960045125A KR19960045125A KR0183935B1 KR 0183935 B1 KR0183935 B1 KR 0183935B1 KR 1019960045125 A KR1019960045125 A KR 1019960045125A KR 19960045125 A KR19960045125 A KR 19960045125A KR 0183935 B1 KR0183935 B1 KR 0183935B1
- Authority
- KR
- South Korea
- Prior art keywords
- output
- sample
- outputting
- register
- value
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3002—Conversion to or from differential modulation
- H03M7/3044—Conversion to or from differential modulation with several bits only, i.e. the difference between successive samples being coded by more than one bit, e.g. differential pulse code modulation [DPCM]
- H03M7/3046—Conversion to or from differential modulation with several bits only, i.e. the difference between successive samples being coded by more than one bit, e.g. differential pulse code modulation [DPCM] adaptive, e.g. adaptive differential pulse code modulation [ADPCM]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
적응 차분 펄스 부호 변조 방식 압축/분해 장치 및 방법이 개시된다. 이 장치는 예상 샘플을 저장하고 최종 예상 샘플을 계산하여 플로우를 검사하거나, 이전에 출력된 제2새로운 샘플과 최종 차이값을 가산하여 현재의 제2새로운 샘플로서 출력하는 수단과, 제2원시 샘플 및 제1새로운 샘플을 입력하고, 입력한 값들중 하나를 압축/분해 선택신호(SE)에 응답하여 선택적으로 출력하는 선택수단과, 스텝 사이즈(SS) 및 선택수단의 출력을 입력하여 (선택수단 출력의 크기 * SS/4) + SS/8 같은 연산을 수행하고, 연산된 결과를 최종 차이값으로서 출력하는 수단과, 선택수단의 출력에 상응하는 인덱스 값과 이전의 인덱스 값을 가산하여 새로운 인덱스값을 획득하고, 새로운 인덱스값에 해당하는 SS를 출력하는 수단과, 제1원시 샘플로부터 예상 샘플을 감산하여 차이값을 출력하는 수단과, SS를 SE에 응답하여 출력하는 제1레지스터와, 차이값을 제1레지스터로부터 출력되는 SS와 비교하고, 소정수로 나눈 SS를 차이값으로부터 감산하고, 소정수로 다시 나눈 SS를 감산된 값으로부터 다시 감산하여, 제1새로운 샘플을 생성하며, 생성된 제1새로운 샘플을 선택수단으로 출력하는 수단과, 입력한 선택수단의 출력을 SE에 응답하여 제1새로운 샘플로서 출력하는 제2레지스터 및 제1수단으로부터 입력한 현재의 제2새로운 샘플을 반전된 SE에 응답하여 출력하는 수단을 구비하는 것을 특징으로 하고, 시스템 운영면에서 효율적이고, 시스템의 크기가 축소되는 효과가 있다.An adaptive differential pulse code modulation type compression / decompression apparatus and method are disclosed. The apparatus includes means for storing an expected sample, calculating a final expected sample to examine the flow, or adding a second new sample and a final difference value, which have been previously output, and outputting it as a current second new sample; Decomposition selection signal SE and a step size SS and an output of the selection means in response to the compression / decomposition selection signal SE Means for performing an operation such as the size of the output * SS / 4) + SS / 8 and outputting the calculated result as a final difference value; means for adding the index value corresponding to the output of the selection means and the previous index value, Means for outputting a SS corresponding to a new index value, means for subtracting the expected sample from the first source sample to output a difference value, a first register for outputting SS in response to the SE, Compares the difference value with the SS output from the first register, subtracts a predetermined number of SSs from the difference value, subtracts a predetermined number of SSs from the subtracted value again to generate a first new sample, A second register for outputting the output of the selection means as a first new sample in response to the SE, and a second register for inverting the current second new sample input from the first means, And outputting the data in response to the SE, and is effective in terms of system operation and has the effect of reducing the size of the system.
Description
본 발명은 대화형 멀티 미디어(IMA:Interactive Multimedia Association) 산하 소속의 디지탈 오디어 테크니컬 작업 그룹(DATWG:Digital Audio Technical Working Group)에서 공개된 ADPCM(Adaptive Differential Pulse Code Modulation) 압축(compression)과 분해(decompression)에 관한 것으로서, 특히, ADPCM 압축과 분해를 동시에 수행할 수 있는 ADPCM 압축/분해 장치 및 방법에 관한 것이다.The present invention relates to adaptive differential pulse code modulation (ADPCM) compression and decompression (ADPCM) techniques disclosed by the Digital Audio Technical Working Group (DATWG) under the Interactive Multimedia Association (IMA) more particularly, to an ADPCM compression / decompression apparatus and method capable of simultaneously performing ADPCM compression and decomposition.
도 1은 종래의 ADPCM 압축 장치의 블럭도이며, 도 2는 종래의 ADPCM 분해 장치의 블럭도이다.FIG. 1 is a block diagram of a conventional ADPCM compression apparatus, and FIG. 2 is a block diagram of a conventional ADPCM decomposition apparatus.
도 1 및 도 2에 도시된 ADPCM 압축 및 분해 장치의 구성 및 동작들은 자사 특허 출원 번호 95-21013 및 95-30790에 각각 제시되어 있으므로, 본 여기서 세부적인 설명은 생략한다.The configuration and operation of the ADPCM compression and decompression apparatus shown in Figs. 1 and 2 are respectively disclosed in Patent Application Nos. 95-21013 and 95-30790, so that detailed description thereof will be omitted here.
제시된 특허들에서 알 수 있는 바와 같이, ADPCM 압축 장치는 룩 업 테이블(LUT:Look Up Table)을 이용한 양자화 적응 방법을 제시하고 있으며, 연속적으로 입력되어지는 선형 데이타 샘플 사이의 차이만을 검출하고, 검출된 차이를 디코딩하여 최소의 데이타 대역폭으로 넓은 동작 범위를 유지할 수 있도록 동작하고 있으며, ADPCM 분해 장치에서는 연속적으로 입력되어지는 ADPCM 데이타 샘플간의 상호 연관관계를 이용하여 그 차이를 검출하고, 그 값을 부호화하여 압축하기 전의 선형 데이타에 가까운 값으로 복원시켜 주는 기능을 수행하고 있다.As can be seen from the proposed patents, the ADPCM compression apparatus proposes a quantization adaptation method using a look-up table (LUT), and only detects differences between successive input linear data samples, The ADPCM decomposition apparatus detects the difference between the successive ADPCM data samples by using the correlation between the ADPCM data samples, encodes the difference value, And restores the value to a value close to the linear data before compression.
한편, 이러한 종래의 두가지 각 기능들을 비교하여 보면, 중복된 기능들이 있음에도 불구하고, 별도의 하드웨어에 의해 그들의 각 기능들이 수행되었으므로, 시스템의 크기가 커지고 그에 따른 시스템 제조 비용이 높은 문제점이 있었다.Meanwhile, in comparison with the conventional functions of the prior art, there is a problem that the size of the system is increased and the manufacturing cost of the system is increased because the respective functions are performed by separate hardware, despite the redundant functions.
본 발명이 이루고자 하는 기술적 과제는, ADPCM 압축 및/또는 분해 동작을 시간 분할 방식을 이용하여 연속적 및 반복적으로 수행할 수 있는 ADPCM 압축/분해 장치를 제공하는데 있다.SUMMARY OF THE INVENTION The present invention is directed to an ADPCM compression / decompression apparatus capable of continuously and repeatedly performing ADPCM compression and / or decomposition operations using a time division method.
본 발명이 이루고자 하는 다른 기술적 과제는, 상기 ADPCM 압축/분해 장치에서 수행되는 압축/분해 방법을 제공하는데 있다.According to another aspect of the present invention, there is provided a compression / decompression method performed in the ADPCM compression / decompression apparatus.
도 1은 종래의 ADPCM 압축 장치의 블럭도이다.1 is a block diagram of a conventional ADPCM compression apparatus.
도 2은 종래의 ADPCM 분해 장치의 블럭도이다.2 is a block diagram of a conventional ADPCM decomposition apparatus.
도 3은 본 발명에 의한 ADPCM 압축/분해 장치의 블럭도이다.3 is a block diagram of an ADPCM compression / decompression apparatus according to the present invention.
도 4는 도 3에 도시된 인덱스 디코더에 있는 인덱스 테이블의 구성예를 나타낸다.4 shows an example of the configuration of the index table in the index decoder shown in Fig.
도 5는 도 3에 도시된 스텝 사이즈 롬에 있는 스텝 사이즈 테이블의 구성예를 나타낸다.5 shows a configuration example of the step size table in the step size ROM shown in Fig.
상기 과제를 이루기 위해, 2N비트인 2의 보수 데이타(이하, 제1원시 샘플)를 입력하여 압축하고, 압축된 N비트의 적응 차분 펄스 부호 변조 방식(이하, ADPCM) 코드(이하, 제1새로운 샘플)를 출력하거나/및 N비트의 ADPCM 코드(제2원시 샘플)을 입력하여 분해하고, 분해된 2N비트인 2의 보수 데이타(이하, 제2새로운 샘플)를 출력하는 본 발명에 의한 적응 차분 펄스 부호 변조 방식 압축/분해 장치는, 압축모드에서, 예상 샘플을 저장하고 최종 예상 샘플을 계산하여 플로우를 검사하거나, 분해 모드에서, 이전에 출력된 상기 제2새로운 샘플과 최종 차이값을 가산하여 현재의 제2새로운 샘플로서 출력하는 제1수단과, 상기 제2원시 샘플 및 상기 제1새로운 샘플을 입력하고, 입력한 값들중 하나를 압축/분해 선택신호에 응답하여 선택적으로 출력하는 선택수단과, 스텝 사이즈 및 상기 선택수단의 출력을 입력하여 아래와 같은 연산을 수행하고, 연산된 결과를 상기 최종 차이값으로서 출력하는 제2수단과,In order to achieve the above object, there is provided an adaptive differential pulse code modulation (hereinafter referred to as ADPCM) code (hereinafter, referred to as a first (Hereinafter, referred to as " 2 " samples) of the 2N-bit complementary data (hereinafter referred to as " second complementary samples ") and / or an N-bit ADPCM code The pulse code modulation type compression / decompression apparatus stores a predicted sample and calculates a final expected sample to check the flow in the compressed mode, or in the decomposition mode, adds the final difference value to the second new sample that has been previously output Selecting means for inputting the second raw sample and the first new sample and selectively outputting one of the input values in response to a compression / decomposition selection signal; , And second means for size and performs operations as below by the output of the selecting means and outputs the operation result as the final difference value,
(상기 선택수단 출력의 크기 * 상기 스텝 사이즈/4) + 상기 스텝 사이즈/8(The size of the selection means output * the step size / 4) + the step size / 8
상기 선택수단의 출력에 상응하는 인덱스 값과 이전의 인덱스 값을 가산하여 새로운 인덱스값을 획득하고, 상기 새로운 인덱스값에 해당하는 상기 스텝 사이즈를 출력하는 제3수단과, 압축모드에서, 상기 제1원시 샘플로부터 상기 예상 샘플을 감산하여 차이값을 출력하는 제4수단과, 상기 제3수단으로부터 입력한 상기 스텝 사이즈를 상기 압축/분해 선택신호에 응답하여 출력하는 제1레지스터와, 압축모드에서, 상기 차이값을 상기 제1레지스터로부터 출력되는 상기 스텝 사이즈와 비교하고, 소정수로 나눈 상기 스텝 사이즈를 상기 차이값으로부터 감산하고, 상기 소정수로 다시 나눈 상기 스텝 사이즈를 상기 감산된 값으로부터 다시 감산하여, 상기 제1새로운 샘플을 생성하며, 생성된 상기 제1새로운 샘플을 상기 선택수단으로 출력하는 제5수단과, 입력한 상기 선택수단의 출력을 상기 압축/분해 선택신호에 응답하여 상기 제1새로운 샘플로서 출력하는 제2레지스터 및 상기 제1수단으로부터 입력한 상기 현재의 제2새로운 샘플을 반전된 상기 압축/분해 선택신호에 응답하여 출력하는 제3레지스터로 구성되는 것이 바람직하다.A third means for obtaining a new index value by adding an index value corresponding to an output of the selection means and a previous index value and outputting the step size corresponding to the new index value, A first register for outputting the step size inputted from the third means in response to the compression / decomposition selection signal, The step size is compared with the step size output from the first register, the step size obtained by dividing the step size by a predetermined number is subtracted from the difference value, and the step size obtained by dividing the step size again by the predetermined number is subtracted from the subtracted value Fifth means for generating the first new sample and outputting the generated first new sample to the selecting means, Decomposition selection signal and outputting the output of the selection means as the first new sample in response to the compression / decomposition selection signal, and a second register for outputting the current second new sample inputted from the first means to the inverted compression / And a third register for outputting in response to the signal.
상기 다른 과제를 이루기 위해, 2N비트인 2의 보수 데이타(이하, 제1원시 샘플)를 입력하여 압축하고, 압축된 N비트의 적응 차분 펄스 부호 변조 방식(이하, ADPCM) 코드(이하, 제1새로운 샘플)를 출력하거나/및 N비트의 ADPCM 코드(제2원시 샘플)을 입력하여 분해하고, 분해된 2N비트인 2의 보수 데이타(이하, 제2새로운 샘플)를 출력하는 본 발명에 의한 적응 차분 펄스 부호 변조 방식 압축/분해 방법은, 압축 모드인가 분해 모드 인가를 판단하는 단계와, 상기 압축 모드인 경우, 상기 제1원시 샘플을 상기 제1새로운 샘플로 변환하는 단계 및 상기 분해 모드인 경우, 상기 제2원시 샘플을 상기 제2새로운 샘플로 분해하는 단계로 이루어지는 것이 바람직하다.(Hereinafter, referred to as an " 1 ") code (hereinafter referred to as " 1 " (Hereinafter referred to as " second sample ") of the decomposed 2N-bit digital data (hereinafter referred to as " second new sample ") or outputting an N-bit ADPCM code The differential pulse code modulation method compression / decompression method includes the steps of: determining whether the compression mode is the decompression mode; converting the first raw sample to the first new sample when the compression mode is the compression mode; , And decomposing the second raw sample into the second new sample.
이하, 본 발명에 의한 ADPCM 압축/분해 장치의 구성 및 동작을 다음과 같이 첩부한 도면을 참조하여 설명한다.Hereinafter, the configuration and operation of the ADPCM compression / decompression apparatus according to the present invention will be described with reference to the accompanying drawings.
본 발명을 설명하기에 앞서, 본 발명은 IMA에서 공개한 기준 알고리즘에 근거하여 압축 또는 분해 동작을 수행한다.Prior to describing the present invention, the present invention performs a compression or decomposition operation based on a reference algorithm disclosed in IMA.
도 3은 본 발명에 의한 ADPCM 압축/분해 장치의 블럭도로서, 제1블럭(10)과, 선택부(72)와, 제2블럭(20)과, 제3블럭(30)과, 제4블럭(40)과, 제1레지스터(64) 및 논리곱(62)과, 제5블럭(50)과, 제2레지스터(74) 및 논리곱(76)과, 제3레지스터 (102) 및 논리곱(100)으로 구성되어 있다.3 is a block diagram of an ADPCM compression / decompression apparatus according to the present invention. The first block 10, the selection unit 72, the second block 20, the third block 30, A first register 64 and a logical product 62, a fifth block 50, a second register 74 and a logical product 76, a third register 102, (100).
도 3에 도시된 제1블럭(10)은 압축모드에서, 예상 샘플을 저장하고 최종 예상 샘플을 계산하여 플로우를 검사하거나, 분해 모드에서, 이전에 출력된 제2새로운 샘플과 최종 차이값을 가산하여 현재의 제2새로운 샘플(OUT2)로서 출력하는 기능을 수행하며, 압축모드에서, 최종 차이값과 이전의 예상 샘플을 가산하여 최종 예상 샘플로서 출력하고, 분해 모드에서, 최종 차이값과 이전의 제2새로운 샘플을 가산하여 출력하는 제1가산기(14) 및 압축모드에서, 제1가산기(14)로부터 출력되는 최종 예상 샘플의 오버 플로우를 검사하고 예상 샘플을 저장하며, 분해 모드에서, 제1가산기(14)로부터 출력되는 제2새로운 샘플의 오버 플로우를 검사하여 출력하는 제1레지스터 및 리미터(12)로 구성되어 있다.The first block 10 shown in FIG. 3 stores the predicted sample and calculates the final expected sample to check the flow in the compressed mode, or, in the decomposition mode, adds the last difference value to the second new sample, And outputs the result as a current second new sample OUT2. In the compressed mode, the final difference value and the previous expected sample are added and output as the final estimated sample. In the decomposed mode, the final difference value and the previous A first adder 14 for adding and outputting a second new sample, and for checking the overflow of the final estimated sample output from the first adder 14 in the compressed mode and storing the expected sample, And a first register and a limiter 12 for checking and outputting an overflow of a second new sample output from the adder 14.
선택부(72)는 제2원시 샘플(IN2) 및 제1새로운 샘플(OUT1)을 입력하고, 입력한 값들중 하나를 압축/분해 선택신호(SE)에 응답하여 선택적으로 출력하는 기능을 수행하기 위해 멀티플렉서로 구현되어 있다.The selection unit 72 performs a function of inputting the second raw sample IN2 and the first new sample OUT1 and selectively outputting one of the input values in response to the compression / decomposition selection signal SE It is implemented as a multiplexer.
제2블럭(20)은 스텝 사이즈 및 선택부(72)의 출력을 입력하여 다음 수학식 1과 같은 연산을 수행하고, 연산된 결과를 최종 차이값으로서 출력하는 기능을 수행하며, 스텝 사이즈를 입력하여 소정 횟수 쉬프팅하여 출력하는 레지스터(28)와, 레지스터(28)로부터 입력한 스텝 사이즈를 선택부(72)의 출력에 응답하여 선택적으로 출력하는 스위칭부(26)와, 스위칭부(26)의 출력 및 레지스터(28)의 출력을 가산하는 제2가산기(24) 및 제2가산기(24)의 출력 및 선택부(72)의 출력중 최상위 비트를 배타적 논리합하여 최종 차이값으로서 출력하는 제1배타적 논리합(22)으로 구성되어 있다.The second block 20 receives the step size and the output of the selection unit 72 and performs an operation such as the following Equation 1 and outputs the calculated result as a final difference value, A switching unit 26 for selectively outputting the step size inputted from the register 28 in response to the output of the selecting unit 72; Which outputs the output of the second adder 24 and the second adder 24 and the output of the selector 72 as the final difference value by performing the exclusive-OR operation on the most significant bit among the outputs of the first adder 24 and the output of the register 28, And a logical sum 22.
제3블럭(30)은 선택부(72)의 출력에 상응하는 인덱스 값과 이전의 인덱스 값을 가산하여 새로운 인덱스값을 획득하고, 새로운 인덱스값에 해당하는 스텝 사이즈를 출력하는 기능을 수행하며, 선택부(72)의 출력을 디코딩하고, 디코딩된 값에 상응하는 인덱스값을 출력하는 인덱스 디코더(38)와, 인덱스 디코더(38)로부터 출력되는 인덱스값과 이전의 인덱스값을 가산하는 제3가산기(36)와, 제3가산기(36) 출력의 플로우를 검사하는 제2레지스터 및 리미터(34) 및 제2레지스터 및 리미터(34)의 출력에 상응하는 스텝 사이즈를 제1레지스터(64) 및 제2블럭(20)의 레지스터(28)로 출력하는 스텝 사이즈 롬 테이블(32)로 구성되어 있다.The third block 30 performs a function of obtaining a new index value by adding an index value corresponding to an output of the selection unit 72 and a previous index value and outputting a step size corresponding to a new index value, An index decoder 38 for decoding the output of the selector 72 and outputting an index value corresponding to the decoded value, a third adder 38 for adding the index value output from the index decoder 38 to the previous index value, A second register for checking the flow of the output of the third adder 36 and a step size corresponding to the output of the limiter 34 and the second register and limiter 34 to the first register 64, And a step size ROM table 32 for outputting the result to the register 28 of the second block 20.
제4블럭(40)은 압축모드에서, 제1원시 샘플(IN1)로부터 예상 샘플을 감산하여 차이값을 출력하는 기능을 수행하며, 제1블럭(10)의 제1레지스터 및 리미터(12)의 출력을 반전하여 출력하는 제1인버터(44)와, 입력한 제1원시 샘플(IN1)을 압축/분해 선택신호(SE)에 응답하여 출력하는 제1저장부(42)와, 제1인버터(44)의 출력 및 제1저장부(42)의 출력을 가산하여 출력하는 제4가산기(46) 및 제4가산기(46)의 출력중 부호 비트와 데이타 비트를 배타적 논리합하여 차이값으로서 출력하는 제2배타적 논리합(48)로 구성되어 있다.The fourth block 40 performs the function of subtracting the expected sample from the first source sample IN1 in the compressed mode and outputting the difference value. The first block of the first block 10 and the limiter 12 A first storage unit 42 for outputting the inputted first source sample IN1 in response to the compression / decomposition selection signal SE, a first inverter 44 for inverting the output of the first inverter 44, (44) and the output of the first storage unit (42), and a fourth adder (46) and a fourth adder (46) for performing an exclusive OR operation on the sign bit and the data bit among the outputs of the fourth adder And a 2-bit exclusive logical OR (48).
제1레지스터(64) 및 논리곱(62)은 제3블럭(30)의 스텝 사이즈 롬 테이블(32)로부터 입력한 스텝 사이즈를 압축/분해 선택신호(SE)에 응답하여 출력하는 기능을 수행한다.The first register 64 and the logical product 62 perform the function of outputting the step size inputted from the step size ROM table 32 of the third block 30 in response to the compression / decomposition selection signal SE .
제5블럭(50)은 압축모드에서, 차이값을 제1레지스터(64)로부터 출력되는 스텝 사이즈와 비교하고, 소정수로 나눈 스텝 사이즈를 차이값으로부터 감산하고, 소정수로 다시 나눈 스텝 사이즈를 감산된 값으로부터 다시 감산하여, 제1새로운 샘플을 생성하며, 생성된 제1새로운 샘플을 선택부(72)로 출력하는 기능을 수행하며, 차이값을 임시 저장하는 제2저장부(52)와, 제1레지스터(64)로부터 출력되는 스텝 사이즈를 제어 클럭(CKL2)에 응답하여 선택적으로 출력하는 제1멀티플렉서(58)와, 제1멀티플렉서(58)의 출력을 반전하여 출력하는 제2인버터(82)와, 입력한 제2저장부(52)의 출력과 제1가산값을 제1가산값의 부호 비트에 응답하여 선택적으로 출력하는 제2멀티플렉서(54)와, 제2멀티플렉서(54)의 출력과 제2인버터(82)의 출력을 가산하여 제1가산값으로서 출력하는 제5가산기(84)와, 제1가산값을 임시 저장하여 제2멀티플렉서(54)로 출력하는 제3저장부(88)와, 제1가산값을 반전하여 출력하는 제3인버터(86)와, 제4가산기(46)의 출력과 제3인버터(86)의 출력을 입력하고, 입력한 값을 제어 클럭(CKL2)에 응답하여 선택적으로 출력하는 제3멀티플렉서(56) 및 제3멀티플렉서(56)의 출력을 임시 저장하여 제1새로운 샘플로서 출력하는 제4저장부(90)로 구성되어 있다.The fifth block 50 compares the difference value with the step size output from the first register 64 in the compression mode, subtracts the step size obtained by dividing the difference by a predetermined number from the difference value, divides the step size by a predetermined number A second storage unit 52 for temporarily subtracting the difference value from the subtracted value to generate a first new sample and outputting the generated first new sample to the selection unit 72, A first multiplexer 58 for selectively outputting the step size output from the first register 64 in response to the control clock CKL2 and a second inverter 58 for inverting the output of the first multiplexer 58 A second multiplexer 54 for selectively outputting the output of the second storage unit 52 and the first addition value in response to the sign bit of the first addition value, And the output of the second inverter 82 to output as a first added value A third storage unit 88 for temporarily storing the first addition value and outputting the first addition value to the second multiplexer 54, a third inverter 86 for inverting and outputting the first addition value, A third multiplexer 56 and a third multiplexer 56 for inputting the output of the fourth adder 46 and the output of the third inverter 86 and selectively outputting the input value in response to the control clock CKL2, And a fourth storage unit 90 for temporarily storing the output of the first sample as a first new sample.
제2레지스터(74) 및 논리곱(76)은 입력한 선택부(72)의 출력을 압축/분해 선택신호(SE)에 응답하여 제1새로운 샘플(OUT1)로서 출력하는 기능을 수행한다.The second register 74 and the logical product 76 perform the function of outputting the output of the selection unit 72 as a first new sample OUT1 in response to the compression / decomposition selection signal SE.
제3레지스터(102) 및 논리곱(100)은 제1블럭(10)의 제1레지스터 및 리미터(12)로부터 입력한 현재의 제2새로운 샘플을 반전된 압축/분해 선택신호()에 응답하여 출력하는 기능을 수행한다.The third register 102 and the AND gate 100 add the current second new sample input from the first register of the first block 10 and the limiter 12 to the inverted compression / ) In response to the command.
도 4는 도 3에 도시된 인덱스 디코더(38)에 있는 인덱스 테이블의 구성예를 나타낸다.FIG. 4 shows an example of the structure of the index table in the index decoder 38 shown in FIG.
도 5는 도 3에 도시된 스텝 사이즈 롬(32)에 있는 스텝 사이즈 테이블의 구성예를 나타낸다.5 shows a configuration example of the step size table in the step size ROM 32 shown in FIG.
이하, 본 발명에 의한 ADPCM 압축 및 분해 장치의 이해를 돕기 위해, ADPCM 압축에 대해 다음과 같이 별도로 설명한다.Hereinafter, in order to facilitate understanding of the ADPCM compression / decompression apparatus according to the present invention, ADPCM compression will be separately described as follows.
ADPCM 압축장치에 입력되는 데이타는 16비트 2진 보수이며, 원시 샘플이라 하며, 압축을 통해 출력되는 4비트의 ADPCM 샘플은 새로운 샘플이라고 정의한다. 그 압축과정에서는 원시 샘플과 예상 샘플(예상치 샘플)간의 차이를 계산하고, 이 차이값을 스텝 사이즈를 이용하여 4비트 새로운 샘플로 양자화 하여 압축된 데이타를 얻게 된다. 이 압축된 데이타는 4비트의 새로운 샘플로서 MSB비트는 부호를, 나머지 비트들은 크기를 각각 나타내는 데이타 포맷을 갖는다. 새로운 샘플값의 출력 후 이 값은 다시 같은 양자화 스텝 사이즈를 이용하여 분해기를 거쳐 선형한 차이값으로 계산되고, 계산된 이 차이값은 양자화에 의한 트렁케이션(truncation) 에러를 보정하기 위해 1/2이 더해진다. 이렇게 차이값에 보정값까지 더해진 최종적인 차이값은 그 이전의 예상 샘플에 다시 더해지고, 입력되는 원시 샘플에서 최종의 예상 샘플을 감산하게 된다.The data input to the ADPCM compression unit is a 16-bit binary complement and is called a primitive sample. A 4-bit ADPCM sample output through compression is defined as a new sample. In the compression process, the difference between the raw sample and the expected sample (estimate sample) is calculated, and the difference value is quantized into a 4-bit new sample using the step size to obtain the compressed data. The compressed data has a data format indicating a 4-bit new sample, in which the MSB bit indicates a sign and the remaining bits indicate a size. After the output of the new sample value, this value is again calculated as a linear difference value through the decomposer using the same quantization step size, and the calculated difference value is multiplied by 1/2 to compensate for the truncation error due to quantization. Is added. The final difference value thus added to the difference value to the correction value is added back to the previous expected sample and subtracted the final expected sample from the input raw sample.
새로운 샘플은 스텝 사이즈 테이블의 인덱스를 지정하며, 지정된 인덱스는 스텝 사이즈 테이블의 새로운 스텝 사이즈를 지정하게 된다. 여기서, 예상 샘플, 스텝 사이즈 및 인덱스는 샘플과 샘플 사이에서 정변수(static variable)를 가져야 한다.The new sample specifies the index of the step size table, and the specified index specifies the new step size of the step size table. Here, the expected sample, step size, and index should have a static variable between the sample and the sample.
그러면, 예를 들어, 그 압축과정을 다음과 같이 설명해 본다. 원시 샘플이 873F(hex), 예상 샘플이 8700(hex), 스텝 사이즈가 73(십진수) 및 인덱스가 24(십진수)라고 할 경우, 먼저, 원시 샘플에서 예상 샘플을 감산하여 차이값을 계산한다. 이 때, 차이값이 0이상이면, 부호 비트는 0이되고, 그렇지 않으면 부호 비트는 1이 된다. 만일, 차이값이 음수이면, 차이값은 음수로 처리된다. 두번째로, 차이값과 스텝 사이즈를 나눗셈 연산한다. 즉, 만약, 차이값이 스텝 사이즈 이상이면 ADPCM 데이타[2]=1이다. 그러나, 예에서는 차이값이 스텝 사이즈보다 작으므로 ADPCM 데이타[2]=0이 된다. 이 계산이 완료되면 스텝 사이즈를 오른쪽으로 1 비트 쉬프팅(나누기 2)하여 차이값에서 다시 스텝 사이즈 값(오른쪽으로 1비트 쉬프팅한 결과인 36)을 감산하여 준다. 감산된 결과는 27이므로, ADPCM 데이타 [1]=1이 되고, 다시 스텝 사이즈를 오른쪽으로 1비트 쉬프팅한 값인 18을 27에서 감산하여 준다. 감산된 결과 9는 ADPCM 데이타[0]=1이 됨을 나타낸다. 결국, 4비트 ADPCM 데이타[3:0] = 0011이 된다.Then, for example, let's explain the compression process as follows. If the raw sample is 873F (hex), the expected sample is 8700 (hex), the step size is 73 (decimal) and the index is 24 (decimal), first subtract the expected sample from the raw sample to calculate the difference. At this time, if the difference value is 0 or more, the sign bit is 0, otherwise, the sign bit is 1. If the difference value is negative, the difference value is treated as a negative value. Second, divide the difference value by the step size. That is, if the difference value is equal to or larger than the step size, the ADPCM data [2] = 1. However, in the example, since the difference value is smaller than the step size, the ADPCM data [2] = 0 is obtained. When this calculation is completed, the step size is shifted one bit to the right by one bit (division 2), and subtracting the step size value (36 bits resulting from 1 bit shifting to the right) from the difference value. Since the result of subtraction is 27, ADPCM data [1] = 1 is obtained, and 18, which is a value obtained by shifting the step size to the right by one bit, is subtracted from 27. [ The subtracted result 9 indicates that the ADPCM data [0] = 1. As a result, the 4-bit ADPCM data [3: 0] = 0011 is obtained.
획득된 ADPCM 데이타 [3:0]를 이용하여 최종적인 차이값을 다음 수학식 2를 이용하여 구한다.Using the obtained ADPCM data [3: 0], the final difference value is obtained using the following equation (2).
최종적인 차이값을 구한 다음, 이전의 예상 샘플에 최종적인 차이값을 더해주면 이 값이 바로 다음으로 입력되어지는 원시 샘플에서 감산되어지는 최종의 예상 샘플이 된다. 이 때 최종적인 차이값은 4비트 ADPCM 데이타의 부호 비트에 의해서 가산(부호 비트=0)되거나, 감산(부호 비트=1)되어진다.If the final difference value is found, then adding the final difference value to the previous expected sample, this value becomes the final expected sample to be subtracted from the next entered raw sample. At this time, the final difference value is added (sign bit = 0) or subtracted (sign bit = 1) by the sign bit of the 4-bit ADPCM data.
최종의 예상 샘플은 원시 샘플과 연산되기 전에 오버 플로우 검사를 하게 된다. 또한, 발생되어진 ADPCM 데이타(새로운 샘플)을 이용하여 도 3에 도시된 인덱스 테이블을 이동시킴으로서, 도 5의 스텝 사이즈 테이블에서 하나의 새로운 스텝 사이즈가 지정될 수 있도록 한다. 상기 예에서, 새로운 샘플은 0011이고, 먼저 지정된 인덱스의 값은 24이며, 이는 89개의 스텝 사이즈 테이블값중 스텝 사이즈 73이 24번째 값임을 나타내고 있다. 여기서, 새로운 샘플의 십진값이 3이므로, 인덱스 테이블에서 3번째 수인 -1과 이전의 인덱스인 24를 더한값 23이 새로운 인덱스 값이 된다. 그러므로, 스텝 사이즈 테이블에서 23번째수인 66이 새로운 스텝 사이즈가 된다. 인덱스 테이블을 결정하는 새로운 샘플은 부호를 무시하고, 크기로만 고려하여, 0∼15까지로 인덱스 테이블과 맵핑시키면 된다.The final expected sample is subjected to an overflow check before it is computed with the raw sample. Also, by moving the index table shown in FIG. 3 using the generated ADPCM data (new sample), one new step size can be designated in the step size table of FIG. In this example, the new sample is 0011, and the value of the designated index is 24, indicating that the step size 73 of the 89 step size table values is the 24th value. Here, since the decimal value of the new sample is 3, a new index value is obtained by adding the third number -1 in the index table and the previous index 24. Therefore, the 23rd step number 66 in the step size table becomes a new step size. A new sample that determines the index table can be mapped to the index table from 0 to 15, considering only the size, ignoring the sign.
다음으로, ADPCM 분해에 대해 다음과 같이 별도로 설명한다.Next, the ADPCM decomposition will be described separately as follows.
ADPCM 분해 장치에 입력되는 데이타는 4비트의 ADPCM 부호이며, 이 데이타는 원시 샘플이라 하고, 분해를 통해 출력되는 16비트 2의 보수 데이타를 새로운 샘플이라고 한다. 이 과정에서는 원시 샘플과 양자화 스텝 사이즈(양자화 LUT의 값)의 상관관계를 이용하여 선형 차이값을 계산하게 된다. 이 차이값을 계산하는 과정중에 양자화의 트렁케이션 에러를 보정하기 위해 1/2을 더해 준다. 이렇게 계산된 선형 차이값을 새로운 샘플(이전 샘플)에 더해줌으로서, 최종의 선형 새로운 샘플을 얻게 된다. 이 최종 출력값인 새로운 샘플은 16비트 2의 보수 포맷의 분해된 데이타로 전체 시스템으로부터 출력된다. 원시 샘플은 스텝 사이즈 테이블내의 인덱스를 조정하게 되고, 조정된 인덱스에 의해 스텝 사이즈 테이블의 새로운 스텝 사이즈가 지정된다. 이렇게 새로 지정된 스텝 사이즈값은 다음 입력되는 원시 샘플과 선형 차이값을 만들게 된다. 여기서, 새로운 샘플, 스텝 사이즈 및 인덱스는 샘플과 샘플 사이에서 정변수를 가져야만 한다. 압축과정에서와 같이, 상술한 분해 과정을 예를 들어 다음과 같이 설명한다.The data input to the ADPCM decomposition apparatus is a 4-bit ADPCM code. This data is called a raw sample, and 16-bit complement data output through decomposition is called a new sample. In this process, the linear difference value is calculated using the correlation between the raw sample and the quantization step size (the value of the quantization LUT). During the calculation of this difference value, 1/2 is added to correct the truncation error of the quantization. By adding the calculated linear difference value to the new sample (the previous sample), a final linear new sample is obtained. This final output value, the new sample, is output from the entire system as disassembled data in 16-bit two's complement format. The raw sample adjusts the index in the step size table and the adjusted index specifies the new step size of the step size table. This newly specified step size value will produce the next input raw sample and linear difference value. Here, the new sample, step size, and index must have a positive variable between the sample and the sample. As in the compression process, the above-described decomposition process will be described as follows, for example.
원시 샘플이 0011이고, 새로운 샘플(이전 샘플)이 8700(hex)이고, 스텝 사이즈가 73(십진수)이고, 인덱스가 24(십진수)이라고 할 경우, 먼저, 초기의 초기값을 0이라고 하자.If the raw sample is 0011, the new sample (previous sample) is 8700 (hex), the step size is 73 (decimal), and the index is 24 (decimal), first let the initial initial value be zero.
첫번째 분해 과정으로, 원시 샘플과 스텝 사이즈와의 관계를 이용하여 다음 수학식 3과 같은 차이값을 얻는다.In the first decomposition process, a difference value as shown in the following Equation 3 is obtained using the relationship between the raw sample and the step size.
= (원시 샘플 * 스텝 사이즈 /4) + (스텝 사이즈/8)= (Raw sample * step size / 4) + (step size / 8)
상기 수학식 3에서 원시 샘플은 3비트의 크기를 의미한다. 그러므로, 3비트의 크기 011을 원시 샘플에 대입하고, 스텝 사이즈에는 73을 대입하고, 계산하면 차이값은 63=3F(hex)을 얻게 된다. 만약, 원시 샘플의 MSB 즉, 부호 비트가 1인 경우, 차이값은 음수로 처리된다.In Equation (3), the raw sample means a size of 3 bits. Therefore, by substituting the size 011 of 3 bits into the raw sample and substituting 73 for the step size, the difference value is 63 = 3F (hex). If the MSB of the original sample, that is, the sign bit is 1, the difference value is treated as a negative value.
두번째 분해 과정으로, 첫번째 과정에서 얻어진 차이값에 새로운 샘플값을 더함으로서, 최종의 16비트 2의 보수 포맷의 선형 새로운 샘플을 얻게 된다. 이렇게 얻어진 값은 오버 플로우(over flow)와 언더 플로우(under flow)를 검사하게 된다.In the second decomposition process, a linear new sample of the final 16-bit two's complement format is obtained by adding the new sample value to the difference value obtained in the first procedure. The values thus obtained are checked for overflow and underflow.
즉, 새로운 샘플은 첫번째 및 두번째 과정에 의해서 결정되고, 입력된 원시 샘플은 다음 입력되는 원시 샘플과 연산되는 새로운 스텝 사이즈를 결정하게 된다. 원시 샘플을 이용하여 도 4의 인덱스 테이블을 이동시키고, 도 5의 스텝 사이즈 테이블의 하나의 값을 지정하게 된다. 즉, 인덱스는 다음 수학식 4와 같이 정의된다.That is, a new sample is determined by the first and second steps, and the input raw sample determines the new step size to be computed with the next input raw sample. The index table of FIG. 4 is moved by using the raw sample, and one value of the step size table of FIG. 5 is designated. That is, the index is defined by the following equation (4).
여기서, 원시 샘플값 3(011)에 상응하는 위치의 인덱스 테이블에 위치한 값은 -1이므로, 이전의 인덱스 24에서 1을 감산한 값 23이 새로운 인덱스가 되며, 새로운 인덱스 23이 지정하는 스텝 사이즈 테이블 상의 값 66이 새로운 스텝 사이즈가 된다. 인덱스 테이블을 결정하는 원시 샘플은 부호를 무시하고, 크기만을 고려하여 0∼15까지의 인덱스 테이블과 맵핑시켜 주게 된다.Here, since the value located in the index table at the position corresponding to the raw sample value 3 (011) is -1, the value 23 obtained by subtracting 1 from the previous index 24 becomes the new index, and the step size table The value 66 on the new step size becomes the new step size. A primitive sample that determines an index table is mapped to an index table of 0 to 15 considering only the size, ignoring the sign.
한편, 도 3에 도시된 본 발명에 의한 장치는 디지탈 오디오 기기에서 주로 사용하는 클럭을 마스터 클럭으로서 이용하였다.Meanwhile, the apparatus according to the present invention shown in FIG. 3 uses a clock mainly used in a digital audio apparatus as a master clock.
도 3에 도시된 본 발명에 의한 장치는, 입력단자 IN1을 통해 16비트의 2의 보수 포맷으로 된 제1원시 샘플을 하여 레지스터(42)에 저장하고, 저장된 샘플은 제4가산기(46)로 입력된다. 이 때, 레지스터(42)는 논리곱(62)의 출력에 의해 제어된다. 여기서, 논리곱(62)은 2개의 입력인 압축/분해 선택신호(SE)와 래치 클럭(CLK1)에 의해 동작되는데, 압축모드에서 SE는 고레벨이고, 분해모드에서 SE는 저레벨이다. 제4가산기(46)의 또 다른 입력은 최종 예상 샘플로서 제1레지스터 및 리미터(12)을 거쳐 제1인버터(44)를 통하여 입력된다. 여기서, 제1인버터(44)는 예상 샘플을 원시 샘플로부터 감산하기 위해 제4가산기(46)의 입력전에 데이타 전체를 반전시키는 역할을 한다. 입력 데이타(제1원시 샘플)와 최종 예상 샘플은 제4가산기(46)에서 연산되고, 그 결과가 바로 차이값이 된다. 만일, 차이값이 0 이상인 경우에는 부호 비트가 0이 되고, 음수인 경우에는 부호 비트가 1이 된다. 부호 비트가 1인 경우, 차이값은 음수로 처리되어야 한다. 이 동작은 제2배타적 논리합(48)에 의해 수행되며, 부호 비트는 또한 제3멀티플렉서(56)를 통하여 레지스터(90)에 저장된다.The apparatus according to the present invention shown in Fig. 3 stores a first raw sample in a 16-bit two's complement format through an input terminal IN1 and stores it in a register 42. The stored sample is supplied to a fourth adder 46 . At this time, the register 42 is controlled by the output of the logical product 62. Here, the logical product 62 is operated by the two input compression / decompression selection signals SE and the latch clock CLK1, where SE is high in the compressed mode and SE is low in the decomposition mode. Another input of the fourth adder 46 is input through the first inverter 44 via the first register and limiter 12 as a final estimated sample. Here, the first inverter 44 serves to invert the entire data before the input of the fourth adder 46 to subtract the expected samples from the raw samples. The input data (the first source sample) and the final estimated sample are computed in the fourth adder 46, and the result is the difference value. If the difference value is 0 or more, the sign bit is 0. If the difference value is negative, the sign bit is 1. If the sign bit is 1, the difference value should be treated as a negative number. This operation is performed by the second exclusive logical OR 48 and the sign bit is also stored in the register 90 through the third multiplexer 56. [
제2배타적 논리합(48)을 통과한 데이타는 제2저장부(52)에 저장되고, 이 데이타는 제2멀티플렉서(54)를 거쳐 제5가산기(84)에 하나의 입력으로 들어간다. 한편, 스텝 사이즈 테이블 롬(32)에 저장되어 있는 스텝 사이즈 테이블로부터 스텝 사이즈값은 제1레지스터(64)로 입력되고, 제1레지스터(64)는 논리곱(62)의 출력에 의해 제어되어 구동된다. 제1레지스터(64)의 출력 데이타는 제1멀티플렉서(58)을 통해 선택된 데이타 패스를 거쳐 제2인버터(82)를 통해 반전된 상태로 제5가산기(84)의 또 다른 하나의 입력으로 들어간다. 제5가산기(84)에 입력된 두 데이타는 바로 차이값과 스텝 사이즈값으로서 차이값 + 스텝 사이즈의 연산이 제5가산기(84)에서 이루어진다. 가산된 결과에서 MSB 부호 비트는 제3인버터(86)를 통하여 반전되고, 반전된 데이타는 제3멀티플렉서(56)를 통해 쉬프트 레지스터(90)에 저장된다. 이 과정은 전술한 압축과정에서 차이값과 스텝 사이즈를 비교하는 과정이며, 제3멀티플렉서(56)를 통해 MSB 부호 비트가 먼저 쉬프트 레지스터(90)에 저장되고, 차이값과 스텝 사이즈를 비교한 첫번째 연산의 결과가 역시 제3멀티플렉서(56)를 통하여 쉬프트 레지스터(90)에 저장되어 ADPCM 데이타[2]의 값이 결정되는 것이다. 다시 스텝 사이즈는 변하지 않고 롬(32)과 제1레지스터(64)를 통하여 제1멀티플렉서(58)로 입력되어지고 이 때, 스텝 사이즈는 1비트 쉬프트되어 나누기 2의 효과를 얻게 된다. 1 비트 오른쪽으로 쉬프트된 데이타는 제2인버터(82)를 거쳐 제5가산기(84)로 입력되고, 이전에 제5가산기(84)를 통해 연산되었던 결과는 임시 저장장치인 제3저장부(88)에 저장되었다가 MSB비트가 1인 경우는 사용되지 않고, MSB 비트가 0인 경우에는 제2멀티플렉서(54)를 통하여 제5가산기(84)로 입력되어 두번째의 1비트 오른쪽으로 쉬프트된 스텝 사이즈와 연산을 하게 된다. 이 연산의 결과 MSB 부호 비트는 제3인버터(86)를 통해 반전되고, 반전된 데이타는 제3멀티플렉서(56)를 거쳐 쉬프트 레지스터(90)에 또 저장된다. 이 경우, 제3저장부(88)에 저장된 데이타의 MSB 비트가 1인 경우는 제2저장부(52)의 데이타가 제2멀티플렉서(54)를 통해 제5가산기(84)로 입력되어 연산이 이루어진다. 이렇게 하여, 쉬프트 레지스터(90)에 저장된 두번째 데이타가 바로 ADPCM 데이타 [1]이 되는 것이다. 위의 과정을 한번 더 반복하여 ADPCM 데이타 [0]가 쉬프트 레지스터(90)에 저장되면, ADPCM 데이타 [3:0]는 동시에 병렬 데이타로 출력되고, 선택부(72)를 통하여 제2레지스터(74)에 저장된다. 최종적으로 ADPCM 4비트 데이타(제1새로운 샘플)형태로 출력단자 OUT1을 통해 출력된다. 여기서, 선택부(72)는 압축모드에서 쉬프트 레지스터(90)의 결과를 출력하고, 분해모드에서 입력단자 IN2를 통해 입력되는 제2원시 샘플을 출력하게 된다. 이를 위해, 제2레지스터(74)는 논리곱(76)의 제어를 받게 되며, 논리곱(76)의 두개의 입력 중 SE가 고레벨인 경우에 한하여, ADPCM 데이타(제1새로운 샘플)를 최종적으로 출력하게 된다.The data that has passed through the second exclusive OR 48 is stored in the second storage 52 and this data is input to the fifth adder 84 via the second multiplexer 54 as one input. On the other hand, the step size value is input to the first register 64 from the step size table stored in the step size table ROM 32, and the first register 64 is controlled by the output of the logical product 62, do. The output data of the first register 64 is inverted through the second inverter 82 via the selected data path through the first multiplexer 58 and enters the input of another one of the fifth adders 84. The two data input to the fifth adder 84 are immediately subjected to the difference value and the step size value as the difference value + step size in the fifth adder 84. In the added result, the MSB sign bit is inverted through the third inverter 86, and the inverted data is stored in the shift register 90 through the third multiplexer 56. The MSB sign bit is first stored in the shift register 90 through the third multiplexer 56, and the MSB sign bit is first stored in the shift register 90, The result of the operation is also stored in the shift register 90 through the third multiplexer 56 to determine the value of the ADPCM data [2]. The step size is input to the first multiplexer 58 through the ROM 32 and the first register 64 without changing the step size. At this time, the step size is shifted by one bit to obtain the effect of the division 2. The data shifted by one bit to the right is input to the fifth adder 84 via the second inverter 82 and the result previously calculated through the fifth adder 84 is stored in the third storage 88 , And if the MSB bit is 0, it is input to the fifth adder 84 via the second multiplexer 54 and is shifted to the right by 1 bit to the right of the second step size . As a result of this operation, the MSB sign bit is inverted through the third inverter 86 and the inverted data is also stored in the shift register 90 via the third multiplexer 56. [ In this case, when the MSB bit of the data stored in the third storage unit 88 is 1, the data of the second storage unit 52 is input to the fifth adder 84 through the second multiplexer 54, . Thus, the second data stored in the shift register 90 becomes the ADPCM data [1]. When the ADPCM data [0] is stored in the shift register 90, the ADPCM data [3: 0] is simultaneously output as parallel data, and the second register 74 ). And finally outputted through the output terminal OUT1 in the form of ADPCM 4-bit data (first new sample). Here, the selector 72 outputs the result of the shift register 90 in the compressed mode, and outputs the second raw sample input through the input terminal IN2 in the decomposition mode. To this end, the second register 74 is under the control of the logical product 76, and the ADPCM data (the first new sample) is finally added to the second register 74 only if SE of the two inputs of the logical product 76 is high .
롬(32)으로부터 출력되는 스텝 사이즈 값은 레지스터(28)로 출력되어 저장되고, 레지스터(28)에 저장되어 있는 스텝 사이즈값은 스위치(26)와 4입력을 갖는 제2가산기(24)로 출력된다. 선택부(72)로부터 출력되는 4비트 병렬 데이타중 MSB 부호 비트를 제외한 나머지 3비트 데이타[2:0]의 각 데이타 비트는 스위치(26)의 3개 스위치를 각 비트별로 제어하게 된다. 첫번재 스위치의 출력 데이타는 쉬프트없이 제2가산기(24)로 입력되고, 두번째 스위치의 출력은 1 비트 오른쪽으로 쉬프트되며, 세번째 출력은 2 비트 오른쪽으로 쉬프트되어 제2가산기(24)로 입력된다. 레지스터(28)의 또 다른 출력은 3 비트 오른쪽으로 쉬프트되어 제2가산기(24)의 나머지 하나의 입력으로 들어간다. 제2가산기(24)에서 4개 입력 데이타가 연산된 결과는 제1배타적 논리합(22)에 의해 제어된다. 이 제1배타적 논리합(22)의 제어값은 선택부(72)로부터 출력되는 4비트의 ADPCM 데이타의 부호 비트이다. 이제까지는 ADPCM 데이타[3:0]으로부터 최종 차이값을 구하는 연산 즉, 수학식 2의 연산을 설명하였다.The step size value output from the ROM 32 is outputted to and stored in the register 28 and the step size value stored in the register 28 is outputted to the second adder 24 having the switch 26 and the four inputs do. Each of the data bits of the 3-bit data [2: 0] excluding the MSB code bits of the 4-bit parallel data output from the selector 72 controls the three switches of the switch 26 for each bit. The output data of the first switch is input to the second adder 24 without shifting, the output of the second switch is shifted by one bit to the right, and the third output is shifted to the right by two bits to be input to the second adder 24. Another output of the register 28 is shifted 3 bits to the right and enters the input of the other one of the second adders 24. The result of the calculation of the four input data in the second adder 24 is controlled by the first exclusive OR (22). The control value of the first exclusive OR circuit 22 is the sign bit of the 4-bit ADPCM data output from the selector 72. Until now, the operation of obtaining the final difference value from the ADPCM data [3: 0], that is, the operation of the equation (2) has been described.
한편, 제1배타적 논리합(22)의 출력은 다시 제1가산기(14)로 입력되는데 바로 이 값이 최종 차이값이고, 제1레지스터 및 리미터(12)에서 출력되는 데이타는 이전의 예상 샘플값이다. 두 입력 데이타는 제1가산기(14)에서 가산되어 다시 제1레지스터 및 리미터(12)에 저장된다. 제1가산기(14)의 연산결과가 바로 다음으로 입력되어지는 원시 샘플에서 감산되어지는 최종의 예상 샘플이 되는데, 이 결과가 제1레지스터 및 리미터(12)에 저장되기 전 오버 플로우를 검사하게 된다. 이 오버 플로우를 검사하는 역할은 리미터가 하게 된다. 즉, 예상 샘플이 32767보다 크면, 예상 샘플은 32767이 되지만, 예상 샘플이 -32768보다 작으면, 예상 샘플은 -32768이 된다.On the other hand, the output of the first exclusive OR gate 22 is again input to the first adder 14, which is the final difference value, and the data output from the first register and the limiter 12 is the previous expected sample value . The two input data are added in the first adder 14 and stored in the first register and the limiter 12 again. The result of the operation of the first adder 14 becomes the final expected sample to be subtracted from the next input raw sample and the overflow is checked before this result is stored in the first register and limiter 12 . The role of checking this overflow is done by the limiter. That is, if the expected sample is greater than 32767, the expected sample is 32767, but if the expected sample is less than -32768, the expected sample is -32768.
마지막으로, 선택부(72)의 출력 데이타인 4비트 ADPCM 데이타를 이용하여 인덱스 테이블을 맵핑시켜주는 제3블럭(30)을 설명한다.Finally, the third block 30 for mapping the index table using 4-bit ADPCM data, which is the output data of the selector 72, will be described.
인덱스 디코더(38)는 생성된 ADPCM 데이타를 입력하여 절대값으로 처리하고, 처리된 절대값으로 도 4에 도시된 인덱스 테이블의 16개의 값중 하나를 지정하게 된다. 지정된 값에 의해서 데이타가 출력되고, 그 출력된 값은 제3가산기(36)로 입력된다. 이 때, 제2레지스터 및 리미터(34)로부터 이전에 지정되었던 인덱스 값이 제3가산기(34)로 입력되어 두 데이타는 연산되고, 그 결과는 제2레지스터 및 리미터(34)에 다시 저장되어 새로운 인덱스 값으로 롬(32)상의 새로운 스텝 사이즈 테이블값을 지정하게 된다. 그 결과, 롬(32)에서는 새로운 스텝 사이즈값이 출력된다. 새로운 인덱스 값은 제2레지스터 및 리미터(34)에 입력되면서 인덱스 오버 플로우와 언더 플로우를 검사하게 된다. 즉, 인덱스가 0보다 적으면 인덱스는 0이고, 인덱스가 88보다 크면 인덱스는 88이다. 이러한 동작은 리미터에 의해 수행된다.The index decoder 38 receives the generated ADPCM data and processes it as an absolute value, and designates one of the 16 values of the index table shown in FIG. 4 as the processed absolute value. Data is output according to the designated value, and the output value is input to the third adder 36. [ At this time, the index value previously designated from the second register and limiter 34 is input to the third adder 34 so that both data are calculated and the result is stored again in the second register and limiter 34, A new step size table value on the ROM 32 is designated as an index value. As a result, the ROM 32 outputs a new step size value. The new index value is input to the second register and limiter 34 to check the index overflow and the underflow. That is, if the index is less than 0, the index is 0. If the index is greater than 88, the index is 88. This operation is performed by a limiter.
이하, 도 3에 도시된 본 발명에 의한 압축/분해 장치에서 수행되는 분해 과정을 다음과 같이 설명한다.Hereinafter, the decomposition process performed in the compression / decompression apparatus according to the present invention shown in FIG. 3 will be described as follows.
도 3에 도시된 장치는 입력단자 IN2를 통해 제2원시 샘플을 입력하는데, 이 때 입력되는 데이타는 4비트의 ADPCM 포맷으로 입력된다. 입력된 데이타는 선택부(72)를 통해서 인덱스 디코더(38), 스위치(26) 및 제1배타적 논리합(22)로 출력된다.The device shown in FIG. 3 inputs a second raw sample through an input terminal IN2, and the input data is input in a 4-bit ADPCM format. The input data is output to the index decoder 38, the switch 26 and the first exclusive OR circuit 22 via the selector 72. [
롬(32)은 스텝 사이즈값을 저장하고 있다가 그 값을 제1레지스터(64)와 레지스터(28)로 각각 출력한다. 제1레지스터(64)는 본 장치가 분해동작을 하고 있을 때는 데이타를 받아들이지 못하고, 레지스터(28)만이 롬(32)으로부터 출력되는 데이타를 받아들인다. 레지스터(28)는 스텝 사이즈 테이블값을 저장하고 있다가 스위치(26)와 제3가산기(24)로 그 값을 출력하게 된다. 레지스터(28)에서 데이타를 출력하면, 스위치(26)는 그 데이타를 받아들이고, 선택부(72)에서 출력되는 4비트의 ADPCM 데이타중 MSB(부호 비트)비트를 제외한 3비트를 제어클럭으로 받아들여 각각의 스위치단을 제어하게 된다. 스위치(26)는 4비트의 ADPCM 데이타의 MSB 다음 비트부터 순서대로 첫번재, 두번째, 세번째 스위치를 제어받게 되는데, 각 비트의 값이 1인 경우는 데이타를 통과시키고, 0인 경우에는 데이타를 0으로 출력하게 된다. 첫번째 스위치단은 데이타를 그대로 통과시켜 주고, 두번째 스위치단은 데이타를 1비트 오른쪽으로 쉬프트시킨 데이타를 통과시키고, 세번째 스위치 단은 데이타를 2비트 오른쪽으로 쉬프트시킨 데이타를 통과시켜 제3가산기(24)로 출력한다. 레지스터(28)의 또 하나의 출력 통과선을 3비트 오른쪽으로 쉬프트된 데이타를 통과시켜 주는 라인으로 이 라인은 스위치의 제어없이 바로 제2가산기(24)로 출력하게 된다. 제2가산기(24)는 스위치(26)의 출력과 레지스터(28)의 출력 데이타를 입력하여 덧셈 연산을 수행하고, 그 결과를 제1배타적 논리합(22)으로 출력한다. 선택부(72)에서 출력되는 결과 중 MSB 부호 비트를 받아들이고, 제2가산기(24)의 출력을 받아들이는 제1배타적 논리합(22)은 만약 MSB 부호 비트가 0인 경우는 제3가산기(24)의 출력을 그대로 통과시키고, 1인 경우는 데이타를 반전하여 출력시켜 주는 기능을 수행한다. 즉 레지스터(28), 스위치(26), 제2가산기(24), 제1배타적 논리합(22) 및 선택부(72)는 수학식 1의 기능을 수행한다.The ROM 32 stores the step size value and outputs the value to the first register 64 and the register 28, respectively. The first register 64 can not accept data when the apparatus is performing a disassembly operation, and only the register 28 accepts data output from the ROM 32. The register 28 stores the step size table value and outputs the value to the switch 26 and the third adder 24. When the register 26 outputs data, the switch 26 receives the data and receives 3 bits excluding the MSB (sign bit) bits of the 4-bit ADPCM data output from the selector 72 as a control clock Each of the switch stages is controlled. The switch 26 receives the first, second, and third switches in sequence from the MSB next bit of the 4-bit ADPCM data. When the value of each bit is 1, the switch passes the data. When the bit is 0, . The first switch stage passes the data as it is, the second switch stage passes the data shifted to the right by one bit, the third switch stage passes the data shifted to the right by two bits, and the third adder 24, . The other output line of the register 28 is shifted to the right by 3 bits, and this line is output to the second adder 24 without the control of the switch. The second adder 24 inputs the output of the switch 26 and the output data of the register 28 to perform an addition operation and outputs the result to the first exclusive OR 22. The first exclusive OR operator 22 receives the MSB sign bit among the results output from the selector 72 and receives the output of the second adder 24. If the MSB sign bit is 0, And if it is 1, it performs the function of inverting and outputting the data. That is, the register 28, the switch 26, the second adder 24, the first exclusive OR circuit 22, and the selector 72 perform the functions of Equation (1).
제1배타적 논리합(22)의 출력은 차이값에 해당하는데, 이 값은 다시 제1가산기(14)로 입력되고, 제1레지스터 및 리미터(12)의 출력 데이타와 가산되며, 가산된 결과는 다시 제1레지스터 및 리미터(12)를 거쳐 출력된다. 그 출력은 16비트 2의 보수 포맷을 갖는 데이타로서 4비트 ADPCM 데이타를 분해한 결과의 출력 데이타가 된다. 이 때, 제3레지스터(102)는 논리곱(100)의 제어에 의해 제1레지스터 및 리미터(12)의 출력 결과를 래치하게 되고, 제3레지스터(102)는 최종의 결과인 제2새로운 샘플을 출력단자 OUT2를 통해 출력하게 된다. 논리곱(100)의 출력은 SE가 0인 경우, 정상적으로 출력하게 된다. 즉, 분해모드에서만 제3레지스터(102)는 동작하게 된다. 제1레지스터 및 리미터(12)의 출력은 이전 샘플로 작용하여 다음에 제1가산기(14)로 입력되는 차이값과 연산하게 된다. 즉, 제1가산기(14), 제1레지스터 및 리미터(12), 레지스터(102) 및 논리곱(100)의 기능은 다음과 같이 제2새로운 샘플을 구하고, 오버 플로우, 언더 플로우를 검사하는 기능을 수행한다.The output of the first exclusive OR circuit 22 corresponds to a difference value which is again input to the first adder 14 and added to the output data of the first register and the limiter 12, And outputted through the first register and the limiter 12. [ The output is data having a 16-bit 2's complement format, and is output data resulting from decomposing 4-bit ADPCM data. At this time, the third register 102 latches the output result of the first register and the limiter 12 under the control of the logical product 100, and the third register 102 latches the result of the second new sample Through the output terminal OUT2. The output of the logical product (100) is normally output when SE is zero. That is, the third register 102 operates only in the decomposition mode. The output of the first register and limiter 12 acts as the previous sample and is then operated on with the difference value input to the first adder 14. That is, the functions of the first adder 14, the first register and the limiter 12, the register 102, and the logical product 100 are as follows: a second new sample is obtained and a function of checking overflow and underflow .
제2새로운 샘플 = 이전의 제2새로운 샘플 + 차이값Second new sample = previous second new sample + difference value
선택부(72)의 4 비트 ADPCM 데이타는 인덱스 디코더(38)로 입력되고, 이 입력된 값의 절대값에 의해 16개의 인덱스 테이블값중 하나가 선택되고, 선택된 값은 제3가산기(36)로 입력된다. 제2레지스터 및 리미터(34)에서 출력되는 값은 다시 궤환되어 제3가산기(36)로 입력되어 새로 출력되는 인덱스 값과 제3가산기(36)에서 연산되어 그 결과가 출력된다. 제3가산기(36)의 출력은 제2레지스터 및 리미터(34)로 입력되어 저장되며, 이전 인덱스 값으로 다음 입력되어 지는 새로운 인덱스 값에 더해지면 제3가산기(36)에서 연산된 값이 스텝 사이즈 테이블의 크기인 0∼88 범위 보다 크거나 작은 경우를 검사하는 리미터 기능도 제2레지스터 및 리미터(34)에서 처리하여 그 최종 결과를 스텝 사이즈 테이블값을 저장하고 있는 롬(32)에 출력하게 된다. 그 값을 입력한 롬(32)은 89개의 스텝 사이즈 테이블 값중 선택된 하나의 데이타를 레지스터(28)로 출력시키고, 이 롬(32) 출력 데이타는 새로운 스텝 사이즈의 값으로 작용하게 된다. 즉, 선택부(72), 인덱스 디코더(38), 제3가산기(36), 제2레지스터 및 리미터(34) 및 롬(32)의 기능은 다음과 같은 인덱스를 구하는 기능을 수행한다.The 4-bit ADPCM data of the selector 72 is input to the index decoder 38. One of the 16 index table values is selected by the absolute value of the input value, and the selected value is input to the third adder 36 . The values output from the second register and the limiter 34 are fed back to the third adder 36 and the new index value and the third adder 36 are operated to output the result. The output of the third adder 36 is input to and stored in the second register and the limiter 34. When added to a new index value that is input next to the previous index value, The limiter function for checking whether the size of the table is larger or smaller than the range of 0 to 88 is also processed by the second register and limiter 34 and the final result is output to the ROM 32 storing the step size table value . The ROM 32 to which the value is input outputs one selected data out of the 89 step size table values to the register 28 and the output data of the ROM 32 serves as the value of the new step size. That is, the functions of the selector 72, the index decoder 38, the third adder 36, the second register, the limiter 34, and the ROM 32 function to obtain the following indexes.
인덱스 = 이전 인덱스 + 제2원시 샘플값에 대응하는 인덱스 테이블상의 위치의 값Index = value of position on index table corresponding to previous index + second raw sample value
상술한 ADPCM 시스템은 DATWG에서 공개한 알고리즘을 기본으로 하고 있으며, 주요 사용 샘플링율로서 8.0KHz, 11.025KHz, 22.05KHz, 44.1KHz의 4가지를 주로 사용하게 된다. 가장 빠른 샘플링율로서 44.1KHz가 사용되는 디지탈 오디오 기기에 주로 이용하게 되는데, 일반적인 디지탈 오디오 기기에 사용하는 마스터 클럭을 이용하고(주로, 16.9344MHz이용), 시간 분할 방식을 적절히 이용하여 두가지의 기능을 하나의 하드웨어에 의해 실현하였다.The above-mentioned ADPCM system is based on the algorithm disclosed in DATWG, and mainly uses four main sampling rates of 8.0KHz, 11.025KHz, 22.05KHz, and 44.1KHz. As the fastest sampling rate, it is mainly used for digital audio equipment that uses 44.1KHz. By using the master clock used in general digital audio equipment (mainly using 16.9344MHz) and using the time division method appropriately, It is realized by one hardware.
이상에서 설명한 바와 같이, 본 발명에 의한 ADPCM 압축/분해 장치 및 방법은 시간 분할 방식을 이용하여 ADPCM 압축/분해 기능을 하나의 하드웨어에 의해 실현하기 때문에 시스템 운영면에서 효율적이고, 시스템의 크기가 축소되는 효과가 있다.INDUSTRIAL APPLICABILITY As described above, the ADPCM compression / decompression apparatus and method according to the present invention realize the ADPCM compression / decompression function using a single hardware by using a time division method, .
Claims (7)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960045125A KR0183935B1 (en) | 1996-10-10 | 1996-10-10 | Adpcm compression/decompression apparatus and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960045125A KR0183935B1 (en) | 1996-10-10 | 1996-10-10 | Adpcm compression/decompression apparatus and method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980026618A KR19980026618A (en) | 1998-07-15 |
KR0183935B1 true KR0183935B1 (en) | 1999-04-15 |
Family
ID=19476990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960045125A KR0183935B1 (en) | 1996-10-10 | 1996-10-10 | Adpcm compression/decompression apparatus and method |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR0183935B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100938237B1 (en) * | 2007-12-21 | 2010-01-22 | 주식회사 리홈 | Electric Pressure Cooker Lid Having Spherical Shape Weight |
-
1996
- 1996-10-10 KR KR1019960045125A patent/KR0183935B1/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19980026618A (en) | 1998-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2053749B1 (en) | Encoding method and apparatus, and program | |
EP0469841A1 (en) | Data round-off device | |
US7408481B2 (en) | Information encoding method, decoding method, common multiplier estimating method, and apparatus, program, and recording medium using these methods | |
KR100498457B1 (en) | The improved method of compressing look up table for reducing memory and non-linear function generating apparatus having look up table compressed using the method and the non-linear function generating method | |
KR100241076B1 (en) | Floating- point multiply-and-accumulate unit with classes for alignment and normalization | |
US5181184A (en) | Apparatus for multiplying real-time 2's complement code in a digital signal processing system and a method for the same | |
US6317063B1 (en) | Inverse quantization using table with reduced size | |
KR0183935B1 (en) | Adpcm compression/decompression apparatus and method | |
KR20010042988A (en) | Method and apparatus for decoding an audio signal | |
US4924421A (en) | Priority encoding system | |
JPH07283737A (en) | Filter method of digital value array and circuit device | |
GB1597468A (en) | Conversion between linear pcm representation and compressed pcm | |
EP0404535A2 (en) | Bandwidth compression device | |
KR100241077B1 (en) | Calculating selected sign 3 expression in a single instruction cycle | |
KR100275498B1 (en) | Context based arithmetic encoder using predictor | |
KR0182055B1 (en) | Adpcm decoder | |
KR0162320B1 (en) | Fir filter for vlsi | |
KR19980042808A (en) | Signal processor | |
KR100198781B1 (en) | Quantization apparatus for low transmission rated video signal compression | |
KR930008434B1 (en) | Code output and data multiplexing method | |
KR0165498B1 (en) | Degrouping method and device for mpeg1 audio decoder | |
JP3008668B2 (en) | ADPCM decoder | |
KR0183786B1 (en) | Data compression method and apparatus thereof | |
JPH05167456A (en) | Arithmetic operation circuit | |
JPS5833754A (en) | Digital multiplication circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20061128 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |