0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Simulink代码生成的FPGA信号处理系统仿真验证平台

现代电子技术 来源:现代电子技术 作者:赵欢 ,朱倩 ,唐 2022-11-04 16:24 次阅读

作者:赵欢 ,朱 倩 ,唐 衡

引 言

随着 FPGA 数字信号处理系统复杂度不断提高,FPGA 信号处理系统的功能验证已经成为影响产品上市时间和成本的关键[1]。尽管在验证领域已经发展出多种自动测试方法,但是针对信号处理算法进行验证时,仍然需要手动编写代码搭建仿真平台[2],生成仿真激励,效率较低。信号处理系统往往包含大量复杂的算法[3],对于验证人员编写代码的经验及技能要求较高。

针对这一情况,本文提出了一种基于 Simulink 与IES 联合搭建的功能验证平台。使用 Simulink 的 HDLCoder自动生成代码完成仿真平台中的信号处理算法部分。首先,利用 Matlab强大的分析、计算和可视化功能,使用 Simulink 对算法进行建模仿真[4],当仿真结果达到设计要求后,再使用该模型直接生成 HDL 代码[5],从而大幅提高了验证平台开发效率,避免了对复杂信号处理验证模型的硬件语言设计,提升了平台的复用性和仿真平台搭建效率。同时,由于无需手动编写代码,也避免了人为引入的错误,提升了验证平台的可靠性。

1 SMA 基带信号处理

本文验证的SMA基带信号处理FPGA,是SMA(S⁃BandMultiple Address)测控终端系统的重要组成部分[6],主要完成前向链路中的中频信号解调、解扩,将解调结果通过 RS 422 接口输出至管理单元。该 FPGA 的主要功能

模块包括:

1)数字下变频模块:输入 A/D 信号的采样,将输入中频信号下变频到基带。

2)前向基带处理模块:生成解调所需的 GOLD 码;实现频率捕获和伪码捕获;在捕获的基础上实现信号跟踪并对相关积分结果进行自动增益控制;解扩和位同步。

3)前向同步 RS 422 发送模块:通过 RS 422 接口输出解调数据。功能示意图如图 1所示。

8aba17a4-5c13-11ed-a3b6-dac502259ad0.png

2 联合仿真平台

2.1 验证平台概述

本平台主要用于验证 SMA 信号处理 FPGA 的解调功能和算法性能,确认该 FPGA 是否能够正确解调规定调制格式的输入信号,并确认是否满足接收载噪比、捕获时间、捕获频偏范围、跟踪多普勒变化率等性能要求。本平台采用 IES 和 Simulink 联合的仿真方法,在被测设计外围搭建基于 System Verilog 和 Verilog 混合编程的仿真平台。使用 Simulink 搭建信号处理模型,使用System Verilog搭建其他外围接口模型。主要包括:

1)使用 Simulink 搭建信号处理模型,将调制数据进行扩频、调制、成型滤波、上变频后通过 A/D 接口输入至 DUT,然后自动生成 Verilog代码用于仿真。

2)RS 422 接口模型,使用 System Verilog 搭建,接收 DUT 输出的解调数据并发送至 scoreboard 用于数据比对。

3)时钟模型,使用 System Verilog 搭建,为测试环境和 DUT提供工作时钟。

4)数据比对模块,基于System Verilog的scoreboard,自动比对测试环境发送的调制数据和 DUT 输出的解调结果,测试是否存在误码。

5)Test_case,用例控制模块,使用 System Verilog 生成不同的Test_case 以验证被测设计在不同输入条件下是否满足算法性能要求。

除了验证解调数据正确性以外,在 Simulink 中搭建信号处理模型时,将上变频模块的载波频率和码NCO的码速率控制字设置为外部输入可控,通过 Test_case灵活控制不同用例,测试 DUT 在不同输入载波频率下的捕获和跟踪性能是否满足要求。联合仿真平台如图2所示。

