KR101462157B1 - Mac 연산을 포함하는 연산 장치, 이를 이용한 dsp 구조 및 필터링 방법 - Google Patents

Mac 연산을 포함하는 연산 장치, 이를 이용한 dsp 구조 및 필터링 방법 Download PDF

Info

Publication number
KR101462157B1
KR101462157B1 KR1020100107023A KR20100107023A KR101462157B1 KR 101462157 B1 KR101462157 B1 KR 101462157B1 KR 1020100107023 A KR1020100107023 A KR 1020100107023A KR 20100107023 A KR20100107023 A KR 20100107023A KR 101462157 B1 KR101462157 B1 KR 101462157B1
Authority
KR
South Korea
Prior art keywords
value
register
bit
input
multiplier
Prior art date
Application number
KR1020100107023A
Other languages
English (en)
Other versions
KR20110070766A (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 US12/970,090 priority Critical patent/US20110153995A1/en
Publication of KR20110070766A publication Critical patent/KR20110070766A/ko
Application granted granted Critical
Publication of KR101462157B1 publication Critical patent/KR101462157B1/ko

Links

Images

Abstract

본 발명은 MAC 연산을 포함하는 연산 장치, 이를 이용한 DSP 구조 및 필터링 방법에 관한 것으로서, 특히 본 발명의 MAC 연산을 포함하는 연산 장치는 n 비트 데이터를 하나 이상 저장하는 제1 및 제2 레지스터, 2n 비트 데이터를 하나 이상 저장하는 제3 레지스터, 제1 입력단은 상기 제1 레지스터와 연결되고 제2 입력단은 상기 제2 또는 제3 레지스터와 연결되며, 제1 입력단의 입력값과 제2 입력단의 입력값을 곱셈 연산하는 곱셈기 및 제1 입력단은 상기 곱셈기의 출력단과 연결되고 제2 입력단은 출력단과 귀환 연결되며, 제1 입력단의 입력값과 제2 입력단의 입력값을 합하고, 상기 출력단은 상기 제3 레지스터로 연결되는 산술논리연산기(ALU)를 포함한다.

Description

MAC 연산을 포함하는 연산 장치, 이를 이용한 DSP 구조 및 필터링 방법{Arithmetic apparatus including multiplication and accumulation and DSP structure and filtering method using the same}
본 발명의 MAC 연산을 포함하는 연산 장치, 이를 이용한 DSP 구조 및 필터링 방법은 MAC(Multiplication and Accumulation) 연산을 포함하는 연산을 수행하는 연산 장치 및 이를 이용한 연산 방법과 디지털 필터링 방법에 관한 것이다.
본 발명은 지식경제부의 IT원천기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2006-S-048-01, 과제명: 오디어/비디오 신호처리용 임베디드 DSP Platform].
이동 통신 시스템 또는 디지털 멀티미디어 기기 등에서 수행되어야 할 디지털 신호 처리의 양이 점점 증가하고 있다. 이러한 추세에 효과적으로 대응하기 위해서 상기의 시스템 또는 기기는 임베디드 형태로 디지털 신호 처리 프로세서(digital signal processor, DSP)를 채용한다. 또한, 최신의 첨단 기기들뿐만 아니라 일상생활에서 사용되는 많은 가전기기들도 기능의 다양화 및 복잡화 때문에 DSP를 채용하는 경우가 많아지고 있다.
그런데, 이동 통신 시스템이나 디지털 멀티미디어 기기에 적용되는 DSP의 경우 적용분야의 알고리즘이 복잡해서 DSP가 처리해야 할 연산량이 많기 때문에 일반적인 DSP 구조로 구현하는데 한계가 있다. 특히 샘플 단위로 처리해야 할 필터링 연산이 많은 알고리즘들은 DSP가 처리해야 할 연산량이 매우 크다. 이 때문에 필터링 처리가 많은 알고리즘을 구현할 시에는 DSP에 코프로세서를 추가하여 알고리즘을 구현한다.
또한, 최근 디지털 멀티미디어 단말기들은 다양한 어플리케이션들을 지원하기 때문에 임베디드 된 DSP가 여러가지 어플리케이션 프로그램들을 위한 디지털 신호 처리를 수행한다. 그러므로 어플리케이션 프로그램에 따라 요구되는 자원의 규모가 많은 차이가 있다.
하지만 시스템에 임베디드된 DSP의 사양은 DSP에서 수행되어야 할 프로그램들 중에서 가장 높은 복잡도를 갖는 어플리케이션 프로그램이 요구하는 사양을 만족하도록 설계된다. 따라서 그보다 복잡도가 낮은 프로그램이 수행될 시는 DSP의 많은 자원들이 필요 없으므로, 하드웨어 설계 측면에서 자원 활용 및 설계 공간 활용이 효율적이지 못하다. 예를 들어, IIR 필터 연산이 많은 알고리즘을 처리하기 위해 별도의 코-프로세서(co-processor)를 채용하게 되면 많은 하드웨어 자원이 추가되지만, IIR 필터 연산을 수행하지 않는 경우에는 코프로세서는 불필요한 하드웨어 자원이므로 전체 하드웨어 설계가 효율적이지 못하다.
IIR 필터링의 기본적인 연산은 MAC 이고, 일반적으로 DSP에는 MAC 연산을 수행할 수 있는 하드웨어 블록을 포함하고 있다. 따라서, 복잡도가 낮은 프로그램을 수행하는데 일반적인 DSP로도 문제는 없으나, IIR 필터링을 많이 필요로 하는 알고리즘의 경우는 알고리즘의 복잡도가 높으므로 DSP가 필터링 연산에 대부분의 리소스를 사용하게 된다. 즉, 알고리즘의 처리가 효율적이지 못하게 되는 문제가 있다.
또한, 일반적으로 디지털 신호처리에서 IIR 필터링의 구현은 매우 간단하나, 16 비트 고정소수점형 DSP에서 더 높은 비트 수의 정밀도를 갖는 IIR 필터링을 구현하기 위해서는 16비트 연산에 비해 2-4 배 정도의 더 많은 연산량이 요구된다.
그러므로 오디오 신호와 같이 비교적 샘플링 주파수가 높은 신호를 입력으로 하고, 다수의 IIR 필터링이 필요한 경우는 연산량이 급격히 늘어나서 DSP의 리소스를 대부분 점유하게 되어 DSP가 다른 일을 처리하기 힘들어진다.
또한, 고정소수점형 DSP에서 IIR 필터링을 구현하기 위해서는 DSP가 포함하고 있는 MAC, ADD, Shift 등의 몇 개의 명령어에 의해서 구현될 수 있다. 하지만 고정소수점 연산으로 구현하는 경우 IIR 필터의 특성상 연산의 정밀도가 낮아지면 필터의 필터의 특성이 변화되어 출력신호에 왜곡이 발생하는 문제가 있다. 그러므로 16비트 고정소수점형 DSP에서 IIR 필터링을 구현할 시는 정밀도를 높이기 위하여 일반적으로 32 비트 정밀도로 필터링 연산을 수행한다.
상기 문제를 해결하기 위한 본 발명의 MAC 연산을 포함하는 연산 장치, 이를 이용한 DSP 구조 및 필터링 방법는 DSP에 적용될 수 있는 MAC 연산 장치, 상기 장치를 이용한 연산 방법 및 필터링 연산 방법을 제안하는 것을 목적으로 한다.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 의한 MAC 연산을 포함하는 연산 장치는 n 비트 데이터를 하나 이상 저장하는 제1 및 제2 레지스터, 2n 비트 데이터를 하나 이상 저장하는 제3 레지스터, 제1 입력단은 상기 제1 레지스터의 저장 데이터를 수신하고 제2 입력단은 상기 제2 또는 제3 레지스터의 저장 데이터를 수신하며, 제1 입력단의 수신값과 제2 입력단의 수신값을 곱셈하는 곱셈기 및 제1 입력단은 상기 곱셈기의 연산값을 수신하고, 제1 입력단의 수신값과 제2 입력단의 수신값을 합산하며, 상기 합산값을 제3 레지스터로 전달하는 산술논리연산기(ALU)를 포함하며, 상기 산술논리연산기의 연산값은 상기 산술논리연산기의 제2입력단으로 전달되는 것을 특징으로 한다.
상기 연산 장치의 동작 여부 결정 및 연산 횟수 조절을 위한 제어부를 더 포함한다.
상기 제어부는 기설정된 횟수로 상기 연산장치가 연산을 수행하면 상기 산술논리연산기의 합산값이 상기 제3 레지스터에 저장되도록 한다.
상기 산술논리연산기의 제2 입력단의 수신값은 전 계산 주기의 연산 결과이다.
상기 곱셈기는 상기 제2 입력단의 수신값의 상위 n비트와 제1 입력단의 수신값을 곱셈하는 제1 연산기, 상기 제2 입력단의 수신값의 하위 n비트와 제1 입력단의 수신값을 곱셈하는 제2 연산기, 상기 제2 연산기의 연산값을 n비트 하향 이동 시키는 시프터 및 상기 제1 연산기의 연산값 및 상기 시프터의 출력값을 덧셈하는 제3 연산기를 포함한다.
상기 곱셈기의 연산 결과를 일정 비트만큼 상향 또는 하향 이동시키는 배럴 시프터(barrel shifter)를 더 포함한다.
상기 배럴 시프터는 기설정된 동작 모드에 따라서 상기 일정 비트가 기설정된다.
연산 횟수에 따라서 상기 제2 및 제3 레지스터 중 하나의 저장 데이터를 상기 곱셈기로 전달하는 선택기를 더 포함한다.
상기 산술논리연산기의 출력을 저장하는 2n비트 크기의 제4 레지스터를 더 포함하고, 상기 산술논리연산기의 연산값은 제4 레지스터로 전달되고, 상기 제4 레지스터의 저장 데이터는 상기 산술논리연산기의 제2 입력단 및 상기 제3 레지스터로 전달된다.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 의한 MAC 연산을 포함하는 연산 장치를 포함하는 DSP는 하나 이상의 n 비트 연산을 수행하는 프로세싱 유닛, 하나 이상의 n 비트 데이터를 저장하는 메모리 뱅크, 상기 메모리 뱅크로부터 n비트 데이터 전달받고, 상기 전달받은 n비트 데이터를 이용하여 nX2n비트 MAC 연산을 수행하고 2n비트 결과값을 출력하는 연산 장치 및 상기 프로세싱 유닛, 메모리 뱅크 및 연산 장치를 상호 연결하는 내부 버스를 포함하고, 상기 프로세싱 유닛은 nX2n비트 MAC 연산 수행 명령을 수신하면 상기 연산 장치가 상기 nX2n비트 MAC 연산을 수행하도록 한다.
상기 연산 장치는 n 비트 데이터를 하나 이상 저장하는 제1 및 제2 레지스터, 2n 비트 데이터를 하나 이상 저장하는 제3 레지스터, 제1 입력단은 상기 제1 레지스터의 저장 데이터를 수신하고 제2 입력단은 상기 제2 또는 제3 레지스터의 저장 데이터를 수신하며, 제1 입력단의 수신값과 제2 입력단의 수신값을 곱셈하는 곱셈기 및 제1 입력단은 상기 곱셈기의 연산값을 수신하고, 제1 입력단의 수신값과 제2 입력단의 수신값을 합산하며, 상기 합산값을 상기 제2 입력단 및 제3 레지스터로 전달하는 산술논리연산기(ALU)를 포함하며, 상기 산술논리연산기의 연산값은 상기 산술논리연산기의 제2입력단으로 전달되는 것을 특징으로 한다.
상기 연산 장치는, 상기 연산 장치의 동작 여부 결정 및 연산 횟수 조절을 위한 제어부를 더 포함한다.
상기 곱셈기는 상기 제2 입력단의 수신값의 상위 n비트와 제1 입력단의 수신값을 곱셈하는 제1 연산기, 상기 제2 입력단의 수신값의 하위 n비트와 제1 입력단의 수신값을 곱셈하는 제2 연산기, 상기 제2 연산기의 연산값을 n비트 하향 이동 시키는 시프터 및 상기 제1 연산기의 연산값 및 상기 시프터의 출력값을 덧셈하는 제3 연산기를 포함한다.
상기 연산 장치는, 연산 횟수에 따라서 상기 제2 및 제3 레지스터 중 하나의 저장 데이터를 상기 곱셈기로 전달하는 선택기를 더 포함한다.
상기 연산 장치의 상기 nX2n비트 MAC 연산을 위한 2n비트 데이터는 상기 연산 장치의 nX2n비트 MAC 연산 결과값 또는 기설정된 초기값이다.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 의한 MAC 연산을 포함하는 연산 장치를 이용하는 필터링 방법은 n 비트의 크기를 가지는 제1 및 제2 레지스터, 2n 비트의 크기를 가지는 제3 레지스터, nX2n 비트 곱셈을 수행하는 곱셈기 및 2n비트 산술논리연산기를 포함하는 연산 장치를 이용하며, 상기 제1 레지스터에는 필터 계수값을 저장하고, 상기 제2 레지스터에는 입력 데이터 값을 저장하고, 상기 제3 레지스터에는 필터 연산 결과값을 저장하는 저장 과정, 기설정된 순서에 따라서 상기 제3 레지스터에 저장된 필터 연산 결과값 또는 상기 제2 레지스터에 저장된 입력 데이터 값을 상기 곱셈기로 전달하는 선택 과정, 상기 제1 레지스터에 저장된 필터 계수값과 상기 선택 과정에서 전달된 값을 상기 곱셈기로 곱셈 연산하는 곱셈 과정, 상기 곱셈 과정의 결과값을 상기 산술논리연산기를 이용하여 누산하는 누산 과정 및 상기 제1 레지스터에 저장된 모든 필터 계수값에 대해서 상기 선택, 곱셈, 및 누산 과정이 이루어지면, 상기 누산 과정의 결과값을 외부로 출력하고 상기 제3 레지스터에 저장하는 결과값 저장 과정을 포함하며, 상기 선택 과정, 곱셈 과정, 누산 과정 및 결과값 저장 과정이 순차적으로 반복 수행된다.
상기 제2 및 제3 레지스터에 저장된 값에 대해서 필터 연산이 종료되면, 제3 레지스터의 가장 오래된 필터 연산 결과값을 삭제하고 상기 누산 과정의 결과값을 상기 제3 레지스터에 저장하는 과정을 더 포함한다.
상기 연산 장치는 카운터를 더 포함하고, 상기 카운xj를 이용하여 상기 선택, 곱셈 및 누산 과정이 수행되면 상기 필터링 방법이 1회 수행된 것으로 상기 필터링 방법의 수행 횟수를 세며, 상기 선택 과정은 상기 필터링 방법의 수행횟수가 기설정된 수행횟수 이하이면 제3 레지스터에 저장된 필터 연산 결과값을 상기 곱셈기로 전달하고, 상기 선택 과정은 상기 필터링 방법의 수행횟수가 기설정된 수행횟수 초과이면 제2 레지스터에 저장된 입력 데이터값을 상기 곱셈기로 전달한다.
상기 저장 과정은 상기 제3 레지스터에 저장된 필터 연산 결과값과 곱해질 필터 계수값 및 제2 레지스터에 저장된 입력 데이터값과 곱해질 필터 계수값을 상기 제1 레지스터에 순차적으로 저장한다.
상기 곱셈 과정은 상기 제2 레지스터에 저장된 입력 데이터값을 전달받으면 nXn 비트 연산을 수행하고 2n 비트를 출력하는 제1 단계, 상기 제3 레지스터에 저장된 필터 연산 결과값을 전달받으면 nX2n 비트 연산을 수행하고 3n 비트를 출력하는 제2 단계 및 상기 제2 단계의 3n 비트 출력값의 상위 2n 비트를 선택하여 출력하는 제3단계를 포함한다.
상기 해결 수단에 의한 본 발명의 MAC 연산을 포함하는 연산 장치, 이를 이용한 DSP 구조 및 필터링 방법에 따르면, 2배의 정밀도를 갖는 MAC 동작을 수행할 수 있어 정밀한 MAC 연산이 많은 신호 처리 알고리즘을 구현할 때 DSP의 리소스 소모량을 줄여줄 수 있고, DSP의 전체적인 연산 능력을 향상시킬 수 있다.
또한, 상기 해결 수단에 의한 본 발명의 MAC 연산을 포함하는 연산 장치, 이를 이용한 DSP 구조 및 필터링 방법에 따르면, 2배의 정밀도를 갖는 IIR 필터를 효율적으로 설계할 수 있다.
도 1은 일반적인 고정소수점형 DSP의 MAC 블록의 기능 블록을 도시한 블록도이다.
도 2는 일반적인 고정소수점형 DSP의 MAC 블록을 이용한 MAC 연산 과정의 흐름 및 데이터 흐름을 도시한 흐름도이다.
도 3은 본 발명의 MAC 연산을 포함하는 연산 장치의 기능 블록을 도시한 기능 블록도이다.
도 4는 본 발명의 MAC 연산을 포함하는 연산 장치의 곱셈기의 기능 블록을 도시한 블록도이다.
도 5는 본 발명의 MAC 연산을 포함하는 연산 장치를 구현한 일 구현예를 도시한 도면이다.
도 6은 본 발명의 MAC 연산을 포함하는 연산 장치를 이용한 DSP의 기능 블록을 도시한 블록도이다.
도 7은 본 발명의 MAC 연산을 포함하는 연산 장치를 이용한 필터링 방법의 흐름을 도시한 흐름도이다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시 예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
또한, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
일반적으로 DSP는 디지털 신호 처리 연산을 효율적으로 구현하기 위한 구조로 설계된다. 따라서, DSP는 데이터와 프로그램 버스를 분리하고, 데이터 메모리의 뱅크를 분리하며, MAC (Multiplication and Accumulation) 연산 구조를 포함한다. 특히 MAC 연산은 디지털 신호처리 연산에서 가장 높은 빈도로 사용되는 연산이므로 MAC 연산 블록은 DSP에 필수적으로 포함되는 대표적 하드웨어 블록이다.
MAC는 수학식 1과 같은 연산을 처리하는데 사용된다.
[수학식 1]
Figure 112010070617950-pat00001
상기 y(n)은 MAC연산 결과값, h(n)과 x(n)은 연산을 수행할 데이터이다.
위의 수식은 결과적으로 h(n)과 x(n)을 곱하여 이전의 곱셈 결과와 합해서 계속 누적시키는 연산을 수행하는 것으로써 MAC 연산에 해당된다.
도 1은 일반적인 고정소수점형 DSP의 MAC 블록의 기능 블록을 도시한 블록도이다.
도 1을 참조하면, 일반적인 고정소수점형 DSP의 MAC 블록은 메모리 뱅크 A(20), 메모리 뱅크 B(20) 및 MAC 장치(10)을 포함한다.
특히, MAC 장치(10)는 16X16 곱셈기(11), 산술논리연산기(Arithmetic Logic Unit, ALU)(12) 및 레지스터(13)을 포함하며, 선택기(15) 및 배럴 시프터(barrel shifter)(14)를 더 포함할 수 있다.
도 2는 일반적인 고정소수점형 DSP의 MAC 블록을 이용한 MAC 연산 과정의 흐름 및 데이터 흐름을 도시한 흐름도이다.
도2를 참조하여, 상기 기능 블록들을 이용한 16비트 MAC 연산 과정을 설명한다.
메모리 뱅크 A(20)에는 h(n)이 저장되고 메모리 뱅크 B(30)에는 x(n)이 저장된다. 메모리 뱅크 A 및 B(20,30)에 저장된 데이터는 순차적으로 곱셈기로 전달된다. 곱셈기(11)에서는 h(n) 및 x(n)의 곱셈 연산이 수행되고, ALU(12)에서는 덧셈이 수행되어 레지스터(13)에 결과가 저장된다. 다음 번의 곱셈 결과가 이전의 레지스터의 값과 더해져서 곱셈의 결과가 계속 누적되게 되어 결과적으로 MAC 연산을 수행하게 된다.
상기 배럴 시스터(14)는 ALU(12)의 연산 결과값을 일정 비트만큼 상향 또는 하향 시프팅시킨다.
상기의 MAC 연산이 필요한 대표적인 신호 처리가 디지털 필터링이다. 그중, 2차 IIR 필터링 연산과정을 설명하면 다음과 같다.
2차 IIR 필터의 연산의 전달함수는 수학식 2와 같다.
[수학식 2]
Figure 112010070617950-pat00002
전달함수를 차분 방정식(difference equation)으로 나타내면 수학식 3과 같다. (a0 = 1로 가정한다.)
[수학식 3]
y(n)=b0*x(n)+b1*x(n-1)+b2*x(n-2)-a1*y(n-1)-a2*y(n-2)
y(n)은 필터 연산 결과이고 x(n)은 입력 데이터이며, b0 내지 b2, a1 및 a2는 필터 계수값으로 상기 수학식 1의 h(n)에 해당한다.
상기 2차 IIR 필터의 연산은 어셈블리 레벨의 코드로 나타내면 1번의 곱셈과 4번의 MAC 연산으로 구성될 수 있다.
MPY *(AR1)+, (AR2)+ A // b0*x(n)
MAC *(AR1)+, (AR2)+ A // b0*x(n) +b1*x(n-1)
MAC *(AR1)+, (AR2)+ A // b0*x(n) +b1*x(n-1)+b2*x(n-2)
MAC *(AR1)+, (AR2)+ A // b0*x(n) +b1*x(n-1)+b2*x(n-2)+a1*y(n-1)
MAC *(AR1)+, (AR2)+ A // b0*x(n)+b1*x(n-1)+b2*x(n-2)+a1*y(n-1)+a2*y(n-2)
상기 필터링 연산에서 입력 데이터, 필터 연산 결과 및 계수값은 모두 16비트 데이터이며, a1 및 a2 계수값은 (-) 부호가 포함되어 저장된다.
도 2를 참조하여 16비트 고정소수점형 DSP에서 상기 어셈블리 코드와 동일한 2차 IIR 필터링 과정을 설명한다.
메모리 뱅크 A(20)에는 필터 계수값 b0, b1, b2, a1, a2를 저장하고, 메모리 뱅크 B(30)에는 입력 데이터 및 필터 연산 결과값인 x(n), x(n-1), x(n-2), y(n-1), y(n-2)를 저장한다.
레지스터 AR2(21)는 메모리 뱅크 A(20)에 저장되어 있는 필터 계수값 b0, b1, b2, a1, a2를 차례로 가리키고, 메모리 어드레스 레지스터 AR1(31)는 메모리 뱅크 B(30)에 저장되어 있는 데이터 x(n), x(n-1), x(n-2), y(n-1), y(n-2)를 차례로 가리킨다. 누적된 최종 결과는 레지스터(13)에 저장되며, 저장 데이터는 외부로 출력되거나 메모리 뱅크 B(30)로 전달될 수 있다.
이러한 IIR 필터 연산에서는 연산의 정밀도가 떨어지면 원하는 필터링 결과를 얻을 수 없다. 이 때문에 일반적으로 16비트 고정소수점형 DSP에서 IIR 필터링 연산은 y(n-1), y(n-2) 값을 32 비트 정확도로 연산하여 저장한다. 따라서, 상기 어셈블리 코드 중에서 (16비트 * 16비트) 연산인 a1*y(n-1) 및 a2*y(n-2) 연산이 (16비트 * 32 비트) 연산으로 바뀌어야 한다.
16비트 고정소수점형 DSP에서 (16비트 * 32비트) 정밀도의 곱셈은 수학식 4와 같은 연산을 통해 얻을 수 있다.
[수학식 4]
L_32 = high1*low2 + (low1*low2)>>16
high1 은 필터 연산 결과값인 y(n-1) 또는 y(n-2)의 상위 16비트이고 low2는 필터 연산 결과값인 y(n-1) 또는 y(n-2)의 하위 16비트이다. L_32는 상기 (16비트 * 32 비트) 연산의 결과값이다.
상기 수학식 4를 어셈블리 레벨의 코드로 나타내면 다음과 같다.
MPY high_1, low_2, A
MPY low_1, low_2, B
SFTA B, -16
ADD B, A
그런데, 상기와 같이 2배의 정확도를 가지는 MAC 연산을 수행하기 위해서는 DSP의 연산 능력이 상당부분 소모될 수 밖에 없다. 따라서, 고속으로 동작하는 통신 시스템이나 멀티미디어 시스템에서는 DSP에 걸리는 로드가 커지게 되며, DSP가 다양한 어플리케이션을 수행하는데 문제가 발생한다.
이에 본 발명이 제안하는 DSP의 로드를 경감하는 방법은 상기 2배 정확도의 MAC 연산을 전담하여 수행하는 블록을 DSP에 추가하는 것이다. 많은 연산량을 요구하는 상기 2배의 정확도로 수행되는 MAC 연산을 별도의 블록에서 수행하도록 함으로써, DSP는 별도의 코프로세서의 추가없이 다양한 어플리케이션을 수행할 수 있는 시스템 자원을 확보할 수 있다.
이하에서는, DSP에 추가될 2배의 정확도를 가지는 MAC 연산을 수행할 수 있는 연산 장치 및 이를 이용하는 DSP 및 필터링 연산 방법에 대해서 설명한다.
도 3은 본 발명의 일 실시예인 MAC 연산을 포함하는 연산 장치의 기능 블록을 도시한 기능 블록도이다.
도 3을 참조하면, 본 발명의 MAC 연산을 포함하는 연산 장치(100)는 제1 내지 제3 레지스터(110, 120,130), 곱셈기(140) 및 산술논리연산기(Arithmetic Logic Unit, ALU)(150)를 포함할 수 있다. 또한, 필요에 따라서 연산 장치(100)는 제어부(180), 선택기(160), 배럴 시프터(190) 및 제4 레지스터(170) 중 하나 이상을 더 포함할 수 있다.
제1 및 제2 레지스터(110, 120)는 n 비트 데이터를 하나 이상 저장할 수 있고, 제3 레지스터(130)는 2n 비트 데이터를 하나 이상 저장할 수 있다.
제1 레지스터(110)는 n비트*2n비트 연산에 필요한 n비트 데이터를 저장할 수 있다.
제2 레지스터(120)는 n비트*n비트 연산에 필요한 뒤의 n비트 데이터를 저장할 수 있다. 본 발명의 연산 장치는 n비트*2n비트 연산뿐만 아니라 n비트*n비트 연산을 수행할 수도 있는데, n비트*n비트 연산 시에 뒤의 16비트 데이터를 저장하기 위해서 상기 제2 레지스터를(120)를 사용할 수 있다.
제3 레지스터(130)는 n비트*2n비트 연산에 필요한 2n비트 데이터를 저장할 수 있다.
곱셈기(140)는 n비트*2n비트 연산을 지원할 수 있는 곱셈기이다. 본 발명의 곱셈기(140)는 n비트*2n비트 연산이 가능한 곱셈기이므로 n비트*n비트 연산도 지원할 수 있다. 곱셈기(140)의 상세 구조는 하기한다.
ALU(150)는 입력되는 2개의 2n비트 데이터를 합산 연산하는 장치이다. 일반적으로 ALU는 다양한 산술 논리 연산을 지원하는 장치이지만, 본 발명에서는 누적합산을 위해 합산 기능만으로 구현할 수 있다.
상기의 구성 요소들을 이용해 본 발명의 MAC 연산을 포함하는 연산을 수행하는 연산 장치에 대해서 설명한다.
곱셈기(140)는 두 개의 입력값이 필요하므로, 제1 입력단 및 제2 입력단을 이용하여 2개의 데이터를 입력받는다. 본 발명의 곱셈기(140)는 제1 입력단은 제1 레지스터(110)에 연결되고, 제2 입력단은 상기 제2 레지스터(120) 또는 제3 레지스터(130)에 연결될 수 있다. 곱셈기의 제2 입력단이 제2 레지스터(120)와 연결되면 본 발명의 연산 장치(100)는 n비트*n비트 연산을 수행할 수 있고, 제3 레지스터(130)와 연결되면 본 발명의 연산 장치(100)는 n비트*2n비트 연산을 수행할 수 있다.
ALU(150) 역시 두 개의 입력값이 필요하므로, 제1 입력단 및 제2 입력단을 이용하여 2개의 데이터를 입력받는다. 본 발명의 ALU(150)는 제1 입력단은 곱셈기(140)의 출력단과 연결되어 곱셈기(140)의 곱셈 연산 결과값을 입력받는다. 또한, 본 발명의 ALU(150)의 제2 입력단은 ALU(150)의 출력단과 귀환 연결되어 ALU(150)의 합산 연산 결과값을 입력받는다.
ALU(150)는 출력값을 귀환받기 때문에 입력 데이터를 누적 합산할 수 있게 된다. 특히, 시스템 클럭에 따라서 동작하는 경우에는 ALU(150)의 제2 입력단으로 입력되는 입력값은 전 주기에서 합산 연산된 결과값이 될 수 있다.
또한, MAC연산이 종료되면 ALU(150)의 출력값이 제3 레지스터(130)에 저장될 수 있도록, 상기 ALU(150)의 출력단과 제3 레지스터(130)을 연결한다.
상기와 같이 제1 내지 제3 레지스터(110, 120, 130), 곱셈기(140) 및 ALU(150)을 상기와 같이 연결함으로써, 본 발명의 연산 장치(100)는 MAC 연산을 수행할 수 있다.
선택기(160)는 제2 레지스터(120) 또는 제3 레지스터(130)을 곱셈기(140)로 연결한다. 선택기(160)는 곱셈기(140)의 제2 입력단에 입력되는 데이터를 선택하여, 연산 장치(110)가 n비트*n비트 연산을 수행할 지 또는 n비트*2n비트 연산을 수행할 지를 선택할 수 있다.
제4 레지스터(170)는 ALU(150)의 합산 결과값을 임시 저장할 수 있다. ALU(150)의 합산 결과값은 제4 레지스터(170)에 임시 저장된 후 ALU(150)의 제2 입력단에 귀환될 수 있다.
제어부(180)는 본 발명의 연산 장치(100)의 동작 여부를 결정하고, 연산 장치(100)가 연산한 횟수를 확인하고 기설정된 횟수만큼 연산을 수행하도록 할 수 있다. 또한, 제어부(180)은 선택기(160)의 선택을 상기 연산 횟수에 따라서 제어할 수도 있다.
즉, 제어부(180)은 본 발명의 연산 장치(100)가 n비트*n비트 MAC 연산 또는 n비트*2n비트 MAC 연산을 수행하도록 할 수 있고, n비트*n비트 MAC 연산 및 n비트*2n비트 MAC 연산을 혼합하여 수행하도록 할 수도 있다.
배럴 시프터(190)는 곱셈기(140)의 출력을 일정한 비트만큼 상향 또는 하향 시프팅시킬 수 있다. 즉, 곱셈기(140)에서 출력되는 데이터의 크기를 변경할 수 있다. 또한, 배럴 시프터(190)는 기설정된 동작 모드에 따라서 상기 상향 또는 하향 시프팅시키는 비트 수를 달리할 수 있고, 기설정된 모드에 따라 기설정해 둘 수 있다.
상기와 같은 연산 장치(100)를 필터링 연산에 이용할 경우에는 제1 레지스터(110)에 n비트 필터 계수값을 저장하고, 제2 레지스터(120)에 n비트 입력 데이터를 저장하며, 제3 레지스터(130)에 2n비트 필터 연산 결과값을 저장한다. 즉, 본 발명의 연산 장치(100)를 이용하면, 2배의 정확도를 가지는 디지털 필터링의 MAC 연산이 1개의 연산 장치만으로 구현될 수 있게 된다.
도 4는 종래의 MAC 연산을 포함하는 연산 장치의 곱셈기의 기능 블록을 도시한 블록도이다.
도 4를 참조하면, 종래의 n비트 DSP에서 nX2n 비트 곱셈을 수행하는 곱셈기(140)는 제1 연산기(141), 제2 연산기(142), 시프터(143) 및 제3 연산기(144)를 포함하여 구성될 수 있다.
제1 연산기(141)는 곱셈기(140)의 제2 입력단으로 입력되는 데이터의 상위 n비트값과 제1 입력단으로 입력되는 n비트 데이터 값을 곱셈 연산한다.
제2 연산기(142)는 곱셈기(140)의 제2 입력단으로 입력되는 데이터의 하위 n비트값과 제1 입력단으로 입력되는 n비트 데이터 값을 곱셈 연산한다.
시프터(143)는 상기 제2 연산기(142)의 연산값을 n비트 하향 이동시킬 수 있다.
제3 연산기(144)는 상기 제1 연산기(141)의 연산값과 상기 배럴 시프터(143)의 출력값을 덧셈 연산한다.
상기와 같은 구성을 가진 본 발명의 곱셈기(140)는 하기의 어셈블리 코드와 같은 n*2n비트 연산을 수행할 수 있다.
MPY high_1, low_2, A
MPY low_1, low_2, B
SFTA B, -16
ADD B, A
본 발명의 곱셈기(140)가 n*n비트 연산을 수행할 때는 제1 연산기(141) 및 제3 연산기(144)만을 이용하여 연산을 수행할 수 있다.
2n 비트를 처리할 수 있는 연산기가 없으므로 n비트 연산기를 다수 사용하여 nX2n 비트 곱셈을 수행하는 곱셈기(140)를 구현한 것이다.
본 발명의 연산 장치에도 상기와 같은 곱셈기(140)가 적용될 수 있으나, 연산 장치의 속도 및 효율성 제고를 위해서 nX2n 비트 곱셈을 위한 곱셈기(140)를 설계하여 적용하는 것이 바람직하다. 또한, nX2n 비트 곱셈을 수행하는 곱셈기(140)에서 nXn 비트 곱셈은 2n비트가 입력되는 입력단에 n비트만 입력받고 상위 n비트는 '0'으로 채워 수행할 수 있다.
도 5는 본 발명의 다른 실시예인 MAC 연산을 포함하는 연산 장치를 구현한 일 구현예를 도시한 도면이다.
도 5를 참조하면, 본 발명의 연산 장치(100)는 제1 내지 제3 레지스터(110, 120,130), 곱셈기(140), ALU(150), 제어부(180), 선택기(160), 배럴 시프터(190) 및 제4 레지스터(170)를 포함할 수 있다. 또한, 본 발명의 연산 장치(100)는 2n 비트의 데이터를 저장할 수 있는 제5 및 제6 레지스터(210, 220)을 더 포함할 수 있고, 제2 선택기(240), 제2 배럴 시프터(230) 또는 레지스터 어드레스(250)를 더 포함할 수 있다.
상기의 추가로 포함될 수 있는 구성들은 본 발명의 연산 장치(100)의 동작의 자유도 또는 데이터 전달의 안정성을 높이는 기능을 수행한다. 이에 대한 일 예를 이용한 설명은 하기한다.
본 발명의 제어부(180)는 상태 레지스터(181) 및 카운터(182)를 포함하여 구성될 수 있다. 상태 레지스터(181)에 저장된 값을 통해서 연산 장치(100)의 동작 여부를 결정할 수 있고, 제4 레지스터(170)에 저장된 데이터를 외부로 출력할지를 결정할 수 있다. 카운터(182)는 본 발명의 연산 장치가 MAC 연산을 수행한 횟수를 1회의 누적합산이 종료되면 1회의 연산이 수행된 것으로 하여 체크할 수 있다. 또한, 상기 카운터(182)에 저장된 데이터를 이용하여 선택기(160)의 선택을 제어할 수 있다.
레지스터 어드레스(250)은 상기 제1 내지 제3 레지스터(110, 120, 130)에 저장된 데이터들 중 곱셈기(140)로 전달될 데이터를 선택하는 기능을 수행할 수 있다.
도 6은 본 발명의 MAC 연산을 포함하는 연산 장치를 이용한 DSP의 기능 블록을 도시한 블록도이다.
도 6을 참조하면, 본 발명의 DSP는 하나 이상의 프로세싱 유닛(300), 하나 이상의 메모리 뱅크(400) 및 연산 장치(100)을 포함하여 구성될 수 있고 상기 프로세싱 유닛(300), 메모리 뱅크(400) 및 연산 장치(100)를 상호 연결할 수 있는 내부 버스(500)를 더 포함할 수 있다.
본 발명의 DSP는 다수의 어플리케이션을 수행할 수 있다. 이중에 연산의 양이 많은 필터링 작업등을 수행하는 경우에는 프로세싱 유닛(300)에서 이를 처리하는 것이 아니라 연산 장치(100)에서 이를 처리하도록 하여 프로세싱 유닛(300)의 부하를 줄여줄 수 있다. 필터링 작업에 필요한 데이터들은 메모리 뱅크(400) 또는 외부에서 내부 버스(500)를 통해서 연산 장치로(100)로 전달될 수 있다.
도 7은 본 발명의 MAC 연산을 포함하는 연산 장치를 이용한 필터링 방법의 흐름을 도시한 흐름도이다.
본 발명의 필터링 방법은 n 비트의 크기를 가지는 제1 및 제2 레지스터(110, 120), 2n 비트의 크기를 가지는 제3 레지스터(130), nX2n 비트 곱셈을 수행할 수 있는 곱셈기(140) 및 2n비트 산술논리연산기(150)를 포함하는 연산 장치(100)를 이용하여 수행될 수 있다.
본 발명의 필터링 방법은 저장 과정(S10), 선택 과정(S20), 곱셈 과정(S30), 누산 과정(S40) 및 결과값 저장 과정(S50)을 포함하여 수행될 수 있다.
저장 과정(S10)에서는 제1 레지스터(110)에는 필터 계수값을 저장하고, 제2 레지스터(120)에는 입력 데이터 값을 저장하고, 제3 레지스터(130)에는 필터 연산 결과값을 저장할 수 있다. 즉, 저장 과정(S10)에서는 제1 레지스터(110)에 n비트 필터 계수값을 저장하고, 제2 레지스터(120)에 n비트 입력 데이터를 저장하며, 제3 레지스터(130)에 2n비트 필터 연산 결과값을 저장한다
특히, 저장 과정(S10)은 상기 제3 레지스터(130)에 저장된 필터 연산 결과값과 곱해질 필터 계수값 및 제2 레지스터(120)에 저장된 입력 데이터 값과 곱해질 필터 계수값을 상기 제1 레지스터(110)에 순차적으로 저장할 수 있다. 이를 통해서 레지스터 어드레스(250) 등을 사용하지 않고 간단히 연산 장치(100)를 구현할 수 있어 하드웨어가 간단해질 수 있다. 또한, 제1 내지 제3 레지스터(110, 120, 130)에 저장된 데이터의 위치를 지정하고 읽어내는 과정이 없어 필터링 방법이 간소화될 수 있다.
선택 과정(S20)에서는 기설정된 순서에 따라서 제3 레지스터(130)에 저장된 필터 연산 결과값 또는 제2 레지스터(120)에 저장된 입력 데이터 값을 곱셈기(140)로 전달한다.
곱셈 과정(S30)에서는 제1 레지스터(110)에 저장된 필터 계수값과 상기 선택 과정(S20)에서 전달된 값을 상기 곱셈기(140)를 이용하여 곱셈 연산한다.
특히, 곱셈 과정(S30)은 상기 제2 레지스터(120)에 저장된 입력 데이터 값을 전달(S23)받으면 n*n비트 연산을 수행하고 2n비트 데이터를 출력하는 제1 단계(S32), 상기 제2 레지스터에 저장된 필터 연산 결과값을 전달(S22)받으면 nX2n 비트 연산을 수행하고 3n 비트를 출력하는 제2 단계(S31) 및 상기 제2 단계의 3n 비트 출력값의 상위 2n 비트를 선택하여 출력하는 제3단계(S33)를 포함할 수 있다.
누산 과정(S40)에서는 상기 곱셈 과정의 결과값을 상기 ALU(150)를 이용하여 누산한다.
결과값 저장 과정(S50)에서는 제1 레지스터(110)에 저장된 모든 필터 계수값에 대해서 상기 선택, 곱셈 및 누산 과정(S20, S30, S40)이 이루어지면, 상기 누산 과정(S40)의 결과값을 외부로 출력하고 상기 제3 레지스터(130)에 저장한다.
또한, 필터링 연산 방법은 상기 선택, 곱셈, 누산 및 결과값 저장 과정(S20 내지 S50)을 순차적으로 반복 수행하여 제1 레지스터(110)에 저장된 모든 필터 계수값에 대해서 이루어질 수 있다.
상기 연산 장치(100)에는 카운터(182)를 더 포함하고, 상기 카운터(182)를 이용하여 상기 선택, 곱셈, 누산 및 결과값 저장 과정(S20 내지 S50)이 수행되면 상기 필터링 방법이 1회 수행된 것으로 상기 필터링 방법의 수행 횟수를 셀 수 있다.
또한, 선택 과정(S20)에서는 상기 필터링 방법의 수행 횟수가 기설정된 수행 횟수 이하(S21)이면 제3 레지스터(130)에 저장된 필터 연산 결과값을 상기 곱셈기(140)로 전달(S22)한다. 그리고, 선택 과정(S20)에서는 상기 필터링 방법의 수행 횟수가 기설정된 수행 횟수 초과(S21)이면 제2 레지스터(120)에 저장된 입력 데이터값을 상기 곱셈기(140)로 전달(S23)한다.
도 3, 도 4 및 도 7을 참조하여 본 발명의 일 실시예로서 16입력 데이터에 대한 IIR 필터링 과정을 설명한다.
저장 과정(S10)에서는 IIR 필터링 연산을 시작하기 전에 DSP에서 필터의 계수값 5개 (b0, b1, b2, a1, a2)를 제1 레지스터(110)에 차례대로 저장한다. 마찬가지로 입력 데이터 x(n), x(n-1), x(n-2)를 제2 레지스터(120)에 저장하고, 필터 연산 결과값 y(n-1), y(n-2)은 제3 레지스터(130)에 저장한다. 만약, 해당 입력에 대한 최초의 필터 연산인 경우에는 초기설정으로 x(n-1), x(n-2), y(n-1), y(n-2)는 0으로 설정한다.
카운터(182)는 2차 IIR 필터의 경우에 총 5번의 곱셈 연산이 이루어 지므로 5로 설정한다. 상태 레지스터(181)의 초기값은 바이너리 값 '00'으로 설정한다. 그리고 DSP에서 상태 레지스터(181)에 필터 연산을 위한 데이터 준비가 되었음을 알려주기 위해 바이너리 값 '01'을 써준다. 연산 장치(100)는 상태 레지스터(181)의 바이너리 값이 '01'이 되면 필터링 연산을 시작하고, 필터링 연산이 끝나면 상태 레지스터 값을 바이너리 값 '10'으로 바꾸어 DSP에 필터링 연산이 다 끝났음을 알려준다. DSP에서는 상태 레지스터(181)의 값이 '10'이면 필터링 연산이 끝난 것을 알고 최종 결과를 읽어서 메모리 뱅크(400)에 저장하게 된다.
레지스터 어드레스(250)는 제1 내지 제3 레지스터(110, 120, 130)에서 곱셈기(140)로 전달되는 데이터를 지정한다.
수학식 3의 32비트 정밀도를 갖는 2차 IIR 필터링 연산 과정은 다음과 같다.
상기와 같은 저장 과정(S10)이 수행된 후, 선택, 곱셈, 누산 및 결과값 저장 과정(S20, S30, S40, S50)을 수행하는 흐름을 설명한다.
첫 번째 연산은 아래와 같다.
선택 과정(S20)에서는 선택기(160)은 제3 레지스터에 저장된 y(n-1)값을 곱셈기(140)으로 전달한다.
곱셈 과정(S310)에서는 a1*y(n-1) 연산, 즉 16비트*32비트 곱셈을 수행해서 제5 레지스터(210)에 저장한다.
두 번재 연산은 아래와 같다.
선택 과정(S20)을 거쳐, 곱셈 과정(S30)에서는 a2*y(n-2) 연산, 즉 16비트*32비트 곱셈을 수행해서 제6 레지스터(220)에 저장한다. 이때, 곱셈기(140) 내부에서 또는 배럴 시프터(190)에서 16비트*32비트 곱셈의 결과를 16비트 오른쪽으로 시프트 한 후 출력하므로, MSB 32비트만이 제5 및 제6 레지스터(210, 220)에 저장된다.
누산 과정(S40)에서는 ALU(150)는 제5 및 제6의 레지스터(210, 220)의 저장값을 전달받아 32비트+32비트 덧셈을 수행하여 제4 레지스터(170)에 저장한다. 이때 제2 선택기(240)은 제6 레지스터(220)의 저장값을 ALU(150)로 전달한다.
제4 레지스터(170)에 저장되는 값은 a1*y(n-1) + a2*y(n-2)가 된다.
결과값 저장 과정(S50)에서는 필터링 연산이 5회에 도달하지 못하였으므로 다시 선택과정(S20)부터 수행되도록 한다.
세번째 연산은 아래와 같다.
선택 과정(S20)에서는 선택기(160)은 제2 레지스터에 저장된 x(n)값을 곱셈기(140)으로 전달한다.
곱셈 과정(S30)에서는 b0*x(n) 연산, 즉 16비트*16비트 곱셈을 수행해서 제5 레지스터(210)에 저장한다.
누산 과정(S40)에서는 ALU(150)는 제5 및 제4의 레지스터(210, 170)의 저장값을 전달받아 32비트+32비트 덧셈을 수행하여 제4 레지스터(170)에 저장한다. 이때 제2 선택기(240)은 제4 레지스터(170)의 저장값을 ALU(150)로 전달한다.
결과값 저장 과정(S50)에서는 필터링 연산이 5회에 도달하지 못하였으므로 다시 선택 과정(S20)부터 수행되도록 한다.
네번째 및 다섯번째 연산은 상기 세번째 연산 과정을 반복 수행한다. 다섯번째 연산 과정에서 누산 과정(S40) 이후 제4 레지스터(170)에 저장되는 값은 b0*x(n)+b1*x(n-1)+b2*x(n-2)+a1*y(n-1)+a2*y(n-2)가 된다. 즉, 필터 연산 결과값이 된다.
또한, 다섯번째 연산에서 결과값 저장 과정(S50)은 필터링 연산 횟수가 5회가 되었으므로, 상기 상태 레지스터(181)에 바이너리 '10'값을 써준다.
제4 레지스터(170)에 저장된 값은 내부 버스를 통해서 상위 16비트만 메모리 뱅크(400) 또는 프로세싱 유닛(300)로 전송되거나 32비트 전체가 메모리 뱅크(400) 또는 프로세싱 유닛(300)으로 전송될 수 있다. 하지만 필터 연산 결과값 y(n-1), y(n-2)는 32 비트의 결과 전체가 제3 레지스터(130)에 저장된다.
도 7에 도시된 방법과 일부 상이하나, 이는 제5 및 제6 레지스터(210, 220)을 사용함으로써, 필터링 방법을 더 간략화하였기 때문이다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경할 수 있다는 것은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 당업자에게 있어 명백할 것이다.

Claims (20)

  1. n 비트 데이터(n은 자연수)를 하나 이상 저장하는 제1 및 제2 레지스터;
    2n 비트 데이터를 하나 이상 저장하는 제3 레지스터;
    제1 입력단은 상기 제1 레지스터의 저장 데이터를 수신하고 제2 입력단은 상기 제2 또는 제3 레지스터의 저장 데이터를 수신하며, 제1 입력단의 수신값과 제2 입력단의 수신값을 곱셈하는 곱셈기; 및
    제1 입력단은 상기 곱셈기의 연산값을 수신하고, 제1 입력단의 수신값과 제2 입력단의 수신값을 합산하며, 상기 합산값을 제3 레지스터로 전달하는 산술논리연산기(ALU)를 포함하며,
    상기 산술논리연산기의 연산값은 상기 산술논리연산기의 제2입력단으로 전달되며,
    상기 산술논리연산기의 제2 입력단의 수신값은 전 계산 주기의 연산 결과인 것을 특징으로 하는 연산 장치.
  2. 제1항에 있어서, 상기 연산 장치의 동작 여부 결정 및 연산 횟수 조절을 위한 제어부를 더 포함하는 것을 특징으로 하는 연산 장치.
  3. 제2항에 있어서, 상기 제어부는
    기설정된 횟수로 상기 연산장치가 연산을 수행하면 상기 산술논리연산기의 합산값이 상기 제3 레지스터에 저장되도록 하는 것을 특징으로 하는 연산 장치.
  4. 삭제
  5. 제1항에 있어서, 상기 곱셈기는
    상기 제2 입력단의 수신값의 상위 n비트와 제1 입력단의 수신값을 곱셈하는 제1 연산기;
    상기 제2 입력단의 수신값의 하위 n비트와 제1 입력단의 수신값을 곱셈하는 제2 연산기;
    상기 제2 연산기의 연산값을 n비트 하향 이동 시키는 시프터; 및
    상기 제1 연산기의 연산값 및 상기 시프터의 출력값을 덧셈하는 제3 연산기를 포함하는 것을 특징으로 하는 연산 장치.
  6. 제1항에 있어서, 상기 곱셈기의 연산 결과를 일정 비트만큼 상향 또는 하향 이동시키는 배럴 시프터(barrel shifter)를 더 포함하는 것을 특징으로 하는 연산 장치.
  7. 제6항에 있어서, 상기 배럴 시프터는 기설정된 동작 모드에 따라서 상기 일정 비트가 기설정되는 것을 특징으로 하는 연산 장치.
  8. 제1항에 있어서, 연산 횟수에 따라서 상기 제2 및 제3 레지스터 중 하나의 저장 데이터를 상기 곱셈기로 전달하는 선택기를 더 포함하는 것을 특징으로 하는 연산 장치.
  9. 제1항에 있어서, 상기 산술논리연산기의 연산값을 저장하는 2n비트 크기의 제4 레지스터를 더 포함하고,
    상기 산술논리연산기의 연산값은 제4 레지스터로 전달되고, 상기 제4 레지스터의 저장 데이터는 상기 산술논리연산기의 제2 입력단 및 상기 제3 레지스터로 전달되는 것을 특징으로 하는 연산 장치.
  10. 하나 이상의 n 비트 연산 (n은 자연수)을 수행하는 프로세싱 유닛;
    하나 이상의 n 비트 데이터를 저장하는 메모리 뱅크;
    상기 메모리 뱅크로부터 n비트 데이터 전달받고, 상기 전달받은 n비트 데이터를 이용하여 nX2n비트 MAC 연산을 수행하고 2n비트 결과값을 출력하는 연산 장치; 및
    상기 프로세싱 유닛, 메모리 뱅크 및 연산 장치를 상호 연결하는 내부 버스를 포함하고,
    상기 프로세싱 유닛은 nX2n비트 MAC 연산 수행 명령을 수신하면 상기 연산 장치가 상기 nX2n비트 MAC 연산을 수행하도록 하며,
    상기 연산 장치의 상기 nX2n비트 MAC 연산을 위한 2n비트 데이터는 상기 연산 장치의 nX2n비트 MAC 연산 결과값 또는 기설정된 초기값인 것을 특징으로 하는 DSP(Digital Signal Processor).
  11. 제10항에 있어서, 상기 연산 장치는
    n 비트 데이터를 하나 이상 저장하는 제1 및 제2 레지스터;
    2n 비트 데이터를 하나 이상 저장하는 제3 레지스터;
    제1 입력단은 상기 제1 레지스터의 저장 데이터를 수신하고 제2 입력단은 상기 제2 또는 제3 레지스터의 저장 데이터를 수신하며, 제1 입력단의 수신값과 제2 입력단의 수신값을 곱셈하는 곱셈기; 및
    제1 입력단은 상기 곱셈기의 연산값을 수신하고, 제1 입력단의 수신값과 제2 입력단의 수신값을 합산하며, 상기 합산값을 제3 레지스터로 전달하는 산술논리연산기(ALU)를 포함하며,
    상기 산술논리연산기의 연산값은 상기 산술논리연산기의 제2입력단으로 전달되는 것을 특징으로 하는 DSP.
  12. 제11항에 있어서, 상기 연산 장치는,
    상기 연산 장치의 동작 여부 결정 및 연산 횟수 조절을 위한 제어부를 더 포함하는 것을 특징으로 하는 DSP.
  13. 제11항에 있어서, 상기 곱셈기는
    상기 제2 입력단의 수신값의 상위 n비트와 제1 입력단의 수신값을 곱셈하는 제1 연산기;
    상기 제2 입력단의 수신값의 하위 n비트와 제1 입력단의 수신값을 곱셈하는 제2 연산기;
    상기 제2 연산기의 연산값을 n비트 하향 이동 시키는 시프터; 및
    상기 제1 연산기의 연산값 및 상기 시프터의 출력값을 덧셈하는 제3 연산기를 포함하는 것을 특징으로 하는 DSP.
  14. 제11항에 있어서, 상기 연산 장치는,
    연산 횟수에 따라서 상기 제2 및 제3 레지스터 중 하나의 저장 데이터를 상기 곱셈기로 전달하는 선택기를 더 포함하는 것을 특징으로 하는 DSP.
  15. 삭제
  16. n 비트 (n은 자연수)의 크기를 가지는 제1 및 제2 레지스터, 2n 비트의 크기를 가지는 제3 레지스터, nX2n 비트 곱셈을 수행하는 곱셈기 및 2n비트 산술논리연산기를 포함하는 연산 장치를 이용한 필터링 방법에 있어서,
    상기 제1 레지스터에는 필터 계수값을 저장하고, 상기 제2 레지스터에는 입력 데이터 값을 저장하고, 상기 제3 레지스터에는 필터 연산 결과값을 저장하는 저장 과정;
    기설정된 순서에 따라서 상기 제3 레지스터에 저장된 필터 연산 결과값 또는 상기 제2 레지스터에 저장된 입력 데이터 값을 상기 곱셈기로 전달하는 선택 과정;
    상기 제1 레지스터에 저장된 필터 계수값과 상기 선택 과정에서 전달된 값을 상기 곱셈기로 곱셈 연산하는 곱셈 과정;
    상기 곱셈 과정의 결과값을 상기 산술논리연산기를 이용하여 누산하는 누산 과정; 및
    상기 제1 레지스터에 저장된 모든 필터 계수값에 대해서 상기 선택, 곱셈, 및 누산 과정이 이루어지면, 상기 누산 과정의 결과값을 외부로 출력하고 상기 제3 레지스터에 저장하는 결과값 저장 과정을 포함하며,
    상기 선택 과정, 곱셈 과정, 누산 과정 및 결과값 저장 과정이 순차적으로 반복 수행되며,
    상기 저장 과정은 상기 제3 레지스터에 저장된 필터 연산 결과값과 곱해질 필터 계수값 및 제2 레지스터에 저장된 입력 데이터 값과 곱해질 필터 계수값을 상기 제1 레지스터에 순차적으로 저장하는 것을 특징으로 하는 필터링 방법.
  17. 제16항에 있어서, 상기 제2 및 제3 레지스터에 저장된 값에 대해서 필터 연산이 종료되면, 제3 레지스터의 가장 오래된 필터 연산 결과값을 삭제하고 상기 누산 과정의 결과값을 상기 제3 레지스터에 저장하는 과정을 더 포함하는 것을 특징으로 하는 필터링 방법.
  18. 제16항에 있어서, 상기 연산 장치는 카운터를 더 포함하고,
    상기 카운터를 이용하여 상기 선택, 곱셈 및 누산 과정이 수행되면 상기 필터링 방법이 1회 수행된 것으로 상기 필터링 방법의 수행 횟수를 세며,
    상기 선택 과정은 상기 필터링 방법의 수행 횟수가 기설정된 수행횟수 이하이면 제3 레지스터에 저장된 필터 연산 결과값을 상기 곱셈기로 전달하고,
    상기 선택 과정은 상기 필터링 방법의 수행횟수가 기설정된 수행횟수 초과이면 제2 레지스터에 저장된 입력 데이터 값을 상기 곱셈기로 전달하는 것을 특징으로 하는 필터링 방법.
  19. 삭제
  20. 제16항에 있어서, 상기 곱셈 과정은
    상기 제2 레지스터에 저장된 입력 데이터 값을 전달받으면 nXn 비트 연산을 수행하고 2n 비트를 출력하는 제1 단계;
    상기 제3 레지스터에 저장된 필터 연산 결과값을 전달받으면 nX2n 비트 연산을 수행하고 3n 비트를 출력하는 제2 단계; 및
    상기 제2 단계의 3n 비트 출력값의 상위 2n 비트를 선택하여 출력하는 제3단계를 포함하는 것을 특징으로 하는 필터링 방법.
