KR100271571B1 - 디지탈신호처리기 - Google Patents

디지탈신호처리기 Download PDF

Info

Publication number
KR100271571B1
KR100271571B1 KR1019980012318A KR19980012318A KR100271571B1 KR 100271571 B1 KR100271571 B1 KR 100271571B1 KR 1019980012318 A KR1019980012318 A KR 1019980012318A KR 19980012318 A KR19980012318 A KR 19980012318A KR 100271571 B1 KR100271571 B1 KR 100271571B1
Authority
KR
South Korea
Prior art keywords
data
bits
bit
multiplexer
dsp
Prior art date
Application number
KR1019980012318A
Other languages
English (en)
Other versions
KR19990079636A (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 KR1019980012318A priority Critical patent/KR100271571B1/ko
Priority to US09/143,351 priority patent/US6209017B1/en
Priority to GB9818919A priority patent/GB2330226B/en
Priority to GB0007909A priority patent/GB2345562B/en
Priority to GB0007912A priority patent/GB2345563B/en
Priority to DE19839627A priority patent/DE19839627B4/de
Publication of KR19990079636A publication Critical patent/KR19990079636A/ko
Application granted granted Critical
Publication of KR100271571B1 publication Critical patent/KR100271571B1/ko

Links

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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations

Abstract

본 발명은 워드길이가 짧은 누적용 레지스터와 ALU를 가짐과 아울러 응답속도가 빠른 DSP에 관한 것이다.
DSP는 N 비트의 데이터를 입력하기 위한 데이터 입력수단과, 데이터 입력수단으로부터의 N비트 데이터의 상위 비트에 g비트의 가드 비트를 부가하는 가드 비트 부가수단과, 가드 비트 부가수단으로부터의 데이터를 연산하는 연산수단과, 연산수단으로부터의 데이터의 상위 g+1 비트들의 논리 값에 따라 포화 처리하는 포화처리수단을 구비한다. 이러한 DSP에는 IFFT (Inverse Fast Fourier Transform)의 특성이 적용되어진 ALU 구조가 포함되게 됨으로써 일반적인 연산시 필요한 정확도를 기하기 위해 사용되었던 라운딩 비트들이 제거되게 된다.

Description

디지탈신호처리기(Digital Signal Processor)
본 발명은 각종 디지털 신호 (Digital Signal)를 처리하기 위한 디지탈신호처리기(Digital Signal Processor : 이하 "DSP"라 함)에 관한 것이다.
최근, 다양한 디지털신호처리 알고리듬들이 하드웨어 디바이스 또는 프로그래머블 DSP로 구현되고 있다. 나아가, 높은 정확도의 연산 및 고속동작을 요구하는 MPEG (Moving Picture Experts Group) 오디오 또는 돌비 (Dolby) 디지털 (AC-3)과 같은 매우 복잡한 디지털신호처리 알고리듬도 구현되고 있다. 이러한 디지털신호처리 알고리듬들에는 IFFT (Inversed Fast Fourier Transform)과 같은 복합연산식들이 포함되게 된다. 디지털신호처리 알고리듬에 포함되어진 복합연산식들은 그 길이 (이하 "블록길이"라 함)가 달라 질 수 있다. 이는 DSP가 시간 대 주파수간의 해상도 (Time vs. Frequency Resolution)에 기인한다. 또한, 블록길이가 다른 복합연산식들은 블록길이와 무관하게 동일한 형태로 연산되게 된다. 실제로, AC-3 알고리듬은 두종류의 블록길이를 가지는 역변환을 사용함으로써 시간 대 주파수간의 해상도에 적절하게 유지하고 있다. 이를 상세히 하면, AC-3 알고리듬은 짧은 블록길이의 IFFT (Inverse Fast Fourier Transform)에 의해서 시간축 상에서의 신호의 해상도를 향상시키거나 또는 긴 블록길이의 IFFT에 의해서 주파수축 상에서의 신호의 해상도를 향상시키고 있다. AC-3 알고리듬의 역변환에는 64 또는 128 블록길이의 복소수 IFFT가 사용되지만 복소수 IFFT의 블록길이와 무관하게 AC-3 알고리듬의 역변환은 동일하게 진행되게 된다. AC-3 알고리듬의 역변환방법은 도1에서와 같이 MDCT 트랜스폼에 사용되어질 지수들이 정의 된 다음 연속적으로 수행되게 되는 프리-IFFT, 복소수 IFFT 및 포스트(Post) IFFT를 포함한다. 아울러 AC-3 알고리듬의 역변환방법에서는 포스트 IFFT에 이어서 윈도우 연산과 중첩·덧셈 연산이 순차적으로 수행되게 된다. IFFT는 래딕스 (Radix)-2 FFT 알고리듬에 의해 구현되게 되며, 이 래딕스-2 알고리듬으로는 도2 에 도시된 바와 같은 블록길이가 8인 래딕스-2 알고리듬의 연산과정을 들 수 있다. 도2 에서와 같이, 래딕스-2 알고리듬의 IFFT에는 버터플라이 구조의 연산이 규칙적으로 배열되게 된다. 래딕스-2 알고리듬의 IFFT에 포함되어진 버터플라이 구조의 연산은 도3 와 같이 표시될 수 있다. 이러한 버터플라이 구조의 연산은 복소수 평면에서 진행될 경우 수학식1 과 같이 표현되게 된다.
Xout= xin+ yin·Wk N
Xout= xin- yin·Wk N, (Wk N= e-2πk/N)
Re(Xout) = Re(xin) + Re(yin)cos(-2πk/N) - Im(yin)sin(-2πk/N)
Im(Xout) = Im(xin) + Im(yin)cos(-2πk/N) + Re(yin)sin(-2πk/N)
Re(Yout) = Re(xin) - Re(yin)cos(-2πk/N) + Im(yin)sin(-2πk/N)
Re(Yout) = Im(xin) - Im(yin)cos(-2πk/N) - Re(yin)sin(-2πk/N)
수학식 1에서, Re(x)는 실수부를 그리고 Im(x)는 허수부를 각각 나타낸다.
이러한 간단한 사칙연산에서부터 버터플라이 구조의 연산까지의 모든 연산을 수행하기 위한 DSP에는 고정소수점 연산 또는 부동소수점 연산이 이용된다. 부동소수점 연산을 이용한 디지털신호처리 알고리듬은 고정소수점 연산을 이용한 디지털 신호처리 알고리듬에 비하여 보다 정확한 결과를 제공하는 반면에 고정소수점 연산을 이용한 디지털신호처리 알고리듬은 부동소수점 연산의 것 보다 현저하게 작은 비용을 소모하게 된다. 이에 따라, 대부분의 DSP들은 고정소수점 연산을 이용하게끔 구현되고 있다. 고정소수점 연산방식의 DSP가 사용되는 경우에 수학식 1 에서의 코사인 및 사인 상수들은 고정소수점의 형태로 변환되어 메모리에 저장되어야 한다. 또한, 이 경우, 변환과정에서는 우선적으로 실수와 N비트의 상수와의 오차가 발생되게 된다. 이렇게 발생되는 오차는 상수의 범위가 -1에서 1 사이의 값이고 고정소수점 연산에 사용되기 위한 가상소수점이 N비트의 차상위 비트에 위치하는 경우에 -2N에서 2N의 범위를 가지게 된다.
이와 같은 연산과정에서의 오차의 발생을 방지하기 위하여, 일반적인 N비트 고정소수점 연산방식의 DSP에 승산기와 함께 DSP에 포함되어진 연산 로직 유니트 (Arithmetic Logic Unit ; 이하 "ALU"라 함)는 8+2N의 워드길이를 가지게 된다. 여기서 "8"은 오버플로우(Overflow)를 보호하기 위해 통상 사용되는 잉여 비트들이다. 이에 따라, MPEG 오디오 및 AC-3을 위한 대부분의 디코더들은 ALU가 8+2N 의 워드길이를 가짐과 아울러 N 이 20 또는 24 비트인 경우에 MPEG 오디오 및 AC-3이 요구하는 오디오 품질을 유지하기에 충분한 20 또는 24 비트의 메모리 용량을 가지게 된다. 또한, DSP에는 ALU와 함께 누적기를 이루는 누적용 레지스터가 포함되게 된다. 이 누적용 레지스터도 ALU에 의해 연산되어진 결과를 일시적으로 저장하기 위해서는 ALU와 동일한 8+2N 의 워드길이를 가지게 된다. 이들 ALU 및 누적용 레지스터 모두가 데이터의 워드길이(N) 보다 2배 이상 긴 워드길이(8+2N)를 가지는 ALU 및 누적용 레지스터는 DSP의 연산량이 많아지게 함과 아울러 DSP의 응답속도가 떨어지게 한다.
DSP의 응답속도를 향상시킴과 아울러 DSP의 연산량을 줄이기 위한 방안으로서, 본원 출원인에 의해 제안되어진 한국특허출원 제 97-45341 호를 들 수 있다. 한국특허출원 제 97-45341 호에 따르면, DSP에 포함되어진 ALU 및 누적용 레지스터 각각은 g+N+r 비트의 워드길이를 가지게 된다. 여기서, N 은 데이터의 워드길이이고, g 는 오버플로우 보호를 위해 마련된 잉여 비트들의 길이이고, 그리고 r 은 반올림에러(Round-off Errors)를 방지하기 위한 것으로서 데이터의 워드길이(N) 보다 짧은 라운딩 비트들의 길이를 나타낸다. 이렇게 g+N+r 의 워드길이의 누적기가 포함되어진 DSP에서는 도4 에서와 같은 형태로 고정소수점 연산이 수행되게 된다. 도4 에 있어서, 제1 및 제2 데이터(10,12)는 도시되지 않은 메모리로부터 판독되어진 것들로서, N비트의 워드길이를 가짐과 아울러 정수부와 소수부로 이루어져 있다. 이들 제1 및 제2 데이터(10,12)는 승산기에 의해 승산됨으로써 2N비트의 워드길이를 가지는 제3 데이터(14)를 발생시키게 된다. 이 제3 데이터(14)는 곱셈용 레지스터에 저장되게 된다. 또한, 제3 데이터(14)는 쉬프트 곱셈 레지스터로 이동될 때에 r 비트들만큼 좌측으로 쉬프트 됨으로써 제4 데이터(16)로 변화된다. 제4 데이터(16)는 N-r 의 하위 비트들이 잘려짐과 아울러 g 비트의 상위 비트들이 부가됨으로써 g+N+r 의 워드길이를 가지는 제5 데이터(18)를 생성하게 된다. 이렇게 생성되어진 제5 데이터(18)는 누적기에 의해 연산되게 된다. 누적기에 의해 연산되어진 제5 데이터(18)는 상위 g+1 비트들의 논리 값에 따라 포화 처리됨과 아울러 하위 r비트로부터 반올림됨으로써 N비트의 제6 데이터(20)로 변화되게 된다. 이 제6 데이터(20)는 메모리에 저장되게 된다. 이와 같이 한국특허출원 제97-45341호에 개시된 DSP에서는 누적기의 워드길이가 g+N+r 비트들로 짧아짐으로써 DSP의 연산 량이 줄어들게 됨과 아울러 응답속도가 향상될 수 있었다. 그러나, 한국특허출원 제97-45341호의 DSP에서도 반올림 에러를 위한 라운딩 비트들이 존재하므로 DSP의 연산 량이 한계 이하로 줄어들 수 없음은 물론이거니와 DSP의 응답속도도 한계 이상으로 향상될 수 없다. 이러한 이유에서, DSP에서는 연산시 발생되는 오차를 줄이면서도 워드길이가 짧은 ALU가 요구되고 있다.
따라서, 본 발명의 목적은 워드길이가 짧은 누적용 레지스터와 ALU를 가지는 DSP를 제공함에 있다.
본 발명의 다른 목적은 데이터의 라운딩 과정을 제거할 수 있는 DSP를 제공함에 있다.
도1 는 AC-3 디코딩의 역변환과정을 설명하는 도면.
도2 은 8 포인트 래딕스-2 FFT 구조를 설명하는 도면.
도3 는 버터플라이 구조를 설명하는 도면.
도4 은 종래의 DSP의 신호처리과정을 개략적으로 도시하는 도면.
도5 는 본 발명에 따른 DSP를 개략적으로 도시하는 도면.
도6 은 도5 의 DSP의 신호처리과정을 개략적으로 도시하는 도면.
상기 목적을 달성하기 위하여, 본 발명에 따른 DSP는 N 비트의 데이터를 입력하기 위한 데이터 입력수단과, 데이터 입력수단으로부터의 N비트 데이터의 상위 비트에 g비트의 가드 비트를 부가하는 가드 비트 부가수단과, 가드 비트 부가수단으로부터의 데이터를 연산하는 연산수단과, 연산수단으로부터의 데이터의 상위 g+1 비트들의 논리 값에 따라 포화 처리하는 포화처리수단을 구비한다.
상기 목적 외에 본 발명의 다른 목적 및 이점들은 첨부한 도면을 참조한 실시 예에 대한 상세한 설명을 통하여 명백하게 드러나게 될 것이다.
이하, 본 발명의 실시 예를 첨부한 도5 및 도6 을 참조하여 상세히 설명하기로 한다.
도2 을 참조하면, 제1 외부버스(31)로부터 N 비트의 데이터를 입력하기 위한 제1 레지스터(30)와, 이 제1 레지스터(30)에 접속된 가드 비트 부가기(32)를 구비하는 본 발명의 실시 예에 따른 DSP가 도시되어 있다. 제1 외부버스(31)는 도시하지 않은 작업용 메모리에 공통적으로 접속되어진 N 개의 데이터라인들로 구성된 것으로서 N비트의 제1 읽기전용데이터버스(First Read Data Bus)로 사용된다. 제1 레지스터(30)는 제1 외부버스(31)를 경유하여 메모리로부터의 N 비트의 데이터를 일시적으로 보관하게 된다. 가드비트부가기(32)는 제1 레지스터(30)로부터의 N 비트의 데이터에 g 비트의 가드 비트들을 부가한다. g 비트의 가드 비트들은 모두 "0"으로 세트되거나 데이터의 사인을 확장시키게 된다. 이를 상세히 하면, g 비트의 가드 비트들은 사인-확장모드가 세트된 경우에 모두 데이터의 사인 비트와 동일한 논리 값을 그리고 사인-확장모드가 리세트된 경우에는 모두 "0"의 논리 값을 가지게 된다. 사인-확장모드는 특정한 명령어에 의해 세트 또는 리세트된다. 이들 g 비트의 가드 비트들을 N 비트의 데이터에 부가하기 위하여, 가드비트부가기(32)는 N 개의 단자들로 이루어진 제1 레지스터(30)의 출력포트를 제1 내부버스(35)에 포함된 g+N 개의 라인들 중 하위의 N개의 라인들에 연결시키는 배선을 가진다.
상기 DSP는 제1 외부버스(31)에 직렬 접속된 제2 레지스터(36) 및 승산기(40)와, 제1 및 제2 외부버스(31,33)와 접속되어진 제1 멀티플렉서(34)를 추가로 구비한다. 제2 레지스터(36)는 제1 레지스터(30)와 마찬가지로 제1 외부버스(31)를 경유하여 입력되는 메모리로부터의 N 비트 데이터를 일시적으로 저장하는 역할을 담당한다. 제2 외부버스(33)는 도시하지 않은 프로그램 메모리 및 CPU에 공통적으로 접속된 N개의 라인들로 구성된 것으로서 제2 읽기 전용 데이터 버스(Second read data bus)로 사용된다. 프로그램 메모리에는 IFFT를 위한 코사인 상수와 사인 상수가 같은 부호로 저장되어 있게 된다. 이는 역변환시에 발생되는 오차를 방지하게 된다. 제1 멀티플렉서(34)는 자신의 제1 입력포트에 공급되는 제1 외부버스(31)로부터 N비트 데이터와 자신의 제2 입력포트에 공급되는 제2 외부버스(33)로부터의 N비트 데이터 중 어느 한 데이터를 제3 레지스터(38)에 공급한다. 제3 레지스터(38)는 제1 멀티플렉서(34)로부터의 N 비트 데이터를 일시적으로 저장한다. 승산기(40)는 제2 및 제3 레지스터(36,38)에 저장된 두개의 데이터를 승산 한다. 이 승산기(40)에 의해 승산 되어진 결과는 2N 비트를 가질 수 있다. 이에 따라, 승산기(40)로부터의 데이터를 일시적으로 저장하는 제4 레지스터(42)는 2N 비트의 길이를 가진다. 제4 레지스터(42)와 제2 내부버스(37) 사이에 접속된 비트 조절기(44)는 제4 레지스터(42)에 저장되어진 2N 비트의 데이터를 2N 보다 작은 N 비트의 데이터로 변환하고 그 변환된 N 비트의 데이터에 g비트의 가드 비트를 부가한다. 이를 위하여, 비트 조절기(44)는 N 개의 단자들로 이루어진 제1 레지스터(30)의 출력포트를 제1 내부버스(35)에 포함된 g+N 개의 라인들 중 하위의 N개의 라인들에 연결시키는 배선을 가진다.
그리고 상기 DSP는 제1 내부버스(35)에 공통적으로 접속되어진 제2 내지 제4 멀티플렉서(46 내지 50)를 구비한다. 제2 멀티플렉서(46)는 제1, 제2 및 제4 내부버스(35,37,43)로부터 g+N 비트의 데이터를 각각 입력하는 제1 내지 제3 입력포트를 가진다. 제2 멀티플렉서(46)는 제1, 제2 및 제4 내부버스(35,37,43)로부터의 3개의 데이터 중 어느 하나를 제1 ALU(52)에 공급한다. 제3 멀티플렉서(48)는 "0"의 논리 값을 입력하는 제1 입력포트(39)와, 제1 및 제3 내부버스(35,41)로부터 g+N 비트의 데이터를 각각 입력하는 제2 및 제3 입력포트를 구비한다. 제3 멀티플렉서(48)는 자신의 제1 내지 제3 입력포트상의 3개의 데이터 중 어느 하나를 제1 ALU(52)에 공급하게 된다. 제1 ALU(52)는 제2 및 제3 멀티플렉서(46,48)로부터의 두개의 데이터를 연산하여 그 연산된 결과를 제5 멀티플렉서(56)에 공급한다. 제4 멀티플렉서(50)도 제1 내부버스(35)로부터의 g+N 비트의 데이터와 제3 내부버스(41)로부터의 g+N 비트의 데이터를 선택적으로 배럴쉬프터(54)에 공급한다. 배럴쉬프터(54)는 제4 멀티플렉서(50)로부터의 데이터의 논리 값을 스케일하고 그 스케일링된 데이터를 제5 멀티플렉서(56)에 공급한다. 이 데이터의 스케일링을 위해 배럴쉬프터(54)는 스케일링 양에 해당하는 비트수 만큼 제4 멀티플렉서(50)로부터의 데이터의 좌측 또는 우측방향으로 쉬프트 시킨다. 또한, 배럴쉬프터(54)는 제1 ALU(52)와 병렬 접속되므로써 데이터의 전파지연시간을 최소화 할 수 있다. 이에 따라, 상기 DSP는 사칙연산, 스케일링 및 그를 포함한 사칙연산을 고속으로 수행할 수 있다. 제5 멀티플렉서(56)는 제1 ALU(52)로부터의 g+N 비트의 사칙 연산되어진 데이터와 배럴쉬프터(54)로부터의 스케일드된 데이터를 선택적으로 제5 또는 제6 레지스터(58 또는 60)에 공급한다. 제5 또는 제6 레지스터(58 또는 60)에 저장되는 데이터는 제3 내부버스(41)에 공급되게 된다. 제5 및 제6 레지스터(58,60)는 누적용 레지스터들로서 제1 ALU(52)와 함께 제1 누적기를 구성하게 된다. 제5 및 제6 레지스터(58,60) 모두 g+N 비트의 데이터를 일시적으로 저장하기 위해 g+N 비트의 길이를 가지며 아울러 제3 내부버스(41)도 g+N개의 라인으로 구성된다.
또한 상기 DSP는 제1 내부버스(35) 및 제4 내부버스(43)와 접속되어진 제6 멀티플렉서(62)와, 제1 및 제2 내부버스(35,37)와 접속되어진 제7 멀티플렉서(64)를 구비한다. 제6 멀티플렉서(62)는 "0"의 논리 값을 입력하는 제1 입력포트(45)와, 제1 및 제4 내부버스(35,43)로부터 g+N 비트의 데이터를 각각 입력하는 제2 및 제3 입력포트를 구비한다. 제6 멀티플렉서(62)는 자신의 제1 내지 제3 입력포트상의 3개의 데이터 중 어느 하나를 제2 ALU(66)에 공급하게 된다. 제7 멀티플렉서(64)는 제1 및 제2 내부버스(35,37)로부터 g+N 비트의 데이터를 각각 입력하는 제1 및 제2 입력포트를 가진다. 제7 멀티플렉서(64)는 제1 및 제2 내부버스(35,37)로부터의 2개의 데이터 중 어느 하나를 제2 ALU(66)에 공급한다. 제2 ALU(66)는 제6 및 제7 멀티플렉서(62,64)로부터의 두개의 데이터를 연산하여 그 연산된 결과를 제8 멀티플렉서(68)에 공급한다. 제8 멀티플렉서(68)는 제2 ALU(66)로부터의 g+N 비트의 연산되어진 데이터와 배럴쉬프터(54)로부터의 스케일링된 데이터를 선택적으로 제7 또는 제8 레지스터(70 또는 72)에 공급한다. 제7 또는 제8 레지스터(70,72)는 제8 멀티플렉서(68)로부터의 데이터를 제4 내부버스(43)에 공급되게 된다. 제7 및 제8 레지스터(70,28)는 누적용 레지스터로서 제2 ALU(66)와 함께 제2 누적기를 구성하며, 이 제2 누적기는 제1 누적기와 병렬로 접속됨으로써 2 이상의 복합연산식들이 병렬로 연산되도록 한다. 제7 및 제8 레지스터(70,72) 모두 g+N 비트의 데이터를 일시적으로 저장하기 위해 g+N 비트의 길이를 가진다. 또한, 제7 및 제8 레지스터(70,72)는 제5 및 제6 레지스터(58,60)와 함께 다수의 복합연산식들이 빠르게 연산되도록 한다.
더 나아가, 상기 DSP는 제3 및 제4 내부버스(41,43)로부터의 두개의 g+N 비트 데이터들을 선택하기 위한 제9 멀티플렉서(74)와, 이 제9 멀티플렉서(74)에 공통적으로 접속되어진 비트정렬기(76)와 포화(Saturation)처리기(78)를 추가로 구비한다. 제9 멀티플렉서(74)는 제3 내부버스(41)를 경유한 제5 또는 제6 레지스터(58,60)로부터의 g+N 비트의 데이터와 제4 내부버스(23)를 경유한 제7 또는 제8 레지스터(70,72)로부터의 g+N 비트의 데이터 중 어느 한 데이터를 비트정렬기(76)와 포화 처리기(78)에 공통적으로 공급한다. 비트정렬기(76)는 제9 멀티플렉서(74)로부터의 g+N 비트의 데이터에서 N 비트만을 추출하여 그 추출된 N 비트의 데이터를 제10 멀티플렉서(80)의 제1 입력포트에 공급한다. 이를 상세히 하면, 비트정렬기(76)는 제9 멀티플렉서(74)로부터의 g+N 비트의 데이터 중 하위 N 비트의 데이터만을 추출하여 그 추출된 N비트의 데이터를 제10 멀티플렉서(80)의 제1 입력포트에 공급한다. 이를 위하여, 비트정렬기(76)는 제9 멀티플렉서(74)의 g+N 개의 출력단자들 중 하위 N 개의 단자들, 즉 상위 g 개의 단자들을 제외한 나머지 N 개의 단자들을 N 개의 단자들로 이루어진 제10 멀티플렉서(80)의 제1 입력포트에 접속시키는 배선을 가진다. 비트정렬기(76)는 단순히 배선에 의해 구성됨으로써 별도의 회로블록을 요구하지 않는다. 이에 따라, 비트정렬기(76)는 DSP의 회로구성을 간소화 할 수 있음은 물론 고정소수점 연산이 고속으로 수행되도록 한다. 포화처리기(78)는 도시하지 않은 제어기로부터의 명령에 따라 포화처리를 수행하게 된다. 포화처리기(78)는 제9 멀티플렉서(74)로부터의 g+N 비트의 데이터에서 상위 g+1 비트들의 논리 값에 따라 데이터를 처리하게 된다. 이를 상세히 하면, 포화 처리기(78)는 제9 멀티플렉서(74)로부터의 g+N 비트의 데이터에서 상위 g+1 비트들(즉, g개의 가드 비트들과 1개의 사인 비트)의 논리 값들이 모두 동일한가에 따라 오버플로우(Overflow)의 발생여부를 판단한다. 상위 g+1 비트들의 논리 값들이 모두 동일한 경우에 포화 처리기(78)는 제9 멀티플렉서(74)로부터의 g+N 비트의 데이터중 하위 N 비트의 데이터를 연산되어진 결과로써 제10 멀티플렉서(80)의 제2 입력포트에 공급한다. 반대로 상위 g+1 비트들의 논리 값들이 모두 동일하지 않은 경우에 포화 처리기(78)는 g 개의 가드비트들중 최상위비트의 논리 값이 "0" 또는 "1"인가를 판단한다. 포화 처리기(78)는 최상위 가드비트의 논리 값이 "0"인 경우에 제9 멀티플렉서(74)로부터의 데이터가 오버플로우가 발생되어진 정(+)의 데이터인 것으로 간주하여 최상위 비트만이 "0"의 논리 값을 가지는 최대 값의 N 비트의 데이터(즉, "0111…11")를 제10 멀티플렉서(80)의 제2 입력포트에 공급한다. 이와는 달리 최상위 가드 비트의 논리 값이 "1"인 경우, 포화 처리기(80)는 제9 멀티플렉서(74)로부터의 데이터가 오버플로우가 발생되어진 부(0)의 데이터인 것으로 간주하여 최상위 비트만이 "1"의 논리 값을 가지는 N 비트의 데이터(즉, "1000…00")를 제10 멀티플렉서(80)의 제2 입력포트에 공급한다. 이와 같이 포화처리기(78)는 가드비트들과 사인 비트의 논리 값에 근거하여 ALU(52 또는 66)에 의해 연산된 데이터의 포화논리값(즉, 오버플로우가 발생되어진 논리 값)을 정확하게 처리하게 된다. 이상과 같이, 제9 멀티플렉서(74)에서 출력되는 데이터에는 포화처리기(78)에 의해 포화처리만 진행될 뿐 종래의 라운딩 과정이 수행되지 않게 된다. 이로 인하여, 데이터의 연산속도가 향상될 수 있게 된다. 제10 멀티플렉서(80)는 비트정렬기(76)와 포화처리기(78)로부터의 2개의 N 비트 데이터중 어느 하나를 제3 외부버스(47)쪽으로 전송한다. 제3 외부버스(47)는 기록용데이타버스(Write Data Bus) 및 기록용어드레스버스(Write Address Bus)로 구성된 N 개의 라인으로 이루어져 있다.
도6 은 도5 에 도시된 DSP에 의해 수행되는 고정소수점 연산과정을 도시한다. 도3 에 있어서, 제1 및 제2 데이터(90,92)는 메모리(도시하지 않음)로부터 순차적으로 판독되어진 것들로서 각각 N 비트의 길이를 가진다. 또한 제1 및 제2 데이터(90,92)의 최상위 비트에는 논리 값이 음수 또는 양수인가를 나타내는 1 비트의 사인 비트가 포함되어 있다. 이들 제1 및 제2 데이터(90,92)는 도5 에 도시된 승산기(40)에 의해 연산됨으로써 2N 비트의 길이를 가지는 제3 데이터(94)를 발생시킨다. 이 제3 데이터(94)는 도5 에서의 승산기(40)로부터 제4 레지스터(42)쪽으로 전송될 때에 일정한 비트들만큼 쉬프트 됨으로써 제4 데이터(96)로 변화되게 된다. 이 제4 데이터(96)는 도5 에서의 비트조절기(44)를 경유하여 ALU(52 또는66)쪽으로 전송될 때 g+N 의 워드길이를 가지는 제5 데이터(98)로 변화되게 된다. 이 때, 비트조절기(44)는 제4 데이터(96)의 하위 N비트들을 이 잘라냄과 아울러 제4 데이터(96)의 나머지 N비트들의 상위 쪽에 g비트의 가드 비트들을 부가하게 된다. 제5 데이터(98)는 ALU들(52,66)에 의해 연산된 다음 g+N 비트의 길이를 가지는 누적용 레지스터(64 또는 76, 혹은 66 또는 78)에 일시적으로 저장되게 된다. 누적용 레지스터(58 또는 70, 혹은 60 또는 72)에 저장되어진 제5 데이터(98)는 도5 에 도시된 포화 처리기(78)에 의해 처리됨으로써 N 비트의 길이를 가지는 제6 데이터(100)로 치환된다. 이 때, 제5 데이터(98)는 상위 g+1 비트들(즉, g개의 가드 비트들과 1개의 사인 비트)의 논리 값들이 동일한가 그리고 최상위 가드비트가 "1" 또는 "0"인가에 따라 다른 방식으로 처리되어 최종적으로 N 비트의 데이터로 변환된다. 상위 g+1 비트들의 논리 값이 동일한 경우에 제5 데이터(98)는 g+N 비트 중 상위 g 비트와 하위 r 비트를 제외한 나머지 N 비트를 가지는 제6 데이터(100)로 치환된다. 상위 g+1 비트들의 논리 값들이 동일하지 않고 최상위비트가 "0"인 경우에 제5 데이터(98)는 오버플로우가 발생되어진 양의 데이터로 간주되어 최상위 비트만이 "0"의 논리 값을 가지는 N 비트의 제6 데이터(100), 즉 "0111…11"로 치환된다. 이와는 달리, 상위 g+1 비트들의 논리 값들이 동일하지 않고 최상위비트가 "1"인 경우에 제5 데이터(98)는 오버플로우가 발생되어진 부(-)의 데이터로 간주되어 최상위 비트만이 "1"의 논리 값을 가지는 N 비트의 제6 데이터(100), 즉 "1000…00"으로 치환된다. 이와 같이, 본 발명에 따른 DSP에서는 라운딩 과정이 제거되게 됨으로써 연산속도가 빨라지게 된다. 또한, 본 발명에 따른 DSP에서는 ALU 및 누적용 레지스터의 길이가 g+N 비트들로 줄어들게 됨으로써 연산 량이 줄어들게 된다. 이 결과, 본 발명에 따른 DSP의 응답속도가 빨라지게 된다. 다음으로, 본 발명의 실시 예에 따른 DSP에서의 오차의 정도가 최소화되는 것은 연산과정에서 발생되는 양자화 오차의 분석에 의해서 입증되게 될 것이다.
먼저, 두 개의 데이터(a,b)가 승산 되는 도5 에서의 승산기(40)와 이 승산기(40)로부터 ALU(52 또는 66)쪽으로 전송되는 과정에서 데이터의 잘림이 발생된다고 하자, 이 때 발생되는 양자화 오차는 수학식 2 와 같이 표시되게 된다.
Tr(a×b) = a × b + et
Tr'(a×(-b)) = -Tr(a×(-b))
Tr'(a×b) = a × b -et
이 수학식 2를 8의 블록길이를 가지는 IFFT 알고리듬에 적용하면, IFFT 출력에서의 오차는 두가지 분포를 가지게 된다. 첫 번째는 코사인과 사인 상수의 원래 부호를 유지하거나 두가지 종류의 상수 부호를 모두 반전시키는 경우에 IFFT 출력에서의 양자화 오차의 평균치는 수학식 3과 같이 된다.
{(0,6me),(0,2me),(0,2me),(0,-2me),(0,2me),(0,-2me),(0,-2me),(0,-2me),(0,-6me)}
두 번째로 두가지 종류의 상수 중 어느 한편만의 부호가 반전되어진 경우에 IFFT 출력에서의 양자화 오차의 평균치는 수학식 4 와 같이 표현될 수 있다.
{(6me,0),(2me,0),(2me,0),(-2me,0),(2me,0),(-2me,0),(-2me,0),(-2me,0),(-6me,0)}
수학식 3 에서의 양자화 오차는 허수부에 모두 위치하는 반면에 수학식 4 에서의 양자화 오차는 실수부에 모두 위치하게 된다. 이와 같은 양자화 오차의 분포는 도1 에 도시된 포스트 IFFT 단계에 의해서 달라지게 된다. 이를 설명하기에 앞서 포스트 IFFT 과정을 간단히 설명하면, 포스트 IFFT 과정은 복소수 IFFT 과정을 거친 복소수 샘플들을 해당되는 블록길이에 따라 재분포시키게 된다. 즉, 블록길이가 128 인 경우, 포스트 IFFT는 수학식 5 와 같이 표현되게 된다.
for(n=0;n<128;n++)
{
y[n] = (Re(z[n]) * xcos1[n] - Im(z[n] * xsin1[n]) +
j(Im(z[n]) * xcos1[n] + Re(z[n]) * xcos1[n])
}
수학식 5에서, xcos1[n] 은 -cos(2π·(8n +1) / (32 ·128)) 이고 xsin1[n] 은 sin(2π·(8n +1) / (32 ·128)) 이다. 수학식 5에서 볼 수 있듯이 첫 번째 경우에서는 복소수 IFFT 출력의 양자화 오차가 허수부에 분포하기 때문에 포스트 IFFT 출력에는 실수부와 허수부에 서로 다른 부호의 양자화 오차가 분포하게 된다. 한편, 두 번째 경우에서는 복소수 출력의 양자화 오차가 실수부에 분포하기 때문에 포스트 IFFT 출력에는 실수부와 허수부에 같은 부호의 양자화 오차가 분포하게 된다. 이중 첫 번째 경우의 양자화 오차는 포스트 IFFT 에 이어 수행되는 윈도우 연산에 의해 상쇄되게 되나, 두 번째 경우의 양자화 오차는 포스트 IFFT에 이어 수행되는 윈도우 연산을 통하더라도 존재하게 된다. 따라서, IFFT를 위한 코사인 상수와 사인 상수가 메모리, 즉 프로그램 메모리 또는 작업용 메모리에 같은 부호로 저장되게 되므로, 본 발명의 실시 예에 따른 DSP에서의 데이터의 잘림으로 인한 양자화 오차가 서로 상쇄되게 된다.
상술한 바와 같이, 본 발명의 DSP에서는 역변환 연산시 ALU에 공급되는 상수들이 같은 부호로 저장됨으로써 ALU에 할당되었던 라운딩 비트들이 제거됨과 아울러 라운딩 수단이 제거되게 된다. 이에 따라, ALU 및 누적용 레지스터로 이루어진 누적기의 워드길이가 짧아지게 되고 나아가 DSP의 연산량이 줄어들게 된다. 또한, 본 발명에 따른 DSP에서는 라운딩 처리에 소요되는 시간이 제거되게 되어 연산속도 및 응답속도가 향상되게 된다.
이상 설명한 내용을 통해 당업자라면 누구나 본 발명의 기술사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정하여져야만 한다.

Claims (5)

  1. N 비트의 데이터를 입력하기 위한 데이터 입력수단과,
    상기 데이터 입력수단으로부터의 상기 N비트 데이터의 상위 비트에 g비트의 가드 비트를 부가하는 가드 비트 부가수단과,
    상기 가드 비트 부가수단으로부터의 데이터를 연산하는 연산수단과,
    상기 연산수단으로부터의 데이터의 상위 g+1 비트들의 논리 값에 따라 포화 처리하는 포화처리수단을 구비하는 것을 특징으로 하는 디지탈신호처리기.
  2. 제 1 항에 있어서,
    상기 포화처리수단은 상기 연산수단으로부터의 데이터를 그 데이터의 상위 g+1 비트들의 논리 값들이 다른 경우에만 포화처리를 수행하는 것을 특징으로 하는 디지탈신호처리기.
  3. 제 2 항에 있어서,
    상기 포화처리수단은 상기 연산수단으로부터의 데이터의 상위 g+1 비트들의 논리 값들이 다른 경우 최상위 비트만이 "0"의 논리 값을 가지는 N비트의 데이터와 최상위 비트만이 "1"의 논리 값을 가지는 N비트의 데이터를 선택적으로 발생하는 것을 특징으로 하는 디지탈신호처리기.
  4. 제 3 항에 있어서,
    상기 포화처리수단은 상기 연산수단으로부터의 데이터의 최상위 비트의 논리 값이 "0"일 때 최상위 비트만이 "0"의 논리 값을 가지는 N비트의 데이터를 발생하고 상기 최상위 비트의 논리 값이 "1"일 때에는 최상위 비트만이 "1"의 논리 값을 가지는 N비트의 데이터를 발생하는 것을 특징으로 하는 디지탈신호처리기.
  5. 제 1 항에 있어서,
    상기 가드 비트 부가수단이 배선에 의해 구현된 것을 특징으로 하는 디지털 신호처리기.
KR1019980012318A 1997-08-30 1998-04-07 디지탈신호처리기 KR100271571B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1019980012318A KR100271571B1 (ko) 1998-04-07 1998-04-07 디지탈신호처리기
US09/143,351 US6209017B1 (en) 1997-08-30 1998-08-28 High speed digital signal processor
GB9818919A GB2330226B (en) 1997-08-30 1998-08-28 Digital signal processor
GB0007909A GB2345562B (en) 1997-08-30 1998-08-28 Digital signal processor
GB0007912A GB2345563B (en) 1997-08-30 1998-08-28 Digital signal processor
DE19839627A DE19839627B4 (de) 1997-08-30 1998-08-31 Digitaler Signalprozessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980012318A KR100271571B1 (ko) 1998-04-07 1998-04-07 디지탈신호처리기

Publications (2)

Publication Number Publication Date
KR19990079636A KR19990079636A (ko) 1999-11-05
KR100271571B1 true KR100271571B1 (ko) 2000-11-15

Family

ID=19535961

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980012318A KR100271571B1 (ko) 1997-08-30 1998-04-07 디지탈신호처리기

Country Status (1)

Country Link
KR (1) KR100271571B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101053638B1 (ko) 2010-09-10 2011-08-02 주식회사 지오네트 32 비트 DSP와 인터페이스되는 외부장치의 개선된 Read 방법 및 그 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101053638B1 (ko) 2010-09-10 2011-08-02 주식회사 지오네트 32 비트 DSP와 인터페이스되는 외부장치의 개선된 Read 방법 및 그 장치

Also Published As

Publication number Publication date
KR19990079636A (ko) 1999-11-05

Similar Documents

Publication Publication Date Title
CN107077417B (zh) 有效性配准
US6138135A (en) Propagating NaNs during high precision calculations using lesser precision hardware
US6009451A (en) Method for generating barrel shifter result flags directly from input data
US5768170A (en) Method and apparatus for performing microprocessor integer division operations using floating point hardware
JP5273866B2 (ja) 乗算器/アキュムレータ・ユニット
US4748579A (en) Method and circuit for performing discrete transforms
JPH0635675A (ja) データプロセッサにおいて除算を行うための方法および装置
WO1993020502A1 (en) Exponential/logarithmic computational apparatus and method
JP2020507844A (ja) 入力オペランド値を処理するための装置及び方法
Knofel Fast hardware units for the computation of accurate dot products
Schulte et al. A variable-precision interval arithmetic processor
KR100271571B1 (ko) 디지탈신호처리기
US5648924A (en) Method and apparatus for finding arctangents
US7870177B2 (en) Method and system for multi-processor FFT/IFFT with minimum inter-processor data communication
EP0840207A1 (en) A microprocessor and method of operation thereof
US8214419B2 (en) Methods and apparatus for implementing a saturating multiplier
Schulte et al. A software interface and hardware design for variable-precision interval arithmetic
KR100315303B1 (ko) 디지탈 신호 처리기
KR100246472B1 (ko) 디지탈신호처리기
KR100251547B1 (ko) 디지탈신호처리기(Digital Sgnal Processor)
KR100297544B1 (ko) 디지탈신호처리기
EP0837390A1 (en) Improvements in or relating to microprocessor integrated circuits
KR100251546B1 (ko) 디지탈신호처리기
GB2345562A (en) Digital signal processor for performing fixed-point and/or integer arithmetic
de Miguel Casado et al. Algebraic Model of an Arithmetic Unit for TTE-Computable Normalized Rational Numbers

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20050607

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee