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

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

3天内不再提示

如何在IPI流程中修改(以太网)IP工程(及其所包含的GT模块)的代码与属性

jf_pJlTbmA9 来源:AMD Xilinx开发者社区 作者:AMD Xilinx开发者社区 2023-07-10 17:21 次阅读

目前绝大多数的Versal IP所提供的例子工程,都使用了IPI的流程。
这篇blog会给大家介绍如何修改IP例子工程(Block Design)里的IP和GT模块的源代码与属性。这里用的是以太网IP,如MRMACDCMAC作为示例。当然这些修改的方法,也适用于其它调用了GT的各种IP。

这篇blog主要包含以下4个方面内容:
1. 使用APB3接口修改GT的参数属性

2. 如何从Block Design的模块内部,获取GT端口信号的控制

3. 通过CIPS读、写以太网IP的寄存器

4. 如何修改IP的内部源代码

首先,产生一个DCMAC或者MRMAC IP的例子工程。

如下图可以看到,IP的例子工程里面有个Block Design(BD)工程,里头包含了MAC core(.xci)和GT wrapper模块。另外,工程里还有个CIPS模块,用来读写寄存器。

1672904763150970.png

1. 使用APB3接口修改GT的参数属性

在产生的MRMAC例子工程中,GT的APB3接口是直接拉出来的,但是在代码逻辑里面并没有被使用,如下图,在”*_exdes.sv”文件里可以找到。

1672904775354227.png

请参考GT用户手册(如GTM的文档AM017)中的章节“Fabric Configuration Interface”,来操作APB3接口。这个新的APB3接口,跟GT以前用的DRP接口非常类似,可以通过该接口,动态读写GT的参数属性。

1672904785991534.png

在另一篇blog“Differences When Designing with UltraScale+ GTY and Versal GTY/GTYP“当中,提供了一个如何使用VIO去控制APB3的例子,可供参考使用。它还提供了另一个例子,使用AXI总线替换APB3接口来操作。

2. 如何从Block Design的模块内部,获取GT端口信号的控制

一个IP core调用了GT模块,但并不一定会用上所有的GT端口管脚。这些端口信号很有可能被留在了Block Design的模块内部,而没有拉到顶层来。但是在有的时候,客户为了自己的设计会想要去控制某些被留在BD内部的GT输入输出端口信号,例如为了做一些debug工作等。
这篇AR“75857 - Versal GTY Pass Through Mode - How do I tie off all of the interface pins/Changes from previous versions of the IP“介绍了如何去获取以及控制内部的GT模块的端口信号。

下面是一个例子,详细描述了如何可以手动把你想要用的GT端口从BD设计内部拉到IP顶层来,供你的逻辑驱动。

比方说,在一个DCMAC IP的例子工程当中,不同于上面的MRMAC example,这个DCMAC example也没有使用到GT的APB3接口信号,这些端口不仅没有连接,还被保留在了Block Design内部,没有被拉出来。首先,可以点开Block Design,找到gt_quad_base模块和它的APB3接口信号,如下图。右键点击这个端口,选择“Make External“。然后Vivado 工具会自动把这些点选到的信号,拉到顶层模块。

1672904805482325.png

接下来,请点击“Generate Block Design“,完成后,你就能够在example顶层设计里直接用逻辑去控制这些拉出来的GT端口信号了。

1672904814785052.png

3. 通过CIPS读、写以太网IP的寄存器

在DCMAC或者MRMAC IP的例子工程里面,都调用CIPS模块,该模块可以用来读写以太网IP的寄存器。

首先,你可以打开example top文件的源代码,找到CIPS模块的信号连接,再点开Vivado工程里面的“Address Editor“,确认每个模块对应的地址分配情况,如下面两张图。

1672904823634755.png

1672904832635082.png

请在AMD的网站上,下载这些以太网IP的寄存器地址映射信息

(比如MRMAC的pg314-mrmac_registers_v1_5.zip)
在以太网IP的文档中(如MRMAC的PG314)描述了如何使用XSDB平台,通过CIPS读写IP的寄存器。请在Tera Term工具中打开XSDB Console,使用mrd/mwr指令,实现读写寄存器。

这里是一组用以完成MRMAC初始化的寄存器读写指令的例子。

mwr-force27520532520x00000FFF
mwr-force27520532560x40000A24
mwr-force27520532640x00000033
mwr-force27520532600x00000C03
mwr-force27520534560x00000000
mwr-force27520575520x00000000
mwr-force27520616480x00000000
mwr-force27520657440x00000000
mwr-force27520532520x00000000
mwr-force27520532920x00000001
mwr-force27525120000x00000F02
mwr-force27525120000x00000002
mrd-force2752577544
mwr-force27520551080xFFFFFFFF
mwr-force27520592040xFFFFFFFF
mwr-force27520633000xFFFFFFFF
mwr-force27520673960xFFFFFFFF
mrd-force2752055108
mrd-force2752059204
mrd-force2752063300
mrd-force2752067396

4. 如何修改IP的内部源代码

有的时候,用户还会想要直接修改IP内部那些没有被加密的HDL源代码。点开Vivado工程里的.xci IP,可以看到内部有很多代码模块。有些模块仍然是有HDL源代码的,但是因为这些代码文件在IP的.xci下面,因此不能直接修改,如果直接改完,工具在跑流程的过程中,很可能重新自动产生这个文件把你的手动修改给覆盖掉。

