KR20120057714A - Cordic processor and method for cordic processing using the same - Google Patents

Cordic processor and method for cordic processing using the same Download PDF

Info

Publication number
KR20120057714A
KR20120057714A KR1020100081375A KR20100081375A KR20120057714A KR 20120057714 A KR20120057714 A KR 20120057714A KR 1020100081375 A KR1020100081375 A KR 1020100081375A KR 20100081375 A KR20100081375 A KR 20100081375A KR 20120057714 A KR20120057714 A KR 20120057714A
Authority
KR
South Korea
Prior art keywords
input data
vectoring
output
value
data
Prior art date
Application number
KR1020100081375A
Other languages
Korean (ko)
Other versions
KR101158548B1 (en
Inventor
박종선
이민우
Original Assignee
고려대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 고려대학교 산학협력단 filed Critical 고려대학교 산학협력단
Priority to KR1020100081375A priority Critical patent/KR101158548B1/en
Publication of KR20120057714A publication Critical patent/KR20120057714A/en
Application granted granted Critical
Publication of KR101158548B1 publication Critical patent/KR101158548B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4806Computations with complex numbers
    • G06F7/4818Computations with complex numbers using coordinate rotation digital computer [CORDIC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

PURPOSE: A cordic processor and a cordic processing method using the same are provided to increase the processing speed of a cordic apparatus by performing each operation of a processor which performs a vectoring process and a rotation process. CONSTITUTION: N processors(510, 520, 530, 540) performs each iteration of input data. An additional processor(570) performs shift process and complement process of the input data. N-1 processing units perform vectoring process or vectoring calculation. The last processing unit performs rotation process or rotation calculation.

Description

코딕 프로세서 및 이를 이용한 코딕 처리 방법{CORDIC PROCESSOR AND METHOD FOR CORDIC PROCESSING USING THE SAME}CORDIC PROCESSOR AND METHOD FOR CORDIC PROCESSING USING THE SAME}

본 발명은 삼각 함수 연산에 사용될 수 있는 코딕 프로세서 및 이를 이용한 코딕 프로세싱 방법에 관한 것이다.The present invention relates to a Codic processor that can be used for trigonometric function operations and a codic processing method using the same.

최근 들어, 각종 디지털 기기의 발달에 따라, 디지털 신호 처리 기술에 대한 연구가 활발하게 이루어지고 있다. 디지털 신호 처리 기술은 음성 신호 및 영상 신호를 다루는 각종 기기에 있어 그 응용 분야가 매우 크다. 디지털 신호 처리 기술의 분야로서는 디지털 무선 통신 분야나 적응 신호 처리, 임베디드 시스템, 로봇 공학, 애니메이션 등 광범위한 분야가 포함된다. Recently, with the development of various digital devices, research on digital signal processing technology has been actively conducted. Digital signal processing technology has a large application field in various devices that handle audio signals and video signals. The fields of digital signal processing technology include the fields of digital wireless communication, adaptive signal processing, embedded systems, robotics, and animation.

이러한 디지털 신호 처리 기술에 매우 광범위하게 사용되고 있는 코딕(CORDIC) 알고리즘은 디지털 신호 처리 기술의 다양한 분야에서 삼각함수의 계산을 위해 사용되는 알고리즘이다. 코딕 알고리즘은 동작에 따라 크게 두 가지 방식으로 분류될 수 있다. 먼저, 주어진 입력 벡터에 대해서 벡터의 크기와 편각을 산출하는 방식을 벡터링 방식이라 한다. 반면 주어진 입력 편각에 대해서 싸인 값과 코사인 값을 산출하는 방식을 로테이션 방식이라 한다. The CORDIC algorithm, which is widely used in such a digital signal processing technology, is an algorithm used for calculating trigonometric functions in various fields of digital signal processing technology. Cordic algorithms can be classified into two types according to their operation. First, a method of calculating a magnitude and a declination of a vector with respect to a given input vector is called a vectoring method. On the other hand, the method of calculating the sign value and the cosine value for a given input declination is called a rotation method.

1959 년 Jack. E. Volder 에 의해 제안된 이후로 코딕 알고리즘은 삼각함수의 계산에 널리 사용되어 왔다. 코딕 알고리즘은 덧셈과 쉬프트 연산만으로 삼각함수를 계산할 수 있어서 하드웨어가 차지하는 면적을 작게할 수 있다는 장점을 가지고 있다. 하지만 여러 단계 (iteration)의 계산들로 이루어져 있고, 다음 단계의 결과를 수행하기 위해서는 이전 단계 결과에 의존적인 특성으로 인해 속도를 개선하는 데 한계가 있었다. Jack in 1959. Since proposed by E. Volder, the Codic algorithm has been widely used in the calculation of trigonometric functions. The codec algorithm has the advantage that the area occupied by hardware can be reduced because trigonometric functions can be calculated only by addition and shift operations. However, it is composed of several iterations, and there is a limit to speed improvement due to the characteristics that depend on the result of the previous step in order to perform the result of the next step.

이후에 제안된 룩어헤드 코딕(Lookahead CORDIC) 알고리즘은 그러한 이전 단계의 결과 의존성을 해결하였다. 룩어헤드 코딕 알고리즘에서는 로테이션 모드의 경우 입력각에 대한 비교연산을 수행하고, 룩업 테이블을 이용하여 해당하는 회전방향 결정 사인비트(sign bit)묶음을 찾아내어 적용한다. 그러나 이 구조는 로테이션 모드에 국한된다는 단점이 있고, 또한 해당 룩업 테이블값을 찾기 위한 입력각의 비교연산에서 많은 시간을 소요하게 된다.Later, the proposed Lookahead CORDIC algorithm solved the result dependency of the previous step. In the rotation mode, the look-ahead Coddick algorithm performs a comparison operation on the input angle, and finds and applies a set of rotation direction decision bit bits using a lookup table. However, this structure has a disadvantage in that it is limited to the rotation mode, and it also takes a lot of time to compare the input angles to find the lookup table value.

본 발명에서는 로테이션 모드뿐만 아니라 벡터링 모드에도 적용시킬 수 있는 효과적인 고성능 코딕 구조를 제안하였다. In the present invention, an effective high performance codec structure that can be applied to not only the rotation mode but also the vectoring mode is proposed.

본 발명의 일부 실시예는 이전 단계의 결과 의존성을 최소화함과 동시에, 벡터링 처리와 로테이션 처리를 동시에 수행할 수 있는 코딕 장치 및 이를 이용한 코딕 연산 방법을 제공한다. Some embodiments of the present invention provide a Codic device and a Codic operation method using the same that can simultaneously perform a vectoring process and a rotation process while minimizing the result dependency of the previous step.

상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 코딕 처리를 수행하는 프로세서는, 입력 데이터, 상기 입력 데이터에 대한 보수(補數), 상기 입력 데이터의 쉬프트 값 및 상기 입력 데이터의 쉬프트 값에 대한 보수 중 하나 이상에 대하여 벡터링 처리를 각각 수행하는 N개(N은 자연수)의 벡터링 처리부 및 로테이션 입력 데이터, 로테이션 입력 데이터에 대한 보수, 로테이션 입력 데이터의 쉬프트 값 및 상기 로테이션 입력 데이터의 쉬프트 값에 대한 보수에 대하여 로테이션 처리를 수행하여 상기 입력 데이터에 대한 삼각함수 출력값을 출력하는 로테이션 처리부를 포함하되, 상기 벡터링 처리부 및 로테이션 처리부는 병렬 접속되어 각각의 벡터링 처리 또는 로테이션 처리를 수행하고, 상기 로테이션 처리부는 상기 입력 데이터의 부호값 및 상기 N개의 벡터링 처리부의 출력 데이터의 부호값에 기초하여 상기 로테이션 처리의 출력값 중 상기 삼각함수 출력값을 선택하여 출력한다.As a technical means for achieving the above-described technical problem, the processor for performing the codic processing according to the first aspect of the present invention, the input data, the compensation for the input data, the shift value of the input data and the N vectoring processing units and rotation input data (N is a natural number) for performing one or more vectoring processes for one or more of the complements of the shift values of the input data, the complement of the rotation input data, the shift value of the rotation input data, and the rotation And a rotation processing unit for performing a rotation process on the complement of the shift value of the input data and outputting a trigonometric function output value for the input data, wherein the vectoring processing unit and the rotation processing unit are connected in parallel to each vectoring process or the rotation process. The rotation processing unit On the basis of the sign value of the input data and the sign value of the output data of the N vectoring processing of the output value of the rotation processing, and outputs the selected output to the trigonometric function.

또한, 본 발명의 제 2 측면에 따른 코딕 처리를 수행하는 프로세서는, 입력 데이터, 상기 입력 데이터에 대한 보수(補數), 상기 입력 데이터의 쉬프트 값 및 상기 입력 데이터의 쉬프트 값에 대한 보수 중 하나 이상에 대하여 벡터링 처리를 각각 수행하는 제 1 벡터링 처리부 내지 제 N(N은 자연수) 벡터링 처리부 및 상기 벡터링 처리부 중 제 1 벡터링 처리부 내지 제 N-1 벡터링 처리부에서 출력된 데이터에 해당하는 편각 데이터를 독출하여 출력하는 편각 산출부를 포함하되, 상기 각 벡터링 처리부는 병렬 접속되어 각각의 벡터링 처리를 수행하고, 상기 제 N 벡터링 처리부는 상기 입력 데이터의 부호값 및 제 1 벡터링 처리부 내지 제 N-1 벡터링 처리부의 출력 데이터의 부호값에 기초하여 상기 벡터링 처리의 출력값 중 어느 하나를 선택하여 출력한다.In addition, the processor for performing the codic processing according to the second aspect of the present invention, one of the input data, the complement of the input data, the shift value of the input data and the complement of the shift value of the input data Read declination data corresponding to data output from the first vectoring processing unit to the Nth vectoring process (N is a natural number) and the first vectoring processing unit to the N-1 vectoring processing unit among the vectoring processing units. And a declination calculator for outputting the data, wherein the vectoring processing units are connected in parallel to perform respective vectoring processes, and the N-th vectoring processing unit is a code value of the input data and the first vectoring processing unit to the N-1 vectoring processing unit. Any one of the output values of the vectoring process is selected and output based on the sign value of the output data.

또한, 본 발명의 제 3 측면에 따른 코딕 프로세싱 방법은 병렬 접속된 로테이션 처리부 및 복수의 벡터링 처리부를 포함하는 코딕 프로세서를 이용한 것으로, 입력 데이터를 제 1 벡터링 처리부로 전달함과 동시에, 입력 데이터 중 Y 좌표의 부호값을 나머지 벡터링 처리부 및 로테이션 처리부로 전달하는 단계, 상기 입력 데이터 및 상기 로테이션 입력 데이터에 대한 보수 연산, 상기 입력 데이터 및 상기 로테이션 입력 데이터에 대한 쉬프트 연산, 및 상기 쉬프트 연산을 통해 산출된 쉬프트 값에 대한 보수 연산을 수행하고, 각 연산의 결과값을 상기 나머지 벡터링 처리부 또는 상기 로테이션 처리부로 전달하는 단계 및 상기 제 1 벡터링 처리부에서 상기 입력 데이터에 기초하여 벡터링 처리를 수행함과 동시에, 상기 전달된 연산의 결과값 중 하나 이상에 기초하여 상기 나머지 벡터링 처리부에서 벡터링 처리를 수행하는 단계 및 상기 제 1 벡터링 처리부에서 상기 입력 데이터에 기초하여 벡터링 처리를 수행함과 동시에, 상기 전달된 연산의 결과값 중 하나 이상에 기초하여 상기 로테이션 처리부에서 로테이션 처리를 수행하는 단계를 포함하되, 상기 로테이션 처리를 수행하는 단계는 상기 입력 데이터의 부호값 및 상기 복수의 벡터링 처리부의 출력 데이터의 부호값에 기초하여 복수의 로테이션 처리의 출력값 중 삼각함수 출력값을 선택하여 출력한다.In addition, the codic processing method according to the third aspect of the present invention uses a codic processor including a parallel processing rotation processor and a plurality of vectoring processors, and transmits the input data to the first vectoring processor and Y of the input data. Passing the code value of the coordinates to the remaining vectoring processing unit and the rotation processing unit, a shift operation on the input data and the rotation input data, a shift operation on the input data and the rotation input data, and the shift operation Performing a complementary operation on the shift value, transferring a result value of each operation to the remaining vectoring processing unit or the rotation processing unit, and performing the vectoring process based on the input data in the first vectoring processing unit; One or more of the results of the computed operation Performing a vectoring process in the remaining vectoring processor based on the vector and a vectoring process in the first vectoring processor based on the input data, and based on at least one of the result values of the transferred operation. And performing a rotation process, wherein the performing of the rotation process includes a trigonometric function output value among the output values of the plurality of rotation processes based on the sign values of the input data and the sign values of the output data of the vectoring processor. Select to print.

전술한 본 발명의 과제 해결 수단에 의하면, 룩어헤드 알고리름을 사용함으로써 이전 단계 결과 의존성을 해소할 수 있다. 또한, 사인 비트를 산출함에 있어서, 벡터링 처리 및 로테이션 처리를 수행하는 처리부의 동작을 병렬적으로 거의 동시에 각 연산을 수행하도록 하여, 코딕 장치의 처리 속도를 향상하였다. According to the above-described problem solving means of the present invention, by using the look-ahead algorithm, it is possible to resolve the previous step result dependency. Further, in calculating the sine bit, the operations of the processing unit performing the vectoring process and the rotation process are performed in parallel at substantially the same time, thereby improving the processing speed of the Codic device.

실험 결과에 따르면, 본 발명의 코딕 장치가 기본 코딕 장치 및 컴팩트 코딕 장치에 비하여, 연산 시간이 최소임을 확인할 수 있다. 특히, 비트폭의 증가에도 불구하고 연산 시간의 증가율이 최소임을 확인할 수 있으며, 비트폭이 24 비트인 경우 컴팩트 코딕 구조와 비교하여 28.1%의 성능 향상을 달성할 수 있음을 확인할 수 있다. According to the experimental results, it can be seen that the codec device of the present invention has a minimum computation time compared to the basic codec device and the compact codec device. In particular, it can be seen that the increase rate of operation time is minimal despite the increase in the bit width, and when the bit width is 24 bits, the performance improvement of 28.1% can be achieved compared to the compact cordic structure.

도 1은 종래의 코딕 알고리즘을 설명하기 위한 도면이다.
도 2는 코딕 알고리즘에서 벡터링 모드의 동작을 설명하기 위한 도면이다.
도 3은 코딕 알고리즘에서 로테이션 모드의 동작을 설명하기 위한 도면이다.
도 4는 룩어헤드 코딕 구조의 일 실시예를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 코딕 장치를 도시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 코딕 장치를 도시한 도면이다.
도 7a 및 7b는 본 발명의 일 실시예에 따른 코딕 장치의 세부 구성을 도시한 도면이다.
도 8은 본 발명의 다른 실시예에 따른 코딕 장치를 도시한 도면이다.
도 9는 코딕 장치에서 각 이터레이션 단계별로 처리되는 수학식을 도시한 도면이다.
도 10은 본 발명의 일 실시예에 따른 코딕 장치에서 수행되는 코딕 연산 처리 방법을 도시한 순서도이다.
도 11은 본 발명의 일 실시예에 따른 코딕 장치와 종래의 다른 코딕 장치의 연산 시간을 비교한 실험데이터를 도시한다.
1 is a diagram for explaining a conventional Codic algorithm.
2 is a view for explaining the operation of the vectoring mode in the Codic algorithm.
3 is a view for explaining the operation of the rotation mode in the Codic algorithm.
FIG. 4 is a view for explaining an embodiment of a lookahead codic structure.
5 is a view showing a cordic apparatus according to an embodiment of the present invention.
6 is a view showing a cordic apparatus according to an embodiment of the present invention.
7A and 7B are diagrams showing the detailed configuration of the Codic device according to an embodiment of the present invention.
8 is a view showing a cordic device according to another embodiment of the present invention.
FIG. 9 is a diagram illustrating equations processed in each iteration step in the Codic device.
10 is a flowchart illustrating a codic operation processing method performed in a codic device according to an embodiment of the present invention.
FIG. 11 illustrates experimental data comparing operation time of a cordial apparatus and another conventional cordic apparatus according to an embodiment of the present invention.

아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and like reference numerals designate like parts throughout the specification.

명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.Throughout the specification, when a part is referred to as being "connected" to another part, it includes not only "directly connected" but also "electrically connected" with another part in between . In addition, when a part is said to "include" a certain component, which means that it may further include other components, except to exclude other components unless otherwise stated.

도 1은 종래의 코딕 알고리즘을 설명하기 위한 도면이다.1 is a diagram for explaining a conventional Codic algorithm.

코딕 장치(100)는 벡터링 부(110)와 로테이션 부(120)를 포함한다. 벡터링 부(110)는 입력 벡터(X, Y)로부터 입력 벡터의 편각(θ)과 크기를 산출하며, 로테이션 부(120)는 벡터링 부(110)에서 산출한 편각에 대하여 사인 값(sin θ)과 코사인 값(cos θ)을 산출한다.The codec device 100 includes a vectoring unit 110 and a rotation unit 120. The vectoring unit 110 calculates the declination angle and magnitude of the input vector from the input vectors X and Y, and the rotation unit 120 has a sinusoidal value sin θ with respect to the declination calculated by the vectoring unit 110. And the cosine value (cos θ).

코딕 장치(100)에서 사용하는 알고리즘은 하기의 수학식 1로 나타낼 수 있다.The algorithm used by the cordic apparatus 100 may be represented by Equation 1 below.

[수학식 1][Equation 1]

Figure pat00001
Figure pat00001

벡터링 부(110)는 주어진 입력 벡터를 미리 설정된 조건에 따라 소정 각도로 회전하는 동작을 반복한다.The vectoring unit 110 repeats the operation of rotating the given input vector at a predetermined angle according to a preset condition.

도 2는 코딕 알고리즘에서 벡터링 모드의 동작을 설명하기 위한 도면이다.2 is a view for explaining the operation of the vectoring mode in the Codic algorithm.

벡터링 모드에서는 입력벡터의 Y 성분이 양수인 경우, 즉 MSB=0 인 경우, 사인 비트(σ)를 ‘-1’로 설정하고, 입력벡터를 시계 방향으로 소정 각도 회전시킨다. 만약, 입력벡터의 Y 성분이 음수인 경우, 즉 MSB=1 인 경우, 사인 비트(σ)를 ‘1’로 설정하고, 입력벡터를 반시계 방향으로 소정 각도 회전시킨다.In the vectoring mode, when the Y component of the input vector is positive, that is, when MSB = 0, the sine bit is set to '-1' and the input vector is rotated by a predetermined angle clockwise. If the Y component of the input vector is negative, that is, MSB = 1, the sine bit σ is set to '1' and the input vector is rotated a predetermined angle in the counterclockwise direction.

도시된 바와 같이, 예를 들어, 입력 벡터가 (1, 4)인 경우, Y 성분이 양수이므로, MSB=0이고, 사인비트(σ1)는 ‘-1’로 설정되며, 입력벡터를 시계방향으로 90°회전시킨다. 그에 따라, 산출된 제 1 벡터는 (4, -1)이 된다. As shown, for example, when the input vector is (1, 4), since the Y component is positive, MSB = 0, the sine bit (σ1) is set to '-1', and the input vector is clockwise. Rotate 90 °. Accordingly, the calculated first vector is (4, -1).

다음으로, 제 1 벡터의 Y 성분은 음수이므로, MSB=1이고, 사인비트(σ2)는 ‘1’로 설정되며, 시계방향으로 45°회전하게 된다. 이와 같은 단계를 Y가 0이 될 때까지 반복한 상태의 X좌표 값에 미리 설정된 팩터를 곱하게 되면, 입력벡터의 크기가 산출된다. 또한, 각 단계별로 회전한 각도와 사인비트의 곱을 합산하면, 입력 벡터의 편각(θ)을 산출할 수 있다.Next, since the Y component of the first vector is negative, MSB = 1, and the sine bit sigma 2 is set to '1' and rotates 45 ° clockwise. When the above-described step is multiplied by a preset factor to the X-coordinate value in a repeated state until Y becomes 0, the size of the input vector is calculated. In addition, by adding up the product of the angle rotated in each step and the sine bit, it is possible to calculate the declination angle θ of the input vector.

도 3은 코딕 알고리즘에서 로테이션 모드의 동작을 설명하기 위한 도면이다.3 is a view for explaining the operation of the rotation mode in the Codic algorithm.

초기 벡터를 (1,0)으로 설정한 상태에서, 입력된 편각(θ)이 누적된 각도(Z)보다 큰 경우에는 사인비트(σ1)는 ‘-1’로 설정되며, 초기 벡터를 반시계 방향으로 소정 각도 회전시킨다. 만약, 입력된 편각(θ)이 누적된 각도(Z)보다 작은 경우에는 사인비트(σ1)는 ‘1’로 설정되며, 초기 벡터를 시계 방향으로 소정 각도 회전시킨다.With the initial vector set to (1,0), if the input declination (θ) is greater than the accumulated angle (Z), the sine bit (σ1) is set to '-1' and the initial vector is counterclockwise. Direction by a predetermined angle. If the input declination θ is smaller than the accumulated angle Z, the sine bit σ 1 is set to '1', and the initial vector is rotated by a predetermined angle clockwise.

도시된 바와 같이, 예를 들어, 입력 편각(θ)이 70°인 경우, 누적된 각도(Z)가 없는 상태이므로, 사인비트(σ1)는 ‘-1’로 설정되며, 초기 벡터를 반시계 방향으로 90°회전시킨다. 다음으로, 누적된 각도(Z)가 70°보다 큰 상태이므로, 사인비트(σ1)는 ‘1’로 설정되며, 초기 벡터를 시계 방향으로 45°회전시킨다. 이와 같은 동작을 반복하여, 입력된 편각(θ)과 누적된 각도(Z)가 동일해지는 지점에서 X좌표와 Y좌표에 미리 설정된 팩터를 곱하게 되면, 입력된 편각(θ)에 대한 사인 값과 코사인 값을 산출할 수 있다.As shown, for example, when the input declination θ is 70 °, since there is no accumulated angle Z, the sine bit σ1 is set to '-1', and the initial vector is counterclockwise. Rotate 90 ° in the direction. Next, since the accumulated angle Z is larger than 70 °, the sine bit sigma 1 is set to '1' and rotates the initial vector 45 ° clockwise. By repeating the above operation, multiplying the X and Y coordinates by a preset factor at a point where the inputted declination angle θ is equal to the accumulated angle Z, the sine value of the input declination angle θ and The cosine value can be calculated.

그러나, 이러한 종래의 코딕 알고리즘을 사용할 경우 다음 단계의 결과를 계산하려면, 이전 단계의 결과가 먼저 계산되어야 회전방향(σ, 사인비트)을 알 수 있다는 의존성 때문에 속도 개선에 한계가 있다. However, in order to calculate the result of the next step using this conventional Codic algorithm, the speed improvement is limited due to the dependency that the result of the previous step must be calculated first to know the direction of rotation (σ, sign bit).

이러한 문제를 해결하기 위해 제안된 룩어헤드 코딕(lookahead CORDIC) 알고리즘에서는 로테이션 모드의 경우 입력각에 대한 비교연산을 수행하고, 룩업 테이블을 이용하여 해당하는 회전방향 결정 사인비트(sign bit)묶음을 찾아내어 적용한다. In order to solve this problem, the proposed lookahead CORDIC algorithm performs a comparison operation on the input angle in the rotation mode and finds a corresponding set of direction decision sign bits using a lookup table. Take out and apply.

룩어헤드 코딕 구조는 이전 반복(iteration) 단계의 수식을 다음 단계의 수식에 대입함으로써 최종 벡터회전의 결과를 입력 벡터에 대한 수식으로 나타낸 룩어헤드 코딕 알고리즘을 적용한다. 수학식 2는 4단계 룩어헤드 벡터 회전 행렬식을 나타낸 것이다. The lookahead codec structure applies a lookahead codec algorithm that expresses the result of the final vector rotation as an equation for the input vector by substituting the equation of the previous iteration step into the equation of the next step. Equation 2 shows a four-step lookahead vector rotation determinant.

[수학식 2][Equation 2]

Figure pat00002
Figure pat00002

또한, 도 4는 룩어헤드 코딕 구조의 일 실시예를 설명하기 위한 도면이다.4 is a view for explaining an embodiment of the look-ahead codic structure.

도시된 바와 같이, 총 16 종류의 사인비트 묶음((1,1,1,1)~(0,0,0,0))에 대하여 각각 상이한 각도가 설정됨을 확인할 수 있다. 그러나 이 구조는 로테이션 모드에 국한된다는 단점이 있고, 또한 해당 룩업 테이블값을 찾기 위한 입력 각도의 비교연산에서 많은 시간을 소요하게 된다.As shown, it can be seen that different angles are set for a total of 16 kinds of sign bit bundles ((1,1,1,1) to (0,0,0,0)). However, this structure has a disadvantage in that it is limited to the rotation mode, and it also takes a lot of time to compare the input angles to find the lookup table value.

한편, 컴팩트 코딕(compact CORDIC) 구조에서는 벡터링과 로테이션 모드가 각각의 반복(iteration) 단계에서 회전 방향 사인 비트를 공유하는 방법을 사용한다. 따라서, 편각(θ)을 별도로 산출하는 과정 없이, 사인 값(sin θ)과 코사인 값(cos θ)을 바로 산출할 수 있다. 그러나, 컴팩트 코딕 알고리즘 역시 기본 코딕 알고리즘을 사용하기 때문에, 이전 단계의 결과 의존성 문제가 발생한다.Meanwhile, the compact CORDIC structure uses a method in which the vectoring and rotation modes share rotation direction sine bits in each iteration step. Therefore, the sine value sin θ and the cosine value cos θ may be directly calculated without separately calculating the declination angle θ. However, since the compact codec algorithm also uses the basic codec algorithm, the result dependency problem of the previous step arises.

도 5는 본 발명의 일 실시예에 따른 코딕 장치를 도시한 도면이고, 도 9는 코딕 장치에서 각 이터레이션 단계별로 처리되는 수학식을 도시한 도면이다.FIG. 5 is a diagram illustrating a codic device according to an embodiment of the present invention, and FIG. 9 is a diagram illustrating equations processed by each iteration step in the codic device.

코딕 장치(500)는 입력 데이터(X0, Y0)에 대하여 각각의 이터레이션을 수행하는 n 개(n은 자연수)의 처리부(510, 520, 530, 540), 입력 데이터에 대한 쉬프트 처리 및 보수(補數, complement) 처리를 수행하는 부가 처리부(570)를 포함한다. 이중 전단의 n-1개의 처리부(510, 520, 530)는 벡터링 처리 또는 벡터링 연산을 수행하는 벡터링 처리부로서 동작하고, 최종의 처리부(540)는 로테이션 처리 또는 로테이션 연산을 수행하는 로테이션 처리부로서 동작한다.The codec device 500 includes n processing units 510, 520, 530, and 540 which perform respective iterations on the input data X0 and Y0, and shift processing and repair of the input data ( 부가, an additional processing unit 570 for performing complementary processing. The n-1 processing units 510, 520, and 530 of the double front end operate as a vectoring processing unit that performs a vectoring process or a vectoring operation, and the final processing unit 540 operates as a rotation processing unit that performs a rotation process or a rotation operation. .

먼저, 제 1 처리부(510)는 도 9의 제 1 이터레이션을 수행한다. 즉, 제 1 처리부(510)의 출력 데이터(Y1)는

Figure pat00003
가 된다. 이때, 제 1 사인 비트(σ1)는 입력 데이터(Y0)의 입력 부호값(MSB0)에 의하여 결정된다. 즉, 입력 부호값(MSB0)이 0인 경우, 사인 비트(σ1)를 ‘-1’로 설정하고, 입력 부호값(MSB0)이 1인 경우, 제 1 사인 비트(σ1)를 ‘1’로 설정한다. 한편, 출력 데이터(Y1)의 부호를 나타내는 제 1 부호값(MSB1)은 이후 단계의 처리부(520, 530, 540)로 전달된다.First, the first processor 510 performs the first iteration of FIG. 9. That is, the output data Y1 of the first processing unit 510 is
Figure pat00003
Becomes At this time, the first sine bit sigma 1 is determined by the input code value MSB0 of the input data Y0. That is, when the input code value MSB0 is 0, the sine bit σ1 is set to '-1', and when the input code value MSB0 is 1, the first sine bit σ1 is set to '1'. Set it. On the other hand, the first code value MSB1 indicating the sign of the output data Y1 is transferred to the processing units 520, 530, and 540 in a later step.

부가 처리부(570)는 입력 데이터, 로테이션 입력 데이터에 대한 보수 연산, 입력 데이터 및 로테이션 입력 데이터에 대한 쉬프트 연산, 상기 쉬프트 연산을 통해 산출된 쉬프트 값에 대한 보수 연산을 각각 수행한다. 상세 구성은 추후 설명하기로 한다.The additional processor 570 performs the input data, the complement operation on the rotation input data, the shift operation on the input data and the rotation input data, and the complement operation on the shift value calculated through the shift operation. The detailed configuration will be described later.

제 2 처리부(520)는 도 9의 제 2 이터레이션을 수행한다. 이를 위해, 입력데이터와 부가 처리부(570)에서 보수 처리된 입력 데이터를 합산하는 가산부(522) 및 가산부(522)에서 출력되는 복수의 데이터 중 어느 하나를 선택하여 출력하는 데이터 선택부(524)를 포함한다.The second processor 520 performs the second iteration of FIG. 9. To this end, the data selector 524 which selects and outputs any one of an adder 522 for adding up the input data and the input data processed by the additional processor 570 and a plurality of data output from the adder 522. ).

제 2 이터레이션에서 제 2 처리부(520)의 출력 데이터(Y2)는

Figure pat00004
가 되므로, 이러한 연산을 수행하기 위해, 입력 데이터(X0, Y0)에 대한 보수를 사용한다. 한편, 제 1 사인비트(σ1)와 제 2 사인비트(σ2)의 값에 따라 총 4 가지의 출력값이 출력될 수 있으므로, 가산부(522)는 각 경우의 출력값을 산출할 수 있는 총 4개의 가산기를 포함하도록 구성된다.In the second iteration, the output data Y2 of the second processor 520 is
Figure pat00004
In order to perform this operation, the complement of the input data (X0, Y0) is used. On the other hand, since a total of four output values can be output according to the values of the first sine bit sigma 1 and the second sine bit sigma 2, the adder 522 can calculate the total of four output values for each case. It is configured to include an adder.

데이터 선택부(524)는 입력 부호값(MSB0) 및 제 1 부호값(MSB1)에 따라 4개 가산기의 출력값 중 특정 데이터를 선택하여 출력하는 멀티 플렉서로 구성된다. 또한, 데이터 선택부(524)에 의하여 선택된 출력 데이터(Y2)의 부호를 나타내는 제 2 부호값(MSB2)은 이후 단계의 처리부(530, 540)로 전달된다. 그리고, 이후 단계에서 사용될 제 3 사인 비트(σ3)는 출력 데이터(Y2)의 제 2 부호값(MSB2)에 의하여 결정된다. 즉, 제 2 부호값(MSB2)이 0인 경우, 제 3 사인 비트(σ3)를 ‘-1’로 설정하고, 제 2 부호값(MSB2)이 1인 경우, 제 3 사인 비트(σ3)를 ‘1’로 설정한다.The data selector 524 is configured of a multiplexer which selects and outputs specific data among the output values of the four adders according to the input code value MSB0 and the first code value MSB1. Also, the second code value MSB2 indicating the sign of the output data Y2 selected by the data selector 524 is transmitted to the processing units 530 and 540 in a later step. The third sign bit sigma 3 to be used in a later step is determined by the second code value MSB2 of the output data Y2. That is, when the second code value MSB2 is 0, the third sine bit σ3 is set to '-1', and when the second code value MSB2 is 1, the third sine bit σ3 is set. Set to '1'.

제 3 처리부(530)는 도 9의 제 3 이터레이션을 수행한다. 이를 위해, 입력데이터와 부가 처리부(570)에서 보수 처리된 입력 데이터를 합산하는 가산부(532) 및 가산부(532)에서 출력되는 복수의 데이터 중 어느 하나를 선택하여 출력하는 데이터 선택부(534)를 포함한다.The third processor 530 performs the third iteration of FIG. 9. To this end, the data selecting unit 534 which selects and outputs any one of an adder 532 for adding up the input data and the input data processed by the additional processor 570 and a plurality of data output from the adder 532. ).

제 3 이터레이션에서 제 3 처리부(530)의 출력 데이터(Y3)는

Figure pat00005
가 되므로, 이러한 연산을 수행하기 위해, 입력 데이터(X0, Y0)에 대한 보수를 사용한다. 또한, 2- 1성분을 계산하기 위해 부가 처리부(570)의 쉬프터를 통해 쉬프팅된 값을 사용한다. In the third iteration, the output data Y3 of the third processor 530 is
Figure pat00005
In order to perform this operation, the complement of the input data (X0, Y0) is used. In addition, 2 - uses the value through the shifter shifting the additional processing unit (570) for calculating the first component.

한편, 제 1 사인비트(σ1), 제 2 사인비트(σ2), 제 3 사인비트(σ3)의 값에 따라 총 8 가지의 출력값이 출력될 수 있으므로, 가산부(532)는 각 경우의 출력값을 산출할 수 있는 총 8개의 가산기를 포함하도록 구성된다.Meanwhile, since a total of eight output values can be output according to the values of the first sine bit sigma 1, the second sine bit sigma 2, and the third sine bit sigma 3, the adder 532 outputs the output values in each case. It is configured to include a total of eight adders that can be calculated.

데이터 선택부(534)는 입력 부호값(MSB0), 제 1 부호값(MSB1) 및 제 2 부호값(MSB2)에 따라 8개 가산기의 출력값 중 특정 데이터를 선택하여 출력하는 멀티 플렉서로 구성된다. 또한, 데이터 선택부(534)에 의하여 선택된 출력 데이터(Y3)의 부호를 나타내는 제 3 부호값(MSB3)은 이후 단계의 처리부(540)로 전달된다. 그리고, 이후 단계에서 사용될 제 4 사인 비트(σ4)는 출력 데이터(Y3)의 제 3 부호값(MSB3)에 의하여 결정된다. 즉, 제 3 부호값(MSB3)이 0인 경우, 제 4 사인 비트(σ4)를 ‘-1’로 설정하고, 제 3 부호값(MSB3)이 1인 경우, 제 4 사인 비트(σ4)를 ‘1’로 설정한다.The data selector 534 is composed of a multiplexer that selects and outputs specific data among the output values of eight adders according to the input code value MSB0, the first code value MSB1, and the second code value MSB2. . In addition, the third code value MSB3 indicating the sign of the output data Y3 selected by the data selector 534 is transferred to the processing unit 540 in a later step. The fourth sine bit sigma 4 to be used in a later step is determined by the third code value MSB3 of the output data Y3. That is, when the third code value MSB3 is 0, the fourth sine bit σ4 is set to '-1', and when the third code value MSB3 is 1, the fourth sine bit σ4 is set. Set to '1'.

