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

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 interface
		output   [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 interface
		output 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模块,让自己更多精力放在要解决的问题上,少做无用功进度就快了,用更多时间来琢磨优化和规范设计,总结思路。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ILA是指"集成逻辑分析仪",是一种在线调试工具,用于在FPGA设备上执行系统内的调试。它通过一个或多个探针来实时抓取FPGA内部数字信号的波形,分析逻辑错误的原因,帮助进行调试工作。在Vivado中,ILA是一个集成在FPGA开发环境中的工具,可以方便地使用它来进行时序分析。使用ILA工具可以实时抓取FPGA内部的数字信号波形,并通过分析这些波形来定位和解决逻辑错误。相比于传统的仿真方法,ILA工具具有实时性强、工作量小的优势,并且可以帮助验证代码的正确性和可靠性。ILA工具在FPGA工程师的职业中是必备的技能之一,它可以提高调试效率和准确性,减少调试时间和工作量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [FPGA学习 Vivado使用篇之ILA逻辑分析仪)](https://blog.csdn.net/m0_53606280/article/details/123600212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [FPGA — Vivado下ILA(逻辑分析仪)详细使用方法](https://blog.csdn.net/unique_ZRF/article/details/127715565)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值