PYNQ에서 플레이 : 3. BRAM 사용 (1)
이것은 무엇인가
PYNQ-Z1을 사용하여 놀아보세요.
이번은, 아래와 같이 할 수 있게 되는 것을 목표로 합니다.
관련 기사:
관련 링크
PG58 : Block Memory Generator Product Guide
PG 78 : AXI Block RAM Controller Product Guide
BRAM 개요



3-1. 프로젝트 만들기
PYNQ 또는 Vivado 설정이 아직 없는 경우
참고 절차 1-2. 개발 준비 참조
절차 1-3. 프로젝트 만들기을 참조하여 새 프로젝트를 만듭니다.
절차 1-4-1. ZYNQ의 IP 배포을 참조하여 Block Design 만들기
3-2. BRAM 관련 IP 배포
3-2-1. Block Memory Generator IP 배포
IP를 검색하고 추가.

Block Memory Generator가 추가되었습니다.

이번에는 기본값으로 사용합니다.
3-2-2. AXI BRAM Controller IP 배포
IP를 검색하고 추가.

배치되었습니다.

기본적으로 PORT A, PORT B를 사용할 수 있습니다.
PORT A 만 사용하도록 설정해보십시오. 다른 매개변수는 기본값으로 유지됩니다.


3-2-3. 배선하기
axi_bram_ctrl_0.BRAM_PORTA를 blk_mem_gen_0.BRAM_PORTA에 연결합니다.

배선되었습니다.

Run Connection Automation을 실행합니다.

배선되었습니다.

Run Block Automation을 실행합니다.

결국 이렇게 되었습니다.

BRAM 설정을 확인해 봅시다.

8 BRAM을 사용하여 1 클럭으로 데이터를 검색 할 수 있습니다.
3-3. 후마무리
3-3-1. HDL Wrapper 생성
단계 1-5. HDL Wrapper 생성와 유사한 단계입니다.
3-3-2. 생성하기
단계 1-7. 생성하기와 유사한 단계입니다.
이런 구현이 되었습니다.

3-4. PYNQ로 실행하기
3-4-1. 파일 업로드
3-3-1. HDL Wrapper 생성
단계 1-5. HDL Wrapper 생성와 유사한 단계입니다.
3-3-2. 생성하기
단계 1-7. 생성하기와 유사한 단계입니다.
이런 구현이 되었습니다.

3-4. PYNQ로 실행하기
3-4-1. 파일 업로드
절차 1-8-1. 파일 업로드을 참조하여 PYNQ에 업로드
scp ~/vivado/asobu/asobu03/asobu03.runs/impl_1/design_1_wrapper.bit [email protected]:pynq/overlays/asobu03/asobu03.bit
scp ~/vivado/asobu/asobu03/asobu03.srcs/sources_1/bd/design_1/hw_handoff/design_1.hwh [email protected]:pynq/overlays/asobu03/asobu03.hwh
3-4-2. jupyter에서 실행
참고 1-8-2단계. jupyter에서 실행 참조

asobu03.ipynb
import pynq
fpga = pynq.Overlay('asobu03.bit')
bram = pynq.MMIO(fpga.ip_dict['axi_bram_ctrl_0']['phys_addr'], length=8*1024)
# 読み込んでみます。
bram.read(0)
# >> 0
# 初期値は 0 が入っていました。
# 別の値を入れてみます。
bram.write(0, 100)
bram.read(0)
# >> 100
# 別のアドレスに値を入れます。
# read, write は 4 byte 単位でアクセスします。
# アドレス (offset) は、byte 単位で入れます。
[bram.write(i*4, i) for i in range(100)]
# 読み出してみましょう。
d = [bram.read(i*4) for i in range(100)]
d[20:30]
# >> [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
# 取り出せました。
Reference
이 문제에 관하여(PYNQ에서 플레이 : 3. BRAM 사용 (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nishimuraatsushi/items/4d31d397c0704ab09fdb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)