이와 같이, 각각의 이터레이션을 수행하는 처리부는 미리 설정된 연산을 수행한다. 그리고, 연산 과정에서 발생하는 사인비트와 부호값은 다음 이터레이션을 수행하는 처리부로 전달되어 사용된다. 제 n 처리부(540) 직전까지의 처리부는 벡터링 모드에 따라 연산을 수행하도록 구성된다.As such, the processor that performs each iteration performs a preset operation. In addition, the sign bit and the sign value generated during the operation are transferred to and used by the processor that performs the next iteration. The processing unit up to just before the nth processing unit 540 is configured to perform an operation according to the vectoring mode.

제 n 처리부(540)는 제 n 이터레이션을 수행한다. 예를 들어, 4개의 처리부를 포함하는 코딕 장치의 경우, 도 9의 제 4 이터레이션을 수행할 수 있다. 이를 위해, 입력데이터와 부가 처리부(570)에서 보수 처리된 입력 데이터를 합산하는 제 1 가산부(542) 및 제 2 가산부(546), 제 1 가산부(542)에서 출력되는 복수의 데이터 중 어느 하나를 선택하여 제 1 출력 데이터(Xn)를 출력하는 제 1 데이터 선택부(544), 제 2 가산부(546)에서 출력되는 복수의 데이터 중 어느 하나를 선택하여 제 2 출력 데이터(Yn)를 출력하는 제 2 데이터 선택부(548)를 포함한다.The n-th processing unit 540 performs n-th iteration. For example, in the case of the Codic device including four processing units, the fourth iteration of FIG. 9 may be performed. To this end, of the plurality of data output from the first adder 542, the second adder 546, and the first adder 542, which add up the input data and the input data processed by the additional processor 570. The first data selector 544 which selects one to output the first output data Xn, and the second output data Yn by selecting any one of a plurality of data output from the second adder 546. It includes a second data selection unit 548 for outputting the.

제 n 처리부(540)는 앞서 설명한 컴팩트 코딕구조와 유사하게, 로테이션 모드로 동작하도록 구성된다. 즉, 직전 단계의 처리부들은 벡터링 모드에서 동작하고, 제 n 처리부(540)는 로테이션 모드로 동작한다.The n-th processing unit 540 is configured to operate in the rotation mode, similar to the compact cordial structure described above. That is, the processing units in the previous stage operate in the vectoring mode, and the nth processing unit 540 operates in the rotation mode.

