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

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

3天内不再提示

加载激励块或源代码块的方法

lhl545545 来源:FPGA开发圈 作者:FPGA开发圈 2020-06-09 15:38 次阅读

本篇博文旨在演示其构建方式及其用于实践 IP 的机制。我觉得这部分内容值得讲一讲,因为只要您能够充分理解测试激励文件,就可以将其作为有效的模板来用于将 RF Data Converter IP 构建到自己的仿真设置中。

我并不会细讲这里的所有内容,只是为了演示一下仿真的机制。当然,您也可以自行深入分析测试激励文件 RTL。

您可能已经知道,IP 设计示例随附有完整的测试激励文件。此测试激励文件可在仿真中提供激励生成和采集,用于 ADCDAC 实践。仿真具有内置自检功能,因此它可用于检验您的 IP 设置。

让我们来简单了解下设计测试激励文件示例。

加载激励块或源代码块的方法

从 IP 设计示例层面上来看,不仅有 IP,还有激励块和采集块(均为大型块 RAM 数组)。

此外还有 1 个 SmartConnect 块用于连接到 IP 的 AXI4-Lite 端口

因此,测试激励文件需提供的是:

时钟生成,用于设计中的所有时钟。ADC 和 DAC Tile 的输入、AXI 流传输接口和 1 个 AXI4-Lite 接口。

加载激励块或源代码块的方法。

将“实数”信号应用于模拟输入的方法,以及将实数信号从 DAC 转换为数字总线以便检查的方法。

最重要的是,需要 1 个定序器 (sequencer) 用于管理仿真。

检验采集块或接收端 (sink) 块的方法。

让我们来看看测试激励文件。测试激励文件的所有源文件都包含在设计工程示例中的导入 (imports) 目录中。

顶层测试激励文件包含在 demo_tb.sv SystemVerilog 文件中。我们不会逐行详细分析其中所有内容。在此级别只需连接各主要块即可。让我们来看下仿真功能的最重要的部分。

时钟生成

有一个非常简单的模块可用于在仿真中创建所有必要的时钟信号。其中的输入带有_phase后缀,支持用户为时钟设置高低时间。它用于为每个 Tile 和 AXI Stream 时钟创建所期望的频率。

加载激励块或源代码块的方法

加载激励块或源代码块的方法

我们可在仿真中对此进行检查,确保它按我们期望的方式运行。

在此情况下可以看到,DAC 采样时钟以 6.4GSPS 运行,而 AXI stream 传输时钟的运行速率为该速率除以 16。

加载激励块或源代码块的方法

激励生成

在仿真中,ADC 和 DAC 将分别单独处理。在此情况下并不执行环回。

DAC 与 ADC 来源相同。

ADC 包含demo_tb_rfadc_data_source.sv,其中包含demo_tb_rfadc_tile_source.sv。在代码中,我们提供的是正弦查找表 (LUT)。在此情况下,将循环此 LUT 并生成正弦波输出。

加载激励块或源代码块的方法

此正弦波将输出到测试激励文件的顶层。我们可将其转换为实数,以便将其强制添加到demo_tb中的 Tile 的 UNISIM 模型层的模拟信号输入中。

加载激励块或源代码块的方法

对于 DAC,只需将此数据写入设计示例中的 DAC 源块上的 AXI 接口即可。在demo_tb层级上,我们可将 DAC 模拟信号从实数转换为位数,并将其应用于 DAC 接收端输入。

加载激励块或源代码块的方法

测试激励文件定序器

鉴于时钟正在运行仿真,并且先前已经讲解过数据源相关内容,因此我们可以继续讲解测试激励文件的主要部分。

在demo_tb_axi4l_nano_seq.sv文件中可以了解到仿真的设置和控制方式。此文件使用部分 SystemVerilog 任务以便于我们访问 RF 的 Tile,并对其执行部分设置。此外还有其它任务可用来控制仿真。我们将演示仿真的整个过程,并根据需要来探讨这些任务。

