산술연산 알고리즘

디지털 논리 회로 | 2008/01/30 13:13 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License
쉬프트-더하기 알고리즘
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에 저장하도록 해서 더욱 간소화 할 수 있다.
TAG

댓글을 달아 주세요