PYNQ > DMA tutorial: DMA to streamed interfaces > DMAを二つから一つにしてみた
動作環境
Windows 10 Pro (v1909)
PYNQ-Z1 (Digilent) (以下、PYNQと表記)
PYNQ v2.5 Image
Vivado v2019.1 (64-bit)
関連
概要
- dma tutorialで紹介されているデザインではDMA二つを使用
- DMA一つのブロックデザインを一から作って動作確認した
作成したBlock Design
PS:M_AXI_GP0からaxi_dma_0:S_AXI_LITEに接続する場合も、三つ目のAXI SmartConnectが必要だった。
(不要になるかと考えていた)。
Pythonスクリプト
from pynq import Overlay
overlay = Overlay("/home/xilinx/jupyter_notebooks/base/dma_200808.bit")
overlay.ip_dict
結果
{'axi_dma_0': {'addr_range': 65536,
'device': <pynq.pl_server.device.XlnkDevice at 0xb0272490>,
'driver': pynq.lib.dma.DMA,
'fullpath': 'axi_dma_0',
'gpio': {},
'interrupts': {},
'mem_id': 'SEG_axi_dma_0_Reg',
'phys_addr': 1077936128,
'state': None,
'type': 'xilinx.com:ip:axi_dma:7.1'}}
一つのDMAになったので、dma_sendもdma_recvも同じものを指定。
import pynq.lib.dma
dma_send = overlay.axi_dma_0
dma_recv = overlay.axi_dma_0
from pynq import allocate
import numpy as np
data_size = 100
input_buffer = allocate(shape=(data_size,), dtype=np.uint32)
for i in range(data_size):
input_buffer[i] = i + 0xcafe0000
for i in range(10):
print(hex(input_buffer[i]))
結果
0xcafe0000
0xcafe0001
0xcafe0002
0xcafe0003
0xcafe0004
0xcafe0005
0xcafe0006
0xcafe0007
0xcafe0008
0xcafe0009
DMA転送(PS to PL)する。
dma_send.sendchannel.transfer(input_buffer)
output_buffer = allocate(shape=(data_size,), dtype=np.uint32)
for i in range(10):
print('0x' + format(output_buffer[i], '02x'))
結果
0x00
0x00
0x00
0x00
0x00
0x00
0x00
0x00
0x00
0x00
DMA転送(PL to PS)をする。
dma_recv.recvchannel.transfer(output_buffer)
for i in range(10):
print('0x' + format(output_buffer[i], '02x'))
結果
0xcafe0000
0xcafe0001
0xcafe0002
0xcafe0003
0xcafe0004
0xcafe0005
0xcafe0006
0xcafe0007
0xcafe0008
0xcafe0009
手じまい
del input_buffer, output_buffer
Author And Source
この問題について(PYNQ > DMA tutorial: DMA to streamed interfaces > DMAを二つから一つにしてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/31817a3a336e2657f55e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .