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

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

3天内不再提示

在Vivado中创建基于IP集成器(IP Integrator)的设计

XILINX开发者社区 来源:XILINX开发者社区 作者:Shengjie Li 2022-06-08 16:07 次阅读

本文作者:赛灵思工程师 Shengjie Li

Zynq UltraScale+ RFSoC 是业界首款单芯片自适应无线电平台,在一款芯片内集成射频直采数据转换器、单芯片软决策前向纠错核(SD-FEC)、FPGA逻辑、完整的ARM处理器子系统和高速收发器等。

第三代RFSoC器件与前几代产品相比,射频输入输出频率响应已扩展至全面支持6GHz以下频段,可帮助用户开发尖端RF设计,例如大规模MIMO无线电、5G基带、固定无线接入、测试测量与相控阵雷达等等。第三代器件14bit分辨率ADC最大采样速率增加到5.0GSPS,14bit分辨率DAC最大采样速率增加到10.0GSPS。用户可以参考XMP105详细了解Zynq RFSoC系列产品具体参数及选型指南。

本次将分上下篇介绍基于Xilinx Zynq UltraScale+ RFSoC ZCU216评估套件的详细内容:

1. 第三代RFSoC 器件时钟转发特性。

2. ZCU216时钟结构及可行的时钟设计方案。

3. 在Vivado中创建基于IP集成器(IP Integrator)的设计。

4. 在Vitis中创建基于ARM的BareMetal程序设计。

5. 代码简要分析。

6. 硬件环境及测试结果。

本文用于示例的软件工具、驱动版本、硬件版本及文档版本如下:

1. ZCU216 Rev-A02(Engineer Sample)

2. CLK104

3. Vivado 2021.2 + Vitis 2021.2

4. PG269 V2.6 October 27, 2021

5. Software Driver: rfdc v11.0

1. 第三代RFSoC 器件时钟转发特性:

RFSoC在芯片内集成了数据转换器,第三代RFSoC系列器件均包含4个ADC Tile和4个DAC Tile,每个ADC和DAC Tile内可能包含1个(ZU43DR)或2个(ZU47DR/48DR)或者4个(ZU49DR)Channel,这取决于芯片型号。以ZCU216开发板上的芯片为例,ZU49DR的每个ADC Tile内包含4路ADC,每个DAC Tile内包含4路DAC。

每个Tile都可以独立配置,工作在不同的采样时钟频率上,采样时钟可以来自于外部高频时钟输入,可以来自于每个Tile内部PLL倍频后的时钟,也可以来自于其他Tile分发的参考时钟。

第三代RFSoC器件相比之前几代产品引入了时钟转发特性,不再需要为每个Tile都提供独立的采样时钟,节省了引脚数量,降低了外围电路的复杂度。

时钟转发的方式共分为两种,一种是参考时钟转发,一种是采样时钟转发。

所谓参考时钟转发,是指外部时钟芯片提供低噪声低频时钟到一个ADC/DAC Tile的专用时钟管脚,该时钟将在Tile间转发,通过每个Tile内的PLL倍频出所需的采样时钟;

82de0f9a-dc1b-11ec-ba43-dac502259ad0.png

而采样时钟转发有两种途径,一是从外部时钟芯片直接提供低噪声高频的采样时钟到一个ADC/DAC Tile的专用时钟管脚,采样时钟将在Tile间分发,无需通过内部PLL倍频,直接提供给ADC/DAC Channel作为采样时钟;

8310947e-dc1b-11ec-ba43-dac502259ad0.png

时钟芯片提供低噪声低频时钟到一个ADC/DAC Tile的专用时钟管脚,该时钟在此Tile内通过PLL倍频到采样频率,随后将此采样时钟在Tile间分发。

839152c6-dc1b-11ec-ba43-dac502259ad0.png

以上仅为时钟分发方式的简化解释,会有一些使用的限制和建议,建议用户参考PG269 Chapter 4 Clocking-On-chip Clock Distribution章节阅读。

用户也可以打开Vivado,选择器件型号后在RF Data Converter IP内根据原理图和目标设计进行配置,如果时钟设计存在问题,工具会给予一定的报警和提示。