KR1020100107023A 2009-12-18 2010-10-29 Mac 연산을 포함하는 연산 장치, 이를 이용한 dsp 구조 및 필터링 방법 KR101462157B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/970,090 US20110153995A1 (en) 2009-12-18 2010-12-16 Arithmetic apparatus including multiplication and accumulation, and dsp structure and filtering method using the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20090127511 2009-12-18
KR1020090127511 2009-12-18

Publications (2)

Publication Number Publication Date
KR20110070766A KR20110070766A (ko) 2011-06-24
KR101462157B1 true KR101462157B1 (ko) 2014-11-20

Family

ID=44402231

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100107023A KR101462157B1 (ko) 2009-12-18 2010-10-29 Mac 연산을 포함하는 연산 장치, 이를 이용한 dsp 구조 및 필터링 방법

Country Status (1)

Country Link
KR (1) KR101462157B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100202309B1 (ko) * 1996-12-31 1999-06-15 이계철 엠피이지-2 오디오 부호화기를 위한 연산처리장치
KR100272622B1 (ko) * 1991-05-08 2000-11-15 가나이 쓰도무 데이타 처리장치
KR100745863B1 (ko) 2000-04-14 2007-08-02 마츠시타 덴끼 산교 가부시키가이샤 씨알씨 연산장치 및 씨알씨 연산방법
JP2007522699A (ja) 2003-12-29 2007-08-09 ザイリンクス インコーポレイテッド カスケード接続するdspスライスを備えた集積回路

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100272622B1 (ko) * 1991-05-08 2000-11-15 가나이 쓰도무 데이타 처리장치
KR100202309B1 (ko) * 1996-12-31 1999-06-15 이계철 엠피이지-2 오디오 부호화기를 위한 연산처리장치
KR100745863B1 (ko) 2000-04-14 2007-08-02 마츠시타 덴끼 산교 가부시키가이샤 씨알씨 연산장치 및 씨알씨 연산방법
JP2007522699A (ja) 2003-12-29 2007-08-09 ザイリンクス インコーポレイテッド カスケード接続するdspスライスを備えた集積回路

