KR20120057714A - Cordic processor and method for cordic processing using the same - Google Patents
Cordic processor and method for cordic processing using the same Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/4806—Computations with complex numbers
- G06F7/4818—Computations with complex numbers using coordinate rotation digital computer [CORDIC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix 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
Description
본 발명은 삼각 함수 연산에 사용될 수 있는 코딕 프로세서 및 이를 이용한 코딕 프로세싱 방법에 관한 것이다.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
코딕 장치(100)에서 사용하는 알고리즘은 하기의 수학식 1로 나타낼 수 있다.The algorithm used by the
[수학식 1][Equation 1]
벡터링 부(110)는 주어진 입력 벡터를 미리 설정된 조건에 따라 소정 각도로 회전하는 동작을 반복한다.The
도 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
도 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
도시된 바와 같이, 예를 들어, 입력 편각(θ)이 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
그러나, 이러한 종래의 코딕 알고리즘을 사용할 경우 다음 단계의 결과를 계산하려면, 이전 단계의 결과가 먼저 계산되어야 회전방향(σ, 사인비트)을 알 수 있다는 의존성 때문에 속도 개선에 한계가 있다. 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.
[수학식 2][Equation 2]
또한, 도 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
먼저, 제 1 처리부(510)는 도 9의 제 1 이터레이션을 수행한다. 즉, 제 1 처리부(510)의 출력 데이터(Y1)는 가 된다. 이때, 제 1 사인 비트(σ1)는 입력 데이터(Y0)의 입력 부호값(MSB0)에 의하여 결정된다. 즉, 입력 부호값(MSB0)이 0인 경우, 사인 비트(σ1)를 ‘-1’로 설정하고, 입력 부호값(MSB0)이 1인 경우, 제 1 사인 비트(σ1)를 ‘1’로 설정한다. 한편, 출력 데이터(Y1)의 부호를 나타내는 제 1 부호값(MSB1)은 이후 단계의 처리부(520, 530, 540)로 전달된다.First, the
부가 처리부(570)는 입력 데이터, 로테이션 입력 데이터에 대한 보수 연산, 입력 데이터 및 로테이션 입력 데이터에 대한 쉬프트 연산, 상기 쉬프트 연산을 통해 산출된 쉬프트 값에 대한 보수 연산을 각각 수행한다. 상세 구성은 추후 설명하기로 한다.The
제 2 처리부(520)는 도 9의 제 2 이터레이션을 수행한다. 이를 위해, 입력데이터와 부가 처리부(570)에서 보수 처리된 입력 데이터를 합산하는 가산부(522) 및 가산부(522)에서 출력되는 복수의 데이터 중 어느 하나를 선택하여 출력하는 데이터 선택부(524)를 포함한다.The
제 2 이터레이션에서 제 2 처리부(520)의 출력 데이터(Y2)는 가 되므로, 이러한 연산을 수행하기 위해, 입력 데이터(X0, Y0)에 대한 보수를 사용한다. 한편, 제 1 사인비트(σ1)와 제 2 사인비트(σ2)의 값에 따라 총 4 가지의 출력값이 출력될 수 있으므로, 가산부(522)는 각 경우의 출력값을 산출할 수 있는 총 4개의 가산기를 포함하도록 구성된다.In the second iteration, the output data Y2 of the
데이터 선택부(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
제 3 처리부(530)는 도 9의 제 3 이터레이션을 수행한다. 이를 위해, 입력데이터와 부가 처리부(570)에서 보수 처리된 입력 데이터를 합산하는 가산부(532) 및 가산부(532)에서 출력되는 복수의 데이터 중 어느 하나를 선택하여 출력하는 데이터 선택부(534)를 포함한다.The
제 3 이터레이션에서 제 3 처리부(530)의 출력 데이터(Y3)는 가 되므로, 이러한 연산을 수행하기 위해, 입력 데이터(X0, Y0)에 대한 보수를 사용한다. 또한, 2- 1성분을 계산하기 위해 부가 처리부(570)의 쉬프터를 통해 쉬프팅된 값을 사용한다. In the third iteration, the output data Y3 of the
한편, 제 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
데이터 선택부(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
이와 같이, 각각의 이터레이션을 수행하는 처리부는 미리 설정된 연산을 수행한다. 그리고, 연산 과정에서 발생하는 사인비트와 부호값은 다음 이터레이션을 수행하는 처리부로 전달되어 사용된다. 제 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
제 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-
제 n 처리부(540)는 앞서 설명한 컴팩트 코딕구조와 유사하게, 로테이션 모드로 동작하도록 구성된다. 즉, 직전 단계의 처리부들은 벡터링 모드에서 동작하고, 제 n 처리부(540)는 로테이션 모드로 동작한다.The n-
이러한 연산을 수행하기 위해, 로테이션 입력 데이터에 대한 보수를 사용한다. 또한, 부가 처리부(570)의 쉬프터를 통해 쉬프팅된 값을 사용한다. To perform this operation, we use complement to the rotation input data. In addition, a value shifted through the shifter of the
한편, 사용되는 사인비트의 개수가 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
제 1 데이터 선택부(544)와 제 2 데이터 선택부(548)은 총 n 개의 부호값(MSB0, MSB1, …, MSBn-1)에 따라 2^n 개 가산기의 출력값 중 특정 데이터를 선택하여 출력하는 멀티 플렉서로 구성된다. The
이때, 제 1 데이터 선택부(544)에 의하여 선택된 출력 데이터(Xn)와 제 2 데이터 선택부(548)에 의하여 선택된 출력 데이터(Yn)는 미리 설정된 팩터가 곱해지는 경우, 입력 데이터(X0, Y0)의 사인값 또는 코사인값을 각각 나타낼 수 있다.At this time, the output data Xn selected by the
이제 총 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
제 1 내지 제 3 처리부(610, 620, 630)는 벡터링 모드에 따라 동작하도록 구성되고, 제 4 처리부(640)는 로테이션 모드에 따라 동작하도록 구성된다.The first to
제 1 처리부(710)는 제 1 입력 데이터(X0)와 제 2 입력 데이터(Y0)의 MSB를 인버팅시킨 값을 입력으로 하는 XOR 게이트(711), 제 2 입력 데이터(Y0)의 MSB를 인버팅시켜 XOR 게이트(711)로 입력시키는 인버터(713), 인버터의 출력과 XOR 게이트(711)의 출력을 합산하여 출력 데이터(Y1)를 출력하는 가산기(715)를 포함한다. The
이때, 도시된 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
예를 들어, 제 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
또한, 부가 처리부(770)는 로테이션 입력 데이터(Xin r)를 우측으로 1만큼 쉬프트 시키는 쉬프터(782), 우측으로 2만큼 쉬프트 시키는 쉬프터(783), 우측으로 3만큼 쉬프트 시키는 쉬프터(784)를 포함한다. 또한, 로테이션 입력 데이터 (Xin r) 및 쉬프터(782, 783, 784)를 통해 쉬프트된 값에 대한 1의 보수를 각각 생성하는 XOR 게이트(775, 776, 777, 778)를 포함한다.The
이때, 로테이션 입력 데이터(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
가산기(721)는 XOR 게이트(771)의 출력, XOR 게이트(772)의 출력 및 상수 2를 입력으로 하고, 가산기(722)는 XOR 게이트(771)의 출력, 제 2 입력 데이터(Y0) 및 상수 1을 입력으로 하고, 가산기(723)는 제 1 입력 데이터(X0) 및 제 2 입력 데이터(Y0)를 입력으로 하고, 가산기(724)는 XOR 게이트(772)의 출력. 제 1 입력 데이터(X0) 및 상수 1을 입력으로 한다.The
즉, 가산기(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
상수를 추가적으로 가산하는 이유는 다음과 같다. 본 발명에서는 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
제 3 처리부(730)는 총 8개의 가산기(731, 732, 733, 734, 735, 736, 737, 738)를 포함하며, 이때, 합산하는 값이 2개를 넘는 경우에는 캐리 세이브 가산기 또는 컴프레서 가산기를 사용할 수 있다.The
가산기(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
즉, 가산기(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
데이터 선택부(739)는 각각의 가산기(731, 732, 733, 734, 735, 736, 737, 738)에서 출력된 값 중 어느 하나를 선택하여 다음 단계의 처리부(740)로 전달한다.The data selector 739 selects one of the values output from each of the
제 4 처리부(740)는 14개의 가산기(741, 742, 743, 744, 745, 746, 747, 751, 752, 753, 754, 75, 756, 757)를 포함하며, 이때, 합산하는 값이 2개를 넘는 경우에는 캐리 세이브 가산기 또는 컴프레서 가산기를 사용할 수 있다. 16개의 가산기를 이용하여 구성할 수도 있으며, 최적화 과정을 통해 2개 가산기를 생략한 형태이다.The
가산기(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
또한, 로테이션 입력 데이터(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
한편, 가산기(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
또한, 로테이션 입력 데이터(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
도 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
다만, 도 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
각각의 구성요소는 도 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-
편각 산출부(880)는 입력 데이터(Y0)의 부호값 및 제 1 처리부 내지 제 n-1 처리부의 출력 데이터의 부호값에 해당하는 편각을 출력한다. 예를 들면, 룩업 테이블 형태의 편각 데이터를 저장하며, 각각의 처리부에서 출력되는 데이터에 해당하는 편각 데이터를 독출하여 출력한다.The
예를 들어, 입력 데이터(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
다음으로, 입력 좌표에 대한 보수 연산 및 쉬프트 연산을 수행한다(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
다음으로, 각 처리부에서 부호값이 출력되면 다음 단계 처리부의 데이터 선택부로 부호값을 전달한다(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.
상기 입력 데이터 및 상기 로테이션 입력 데이터에 대한 보수 연산, 상기 입력 데이터 및 상기 로테이션 입력 데이터에 대한 쉬프트 연산, 상기 쉬프트 연산을 통해 산출된 쉬프트 값에 대한 보수 연산을 각각 수행하고, 각 연산의 결과값을 상기 벡터링 처리부 또는 상기 로테이션 처리부로 전달하는 부가 처리부를 더 포함하는 코딕 프로세서.
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.
상기 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.
상기 입력 데이터, 상기 입력 데이터에 대한 보수, 상기 입력 데이터를 우측으로 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.
상기 로테이션 처리부는
상기 로테이션 입력 데이터, 상기 로테이션 입력 데이터에 대한 보수, 상기 로테이션 입력 데이터를 우측으로 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.
상기 제 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.
상기 제 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.
상기 제 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.
상기 로테이션 처리부는
상기 로테이션 입력 데이터, 상기 로테이션 입력 데이터에 대한 보수, 상기 로테이션 입력 데이터를 우측으로 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.
상기 삼각함수 출력값은 미리 설정된 팩터와 곱하여져 상기 입력 데이터에 대한 사인값 또는 코사인값으로서 변환되는 것인 코딕 프로세서.
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.
상기 가산기 중 입력되는 데이터가 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.
상기 입력 데이터에 대한 보수 연산, 상기 입력 데이터에 대한 쉬프트 연산, 상기 쉬프트 연산을 통해 산출된 쉬프트 값에 대한 보수 연산을 각각 수행하고, 각 연산의 결과값을 상기 벡터링 처리부로 전달하는 부가 처리부를 더 포함하는 코딕 프로세서.
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.
상기 제 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.
상기 나머지 벡터링 처리부에서 벡터링 처리를 수행하는 단계는
상기 입력 데이터 및 상기 입력 데이터에 대한 보수에 대하여 제 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.
상기 나머지 벡터링 처리부에서 벡터링 처리를 수행하는 단계는
상기 입력 데이터, 상기 입력 데이터에 대한 보수, 상기 입력 데이터를 우측으로 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.
상기 로테이션 처리부에서 로테이션 처리를 수행하는 단계는
상기 로테이션 입력 데이터, 상기 로테이션 입력 데이터에 대한 보수, 상기 로테이션 입력 데이터를 우측으로 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.
상기 로테이션 처리부에서 로테이션 처리를 수행하는 단계에서 출력된 삼각함수 출력값에 미리 설정된 팩터를 곱하여 상기 입력 데이터에 대한 사인값 또는 코사인값을 산출하는 단계를 더 포함하는 코딕 프로세싱 방법.
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.
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) |
-
2010
- 2010-08-23 KR KR1020100081375A patent/KR101158548B1/en not_active IP Right Cessation
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 |