쉬프트-더하기 알고리즘
쉬프트-더하기 알고리즘 RTL코드
Y 레지스터를 없에고 V로 대신한다.
Booth 알고리즘
RTL 코드
간소화 버젼
덧셈과 뻴셈의 간소화
여기에서 Y레지스터를 없에고 승수를 V에 저장하도록 해서 더욱 간소화 할 수 있다.
C : 캐리
U, V : 곱셈 결과의 상위, 사위 비트들
X : 피승수
Y : 승수
C = 0, U = 0;
FOR i = n DOWNTO 0 DO
IF Y0 == 1 THEN CU = U + X
CUV를 오른쪽으로 선형 시프트 시킨다.
Y를 오른쪽으로 순환 시프트 시킨다.
END
쉬프트-더하기 알고리즘 RTL코드
Y 레지스터를 없에고 V로 대신한다.
1 : U <- 0, i <- n
V02 : CU <- U + X
2 : i <- i - 1
2 : shr(CUV)
Z'3 : GOTO 2
Z3 : FINISH <- 1
Booth 알고리즘
U = 0; Y-1 = 0;
FOR i = n DOWNTO 0 DO
IF Y0(Y-1)' THEN U = U + X' + 1
IF Y0'(Y-1) THEN U = U + X
UV를 오른쪽으로 산술 시프트 시킨다.
Y를 오른쪽으로 순환 시프트시키고 Y0를 Y-1에 복사한다.
END
RTL 코드
1 : U <- 0, Y-1 <- 0, i <- n
Y0(Y-1)'2 : U <- U + X' + 1
Y0'(Y-1)2 : U <- U + X
2 : i <- i - 1
3 : ashr(UV), cir(Y), Y-1 <- Y0
Z'3 : GOTO 2
Z3 : FINISH <- 1
간소화 버젼
덧셈과 뻴셈의 간소화
(Y0 xor Y-1) 2 : U <- U + (X xor Y0) + Y0
X xor Y0는 X의 각 비트를 Y0와 xor 한다는 것을 의미함.
RTL 코드
1 : U <- 0, Y-1 <- 0, i <- n
(Y0 xor Y-1) 2 : U <- U + (X xor Y0) + Y0
2 : i <- i - 1
3 : ashr(UV), cir(Y), Y-1 <- Y0
Z'3 : GOTO 2
Z3 : FINISH <- 1
여기에서 Y레지스터를 없에고 승수를 V에 저장하도록 해서 더욱 간소화 할 수 있다.
'디지털 논리 회로' 카테고리의 다른 글
| Altera SignalTap II embedded Logic Analyzer Tutorial (0) | 2010/02/06 |
|---|---|
| Verilog HDL 입문하기 (0) | 2009/12/29 |
| 캐리 저장 가산기(Carry Save Adder) (0) | 2008/03/01 |
| 산술연산 알고리즘 (0) | 2008/01/30 |
TAG algorithm