值得注意的是,RF Data Converter IP内的选项和上述的两种分发方式不是完全匹配的。当使用采样时钟分发方式时,在IP内需要勾选的是Input Refclk。ADC Tile 1(Tile 225)和DAC Tile 1(Tile 229)作为采样时钟输入源,其他的ADC和DAC Tile选择Tile 1作为时钟源。

83c1c17c-dc1b-11ec-ba43-dac502259ad0.png

2. ZCU216时钟结构及可行的时钟设计方案:

本节仅覆盖ZCU216开发板与RF数据转换器相关的时钟部分,这部分时钟均由扩展子卡CLK104提供。

83f1aef0-dc1b-11ec-ba43-dac502259ad0.png

如下所示为CLK104板上的功能示意图:

8421c5c2-dc1b-11ec-ba43-dac502259ad0.png

通过一个时钟芯片为DAC提供接近10GSPS的低噪声采样时钟是很难实现的,CLK104板采用两级PLL方案。

第一级LMK04828B是一个双环路抖动清除器和时钟发生器,一级回路的参考输入可为板上的10MHz TCXO、外部参考时钟(比如从SMA100B输出低噪声时钟),或SFP恢复时钟。二级回路的参考输入为板上的160MHz VCXO,可输出低相噪的时钟、同步信号。其中DAC_REFCLK和ADC_REFCLK可作为ADC/DAC低频参考时钟输入;PL_CLK,AMS_SYSREF和PL_SYSREF均用作MTS(Multi-Tile Synchronization)应用,我们将在未来博客中详细描述MTS相关应用;

第二级LMX2594接收第一级输出时钟,将其倍频到采样频率,直接输出到ADC/DAC Tile。

这三颗时钟芯片均由SPI接口控制,板上有一颗IIC to SPI桥接芯片,FPGA通过IIC接口对此转换芯片进行控制,进而控制三颗时钟芯片。除此以外还有一种更为简单的方式,ZCU216板上带有一颗TI的MSP430 MCU,其IIC接口通过IIC Switch也可以连接到这几颗时钟IC上,用户可以参考XTP580,使用BoardUI实现对时钟的配置。

ZCU216上的芯片型号为ZU49DR,其4个ADC Tile和4个DAC Tile都有专用的模拟时钟输入管脚,但只有两个ADC Tile(Bank 225/226)和两个DAC Tile(Bank 229/230)的时钟管脚被引出。如下表所示为详细连接关系:

84595442-dc1b-11ec-ba43-dac502259ad0.png

本文后续将会展示以下的时钟方案配置:

使用LMX2594输出高频采样时钟分发方式,从ADC Tile1和DAC Tile1输入。设定ADC 采样频率为2000MHz,DAC采样频率为6400MHz。

84a2726c-dc1b-11ec-ba43-dac502259ad0.png

3. 在Vivado中创建基于IP集成器(IP Integrator)的设计

本节需要读者对基于Vivado的IPI设计比较熟悉,将不会对较简单的操作步骤进行详述。如何使用此Blog提供的TCL文件重建Vivado工程请参考附录。

Ø 打开Vivado 2021.2,新建工程,名为rfsoc_zcu216_clocking。

Ø选择板卡ZCU216 EVB或ZCU216 ES EVB,根据板卡型号决定,二者bitstream不兼容。

Ø 在工程界面内创建Block Design,默认名为design_1。

Ø添加Zynq UltraScale+ MPSoC IP,Run Block automation,使用板卡默认配置。

Ø 修改Zynq配置,PS-PL Configuration界面下将AXI HPM0/1 FPD接口关闭,勾选AXI HPM0 LPD,其他保持默认。

Ø 添加Zynq UltraScale+ RF Data Converter IP。

Ø 修改RF Data Converter配置。

1. 切换Converter Setup为Advanced模式。

2. 使能全部ADC和DAC的每个Channel,其他所有配置大多数都是可以通过API修改的,保持默认即可,后续将会介绍如何通过API修改。

3. 修改全部ADC的Samples per AXI4-Stream Cycle为8,DAC为16,这是为了避免AXI-Stream接口时钟频率超出器件频率上限。

84e82b5e-dc1b-11ec-ba43-dac502259ad0.png

4.在System Clocking界面按下图配置,如上一节所示,我们将先按ADC 2GSPS,DAC 6.4GSPS进行配置,使用采样时钟分发方式。IP的输出时钟可以用于倍频产生AXI4-Stream数据接口的时钟,因此我们先保持和Fabric clock 频率8分频的关系进行配置。