通过观察此文件可以发现,它使用参数化寻址来允许我们处理测试激励文件中 AXI4-Lite 上的各个子块。各项任务将通过这些子块来控制仿真。

加载激励块或源代码块的方法

定序器 (Sequencer) 首先会对测试激励文件中的所有一切都应用复位。然后它会对 Tile 执行写入以启用仿真加速。这样即可缩短 Tile 的启动时间,因为它可缩短电源微调时间以及 ADC 校准时间。仿真仅允许 Tile 达到 IP 的启动状态机的状态 1。

加载激励块或源代码块的方法

在此步骤后,它会对 Tile 执行某些设置,然后开始在测试激励文件中开启源端和接收端。它还会开始加载 DAC 源内存。

加载激励块或源代码块的方法

最好在执行每个步骤时都打印仿真时间。这样即可根据需要检查波形。

可以看到,IP 设置完成后,就会于 169us 附近开始写入 DAC 激励数据。DAC 源内存位于基址 0x300000000 处。

加载激励块或源代码块的方法

下一步,启动 Tile 时钟,并运行 ADC 和 DAC 直至时钟检测步骤为止。

加载激励块或源代码块的方法

完成此步骤后,即可启动 DAC 源并运行 DAC,直至启动 FSM 结束为止:

加载激励块或源代码块的方法

通过观察波形可知,音调已传入,而 DAC 输出总线正在运行。

此处可看到 25Mhz/50Mhz/100Mhz/200Mhz。

加载激励块或源代码块的方法

然后,针对 ADC 重复此过程:

加载激励块或源代码块的方法

运行后,可在波形中查看结果。在此情况下,vout_00和vout02总线即为仿真中 ADC 源的输出。

我在此处还附上了 AXI Stream 传输的 8 个采样之一的截屏,以显示 ADC 能正常转换单音信号。

加载激励块或源代码块的方法

数据接收端和检查器

ADC 和 DAC 在demo_tb中具有一组接收端块。

在这些块中,将对数据进行缩放,并且将执行 FFT。这样即可确认信号能以正确方式进行转换。

加载激励块或源代码块的方法

这些块用于管理错误计数器。如果全部正确,那么定序器 (Sequencer) 就会停止仿真。

加载激励块或源代码块的方法

加载激励块或源代码块的方法

责任编辑:pj

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

    关注

    5

    文章

    1701

    浏览量

    149498
  • 源代码
    +关注

    关注

    96

    文章

    2945

    浏览量

    66729
  • SmartConnect
    +关注

    关注

    0

    文章

    2

    浏览量

    6836
收藏 人收藏

    评论

    相关推荐

    西门子流量累计FB介绍

    成一个易于使用的模块,从而简化了编程工作,提高了代码的可读性和维护性。    一、意义    简化编程 :通过使用预先编写好的FB,工程师可以快速地实现流量累计功能,而无需从头编写代码。 提高效率 :由于FB
    的头像 发表于 12-19 10:28 62次阅读
    西门子流量累计FB<b class='flag-5'>块</b>介绍

    电动工具电机的换向与FOC控制解析

    三相无刷直流电机在钻头、驱动器、砂光机、磨床和锯子。到目前为止,霍尔传感器的换向一直是主要的控制方法电动工具应用中的三相BLDC电机。三相BLDC电机的换向是一种电子换向方案也称为梯形换向、六步
    的头像 发表于 11-28 11:47 363次阅读
    电动工具电机的<b class='flag-5'>块</b>换向与FOC控制解析

    Gmapping源代码

    Gmapping源代码.docx
    发表于 11-16 13:42 0次下载

    逻辑组件中的流程节点通常出于什么用途

    逻辑组件中的流程节点是流程图、状态图、序列图等图表中的基本元素,它们用于表示业务流程、工作流程、算法步骤、系统状态等。这些节点在软件开发、项目管理、自动化控制、工程设计、科学研究等领域都有广泛
    的头像 发表于 10-15 14:38 151次阅读

    国产端联-断连应用于飞控测试环境断线测试箱

    断连概述 断连作为一种用于电路中断连接的连接器,广泛应用于电子测试设备和通信系统中。它能够在特定条件下,通过手动插拔精准地中断电路连接,以此模拟电路中的断线状态,从而实现对电路问题的检测和诊断
    的头像 发表于 10-08 15:07 246次阅读

    如何使用Tensorflow保存加载模型

    TensorFlow是一个广泛使用的开源机器学习库,它提供了丰富的API来构建和训练各种深度学习模型。在模型训练完成后,保存模型以便将来使用部署是一项常见的需求。同样,加载已保存的模型进行预测
    的头像 发表于 07-04 13:07 1474次阅读

    振动电机偏心调整方法

    的核心部件,其调整方法对振动电机的性能和使用寿命具有重要影响。本文将详细介绍振动电机偏心的调整方法。 一、振动电机偏心的工作原理 振动电机的偏心
    的头像 发表于 06-12 16:17 2074次阅读

    西门子博途:“自动化创建器”功能

    在使用“从(含虽有相关联的)生成源”功能对进行备份,重复上述恢复的动作,在观察程序的结果。
    的头像 发表于 04-30 12:57 2292次阅读
    西门子博途:“自动化<b class='flag-5'>块</b>创建器”功能

    【开源鸿蒙】下载OpenHarmony 4.1 Release源代码

    本文介绍了如何下载开源鸿蒙(OpenHarmony)操作系统 4.1 Release版本的源代码,该方法同样可以用于下载OpenHarmony最新开发版本(master分支)或者4.0 Release、3.2 Release等发布版本的
    的头像 发表于 04-27 23:16 900次阅读
    【开源鸿蒙】下载OpenHarmony 4.1 Release<b class='flag-5'>源代码</b>

    为什么在25对的110配线架基座上安装时不用5个5对连接

    在25对的110配线架基座上安装时,不建议使用5个5对连接,主要出于以下原因: 接触可靠性更高:使用4对连接可以确保每个连接之间有一定的距离,减少了连接之间的干扰,从而提高了连
    的头像 发表于 03-04 12:01 354次阅读

    西门子博途:属性- 隐藏参数

    在 LAD FBD 中调用该时,可隐藏参数。刚开始时,隐藏的参数不可见;但可通过框底部边缘处的小箭头进行显示。
    发表于 01-16 09:30 1987次阅读
    西门子博途:<b class='flag-5'>块</b>属性- 隐藏<b class='flag-5'>块</b>参数

    西门子博途示例:设置优化访问

    默认情况下,为 S7 - 1200/1500 的所有新创建的启用优化访问。可为 OB、FB 和全局DB设置访问。对于背景DB,设置来自各自的 FB。 如果将从 S7- 300
    的头像 发表于 01-15 10:41 5654次阅读
    西门子博途示例:设置优化<b class='flag-5'>块</b>访问

    如何快速为DB变量添加属性

    有些情况需要为PLC DB变量添加一些属性,常规的做法是在DB中选中这个变量,然后打开变量属性输入属性名称和属性值。
    的头像 发表于 01-02 14:18 2158次阅读
    如何快速为DB<b class='flag-5'>块</b>变量添加属性

    6电池的正确连接方式

    6电池的正确连接方式  电池是一种能将化学能转化为电能的装置,具有多种类型和连接方式。本文将详细介绍6电池的正确连接方式,包括串联和并联两种方式,并提供应用案例和注意事项。 一、串联连接方式
    的头像 发表于 12-29 14:29 4852次阅读

    mip382电源各脚功能电压

    电源拥有多个引脚,每个脚具有不同的功能和提供的电压。下面我们将逐一介绍这些脚的功能和电压: VCC:这个引脚是MIP382电源的供电输入端,一般连接到电源的正极。其电压一般为3.3V5V,用于向其他部件提供主要的电源。 G
    的头像 发表于 12-28 15:28 4053次阅读