码迷,mamicode.com
首页 > 其他好文 > 详细

PYNQ---ARM部分与可编程逻辑部分通信

时间:2020-07-12 00:32:36      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:height   中断   com   共享   with   type   事件   Locator   访问   

方法一  利用数组的物理地址进行传递

 

下方单元格中的代码显示了一个非常简单的数据移动代码段,可用于与可编程逻辑共享数据。

我们利用Python numpy包来操纵ARM处理器上的缓冲区,

然后可以将缓冲区指针发送到可编程逻辑以共享数据。

 

我们不假定加载了什么可编程逻辑设计,因此这里我们仅分配所需的内存空间,

并表明它可以作为numpy数组进行操作并包含缓冲区指针属性

然后可以将该指针传递给可编程逻辑硬件。

import numpy as np
import pynq

def get_pynq_buffer(shape, dtype):
    """ Simple function to call PYNQ‘s memory allocator with numpy attributes

    """
    return pynq.allocate(shape, dtype)

通过上面的简单包装器,我们可以访问可由numpy方法和可编程逻辑共享的内存。

buffer = get_pynq_buffer(shape=(4,4), dtype=np.uint32)
buffer

    技术图片

 

 为了将缓冲区指针发送到可编程逻辑,我们使用其物理地址,这是可编程逻辑将需要使用此共享缓冲区进行通信的地址。

pl_buffer_address = hex(buffer.physical_address)

 

 

方法二 异步集成

PYNQ还利用Python asyncio模块通过事件(即中断)与可编程逻辑设备进行通信。

PYNQ---ARM部分与可编程逻辑部分通信

标签:height   中断   com   共享   with   type   事件   Locator   访问   

原文地址:https://www.cnblogs.com/kyshan/p/13286117.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!