반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 딥러닝 가속기
- CUDA
- pyverilog 설치 오류
- 컨벌루션 연산
- linux c 컴파일
- Pyverilog 실행
- AMBA
- makefile
- Data HAzard
- systolic array
- 데이터 해저드
- gpgpu-sim
- pytest-pythonpath 설치 오류
- gcc 컴파일
- Makefile compile
- Pyverilog 설치
- 이진수 곱셈 알고리즘
- linux c++ 컴파일
- 클럭 게이팅
- linux makefile 작성
- DNN Accelerator
- Pyverilog 튜토리얼
- 대구 반도체 설계기업 특화
- CDC
- Design DNN Accelerator
- 남산업힐
- CLOCK GATING
- pygraphviz 설치 오류
- DNN 가속기
- Pyvrilog tutorial
Archives
- Today
- Total
오늘은 맑음
Multiplication algorithm(3) 본문
반응형
이번에는 multiplier X가 음수인 경우를 알아보겠습니다.
두 수의 부호비트가 모두 1일 때에는 이전의 계산법과 조금 달라집니다.
수식으로 풀어보겠습니다.
어떠한 승수(multiplier) X가 음수일 때 X는 다음과 같이 표현할 수 있습니다.
X=−xx−12n−1+˜X
이 때 ˜X=∑n−2j=0xj2j입니다.
쉽게 표현해보면 X = 1101(-3)일 때 X = 1000 + 101을 의미합니다.
이전 (1), (2)에서 표현한 product U를 ˜X를 이용해 표현하면 다음과 같습니다.
U=˜X·A=(X+xn−1·2n−1)·A=X·A+A·xn−1·2n−1
위의 식을 X · A의 식으로 전개하면 다음과 같습니다.
X·A=U−A·xn−1·2n−1
다르게 말하면 xn−1, X의 부호비트가 1이면 U의 최상위의 절반에서 A를 빼는 동작을 수행해야 됩니다.
예시를 들어 전개해보겠습니다.
A = -5, X = -3으로 정하겠습니다.
A와 X를 2의 보수로 취해주면 각각 다음과 같습니다.
A=1011,X=1101

x2까지는 연산 방식이 같습니다.
하지만 x3==1인 경우가 발생합니다.
이 경우 correction step이 되어 A를 빼는 동작이 수행됩니다.
A를 빼기 위해 2의 보수를 취해주면 0101이 되어 U에 더해지게 됩니다.
위의 과정을 거쳐 나온 최종 U(product)는 000_1111이 되어 15가 됩니다.
반응형
'Digital logic' 카테고리의 다른 글
이진수 수의 표현 / Binary Number System(2) (0) | 2020.04.19 |
---|---|
이진수 수의 표현 / Binary Number System(1) (0) | 2020.04.19 |
Multiplication algorithm(2) (0) | 2020.04.17 |
Multiplication algorithm(1) (0) | 2020.04.17 |
CDC(Clock Domain Crossing) (4) | 2019.12.05 |