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

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

3天内不再提示

如何用XSCT通过APB接口来读GT的寄存器

Hack电子 来源:Hack电子 2023-12-08 10:32 次阅读

在debug GT的时候,有时候需要读出一些寄存器来分析。这篇文章介绍一种通过AXI4 Lite或者APB3接口从XSCT来读Versla GT的寄存器的方法。

APB3是一个32-bit数据总线地址,但是AXI4-Lite是一个8-bit Byte总线。因此如果用AXI-lite,需要将如下的寄存器地址*4。

Example的步骤如下:

Create block design + Add bridge IP。

选择10G base-KR作为模板,选择AXI4 Lite选项生成GTY example。

IPI里Block design将CIPS的FPD和AXI Lite接口相连。

增加一个AXI smart connect从CIPS到APB接口。

Create wrapper,Block design如下框图。

Note:如果是APB3,是4 Bytes地址,更适合通过VIO或者是Fabric 接口来访问。

wKgZomVygHGAYYsXAAMHglQEZhA875.jpg

从Address editor可以看到地址是0xA4000000,比如对地址为0xC3C来说,对应AXI地址为0xA40000000 + (0xC3C *4) = 0xA40030F0.

wKgZomVygHGAYkKpAAExUlJzXbE728.jpg

Crate wrapper,实现完成,就可以export hardware

wKgaomVygHGAVHE3AAITRrP1aXk586.jpg

Tools Launch Vitis IDE, 用export的hardware,创建一个hello world的application。最后download到vck190之后,就可用tcl完成读寄存器。下面提供两个example来做一个demo:

Example 1:读0xA40030F0之后的比如32个寄存器

procread_reg{number}{
setoutfile[open"output1.txt"w+]
setstart0xA40030F0
puts$outfile[mrd-force$start$number]
close$outfile
}

Copy到xsct,执行完read_reg 32,就会在工程目录下看到32个寄存器导出到output1.txt,起始地址和寄存器数可以修改.

同样下面的example 2,是用来monitor KH,KL和GC。

Example 2: monitor KH, KL, and GC for Channel 0

procmonitor{}{
setoutfile[open"output2.txt"w+]
#read0x0CBA*4=0x32E8;0x0C3C*4=40x30F0
#set0x0CBA[7]=1'b1
#0x0CBA[6:4]=3'b000
#0x0CBA[3:1]=3'b000
#0x0CBA[0]=1'b1
#0x0C3C[28:27]=2'b00
puts$outfile"###########read0x0CBAand0x0C3C###########"
puts$outfile[mrd0xA40032E8]
puts$outfile[mrd0xA40030F0]
puts$outfile"###########write0x0CBAand0x0C3C###########"
mwr-sizeb0xA40032E8{0x81}1
mwr0xA40030F0[expr[mrd-value0xA40030F0]&0xE7FFFFFF]
puts$outfile"###########read0x0CBAand0x0C3C###########"
puts$outfile[mrd0xA40032E8]
puts$outfile[mrd0xA40030F0]
#read0x08A4[7:0]*4=0x2290
#read0x08A5[23:16]*4=0x2294
#read0x08A6[23:16]*4=0x2298
puts$outfile"###########readKH,KL,GC###########"
puts$outfile[mrd-sizeb0xA40022901]
puts$outfile[mrd-sizeb0xA40022961]
puts$outfile[mrd-sizeb0xA400229A1]
close$outfile
}


审核编辑:汤梓红

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

    关注

    30

    文章

    5042

    浏览量

    117766
  • 接口
    +关注

    关注

    33

    文章

    7653

    浏览量

    148554
  • 总线
    +关注

    关注

    10

    文章

    2716

    浏览量

    87230
  • AXI
    AXI
    +关注

    关注

    1

    文章

    126

    浏览量

    16292
收藏 人收藏

    评论

    相关推荐

    寄存器是什么?怎么操作寄存器点亮LED灯?

    寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口寄存器这两
    的头像 发表于 07-21 16:59 2983次阅读
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>点亮LED灯?

    ade7878 spi接口默认寄存器数值不出来怎么解决?

    工作模式已经选为PsM0 Avdd和Agnd都有电 晶振也起振了 但是用spi接口不出内部寄存器默认值只显示0 已经将ss/has从高电平切换到低电平三次了 并且也完成了后边资料上介绍的关于spi
    发表于 12-27 08:00

    通过SPI接口操作LTC6813,写入寄存器一直无效怎么解决?

    通过SPI接口操作LTC6813,寄存器没问题,但是写入寄存器一直无效。比如我单片机上电时初始化ConfigA配置
    发表于 01-04 08:11

    dm8168寄存器,有的寄存器失败?

     使用dm8168,TMS320dm8168CCYG5AZCSR9786的片子,上电连接仿真,连上ARM,寄存器,只有0xC000,这么长的段可以读数,为啥其他的读数失败? load
    发表于 05-28 02:57

    请问AD2S1205通过角度寄存器活动故障信息有可能错过LOS故障吗?

    AD2S1205的datasheet讲到LOS的故障是通过sample信号的上升沿复位的,那是不是通过角度寄存器(DB1表示LOT和DB2表示DOS)的方式
    发表于 08-15 06:23

    ade7878spi接口默认寄存器数值不出来

    工作模式已经选为PsM0Avdd和Agnd都有电晶振也起振了但是用spi接口不出内部寄存器默认值只显示0已经将ss/has从高电平切换到低电平三次了并且也完成了后边资料上介绍的关于spi
    发表于 10-26 09:22

    使用FPGA通过SPI总线控制AD9266寄存器无法改变寄存器

    使用FPGA通过SPI总线控制AD9266寄存器,可以回寄存器默认值,但是无法改变寄存器值。不知道有没有人遇到过同样的问题。程序是自己写的
    发表于 01-16 11:52

    如何通过配置相应的寄存器驱动LED灯?

    如何通过配置相应的寄存器驱动LED灯?如何通过查找相应的寄存器使能GPIOB?
    发表于 06-15 07:20

    何用汇编操作寄存器

    何用汇编操作寄存器
    发表于 10-26 07:24

    何用寄存器的方法操作RGB灯

    硬件:首先在硬件中我们看到了RGB灯的硬件电路图现在我们用寄存器的方法操作这几个灯:1,先定义硬件的宏#defineGPIOB_CRL0x40010C00#define
    发表于 12-27 06:59

    APB接口协议的读写传输及工作流程简析

    UART、I2C等。一般SoC都是通过它们的寄存器进行访问。APB每次传输至少需要两个周期,所有信号的转换仅在时钟的上升沿发生以便能够轻松地将APB外设集成到其他设计中。
    发表于 04-07 10:18

    调试AD7124-8驱动时,对各寄存器配置之后再次寄存器的值,多个寄存器的值都为fffffffd是为什么?

    在调试AD7124-8驱动时,对各寄存器配置之后再次寄存器的值,多个寄存器的值都为fffffffd,这是为什么? 看参考程序里面对各寄存器
    发表于 12-07 08:29

    使用FPGA通过SPI总线控制AD9266寄存器,可以回寄存器默认值,但是无法改变寄存器值怎么解决?

    使用FPGA通过SPI总线控制AD9266寄存器,可以回寄存器默认值,但是无法改变寄存器值。 不知道有没有人遇到过同样的问题。 程序是
    发表于 12-13 08:29

    ARM I2C 总线接口寄存器设置

    ARM I2C 总线接口寄存器设置 控制ARM 12C总线接口需要配置总线控制寄存器(rIICCON)、总线状态寄存器(rIICSTA
    发表于 03-14 18:00 1653次阅读

    STM32通过寄存器实现IO口取反

    通过按位异或,写ODR寄存器,如:GPIOB-&gt;ODR ^= GPIO_Pin_5; //对PB5 IO口取反在官方给的固件库中,有#define GPIO_Pin_5
    发表于 12-24 19:35 4次下载
    STM32<b class='flag-5'>通过</b><b class='flag-5'>寄存器</b>实现IO口取反