856b4480-dc1b-11ec-ba43-dac502259ad0.png

5. Advanced界面保持默认,无需勾选。

Ø Run Block Automation,将RFDC IP AXI-Lite接口通过Interconnect连接到Zynq LPD接口实现地址映射。

Ø 为AXI4-Stream接口提供合适的时钟和复位。

1. 点击BD界面上方Run Block Automation。

2. 由于所有ADC/DAC采样率是一致的,可以使用一个MMCM产生ADC/DAC所需的数字时钟。在弹出界面中勾选ADC 0-3的时钟源为ADC0,DAC0-3的时钟源为DAC0。

8595ec3a-dc1b-11ec-ba43-dac502259ad0.png

3. 工具将会自动例化两个Clocking Wizard IP,adc0_clk_wiz使用IP输出的31.25MHz的时钟作为输入,倍频输出200MHz时钟供给Master接口。Dac0_clk_wiz使用IP输出的50MHz时钟作为输入,倍频输出400MHz时钟供给给Slave接口。

85c6fd8e-dc1b-11ec-ba43-dac502259ad0.png

4. 修改clocking wizard复位极性为低电平有效。

85f29c14-dc1b-11ec-ba43-dac502259ad0.png

5.例化两个Processor System Reset IP,并连接peripheral_aresetn到RFDC IP的s/m_axis_aresetn管脚上。其中Slave AXI-Stream接口是DAC的数字接口,Master AXI-Stream是ADC的数字接口。

6. 例化一个AXI GPIO IP,用于控制时钟板CLK104上的SPI SDO选通。设定为输出,位宽为2,初始值设定为0x0。

86130a30-dc1b-11ec-ba43-dac502259ad0.png

7. 引出AXI GPIO IP,命名为spi_mux。

865127b6-dc1b-11ec-ba43-dac502259ad0.png

Ø 完整的Block Design大致如下:

86773f5a-dc1b-11ec-ba43-dac502259ad0.png

Ø 在BD中右键Validate design,确保没有报错。

86f5e238-dc1b-11ec-ba43-dac502259ad0.png

Ø 创建顶层文件,右键BD,Create HDL Wrapper,选择Let Vivado manage wrapper and auto-update。

87626ba6-dc1b-11ec-ba43-dac502259ad0.png

Ø 添加管脚约束,RFDC相关管脚为专有管脚,IP内包含管脚约束,用户无需为此添加。

87cfac02-dc1b-11ec-ba43-dac502259ad0.png

Ø 生成bitstream,检查工程是否有时序违例。

Ø 导出工程XSA文件,File-Export-Export Hardware,勾选Include Bitstream,选择导出目录。

87fcda6a-dc1b-11ec-ba43-dac502259ad0.png

原文标题:开发者分享|第三代Zynq RFSoC器件射频数据转换器应用: 时钟设计-上

文章出处:【微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

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

    关注

    71

    文章

    2173

    浏览量

    122676
  • Vivado
    +关注

    关注

    19

    文章

    819

    浏览量

    67170
  • IP集成器
    +关注

    关注

    0

    文章

    4

    浏览量

    5825
  • RFSoC
    +关注

    关注

    0

    文章

    29

    浏览量

    2767

原文标题:开发者分享|第三代Zynq RFSoC器件射频数据转换器应用: 时钟设计-上

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    创建AXI Sniffer IPVivado IP Integrator中使用教程

    某些情况下,通过嗅探 AXI 接口来分析其中正在发生的传输事务是很有用的。本文中,我将为大家演示如何创建基本 AXI4-Lite Sniffer IP 以对特定地址上正在发生的读写
    发表于 07-08 09:35 1102次阅读

    Vivado 2013.1和Zynq需要及早访问Vivado IP集成商是什么意思?

    关于Zynq的Vivado 2013.1发行说明说:“需要及早访问Vivado IP集成商”。这是什么意思?它是否真的支持Zynq开箱即用?提前致谢。以上来自于谷歌翻译以下为原文
    发表于 12-04 11:00

    怎么vivado HLS创建一个IP

    你好我正在尝试vivado HLS创建一个IP,然后v
    发表于 04-03 08:48

    Vivado环境下如何在IP Integrator中正确使用HLS IP

    testbench来验证设计。 Integrate带有Xilinx IP Block的 HLS IP 这里展示了IP Integrator
    发表于 02-07 17:59 4491次阅读
    <b class='flag-5'>Vivado</b>环境下如何在<b class='flag-5'>IP</b> <b class='flag-5'>Integrator</b>中正确使用HLS <b class='flag-5'>IP</b>

    Northwest Logic支持Xilinx IP集成器工具流

    Northwest Logic  的  DMA  内核现已支持  Vivado  设计套件的  IP  集成器工具流。 IP 
    发表于 02-09 08:12 406次阅读
    Northwest Logic支持Xilinx <b class='flag-5'>IP</b><b class='flag-5'>集成器</b>工具流

    IP集成器调试AXI接口有哪些优势?

    用户可以使用IP集成器连接IP模块创建复杂的系统设计。通过接口构建基于模块的设计,一般情况下接口包含多个总线和大量的信号线。因此,为了方便在硬件上调试那些包含大量接口的设计,就需要验证
    的头像 发表于 04-18 15:28 3248次阅读
    <b class='flag-5'>在</b><b class='flag-5'>IP</b><b class='flag-5'>集成器</b><b class='flag-5'>中</b>调试AXI接口有哪些优势?

    赛灵思Vivado设计套件推出2013.1版本,提供IP 集成器和高层次综合功能

    FPGA器件创建高度集成的、复杂的设计,赛灵思推出了Vivado IP Integrator
    发表于 09-25 09:18 440次阅读

    如何让Vivado IP Integrator和Amazon F1开发套件进行协同使用

    欢迎阅读本快速视频,我将解释如何使用Vivado IP Integrator流程与Amazon F1硬件开发套件或HDK配合使用
    的头像 发表于 11-20 06:35 2498次阅读

    如何在IP Integrator创建MicroBlaze设计

    了解如何在IP Integrator创建简单的MicroBlaze设计,并创建一个KC705
    的头像 发表于 11-20 06:13 3281次阅读
    如何在<b class='flag-5'>IP</b> <b class='flag-5'>Integrator</b><b class='flag-5'>中</b><b class='flag-5'>创建</b>MicroBlaze设计

    如何使用Vivado Design Suite IP Integrator的调试AXI接口

    了解如何使用Vivado Design Suite IP Integrator有效地调试AXI接口。 本视频介绍了如何使用该工具的好处,所需的调试步骤和演示。
    的头像 发表于 11-29 06:00 4091次阅读

    如何使用Vivado IP Integrator组装具有多个时钟域的设计

    该视频演示了如何使用Vivado IP Integrator组装具有多个时钟域的设计。 它显示了Vivado的设计规则检查和功能如何帮助
    的头像 发表于 11-27 07:40 3870次阅读

    如何使用IP Integrator创建硬件设计

    本视频介绍了使用IP Integrator(IPI)创建简单硬件设计的过程。 使用IPI可以无缝,快速地实现DDR4和PCIe等块 连接在一起,几分钟内
    的头像 发表于 11-22 06:13 4571次阅读
    如何使用<b class='flag-5'>IP</b> <b class='flag-5'>Integrator</b><b class='flag-5'>创建</b>硬件设计

    如何在vivado创建新工程上使用IP集成器创建块设计

    本文介绍如何在 vivado 开发教程(一) 创建新工程 的基础上, 使用IP集成器, 创建块设计。
    的头像 发表于 02-08 10:47 2584次阅读
    如何在<b class='flag-5'>vivado</b><b class='flag-5'>创建</b>新工程上使用<b class='flag-5'>IP</b><b class='flag-5'>集成器</b><b class='flag-5'>创建</b>块设计

    使用VIvado封装自定IP并使用IP创建工程

    FPGA实际的开发,官方提供的IP并不是适用于所有的情况,需要根据实际修改,或者是自己设计的IP时,需要再次调用时,我们可以将之前的设
    的头像 发表于 04-21 08:58 6191次阅读

    如何在Vivado配置FIFO IP

    Vivado IP核提供了强大的FIFO生成器,可以通过图形化配置快速生成FIFO IP核。
    的头像 发表于 08-07 15:36 4717次阅读
    如何在<b class='flag-5'>Vivado</b><b class='flag-5'>中</b>配置FIFO <b class='flag-5'>IP</b>核