신경망을 FPGA 실제 기계로 움직였다.

개요



이전에 "FPGA에서 움직이는 신경망 발전기를 만들었다"에서 공개 한 신경망 발전기에서 출력 한 소스 코드를 FPGA 실제 기계 Atlas-SoC (DE0-Nano-SoC)로 움직여 보았습니다.

리포지토리는 여기
htps : // 기주 b. 코 m / 코타 우치 선생 / 0_

라이센스



Affero GPL v3

기능





DE0-Nano-Soc의 스위치를 입력, LED를 출력으로 하여 신경망의 거동을 합니다.
스위치를 on으로 하면 1이 대입되고, off로 하면 0이 대입되게 되어 있습니다.

SW[0] 입력 1
SW[1] 입력 2
SW [2] 왼쪽 상단 신경망의 출력과 오른쪽 상단 신경 네트워크의 가중 계수
SW [3] 왼쪽 하단 신경망의 출력과 오른쪽 상단 신경 네트워크의 가중 계수

에 할당하고 있습니다. 또한,

오른쪽 상단의 신경망이 발화되면 LED [0]이 켜집니다.
오른쪽 하단의 신경망이 발화되면 LED [1]이 켜집니다.

라는 바람의 기능이 되어 있습니다.

준비



소스 코드 생성



이 작업은 위의 저장소에서 복사 할 필요가 없습니다.

"FPGA에서 움직이는 신경망 발전기를 만들었다"에서 사용 된 신경망 발전기를 사용하십시오.

clone합니다.
$ cd NN_FPGA
$ python script/main.py 16 2 2 2
> NN_NL_016_0002_0002_NL_016_0002_0002
> saved to generate.v
> None

이제 generate.v라는 파일이 생성되었으며 주 신경망 모듈 인 NN_NL_016_0002_0002_NL_016_0002_0002라는 모듈이 생성되었습니다.

편지지 다운로드



Atlas-SoC와 DE0-Nano-SoC는 하드적으로 동일하며 펌웨어가 다를 뿐입니다.
따라서 SD 카드로 펌웨어를 다시 쓰면 DE0-Nano-SoC와 Atlas-Soc을 변경할 수 있습니다.
이번에는 다음 링크의 DE0-Nano-SoC SystemCD라는 데이터를 사용합니다.

데모 프로젝트 복사



방금 다운로드 한 파일을 압축 해제하고,

DE0-Nano_SoC_v.1.0.9_SystemCD\Demonstrations\SoC_FPGA\my_first_hps-fpga_base

my_first_hps-fpga_base를 복사하여 사용합니다.

소스 코드 편집



이전 리포지토리 htps : // 기주 b. 코 m / 코타 우치 선생 / 0_ 또는 생성 된 generate.v를 프로젝트에 추가합니다.

추가 방법은 자세히 설명하지 않지만 메뉴 바의 [Project] -> [Add Current File to Project]에서 추가 할 수 있습니다.

그런 다음 프로젝트의 ghrd.v를 편집합니다.
이것은 조금 특별한 것으로, ghrd.v의 271 행, endmodule 앞에 리포지토리의 diff_ghrd.v의 내용을 복사해 주세요.

(돌아가는 글을 쓰는 것은 ghrd.v 자체의 라이센스를 잘 모르기 때문에 리포지토리에 올리면 문제가 발생할 가능성이 있기 때문입니다.)

실제 기계 동작



그런 다음 컴파일하고 Programmer로 DE0-Nano-SoC로 구워주십시오.


실제로 DE0-Nano-SoC에서 동작하는 모습

테스트 케이스



실제로 움직이지 않으면 모르겠다고 생각하기 때문에 테스트 케이스를 준비했습니다.
이것을 시험해 보면, 실제로 신경망이 가동하고 있는 모습을 확인할 수 있습니다.


SW[0]
SW[1]
SW[2]
SW[3]
LED[0]
LED[1]


off
off
off
off
off
off

on
off
off
off
off
on

off
on
off
off
off
on

on
on
off
off
off
on

on
off
off
on
on
on

off
off
off
on
off
off

off
off
on
on
off
off


(비고) SW [2] = on SW [3] = on 일 때 LED [0], LED [1]은 SW [0]과 SW [1]의 OR 출력으로되어 있음을 알 수 있습니다.

요약



"FPGA에서 움직이는 신경망 발전기를 만들었다"으로 만든 신경망 생성기 (또는 그로부터 생성 된 코드)를 사용하여 DE0-Nano-SoC (Atlas-SoC)로 움직이는 신경망을 만들고 실제로 작동하는 것을 확인할 수있었습니다.

좋은 웹페이지 즐겨찾기