2의 보수 체계에서 N-bit 표현을 할 경우에 -2^(N-1)에 해당 하는 Counter part가 없다는 점이 coner case에 해당한다.
예를들어서 5비트로 표현할 경우 -16이 최소 값인데, 최대값은 15이다. 이런 상황에 처하는 것을 Coner case라고 부른다. 즉 -16으로 표현하고 +16으로 ABS를 취할 경우 5비트로 표현이 안되는 경우가 발생하는 것이다.
예를들어서 (-1) x (-1)을 Q1.2 format으로 연산할 경우 아래와 같다.
(주) 책에서는 After dropping redundant sign bit의 값이 1 0 0 0 0 0 으로 되어 있다.
단순한 계산인데 외 틀리는가 해서 고민을 했다.
책이 오타이다. 덕분에 2의 보수 체계를 다시 공부해야 했다는 TT_TT
하여튼 (-1) x(-1) = 1이 되어야 하는데 Q1.5 format에서는 다시 (-1)이 되는 문제가 발생한다. 이러한 경우를 대비해서
Conner case를 체크하는 구문을 넣어야 한다. 아래 함수를 보자
위의 코드에서 연산의 결과가 Integer MAX값에 도달하면 O/F를 세팅하고 수정하게 한다.
같은 방법으로 4비트 연산을 한 경우의 차이점은 아래와 같다.
4비트 곱셈을 정수로 할 경우에 하위 4비트를 취하고 이때 Overflow여부를 체크할 수 있다.
Q1.3 format으로 한다면 결과에 대해서 Shift 4를 한 뒤에 남은 것을 사용할 수 있다.
4비트 Fixed Point의 한계로 -0.765625를 표현 못하지만, 하여튼 유사 값으로 따라갈 수 있다.
이런것을 이용해서 만든것이 Fixel point Multiplication이다.
위의 연산은 Singed / Unsigned , Integer , Q-Format에 대해서 모두 할 수 있는 곱셈기이다. 상황에 맞게 사용할 수 있도록 Operand와 Fractional을 사용할 수 있도록 만들었다.
예를들어서 5비트로 표현할 경우 -16이 최소 값인데, 최대값은 15이다. 이런 상황에 처하는 것을 Coner case라고 부른다. 즉 -16으로 표현하고 +16으로 ABS를 취할 경우 5비트로 표현이 안되는 경우가 발생하는 것이다.
예를들어서 (-1) x (-1)을 Q1.2 format으로 연산할 경우 아래와 같다.
(주) 책에서는 After dropping redundant sign bit의 값이 1 0 0 0 0 0 으로 되어 있다.
단순한 계산인데 외 틀리는가 해서 고민을 했다.
책이 오타이다. 덕분에 2의 보수 체계를 다시 공부해야 했다는 TT_TT
하여튼 (-1) x(-1) = 1이 되어야 하는데 Q1.5 format에서는 다시 (-1)이 되는 문제가 발생한다. 이러한 경우를 대비해서
Conner case를 체크하는 구문을 넣어야 한다. 아래 함수를 보자
Word32 L_mult(Word16 var1,Word16 var2)
{
Word32 L_var_out;
L_var_out = (Word32)var1 * (Word32)var2;
if (L_var_out != (Word32)0x40000000L) // 0x8000 x 0x8000 = 0x40000000
{
L_var_out *= 2; //remove the redundant bit
}
else
{
Overflow = 1;
L_var_out = 0x7fffffff; //if overflow then clamp to max +ve value
}
return(L_var_out);
}
위의 코드에서 연산의 결과가 Integer MAX값에 도달하면 O/F를 세팅하고 수정하게 한다.
같은 방법으로 4비트 연산을 한 경우의 차이점은 아래와 같다.
4비트 곱셈을 정수로 할 경우에 하위 4비트를 취하고 이때 Overflow여부를 체크할 수 있다.
Q1.3 format으로 한다면 결과에 대해서 Shift 4를 한 뒤에 남은 것을 사용할 수 있다.
4비트 Fixed Point의 한계로 -0.765625를 표현 못하지만, 하여튼 유사 값으로 따라갈 수 있다.
이런것을 이용해서 만든것이 Fixel point Multiplication이다.
위의 연산은 Singed / Unsigned , Integer , Q-Format에 대해서 모두 할 수 있는 곱셈기이다. 상황에 맞게 사용할 수 있도록 Operand와 Fractional을 사용할 수 있도록 만들었다.
'ASIC SoC' 카테고리의 다른 글
SiliconGear Designs Spartan-6 FPGAs into Latest Generation High-Definition Video Security Surveillance & Video Display Platform (0) | 2011.06.22 |
---|---|
Optimized Mapping (0) | 2011.05.20 |
Xilinx의 새로운 FPGA Device (0) | 2011.03.08 |
나에게 프로세서란.. (0) | 2011.03.01 |
Mac book Pro의 thunderbolt (0) | 2011.03.01 |