8adedb8e-5c13-11ed-a3b6-dac502259ad0.png

2.2 Simulink信号源建模

根据对被测设计的分析,A/D 信号源模块的主要技术指标包括:A/D 接口输入信号位宽为 12 bits,A/D 采样频率为 100 MHz。扩频模式为直接序列扩频模式,扩频码为 GOLD 码,码长为 1 023,码速率为 3.069 Mc/s,G1生 成 多 项 式 为 x10 + x8 + x7 + x4 + x2 + x + 1 ,初 相 为1101111100,G2 生 成 多 项 式 为 x10 + x7 + 1 ,初 相 为1001001000。需要对扩频后的序列进行成型滤波,滤波器选择成型系数为 0.6的平方根升余弦滤波器。应将滤波后的信号调制至中频,中频为 30 MHz,并且为了验证性能需求,载波多普勒、码多普勒、载噪比需要根据用例要求灵活控制。

依据上述要求,设计了 A/D 信号源模型如图 3 所示,整个模型由扩频码时钟模块、GOLD 码发生器模块、BPSK 调制模块、成型滤波器模块和上变频模块构成。

8afccfa4-5c13-11ed-a3b6-dac502259ad0.png

1)扩频码时钟模块 code_clk:扩频码时钟模块使用NCO 模型产生正弦波输出,然后使用比较器将正弦波转换成方波,作为 GOLD 码发生器模块的 Trigger 信号。为了能够根据用例设置灵活控制码钟频率,将 NCO 频率控制字设置为外部输入模式(Input Port)。

2)GOLD 码发生器模块 pn_gen_1:GOLD 码发生器模 块 由 2 个 PN Sequence Generator 构 成 ,将 2 个 PNSequence Generator 的输出异或后得到 GOLD 码[7],模型结构如图 4 所示,2 个 PN Sequence Generator 的参数设置见表 1。

8b1b4844-5c13-11ed-a3b6-dac502259ad0.png

3)BPSK 调制模块:使用 BPSK 模型对扩频后的结果进行 BPSK 调制。

4)成型滤波器模块:成型滤波器模块用于消除码间串扰,本文中使用 Raised Cosine Transmit Filte模型实现,设置滤波器类型为平方根升余弦滤波器,滚降系数为 0.6。

5)上变频模块:上变频模块使用 NCO HDL模型实现,为了能够根据用例设置灵活控制载波频率,将载波NCO 频率控制字设置为外部输入模式(Input Port),其他参数设置见表2。设置载波 NCO 输入频率为90 kHz~30 MHz时,该 NCO 输出信号的频谱如图 5所示。

8b3ac4ee-5c13-11ed-a3b6-dac502259ad0.png

信号源模型仿真结果如图 6 所示,图中信号波形从上到下分别为:扩频码时钟、扩频码序列、BPSK 调制输出、成型滤波器输出。

需要注意的是:为了能够自动生成代码,构建仿真模型必须使用 hdllib 内的模型,hdllib 是支持生成 HDL代码的模型库[8],并且需要将模型的输入设置为定点输入,这样模型自动成为定点模型,生成代码时即生成定点代码[9⁃10]。

8b61fc62-5c13-11ed-a3b6-dac502259ad0.png

2.3 Simulink模型的 HDL代码直接生成

搭建 Simulink 模型并完成仿真后,就可以直接在HDL Coder中生成 HDL 代码[11]。Simulink 使用高层次综合合成技术,将硬件可实现的 Simulink 模型编译为可读、可追溯且可模型化的 VHDL 或 Verilog HDL 代码,此代码经过优化可以跨任意 FPGA、ASIC 或 SoC 硬件进行移植[12⁃13]。代码生成的过程如下:

1)将需要生成代码的部分封装为一个子系统。

2)检查模型是否可综合:选中子系统后右键选择HDL Code→check subsystem compatibility,如果检查通过,可继续生成代码;如果失败,则需要进行模块替换。

