KR101100753B1 - 부스 곱셈기 - Google Patents

부스 곱셈기 Download PDF

Info

Publication number
KR101100753B1
KR101100753B1 KR1020040060218A KR20040060218A KR101100753B1 KR 101100753 B1 KR101100753 B1 KR 101100753B1 KR 1020040060218 A KR1020040060218 A KR 1020040060218A KR 20040060218 A KR20040060218 A KR 20040060218A KR 101100753 B1 KR101100753 B1 KR 101100753B1
Authority
KR
South Korea
Prior art keywords
multiplier
booth
adder
register
value
Prior art date
Application number
KR1020040060218A
Other languages
English (en)
Other versions
KR20060011387A (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 KR1020040060218A priority Critical patent/KR101100753B1/ko
Publication of KR20060011387A publication Critical patent/KR20060011387A/ko
Application granted granted Critical
Publication of KR101100753B1 publication Critical patent/KR101100753B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5332Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/5052Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination using carry completion detection, either over all stages or at sample stages only
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5306Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
    • G06F7/5312Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products using carry save adders

Landscapes

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

Abstract

본 발명은 디지털 데이터에 대한 곱셈을 빠른 속도로 수행하는 고속 곱셈기에 관한 것이다.
본 발명의 부스 곱셈기는 승수의 부분 비트값에 따라 부스 커맨드들을 출력하기 위한 부스 엔코더; 부스 알고리즘에 따라 피승수 및 상기 부스 커맨드에 따른 부분적들을 출력하기 위한 부스 셀렉터; 및 상기 부분적들을 합산하여 최종 결과값을 출력하기 위한 덧셈부를 포함하는 곱셈기에 있어서,
상기 부스 셀렉터가 출력하는 부분적들을 일시 저장하기 위한 부분적 레지스터; 및 상기 덧셈부의 중간 산출값을 일시 저장하기 위한 하나 이상의 덧셈부 레지스터를 포함하는 것을 특징으로 한다.
곱셈기, 적산기, 부스 알고리즘, wallace tree, 파이프라인

Description

부스 곱셈기{BOOTH MULTIPLIER}
도 1은 부스 곱셈기가 사용되는 영상처리기의 블록도,
도 2는 종래 기술에 의한 부스 곱셈기의 블록도,
도 3은 본 발명의 일실시예에 따른 부스 곱셈기의 블록도,
도 4는 본 발명의 일실시예에 따른 부스 곱셈기에 사용되는 덧셈부 일부에 대한 세부 구조도,
도 5는 본 발명의 다른 실시예에 따른 부스 곱셈기의 블록도,
* 도면의 주요 부분에 대한 부호의 설명
21 : 입력 레지스터 22 : 부스 엔코더
24 : 부스 셀렉터 25 : 부분적 레지스터
26 : 제1 덧셈부 27 : 덧셈부 레지스터
28 : 제2 덧셈부 29 : 출력 레지스터
본 발명은 빠른 속도로 디지털 데이터에 대한 곱셈을 수행하는 고속 곱셈기에 관한 것이다.
최근의 디지털 데이터 처리, 특히, 영상신호 처리에는 곱셈연산이 자주 사용되는데, 이를 위해 도 1에 도시한 것처럼, 다수개의 곱셈기가 사용된다. 곱셈연산은 덧셈/뺄셈 연산보다는 처리 시간이 많이 소요되기 때문에, 영상신호 처리 장치에서는 전반적인 동작 속도 및 기능을 향상시키기 위해서 곱셈연산의 속도를 높이는 것이 필수적이다.
곱셈연산의 처리 속도를 높이기 위한 다양한 알고리즘 및 장치들이 다수 제안되어 있으며, 특히 부스 알고리즘(Booth's Algorithm)을 이용한 곱셈기가 널리 사용되고 있다.
도 2는 종래의 부스 알고리즘을 적용한 고속 곱셈기의 블록 다이어그램이다. 도시한 고속 곱셈기(10)는 4-radix 부스 알고리즘을 적용한 곱셈기로서, 16비트 × 16비트의 연산을 수행하여 32비트의 결과값을 출력한다.
부스 엔코더부(2)에서는 16비트의 승수를 입력받아, 승수의 부분 3비트값에 따라 결정되는 부스 커맨드를 생성하여, 부스 셀렉터(4)로 전송한다. 부스 셀렉터(4)는 1번의 곱셈연산시 총 4개의 부스 커맨드를 입력받고, 16비트 피승수에 대하여 입력받은 커맨드에 해당하는 연산을 수행하여 8개의 17비트 부분적을 출력한다.
덧셈부(6, 8)에서는 각 17비트 부분적에 해당 자릿수로 쉬프트시킨 값 8개에 대한 합산을 수행하여 최종 곱셈 연산 결과값을 출력한다.
상기 종래기술에 의한 곱셈기는 비록 부스 알고리즘에 의한 고속화는 구현하였지만, 덧셈부에 의한 다수회의 덧셈연산에 의한 속도 제한은 제거할 수 없었다. 또한, 고속화를 위해 상기 곱셈기를 구성하는 각 부분들은 외부 시스템의 전체 동작의 동기화를 위한 클럭에 동기되지 않은 상태로 작동되는데, 이 경우 곱셈기의 결과값을 입력받는 외부 모듈은 항상 곱셈기의 결과 도달여부를 체크하는 복잡한 구조를 가지거나, 아예 외부 시스템 클럭을 곱셈기의 속도에 맞게 늦쳐 주어야만 하였다. 따라서 곱셈기를 포함하는 디지탈 신호 처리 시스템을 복잡해 지는 문제점 또는 속도 저하의 문제점을 동시에 해결할 수는 없었다.
본 발명은 상기 문제점들을 해결하기 위하여 안출된 것으로서, 보다 간단한 구조의 고속 곱셈기를 제공하는데 그 목적이 있다.
또한, 본 발명은 상당히 빠른 시스템 클럭 환경에서도 용이하게 적용할 수 있는 고속 곱셈기를 제공하는데 다른 목적이 있다.
또한, 본 발명은 시스템 클럭을 사용하여 동작을 동기화할 수 있는 고속 곱셈기를 제공하는데 또 다른 목적이 있다.
또한, 본 발명은 연속된 복수개의 곱셈 연산을 동시에 수행할 수 있는 고속 곱셈기를 제공하는데 또 다른 목적이 있다.
상기 목적을 달성하기 위한 본 발명의 부스 곱셈기는,
승수의 부분 비트값에 따라 부스 커맨드들을 출력하기 위한 부스 엔코더; 부스 알고리즘에 따라 피승수 및 상기 부스 커맨드에 따른 부분적들을 출력하기 위한 부스 셀렉터; 상기 부분적들을 합산하여 최종 결과값을 출력하기 위한 덧셈부; 상기 부스 셀렉터가 출력하는 부분적들을 일시 저장하기 위한 부분적 레지스터; 및 상기 덧셈부의 중간 산출값을 일시 저장하기 위한 하나 이상의 덧셈부 레지스터를 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. 이에 앞서, 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서, 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
(실시예 1)
도 3에 도시한 바와 같은 본 실시예의 부스 곱셈기는,
승수의 부분 비트값에 따라 부스 커맨드들을 출력하기 위한 부스 엔코더(22); 부스 알고리즘에 따라 피승수 및 상기 부스 커맨드에 따른 부분적들을 출력하기 위한 부스 셀렉터(24); 상기 부분적들의 각 자리에 대한 비트 덧셈의 결과값들로 이루어진 총합값과, 상기 부분적들의 각 자리에 대한 비트 덧셈의 캐리값들을 포함하는 총캐리값을 출력하기 위한 제1 덧셈부(26); 상기 총합값과 상기 총캐리값을 합산하여 최종 산출값을 출력하기 위한 제2 덧셈부(28); 상기 부스 셀렉터가 출력하는 부분적들을 일시 저장하기 위한 부분적 레지스터(25); 및 상기 제1 덧셈부가 출력하는 총합값과 총캐리값을 일시 저장하기 위한 덧셈부 레지스터(27)를 포함하는 것을 특징으로 한다.
부스 곱셈기 외부로부터 곱셈연산의 요청은, 승수(Multiplier)와 피승수(Multiplicand)를 입력 레지스터(21)에 기록하고, 곱셈 요청 신호를 부스 곱셈기(20)로 전송함으로써 이루어진다.
4-radix 부스 알고리즘을 적용하였으므로, 부스 엔코더(22)는 입력 레지스터(21)에 기록된 승수를 입력받아 홀수번째 비트와 그 전후 비트들로 이루어진 3 비트값으로, 피승수에 대한 연산을 지정하는 부스 커맨드를 생성하여, 부스 셀렉터(24)로 출력한다. 최하위 비트의 경우에는 이전비트로 "0"을 적용하며, 16비트 승수에 대하여 총 8개의 부스 커맨드가 생성되며, 3부분 비트값에 따른 부스 커맨드는 하기 표 1과 같다.
Figure 112004034300031-pat00001
부스 셀렉터(24)는 입력 레지스터(21)에 기록된 피승수에 대하여, 입력받은 하나의 부스 커맨드에 해당하는 연산을 수행하여 생성된 부분적 8개를 부분적 레지스터(25)에 저장한다.
16비트 피승수에 4-radix 부스 알고리즘을 적용하는 경우, 16비트 피승수에 표 1의 명령 중 하나가 적용된 1개의 부분적의 자릿수는 17비트가 되므로, 부분적 레지스터(25)는 총 17×8 = 136비트의 자리를 가져야 한다. 그러나, 각 부분적이 덧셈 연산될 때에는 나머지 자리가 부스 커맨드에 따라 "0" 또는 "1"로 채워진 32비트 값으로 더해지므로, 각 부분적의 나머지 자리의 채움값을 나타내는 상태비트를 부분적마다 하나 더 기록하는 것이 편리하므로, 부분적 레지스터(25)는 총 18×8 = 144비트의 자리를 가지는 것이 바람직하다.
부스 셀렉터(24) 및 부스 엔코더(22)의 구조를 간단히 하기 위해서는, 부스 셀렉터(24)는 부스 엔코더(22)가 출력하는 부스 커맨드를 하나씩 입력받아, 부분적 을 하나씩 부분적 레지스터(25)에 기록토록 구현할 수도 있으나, 보다 속도를 증가시키기 위해서는 부스 엔코더(22)는 8개의 부스 커맨드를 한꺼번에 생성하여 부스 셀렉터(24)로 전송하고, 부스 셀렉터(24)는 부분적을 계산하는 8개의 모듈로 이루어져, 입력받은 8개의 부스 커맨드에 대한 부분적 생성을 한꺼번에 수행하여, 부분적 레지스터(25)에 한꺼번에 기록하도록 구현하는 것이 바람직하다.
도 4는 4-radix 부스 알고리즘을 적용하며, 왈래스 트리(Wallace Tree) 구조의 알고리즘을 사용하여 구현한 본 실시예의 부스 곱셈기(26, 28)를 도시한다. 도시한 본 실시예의 제1 덧셈부(26)는 왈래스 트리 구조의 덧셈기로서, 캐리(carry)의 전달 지연시간을 줄여 고속의 덧셈을 하기 위한 것으로, 3비트 입력을 합산하여 1비트의 결과값과 1비트의 캐리값을 출력하는 3비트 캐리 보존 덧셈기(CSA: Carry Save Adder) 모듈 다수개로 이루어진다. 왈래스 트리 구조에서 제1 덧셈부(26)는 도시한 구조에서 알 수 있는 바와 같이, 복수개의 덧셈을 병렬적으로 일시에 수행하여, 각 자리별로 최종 캐리를 제외한 합산 결과값들로 이루어진 총합값과, 각 자리별로 최종 캐리값으로 이루어진 총캐리값을 출력하게 된다. 따라서, 제1 덧셈부(26)는 입력받은 17비트 부분적을 32비트로 변환한 값 8개에 대하여 병렬적으로 연산을 수행하여, 32비트의 총합값과 32비트의 총캐리값을 생성하여 덧셈부 레지스터(27)에 기록한다.
본 실시예의 제2 덧셈부(28)는 덧셈부 레지스터(27)에 기록된 제1 덧셈부가 출력한 총합값과 총캐리값을 합산하여 승수와 피승수의 곱셈연산 결과값으로서 최종 산출값을 생성하여 출력 레지스터(29)에 기록한다. 도시한 바와 같이 제2 덧셈 부(28)는 이전 비트부터의 덧셈연산 결과로 발생한 캐리를 다음 비트로 전달하는 과정을 최하위 비트로부터 최상위 비트까지 수행해야 하므로, 구조는 간단하나 연산수행시간은 비교적 긴 편이다.
본 실시예에서 사용되는 입력 레지스터(21), 부분적 레지스터(25), 덧셈부 레지스터(27) 및 출력 레지스터(29)는 동일한 클럭을 입력받아 동작을 서로 동기화 한다. 따라서, 클럭의 한 주기 입력에 따라, 입력 데이터는 입력 레지스터(21) -> 부분적 레지스터(25) -> 덧셈부 레지스터(27) -> 출력 레지스터(29)로 순차적으로 이동하게 된다.
이하, 본 실시예에 따른 부스 곱셈기(20)의 연산과정을 첨부도면을 참조하여 설명하기로 한다.
본 실시예에 따른 부스 곱셈기의 곱셈 연산 방법은, 첫번째 클럭에 타이밍을 맞추어, 외부에서 입력받은 승수와 피승수에 대한 부분적들을 생성하여 일시 저장하는 단계(S20); 두번째 클럭에 타이밍을 맞추어, 상기 부분적들을 왈래스 트리 방식으로 총합값과 총캐리값을 생성하여 일시 저장하는 단계(S30); 및 세번째 클럭에 타이밍을 맞추어, 상기 총합값과 총캐리값을 합산하여 최종 산출값을 생성하는 단계(S40)를 포함하는 것을 특징으로 한다.
상기 부스 곱셈기와 인터페이스 되는 외부 장치들과의 타이밍 제어의 편의를 위해, 상기 부스 곱셈기의 승수와 피승수의 입력 과정 및 최종 산출값의 출력 과정 또한, 동일한 클럭으로 제어하는 것이 바람직하다. 이를 위해 상기 S40 단계에서는 최종 산출값을 일시 저장하며, 상기 S20 단계 구동클럭의 직전 클럭에 타이밍을 맞추어 외부에서 승수와 피승수를 입력받아 일시 저장하는 단계(S10); 및 상기 S40 단계 구동클럭의 직후 클럭에 타이밍을 맞추어 최종 산출값을 외부로 출력하는 단계(S50)를 더 포함한다.
상기 S10단계는 클럭0의 주기 동안에 수행되며, 외부 장치들로부터 입력받은 승수 및 피승수 데이타를 입력 레지스터(21)에 일시 저장한다.
상기 S20단계는 클럭1의 주기 동안에 수행되며, 입력 레지스터(21)에 기록된 승수는 부스 엔코더(22)로 입력되고, 입력 레지스터(21)에 기록된 피승수는 부트 셀렉터(24)로 입력된 후, 부스 엔코더(22)에 의해 승수에 의한 부스 커맨더들이 생성되고, 부스 셀렉터(24)는 부스 커멘더들을 입력받아 해당 연산을 피승수에 대하여 수행하여, 부분적들을 생성하여 부분적 레지스터(25)에 기록한다. 16비트 승수와 16비트 피승수에 대하여 4-radix 부스 알고리즘을 적용하는 경우 17자리의 부분적 8개가 생성된다.
상기 S30단계는 클럭2의 주기 동안에 수행되며, 왈래스 트리 구조의 제1 덧셈부(26)가 부분적들을 합하여 산출한 총캐리값과 총합값을 덧셈부 레지스터(27)에 기록하는 과정으로 이루어진다.
상기 S40단계는 클럭3의 주기 동안에 수행되며, 덧셈부 레지스터(27)에 기록된 총캐리값과 총합값에 대한 덧셈연산만을 수행하여 최종 산출값을 생성한다.
상기 S50단계는 클럭4의 주기 동안에 수행되며, 출력 레지스터(29)에 기록된 최종 산출값을 외부 장치로 출력한다.
연속되는 곱셈 연산을 빠르게 수행하기 위해서는 상기 4개의 레지스터(21, 25, 27, 29)를 이용하여 파이프라인 구조로 부스 곱셈기를 적용하는 것이 바람직하다. 예컨데, 첫번째 클럭에서 제1 승수 및 피승수를 입력 레지스터(21)에 기록하였다면, 두번째 클럭에서는 제1 승수 및 피승수에 대한 부분적을 계산하여 부분적 레지스터(25)에 기록함과 동시에 제2 승수 및 피승수를 입력 레지스터(21)에 기록하고, 세번째 클럭에서는 제1 승수 및 피승수에 대하여 총합값 및 총캐리값을 계산하여 덧셈부 레지스터(27)에 기록함과 동시에 제1 승수 및 피승수에 대한 부분적을 계산하여 부분적 레지스터(25)에 기록하고 또한 제2 승수 및 피승수를 입력 레지스터(21)에 기록하는 방식으로 수행하게 된다.
(실시예 2)
도 5에 도시한 바와 같은 본 실시예의 부스 곱셈기는,
승수의 부분 비트값에 따라 부스 커맨드들을 출력하기 위한 부스 엔코더(32); 부스 알고리즘에 따라 피승수 및 상기 부스 커맨드에 따른 부분적들을 출력하기 위한 부스 셀렉터(34); 상기 부분적들의 각 자리에 대한 비트 덧셈의 결과값들로 이루어진 총합값과, 상기 부분적들의 각 자리에 대한 비트 덧셈의 캐리값들을 포함하는 총캐리값을 출력하기 위한 제1 덧셈부(36); 상기 총합값과 상기 총캐리값을 합산하여 최종 산출값을 출력하기 위한 제2 덧셈부(38); 상기 부스 셀렉터(34)가 출력하는 부분적들을 일시 저장하기 위한 부분적 레지스터(35); 및 상기 제1 덧셈부(36)의 중간 산출값을 일시 저장하기 위한 덧셈부 레지스터(37)를 포함 하는 것을 특징으로 한다.
도 5는 4-radix 부스 알고리즘을 적용하며, 왈래스 트리 구조의 덧셈부를 사용하여 구현한 본 실시예의 부스 곱셈기를 도시한다. 부스 셀랙터(34) 및 부스 엔코더(32), 입력 레지스터(31), 출력 레지스터(39) 및 부분적 레지스터(35)는 상기 제1 실시예의 경우와 동일하다.
본 실시예의 제1 덧셈부(36)는 왈래스 트리 구조의 덧셈기를 사용하는데, 이는 캐리(carry)의 전달 지연시간을 줄여 고속의 덧셈을 하기 위한 것이다. 따라서, 제1 덧셈부(36)는 입력받은 17비트 부분적을 32비트로 변환한 값 8개에 대하여 연산을 수행하여 32비트의 총합값과 32비트의 총캐리값을 출력한다.
본 실시예의 제2 덧셈부(38)는 제1 덧셈부(36)가 출력한 총합값과 총캐리값을 합산하여 최종 산출값을 생성하여 출력 레지스터(39)에 기록한다.
본 실시예는 제1 덧셈부의 연산시간이 제2 덧셈부의 연산시간 보다 긴 경우에, 덧셈부 레지스터(37)를 연산시간이 긴 제1 덧셈부(36)의 연산과정 중간 산출값을 기록토록 구현한 것이다. 왈래스 트리 구조의 제1 덧셈부(36)는 소정 깊이의 다단 CSA 모듈들로 이루어지는 바, 제1 덧셈부 연산시작시부터 전체 덧셈부 연산시간의 중간 정도의 수행시간을 가지는 단계의 CSA 모듈들(중간단 CSA 모듈)에 레지스터 기능을 부가하여 구현하는 것이 바람직하다. 상기 중간단 CSA 모듈에 레지스터 기능을 부가하는 방법은, 상기 중간단 CSA 모듈자체가 입력 클럭에 따라 연산결과를 출력하는 래치기능을 가지도록 구현하거나, 상기 중간단 CSA 모듈의 입력단 또 는 출력단에 별도의 덧셈부 레지스터를 부가하도록 구현한다.
이하, 본 실시예에 따른 부스 곱셈기의 동작을 설명하기로 한다.
본 실시예에 따른 부스 곱셈기(30)의 곱셈 연산 방법은, 첫번째 클럭에 타이밍을 맞추어, 외부에서 입력받은 승수와 피승수에 대한 부분적들을 생성하여 일시 저장하는 단계(S20); 두번째 클럭에 타이밍을 맞추어, 상기 부분적들을 합산하는 과정의 중간 산출물을 생성하여 일시 저장하는 단계(S30); 및 세번째 클럭에 타이밍을 맞추어, 곱셈 연산 최종 산출값을 생성하는 단계(S40)를 포함하는 것을 특징으로 한다.
상기 부스 곱셈기와 인터페이스 되는 외부 장치들과의 타이밍 제어의 편의를 위해, 상기 부스 곱셈기의 승수와 피승수의 입력 과정 및 최종 산출값의 출력 과정 또한, 동일한 클럭으로 제어하는 것이 바람직하다. 이를 위해 상기 S40 단계에서는 최종 산출값을 일시 저장하며, 상기 S20 단계 구동클럭의 직전 클럭에 타이밍을 맞추어 외부에서 승수와 피승수를 입력받아 일시 저장하는 단계(S10); 및 상기 S40 단계 구동클럭의 직후 클럭에 타이밍을 맞추어 최종 산출값을 외부로 출력하는 단계(S50)를 더 포함한다.
상기 S10단계는 클럭0의 주기 동안에 수행되며, 외부 장치들로부터 입력받은 승수 및 피승수 데이타를 입력 레지스터에 일시 저장한다.
상기 S20단계는 클럭1의 주기 동안에 수행되며, 입력 레지스터(31)에 기록된 승수는 부스 엔코더(32)로 입력되고, 입력 레지스터(31)에 기록된 피승수는 부트 셀렉터(34)로 입력된 후, 부스 엔코더(32)에 의해 승수에 의한 부스 커맨더들이 생성되고, 부스 셀렉터(34)는 부스 커멘더들을 입력받아 해당 연산을 피승수에 대하여 수행하여, 부분적들을 생성하여 부분적 레지스터(35)에 기록한다. 16비트 승수와 16비트 피승수에 대하여 4-radix 부스 알고리즘을 적용하는 경우 17자리의 부분적 8개가 생성된다.
상기 S30단계는 클럭2의 주기 동안에 수행되며, 제1 덧셈부(36)에서 부분적들을 합하여 결과값을 도출하는 과정의 중간 산출값을 덧셈부 레지스터(37)에 기록한다.
상기 S40단계는 클럭3의 주기 동안에 수행되며, 덧셈부 레지스터(37)에 기록된 중간 산출값에 대한 왈래스 트리 연산을 계속 수행하여 승수와 피승수의 곱셈 연산값인 최종 산출값을 생성하여 출력 레지스터에 기록한다. 즉, 제1 덧셈부(36)는 덧셈부 레지스터(37)에 기록된 중간 산출값으로 총캐리값과 총합값을 생성하고, 제2 덧셈부(38)는 다시 총캐리값과 총합값에 대한 덧셈연산을 수행하여 최종 산출값을 생성한다.
상기 S50단계는 클럭4의 주기 동안에 수행되며, 출력 레지스터(39)에 기록된 최종 산출값을 외부 장치로 출력한다.
본 실시예에 있어서도 상기 제1 실시예의 경우와 마찬가지로, 연속되는 곱셈 연산을 빠르게 수행하기 위해서는 상기 4개의 레지스터(21, 25, 27, 29)를 이용하여 파이프라인 구조로 부스 곱셈기를 적용하는 것이 바람직하다.
본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 이것에 의해 한정되지 않으며 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 본 발명의 기술사상과 아래에 기재될 특허청구범위의 균등범위 내에서 다양한 수정 및 변형이 가능함은 물론이다.
예컨데, 상기 설명에서는 16자리 승수와 16자리 피승수를 곱하여 32자리 곱셈결과값을 산출하는 구현을 설명하였지만, 다른 다양한 자리수의 승수 및 피승수에 대해서도 본 발명의 권리범위 내에서 본 발명의 사상이 용이하게 적용될 것은 자명하다.
본 발명에 의한 고속 곱셈기를 실시함에 의해, 영상처리 등 빠른 곱셈 연산이 요구되는 분야에서 적절하게 동작을 수행하는 고속 곱셈기를 적용할 수 있게 하는 효과가 있다.
또한, 본 발명의 고속 곱셈기는 시스템 클럭의 주기가 곱셈 연산 하나가 수행되는 속도보다 빠른 경우에도 시스템 클럭으로 동작을 동기화시킬 수 있게 되는 효과도 있다.
또한, 본 발명의 고속 곱셈기는 파이프 라인 식으로 연속된 곱셈 연산을 병렬적으로 처리하여, 연속 곱셈 동작을 더욱 가속화하는 효과도 있다.

Claims (17)

  1. 승수의 부분 비트값에 따라 부스 커맨드들을 출력하기 위한 부스 엔코더; 부스 알고리즘에 따라 피승수 및 상기 부스 커맨드에 따른 부분적들을 출력하기 위한 부스 셀렉터; 및 상기 부분적들을 합산하여 최종 산출값을 출력하기 위한 덧셈부를 포함하는 부스 곱셈기에 있어서,
    상기 부스 셀렉터가 출력하는 부분적들을 일시 저장하여 상기 덧셈부로 전달하기 위한 부분적 레지스터; 및
    상기 덧셈부의 중간 산출값을 일시 저장하기 위한 하나 이상의 덧셈부 레지스터
    를 포함하는 부스 곱셈기.
  2. 제1항에 있어서, 상기 덧셈부는,
    상기 부분적들의 각 자리별로 최종 캐리를 제외한 합산 결과값들로 이루어진 총합값과, 상기 부분적들의 각 자리별로 최종 캐리값으로 이루어진 총캐리값을 출력하기 위한 제1 덧셈부; 및
    상기 총합값과 상기 총캐리값을 합산하여 최종 산출값을 출력하기 위한 제2 덧셈부
    를 포함하는 부스 곱셈기.
  3. 제2항에 있어서, 상기 덧셈부 레지스터는,
    상기 제1 덧셈부로부터 입력받은 상기 총합값 및 총캐리값을 일시 저장하였다가, 상기 제2 덧셈부로 출력하는 부스 곱셈기.
  4. 제2항에 있어서, 상기 덧셈부 레지스터는,
    상기 제1 덧셈부의 중간 산출값을 일시 저장하기 위한 것인 부스 곱셈기.
  5. 제2항 내지는 제4항 중 어느 한 항에 있어서, 상기 제1 덧셈부 및/또는 제2 덧셈부는,
    3비트 입력을 합산하여 1비트의 결과값과 1비트의 캐리값을 출력하는 3비트 캐리 보존 가산기 다수개로 이루어진 부스 곱셈기.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서,
    외부에서 입력받은 승수 및 피승수를 저장하기 위한 입력 레지스터를 더 포함하는 부스 곱셈기.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 최종 산출값을 저장하였다고 외부로 출력하기 위한 출력 레지스터를 더 포함하는 부스 곱셈기.
  8. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 부분적 레지스터 및 상기 덧셈부 레지스터는 동일한 동기용 클럭을 입력받는 부스 곱셈기.
  9. 제6항에 있어서,
    상기 입력 레지스터, 상기 부분적 레지스터 및 상기 덧셈부 레지스터는 동일한 동기용 클럭을 입력받는 부스 곱셈기.
  10. 제7항에 있어서,
    상기 부분적 레지스터, 상기 덧셈부 레지스터 및 상기 출력 레지스터는 동일한 동기용 클럭을 입력받는 부스 곱셈기.
  11. 첫번째 클럭에 타이밍을 맞추어, 외부에서 입력받은 승수와 피승수에 대한 부분적들을 생성하여 일시 저장하는 단계(S20);
    두번째 클럭에 타이밍을 맞추어, 상기 부분적들을 합산하는 과정의 중간 산출물을 생성하여 일시 저장하는 단계(S30); 및
    세번째 클럭에 타이밍을 맞추어, 곱셈 연산 최종 산출값을 생성하는 단계(S40)를 포함하는 곱셈 연산 방법.
  12. 제11항에 있어서, 상기 S30단계는,
    상기 부분적들의 각 자리별로 최종 캐리를 제외한 합산 결과값들로 이루어진 총합값, 및 상기 부분적들의 각 자리별로 최종 캐리값으로 이루어진 총캐리값을 생성하여 일시 저장하는 단계인 곱셈 연산 방법.
  13. 제11항 또는 제12항에 있어서,
    상기 S20 단계 구동클럭의 직전 클럭에 타이밍을 맞추어 외부에서 승수와 피승수를 입력받아 일시 저장하는 단계(S10)를 더 포함하는 곱셈 연산 방법.
  14. 제11항 또는 제12항에 있어서,
    상기 S40 단계 구동클럭의 직후 클럭에 타이밍을 맞추어 최종 산출값을 외부로 출력하는 단계(S50)를 더 포함하는 곱셈 연산 방법.
  15. 제11항에 있어서,
    첫번째로 입력된 승수 및 피승수에 대한 S40단계, 두번째로 입력된 승수 및 피승수에 대한 S30단계 및 세번째로 입력된 승수 및 피승수에 대한 S20단계가 동시에 수행되는 곱셈 연산 방법.
  16. 제13항에 있어서,
    첫번째로 입력된 승수 및 피승수에 대한 S40단계, 두번째로 입력된 승수 및 피승수에 대한 S30단계, 세번째로 입력된 승수 및 피승수에 대한 S20단계, 및 네번째로 입력된 승수 및 피승수에 대한 S10단계가 동시에 수행되는 곱셈 연산 방법.
  17. 제14항에 있어서,
    첫번째로 입력된 승수 및 피승수에 대한 S50단계, 두번째로 입력된 승수 및 피승수에 대한 S40단계, 세번째로 입력된 승수 및 피승수에 대한 S30단계 및 네번 째로 입력된 승수 및 피승수에 대한 S20단계가 동시에 수행되는 곱셈 연산 방법.
KR1020040060218A 2004-07-30 2004-07-30 부스 곱셈기 KR101100753B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040060218A KR101100753B1 (ko) 2004-07-30 2004-07-30 부스 곱셈기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040060218A KR101100753B1 (ko) 2004-07-30 2004-07-30 부스 곱셈기

Publications (2)

Publication Number Publication Date
KR20060011387A KR20060011387A (ko) 2006-02-03
KR101100753B1 true KR101100753B1 (ko) 2011-12-30

Family

ID=37121442

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040060218A KR101100753B1 (ko) 2004-07-30 2004-07-30 부스 곱셈기

Country Status (1)

Country Link
KR (1) KR101100753B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100935858B1 (ko) * 2007-12-05 2010-01-07 한국전자통신연구원 재구성 가능한 산술연산기 및 이를 구비한 고효율 프로세서
KR102338863B1 (ko) 2015-09-09 2021-12-13 삼성전자주식회사 연산을 제어하기 위한 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6353843B1 (en) 1999-10-08 2002-03-05 Sony Corporation Of Japan High performance universal multiplier circuit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6353843B1 (en) 1999-10-08 2002-03-05 Sony Corporation Of Japan High performance universal multiplier circuit

Also Published As

Publication number Publication date
KR20060011387A (ko) 2006-02-03

Similar Documents

Publication Publication Date Title
KR101173405B1 (ko) 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장
JP2006227939A (ja) 演算装置
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
JPH01144122A (ja) 除算回路
JPH0477932B2 (ko)
KR101100753B1 (ko) 부스 곱셈기
RU2717915C1 (ru) Вычислительное устройство
CN108255463B (zh) 一种数字逻辑运算方法、电路和fpga芯片
KR101073343B1 (ko) 개선된 감소 트리 회로를 갖는 부스 곱셈기
US20020161810A1 (en) Method and apparatus for multiplication and/or modular reduction processing
KR100836737B1 (ko) 중국인 나머지 정리(crt)와 캐리 저장 가산 기반의모듈러 곱셈 장치 및 방법
Shawl et al. Implementation of Area and Power efficient components of a MAC unit for DSP Processors
JPH10111791A (ja) 除算装置
JPS588353A (ja) 乗算装置
JP3561051B2 (ja) 演算同期回路
JPS6259828B2 (ko)
JP3396818B2 (ja) Dct演算回路及びidct演算回路
JPH0368415B2 (ko)
JP3456450B2 (ja) 固定小数点乗算器および方法
US20100191787A1 (en) Sequential Multiplier
JP2607759B2 (ja) 除算器
JP2995721B2 (ja) 除算装置および除算方法
KR20010107087A (ko) 갈로아체상에서 비트 직렬 승산기의 병렬화 방법 및 이를이용한 직병렬 승산기
JPH0833815B2 (ja) 高桁乗算装置
JPS60134934A (ja) 乗算装置

Legal Events

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