FPGA용 Verilog 기반 LeNet-1 CNN 가속기 오픈 소스
요약
본 문서는 손글씨 숫자 인식에 사용되는 LeNet-1 CNN 가속기를 FPGA용 Verilog 기반으로 구현하는 방법을 설명합니다. Vivado 툴을 사용하여 여러 모듈(Conv3D, FC 등)과 메모리 파일을 프로젝트에 추가하고, 시뮬레이션 설정을 조정하여 동작시키는 구체적인 개발 과정을 안내합니다.
핵심 포인트
- LeNet-1 CNN 가속기를 FPGA용 Verilog로 구현하는 방법 제시
- Vivado 툴을 사용하여 디자인 소스 및 시뮬레이션 소스를 구성해야 함
- 시뮬레이터의 실행 시간(xsim.simulate.runtime) 설정을 주의 깊게 변경해야 함
모델의 학습된 가중치는 "Other-files" 디렉터리의 "W.mem" 파일에 있습니다.
인용: {Hazoor Ahmad, Muhammad Tanvir, Muhammad Abdullah, Muhammad Usama Javed, Rehan Hafiz, and Muhammad Shafique. "Systimator: A Design Space Exploration Methodology for Systolic Array based CNNs Acceleration on the FPGA-based Edge Nodes." arXiv preprint arXiv:1901.04986 (2018).}
Vivado 2017.1 이상 버전 사용 (제가 사용한 버전)
- Vivado에서 새 프로젝트를 만듭니다.
- 폴더 (Verilog-Source-Files)에서 파일들 (Conv3D.v, FC.v, LeNet.v, MACC.v, Multiplication.v, PE.v, PE_Array.v, max2.v, softmax.v)을 'design sources'로 프로젝트에 추가합니다.
- 폴더 (Other-Files)에서 파일 (tb_LeNet.v)을 'simulation sources'로 프로젝트에 추가합니다.
- 폴더 (Other-Files)에서 파일들 (I0.mem, I1.mem, I2.mem, I3.mem, I4.mem, I5.mem, I6.mem, I7.mem, I8.mem, I9.mem, W.mem)을 'design sources'로 프로젝트에 추가합니다.
- 폴더 (Verilog-Source-Files)의 LeNet.v 파일 56번째 줄에서 입력(inputs)을 변경합니다. [예: I3.mem 대신 I4.mem으로]
- 시뮬레이션 전에 시뮬레이션 시간이 10000ns보다 커야 하므로, 다음 경로로 이동하여 설정합니다:
Project Manager -> Settings -> Project Setting -> Simulation -> Find Simulation 탭 -> xsim.simulate.runtime을 1000ns에서 1000us로 변경
set_property -name {xsim.simulate.runtime} -value {1000us} -objects [get_filesets sim_1]
손글씨 숫자 인식을 위한 LeNet-1 아키텍처는 다음과 같습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기