3)参数设置,可以设置生成的语言类型、复位信号极性等。

4)设置完成后,右键点击需要生成的子系统,选择HDL CODE→Generate HDL for subsystem,最 终 生 成代码。

其中一个自动生成模块——BPSK 调制模块代码如图 7 所示,可以看出最终生成代码有较好的可读性,便于仿真调试和修改。

8b8f84a2-5c13-11ed-a3b6-dac502259ad0.png

3 仿真结果与分析

以载噪比 Eb N0=10 dB、初始多普勒偏差 90 kHz、多普勒变化率 1 kHz/s的测试用例为例,IES仿真结果如图 8和图 9所示。

8bb8e09a-5c13-11ed-a3b6-dac502259ad0.png

图 8 中,仿真波形从上到下依次为码发生器时钟、扩频码时钟、扩频码序列、BPSK调制输出、成型滤波器输出。图 9 中,data_bit_delay2 是仿真平台发送的调制数据,Uart_txd_FSR 是 DUT 输出的解调数据,通过比对可 以 确 认 ,输 出 解 调 数 据 与 发 送 的 调 制 数 据 一 致。Acq_Freq_Word为捕获得到的载波频率,被测 FPGA 内部 NCO 时钟为 12.5 MHz,计算可得捕获得到的频率为( -30 962 456 × 12.5 × 106) 232 =-90.112 Hz。

综上可以确认被测FPGA能够在载噪比Eb N0=10 dB、初始多普勒偏差-90 kHz 时成功捕获,并且跟踪、解扩、解调数据,验证了设计功能的正确性和性能指标。

4 结 语

本文提出了一种基于 Simulink与 IES联合搭建的功能验证平台,给出了联合仿真实例,成功对 SMA 信号处理 FPGA 进行了功能和性能验证。该仿真平台利用了Matlab 丰富的信号处理算法模型,生成了验证平台中的关键算法模块代码,极大地降低了验证平台的开发难度,提升了仿真平台的开发效率,提高了平台的复用性。同时,避免了手动编写代码而引入的错误,提升了环境的可靠性,对其他类似复杂信号处理类 FPGA 设计的验证具有极大的参考价值。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21326

    浏览量

    593230
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784

原文标题:论文速览 | 基于Simulink代码生成的 FPGA 信号处理系统仿真验证平台

