KR102468112B1 - 삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법 - Google Patents

삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법 Download PDF

Info

Publication number
KR102468112B1
KR102468112B1 KR1020150100272A KR20150100272A KR102468112B1 KR 102468112 B1 KR102468112 B1 KR 102468112B1 KR 1020150100272 A KR1020150100272 A KR 1020150100272A KR 20150100272 A KR20150100272 A KR 20150100272A KR 102468112 B1 KR102468112 B1 KR 102468112B1
Authority
KR
South Korea
Prior art keywords
rotation
candidate angles
codec
cordic
trigonometric function
Prior art date
Application number
KR1020150100272A
Other languages
English (en)
Other versions
KR20170008998A (ko
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 KR1020150100272A priority Critical patent/KR102468112B1/ko
Publication of KR20170008998A publication Critical patent/KR20170008998A/ko
Application granted granted Critical
Publication of KR102468112B1 publication Critical patent/KR102468112B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • G06F1/0321Waveform generators, i.e. devices for generating periodical functions of time, e.g. direct digital synthesizers
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5446Methods 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 for evaluating functions by calculation using crossaddition algorithms, e.g. CORDIC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

코딕(CORDIC, Coordinate Rotation Digital Computer) 알고리즘을 이용하여 삼각함수를 생성하는 방법이 개시된다. 본 방법은 하나의 목표 회전 각도를 생성하기 위한 복수의 후보 각도를 추출하는 제1 단계, 추출된 복수의 후보 각도 각각에 대하여 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나를 적용하는 제2 단계, 및 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나가 적용된 복수의 후보 각도 각각에 대한 반복(Iteration)을 통하여 코딕 연산을 수행하는 제3 단계를 포함한다.

Description

삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법{METHOD FOR GENERATING A SINUSOIDAL FUNCTION AND METHOD FOR SYNTHESIZING A DIRECT DIGITAL FREQUENCY}
본 발명은 코딕(CORDIC, Coordinate Rotation Digital Computer) 알고리즘을 이용한 삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법에 관한 것으로서, 더욱 상세하게는 복수의 각도 각각에 회전 및 무회전 중 적어도 하나를 적용하는 코딕 연산을 수행하여 연산의 속도 및 정확도를 향상시키도록 하는 삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법에 관한 것이다.
최근 들어, 각종 디지털 기기가 발달함에 따라 디지털 신호 처리 기술에 대한 연구가 활발해지고 있다. 디지털 신호 처리 기술은 음성 신호 및 영상 신호를 다루는 다양한 기기에 있어서 그 응용 분야가 매우 크다. 디지털 신호 처리 기술의 분야로서는 디지털 무선 통신 분야, 적응 신호 처리, 임베디드 시스템, 로봇 공학, 애니메이션 등 광범위한 분야가 포함될 수 있다.
이러한 디지털 신호 처리 기술에 매우 광범위하게 사용되고 있는 코딕(CORDIC, Coordinate Rotation Digital Computer) 알고리즘은 1959년에 Jack E Volder에 의해 제안된 이후로 디지털 신호 처리 기술의 다양한 분야에서 삼각함수의 계산을 위해 사용되고 있다. 이러한 코딕 알고리즘은 간단한 연산만으로 삼각함수를 계산할 수 있기 때문에, 하드웨어가 차지하는 면적을 작게 할 수 있다는 장점을 가지고 있다.
최근에는 디지털 신호 처리의 속도 및 정확도에 대한 연구가 활발히 진행되고 있으며, 이에 따라 코딕 알고리즘을 이용한 삼각함수 생성 방법에 대한 개선이 필요한 실정이다.
본 발명은 상술한 필요성에 따른 것으로, 본 발명의 목적은 복수의 후보 각도 각각에 대하여 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나를 적용하는 코딕 연산을 수행하는 삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법을 제공하기 위함이다.
상기의 목적을 달성하기 위해, 본 발명의 일 실시예에 따른 삼각함수 생성 방법은 하나의 목표 회전 각도를 생성하기 위한 복수의 후보 각도를 추출하는 제1 단계, 추출된 복수의 후보 각도 각각에 대하여 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나를 적용하는 제2 단계, 및 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나가 적용된 복수의 후보 각도 각각에 대한 반복(Iteration)을 통하여 코딕 연산을 수행하는 제3 단계를 포함한다.
또한, 제2 단계는 추출된 복수의 후보 각도에 대하여 시계 방향 회전 및 반시계 방향 회전 보다 무회전을 더 많이 적용할 수 있다.
또한, 추출된 복수의 후보 각도 중 적어도 하나가 포함된 오프셋(Offset)을 설정하는 단계를 더 포함하고, 제2 단계는 오프셋을 제외한 나머지에 대해 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나를 적용할 수 있다.
한편, 본 발명의 일 실시예에 따른 직접 디지털 주파수 합성 방법은 파이프라인(Pipeline) 구조인 복수의 코딕 스테이지(CORDIC stage) 중 적어도 하나 이상을 선택하는 제1 단계, 선택된 적어도 하나 이상의 코딕 스테이지에 대해 순차적으로 코딕 연산을 수행하는 제2 단계, 및 수행된 코딕 연산에 따라 삼각함수를 생성하는 단계를 포함하고, 제2 단계는 하나의 목표 회전 각도를 생성하기 위한 복수의 후보 각도를 추출하는 단계, 추출된 복수의 후보 각도 각각에 대하여 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나를 적용하는 단계, 및 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나가 적용된 복수의 후보 각도 각각에 대한 반복(Iteration)을 통하여 코딕 연산을 수행하는 단계를 포함한다.
또한, 제2 단계는 복수의 싸이클에 걸쳐 적어도 하나 이상의 코딕 스테이지에 대해 순차적으로 코딕 연산을 수행하고, 제3 단계는 복수의 싸이클에 걸쳐 수행된 코딕 연산에 의해 출력된 정현파 샘플을 이용하여 삼각함수를 생성할 수 있다.
또한, 제1 싸이클에 따른 코딕 연산 이후 제2 싸이클에 따른 코딕 연산이 수행되고, 제1 싸이클 동안의 코딕 연산에 이용되는 초기값은 제2 싸이클 동안의 코딕 연산에 초기값으로 이용될 수 있다.
또한, 복수의 코딕 스테이지 각각은 하나의 레지스터를 포함하고, 제1 싸이클 동안의 코딕 연산에 이용되는 특정 스테이지의 초기값은 특정 스테이지에 대한 레지스터에 저장될 수 있다.
본 발명의 실시예들 중 적어도 하나에 의하면, 디지털 신호 처리의 속도 및 정확도가 향상될 수 있다.
본 발명의 적용 가능성의 추가적인 범위는 이하의 상세한 설명으로부터 명백해질 것이다. 그러나 본 발명의 사상 및 범위 내에서 다양한 변경 및 수정은 당업자에게 명확하게 이해될 수 있으므로, 상세한 설명 및 본 발명의 바람직한 실시예와 같은 특정 실시예는 단지 예시로 주어진 것으로 이해되어야 한다.
도 1은 본 발명의 일 실시예에 따른 삼각함수 생성 방법에 관한 순서도의 일 예,
도 2는 본 발명의 일 실시예에 따른 직접 디지털 수파수 합성 방법에 관한 순서도의 일 예,
도 3은 종래 기술에 따른 직접 디지털 주파수 합성기에 대한 블럭도의 일 예,
도 4는 본 발명의 일 실시예에 따른 파이프라인(Pipeline) 구조의 코딕 회로에 대한 블럭도의 일 예,
도 5는 도 4에 도시된 코딕 회로를 복수의 코딕 스테이지로 설명하기 위한 도면의 일 예,
도 6은 종래 기술에 따른 FIR(Finite Impulse Response) 필터에 관한 블럭도의 일 예,
도 7은 본 발명의 일 실시예에 따른 FIR 필터에 관한 블럭도의 일 예,
도 8은 종래 기술에 따른 FIR 필터 중 PE(Processing Element)에 관한 블럭도의 일 예,
도 9는 본 발명의 일 실시예에 따른 FIR 필터 중 PE에 관한 블럭도의 일 예,
도 10은 본 발명의 다른 실시예에 따른 FIR 필터의 블럭도의 일 예이다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 또한, 본 명세서에 개시된 실시 예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 실시 예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 실시 예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 명세서에 개시된 기술적 사상이 제한되지 않으며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서 "포함한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
도 1은 본 발명의 일 실시예에 따른 삼각함수 생성 방법에 관한 순서도의 일 예이다. 이하에서는 본 발명의 일 실시예에 따른 삼각함수 생성 장치가 코딕(CORDIC, Coordinate Rotation Digital Computer) 알고리즘을 이용하여 삼각함수를 생성하는 방법에 대해 설명하기로 한다. 삼각함수를 생성하는 방법은 디지털 믹서(Digital Mixer), 모뎀, 기타 다양한 프로세서 등에서 이루어질 수 있다.
코딕 알고리즘은 기본적으로 평면좌표 상의 벡터를 일차 변환을 이용하여 회전 이동시켜 원하는 각도로 만들고, 해당 벡터의 좌표로 사인(sine) 값과 코사인(cosine) 값을 구하는 방법이다. 이러한 코딕 알고리즘은 한번에 원하는 각도, 즉 목표 회전 각도까지 벡터의 회전 이동을 하는 것이 아니라, 복수의 회전각, 즉 복수의 후보 각도를 선택하여 회전 이동의 계산을 하고, 이러한 회전 이동을 반복적으로 수행함으로써 목표 회전 각도에 접근하는 것이다.
이에 따라, 삼각함수 생성 장치는 먼저 하나의 목표 회전 각도를 생성하기 위한 복수의 후보 각도를 추출할 수 있다(S110). 복수의 후보 각도는 룩업 테이블에 미리 저장될 수 있다.
이후, 삼각함수 생성 장치는 추출된 복수의 후보 각도 각각에 대하여 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나를 적용할 수 있다(S120). 이에 대해서는 표 1을 이용하여 설명하기로 한다.
이후, 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나가 적용된 복수의 후보 각도 각각에 대한 반복(Iteration)을 통하여 코딕 연산을 수행할 수 있다(S130).
이하에서는 표 1을 이용하여 후보 각도에 대하여 시계 방향 회전, 반시계 방향 회전, 무회전을 각각 적용하여 반복하는 방법에 대해 설명하기로 한다. 이하의 표 1을 참조하면, 10개의 후보 각도가 룩업 테이블에 저장되어 있을 수 있다. 다만, 표 1에 따른 후보 각도는 예시에 불과하며, 그 이상의 후보 각도가 저장될 수도 있다.
Figure 112015068377607-pat00001
[표 1]
이 경우, 본 발명의 제1 실시예에 따른 삼각함수 생성 장치는 룩업 테이블에 저장된 모든 후보 각도를 이용하여 목표 회전 각도를 연산할 수 있다. 예를 들어, 목표 회전 각도가 3.46 이라면 이하의 수학식 1과 같은 방법으로 룩업 테이블에 저장된 모든 후보 각도를 이용하여 연산할 수 있다.
Figure 112015068377607-pat00002
[수학식 1]
여기서, 양의 부호는 반시계 방향으로 회전함을 의미하고, 음의 부호는 시계 방향으로 회전함을 의미할 수 있으며, 경우에 따라서는 그 반대일 수도 있다.
다만, 이러한 방법에 의하면 룩업 테이블에 저장되어야 할 후보 각도들이 많아질 뿐만 아니라, 모든 후보 각도를 연산에 이용하여야 한다. 즉, 연산 장치의 크기가 증가되고, 연산 속도가 저하될 수 있다.
따라서, 본 발명의 제2 실시예에 따른 삼각함수 생성 장치는 룩업 테이블에 저장된 후보 각도 중 일부만을 이용하여 목표 회전 각도를 연산할 수 있다. 예를 들어, 목표 회전 각도가 3.46 이라면 이하의 수학식 2와 같은 방법으로 연산할 수 있다.
Figure 112015068377607-pat00003
[수학식 2]
다시 말해, 제2 실시예에 따른 삼각함수 생성 방법은 제1 실시예에 따른 삼각함수 생성 방법에 이용된 복수의 후보 각도 중 일부를 오프셋(Offset)으로 간주하여, 이를 연산에서 제외한 것을 의미할 수 있다. 이 경우 오프셋은 미리 설정되어 저장될 수 있다. 전술한 예에서, 오프셋은 α0 내지 α4 일 수 있다. 한편, 목표 회전 각도에 더욱 근접한 값을 연산하기 위해서는 전술한 방법에 따른 연산의 횟수를 늘림으로써 가능할 수 있다.
따라서, 제2 실시예에 따르면, 제1 실시예에 따른 삼각함수 생성 방법에 비해 일부의 후보 각도만을 이용할 수 있으므로, 연산 속도는 상승될 수 있다.
한편, 제1 실시예 및 제2 실시예에 따른 삼각함수 생성 방법은 후보 각도 각각에 대해서 시계 방향 또는 반시계 방향 중 어느 하나를 적용한 것이다. 그러나, 이에 한정되지 않으며, 후보 각도에 대해 무회전을 적용할 수도 있다.
다시 말해, 제3 실시예에 따른 삼각함수 생성 장치는 룩업 테이블에 저장된 후보 각도 중 일부에 대해 무회전을 적용하여 목표 회전 각도를 연산할 수 있다. 예를 들어, 목표 회전 각도가 3.46 이라면 이하의 수학식 3과 같은 방법으로 연산할 수 있다.
Figure 112015068377607-pat00004
[수학식 3]
제3 실시예에 따른 삼각함수 생성 방법은 제1 실시예에 따른 삼각함수 생성 방법에 이용된 복수의 후보 각도 중 α4 및 α9에 대해서만 각각 반시계 방향 회전 및 시계 방향 회전을 적용하고, 나머지 후보 각도에 대해서는 회전을 적용하지 않을 수 있다. 다시 말해, 복수의 후보 각도에 대하여 시계 방향 회전 및 반시계 방향 회전 보다 무회전을 더 많이 적용한 것일 수 있다. 한편, 목표 회전 각도에 더욱 근접한 값을 연산하기 위해서는 전술한 방법에 따른 연산의 횟수를 늘림으로써 가능할 수 있다.
따라서, 제3 실시예에 따르면, 제1 실시예 또는 제2 실시예에 따른 삼각함수 생성 방법에 비해 일부의 후보 각도만을 이용할 수 있으므로, 연산 속도는 상승될 수 있다.
이상에서 설명한 다양한 실시예에 따른 삼각함수 생성 방법은 직접 디지털 주파수의 합성 방법에 적용될 수 있다. 이하에서는 전술한 방법에 따른 직접 디지털 주파수의 합성 방법에 대해 설명하기로 한다.
도 2는 본 발명의 일 실시예에 따른 직접 디지털 주파수 합성 방법에 관한 순서도의 일 예이다. 이하에서는 본 발명의 일 실시예에 따른 직접 디지털 주파수(Direct Digital Frequency) 합성 장치가 코딕 알고리즘을 이용하여 직접 디지털 주파수를 합성하는 방법에 대해 설명하기로 한다. 또한, 전술한 설명과 중복되는 부분에 대한 설명은 생략하기로 하며, 이하 동일하다.
먼저, 직접 디지털 주파수 합성 장치는 파이프라인(Pipeline) 구조인 복수의 코딕 스테이지(CORDIC stage) 중 적어도 하나 이상을 선택할 수 있다(S210). 파이프라인 구조의 코딕 스테이지에 대해서는 도 4 내지 도 5에서 상세하도록 한다.
여기서, 선택되는 코딕 스테이지의 개수는 전술한 삼각함수 생성 방법에 따라 달라질 수 있다. 예를 들어, 제1 실시예에 따른 삼각함수 생성 방법에 의하면 후보 각도가 10개이므로, 10개의 코딕 스테이지가 선택될 수 있다. 마찬가지로, 제2 실시예에 따른 삼각함수 생성 방법에 의하면 후보 각도가 5개이므로, 5개의 코딕 스테이지가 선택될 수 있으며, 제3 실시예에 따른 삼각함수 생성 방법에 의하면 후보 각도가 2개이므로, 2개의 코딕 스테이지가 선택될 수 있다.
이후, 직접 디지털 주파수 합성 장치는 선택된 적어도 하나 이상의 코딕 스테이지에 대해 순차적으로 코딕 연산을 수행할 수 있고(S220), 그에 따라 삼각함수를 생성할 수 있다(S230).
여기서, 다양한 실시예에 따른 삼각함수 생성 방법이 직접 디지털 주파수의 합성 방법에 적용될 수 있음은 전술한 바와 같다. 따라서, 도 1에서 설명한 삼각함수의 생성 방법이 코딕 스테이지에서 수행되는 코딕 연산에 적용될 수 있다.
한편, 전술한 바와 같은 직접 디지털 주파수 합성 방법은 선택된 코딕 스테이지에 대해 한 번씩만 연산이 이루어질 수 있으나, 이에 한정되는 것은 아니다. 다시 말해, 선택된 코딕 스테이지에 대해 복수의 싸이클에 걸쳐 코딕 연산이 수행될 수도 있다.
이 경우, 제1 싸이클에 따른 코딕 연산이 수행되면, 제2 싸이클에 따른 코딕 연산이 수행될 수 있다. 따라서, 최종적으로는 기 설정된 횟수의 싸이클에 걸쳐 수행된 코딕 연산에 의해 출력된 정현파 샘플을 이용하여 삼각함수를 생성할 수 있다.
한편, 복수의 싸이클에 따른 코딕 연산은 피드백 구조로 형성된 파이프라인 구조의 코딕 회로에 의해 수행될 수 있다. 이에 대해서는 도 4 내지 도 5에서 상세하도록 한다.
도 3은 종래 기술에 따른 직접 디지털 주파수 합성기에 대한 블럭도의 일 예이다. 일반적으로 직접 디지털 주파수 합성기란 주파수 조정을 위해 주파수 레지스터로 입력되는 2진 데이터값에 대한 주파수를 출력하는 디지털 신호 발생 장치를 의미할 수 있다.
도 3을 참조하면, 직접 디지털 주파수 합성기는 주파수 입력 레지스터(110), 위상 누산부(120), 위상 진폭 변환기(130), 디지털 아날로그 변환기(DAC, 140), 저역 통과 필터(LPF: Low Pass Filter, 150)를 포함할 수 있다.
주파수 입력 레지스터(110)는 외부로부터 n 비트의 2진 주파수 조정 데이터(FCW: Frequency Control Work)를 입력받을 수 있다.
위상 누산부(120)는 위상 가산기(121) 및 위상 레지스터(122)를 포함할 수 있다. 위상 가산기(121)는 계수형 발진기(NCO: Numerical Controlled Oscillator, 미도시)를 모체로 하여, 주파수 입력 레지스터(110)를 통해 입력되는 2진 주파수 조정 데이터에 해당하는 위상값을 클럭 주파수에 따라 가산할 수 있다. 그 출력값은 위상 레지스터(122)에 의해 피드백될 수 있고, 위상 가산기(121)는 위상값이 가산되기 이전의 값과 피드백된 출력값을 가산하여 출력신호의 위상값을 계수할 수 있다.
위상 진폭 변환기(130)는 사인파의 데이터값이 저장되어 위상 누산부(120)에서 생성되어 출력된 어드레스 비트를 정현파형(Sinusoidal Waveform)을 나타내는 일련의 데이터값으로 출력할 수 있다.
디지털 아날로그 변환기(140)는 위상 진폭 변환기(130)의 출력을 양자화된 계단파형(Quantized Sinusoid)으로 변환할 수 있다.
저역 통과 필터(150)는 최종 출력단에서 정현파를 얻기 위해 디지털 아날로그 변환기(140)의 출력 신호에서 고주파 성분을 제거할 수 있다.
이상에서는 종래의 직접 디지털 주파수 합성기에 대해 설명하였다. 이하에서는 본 발명의 다양한 실시예에 따른 직접 디지털 주파수 합성 방법이 위상 진폭 변환기에 적용된 경우를 설명하기로 한다.
도 4는 본 발명의 일 실시예에 따른 파이프라인(Pipeline) 구조의 코딕 회로를 이용한 위상 진폭 변환기에 대한 블럭도의 일 예이다.
도 4를 참조하면, 위상 진폭 변환기는 신호를 입력하기 위한 레지스터(521, 253, 254), 회전 제어부(525), 회전 연산부(255)를 포함할 수 있다.
회전 제어부(525)는 반복형 구조로서, 1의 보수기(미도시)에서 출력되어 레지스터(521)를 통해 입력받은 위상각에 의해 생성되는 ai (위상각에 의해서 결정되는 부호비트) 신호의 부호를 결정하여 θi 를 연산하고, θi 의 부호비트 s[i]를 회전 연산부(255)로 전송하여 연산을 제어하도록 할 수 있다.
한편, 회전 연산부(255)는 나열된 연산 서브 블럭(로직 #0, 로직 #1, … , 로직 #k)으로 구성된 배열 구조를 가지며, 기 설정된 기본 벡터 및 회전 제어부(525)로부터 전송되는 연산 제어 신호에 의해 각 서브 블럭을 거쳐 정현파 및 직교 정현파를 구할 수 있다. 여기서, 서브 블럭은 코딕 스테이지를 의미할 수 있다.
한편, 이러한 파이프라인 구조의 코딕 회로는 피드백 구조로 형성될 수 있다. 구체적으로, 로직 #k의 출력신호가 로직 #0의 입력신호로 될 수 있다. 이에 대해서는 도 5에서 상세하도록 한다.
도 5는 도 4에 도시된 코딕 회로를 복수의 코딕 스테이지로 설명하기 위한 도면의 일 예이다. 이하에서는 피드백이 이루어지는 파이프라인 구조의 코딕 회로의 동작에 대해 설명하기로 한다.
도 5를 참조하면, 10개의 코딕 스테이지가 형성되어 있다. 다만, 코딕 연산에 이용되는 코딕 스테이지는 선택될 수 있음은 전술한 바와 같다. 따라서 도 1에서 설명한 제1 실시예에 따른 삼각함수 생성 방법에 의할 경우에는 10개의 코딕 스테이지 및 그에 따른 레지스터가 모두 사용될 수 있다. 마찬가지로, 제2 실시예에 따른 삼각함수 생성 방법에 의할 경우에는 5개의 코딕 스테이지 및 그에 따른 레지스터가 사용되며, 제3 실시예에 따른 삼각함수 생성 방법에 의할 경우에는 2개의 코딕 스테이지 및 그에 따른 레지스터가 사용될 수 있다.
이하에서는 상이한 코딕 스테이지의 개수에 따라 생성되는 정현파를 구체적인 예시로써 비교하도록 한다.
먼저, 코딕 스테이지의 개수(N)가 10, 목표 회전 각도(w)가 -1.070 이라고 가정한다. 이 경우, 이하의 수학식 4 내지 수학식 6 이 성립하므로, 수학식 7 과 같은 정현파가 생성될 수 있다. 여기서, αn 은 회전 각도이며, δn 은 방향을 의미할 수 있다.
Figure 112015068377607-pat00005
[수학식 4]
Figure 112015068377607-pat00006
[수학식 5]
Figure 112015068377607-pat00007
[수학식 6]
Figure 112015068377607-pat00008
[수학식 7]
이에 대해, 코딕 스테이지의 개수(N)가 9인 경우를 살펴 보기로 한다. 목표 회전 각도(w)가 -1.070 로서 같다고 하면, 전술한 수학식 4 내지 수학식 6 이 성립하므로, 수학식 8 과 같은 정현파가 생성될 수 있다.
Figure 112015068377607-pat00009
[수학식 8]
이와 같이, 수학식 7 및 수학식 8의 결과를 비교하면, 코딕 스테이지의 개수가 감소함에 따라 연산의 정확도는 향상될 수 있다. 뿐만 아니라, 사용되는 코딕 스테이지의 개수가 줄어들게 되므로, 연산 속도는 증가될 수 있다.
한편, 이러한 코딕 스테이지에 따른 코딕 연산은 복수의 싸이클에 걸쳐 이루어질 수 있다. 따라서, 제1 싸이클에 따른 코딕 연산의 결과는 제2 싸이클에 따른 코딕 연산에 사용될 수 있으며, 이러한 동작은 도 5에 도시된 바와 같은 피드백 구조의 코딕 스테이지에 의해 가능할 수 있다.
또한, 전술한 바와 같은 동작이 이루어지기 위해서는 레지스터에 초기값이 저장되어 있어야 하며, 저장된 초기값은 각각의 코딕 스테이지에서 이루어지는 연산에 이용될 수 있다.
여기서, 본 발명에 따른 파이프라인 구조의 코딕 회로는 피드백 구조로 형성될 수 있음은 전술한 바와 같다. 따라서, 각각의 코딕 스테이지에 대응되는 레지스터에는 최초 싸이클에 필요한 하나의 초기값만이 저장되어 있는 것으로 충분하며, 다음 싸이클에 필요한 코딕 스테이지의 초기값은 이전 싸이클에 사용된 초기값이 업데이트되어 각각의 레지스터에 저장된 것일 수 있다. 이에 대해서는 표 2를 이용하여 설명하기로 한다. 다만, 표 2는 예시에 불과하며, 코딕 스테이지의 개수 및 싸이클의 개수는 경우에 따라 달라질 수도 있다.
Figure 112015068377607-pat00010
[표 2]
표 2를 참조하면, 제1 싸이클(Cycle #0)에서는 10개의 코딕 스테이지가 코딕 연산에 사용될 수 있다. 10개의 코딕 스테이지 각각에 대응되는 레지스터에는 각 스테이지의 초기값이 미리 저장되어 연산에 사용될 수 있다. 예를 들어, 제1 레지스터에 저장된 초기값은 제1 코딕 스테이지에서의 코딕 연산에 사용될 수 있고, 제2 레지스터에 저장된 초기값은 제2 코딕 스테이지에서의 코딕 연산에 사용될 수 있다.
구체적인 연산 방법에 대해서는 도 1 내지 도 5에서 설명한 바와 같으며, 이러한 방법에 의해 제1 싸이클은 종료될 수 있다.
이후, 제2 싸이클(Cycle #1)이 개시될 수 있다. 제2 싸이클에서도 10개의 코딕 스테이지가 코딕 연산에 사용될 수 있다.
여기서, 제1 싸이클에서 사용된 각 레지스터의 초기값은 업데이트되어 제2 싸이클에서 사용될 수 있다. 구체적으로, 제2 싸이클의 제2 코딕 스테이지에서 사용될 제2 레지스터의 초기값은 제1 싸이클의 제1 코딕 스테이지에서 사용되었던 제1 레지스터의 초기값으로 업데이트될 수 있다. 마찬가지로, 제2 싸이클의 제3 코딕 스테이지에서 사용될 제3 레지스터의 초기값은 제1 싸이클의 제2 코딕 스테이지에서 사용되었던 제2 레지스터의 초기값으로 업데이트될 수 있다.
따라서, 각각의 싸이클에 따른 레지스터가 별도로 구비될 필요는 없으므로, 연산 장치의 크기는 작아질 수 있다. 또한, 각각의 싸이클에 따라 초기값이 업데이트되므로, 코딕 연산의 속도는 향상될 수 있다.
한편, 이동통신 단말기를 포함한 많은 디지털 기기들은 펄스 쉐이핑(Pulse Shaping), 채널 이퀄라이징(Channel Equalizing) 등 다양한 어플리케이션에 FIR(무한 임펄스 응답, Finite Impulse Response) 필터를 사용할 수 있다. 이러한 FIR 필터에 따른 구조는 CSM(Constant Shift Method) 구조로 불리기도 한다. 도 6은 종래 기술에 따른 FIR 필터에 관한 블럭도의 일 예이다. 도 6에서는 종래의 CSM 구조에 대해 개략적으로 설명하기로 한다.
도 6을 참조하면, FIR 필터(300)는 쉬프트 앤 애더(Shift and Adder, 310), 저장부(320), 복수의 PE(330-1 ~ 330-M), 복수의 플립플롭(340-1 ~ 340-(M-1)), 복수의 애더(350-1 ~ 350-M)를 포함할 수 있다. 여기서 저장부(320)는 룩업 테이블(LUT: Look Up Table)을 의미하며, FIR 필터의 계수(hM-1 ~ h0)를 저장할 수 있다.
쉬프트 앤 애더(310)는 입력 신호(xn)가 PE에서의 연산이 가능하도록 하는 구성요소이다.
복수의 PE(330-1 ~ 330-M) 각각은 쉬프트 앤 애더(310)의 연산 결과를 저장부(320)에 저장된 필터 계수와 곱할 수 있다. 한편, PE의 개수는 FIR 필터의 차수에 따라 결정될 수 있다. 또한, 복수의 PE(330-1 ~ 330-M) 각각은 먹스(MUX: Multiplexer)로 구현될 수 있다.
복수의 플립플롭(340-1 ~ 340-(M-1))은 필터 계수에 동기되어, 입력 신호를 최종적으로 쉬프트할 수 있다. 여기서, 플립플롭은 쉬프트를 의미할 수 있다.
복수의 애더(350-1 ~ 350-M)는 각각의 PE에 의해 승산되어 출력된 신호를 최종적으로 가산한 후 출력 신호(y[n])를 출력할 수 있다.
한편, 상기의 구성은 전술한 설명 이외에 다양한 기능을 할 수 있으며, 이는 널리 알려진 바, 추가적인 설명은 생략하기로 한다.
이러한 종래의 FIR 필터에 포함된 먹스, 쉬프트, 애더 등의 개수는 FIR 필터 계수의 워드 길이(word length)에 의해 결정될 수 있다. 따라서, 입력 워드 길이보다 계수 워드 길이가 크다면, 더 많은 먹스, 쉬프트, 애더 등이 필요하게 되므로, 필터의 크기가 증가되며, 신호 지연이 발생할 수 있다.
이하에서는 이러한 문제점을 해결하기 위한 방안에 대해 검토하기로 한다.
도 7은 본 발명의 일 실시예에 따른 FIR 필터에 관한 블럭도의 일 예이다. 이하에서는 전술한 설명과 중복되는 부분에 대한 설명은 생략하기로 한다.
도 7을 참조하면, 본 발명의 일 실시예에 따른 FIR 필터의 구조는 종래의 기술과 동일할 수 있으며, 다만 입력 신호와 계수가 스와이핑(swaping)된 것이다. 구체적으로, 종래 기술에 따르면 입력 신호 및 필터 계수는 각각 xn 및 (hM-1 ~ h0)이었으나, 본 발명에 따르면 (hM-1 ~ h0) 및 xn 이다.
다시 말해, 본 발명에 따르면 종래에 룩업 테이블에 저장된 필터 계수가 쉬프트 앤 애더(410)의 입력으로 되고, 종래에 쉬프트 앤 애더의 입력으로 되었던 입력 신호는 룩업 테이블(420)에 저장되어 각각의 PE(430-1 ~ 430-k)의 연산에 이용될 수 있다.
이에 따라, 입력 워드 길이보다 계수 워드 길이가 크더라도, 필터의 크기는 증가되지 않을 수 있다. 구체적으로, 도 8 내지 도 9에서 종래의 FIR 필터 및 본 발명에 따른 FIR 필터를 비교하기로 한다.
도 8은 종래 기술에 따른 FIR 필터 중 PE에 관한 블럭도의 일 예이며, 도 9는 본 발명의 일 실시예에 따른 FIR 필터 중 PE에 관한 블럭도의 일 예이다. 도 8 내지 도 9에서는 입력 신호가 9 비트이고, 필터 계수가 16 비트인 경우를 예시하여 도시한 것이다.
도 8을 참조하면, 9 비트의 신호가 입력되고, 16 비트의 필터 계수가 룩업 테이블(320)에 저장될 수 있다. 따라서, 제1 PE(330-1)는 도 8에 도시된 바와 같이, 6개의 먹스(M1 ~ M6) 및 4개의 애더(A1 ~ A4)로 구성될 수 있다.
이에 반해, 도 9를 참조하면, 16 비트의 신호가 입력되고, 9 비트의 필터 계수가 룩업 테이블(420)에 저장될 수 있다. 따라서, 제1 PE(430-1)는 도 9에 도시된 바와 같이, 4개의 먹스(M11 ~ M41) 및 2개의 애더(A11 ~ A21)로 구성될 수 있다.
따라서, 본 발명의 일 실시예에 따르면, 입력 워드 길이보다 계수 워드 길이가 크더라도, 필터의 크기는 증가되지 않을 수 있다.
한편, 이러한 본 발명의 일 실시예에 따르면, 입력 신호와 필터 계수가 입력되는 위치가 바뀌었기 때문에, PE의 연산에 이용되는 신호는 규칙적으로 엇갈릴 수 있다. 이로 인해, PE의 출력 신호가 엇갈리지 않도록 하기 위해서는 이들을 대칭 구조로 만들 필요가 있으며, 이하에서는 추가적인 먹스 및 플립플롭을 사용한 실시예에 대해 설명하기로 한다.
도 10은 본 발명의 다른 실시예에 따른 FIR 필터에 관한 블럭도의 일 예이다. 이하에서는 전술한 설명과 중복되는 부분에 대한 설명은 생략하기로 한다. 도 10은 4개의 PE(530-1 ~ 530-4)가 포함된 FIR 필터를 예시로 한 것이다.
도 10을 참조하면, 4개의 PE(530-1 ~ 530-4) 각각의 출력단에 추가적인 플립플롭 및 먹스가 연결될 수 있다. 구체적으로, 제1 먹스(M13)에는 제1 PE(530-1)의 출력 신호, 한 개의 플립플롭(D6)을 통과한 제2 PE(530-2)의 출력 신호, 두 개의 플립플롭(D4, D5)을 통과한 제3 PE(530-3)의 출력 신호, 세 개의 플립플롭(D1, D2, D3)을 통과한 제4 PE(530-4)의 출력 신호가 각각 입력될 수 있다. 마찬가지로, 나머지 먹스(M23, M33, M43)에 입력되는 신호는 도 10에 도시된 바와 같다.
이후, 제1 내지 제4 먹스(M13 ~ M43)의 각 출력 신호는 순차적으로 쉬프트 및 가산 연산이 수행됨으로써 최종적으로 출력될 수 있다. 구체적으로, 제1 먹스(M13)의 출력 신호는 플립플롭(D7)에 의해 쉬프트되어 애더(A13)에 의해 제2 먹스(M23)의 출력 신호와 가산될 수 있다. 마찬가지로, 나머지 플립플롭(D8 ~ D13) 및 애더(A23 ~ A73)에 의한 연산이 순차적으로 수행될 수 있다.
전술한 바와 같이, 본 발명의 다른 실시예에 따른 FIR 필터는 본 발명의 일 실시예에 따른 FIR 필터에 추가적인 플립플롭 및 먹스 등을 포함하도록 함으로써, 입력 신호와 필터 계수의 스와이핑에 따른 출력 신호의 순서를 회복시킬 수 있다.
전술한 본 발명은 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 매체의 예로는 HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 상기 컴퓨터는 디스플레이 장치의 제어부(160)를 포함할 수도 있다. 따라서 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
400: FIR(Finite Impulse Response) 필터 410: 쉬프트 앤 애더
420: 룩업 테이블(LUT: Look Up Table) 430: PE(Processing Element)
440: 플립플롭(Flip Flop) 450: 애더(Adder)

Claims (7)

  1. 코딕(CORDIC; Coordinate Rotation Digital Computer) 알고리즘을 이용하여 삼각함수를 생성하는 방법에 있어서,
    하나의 목표 회전 각도를 생성하기 위한 복수의 후보 각도를 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나가 적용된 상기 복수의 후보 각도를 저장한 룩업 테이블로부터 추출하는 제1 단계;
    상기 추출된 복수의 후보 각도 각각에 대하여 시계 방향 회전, 반시계 방향 회전, 및 무회전 중 적어도 하나를 적용하는 제2 단계; 및
    상기 시계 방향 회전, 상기 반시계 방향 회전, 및 상기 무회전 중 적어도 하나가 적용된 복수의 후보 각도 각각에 대한 반복(Iteration)을 통하여 코딕 연산을 수행하는 제3 단계;를 포함하고,
    상기 제2 단계에서,
    상기 추출된 복수의 후보 각도는 시계 방향 회전의 후보 각도 및 반시계 방향 회전의 후보 각도 보다 무회전을 갖는 후보 각도를 더 많이 포함하며,
    상기 제3 단계는,
    상기 추출된 복수의 후보 각도 중 상기 룩업 테이블을 참조해 오프셋 후보 각도를 선택하고, 선택된 오프셋 후보 각도를 제외한 나머지 후보 각도에 대해서만 코딕 연산을 수행하는,
    삼각함수 생성 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
KR1020150100272A 2015-07-15 2015-07-15 삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법 KR102468112B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150100272A KR102468112B1 (ko) 2015-07-15 2015-07-15 삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150100272A KR102468112B1 (ko) 2015-07-15 2015-07-15 삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법

Publications (2)

Publication Number Publication Date
KR20170008998A KR20170008998A (ko) 2017-01-25
KR102468112B1 true KR102468112B1 (ko) 2022-11-18

Family

ID=57991615

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150100272A KR102468112B1 (ko) 2015-07-15 2015-07-15 삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법

Country Status (1)

Country Link
KR (1) KR102468112B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012105328A (ja) * 2006-07-14 2012-05-31 Qualcomm Inc ワイヤレス通信のための多重搬送波送信機

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990085924A (ko) * 1998-05-22 1999-12-15 윤종용 삼각함수 생성장치 및 방법
KR101346768B1 (ko) * 2012-02-14 2013-12-31 고려대학교 산학협력단 코딕 처리 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012105328A (ja) * 2006-07-14 2012-05-31 Qualcomm Inc ワイヤレス通信のための多重搬送波送信機

Also Published As

Publication number Publication date
KR20170008998A (ko) 2017-01-25

Similar Documents

Publication Publication Date Title
Vachhani et al. Efficient CORDIC algorithms and architectures for low area and high throughput implementation
US9047148B2 (en) Pipelined vectoring-mode CORDIC
Kumar FPGA implementation of the trigonometric functions using the CORDIC algorithm
Pouyan et al. A VLSI implementation of logarithmic and exponential functions using a novel parabolic synthesis methodology compared to the CORDIC algorithm
CN111813372B (zh) 一种高精度低时延实现32位整数除法的方法及装置
Chinnathambi et al. FPGA implementation of fast and area efficient CORDIC algorithm
US9151842B2 (en) Method and apparatus for time of flight sensor 2-dimensional and 3-dimensional map generation
JP5733379B2 (ja) プロセッサおよび演算方法
KR102468112B1 (ko) 삼각함수 생성 방법 및 직접 디지털 주파수 합성 방법
Bangqiang et al. Base-N logarithm implementation on FPGA for the data with random decimal point positions
KR20140114042A (ko) 고정확성의 사인―코사인 파 및 주파수 생성기들, 및 관련 시스템들 및 방법들
US8924447B2 (en) Double precision approximation of a single precision operation
KR101346768B1 (ko) 코딕 처리 장치 및 방법
KR19990085924A (ko) 삼각함수 생성장치 및 방법
CN112260687B (zh) 一种相幅转换器及相幅转换器的转换方法
JP2013246772A (ja) 逆正接演算回路および逆正接演算方法
Huang et al. FPGA Implementation of a Novel Type DDS Based on CORDIC Algorithm
CN116388754A (zh) 一种基于改进cordic算法的数控振荡器的实现方法
Ashrafi Optimization of the quantized coefficients for DDFS utilizing polynomial interpolation methods
CN116991362A (zh) 模乘运算处理方法、装置、电子设备及可读介质
WO2014091693A1 (ja) 信号生成装置、信号生成方法及び数値制御発振器
Pujari et al. Design and FPGA Implementation of pre-computation based radix-4 hyperbolic CORDIC for Direct Digital Synthesis
KR101158548B1 (ko) 코딕 프로세서 및 이를 이용한 코딕 처리 방법
JP6048560B1 (ja) 情報処理装置、情報処理方法、及び、プログラム
Gao et al. Improved double angle complex rotation QRD-RLS

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant