PYNQ-Z2调试笔记:使用PL的硬件IP定制overlay实现加速(How to accelerate a function with PYNQ)

本文详细介绍使用PYNQ板的可编程逻辑部分定制overlay,通过对比python的scipy模块函数,展示硬件加速滤波器在信号处理上的时间优势。

本篇主要介绍,使用PYNQ板上可编程逻辑部分的IP核定制overlay,并与python自带的函数进行比较,以突出可编程逻辑部分的加速优势。


目录

前言

正文

(1)使用python的scipy模块函数对信号源信号滤波

(2)使用Vivado的滤波器核生成overlay

(3)使用overlay对相同信号源信号滤波,比较时间开销

结尾


​​​​​​​

前言

在前面的帖子中:https://blog.youkuaiyun.com/CSD_N_csdn/article/details/105669069,介绍了使用Vivado HLS制作了一个具有加法器功能的IP核,然后使用此IP核定制overlay,并在PYNQ上使用python调用验证功能。

本篇以前面的帖子为基础,省去了制作IP核的部分。一方面,直接调用Vivado的滤波器IP核,生成overlay,然后在jupyter-notebook上调用此overlay,实现对信号源信号的滤波,这用到了可编程逻辑部分,属于硬件加速,计算时间1。另一方面,调用python的scipy模块,scipy模块是具有滤波功能的函数,使用此函数对相同的信号源信号滤波,这属于纯软件实现滤波,计算时间2。将时间1与时间2比较,以突出硬件加速(即overlay方法)的优势。

正文

(1)使用python的scipy模块函数对信号源信号滤波

首先,在浏览器打开jupyter,新建python3文件,输入如下代码,这段代码的大致意思是定义了一个函数,将使用它来绘制数据,n_samples参数可以限制绘制的样本数量。其作用就是绘制一会儿要显示的信号。

%matplotlib notebook
import matplotlib.pyplot as plt

def plot_to_notebook(time_sec,in_signal,n_samples,out_signal=None):
    plt.figure()
    plt.subplot(1, 1, 1)
    plt.xlabel('Time (usec)')
    plt.grid()
    plt.plot(time_sec[:n_samples]*1e6,in_signal[:n_samples],'y-',label='Input signal')
    if out_signal is not None:
        plt.plot(time_sec[:n_samples]*1e6,out_signal[:n_samples],'g-',linewidth=2,label='FIR output')
    plt.legend()

再输入如下代码,用于模拟信号源生成信号,这里生成的信号是低频正弦信号,并混有高频噪声。

#模拟信号源生成输入信号
import numpy as np

T = 0.002

fs = 100e6 #采样频率

n = int(T * fs)   #采样点数

t = np.linspace(0, T, n, endpoint=False)

samples = 10000*np.sin(0.2e6*2*np.pi*t) + 1500*np.cos(46e6*2*np.pi*t) + 2000*np.sin(12e6*2*np.pi*t)

#信号源为200kHz的正弦信号,46MHz和12MHz的低幅度信号作为输入的模拟噪声。

samples = samples.astype(np.int32)   #将样本转换为32位整数
print('Number of samples: ',len(samples))
#输出采样点数
plot_to_notebook(t,samples,1000)  
#画图

运行效果如图,即滤波前的信号:

下面调用scipy函数对上述信号进行滤波,代码如下:

代码中的coeffs为滤波器的系数向量,获取网站https://www.youtube.com/watch?v=LoLCtSzj9BU(需要翻墙),该网站是一个免费的滤波器设计网站。配置通频带、阻带和采样率,点击DESIGN FILTER,即可获取右边的系数向量。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值