目录

一、理论基础

二、核心程序

三、仿真测试结果


一、理论基础

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

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

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

二、核心程序

`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

基于FPGA的波束形成verilog开发相关推荐

  1. 基于FPGA的呼叫设备verilog开发

    欢迎订阅<FPGA学习入门100例教程>.<MATLAB学习入门100例教程> 目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 随着集成电路技术的发展,电子设计自 ...

  2. 基于FPGA的火焰识别系统开发——简化版

    基于FPGA的火焰识别系统开发的详细版欢迎订阅本博: https://blog.csdn.net/ccsss22/article/details/115406504 1.问题描述:         传 ...

  3. 基于FPGA,解扰码器Verilog的实现,以及扰码器与解扰码器的联合仿真。附上仿真结果。

    文章目录 前言 一.扰码器 二.解扰码器 三.Descrambler的Verilog实现 1.descrambler.v 2.descrambler_tb.v 四.扰码器与解扰码器的联合仿真 1.sc ...

  4. 基于FPGA的ALU计算器verilog实现

    欢迎订阅<FPGA学习入门100例教程>.<MATLAB学习入门100例教程> 目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 Verilog HDL是一种硬件描 ...

  5. 基于FPGA的LED点阵系统开发

    LED点阵显示屏被用到很多领域,随着电子技术的发展,LED点阵书写显示屏的广泛应用是一种趋势.传统的LED点阵显示是由微处理器实现的,但是以FPGA做控制器将成为发展趋势.FPGA的结构灵活,其逻辑单 ...

  6. 基于FPGA的16QAM调制器verilog实现,包括testbench,并通过MATLAB显示FPGA输出信号的星座图

    目录 1.算法仿真效果 2.verilog核心程序 3.算法涉及理论知识概要 4.完整verilog 1.算法仿真效果 matlab2022a/vivado2019.2仿真结果如下: 将FPGA仿真的 ...

  7. m基于FPGA的数字下变频verilog设计

    目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 1.算法描述 整个数字下变频的基本结构如下所示 NCO使用CORDIC算法,CIC采用h结构的CIC滤波器,HBF采 ...

  8. 基于FPGA多通道数据采集系统verilog设计

    本设计实现多通道数据采集系统,该系统包括多通道数据采集和数据传输,使用verilog语言设计. 本设计实现功能:采集8路16位的AD数据,并发送到串口助手. 该设计架构图如下: 顶层模块代码如下: m ...

  9. 【FPGA混沌】基于FPGA的混沌系统verilog实现

    1.软件版本 Quartusii12.1 2.本算法fpga实现过程 这里,我们主要使用的公式为: 首先,我们使用MATLAB进行仿真,得到如下结果: 然后,我们使用FPGA进行实现 此时,式中A=1 ...

  10. m基于FPGA的GPS收发系统开发,包括码同步,载波同步,早迟门跟踪环,其中L1采用QPSK,L2采用BPSK

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 最早的GPS包含L1和L2两个频段,其中L1上调制CA码,P码以及导航电文,L2上调制P码和导航电文 ...

最新文章

  1. Java访问权限(详尽版)
  2. RMB77元实现全身VR跟踪,来自配合微软Kinect的Driver4VR
  3. dokcer 运行和进入容器
  4. SAP ABAP里存在Java List这种集合工具类么?CL_OBJECT_COLLECTION了解一下
  5. volatile关键字及编译器指令乱序总结
  6. 连续语音识别,continuous speech recognition,音标,读音,翻译,英文例句,英语词典
  7. java 调用kettle job 传参_java调用kettle向job(任务)和transformation(转换)传递参数实例...
  8. Node.js安装和入门 - 2行代码让你能够启动一个Server
  9. WINCE6.0+ILI9806E休眠唤醒显示异常问题
  10. SPSS教程—如何安装加权kappa计算插件
  11. 电脑重装系统后谷歌浏览器连不上网的解决方案
  12. 9gag for android,GitHub - Mixiaoxiao/9GAG: 9GAG-Android (unofficial), Android Design.
  13. Kerberos安装及使用2(Kerberos服务器KDC安装及配置)
  14. Love to be loved by you Just one last dance
  15. 【T+】畅捷通T+单据生成凭证的时候,提示存在单据未正常记账,需要重新计价。
  16. R语言笔记3(NA解释)
  17. 小度智能音箱维修点_小度音箱客服电话
  18. JS的map方法和Map对象
  19. 国内常用 DNS 汇总
  20. java 获得系统字符集_Java - 获取系统字符集编码

热门文章

  1. 小红书用户画像分析_2018年小红书app用户群体分析报告
  2. 遗传算法和禁忌搜索解TSP
  3. Python基础语法题库
  4. Unity实现简单卡牌游戏框架
  5. CVBS视频信号解析
  6. 布客·ApacheCN 翻译/校对/笔记整理活动进度公告 2020.1
  7. idea导入项目爆红问题及解决方案
  8. vue 实现图片预览
  9. ubuntu18.04安装CH340和CH341驱动
  10. Unity3D插件之DoTween