你可以参考这个AR里面介绍的,Vivado的手动修改IP代码的流程操作“57546 - Vivado IP Flows - How to modify/edit IP core source files in Vivado?“;在本文的IPI流程当中,我们可以采用类似的方式,来实现手动修改IP内部代码。

首先用下面这个命令,将需要修改的IP Lock住。

set_propertyIS_LOCKEDtrue[get_filesXXX.xci]

1672904846659803.png

然后在Vivado以外找一个第三方的文本编辑器工具,打开要改的这个HDL源代码文件,修改后保存,重新综合IP,这样Vivado就不会重新生成这个文件覆盖你的修改了。你的手动修改将能够起效。

审核编辑:汤梓红

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

    关注

    7

    文章

    2696

    浏览量

    47430
  • 以太网
    +关注

    关注

    40

    文章

    5419

    浏览量

    171585
  • 寄存器
    +关注

    关注

    31

    文章

    5336

    浏览量

    120224
  • Versal
    +关注

    关注

    1

    文章

    158

    浏览量

    7656
收藏 人收藏

    评论

    相关推荐

    基于TCP IP协议栈的嵌入式以太网终端设计

    基于TCP IP协议栈的嵌入式以太网终端设计基于TCP / IP协议栈的嵌入式以太网终端设计杜广微, 张军国, 韩 宁摘 要:嵌入式技术在以太网
    发表于 06-27 09:33

    关于以太网IP地址如何修改

    有没有用神舟IV号开发板的?以太网实验IP地址如何修改?还有接收到的数据在哪里?
    发表于 06-17 17:16

    百兆以太网改千兆,要怎么修改程序?

    。。。)用88E1111在 quartus调用MAC的IP核实现百兆以太网代码,现在不知道除了修改配置寄存器的代码 ,怎么
    发表于 10-03 09:12

    自动化行业的全厂自动化以太网/IP

    的灵活性、数十年的发展以及供应商群体的成熟度。在本部分,我们将看看EtherNet/IP®,并考察如何在全厂自动化和控制系统实施EtherNet/IP®。该标准以
    发表于 10-22 16:45

    以太网和工业以太网的不同

    停止灌装流程,防止造成时间、产品和资金损失。以太网和工业以太网之间的其他差别Real Time Automation公司表示,以太网一般更多地用于办公环境,而非工业环境
    发表于 10-23 14:20

    【FPGA DEMO】Lab 10:千兆以太网

    下:系统设计:实现过程:1:在代码改源MAC地址为自己电脑的MAC地址,如果不知道自己 PC 网卡的 mac address,就在DOS命令窗口,用 ipconfig–all命令查看。2:以太网
    发表于 07-30 16:10

    Android系统启动以太网卡及支持双网卡共存的操作流程

    以太网卡的话,需要在platform.xml添加以太网feature,代码如下:<feature name=&quot
    发表于 05-25 10:29

    ETH-CH32v20x_v307在Freertos添加以太网

    使用V208以太网,所以若想使用V203RBT6的以太网,则需要修改相应启动文件,在工程属性设置
    发表于 08-09 10:41

    基于以太网接口的TCP/IP 实验

    基于以太网接口的TCP/IP 实验 一. 实验目的进行一次TCP/IP 的通讯实验,使用户初步了解以太网IP、ARP、ICMP 等协议。
    发表于 09-26 16:51 2057次阅读
    基于<b class='flag-5'>以太网</b>接口的TCP/<b class='flag-5'>IP</b> 实验

    Ethernet/IP工业以太网的研究

    介绍了工业以太网的发展改进状况,对Ethernet/IP这种新型工业以太网的协议模型及其采用的生产者/消费者通讯模式和面向连接的,CIP(Common Industrial Proto
    发表于 05-05 16:19 54次下载
    Ethernet/<b class='flag-5'>IP</b>工业<b class='flag-5'>以太网</b>的研究

    ENC28J60 spi 接口 以太网 网络模块 提供 代码

    ENC28J60 spi 接口 以太网 网络模块 提供 代码ENC28J60 spi 接口 以太网 网络模块 提供
    发表于 05-17 17:47 22次下载

    万兆以太网IP SAN的融合

    IP SAN存储融合到万兆以太网,将大大增加了IP SAN网络的通信带宽,提高主机访问存储的速度,同时由于
    的头像 发表于 01-24 15:16 3193次阅读

    以太网和wifi的区别_以太网怎样修改WIFI密码

    本文首先阐述了以太网和wifi的区别,其次介绍了以太网修改WIFI密码方法,最后分析了电脑怎么把以太网改成无线网络。
    发表于 03-20 10:26 3.1w次阅读

    GCAN以太网can网关如何修改本地IP

    联系,我们首先要让这两者处于一个网段之中,这怎么实现呢? 很简单,我们首先将GCAN以太网can网关恢复为出厂IP,一般都是192.168.1.10。然后,我们只要让电脑的IP为192.168.1.X(X为1到255的任意数字,
    的头像 发表于 05-15 13:20 621次阅读

    以太网和TCP/IP的关系解析

    在现代计算机网络以太网和TCP/IP协议栈是构建网络通信的基础。以太网定义了局域(LAN)
    的头像 发表于 11-08 09:21 538次阅读