이러한 연산을 수행하기 위해, 로테이션 입력 데이터에 대한 보수를 사용한다. 또한, 부가 처리부(570)의 쉬프터를 통해 쉬프팅된 값을 사용한다. To perform this operation, we use complement to the rotation input data. In addition, a value shifted through the shifter of the additional processor 570 is used.

한편, 사용되는 사인비트의 개수가 n 개 이므로, 총 2^n 개의 출력값이 출력될 수 있으며, 제 1 가산부(542) 및 제 2 가산부(546)는 각 경우의 출력값을 산출할 수 있는 총 2^n 개의 가산기를 포함하도록 구성된다.Meanwhile, since the number of sine bits used is n, a total of 2 ^ n output values can be output, and the first adder 542 and the second adder 546 can calculate the output value in each case. It is configured to include a total of 2 ^ n adders.

제 1 데이터 선택부(544)와 제 2 데이터 선택부(548)은 총 n 개의 부호값(MSB0, MSB1, …, MSBn-1)에 따라 2^n 개 가산기의 출력값 중 특정 데이터를 선택하여 출력하는 멀티 플렉서로 구성된다. The first data selector 544 and the second data selector 548 select and output specific data from the output values of 2 ^ n adders according to a total of n code values MSB0, MSB1, ..., MSBn-1. It consists of a multiplexer.

이때, 제 1 데이터 선택부(544)에 의하여 선택된 출력 데이터(Xn)와 제 2 데이터 선택부(548)에 의하여 선택된 출력 데이터(Yn)는 미리 설정된 팩터가 곱해지는 경우, 입력 데이터(X0, Y0)의 사인값 또는 코사인값을 각각 나타낼 수 있다.At this time, the output data Xn selected by the first data selector 544 and the output data Yn selected by the second data selector 548 are multiplied by a preset factor, and the input data X0 and Y0. The sine or cosine of) may be represented, respectively.

이제 총 4번의 이터레이션을 수행하는 실시예를 통해 본 발명을 더욱 상세히 설명하도록 한다. 다만, 본 실시예는 설명을 위한 예시에 불과하며, 사용자의 선택에 따라 이터레이션 회수는 충분히 변경될 수 있다. 예를 들어, 이후에 설명할 도 6에 도시된 4회의 이터레이션을 수행하는 단위 회로를 2개 또는 3개 직렬로 접속하여, 8회 또는 12회의 이터레이션을 수행하도록 구성할 수 있다.Now, the present invention will be described in more detail through an embodiment of performing a total of four iterations. However, the present embodiment is only an example for description, and the number of iterations may be sufficiently changed according to a user's selection. For example, two or three unit circuits for performing four iterations illustrated in FIG. 6 to be described later may be connected in series to perform eight or twelve iterations.

도 6은 본 발명의 일 실시예에 따른 코딕 장치를 도시한 도면이고, 도 7a 및 7b는 본 발명의 일 실시예에 따른 코딕 장치의 세부 구성을 도시한 도면이다.6 is a view showing a cordic device according to an embodiment of the present invention, Figures 7a and 7b is a diagram showing a detailed configuration of the cordic device according to an embodiment of the present invention.

코딕 장치(600)는 입력 데이터(X0, Y0)에 대하여 각각의 이터레이션을 수행하는 4 개의 처리부(610, 620, 630, 640), 입력 데이터에 대한 쉬프트 처리 및 보수(complement) 처리를 수행하는 부가 처리부(670)를 포함한다.The codec device 600 performs four processing units 610, 620, 630, and 640 that perform respective iterations on the input data X0 and Y0, and perform a shift and complement processing on the input data. An additional processing unit 670 is included.

제 1 내지 제 3 처리부(610, 620, 630)는 벡터링 모드에 따라 동작하도록 구성되고, 제 4 처리부(640)는 로테이션 모드에 따라 동작하도록 구성된다.The first to third processing units 610, 620, and 630 are configured to operate according to the vectoring mode, and the fourth processing unit 640 is configured to operate according to the rotation mode.

제 1 처리부(710)는 제 1 입력 데이터(X0)와 제 2 입력 데이터(Y0)의 MSB를 인버팅시킨 값을 입력으로 하는 XOR 게이트(711), 제 2 입력 데이터(Y0)의 MSB를 인버팅시켜 XOR 게이트(711)로 입력시키는 인버터(713), 인버터의 출력과 XOR 게이트(711)의 출력을 합산하여 출력 데이터(Y1)를 출력하는 가산기(715)를 포함한다. The first processing unit 710 checks the XOR gate 711 for inputting a value obtained by inverting the MSBs of the first input data X0 and the second input data Y0, and the MSB of the second input data Y0. Inverter 713 for butting and inputting to XOR gate 711, and adder 715 for outputting the output data (Y1) by summing the output of the inverter and the output of the XOR gate 711.

이때, 도시된 XOR 게이트는 하나인 것으로 도시되어 있으나, XOR 게이트의 개수는 입력데이터의 비트수에 따라 달라질 수 있다. 즉, 입력 데이터의 비트수가 n개라면, 이에 접속되는 XOR 게이트도 n개로 구성한다.In this case, although one illustrated XOR gate is shown, the number of XOR gates may vary depending on the number of bits of the input data. In other words, if the number of bits of the input data is n, the number of XOR gates connected thereto is also configured.

한편, 인버터(713)을 통해 인버팅된 MSB 값은 입력 데이터의 개수만큼 구비된 XOR 게이트에 각각 입력된다. 이러한 구성은 이후 설명할 도 7의 XOR 게이트와 인버터에 모두 공통적으로 적용된다.Meanwhile, the MSB values inverted through the inverter 713 are respectively input to XOR gates provided with the number of input data. This configuration is commonly applied to both the XOR gate and the inverter of FIG. 7 to be described later.

예를 들어, 제 1 입력 데이터(X0)가 ‘1101’ 이고, 제 2 입력 데이터(Y0)가 ‘0110’이라면, 제 2 입력 데이터(Y0)의 MSB는 ‘0’이므로, 인버팅된 MSB는 ‘1’이 된다. 한편, 입력 데이터가 4비트이므로, XOR 게이트는 4개가 되며, 제 1 입력 데이터(X0)와 인버팅된 MSB의 XOR 결과는 ‘0010’이 되고, XOR 결과와 인버팅된 MSB의 가산 결과는 ‘0011’이 되며, 이의 MSB 값이 다음 처리부로 전달된다.For example, if the first input data X0 is '1101' and the second input data Y0 is '0110', the MSB of the second input data Y0 is '0', so the inverted MSB is Becomes '1'. On the other hand, since the input data is 4 bits, there are four XOR gates, and the XOR result of the MSB inverted with the first input data X0 is' 0010 ', and the addition result of the XOR result and the inverted MSB is' 0011 ', and its MSB value is passed to the next processing unit.

부가 처리부(770)는 제 1 입력 데이터(X0)에 대한 1의 보수를 생성하는 XOR 게이트(771), 제 2 입력 데이터(Y0)에 대한 1의 보수를 생성하는 XOR 게이트(772), 제 1 입력 데이터(X0)를 우측으로 1만큼 쉬프트 시키는 쉬프터(780), 제 2 입력 데이터(Y0)를 우측으로 1만큼 쉬프트 시키는 쉬프터(781), 쉬프터(780)를 통해 우측으로 1만큼 쉬프트된 값에 대한 1의 보수를 생성하는 XOR 게이트(773), 쉬프터(781)를 통해 우측으로 1만큼 쉬프트된 값에 대한 1의 보수를 생성하는 XOR 게이트(774)를 포함한다.The additional processor 770 includes an XOR gate 771 for generating a 1's complement for the first input data X0, an XOR gate 772 for generating a 1's complement for the second input data Y0, and a first The shifter 780 shifts the input data X0 to the right by 1, the shifter 781 shifts the second input data Y0 to the right by 1, and the shifter 780 to the right through the shifter 780. An XOR gate 773 that generates a one's complement to, and an XOR gate 774 that generates a one's complement to a value shifted by one to the right through the shifter 781.

또한, 부가 처리부(770)는 로테이션 입력 데이터(Xin r)를 우측으로 1만큼 쉬프트 시키는 쉬프터(782), 우측으로 2만큼 쉬프트 시키는 쉬프터(783), 우측으로 3만큼 쉬프트 시키는 쉬프터(784)를 포함한다. 또한, 로테이션 입력 데이터 (Xin r) 및 쉬프터(782, 783, 784)를 통해 쉬프트된 값에 대한 1의 보수를 각각 생성하는 XOR 게이트(775, 776, 777, 778)를 포함한다.The additional processor 770 also includes a shifter 782 for shifting the rotation input data Xin r to the right by 1, a shifter 783 to shift the right by 2, and a shifter 784 to shift the right by 3. do. Also included are XOR gates 775, 776, 777, 778 that generate a one's complement of the shifted input data Xin r and shifted values through shifters 782, 783, 784, respectively.

이때, 로테이션 입력 데이터(Xin r)는 도 3에서 설명한 로테이션 모드에서의 입력 값을 나타내는 것으로, 통상적으로 로테이션 모드에서는 (1,0)이 입력으로 들어가므로 로테이션 입력 데이터(xin r)는 1이 된다. 한편, 로테이션 모드에서는 Y 성분이 0 이므로, 이에 대한 논리 로직은 생략할 수 있다.In this case, the rotation input data Xin r represents an input value in the rotation mode described with reference to FIG. 3, and in general, (1,0) enters the input in the rotation mode, so the rotation input data xin r becomes 1. . In the rotation mode, since the Y component is 0, logic logic thereof may be omitted.

제 2 처리부(720)는 총 4개의 가산기(721, 722, 723, 724)를 포함하며, 이때, 가산 대상 값이 3개 이상인 경우에는 캐리 세이브 가산기(Carry Save Adder) 또는 컴프레서(compressor) 가산기를 사용하여 캐리 전달에서 발생하는 지연 문제를 해소할 수 있다.The second processor 720 includes four adders 721, 722, 723, and 724. In this case, when the value to be added is three or more, a carry save adder or a compressor adder is included. Can be used to solve the delay problem in carry delivery.

가산기(721)는 XOR 게이트(771)의 출력, XOR 게이트(772)의 출력 및 상수 2를 입력으로 하고, 가산기(722)는 XOR 게이트(771)의 출력, 제 2 입력 데이터(Y0) 및 상수 1을 입력으로 하고, 가산기(723)는 제 1 입력 데이터(X0) 및 제 2 입력 데이터(Y0)를 입력으로 하고, 가산기(724)는 XOR 게이트(772)의 출력. 제 1 입력 데이터(X0) 및 상수 1을 입력으로 한다.The adder 721 has an output of the XOR gate 771, an output of the XOR gate 772, and a constant 2, and the adder 722 has an output of the XOR gate 771, a second input data Y0 and a constant. 1 is input, adder 723 receives first input data X0 and second input data Y0, and adder 724 outputs the XOR gate 772. The first input data X0 and the constant 1 are input.

즉, 가산기(721)는 제 1 입력 데이터(X0)의 보수, 제 2 입력 데이터(Y0)의 보수 및 상수 2를 입력으로 하고, 가산기(722)는 제 1 입력 데이터(X0)의 보수, 제 2 입력 데이터(Y0) 및 상수 1을 입력으로 하고, 가산기(723)는 제 1 입력 데이터(X0) 및 제 2 입력 데이터(Y0)를 입력으로 하고, 가산기(724)는 제 1 입력 데이터(X0), 제 2 입력 데이터(Y0)의 보수 및 상수 1을 입력으로 한다.That is, the adder 721 receives the complement of the first input data X0, the complement of the second input data Y0, and the constant 2, and the adder 722 is the complement of the first input data X0, and the first. 2 input data Y0 and a constant 1 as inputs, adder 723 takes first input data X0 and second input data Y0 as inputs, and adder 724 receives first input data X0. ) And the complement of the second input data Y0 and the constant 1 are input.

상수를 추가적으로 가산하는 이유는 다음과 같다. 본 발명에서는 2의 보수 체계를 기본으로 사용한다. 예를 들어 4bit의 경우 0111은 +7을 나타내고, 1001은 -7을 나타낸다. 2의 보수 체계에서는 ?값은 +값 즉 0111(+7)에 바(bar)를 취한 후 +1을 한다. 즉 1000에 +1을 하여 1001(-7)이 된다. 이때, 1000은 1의 보수 체계를 사용한 것이며, 이러한 경우 -7은 1000이 된다. 그런데 만약 -7-5-6을 계산한다고 하면 0111, 0101, 0110에 바(bar)를 취한 값인 1000, 1010, 1001 각각에 대해 +1 이 더해진 1001+1011+1010이 된다. The reason for adding a constant is as follows. In the present invention, the two's complement system is used as a basis. For example, in the case of 4 bits, 0111 represents +7 and 1001 represents -7. In the two's complement system, the? Value is +1, which is 011 (+7), and then +1. That is, 1000 is +1 to 1001 (-7). In this case, 1000 is a one's complement system, and in this case, -7 is 1000. However, if you calculate -7-5-6, it becomes 1001 + 1011 + 1010 with +1 added to 0111, 0101, and 0110, which are bars, 1000, 1010, and 1001, respectively.

이 경우 (1000+1)+(1010+1)+(1001+1)로 계산을 할 경우 항이 6개가 생기므로 1의 보수 형태로 덧셈한 후 각각의 +1에 대한 것을 한꺼번에 더해 1000+1010+1001+3으로 계산하여 4개의 항으로 처리할 수 있다. 이렇게 추가적으로 상수를 합산하여 2의 보수 체계를 구현할 수 있다. In this case, if you calculate as (1000 + 1) + (1010 + 1) + (1001 + 1), you will have 6 terms, so add them in the form of 1's complement and add one for each +1 at a time to add 1000 + 1010 + It can be calculated as 1001 + 3 and treated as four terms. In this way, the constants can be added to implement the two's complement system.

데이터 선택부(725)는 각각의 가산기(721, 722, 723, 724)에서 출력된 값 중 어느 하나를 선택하여 다음 단계의 처리부(730, 740)로 전달한다.The data selector 725 selects any one of the values output from each of the adders 721, 722, 723, and 724 and transmits the selected one to the processing units 730 and 740 of the next step.

제 3 처리부(730)는 총 8개의 가산기(731, 732, 733, 734, 735, 736, 737, 738)를 포함하며, 이때, 합산하는 값이 2개를 넘는 경우에는 캐리 세이브 가산기 또는 컴프레서 가산기를 사용할 수 있다.The third processing unit 730 includes a total of eight adders 731, 732, 733, 734, 735, 736, 737, and 738, in which case the carry save adder or the compressor adder is greater than two values. Can be used.

가산기(731)는 XOR 게이트(773)의 출력, XOR 게이트(772)의 출력 및 상수 3을 입력으로 하고, 가산기(732)는 XOR 게이트(771)의 출력, XOR 게이트(773)의 출력, XOR 게이트(774)의 출력 및 상수 3을 입력으로 하고, 가산기(733)는 XOR 게이트(771)의 출력, XOR 게이트(773)의 출력 및 상수 2를 입력으로 하고, 가산기(734)는 XOR 게이트(773)의 출력, 제 2 입력 데이터(Y0), 쉬프터(781)의 출력 및 상수 1을 입력으로 하고, 가산기(735)는 제 2 입력 데이터(Y0), 쉬프터(780)의 출력 및 쉬프터(781)의 출력을 입력으로 하고, 가산기(736)는 쉬프터(781)의 출력, 제 1 입력 데이터(X0), 쉬프터(780)의 출력을 입력으로 하고, 가산기(737)은 XOR 게이트(774)의 출력, 제 1 입력 데이터(X0), 쉬프터(780)의 출력 및 상수 1을 입력으로 하고, 가산기(738)는 XOR 게이트(774)의 출력, 쉬프터(780)의 출력, XOR 게이트(772)의 출력 및 상수 2를 입력으로 한다.The adder 731 is an output of the XOR gate 773, an output of the XOR gate 772, and a constant 3, and the adder 732 is an output of the XOR gate 771, an output of the XOR gate 773, and an XOR. The output of the gate 774 and the constant 3 are input, the adder 733 is the output of the XOR gate 771, the output of the XOR gate 773 and the constant 2 is input, and the adder 734 is the XOR gate ( The output of the 773, the second input data Y0, the output of the shifter 781 and the constant 1 are input, and the adder 735 is the second input data Y0, the output of the shifter 780 and the shifter 781. ), The adder 736 receives the output of the shifter 781, the first input data X0, and the output of the shifter 780, and the adder 737 of the XOR gate 774. The output, the first input data X0, the output of the shifter 780 and the constant 1 are input, and the adder 738 is an output of the XOR gate 774, an output of the shifter 780, and an output of the XOR gate 772. Output and Take the constant 2 as input.

즉, 가산기(731)는 제 1 입력 데이터(X0)를 우측으로 1만큼 쉬프트 시킨 값의 보수, 제 2 입력 데이터(Y0)의 보수, 제 2 입력 데이터(Y0)를 우측으로 1만큼 쉬프트 시킨 값의 보수 및 상수 3을 입력으로 하고, 가산기(732)는 제 1 입력 데이터(X0)의 보수, 제 1 입력 데이터(X0)를 우측으로 1만큼 쉬프트 시킨 값의 보수, 제 2 입력 데이터(Y0)를 우측으로 1만큼 쉬프트 시킨 값의 보수 및 상수 3을 입력으로 하고, 가산기(733)는 제 1 입력 데이터(X0)를 우측으로 1만큼 쉬프트 시킨 값의 보수, 제 2 입력 데이터(Y0)의 보수, 제 2 입력 데이터(Y0)를 우측으로 1만큼 쉬프트 시킨 값 및 상수 2를 입력으로 하고, 가산기(734)는 제 1 입력 데이터(X0)를 우측으로 1만큼 쉬프트 시킨 값의 보수, 제 2 입력 데이터(Y0), 제 2 입력 데이터(Y0)를 우측으로 1만큼 쉬프트 시킨 값 및 상수 1을 입력으로 하고, 가산기(735)는 제 2 입력 데이터(Y0), 제 1 입력 데이터(X0)를 우측으로 1만큼 쉬프트 시킨 값 및 제 2 입력 데이터(Y0)를 우측으로 1만큼 쉬프트 시킨 값을 입력으로 하고, 가산기(736)는 제 2 입력 데이터(Y0)를 우측으로 1만큼 쉬프트 시킨 값, 제 1 입력 데이터(X0), 제 1 입력 데이터(X0)를 우측으로 1만큼 쉬프트 시킨 값을 입력으로 하고, 가산기(737)는 제 2 입력 데이터(Y0)를 우측으로 1만큼 쉬프트 시킨 값의 보수, 제 1 입력 데이터(X0), 제 1 입력 데이터(X0)를 우측으로 1만큼 쉬프트 시킨 값을 입력으로 하고, 가산기(738)는 제 2 입력 데이터(Y0)를 우측으로 1만큼 쉬프트 시킨 값의 보수, 제 1 입력 데이터(X0)를 우측으로 1만큼 쉬프트 시킨 값, 제 2 입력 데이터(Y0)의 보수 및 상수 2를 입력으로 한다.That is, the adder 731 shifts the value of the first input data X0 shifted to the right by 1, the complement of the second input data Y0, and the value shifted to the right by the second input data Y0. And complement 3, the adder 732 is the complement of the first input data X0, the complement of the value shifted by the first input data X0 to the right by one, and the second input data Y0. Is the complement of the value shifted to the right by 1 and the constant 3 is input, and the adder 733 is the complement of the value shifted to the right by the first input data X0 by 1 and the complement of the second input data Y0. The second input data Y0 is shifted to the right by 1 and the constant 2 is input. The adder 734 shifts the first input data X0 to the right by 1 and the complement of the second input. Shifts the data Y0, the second input data Y0 to the right by 1, and the constant 1 as the input. The adder 735 inputs the value obtained by shifting the second input data Y0, the first input data X0 by 1 to the right, and the value shifted by the second input data Y0 by 1 to the right. The adder 736 inputs a value obtained by shifting the second input data Y0 to the right by one, a value shifted by the first input data X0 and the first input data X0 to the right by one, The adder 737 inputs a complement of a value obtained by shifting the second input data Y0 by 1 to the right, a value obtained by shifting the first input data X0 and the first input data X0 by 1 to the right. The adder 738 is a complement of a value shifted by the second input data Y0 to the right by 1, a value shifted by the first input data X0 by 1 to the right, a complement of the second input data Y0, and Take the constant 2 as input.

데이터 선택부(739)는 각각의 가산기(731, 732, 733, 734, 735, 736, 737, 738)에서 출력된 값 중 어느 하나를 선택하여 다음 단계의 처리부(740)로 전달한다.The data selector 739 selects one of the values output from each of the adders 731, 732, 733, 734, 735, 736, 737, and 738 and transfers the selected one to the processor 740 of the next step.

제 4 처리부(740)는 14개의 가산기(741, 742, 743, 744, 745, 746, 747, 751, 752, 753, 754, 75, 756, 757)를 포함하며, 이때, 합산하는 값이 2개를 넘는 경우에는 캐리 세이브 가산기 또는 컴프레서 가산기를 사용할 수 있다. 16개의 가산기를 이용하여 구성할 수도 있으며, 최적화 과정을 통해 2개 가산기를 생략한 형태이다.The fourth processing unit 740 includes fourteen adders 741, 742, 743, 744, 745, 746, 747, 751, 752, 753, 754, 75, 756, 757, where the sum is 2. If more than one, a carry save adder or a compressor adder can be used. It can also be configured using 16 adders, and two adders are omitted through the optimization process.

가산기(741)는 로테이션 입력 데이터(Xin r)의 보수, 로테이션 입력 데이터(Xin r)를 우측으로 1만큼 쉬프트 시킨 값의 보수, 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값의 보수 및 상수 3을 입력으로 하고, 가산기(742)는 로테이션 입력 데이터(Xin r)의 보수, 로테이션 입력 데이터(Xin r)를 우측으로 2만큼 쉬프트 시킨 값의 보수, 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값의 보수 및 상수 3을 입력으로 하고, 가산기(743)는 로테이션 입력 데이터(Xin r)의 보수, 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값의 보수 및 상수 1을 입력으로 하고, 가산기(744)는 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값의 보수 및 상수 1을 입력으로 하고, 가산기(745)는 로테이션 입력 데이터(Xin r), 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값의 보수 및 상수 1을 입력으로 하고, 가산기(746)는 로테이션 입력 데이터(Xin r), 로테이션 입력 데이터(Xin r)를 우측으로 2만큼 쉬프트 시킨 값 및 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값을 입력으로 하고, 가산기(747)는 로테이션 입력 데이터(Xin r), 로테이션 입력 데이터(Xin r)를 우측으로 1만큼 쉬프트 시킨 값 및 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값을 입력으로 한다.The adder 741 compensates for the rotation input data Xin r, the complement of the value shifted by the rotation input data Xin r by 1 to the right, and the complement of the value shifted by the rotation input data Xin r by 3 to the right. And the constant 3 is input, and the adder 742 performs the complement of the rotation input data Xin r, the complement of the value obtained by shifting the rotation input data Xin r to the right by 2, and the rotation input data Xin r to the right. The complement of the value shifted by 3 and the constant 3 are input, and the adder 743 performs the complement of the rotation input data Xin r and the complement and the constant of the value shifted by the rotation input data Xin r by 3 to the right. 1 is input, and the adder 744 inputs the complement and the constant 1 of the value which shifted the rotation input data Xin r by 3 to the right, and the adder 745 receives the rotation input data Xin r and rotation. Input day Compensator for the value shifted by Xin r to the right by 3 and a constant 1 are input, and the adder 746 shifts the rotation input data (Xin r) and rotation input data (Xin r) by 2 to the right. A value obtained by shifting the value and rotation input data Xin r by 3 to the right is input, and the adder 747 shifts the rotation input data Xin r and the rotation input data Xin r by 1 to the right. And a value obtained by shifting the rotation input data Xin r by 3 to the right.

또한, 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값은 제 1 데이터 선택부(748)에 의해서 직접 출력될 수 있다.In addition, a value obtained by shifting the rotation input data Xin r by 3 to the right may be directly output by the first data selector 748.