文章出处:【微信号:现代电子技术,微信公众号:现代电子技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    fpga原型验证平台与硬件仿真器的区别

    FPGA原型验证平台与硬件仿真器在芯片设计和验证过程中各自发挥着独特的作用,它们之间存在明显的区别。
    的头像 发表于 03-15 15:07 302次阅读

    集成化信息化信号采集处理系统有哪些

    随着科技的飞速发展,集成化信息化信号采集处理系统在各个领域的应用越来越广泛。这种系统能够实现对各种信号的实时采集、处理和分析,为决策者提供准
    的头像 发表于 12-14 11:19 419次阅读

    simulink自动生成ROS代码

    当我们用simulink完成控制程序的搭建后,我们期望下一次可以直接对ROS进行控制,而不是每次都需要启动matlab和simulink,因此我们可以使用simulink代码
    的头像 发表于 11-15 17:53 340次阅读
    <b class='flag-5'>simulink</b>自动<b class='flag-5'>生成</b>ROS<b class='flag-5'>代码</b>

    嵌入式视频处理系统领域的FPGA验证

    FPGA在视频处理方面可能很有用处,但在验证基于FPGA的视频系统时,则需要仔细关注您所用的方法。
    的头像 发表于 10-27 17:34 181次阅读

    利用Simulink自动生成STM32串口代码

    功能:利用Simulink自动生成STM32串口代码,在Keil中编译后直接下载到主芯片,实现串口通讯的功能。
    的头像 发表于 10-25 17:04 1050次阅读
    利用<b class='flag-5'>Simulink</b>自动<b class='flag-5'>生成</b>STM32串口<b class='flag-5'>代码</b>

    一种心电信号处理系统设计

    电子发烧友网站提供《一种心电信号处理系统设计.pdf》资料免费下载
    发表于 10-11 09:16 0次下载
    一种心电<b class='flag-5'>信号</b><b class='flag-5'>处理系统</b>设计

    FPGA+DSPs+ARM的数字信号处理系统对比

    信号处理系统一般不单单是模拟信号或者数字信号,一般两者都会有。信号处理关注的是
    发表于 10-09 15:52 307次阅读
    <b class='flag-5'>FPGA</b>+DSPs+ARM的数字<b class='flag-5'>信号</b><b class='flag-5'>处理系统</b>对比

    使用Zynq平台进行嵌入式软件和FPGA设计时有哪些挑战

    本文介绍了在AMD Xilinx Zynq平台上实现嵌入式软件和FPGA设计的集成工作流程,使用Simulink进行Zynq模型设计,以及使用HDL协同仿真
    的头像 发表于 08-21 09:46 331次阅读

    使用MATLAB和Simulink创建FPGA原型的最佳方法

    芯片设计和验证工程师通常要为在硅片上实现的每一行RTL代码写出多达10行测试平台代码验证任务在设计周期内可能会占用50%或更多的时间。尽管
    的头像 发表于 08-06 10:49 1159次阅读
    使用MATLAB和<b class='flag-5'>Simulink</b>创建<b class='flag-5'>FPGA</b>原型的最佳方法

    一种基于FPGA实现的800G信号处理平台设计

    一种基于FPGA 实现的800G信号处理平台
    发表于 07-31 10:23 397次阅读
    一种基于<b class='flag-5'>FPGA</b>实现的800G<b class='flag-5'>信号</b><b class='flag-5'>处理</b><b class='flag-5'>平台</b>设计

    EasyGo 实时仿真丨大功率电机控制器硬件在环系统仿真测试

    仿真器搭建仿真测试系统,进行了产品试验。 如图所示,本次实验使用了EasyGo仿真平台 NetBox ,搭载上位机软件DeskSim。NetBox利用
    发表于 07-28 11:39

    MBD的Simulink使用技巧:详解代码生成中的模型与代码(2)

    上一篇文章中提到,生成嵌入式代码,必须选择定步长求解器。实际中,生成嵌入式代码几乎不会使用Simulink模型库中的连续模型,往往需要通过最
    的头像 发表于 07-13 15:13 2981次阅读
    MBD的<b class='flag-5'>Simulink</b>使用技巧:详解<b class='flag-5'>代码</b><b class='flag-5'>生成</b>中的模型与<b class='flag-5'>代码</b>(2)

    MBD的Simulink使用技巧:Simulink代码生成的基本概念(1)

    MATLAB/Simulink中一共提供三个代码生成的工具
    的头像 发表于 07-13 15:11 1411次阅读
    MBD的<b class='flag-5'>Simulink</b>使用技巧:<b class='flag-5'>Simulink</b><b class='flag-5'>代码</b><b class='flag-5'>生成</b>的基本概念(1)

    S32K144的MBD工具箱,使用Simulink进行仿真时调用的库与生成嵌入式代码时调用的静态库不同?

    我在使用NXP的MBDT时,不仅可以在Simulink中使用它的模块进行仿真,还可以生成S32K的代码,然后在MBDT的安装目录下看到三个库文件。令我困扰的是,使用
    发表于 06-01 06:55

    从SoC仿真验证FPGA原型验证的时机

    我们当然希望在项目中尽快准备好基于FPGA原型验证代码,以便最大限度地为软件团队和RTL验证人员带来更客观的收益。
    发表于 05-30 11:10 804次阅读
    从SoC<b class='flag-5'>仿真</b><b class='flag-5'>验证</b>到<b class='flag-5'>FPGA</b>原型<b class='flag-5'>验证</b>的时机