在CSDN这个BLOG中我详细给出了如何在VIVADO中插入在线逻辑分析仪进行信号获取。这里再记录一下自己用的一个小技巧: 实例化一个统一的多款口大位宽的ILA,在多处使用。

我们在一个模块内插入ILA要测试的端口数和位宽都不一样,根据每个需求做生成一个ILA显然工作量有点大,也生成了那么多ILA只用一次调试完就丢弃的化,项目文件也就比较乱了。我们可以先实例化一个多个端口,比方说16个端口,在模块中最大的寄存器是64BIT,我们就实例化一个16个端口,每个端口都是64位的ILA,如下图

实际使用时候我们可以做一层包装:

module ila_64x16 (
input clk,
input [63:0] in0,in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15
);XIL_ILA_64x16 XIL_ILA_64x16_i(.clk_0(clk),.probe0_0(in0),.probe1_0(in1),.probe2_0(in2),.probe3_0(in3),.probe4_0(in4),.probe5_0(in5),.probe6_0(in6),.probe7_0(in7),.probe8_0(in8),.probe9_0(in9),.probe10_0(in10),.probe11_0(in11),.probe12_0(in12),.probe13_0(in13),.probe14_0(in14),.probe15_0(in15) );
endmodule

这样目的是为了以后自己可以根据不同平台来修改这些ILA代码,当然也可以直接修改这个模块来DISABLE这些ILA的实现。

我在使用的时候只要是用到不大于16个端口每个端口位数不大于64的,都可以实例化这个ILA来实现。如下:


module sdrpi_gpsdo_ether_socket_eeprom (input clk_125m, rst,// clk_40m,
input clk_125m_eth,rst_eth,// iic eeprom
input scl_i,
output scl_o,scl_t,
input sda_i,
output sda_o,sda_t,// gpsdo interface
output dac_nsyc,dac_clk,dac_din,
output gps_pl_led,
input  pps_in ,
input gpsdo_model ,//phy interfaceoutput   [7:0] phy_tx_dout ,output phy_tx_err,output   phy_tx_en,input phy_tx_clk,output phy_gtx_clk,phy_reset_n,input [7:0] phy_rx_din,input phy_rx_dv ,phy_rx_clk, // sokect interface
input [7:0]   socket0_pl2net_d,
input         socket0_pl2net_wr,
output        socket0_pl2net_full,output [7:0]  socket0_net2pl_d,
output        socket0_net2pl_wr,input [7:0]   socket1_pl2net_d,
input         socket1_pl2net_wr,
output        socket1_pl2net_full,output [7:0]  socket1_net2pl_d,
output        socket1_net2pl_wr,// eeprom interfaceoutput eeprom_idle ,input wr_req,input [7:0] wr_addr,input [63:0] wr_u64,output   wr_done ,// eeprom interface   input rd_req,input  [7:0] rd_addr,output    [63:0] rd_u64,output   rd_done   ,output    do_halt ); ila_64x16 ila_64x16 (
.clk( clk_125m_eth ),.in0(  my_rcv_port_a    ),
.in1(  socket0_net2pl_wr    ),
.in2( socket0_net2pl_d    ),
.in3( a_rcv_src_ip     ),.in4(  my_rcv_port_b    ),
.in5(  socket1_net2pl_wr    ),
.in6( socket1_net2pl_d    ),
.in7( b_rcv_src_ip     ),.in8(  123  ) ,
.in9(    ) ,
.in10(     ) ,
.in11(       )  ,
.in12(    ) ,
.in13(    ),
.in14(    )
);

这里我们看到1位的和8位的数据都直接接在了ILA的接口,这是VERILOG语法语义所允许的,高位直接补0;另外一些没有用到接口直接空置了,或者都没有写出来(比如in15就没有写出),(或者如in8端口在空置的端口写上每次编译不同的数字ID,好在ILA中确保调试的是对应的编译结果)。

下图是ILA分析仪结果,

这里不便就是在16进制显示时候多了若干0以补齐64位,可以设置成signed 或者unsigned的显示方式就好了。另外设置采集触发时候要可以设置成UNSIGNED 的表示,对1位的触发条件就根据需要写0或者1就行.

这样有了这一个通用的模块,就可以多出来例化调用了,非常方便。

在进行设计的时候要把自己考虑在内,自己的感受自己的工作量,因为毕竟自己不是一个机器人。有了这样一模块就可以不必写多个ILA模块,让自己更多精力放在要解决的问题上,少做无用功进度就快了,用更多时间来琢磨优化和规范设计,总结思路。