한편, 가산기(751)는 로테이션 입력 데이터(Xin r), 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값의 보수 및 상수 1을 입력으로 하고, 가산기(752)는 로테이션 입력 데이터(Xin r), 로테이션 입력 데이터(Xin r)를 우측으로 2만큼 쉬프트 시킨 값 및 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값을 입력으로 하고, 가산기(753)는 로테이션 입력 데이터(Xin r), 로테이션 입력 데이터(Xin r)를 우측으로 1만큼 쉬프트 시킨 값, 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값을 입력으로 하고, 가산기(754)는 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값의 보수 및 상수 1을 입력으로 하고, 가산기(755)는 로테이션 입력 데이터(Xin r)의 보수, 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값 및 상수 1을 입력으로 하고, 가산기(756)는 로테이션 입력 데이터(Xin r)의 보수, 로테이션 입력 데이터(Xin r)를 우측으로 2만큼 쉬프트 시킨 값의 보수, 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값의 보수 및 상수 3을 입력으로 하고, 가산기(757)는 로테이션 입력 데이터(Xin r)의 보수, 로테이션 입력 데이터(Xin r)를 우측으로 1만큼 쉬프트 시킨 값의 보수, 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값의 보수를 입력으로 한다.On the other hand, the adder 751 inputs the complement of the value obtained by shifting the rotation input data Xin r and the rotation input data Xin r by 3 to the right and the constant 1, and the adder 752 receives the rotation input data Xin. r), a value obtained by shifting the rotation input data (Xin r) by 2 to the right and a value obtained by shifting the rotation input data (Xin r) by 3 to the right, as inputs, and the adder 753 is a rotation input data (Xin r). ), A value obtained by shifting the rotation input data (Xin r) by 1 to the right, and a value obtained by shifting the rotation input data (Xin r) by 3 to the right, and the adder 754 is a rotation input data (Xin r). Is a complement of a value shifted by 3 to the right and a constant 1, and the adder 755 shifts the complement of the rotation input data Xin r and a value and a constant that shifts the rotation input data Xin r to the right by 3. Mouth 1 The adder 756 shifts the rotation input data Xin r's complement, the value of the shifted input data Xin r to the right by 2, and the rotation input data Xin r to the right by 3 The input of the complement and the constant 3, the adder 757, the complement of the rotation input data (Xin r), the complement of the value shifted the rotation input data (Xin r) by 1 to the right, the rotation input data (Xin Enter the complement of the value shifted r) by 3 to the right.

또한, 로테이션 입력 데이터(Xin r)를 우측으로 3만큼 쉬프트 시킨 값은 제 2 데이터 선택부(758)에 의해서 직접 출력될 수 있다.In addition, a value obtained by shifting the rotation input data Xin r by 3 to the right may be directly output by the second data selector 758.

도 8은 본 발명의 다른 실시예에 따른 코딕 장치를 도시한 도면이다.8 is a view showing a cordic device according to another embodiment of the present invention.

코딕 장치(800)는 도 5의 실시예와 마찬가지로, 입력 데이터(X0, Y0)에 대하여 각각의 이터레이션을 수행하는 n 개(n은 자연수)의 처리부(810, 820, 830, 840), 입력 데이터에 대한 쉬프트 처리 및 보수 처리를 수행하는 부가 처리부(870)를 포함한다. As in the embodiment of FIG. 5, the codec device 800 inputs n processing units 810, 820, 830, and 840 to perform respective iterations on the input data X0 and Y0, where n is a natural number. And an additional processing unit 870 that performs shift processing and maintenance processing on the data.

다만, 도 5의 실시예와 달리, 각각의 처리부는 벡터링 처리 또는 벡터링 연산을 수행하는 벡터링 처리부로서 동작한다. 또한, 제 1 처리부 내지 제 n-1 처리부에서 출력되는 데이터에 따라 입력 데이터(X0, Y0)의 편각을 출력하는 편각 산출부(880)를 더 포함한다.However, unlike the embodiment of FIG. 5, each processing unit operates as a vectoring processing unit that performs a vectoring process or a vectoring operation. The apparatus further includes a declination calculator 880 that outputs declinations of the input data X0 and Y0 according to data output from the first to n-th processing units.

각각의 구성요소는 도 5의 구성요소와 동일하므로, 그에 대한 상세한 설명은 생략한다.Each component is the same as the component of FIG. 5, and thus a detailed description thereof will be omitted.

제 n 처리부(840)는 도 5의 실시예와 달리 벡터링 모드에 따라 동작하며, 제 1 처리부 내지 제 n-1 처리부에서 출력되는 데이터에 따라 벡터링 연산을 수행한다. 제 n 처리부(840)에서 출력되는 데이터에 미리 설정된 팩터를 곱하게 되면, 입력 데이터(X0, Y0)의 크기가 산출될 수 있다. Unlike the embodiment of FIG. 5, the n-th processing unit 840 operates according to a vectoring mode and performs a vectoring operation according to data output from the first to n-th processing units. When the data output from the n th processor 840 is multiplied by a preset factor, the sizes of the input data X0 and Y0 may be calculated.

편각 산출부(880)는 입력 데이터(Y0)의 부호값 및 제 1 처리부 내지 제 n-1 처리부의 출력 데이터의 부호값에 해당하는 편각을 출력한다. 예를 들면, 룩업 테이블 형태의 편각 데이터를 저장하며, 각각의 처리부에서 출력되는 데이터에 해당하는 편각 데이터를 독출하여 출력한다.The declination calculator 880 outputs a declination corresponding to the sign value of the input data Y0 and the sign value of the output data of the first through n-th processing units. For example, declination data in the form of a lookup table is stored, and declination data corresponding to data output from each processing unit is read out and output.

예를 들어, 입력 데이터(Y0)의 부호값 및 제 1 처리부 내지 제 n-1 처리부의 출력 데이터의 부호값, 즉 사인비트가 (1, 1, 1, 1)인 경우에는, 도 4에 도시된 내용에 따라, -175.5°가 룩업 테이블에서 독출되어 출력된다. 또한, 사인비트가 (1, 1, 1, 0)인 경우에는 -147.5°가 룩업 테이블에서 독출되어 출력된다. For example, when the sign value of the input data Y0 and the sign value of the output data of the first through n-th processing units, that is, the sine bit are (1, 1, 1, 1), are shown in FIG. Based on what is said, -175.5 ° is read from the lookup table and output. If the sign bit is (1, 1, 1, 0), -147.5 ° is read out from the lookup table and output.

도 10은 본 발명의 일 실시예에 따른 코딕 장치에서 수행되는 코딕 연산 처리 방법을 도시한 순서도이다.10 is a flowchart illustrating a codic operation processing method performed in a codic device according to an embodiment of the present invention.

먼저, 코딕 장치로 연산 대상이 되는 좌표가 입력된다(S910). 통상적으로 벡터 형태의 2차원 좌표(X, Y)가 입력되며, 이에 대한 사인 값과 코사인 값이 최종적으로 출력된다.First, coordinates that are subject to calculation are input to the Codic device (S910). Typically, two-dimensional coordinates (X, Y) in the form of a vector are input, and a sine and cosine of the vector are finally output.

다음으로, 입력된 좌표 중 Y 좌표의 입력 부호값을 각 단계의 처리부(510, 520, 530, 540)로 전달한다(S920). Y 좌표가 양의 값을 가진 것이면, 입력 부호값(MSB0)이 0이 되고, 사인 비트(σ1)를 ‘-1’로 설정한다. 반면에, Y 좌표가 음의 값을 가진 것이면, 입력 부호값(MSB0)이 1이 되고, 사인 비트(σ1)를 ‘1’로 설정한다.Next, the input code value of the Y coordinate of the input coordinates is transmitted to the processing unit (510, 520, 530, 540) of each step (S920). If the Y coordinate has a positive value, the input code value MSB0 becomes 0 and the sine bit σ1 is set to '-1'. On the other hand, if the Y coordinate has a negative value, the input code value MSB0 becomes 1 and the sine bit σ 1 is set to '1'.

다음으로, 입력 좌표에 대한 보수 연산 및 쉬프트 연산을 수행한다(S930).Next, a complement and shift operation on the input coordinates is performed (S930).

도 7a 및 7b에서 상세히 살펴본 바와 같이, X 좌표를 우측으로 1 만큼 쉬프트 시키는 연산 및 Y 좌표를 우측으로 1 만큼 쉬프트 시키는 연산을 수행한다. 또한, X 좌표에 대한 보수, Y 좌표에 대한 보수 및 쉬프트된 값의 보수를 각각 생성하는 연산을 수행한다. 또한, 로테이션 입력 좌표를 우측으로 1, 2 또는 3 만큼 쉬프트 시키는 연산을 수행한다. 또한, 로테이션 입력 좌표에 대한 보수 및 쉬프트된 값의 보수를 각각 생성하는 연산을 수행한다.As described in detail with reference to FIGS. 7A and 7B, the operation of shifting the X coordinate to the right by 1 and the operation of shifting the Y coordinate to the right by 1 are performed. In addition, the operation of generating the complement of the X coordinate, the complement of the Y coordinate, and the complement of the shifted value is performed. In addition, an operation of shifting the rotation input coordinates by 1, 2, or 3 to the right is performed. In addition, the operation of generating the complement of the rotation input coordinates and the complement of the shifted value is performed.

다음으로, 각 처리부에서 벡터링 처리 또는 로테이션 처리를 병렬적으로 수행한다(S940).Next, in each processing unit, a vectoring process or a rotation process is performed in parallel (S940).

본 발명에서는 연산 시간을 최단 시간으로 단축시키기 위하여, 각 이터레이션을 수행하는 처리부가 병렬적으로 연산을 수행하도록 구성한다. In the present invention, in order to shorten the operation time to the shortest time, the processor performing each iteration is configured to perform the operation in parallel.

연산 대상 데이터는 입력 데이터 또는 부가 처리부(570)의 출력 데이터이며, 미리 구현된 가산기의 구성에 따라 가산 연산을 수행한다. The calculation target data is input data or output data of the additional processor 570, and performs an addition operation according to a configuration of an adder implemented in advance.

다음으로, 각 처리부에서 부호값이 출력되면 다음 단계 처리부의 데이터 선택부로 부호값을 전달한다(S950).Next, when the code value is output from each processor, the code value is transmitted to the data selector of the next step processor (S950).

이때, 각 처리부에서 가산 연산이 완료되기 전에 이전 단계 처리부의 가산 연산이 모두 완료되어, 데이터 선택부가 지연시간 없이 데이터 선택을 수행할 수 있도록 한다. 예를 들어, 제 i 번째(i는 자연수) 처리부가 가산 연산을 완료하기 전에, 제 1 처리부 내지 제 i-1 번째 처리부가 모두 데이터 출력을 완료하고, 출력된 데이터의 부호값을 모두 제 i 번째 처리부의 데이터 선택부로 전송하도록 한다. At this time, the addition operation of the previous step processing unit is completed before the addition operation is completed in each processing unit, so that the data selection unit can perform data selection without delay time. For example, before the i-th (i is a natural number) processor completes the addition operation, all of the first to i-th processors complete data output, and the i-th of all the code values of the output data are completed. Transfer the data to the data selection section of the processing section.

다음으로, 최종 처리부에서 로테이션 처리에 기초한 처리결과를 출력한다(S960).Next, the final processing unit outputs a processing result based on the rotation processing (S960).

예를 들어, 제 i 번째(i는 자연수) 처리부가 최종 처리부인 경우, 제 1 처리부 내지 제 i-1 번째 처리부에서 출력된 데이터의 부호값을 모두 제 i 번째 처리부의 데이터 선택부로 전송하도록 한다. 최종 처리부는 이전 단계의 처리부에서 출력된 데이터의 부호값에 기초하여 입력 좌표에 대한 사인 값과 코사인 값을 출력한다.For example, when the i th (i is a natural number) processor is a final processor, all of the code values of data output from the first to i-1 th processors are transmitted to the data selector of the i th processor. The final processing unit outputs the sine and cosine of the input coordinates based on the sign value of the data output from the processing unit of the previous step.

도 11은 본 발명의 일 실시예에 따른 코딕 장치와 종래의 다른 코딕 장치의 연산 시간을 비교한 실험데이터를 도시한다.FIG. 11 illustrates experimental data comparing operation time of a cordial apparatus and another conventional cordic apparatus according to an embodiment of the present invention.

도시된 바와 같이, 본 발명의 코딕 장치가 기본 코딕 장치 및 컴팩트 코딕 장치에 비하여, 연산 시간이 최소임을 확인할 수 있다. 특히, 비트폭의 증가에도 불구하고 연산 시간의 증가율이 최소임을 확인할 수 있으며, 비트폭이 24 비트인 경우 컴팩트 코딕 구조와 비교하여 28.1%의 성능 향상을 달성할 수 있음을 확인할 수 있다.As shown, it can be seen that the codec device of the present invention has a minimum computation time compared to the basic codec device and the compact codec device. In particular, it can be seen that the increase rate of operation time is minimal despite the increase in the bit width, and when the bit width is 24 bits, the performance improvement of 28.1% can be achieved compared to the compact cordic structure.

참고로, 본 발명의 실시예에 따른 도 5 내지 도 8에 도시된 구성 요소들은 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같은 하드웨어 구성 요소를 의미하며, 소정의 역할들을 수행한다.For reference, the components illustrated in FIGS. 5 to 8 according to an embodiment of the present invention mean software or hardware components such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC), and have a predetermined role. Perform them.

