일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- pygraphviz 설치 오류
- Design DNN Accelerator
- 데이터 해저드
- linux makefile 작성
- systolic array
- CLOCK GATING
- linux c 컴파일
- 딥러닝 가속기
- CUDA
- 대구 반도체 설계기업 특화
- 클럭 게이팅
- DNN 가속기
- 이진수 곱셈 알고리즘
- linux c++ 컴파일
- AMBA
- Pyverilog 튜토리얼
- DNN Accelerator
- gpgpu-sim
- pyverilog 설치 오류
- CDC
- Pyverilog 설치
- 남산업힐
- Pyvrilog tutorial
- pytest-pythonpath 설치 오류
- gcc 컴파일
- makefile
- Makefile compile
- Data HAzard
- Pyverilog 실행
- 컨벌루션 연산
- Today
- Total
목록분류 전체보기 (227)
오늘은 맑음
모호한 표현을 사용하지 말자 몇 가지 예시가 있습니다. 1. 동일하지 않은 data width를 가진 신호를 연결하기 input [2:0] in_data; wire [3:0] a; assign a = in_data; 이렇게 할당하게 되면 a[3]은 어떠한 값이 될까요? 요즘 컴파일러들은 매우 좋아서 아마 알아서 0으로 채울지도 모릅니다. 하지만 어떤 상황에서 무슨 에러가 발생할지 모르는 코드가 됩니다. 컴파일러에 따라 달라지겠죠. 따라서 위와 같이 매우 모호한 코드는 피해야 합니다. assign a = {1'b0, in_data}; 이런 식으로 사용하지 않는 비트는 꼭 채워주도록 합시다. 2. data overflow 사용하기 counter를 짤 때 마침 딱 8까지 반복해서 숫자를 세는 상황이 발생했습니..
3년전 딱 지금 시기에 학부 졸업작품으로 NPU를 만들기를 시작하게 되었습니다. 그 땐 딥러닝이 뭔지도 잘 몰랐고, rtl도 2학년 때 수업 이후로 쓴 적이 없어서 쉽지 않다고 생각했습니다. 그 때 DianNao를 Reference삼았었는데, 역시나 쉽지 않더라구요 Tensorflow에서 가중치 뽑는 방법도 몰라서 선배 도움 받아서 c로 feed forward 짜고 back proagation까지 구현 한 다음에 직접 뽑아냈었습니다. 조금 더 알아봤으면 지금처럼 편하게 tensorflow에서 읽었을텐데 말이죠. 처음에는 CNN을 구현하려고 했는데... 논문도 읽고 data flow를 생각하다 보니 결국 fully connected만 이용해서 MNIST 데이터 세트를 구별하는 정도로 작아졌습니다. 그래도 ..
이전 글에서는 Systolic array에서 사용하는 processing element의 구조를 보았습니다. 이번에는 systolic array를 사용해서 Deep Learning Algorithm을 연산하는 대표적인 NPU인 TPU의 구조를 보도록 하겠습니다. TPU의 구조는 위와 같습니다. 많은 block diagram이 있지만 우측을 살펴보도록 하겠습니다. 가장 우측 중간에 MMU(Matrix Multiply Unit)라는 block이 있습니다. MMU의 좌측에는 Systolic Data setup block이, 위에는 Weight FIFO, 아래로는 Accumulator가 있습니다. MMU를 보면 위와 같습니다. 화살표는 데이터의 흐름을 의미합니다. Row 단위로 Data가 전달 되고, Colum..
rtl 설계시 !와 ~를 자주 사용합니다. 코드를 예시로 들면 아래와 같습니다. wire [3:0] a;reg [3:0] r_out; always @(posedge CLK, negedge nRST) begin if(!nRST) begin r_out
Image 또는 Video에서 데이터를 스캐닝 하는 방법 중 하나인 Raster Scan에 대해 알아보겠습니다. raster scan을 하게 되면 스캔을 하는 포인트는 데이터는 좌측상단부터 시작합니다.즉 raster scan을 시작하면 가장 먼저 첫 번째 라인이 쭉 읽혀 처리가 됩니다.이 후 vertical을 옮겨 다음 두 번째 라인이 읽혀 처리가 됩니다.이렇게 가장 마지막 라인의 마지막 데이터까지 scan하게 되면 다시 좌측 상단의 데이터로 포인트가 이동됩니다. 이러한 방식은 프린터가 출력하는 방식과 동일합니다.
YUV와 YCbCr YUV와 YCbCr은 현재 혼용해서 많이들 사용하지만 엄밀히 말하면 다른 포맷입니다. YUV는 아날로그 비디오에서 사용하던 포맷이고 YCbCr은 디지털 비디오에서 사용하는 포맷입니다. RGB to YUV 와 RGB to YCbCr을 변경하는 수식이 다르다고 합니다. 오늘은 Digital Video Codec에서 사용하는 YCbCr을 알아보겠습니다. YUV와 YCbCr은 모두 RGB로부터 변형된 포맷입니다. Y는 모두 luma를 의미하고, UV/CbCr은 모두 chroma 또는 chrominance를 의미합니다. luma와 luminance를 헷갈리실 수도 있는데, 다른 데이터입니다. 저는 처음에 헷갈려서 혼용해서 용어를 사용했었습니다... luma는 gamma 인코딩된 RGB값이므로 ..