基于PYNQ 平台的舰船辐射噪声模拟*

2021-02-22 02:38佘黎煌沈冰鑫闫子军赵一博葛志毅
科技创新与应用 2021年8期
关键词:舰船滤波器滤波

佘黎煌,沈冰鑫,闫子军,赵 强,赵一博,葛志毅

(东北大学 计算机科学与工程学院,辽宁 沈阳110000)

引言

伴随着水声设备的高速发展,海上试验也变得愈加的频繁,复杂,在测试水声设备时,常常需要投入大量的人力、物力、财力。鉴于海试的缺点,使用模拟器技术进行水下目标的模拟即可减小实验成本,缩短水声设备的研发周期。在分析了舰船辐射噪声的声学特性后,本文通过自适应滤波方法,来得到舰船连续谱辐射噪声,在知道了所需连续谱的幅频响应之后,即以此作为期望响应,将高斯白噪声通过该滤波器即可得到模拟连续谱噪声数据,再加上已设置好的线谱后即可得到模拟的舰船辐射噪声。

VIVADO HLS 平台加PYNQ 平台的实现提出的算法,并优化处理提高速度和资源利用率[1]。通过HLS 平台生成IP 核后,使用VIVADO 工具,使用IP 核与其他器件连接生成Overlay,最终使用PYNQ 工具使用该Overlay,PYNQ 工具使用PYTHON 语言应用到FPGA 的控制中,且其集成的Jupyter Notebooks 框架编译工具具有很高的可视性[2],基于上述优点,使得算法的可行性得到较快的验证,并且方便了下一步算法与硬件之间的联合调试生成实际的噪声数据。

1 舰船辐射噪声模拟算法

1.1 舰船辐射噪声特性研究

舰船辐射噪声的连续谱的主要来源为机械噪声的弱连续谱噪声和螺旋桨空化噪声的强连续谱,规律为在高频,它的谱级随频率大约按6db/oct 下降,在低频随频率以大约6db/oct~12db/oct 增加,连续谱中有一个峰,这个峰值通常位于100Hz~1000Hz 范围内。假设航速在40kn以下,小于峰值频率以6db/oct 上升,大于峰值频率以-6db/oct 下降,于是连续谱的模型可以用以下的经验公式来进行拟合[3]:

图1 自适应滤波器设计流程图

其中v 为舰船的航速,f0为峰值频率,SLf是功率谱级,DT 表示舰船的吨位,SLs是100Hz 以上的总声级,对于30000 吨以下、航速为8~24 节的舰船,其100Hz 以上的总声源级可使用以下的经验公式表示[3]:

由以上的经验公式,即可得出舰船辐射噪声连续谱的功率谱,且速度、吨位均可设定。

1.2 舰船辐射噪声建模

要得到连续谱的特性形状的功率谱,使用到了基于LMS 算法的自适应滤波方法,首先通过使用上面对舰船辐射噪声特性分析得到的数学公式对舰船辐射噪声进行建模,建模的结果作为自适应滤波的期望响应,然后以高斯白噪声作为输入信号,进行自适应滤波,最终就可得到舰船噪声的连续谱噪声。

自适应滤波器设计框图如图1 所示[5]。

输入端为M个的频率为f1,f2...fm的正弦波信号,其式为:

伪滤波器的输出即为所期望得到的响应,其式子相应得为:

其中fi,ai即为所期望的滤波器在特定频率fi上的增益,θi即为特定频率上的相移。ci为正常数,是对频率分量fi的代价因子,有时希望在某些频率上要求更严格时,就可以ci适当的大。设置ci为1,fi间的间隔取50Hz,频率范围为50-3000Hz,ai即为fi对应到舰船辐射噪声建模结果的取值,这样即可得到了期望响应。输入的xi则直接输入高斯白噪声即可。

具体使用LMS 算法进行自适应滤波的流程如下:

(1)滤波:y(n)=W(n)XT(n)

(2)误差计算:e(n)=d(n)-y(n)=d(n)-WT(n)X(n)

(3)更新滤波器系数:W(n+1)=W(n)+2μe(n)X(n)

将上面的流程迭代(M-L)次,M 为输入信号X(n)的长度,L 为滤波器的阶数,滤波结果y(n)也就得到了。

2 VIVADO HLS 上实现并加速算法

2.1 在VIVADO HLS 平台上实现算法

HLS 工具所支持的语言为C++语言,因此还需要将MATLAB 中实现的算法转换为C++代码,注意在转换之后还需要更改一些HLS 不支持的地方,如函数形参和函数返回值不能使用指针,若使用指针的话在综合的时候会报错。

此外因为考虑到之后需要使用AXI4-Stream 接口连接到DMA 模块进行数据的输入输出,因此需要在顶层函数中加入接口的定义语句:

并且因为输入的高斯白噪声数据为浮点数,经过测试浮点数无法在搭建的Overlay 中进行传输,因此,需要做一个将浮点数转为定点数的操作,即IP 核的输入输出都为整型,是一个Q15 定点数,IP 核中得到输入后,在将定点数化为小数,再进行原来预定的处理,处理完后滤波的结果,因为也是浮点数,因此需要再做一个浮点转定点的操作,将数据再传输出去,这样就可以实现浮点数数据的传输了。

2.2 优化加速算法

HLS 中的优化方法有许多,文中选择了for 循环的Pipelining the loop 优化,即对for 循环的流水线的优化,Pipelining 优化方法,主要是对for 循环的一个优化方法。未进行Pipelining 优化之前,循环是按照一个时间的顺序去运行的,只有上一个循环的操作执行完了,才开始下一个操作,使用了Pipelining 之后原本顺序执行的循环,具有了一定的并行性,下一次的for 循环,不需要等到之前的操作结束,就开始进行下一个操作,由此可以看到原本需要9个周期才能执行完三次循环,但使用了Pipelining之后就只需要五个时钟周期就可以完成三次for 循环了。由此可见Pipelining 可以提升for 循环的运行速度,从而可以提升算法的运行速度,并充分利用了FPGA 的并行运行的特点。完成优化加速后,就可以导出算法的IP 核。

图2 舰船辐射噪声理想连续谱

图3 仿真舰船辐射噪声功率谱图

3 模拟仿真结果

3.1 舰船辐射噪声模拟算法

设置航速为20 节,吨位为5000 吨,在MATLAB 中进行仿真,所得结果如图2、图3 所示。

由图2、图3 的比较发现通过LMS 算法对输入信号进行滤波,所得到的信号的频谱形状与理想连续谱是非常相似的,因此可以知道使用LMS 算法可以较好的实现舰船辐射噪声的模拟。

3.2 使用VIVADO HLS 加速结果

图4 中soulution1 为没使用Pipelining 时的运行结果,solution2 为使用了Pipelining 后的结果,可以很明显的观察出使用Pipelining 指令之后,程序的运行时间大大降低了,时间大概仅为未使用Pipelining 的35%。由此可见并行加速运算的强悍。

图4 HLS 优化加速结果

4 结论

通过对舰船辐射噪声的特性进行分析后,使用基于LMS 算法的自适应滤波的方法来得到舰船的辐射噪声是可行,且多个参数可进行设置。模拟舰船噪声算法设计完成后,通过之前的测试结果,可知结合HLS 及PYNQ 平台来实现算法是可行的,且使得FPGA 的开发难度降低,缩短开发的时间周期,同时也能够对要实现的算法进行一定的优化加速。

猜你喜欢
舰船滤波器滤波
舰船通信中的噪声消除研究
船岸通信技术下舰船导航信号非线性滤波
风浪干扰条件下舰船航向保持非线性控制系统
舰船测风传感器安装位置数值仿真
一种考虑GPS信号中断的导航滤波算法
从滤波器理解卷积
高效LCL滤波电路的分析与设计
Comparison of decompression tubes with metallic stents for the management of right-sided malignant colonic obstruction
基于EKF滤波的UWB无人机室内定位研究
开关电源EMI滤波器的应用方法探讨