使用在线路线逻辑分析仪ILA调试模块的小技巧相关推荐

  1. 【软件开发底层知识修炼】十八 快速学习GDB调试五 使用GDB进行调试的一些小技巧

    上一篇文章学习了如何使用GDB进行函数调用栈的查看:[软件开发底层知识修炼]十六 快速学习GDB调试四 使用GDB进行函数调用栈的查看 本篇文章是GDB调试快速学习系列的最后一篇.将综合前几篇文章做一 ...

  2. 如何在 SAP UI5 应用中集成第三方库 :一个在移动设备上查看 Web 应用打印调试信息的小技巧

    这是 Jerry 2021 年的第 43 篇文章,也是汪子熙公众号总共第 320 篇原创文章. 做 Web 开发的程序员,无论使用 SAP UI5,还是 Angular,React,Vue,每天都离不 ...

  3. OD调试中的小技巧--一点点总结,大佬请绕行

    一.找到OEP 这个本来没那么复杂,主要是之前实在是没有接触过,粘一下大佬的内容,最最基本的是单步调试法,其他的都是再这个基础上进行丰富的.内容复制如下 ======================= ...

  4. Windows Mobile中使用WinCE驱动调试助手的小技巧

    驱动调试助手是针对Windows CE做的,在Windows Mobile中使用会有一些问题,最主要的就是其菜单栏被Windows Mobile系统的任务栏给遮住了,导致相应的功能无法正常使用,如下图 ...

  5. chrome调试js的小技巧

    原文链接:http://www.cnblogs.com/liyunhua/p/4621937.html $ $_命令返回最近一次表达式执行的结果,功能跟按向上的方向键再回车是一样的,但它可以做为一个变 ...

  6. 在地址栏调试js(小技巧)

    还真才学到 javascript:eval('debugger;Myfunction()') javascript:alert(eval('debugger;Myfunction()')) 转载于:h ...

  7. JS调试的一些小技巧

    1:在js或者jsp中加上debugger;页面刷新可以进断点 2:在google浏览器中可以先给js打上断点,浏览器右侧的call stack可以跟踪调用方法的js

  8. scrapy没有运行结果_关于Scrapy爬虫项目运行和调试的小技巧(下篇)

    前几天给大家分享了关于Scrapy爬虫项目运行和调试的小技巧上篇,没来得及上车的小伙伴可以戳超链接看一下.今天小编继续沿着上篇的思路往下延伸,给大家分享更为实用的Scrapy项目调试技巧. 三.设置网 ...

  9. Vivado下的集成逻辑分析仪ILA 入门

    刚刚开始学习Zynq 7000的时候,看到别人问ILA的问题时,说是集成逻辑分析仪,我觉得这是一个好东西,我一定要学会它. 我是买了黑金的AX7010, 后来换成AC7010,开始学习Zynq 700 ...

最新文章

  1. Python,OpenCV中的K均值聚类——K-Means Cluster
  2. 配置telnet和SSH
  3. Java基础之Hibernate
  4. charles 代理手机连不上网_Charles设置代理后,手机无法上网
  5. Quartz作业调度框架及时间表达式的含义和语法
  6. Cortex-M3复位序列
  7. php访问对象的成员,如何使用PHP从JSON访问另一个对象内的类的成员
  8. Intouch高级报警(报警筛选)
  9. java实验指导书 王立新,java实验指导书
  10. 2017网络安全方向学习总览(转载供本人查阅而已)
  11. 微信网页调试8.0.19换掉X5内核,改用xweb,所以x5调试方式已经不能用了,现在有了解决方案
  12. [redis]Redis ZSet排序问题(排名实现按时间顺序排布)
  13. 3秒测试:组建一个网络,需要几个硬件设备搞定?
  14. ios打包ipa 命令安装ipa到iphone
  15. 非关系型数据库NoSQL的崛起
  16. python中mainloop添加背景_Python实例讲解 tkinter canvas (设置背景图片及文字)
  17. 重复的事情用心做!感悟
  18. SAP 同公司不同工厂间的库存调拨
  19. 程序员为什么要写技术博客?都在哪些平台呢?
  20. win10计算机删除用户密码,win10系统彻底清除电脑上存储的用户名和密码的步骤...

热门文章

  1. linux添加源ip路由命令,linux添加ip、路由相关命令
  2. MySQL安装配置教程(超详细图文教程)
  3. 转载如何让网站顺利通过W3C验证
  4. 给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
  5. centos设置BOOTPROTO none和dhcp有什么区别
  6. 使用Python制作跳舞小熊的动态二维
  7. Shell入门(六)之Shell pipe(管道)
  8. 化学专业大二转码的抉择之路!
  9. XGBoost算法模型
  10. springboot+java二手手机回收平台系统