그렇지만 '구성 요소들'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 각 구성 요소는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.However, 'components' are not meant to be limited to software or hardware, and each component may be configured to be in an addressable storage medium or may be configured to reproduce one or more processors.

따라서, 일 예로서 구성 요소는 소프트웨어 구성 요소들, 객체지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다.Thus, as an example, a component may include components such as software components, object-oriented software components, class components, and task components, and processes, functions, properties, procedures, and subs. Routines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables.

구성 요소들과 해당 구성 요소들 안에서 제공되는 기능은 더 작은 수의 구성 요소들로 결합되거나 추가적인 구성 요소들로 더 분리될 수 있다.Components and the functionality provided within those components may be combined into a smaller number of components or further separated into additional components.

본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다. One embodiment of the present invention may also be embodied in the form of a recording medium including instructions executable by a computer, such as program modules, being executed by a computer. Computer readable media can be any available media that can be accessed by a computer and includes both volatile and nonvolatile media, removable and non-removable media. In addition, computer readable media may include both computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Communication media typically includes computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave, or other transmission mechanism, and includes any information delivery media.

본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다. While the methods and systems of the present invention have been described in connection with specific embodiments, some or all of those elements or operations may be implemented using a computer system having a general purpose hardware architecture.

전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.The foregoing description of the present invention is intended for illustration, and it will be understood by those skilled in the art that the present invention may be easily modified in other specific forms without changing the technical spirit or essential features of the present invention. will be. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive. For example, each component described as a single entity may be distributed and implemented, and components described as being distributed may also be implemented in a combined form.

본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope of the present invention is shown by the following claims rather than the above description, and all changes or modifications derived from the meaning and scope of the claims and their equivalents should be construed as being included in the scope of the present invention. do.

500: 코딕 장치
510, 520, 530, 540: 처리부
522, 532, 542, 546: 가산부
524, 534, 544, 548: 데이터 선택부
570: 부가 처리부
500: cordic device
510, 520, 530, 540: processing unit
522, 532, 542, 546: adding part
524, 534, 544, 548: data selector
570: additional processing unit

Claims (19)

코딕 처리를 수행하는 프로세서에 있어서,
입력 데이터, 상기 입력 데이터에 대한 보수(補數), 상기 입력 데이터의 쉬프트 값 및 상기 입력 데이터의 쉬프트 값에 대한 보수 중 하나 이상에 대하여 벡터링 처리를 각각 수행하는 N개(N은 자연수)의 벡터링 처리부 및
로테이션 입력 데이터, 로테이션 입력 데이터에 대한 보수, 로테이션 입력 데이터의 쉬프트 값 및 상기 로테이션 입력 데이터의 쉬프트 값에 대한 보수에 대하여 로테이션 처리를 수행하여 상기 입력 데이터에 대한 삼각함수 출력값을 출력하는 로테이션 처리부를 포함하되,
상기 벡터링 처리부 및 로테이션 처리부는 병렬 접속되어 각각의 벡터링 처리 또는 로테이션 처리를 수행하고,
상기 로테이션 처리부는 상기 입력 데이터의 부호값 및 상기 N개의 벡터링 처리부의 출력 데이터의 부호값에 기초하여 상기 로테이션 처리의 출력값 중 상기 삼각함수 출력값을 선택하여 출력하는 코딕 프로세서.
A processor for performing codic processing,
N vectoring (N is a natural number) for performing vectoring processing on one or more of input data, a complement of the input data, a shift value of the input data, and a complement of the shift value of the input data, respectively. Processing unit and
And a rotation processing unit configured to output a triangular function output value for the input data by performing rotation processing on the rotation input data, the compensation for the rotation input data, the shift value of the rotation input data, and the compensation for the shift input data. But
The vectoring processing unit and the rotation processing unit are connected in parallel to perform each vectoring process or rotation process,
And the rotation processor selects and outputs the trigonometric output value among the output values of the rotation process based on code values of the input data and code values of output data of the N vectoring units.
제 1 항에 있어서,
상기 입력 데이터 및 상기 로테이션 입력 데이터에 대한 보수 연산, 상기 입력 데이터 및 상기 로테이션 입력 데이터에 대한 쉬프트 연산, 상기 쉬프트 연산을 통해 산출된 쉬프트 값에 대한 보수 연산을 각각 수행하고, 각 연산의 결과값을 상기 벡터링 처리부 또는 상기 로테이션 처리부로 전달하는 부가 처리부를 더 포함하는 코딕 프로세서.
The method of claim 1,
Performing a complement operation on the input data and the rotation input data, a shift operation on the input data and the rotation input data, and a complement operation on the shift value calculated through the shift operation, respectively, and calculating a result value of each operation. And a further processing unit transferring the vectoring processing unit or the rotation processing unit.
제 1 항에 있어서,
상기 N 개의 벡터링 처리부는,
상기 입력 데이터에 대하여 제 1 벡터링 처리를 수행하고, 제 1 출력 데이터를 출력하는 제 1 벡터링 처리부 및
상기 입력 데이터 및 상기 입력 데이터에 대한 보수에 대하여 제 2 벡터링 처리를 수행하고, 제 2 출력 데이터를 출력하는 제 2 벡터링 처리부를 포함하되,
상기 제 2 벡터링 처리부는 상기 입력 데이터의 Y 좌표의 부호값 및 상기 제 1 출력 데이터의 부호값에 기초하여, 상기 제 2 벡터링 처리의 결과 중 어느 하나를 선택하여 상기 제 2 출력 데이터로서 출력하는 것인 코딕 프로세서.
The method of claim 1,
The N vectoring processing unit,
A first vectoring processor configured to perform a first vectoring process on the input data and output first output data;
A second vectoring processor configured to perform a second vectoring process on the input data and the complement of the input data, and output second output data;
Wherein the second vectoring processor selects one of the results of the second vectoring process and outputs the second output data based on a sign value of the Y coordinate of the input data and a sign value of the first output data. Incodic processor.
제 3 항에 있어서,
상기 입력 데이터, 상기 입력 데이터에 대한 보수, 상기 입력 데이터를 우측으로 1 만큼 쉬프트 시킨 값, 상기 1 만큼 쉬프트 시킨 값에 대한 보수에 대하여 제 3 벡터링 처리를 수행하고, 제 3 출력 데이터를 출력하는 제 3 벡터링 처리부를 포함하되,
상기 제 3 벡터링 처리부는 상기 입력 데이터의 Y 좌표의 부호값, 상기 제 1 출력 데이터의 부호값 및 상기 제 2 출력 데이터의 부호값에 기초하여, 상기 제 3 벡터링 처리의 결과 중 어느 하나를 선택하여 상기 제 3 출력 데이터로서 출력하는 것인 코딕 프로세서.
The method of claim 3, wherein
Performing a third vectoring process on the input data, the complement of the input data, the value of shifting the input data to the right by one, and the reward of the shifted value by one, and outputting third output data; 3 includes a vectoring processor,
The third vectoring processor selects any one of the results of the third vectoring process based on a sign value of the Y coordinate of the input data, a sign value of the first output data, and a sign value of the second output data. And output as the third output data.
제 4 항에 있어서,
상기 로테이션 처리부는
상기 로테이션 입력 데이터, 상기 로테이션 입력 데이터에 대한 보수, 상기 로테이션 입력 데이터를 우측으로 1 내지 3 만큼 쉬프트 시킨 값, 상기 로테이션 입력 데이터를 우측으로 1 내지 3 만큼 쉬프트 시킨 값에 대한 보수에 대하여 로테이션 처리를 수행하여 X 좌표 출력 데이터와 Y 좌표 출력 데이터를 출력하되,
상기 입력 데이터의 Y 좌표의 부호값, 상기 제 1 내지 제 3 출력 데이터의 부호값에 기초하여 상기 로테이션 처리의 결과 중 상기 X 좌표 출력 데이터와 상기 Y 좌표 출력 데이터를 각각 선택하여 출력하는 것인 코딕 프로세서.
The method of claim 4, wherein
The rotation processing unit
Rotation processing is performed on the rotation input data, the compensation for the rotation input data, the value for shifting the rotation input data by 1 to 3 to the right, and the compensation for the value for shifting the rotation input data by 1 to 3 to the right. To output the X coordinate data and Y coordinate output data,
A codec for selecting and outputting the X coordinate output data and the Y coordinate output data, respectively, from the results of the rotation process based on the code value of the Y coordinate of the input data and the code values of the first to third output data. Processor.
제 3 항에 있어서,
상기 제 1 벡터링 처리부는
상기 입력 데이터의 Y 좌표의 부호값을 반전시키는 인버터, 상기 인버터의 출력과 상기 입력 데이터의 X 좌표를 입력으로 하는 하나 이상의 XOR 게이트, 상기 인버터의 출력과 상기 XOR 게이트의 출력을 합산하여 상기 제 1 출력 데이터를 출력하는 가산기를 포함하는 코딕 프로세서.
The method of claim 3, wherein
The first vectoring processor
An inverter for inverting a sign value of the Y coordinate of the input data, at least one XOR gate having the output of the inverter and the X coordinate of the input data as an input, and adding the output of the inverter and the output of the XOR gate to add the first value; A cordic processor comprising an adder for outputting output data.
제 3 항에 있어서,
상기 제 2 벡터링 처리부는
상기 입력 데이터 및 상기 입력 데이터에 대한 보수 중 하나 이상에 대하여 제 2 벡터링 처리를 각각 수행하는 4개의 가산기를 포함하고,
상기 입력 데이터의 Y 좌표의 부호값 및 상기 제 1 출력 데이터의 부호값에 기초하여 상기 4개의 가산기의 출력값 중 어느 하나를 선택하여 상기 제 2 출력 데이터를 출력하는 데이터 선택부를 포함하는 코딕 프로세서.
The method of claim 3, wherein
The second vectoring processor
Four adders each performing a second vectoring process on at least one of said input data and said complement of said input data,
And a data selector configured to select one of output values of the four adders based on a sign value of the Y coordinate of the input data and a sign value of the first output data to output the second output data.
제 4 항에 있어서,
상기 제 3 벡터링 처리부는
상기 입력 데이터, 상기 입력 데이터에 대한 보수, 상기 입력 데이터를 우측으로 1 만큼 쉬프트 시킨 값 및 상기 1 만큼 쉬프트 시킨 값에 대한 보수 중 하나 이상에 대하여 제 3 벡터링 처리를 각각 수행하는 8개의 가산기를 포함하고,
상기 입력 데이터의 Y 좌표의 부호값 및 상기 제 1 및 제 2 출력 데이터의 부호값에 기초하여 상기 8개의 가산기의 출력값 중 어느 하나를 선택하여 상기 제 3 출력 데이터를 출력하는 데이터 선택부를 포함하는 코딕 프로세서.
The method of claim 4, wherein
The third vectoring processing unit
Eight adders each performing a third vectoring process on at least one of the input data, the complement for the input data, the value shifted to the right by one, and the reward for the shifted by one; and,
A code selector including a data selector configured to select one of output values of the eight adders based on a sign value of a Y coordinate of the input data and a sign value of the first and second output data to output the third output data; Processor.
제 5 항에 있어서,
상기 로테이션 처리부는
상기 로테이션 입력 데이터, 상기 로테이션 입력 데이터에 대한 보수, 상기 로테이션 입력 데이터를 우측으로 1 내지 3 만큼 쉬프트 시킨 값 및 상기 로테이션 입력 데이터를 우측으로 1 내지 3 만큼 쉬프트 시킨 값에 대한 보수 중 하나 이상에 대하여 로테이션 처리를 수행하는 각각 수행하는 16개의 가산기를 포함하고,
상기 입력 데이터의 Y 좌표의 부호값 및 상기 제 1 내지 제 3 출력 데이터의 부호값에 기초하여 상기 16개의 가산기의 출력값 중 상기 X 좌표 출력 데이터와 상기 Y 좌표 출력 데이터를 각각 선택하여 출력하는 데이터 선택부를 포함하는 코딕 프로세서.
The method of claim 5, wherein
The rotation processing unit
For one or more of the rotation input data, the reward for the rotation input data, the value for shifting the rotation input data by 1 to 3 to the right, and the reward for the value for shifting the rotation input data by 1 to 3 to the right. Includes 16 adders each performing a rotation process,
Data selection for selecting and outputting the X coordinate output data and the Y coordinate output data, respectively, from among the output values of the 16 adders based on the code value of the Y coordinate of the input data and the code values of the first to third output data. Codic processor containing a wealth.
제 1 항에 있어서,
상기 삼각함수 출력값은 미리 설정된 팩터와 곱하여져 상기 입력 데이터에 대한 사인값 또는 코사인값으로서 변환되는 것인 코딕 프로세서.
The method of claim 1,
And the trigonometric output value is multiplied by a preset factor and converted into a sine or cosine value for the input data.
제 7 항 내지 제 9 항 중 어느 한 항에 있어서,
상기 가산기 중 입력되는 데이터가 3개 이상인 가산기는 캐리 세이브 가산기 또는 컴프레서(compressor) 가산기로 이루어진 것인 코딕 프로세서.
The method according to any one of claims 7 to 9,
3. The codec processor of claim 1, wherein the adder having three or more pieces of data inputted therein is a carry save adder or a compressor adder.
코딕 처리를 수행하는 프로세서에 있어서,
입력 데이터, 상기 입력 데이터에 대한 보수(補數), 상기 입력 데이터의 쉬프트 값 및 상기 입력 데이터의 쉬프트 값에 대한 보수 중 하나 이상에 대하여 벡터링 처리를 각각 수행하는 제 1 벡터링 처리부 내지 제 N(N은 자연수) 벡터링 처리부 및
상기 벡터링 처리부 중 제 1 벡터링 처리부 내지 제 N-1 벡터링 처리부에서 출력된 데이터에 해당하는 편각 데이터를 독출하여 출력하는 편각 산출부를 포함하되,
상기 각 벡터링 처리부는 병렬 접속되어 각각의 벡터링 처리를 수행하고,
상기 제 N 벡터링 처리부는 상기 입력 데이터의 부호값 및 제 1 벡터링 처리부 내지 제 N-1 벡터링 처리부의 출력 데이터의 부호값에 기초하여 상기 벡터링 처리의 출력값 중 어느 하나를 선택하여 출력하는 코딕 프로세서.
A processor for performing codic processing,
A first vectoring processor to Nth for performing vectoring processing on at least one of input data, a complement of the input data, a shift value of the input data, and a complement of the shift value of the input data, respectively; Is a natural number)
A declination calculator configured to read and output declination data corresponding to data output from the first vectoring processor to the N-th vectoring processor among the vectoring processor,
Each vectoring processing unit is connected in parallel to perform each vectoring process,
And the N-th vectoring processor selects and outputs one of an output value of the vectoring process based on a code value of the input data and a code value of output data of the first to N-th vectoring processors.
제 12 항에 있어서,
상기 입력 데이터에 대한 보수 연산, 상기 입력 데이터에 대한 쉬프트 연산, 상기 쉬프트 연산을 통해 산출된 쉬프트 값에 대한 보수 연산을 각각 수행하고, 각 연산의 결과값을 상기 벡터링 처리부로 전달하는 부가 처리부를 더 포함하는 코딕 프로세서.
The method of claim 12,
An additional processing unit which performs a complement operation on the input data, a shift operation on the input data, and a complement operation on the shift value calculated through the shift operation, and transfers the result value of each operation to the vectoring processor. Includes a Codic Processor.
제 12 항에 있어서,
상기 제 N 벡터링 처리부에서 출력된 값은 미리 설정된 팩터와 곱하여져 상기 입력 데이터에 대한 크기 데이터로서 변환되는 것인 코딕 프로세서.
The method of claim 12,
And a value output from the N-th vectoring processor is multiplied by a preset factor and converted into magnitude data of the input data.
병렬 접속된 로테이션 처리부 및 복수의 벡터링 처리부를 포함하는 코딕 프로세서를 이용한 코딕 프로세싱 방법에 있어서,
입력 데이터를 제 1 벡터링 처리부로 전달함과 동시에, 입력 데이터 중 Y 좌표의 부호값을 나머지 벡터링 처리부 및 로테이션 처리부로 전달하는 단계,
상기 입력 데이터 및 상기 로테이션 입력 데이터에 대한 보수 연산, 상기 입력 데이터 및 상기 로테이션 입력 데이터에 대한 쉬프트 연산, 및 상기 쉬프트 연산을 통해 산출된 쉬프트 값에 대한 보수 연산을 수행하고, 각 연산의 결과값을 상기 나머지 벡터링 처리부 또는 상기 로테이션 처리부로 전달하는 단계 및
상기 제 1 벡터링 처리부에서 상기 입력 데이터에 기초하여 벡터링 처리를 수행함과 동시에, 상기 전달된 연산의 결과값 중 하나 이상에 기초하여 상기 나머지 벡터링 처리부에서 벡터링 처리를 수행하는 단계 및
상기 제 1 벡터링 처리부에서 상기 입력 데이터에 기초하여 벡터링 처리를 수행함과 동시에, 상기 전달된 연산의 결과값 중 하나 이상에 기초하여 상기 로테이션 처리부에서 로테이션 처리를 수행하는 단계를 포함하되,
상기 로테이션 처리를 수행하는 단계는 상기 입력 데이터의 부호값 및 상기 복수의 벡터링 처리부의 출력 데이터의 부호값에 기초하여 복수의 로테이션 처리의 출력값 중 삼각함수 출력값을 선택하여 출력하는 코딕 프로세싱 방법.
In the Codic processing method using a Codic processor including a rotation processor and a plurality of vectoring processor connected in parallel,
Transmitting the input data to the first vectoring processor and simultaneously transmitting the sign value of the Y coordinate among the input data to the remaining vectoring processor and the rotation processor;
Performing a complement operation on the input data and the rotation input data, a shift operation on the input data and the rotation input data, and a complement operation on the shift value calculated through the shift operation, and calculating a result value of each operation. Transferring to the remaining vectoring processor or the rotation processor; and
Simultaneously performing a vectoring process on the basis of the input data by the first vectoring processor, and performing a vectoring process on the remaining vectoring processor based on at least one of the result values of the transferred operation;
Performing a vectoring process on the basis of the input data by the first vectoring processor and performing a rotation process on the rotation processing unit based on at least one of the result values of the transferred operation,
The performing of the rotation process may include selecting and outputting a trigonometric function output value from among output values of a plurality of rotation processes based on code values of the input data and code values of output data of the plurality of vectoring processors.
제 15 항에 있어서,
상기 나머지 벡터링 처리부에서 벡터링 처리를 수행하는 단계는
상기 입력 데이터 및 상기 입력 데이터에 대한 보수에 대하여 제 2 벡터링 처리를 수행하는 단계 및
상기 입력 데이터의 Y 좌표의 부호값 및 상기 제 1 벡터링 처리부의 출력 결과인 제 1 출력 데이터의 부호값에 기초하여, 상기 제 2 벡터링 처리의 결과 중 어느 하나를 선택하여 제 2 출력 데이터를 출력하는 단계
를 포함하는 코딕 프로세싱 방법.
The method of claim 15,
The vectoring process may be performed by the remaining vectoring processor.
Performing a second vectoring process on the input data and the complement of the input data; and
Selecting one of the results of the second vectoring process and outputting the second output data based on a sign value of the Y coordinate of the input data and a sign value of the first output data which is an output result of the first vectoring processor. step
Cordic processing method comprising a.
제 16 항에 있어서,
상기 나머지 벡터링 처리부에서 벡터링 처리를 수행하는 단계는
상기 입력 데이터, 상기 입력 데이터에 대한 보수, 상기 입력 데이터를 우측으로 1 만큼 쉬프트 시킨 값 및 상기 1 만큼 쉬프트 시킨 값에 대한 보수에 대하여 제 3 벡터링 처리를 수행하는 단계 및
상기 입력 데이터의 Y 좌표의 부호값, 상기 제 1 출력 데이터의 부호값 및 상기 제 2 출력 데이터의 부호값에 기초하여, 상기 제 3 벡터링 처리의 결과 중 어느 하나를 선택하여 제 3 출력 데이터를 출력하는 단계
를 포함하는 코딕 프로세싱 방법.
17. The method of claim 16,
The vectoring process may be performed by the remaining vectoring processor.
Performing a third vectoring process on the input data, the complement for the input data, the value shifted to the right by one and the complement to the shifted value by one; and
Based on the sign value of the Y coordinate of the input data, the sign value of the first output data, and the sign value of the second output data, one of the results of the third vectoring process is selected to output the third output data. Steps to
Cordic processing method comprising a.
제 17 항에 있어서,
상기 로테이션 처리부에서 로테이션 처리를 수행하는 단계는
상기 로테이션 입력 데이터, 상기 로테이션 입력 데이터에 대한 보수, 상기 로테이션 입력 데이터를 우측으로 1 내지 3 만큼 쉬프트 시킨 값 및 상기 로테이션 입력 데이터를 우측으로 1 내지 3 만큼 쉬프트 시킨 값에 대한 보수에 대하여 로테이션 처리를 수행하는 단계 및
상기 입력 데이터의 Y 좌표의 부호값, 상기 제 1 내지 제 3 출력 데이터의 부호값에 기초하여, 상기 로테이션 처리의 결과 중 상기 X 좌표 출력 데이터와 상기 Y 좌표 출력 데이터를 각각 선택하여 출력하는 단계를 포함하는 코딕 프로세싱 방법.
The method of claim 17,
The performing of the rotation process in the rotation processing unit
Rotation processing is performed on the rotation input data, the compensation for the rotation input data, the value for shifting the rotation input data by 1 to 3 to the right, and the compensation for the value for shifting the rotation input data by 1 to 3 to the right. Steps to perform and
Selecting and outputting the X coordinate output data and the Y coordinate output data, respectively, from the results of the rotation process based on the code value of the Y coordinate of the input data and the code values of the first to third output data. Cordic processing method comprising.
제 15 항에 있어서,
상기 로테이션 처리부에서 로테이션 처리를 수행하는 단계에서 출력된 삼각함수 출력값에 미리 설정된 팩터를 곱하여 상기 입력 데이터에 대한 사인값 또는 코사인값을 산출하는 단계를 더 포함하는 코딕 프로세싱 방법.
The method of claim 15,
And calculating a sine or cosine of the input data by multiplying a trigonometric output value output in the rotation processing unit by a preset factor.
KR1020100081375A 2010-08-23 2010-08-23 Cordic processor and method for cordic processing using the same KR101158548B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100081375A KR101158548B1 (en) 2010-08-23 2010-08-23 Cordic processor and method for cordic processing using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100081375A KR101158548B1 (en) 2010-08-23 2010-08-23 Cordic processor and method for cordic processing using the same

