일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 대구 반도체 설계기업 특화
- linux c 컴파일
- Pyverilog 설치
- 데이터 해저드
- Design DNN Accelerator
- Data HAzard
- linux c++ 컴파일
- 이진수 곱셈 알고리즘
- Pyverilog 튜토리얼
- DNN Accelerator
- pygraphviz 설치 오류
- 클럭 게이팅
- pytest-pythonpath 설치 오류
- gpgpu-sim
- CUDA
- AMBA
- systolic array
- 딥러닝 가속기
- Makefile compile
- pyverilog 설치 오류
- Pyverilog 실행
- 컨벌루션 연산
- makefile
- Pyvrilog tutorial
- CDC
- gcc 컴파일
- CLOCK GATING
- linux makefile 작성
- DNN 가속기
- 남산업힐
- Today
- Total
목록분류 전체보기 (227)
오늘은 맑음
이번에는 multiplier X가 음수인 경우를 알아보겠습니다. 두 수의 부호비트가 모두 1일 때에는 이전의 계산법과 조금 달라집니다. 수식으로 풀어보겠습니다. 어떠한 승수(multiplier) X가 음수일 때 X는 다음과 같이 표현할 수 있습니다. $$X = -x_{x-1}2^{n-1} + \tilde{X}$$ 이 때 $\tilde{X} = \sum_{j=0}^{n-2} x_{j}2^{j}$입니다. 쉽게 표현해보면 X = 1101(-3)일 때 X = 1000 + 101을 의미합니다. 이전 (1), (2)에서 표현한 product U를 $\tilde{X}$를 이용해 표현하면 다음과 같습니다. $$U = \tilde{X} · A = (X + x_{n-1} · 2^{n-1}) · A = X · A + A ·..
이번에는 multiplicand A가 음수인 경우의 곱셈 과정을 살펴보겠습니다. 이번에는 A = -5, X = 3인 경우 연산을 진행해보겠습니다. A는 음수이므로 2의 보수(2's complement)로 변환한 후 연산이 진행됩니다. -5를 2의 보수로 변환하면 다음과 같습니다. -5 = 1011 연산을 수행하면 위와 같습니다. 전체적인 과정은 양수 x 양수와 같으나 차이점이 있다면 shift할 때 MSB를 부호로 채워줍니다. 따라서 결과는 1110001이 되며 보수 형태를 다시 바꿔주게 되면 다음과 같습니다. 1110001 => 1110000 => 1001111 따라서 -15가 나오게 됩니다.
곱셈은 multiplicand(피승수/A) x multiplier(승수/X) = product(결과물/U)로 이루어진다. 디지털 회로에서 어떻게 곱셈이 이루어지는지 알아보겠습니다. $$X = x_{n-1}x_{n-2}...x_{1}x_{0}$$ $$A = a_{n-1}a_{n-2}...a_{1}a_{0}$$ 이 때 $x_{n-1}$과 $a_{n-1}$은 각 수의 부호 비트입니다. 곱셈 알고리즘은 단계(step) j에서 승수(multiplier)비트 $x_{j}$가 검출되고 결과물 $x_{j}A$가 $P^{(j+1)}$로 표기되는 부분 합(partial sum)에 더해지는 n-1단계(step)로 구성됩니다. $$P^{(j+1)} = (P^{(j)} + x_{j} * A) * 2^{-1}; j = 0, 1,..
Vivado HLS Tutorial에서 제공하는 lab1을 따라 해보겠습니다. 이 Tutorial은 Xilinx에서 제공하는 tutorial source를 다운받았다고 가정한 상태로 진행하겠습니다. https://www.xilinx.com/registration/sign-in.html?oamProtectedResource=wh%3Dwww.xilinx.com%20wu%3D%2Fmember%2Fforms%2Fdownload%2Fdesign-license.html%3Fcid%3D026f56e2-0a0f-4986-aeb7-e92917398939%26filename%3Dug871-design-files.zip%20wo%3D1%20rh%3Dhttps%3A%2F%2Fwww.xilinx.com%20ru%3D%252Fm..
HLS란?(High Level Synthesis) 오늘날 사용하는 애플리케이션에 사용되는 알고리즘들은 과거보다 훨씬 복잡해졌다. 또한 새로운 알고리즘이 등장하는 속도도 매우 빠르기 때문에 HDL을 이용해서 IP를 생성하는 속도가 따라잡기 어려워졌다. HDL을 이용하여 하드웨어를 구현하는 방법은 시간소모가 많아 개발시간이 느리기 때문이다. 따라서 HDL보다 생산성이 높은 C를 기반으로 IP를 생성하는 프로그램들이 등장하는데 이를 HLS라고 한다. Vivado에도 HLS를 지원하며 System Edition을 설치하면 사용할 수 있다.
CDC라 함은 서로 다른 clock으로 동작하는 clock domain끼리 데이터를 전송하는 것을 의미합니다. 서로 다른 clock domain에 있는 Flip Flop끼리 데이터를 주고 받기 때문에 문제가 발생합니다. 하나의 clock domain에서 데이터를 주고 받을 때 발생하지 않는 문제들이죠. 속도가 느린 Old Clock Domain과 속도가 빠른 New Clock Domain에서 데이터를 주고 받을 때를 가정하겠습니다. 만약 Old Clock Domain에서 데이터를 변경하는 동안 New Clock Domain의 clock이 rising edge가 되어 데이터를 받아간다면 이 때 가져간 데이터는 metastable state에 빠지게 됩니다. 충분히 안정되지 않은 데이터를 가져갔기 때문입니다..