Also Published As

Publication number Publication date
KR20110070766A (ko) 2011-06-24

Similar Documents

Publication Publication Date Title
CN110825434B (zh) 计算装置及计算方法
US9792118B2 (en) Vector processing engines (VPEs) employing a tapped-delay line(s) for providing precision filter vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods
US9684509B2 (en) Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods
US20150143076A1 (en) VECTOR PROCESSING ENGINES (VPEs) EMPLOYING DESPREADING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITS AND VECTOR DATA MEMORY TO PROVIDE IN-FLIGHT DESPREADING OF SPREAD-SPECTRUM SEQUENCES, AND RELATED VECTOR PROCESSING INSTRUCTIONS, SYSTEMS, AND METHODS
JP5544240B2 (ja) マルチmacアーキテクチャにおける低電力firフィルタ
US20110153995A1 (en) Arithmetic apparatus including multiplication and accumulation, and dsp structure and filtering method using the same
US8909687B2 (en) Efficient FIR filters
EP2851786A1 (en) Instruction class for digital signal processors
CN102629238A (zh) 支持向量条件访存的方法和装置
KR101462157B1 (ko) Mac 연산을 포함하는 연산 장치, 이를 이용한 dsp 구조 및 필터링 방법
JPH11327875A (ja) 演算回路
CN114065122A (zh) 数据处理方法、设备和存储介质
CN112639839A (zh) 神经网络的运算装置及其控制方法
CN103378820A (zh) 可编程数字滤波实现方法、装置、基带芯片及其终端
CN110673802A (zh) 数据存储方法、装置、芯片、电子设备和板卡
CN104734668A (zh) 一种插值滤波器
EP2296093A2 (en) DSP execution unit for efficient alternate modes of operation
US20160162290A1 (en) Processor with Polymorphic Instruction Set Architecture
CN220208247U (zh) 除法运算电路
KR100900790B1 (ko) 재구성형 프로세서 연산 방법 및 장치
CN112136128A (zh) 数据处理方法和装置
KR20210131417A (ko) 데이터 처리 장치 및 인공 지능 칩
CN114237551A (zh) 一种基于脉动阵列的多精度加速器及其数据处理方法
CN113961870A (zh) 应用于脑电信号处理的fft芯片电路及其设计方法、装置
Srini et al. Parallel DSP with memory and I/O processors

Legal Events

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

Payment date: 20171027

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191028

Year of fee payment: 6