Publications (2)

Publication Number Publication Date
KR20120057714A true KR20120057714A (en) 2012-06-07
KR101158548B1 KR101158548B1 (en) 2012-07-16

Family

ID=46609466

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100081375A KR101158548B1 (en) 2010-08-23 2010-08-23 Cordic processor and method for cordic processing using the same

Country Status (1)

Country Link
KR (1) KR101158548B1 (en)

Also Published As

Publication number Publication date
KR101158548B1 (en) 2012-07-16

Similar Documents

Publication Publication Date Title
JP4870932B2 (en) Extended Montgomery Modular Multiplier Supporting Multiple Precision
US9722629B2 (en) Method and apparatus for converting from floating point to integer representation
CN108139885B (en) Floating point number rounding
US10768898B2 (en) Efficient modulo calculation
US9678716B2 (en) Apparatus and method for performing absolute difference operation
KR102341523B1 (en) Concurrent multi-bit adder
EP3769208B1 (en) Stochastic rounding logic
US11922133B2 (en) Processor and method for processing mask data
KR100744216B1 (en) Device and method for calculating a multiplication involving a shifting of the multiplicand
JP3003467B2 (en) Arithmetic unit
US9025766B2 (en) Efficient hardware architecture for a S1 S-box in a ZUC cipher
GB2549153B (en) Apparatus and method for supporting a conversion instruction
JP5193358B2 (en) Polynomial data processing operations
KR101158548B1 (en) Cordic processor and method for cordic processing using the same
WO2023003737A2 (en) Multi-lane cryptographic engine and operations thereof
JP6335661B2 (en) Arithmetic apparatus and control method thereof
US20080071852A1 (en) Method to perform a subtraction of two operands in a binary arithmetic unit plus arithmetic unit to perform such a method
CN110506255B (en) Energy-saving variable power adder and use method thereof
US8933731B2 (en) Binary adder and multiplier circuit
JP4613992B2 (en) SIMD arithmetic unit, arithmetic method of SIMD arithmetic unit, arithmetic processing unit and compiler
JP4243277B2 (en) Data processing device
Mohan et al. Scaling, base extension, sign detection and comparison in RNS
US20100191787A1 (en) Sequential Multiplier
JP2013210837A (en) Arithmetic circuit and arithmetic method
Mohan et al. Binary to residue conversion

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160225

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee