基于FPGA的波束形成verilog开发

article/2025/8/22 1:48:21

目录

一、理论基础

二、核心程序

三、仿真测试结果


一、理论基础

根据原理可知,整个波束形成的基本结构框图如下图所示:

这里,我们使用的加权函数为:

 这个模块,相当于上述结构的:

二、核心程序

`timescale 1ns / 1psmodule beamformer(i_clk,i_rst,i_din00,i_din01,i_din02,i_din03,i_din04,i_din05,i_din06,i_din07,i_din08,i_din09,i_din10,i_din11,i_din12,i_din13,i_din14,i_din15,i_din16,i_din17,i_din18,i_din19,i_din20,i_din21,i_din22,i_din23,i_din24,i_din25,i_din26,i_din27,i_din28,i_din29,i_din30,i_din31,i_din32,i_din33,i_din34,i_din35,i_din36,i_din37,i_din38,i_din39,i_din40,i_din41,i_din42,i_din43,i_din44,i_din45,i_din46,i_din47,o_dut);input i_clk;
input i_rst;
input signed[7:0]i_din00,i_din01,i_din02,i_din03,i_din04,i_din05,i_din06,i_din07,i_din08,i_din09,i_din10,i_din11,i_din12,i_din13,i_din14,i_din15,i_din16,i_din17,i_din18,i_din19,i_din20,i_din21,i_din22,i_din23,i_din24,i_din25,i_din26,i_din27,i_din28,i_din29,i_din30,i_din31,i_din32,i_din33,i_din34,i_din35,i_din36,i_din37,i_din38,i_din39,i_din40,i_din41,i_din42,i_din43,i_din44,i_din45,i_din46,i_din47;
output signed[21:0]o_dut;	wire[7:0]r_dut00,r_dut01,r_dut02,r_dut03,r_dut04,r_dut05,r_dut06,r_dut07;
wire[7:0]r_dut08,r_dut09,r_dut10,r_dut11,r_dut12,r_dut13,r_dut14,r_dut15;
wire[7:0]r_dut16,r_dut17,r_dut18,r_dut19,r_dut20,r_dut21,r_dut22,r_dut23;
wire[7:0]r_dut24,r_dut25,r_dut26,r_dut27,r_dut28,r_dut29,r_dut30,r_dut31;
wire[7:0]r_dut32,r_dut33,r_dut34,r_dut35,r_dut36,r_dut37,r_dut38,r_dut39;
wire[7:0]r_dut40,r_dut41,r_dut42,r_dut43,r_dut44,r_dut45,r_dut46,r_dut47;delays_tao delays_tao_u(.i_clk  (i_clk),.i_rst  (i_rst),.i_din00(i_din00),.i_din01(i_din01),.i_din02(i_din02),.i_din03(i_din03),.i_din04(i_din04),.i_din05(i_din05),.i_din06(i_din06),.i_din07(i_din07),.i_din08(i_din08),.i_din09(i_din09),.i_din10(i_din10),.i_din11(i_din11),.i_din12(i_din12),.i_din13(i_din13),.i_din14(i_din14),.i_din15(i_din15),.i_din16(i_din16),.i_din17(i_din17),.i_din18(i_din18),.i_din19(i_din19),.i_din20(i_din20),.i_din21(i_din21),.i_din22(i_din22),.i_din23(i_din23),						.i_din24(i_din24),.i_din25(i_din25),.i_din26(i_din26),.i_din27(i_din27),							.i_din28(i_din28),.i_din29(i_din29),.i_din30(i_din30),.i_din31(i_din31),	.i_din32(i_din32),.i_din33(i_din33),.i_din34(i_din34),.i_din35(i_din35),							.i_din36(i_din36),							.i_din37(i_din37),.i_din38(i_din38),.i_din39(i_din39),.i_din40(i_din40),.i_din41(i_din41),.i_din42(i_din42),.i_din43(i_din43),							.i_din44(i_din44),							.i_din45(i_din45),.i_din46(i_din46),.i_din47(i_din47),						.o_dut00(r_dut00),.o_dut01(r_dut01),.o_dut02(r_dut02),.o_dut03(r_dut03),.o_dut04(r_dut04),.o_dut05(r_dut05),.o_dut06(r_dut06),.o_dut07(r_dut07),.o_dut08(r_dut08),.o_dut09(r_dut09),.o_dut10(r_dut10),.o_dut11(r_dut11),.o_dut12(r_dut12),.o_dut13(r_dut13),.o_dut14(r_dut14),.o_dut15(r_dut15),	.o_dut16(r_dut16),.o_dut17(r_dut17),.o_dut18(r_dut18),.o_dut19(r_dut19),.o_dut20(r_dut20),.o_dut21(r_dut21),.o_dut22(r_dut22),.o_dut23(r_dut23),.o_dut24(r_dut24),.o_dut25(r_dut25),.o_dut26(r_dut26),.o_dut27(r_dut27),.o_dut28(r_dut28),.o_dut29(r_dut29),.o_dut30(r_dut30),.o_dut31(r_dut31),.o_dut32(r_dut32),.o_dut33(r_dut33),.o_dut34(r_dut34),.o_dut35(r_dut35),.o_dut36(r_dut36),.o_dut37(r_dut37),.o_dut38(r_dut38),.o_dut39(r_dut39),						.o_dut40(r_dut40),.o_dut41(r_dut41),.o_dut42(r_dut42),.o_dut43(r_dut43),.o_dut44(r_dut44),.o_dut45(r_dut45),.o_dut46(r_dut46),.o_dut47(r_dut47)							);wire signed[15:0]r2_dut00,r2_dut01,r2_dut02,r2_dut03,r2_dut04,r2_dut05,r2_dut06,r2_dut07;
wire signed[15:0]r2_dut08,r2_dut09,r2_dut10,r2_dut11,r2_dut12,r2_dut13,r2_dut14,r2_dut15;
wire signed[15:0]r2_dut16,r2_dut17,r2_dut18,r2_dut19,r2_dut20,r2_dut21,r2_dut22,r2_dut23;
wire signed[15:0]r2_dut24,r2_dut25,r2_dut26,r2_dut27,r2_dut28,r2_dut29,r2_dut30,r2_dut31;
wire signed[15:0]r2_dut32,r2_dut33,r2_dut34,r2_dut35,r2_dut36,r2_dut37,r2_dut38,r2_dut39;
wire signed[15:0]r2_dut40,r2_dut41,r2_dut42,r2_dut43,r2_dut44,r2_dut45,r2_dut46,r2_dut47;multer_sum multer_sum_u(.i_clk  (i_clk),.i_rst  (i_rst),.i_din00(r_dut00),.i_din01(r_dut01),.i_din02(r_dut02),.i_din03(r_dut03),.i_din04(r_dut04),.i_din05(r_dut05),.i_din06(r_dut06),.i_din07(r_dut07),.i_din08(r_dut08),.i_din09(r_dut09),.i_din10(r_dut10),.i_din11(r_dut11),.i_din12(r_dut12),.i_din13(r_dut13),.i_din14(r_dut14),.i_din15(r_dut15),						.i_din16(r_dut16),.i_din17(r_dut17),.i_din18(r_dut18),.i_din19(r_dut19),.i_din20(r_dut20),.i_din21(r_dut21),.i_din22(r_dut22),.i_din23(r_dut23),.i_din24(r_dut24),.i_din25(r_dut25),.i_din26(r_dut26),.i_din27(r_dut27),.i_din28(r_dut28),.i_din29(r_dut29),.i_din30(r_dut30),.i_din31(r_dut31),.i_din32(r_dut32),.i_din33(r_dut33),.i_din34(r_dut34),.i_din35(r_dut35),						.i_din36(r_dut36),.i_din37(r_dut37),.i_din38(r_dut38),.i_din39(r_dut39),						.i_din40(r_dut40),.i_din41(r_dut41),.i_din42(r_dut42),.i_din43(r_dut43),						.i_din44(r_dut44),.i_din45(r_dut45),.i_din46(r_dut46),.i_din47(r_dut47),							.o_dut00(r2_dut00),.o_dut01(r2_dut01),.o_dut02(r2_dut02),.o_dut03(r2_dut03),.o_dut04(r2_dut04),.o_dut05(r2_dut05),.o_dut06(r2_dut06),.o_dut07(r2_dut07),.o_dut08(r2_dut08),.o_dut09(r2_dut09),.o_dut10(r2_dut10),.o_dut11(r2_dut11),.o_dut12(r2_dut12),.o_dut13(r2_dut13),.o_dut14(r2_dut14),.o_dut15(r2_dut15),	.o_dut16(r2_dut16),.o_dut17(r2_dut17),.o_dut18(r2_dut18),.o_dut19(r2_dut19),.o_dut20(r2_dut20),.o_dut21(r2_dut21),.o_dut22(r2_dut22),.o_dut23(r2_dut23),	.o_dut24(r2_dut24),.o_dut25(r2_dut25),.o_dut26(r2_dut26),.o_dut27(r2_dut27),.o_dut28(r2_dut28),.o_dut29(r2_dut29),.o_dut30(r2_dut30),.o_dut31(r2_dut31),	.o_dut32(r2_dut32),.o_dut33(r2_dut33),.o_dut34(r2_dut34),.o_dut35(r2_dut35),.o_dut36(r2_dut36),.o_dut37(r2_dut37),.o_dut38(r2_dut38),.o_dut39(r2_dut39),						.o_dut40(r2_dut40),.o_dut41(r2_dut41),.o_dut42(r2_dut42),.o_dut43(r2_dut43),.o_dut44(r2_dut44),.o_dut45(r2_dut45),.o_dut46(r2_dut46),.o_dut47(r2_dut47)						);weight_sum2 weight_sum_u(.i_clk  (i_clk),.i_rst  (i_rst),.i_din00(r2_dut00),.i_din01(r2_dut01),.i_din02(r2_dut02),.i_din03(r2_dut03),.i_din04(r2_dut04),.i_din05(r2_dut05),.i_din06(r2_dut06),.i_din07(r2_dut07),.i_din08(r2_dut08),.i_din09(r2_dut09),.i_din10(r2_dut10),.i_din11(r2_dut11),.i_din12(r2_dut12),.i_din13(r2_dut13),.i_din14(r2_dut14),.i_din15(r2_dut15),						.i_din16(r2_dut16),.i_din17(r2_dut17),.i_din18(r2_dut18),.i_din19(r2_dut19),.i_din20(r2_dut20),.i_din21(r2_dut21),.i_din22(r2_dut22),.i_din23(r2_dut23),.i_din24(r2_dut24),.i_din25(r2_dut25),.i_din26(r2_dut26),.i_din27(r2_dut27),.i_din28(r2_dut28),.i_din29(r2_dut29),.i_din30(r2_dut30),.i_din31(r2_dut31),						.i_din32(r2_dut32),.i_din33(r2_dut33),.i_din34(r2_dut34),.i_din35(r2_dut35),						.i_din36(r2_dut36),.i_din37(r2_dut37),.i_din38(r2_dut38),.i_din39(r2_dut39),							.i_din40(r2_dut40),.i_din41(r2_dut41),.i_din42(r2_dut42),.i_din43(r2_dut43),						.i_din44(r2_dut44),.i_din45(r2_dut45),.i_din46(r2_dut46),.i_din47(r2_dut47),							.o_dut  (o_dut) );					  endmodule 

三、仿真测试结果

        首先介绍一下延迟模块,根据各个延迟值,将其量化之后,获得不同数据的延迟值:

通过上面双口RAM的原理,获得延迟模块的设计与实现。

        那么对于不同element个数的系统,只要调用上述模块即可。

四个数据,我们分别调用8次,24次,36次,48次即可。

那么,对于8element,仿真结果如下图所示,其余几组类似:

这里,还是以8element为例子,进行仿真,其modelsim仿真结果如下图所示:

然后是加权和模块。

       这个模块,主要采用流水线的树状结构进行逐级累积,其RTL图如下图所示:

对于24.36.48element,其RTL图如下图所示:

最后得到完整的波束形成系统。

8element

24element

36element

48element

       我们首先获得类似论文中的波形效果:

8element

 然后matlab进行成像,获得如下的效果:

8element

 A21-08

 


http://chatgpt.dhexx.cn/article/6OdlpdjK.shtml

相关文章

鲁棒自适应波束形成

鲁棒自适应波束形成 本文是我关于Microphone Arrays Signal Processing Techniques and Applications第五章的整理。 自适应形成其方向性的波束形成器称为自适应波束形成器。它同时进行波束控制和零位控制。然而,在大多数声波束形成器中,只有在目标DOA是…

窄带波束形成——时域与频域常规窄带波束形成

最近学习了一下《最优阵列处理技术》,应老师要求写一个线性均匀水听器阵列的常规波束形成,由于是初学者,写的可能会有点问题,欢迎大家提出修改建议和指导,写这个主要是记录自己的思考,其次是和初学者进行交…

麦克风阵列波束形成

原文转载于:http://blog.csdn.net/shichaog/article/details/74143427 有所修改 感谢作者 波束形成 beamforming 体现的是声源信号的空域选择性,许多传统波束形成方法具有线性处理结构; 波束形成需要考虑三个方面: 1.麦克风…

LMS波束形成

LMS自适应波束形成器 % 标量阵最小均方准则(LMS)自适应波束形成器(ADBF) close all; Sound_velocity1200; %声速 Frequency300; %信号频率 Sample_Frequency100Frequency; %采样频率 Array_num16; %阵元数 Array_distance1/2(Sound_velocity/Frequency); %阵元间距 Signal_Leng…

波束形成(最大信噪比准则、LCMV、MSC、LMS、RLS)

波束形成(最大信噪比准则、LCMV、MSC、LMS、RLS) 波束形成的基本概念 # 波束形成准则 分别对上面所阐述的最大信噪比准则,旁瓣对消器,线性最小均方误差,以及自适应LMS和RLS算法进行仿真。 最大信噪比准则&…

语音领域的波束形成Beamforming小结

关注、点赞、收藏是对我最大的支持,谢谢^v^ 目录 1. 背景介绍 2. 多通道信号的公式描述 3. 传统波束形成(delay-and-sum和filter-and-sum) 4. MVDR 4.1 传统MVDR 4.2 融入深度学习的MVDR 5. GEV(Generalized eigenvalue) beamformer …

空间谱专题02:波束形成(Beamforming)

作者:桂。 时间:2017-08-22 10:56:45 链接:http://www.cnblogs.com/xingshansi/p/7410846.html 前言 本文主要记录常见的波束形成问题,可以说空间谱估计是波束形成基础上发展而来,在系统论述空间谱之前,有…

UE4 插件 简单全景播放器

UE4 插件 1分钟完成全景展示项目(Simple panorama player and video player) 全景图、全景视频播放器,附带列表和热点模板。另附带一个视频播放器。全景播放器可以使用本地资源或Web URL。 完全由蓝图实现,易于扩展和修改。 具有…

Android VR Player(全景视频播放器) [10]: VR全景视频渲染播放的实现(exoplayer,glsurfaceview,opengl es)

前言 此博客的大部分内容来自我的毕业设计论文,因此语言上会偏正式一点,如果您有任何问题或建议,欢迎留言。在此感谢实验室的聂师兄,全景视频render部分的代码设计主要参考了他所编写的代码来完成,他对视频渲染过程的…

VR+全景播放器+头控讲解-07

VR全景播放器头控讲解-01-知识储备VR全景播放器头控讲解-02-创建球体VR全景播放器头控讲解-03-渲染视频VR全景播放器头控讲解-04-滑动手势VR全景播放器头控讲解-05-伸缩画面VR全景播放器头控讲解-06-头控实现VR全景播放器头控讲解-07-分屏技术 学习目标 如何实现分屏 实现思路 …

[OpenGL]从零开始写一个Android平台下的全景视频播放器——目录

Github项目地址 为了方便没有准备好梯子的同学,我把项目在CSDN上打包下载,不过不会继续更新(保留在初始版本) 先放一张效果图: Youtube 优酷 前言 Android平台下的全景视频(360,Panoram…

VR+全景播放器+头控讲解-06

VR全景播放器头控讲解-01-知识储备VR全景播放器头控讲解-02-创建球体VR全景播放器头控讲解-03-渲染视频VR全景播放器头控讲解-04-滑动手势VR全景播放器头控讲解-05-伸缩画面VR全景播放器头控讲解-06-头控实现VR全景播放器头控讲解-07-分屏技术 学习目标 掌握头控部分布局 如何检…

mxreality.js 免费开源的全景图/全景视频/VR 直播播放器介绍

[2018-10-20 重要更新]支持VR直播功能支持全景视频poster支持全景图和视频和场景之间随意切换全景模式切换回默认主视角播放列表 优点: 1、全景图支持全景模式和VR模式 2、支持网页端全景图补天功能,有效去除顶部和底部拼接留下的痕迹、做出真正完美的…

Unity3D制作极简版VR全景视频播放器

自从Unity5.6.4还是2017的版本开始,官方提供了兼容移动端和Windows端的视频播放器控件——Video Player,下面介绍如何使用这个控件,制作VR播放器。 1、新建空白场景,新建球体Sphere,Camera放置球心位置; …

基于threejs,完成一个简单的全景图播放器

直接上代码 CameraControls.js相机控制器 import * as THREE from three;function CameraControls(object, domElement, cb, update) {this.object object;this.domElement domElement ! undefined ? domElement : document;this.enabled true;this.lookSpeed 0.1;this.…

使用SceneKit编写VR全景播放器

最近用SceneKit做了全景看房的功能,现总结下如何实现的。 先看下最终的效果: gif1.gif VR图片全景播放器有以下功能: 360度手势滑动,缩放陀螺仪分屏(VR眼镜)热点hotpot头控/eyepick 手势滑动,缩放&#…

AVProVideo☀️五、播放全景视频

🎊 商务合作:https://skode.cn/file/businesscard/wechat.jpg 🎥 本文由 星河造梦坊公司官方 原创! 🏅 如果你有技术问题或项目开发,都可以加上方的联系方式,和我聊一聊你的故事🧡 文章目录 🟥 360球形全景视频🟧 360立方体全景视频🟨 360天空盒全景视频🟩…

[OpenGL]从零开始写一个Android平台下的全景视频播放器——3.1 全景视频是如何实现的

Github项目地址 为了方便没有准备好梯子的同学,我把项目在CSDN上打包下载,不过更新会慢一些 回到目录 恭喜Martin同学获得由CSDN颁发的“更新慢慢慢”荣誉称号 全景视频有很多种类,例如Sphere全景,Skybox(Cubemap&…

VR全景播放器 AvPro Video

最近项目需要,使用Unity开发VR全景播放器,包括PC端和VR一体机端(Android)。Unity5.6开始支持VideoPlayer,使用自带的VideoPlayer,很顺利把播放器完成了,使用了很长时间,一直没什么性…

FFmpeg 开发(07):FFmpeg + OpenGLES 实现 3D 全景播放器

该文章首发于微信公众号:字节流动 FFmpeg 开发系列连载: FFmpeg 开发(01):FFmpeg 编译和集成 FFmpeg 开发(02):FFmpeg + ANativeWindow 实现视频解码播放 FFmpeg 开发(03):FFmpeg + OpenSLES 实现音频解码播放 FFmpeg 开发(04):FFmpeg + OpenGLES 实现音频可视化播放 FFm…