精华内容
下载资源
问答
  • malat读取vivado中的ila的程序,简明扼要。
  • Vivado下ILA使用指南,
  • ILA_M2_Projet_2021_Tablette:ILA M2 Projet 2021平板电脑
  • Xilinx Vivado 硬件诊断( ila和vio的使用)
  • JVC宣布开发出了1.27英寸(对角线3.2cm)“D-ILA(Direct-Drive Image Light Amplifier)”微显示器,面向对比度为2万:1的4K2K投影仪。4096×2400像素的4K2K显示,在相同像素数下实现了面积约为原来的43%的小型化...
  • dbc matlab生成代码使用间接学习架构的GMP DPD Matlab库 如何引用 如果在项目中使用该仓库,请引用该仓库。 下面是一个示例bibtex条目。 @misc{TarverILADPD, ...设计预失真器的一个挑战是我们不知道预失真器的输出应该...
  • Xilinx ChipScope ICON_VIO_ILA 使用方法,有比较清晰的具体使用过程
  • (1)ILA Com、ICON Core和VIO Core可以作为一个IP Core插入到设计巾,运行ISE lO.1Navigator,打开设计文件. (2)为建立XCO文件,选择【Project】-【New Source】命令,弹出【New Source Wizard】对话挺。选择...
  • Xilinx Vivado 硬件诊断( ila和vio的使用),两者的灵活交换使用,基本的调试基本功
  • ■ 【Trigger Port Width】文本框:触发端口宽度,最大为256。 ■ 【Match Units】下拉列表框:用于检测触发端口是否满足特定的条件。一个触发端最多可有16个触发匹配单元,匹配单元的类型在 【Match Type】下拉...
  • ila core datasheet

    2018-08-28 20:18:45
    ISE ILA Core datasheet from Xilinx, which can be used in chipscope
  • 【Vivado那些事儿】ILA使用总结

    千次阅读 2021-10-22 01:23:22
    ILA使用总结集成逻辑分析仪 (Integrated Logic Analyzer,ILA) ILA是Vivado方便用户调试,集成的一个逻辑分析仪。很多有经验的老工程师据说都是不经过...

    8549b219aac22a12c31b66b269c06971.png

    ILA使用总结

    集成逻辑分析仪 (Integrated  Logic  Analyzer,ILA) ILA是Vivado方便用户调试,集成的一个逻辑分析仪。

    很多有经验的老工程师据说都是不经过仿真直接使用ILA进行调试,而对于我们新手来说,ILA是除仿真以外第二大调试利器。

    在Vivado中ILA使用比较广泛,所以添加信号方式也很多,这里总结出三种添加Debug信号的方式,然后会在每一种方式中详细ILA使用流程。

    6eaea7cdf58634f57f50a1d2f1164e38.png

    网表插入调试探测流程的实现

    1、建立工程

    新建一个工程,步骤不赘述。

    2、综合

    在Vivado主界面左侧的“Flow Navigator”窗口中选择并展开“Synthesis”选项。

    7fc6523cd703aed6b3ddb0c5f8777faf.png

    点击“Run Synthesis”,进行综合。

    3、等待综合完成后,弹出“Synthesis Completed”对话框。

    在该对话框中,选择“Open Synthesized Design”选项。

    0275eefe289c325804366f7060fd646b.png

    4、查看“Netlist”.

    上图在点击【OK】后可能会出现“Critical Messages”对话框,单击【OK】即可,在下图中点击【Netlist】即可查看当前设计中的所有网络节点。

    452986e3d4a9702bf140f504377a1226.png

    5、从上图中所有的网络节点选择需要进行调试/监测的端口,并进行标记

    针对本设计,我们选择【din(8)】作为监测端口,在“Netlist”里找到这个端口,右击出菜单,选择【Make Debug】,如下:

    718bc1ad169a01fce41f25c8f1d5a8ef.png

    6、根据需要选择其他端口

    按照上一步操作,选择其他端口,本工程还需要监测【dout(8)】、【rd_en】等。

    b9f4ed048abb29ff81f9ca3efe002068.png

    上诉步骤完毕后,【Ctrl+S】保存修改的网表。

    7、打开“Set up Debug”对话框

    在Vivado主界面的主菜单下,执行菜单命令【Tools】-->【Setup Debug...】,弹出“Set up Debug”对话框。

    6d7a3542dac67e25eba85c24b4b915da.png

    8、设置参数

    点击【Next】【Next】后弹出以下对话框:

    5b3fe166a628e08f1ee8e12687837d25.png

    可以看到“Inst_fifo 1/din(8)”所对应的“Clock Domain”列显示红色的“partially defined”。

    选中第1行需要调试的网络信号。然后单击鼠标右键,出现浮动菜单。在浮动菜单内,执行菜单命令【Select Clock Domain...】。

    3ef015682bd4d0c793e1298ba83b695c.png弹出“Select Clock Domain”对话框。在列表中,选择“clk_IBUF_BUFG”。

    点击【OK】,可以看到为每个调试网络都制定了时钟域。

    e0ba3dd2755b5b85e436da5cde427483.png

    9、“ Set up Debug-ILA Core Options”

    点击【Next】,弹出“ Set up Debug-ILA Core Options”对话框,按照下图进行设置,注意采样深度。

    24a1e0a8ea0ef74c94ec291dea4356ec.png

    10、完成设置

    点击【Next】,出现“ Set up Debug Summary”对话框后,核对自己的设置后,点击【Finish】 。

    8ff2f00cf36b121a057f3f521a491027.png

    11、布线和下载

    在Vivado主界面左侧的“Flow Navigator”窗口中选择并展开“IMPLEMENTATION”选项。在展开项中,双击“Run Implementation”,对设计进行布线实现。

    实现结束后,弹出“Implementation Completed”对话框。在该对话框中,选中“Generate Bitstream”前面的复选框,生成Bit流后进行下载。

    12、使用ILA

    在下载配置文件的时候,需要同时下载比特流文件和探测文件。下载完成后就可以在下载页面看到ILA的调试窗口,按照逻辑分析仪步骤操作即可,这里就不过多演示。

    使用添加 HDL 属性调试探测流程

    1、基础知识

    标记用于调试的HDL信号的例子

    1)Vivado综合mark_debug语法例子

    (1)VHDL语法例子

    attribute mark_debug : string;
    attribute mark_debug of char_fifo_dout: signal is "true";

    (2)  Verlog 语法例子 :

    (* mark_debug = "true" *) wire [7:0] char_fifo_dout;

    XST  mark_debug语法例子

    (1)  VHDL 语法例子 :

    attribute mark_debug: string;
    attribute mark_debug of char_fifo_dout: signal is "true";

    (2)  Verilog 语法例子 :

    (* mark_debug = "true" *) wire [7:0] char_fifo_dout;
    1. Synplify  mark_debug语法例子

    (1)  VHDL 语法例子 :

    attribute syn_keep: boolean;
    attribute mark_debug : string;
    attribute syn_keep of char_fifo_dout: signal is true;
    attribute maric_debug of char_fifo_dout: signal is "true";

    (2)  Verilog 语法例子 :

    (* syn  keep = "true", mark_debug = "true" *) wire [7:0] char_fifo_dout;

    (3)  SDC 语法例子:

    define_attribute  {n:char_fifo_din[*]}  {mark_debug}  {"true"}

    2、在上一个工程的基础上修改

    修改如下入所示,在需要监测/调试的端口添加相应的关键字,关键字如上一节所示:

    7093e4b8df9b7f1f813c00d5dfc40780.png

    添加完毕后,保存【Ctrl+S】

    3、“ Run Synthesis”

    下图中位置,运行综合

    d681de82fb5722ec596d5ea4c5eb75ae.png

    4、查看标记

    综合完毕后,选择“Open Synthesized Design”选项,查看【NetList】,如下:

    b2b812855c7b709e0508ded17cbf80dd.png

    在“Netlist”窗口中可以看到我们在顶层文件添加的【make_debug】网络已经添加了调试标记。

    5、接下来的步骤

    下面的步骤完全同上一节步骤,就不重复演示了。

    总结第一、第二种添加方式

    对于上面两种方式,是比较常用的方式,不需要去例化IP的多余步骤,而且在设计时根据需要就可以自由的添加要调试的信号,对于综合前,可以通过使用“mark_debug”属性,在HDL源文件中标识用于调试的信号。在HDL中,标识用于调试的信号所对应的网络将在“Set Up Debug”窗口中自动列出。

    对于一个综合后的网表工程,可以通过右键菜单添加所需要的网络,也是比较方便的,但是对于未综合的网表只能通过“mark_debug”属性或者下面的方式进行调试,下面就介绍一种比较“笨拙”的方式-IP核。

    使用 HDL 例化调试核调试探测流程

    1、新建一个工程;

    这里使用Vivado自带的例程:

    主页打开下图中的选项:

    2c7c8e98aebe42c4e1254c9c3e204ff0.png

    点击Next

    ed63cb1db1e362e509dddc5949ec97ff.png

    选择Wavegen

    d80317b135edf8ed2ae02abf5f3efb67.png

    图中也有这个例程的框图,点击Next,同时设置工程名和路径:

    ff8be4445cb380f0f92ff9a82736391f.png

    选择自己使用的芯片型号:

    8a1fdee2c8c8cbb86cd41e9bbe252f7f.png

    点击Next-->Finish

    2、添加IP核

    在Vivado主界面左侧的“Flow Navigator”窗口中找到并展开“PROJECT MANAGER”选项。在展开项中,找到并选择“IP Catalog”选项。

    7b2c9351c9fea4e49ebe72406189392e.png

    在下图中的搜索框中,搜索ila。

    9f056d7699d77091bfa01bd63ecd36c2.png

    双击图中红框中“ILA(Integrated Logic Analyzer)”进行IP核设置。

    3、IP核设置

    首先根据需求修改“Component Name”后面的名字,这是IP核例化时的名字,我们这里改为“wavegen_ila_0”。

    cb29ff17a3ffb475375022434ea04ae0.png

    在图中,单击“General Options”标签。在“General Options”标签页中,按照自己实际项目设置一下参数。

    • (1)Number of Probes:4。

    • (2)不勾选“Trigger Out Port”和“Trigger In Port”前面的复选框。

    • (3)其他按默认参数设置。

    65772b0fa7f4c87ca2f3e801edcf34e5.png

    主要设置探针数量是4和采样深度。

    单击“Probe_Ports(0..3)”标签。在“Probe_Ports(0.3)”标签页中,按如下参数进行设置。

    26cc3f3dab54f09936fc83261b45762e.png

    设置探针宽度和触发条件。

    4、例化IP

    单击【OK】按钮,弹出“Generate Output Products”对话框。单击“Generate”。

    在“Sources”窗口中单击“IP Sources”标签。在“IP Sources”标签页中,找到并展开“wavegen_ila_O”选项。在展开项中,找到并双击“wavegen_ila_0.veo”选项。

    2e7ccb11193d1a323f660f10f24d2c1c.png

    在顶层文件中添加例化语句,根据实际添加时钟及添加需要测试的信号。

    5、调试

    综合、布线及产生bit流文件。

    上板调试。

    注意点

    前两种方式在设置完【Set up Debug】后会在约束文件(.xdc)后面添加ila的使用约束,如下图所示:

    f7689229b8e59d1a10b27504f5bea539.png

    所以,如果在综合前工程里没有约束文件,在生成bit流时会报错。

    综合一下:

    在进行综合之前,需要将先将xdc约束文件添加到工程中,否则最后生成bit流时会报错。

    参考文档

    http://china.xilinx.com/training/vivado/inserting-debug-cores-into-the-design.htm

    http://china.xilinx.com/training/vivado/programming-and-debugging-design-in-hardware.htm

    13f979ec8fc0ed65496e5448892e7913.gif

    NOW

    学习Xilinx FPGA最好的资料其实就是官方手册,下表总结了部分手册的主要介绍内容,关注我,持续更新中......


    文件名主标题内容简单介绍是否有中文版

    UG4767 Series FPGAs GTX/GTH  TransceiversGTX和GTH介绍,PCIe、serdes等学习必备

    UG4717 Series FPGAs SelectIO Resources描述 7 系列 FPGA 中可用的 SelectIO资源。

    UG1114PetaLinux Tools DocumentatonPetaLinux 工具文档 参考指南是,V2019.2

    UG949UltraFAST 设计方法指南(适用于 Vivado  Design Suite)赛灵思® UltraFast™  设计方法是用于为当今器件优化设计进程的一套最佳实践。这些设计的规模与复杂性需要执行特定的步骤与设计任务,从而确保设计每一个阶段的成功开展。依照这些步骤,并遵循最佳实践,将帮助您以最快的速度和最高的效率实现期望的设计目标是,V2018.1
    IP手册pg057FIFO GeneratorFIFO生成器IP使用手册
    pg104Complex Multiplier复数乘法器IP使用手册
    pg122RAM-Based Shift Register 移位寄存器IP使用手册

    886f5dda223ba0e5f8373ef828bb4d8b.png

    推荐阅读

    【Vivado那些事】如何查找官网例程及如何使用官网例程

    【Vivado使用误区与进阶】总结篇

    【Vivado那些事】Vivado中常用的快捷键(二)其他常用快捷键

    SystemVerilog数字系统设计_夏宇闻 PDF

    图书推荐|ARM Cortex-M0 全可编程SoC原理及实现

    简谈:如何学习FPGA

    Github 上有哪些优秀的 VHDL/Verilog/FPGA 项目

    AD936x+ZYNQ搭建收音机(一)

    AD936x+ZYNQ搭建OpenWIFI

    无招胜有招-Vivado非工程模式下的详细设计

    面试中经常会遇到的FPGA基本概念,你会几个?

    FPGA 的重构

    国产CPU概括

    从电子游戏历史看IC发展的助推剂

    PCIe总线的基础知识

    万字长文带你回顾电子游戏的七十多年历史(完整版)

    FPGA中异步复位,同步释放的理解

    OpenFPGA系列文章总结

    用Verilog设计一个16 位 RISC 处理器

    介绍一些新手入门FPGA的优秀网站(新增)

    Verilog数字系统基础设计-CR

    建立和保持时间及时序简单理解

    (Xilinx)FPGA中LVDS差分高速传输的实现

    Xilinx Multiboot实例演示

    高速串行通信常用的编码方式-8b/10b编码/解码

    图书推荐|一本图像/视频处理的强大工具书

    Verilog HDL-同步技术

    再说System Verilog 与 Verilog 的关系

    数模混合信号建模语言Verilog-AMS

    Intel/Altera 系列FPGA简介

    一块带给无数人年少欢乐的CPU,别说你没用过它

    Verilog在编写第一行代码之前

    【例说】Verilog HDL 编译器指令,你见过几个?

    穿越时空的爱恋-Z80 CPU的前世今生

    【Vivado】那些事儿-汇总篇

    古老CPU启示录-晶体管之路

    【Vivado那些事儿】约束的顺序

    童年修复系列-SNES芯片组介绍及FPGA实现

    优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V

    串行总线技术(一)-串行总线结构(以PCIe为例)

    串行总线技术(二)-串行总线中的先进设计理念及SerDes/PMA介绍

    优秀的 Verilog/FPGA开源项目介绍(三)- 大厂的项目

    古老CPU启示录-意义重大的8008 芯片

    展开全文
  • Xilinx ChipScope 的使用 ICON/ILA/VIO

    千次阅读 2021-05-24 22:46:52
    添加ChipScope ILA IP核5.添加ChipScope VIO IP核6.将ChipScope的3个IP核添加到顶层模块7.编译下载8.总结9.参考资料10.源码获取 0.FPGA也能片上调试吗? FPGA与STM32等嵌入式开发最大的一个优点就是,可以在时序仿真...

    0.FPGA也能片上调试吗?

    FPGA与STM32等嵌入式开发最大的一个优点就是,可以在时序仿真阶段验证超过90%的功能,发现90%的问题。当所有的仿真没问题了,才能进行最后一步:板级调试。如果仿真都不对,那就没必要下载到芯片里了。

    STM32等单片机,使用J-Link或ST-Link等调试器,可以进行在线调试,由于C代码是顺序执行的,我们可以插入断点,让程序停在我们需要的位置,或者是实时查看一些变量的数值,大大提高了我们Debug的速度,提高产品的开发效率。
    zynq芯片

    对于FPGA来说,仿真毕竟是仿真,可以理解为理想条件,而最终我们的代码是需要运行在实际的FPGA芯片硬件上的。

    所以也会遇到仿真正常,实际下载到板子里不正常的情况。这种现象有两种原因:1.程序有BUG,2.硬件有问题。比如实际程序中复位信号是低电平复位,而实际电路中设计的复位按键按下才是高电平,这样按键未按下就会导致程序一直处于复位状态。

    当然,这只是一种最简单的问题点,实际开发过程中,仿真与实际运行不匹配的情况还有很多。那么如何才能以最快的速度找到问题点呢?

    早期的FPGA调试方法通常使用逻辑分析仪,连接到FPGA芯片的外部管脚上,如果想查看内部信号,还需要把这些信号定义成Output引出到外部管脚进行了测量,如果是多位数据,这样就会占用大量的管脚,但是此类工具有个优点就是支持多种协议解析,可以非常方便的查看协议的报文数据。

    DSLogic IIC解析

    如果有一种工具能像单片机开发那样,通过调试器JTAG接口实时获取运行过程中寄存器的数值就好了。有需求就有市场,FPGA厂商也考虑到了开发者的这种需求,都在自家产品上加上了这个功能,那就是片上逻辑分析仪,就像在芯片内装了一个逻辑分析仪ELA(Embedded Logic Analyzer),可以实时监测数据的变化,还可以设置触发条件等!

    FPGA领域几大厂家提供嵌入式逻辑分析仪:

    • Intel(原Altera)的SignalTap工具
    • AMD(原Xilinx)的ChipScope工具
    • Microchip(原Microsemi)的Identify工具
    • Lattice的Reveal工具

    这些工具都是嵌入式逻辑分析仪,大大提高了Debug速度。这类工具的原理通常是以预先设定的时钟速率实时采样FPGA的内部信号,并暂存于FPGA的内部RAM中,当满足预设的触发条件后,通过JTAG将存储在片内RAM中的数据传输至PC上,PC接收到数据后,通过上位机把数据展现出来。

    以下是使用ChipScope工具抓取的铁电存储器FM25V05的SPI写时序:

    FM25V05写时序

    从FPGA学习流程来看,当了解了流水灯、按键、UART等基本例程后,再学习I2C,SPI之前,就需要掌握片上逻辑分析仪的使用,非常有利于代码的调试。

    ChipScopePro

    我个人使用过Xilinx和Microsemi的工具,还是挺好用的。

    Microsemi的identify使用方法可以到CSDN文章查看:

    https://blog.csdn.net/whik1194/article/details/107074187

    本文主要介绍Xilinx ISE开发环境下ChipScope工具的使用。

    1.Xilinx ChipScope简介

    Xilinx的FPGA片内逻辑分析仪被称为ChipScope,通过插入IP核的方式实现,主要包括3大IP核。

    • ICON

    ICON(integrated controller),主要负责与JTAG口的通讯,最大支持连接15个Core,这里的Core可以是ILA或VIO。

    • ILA

    ILA(integrated logic analyzer),嵌入式逻辑分析仪,可以抓取内部的任何信号,通过设置触发条件的方式,抓取一段时间的波形,时间长度取决于FPGA RAM资源大小。

    • VIO

    VIO(virtual input/output),即输入输出,可以实时监控FPGA内部信号,并提供驱动信号给FPGA模块,类似于单片机调试中的变量值查看。

    • ATC2

    ATC2(Agilent trace core),是属于特殊定制的调试IP核,需要配合新一代的Agilent逻辑分析仪一起使用,这个很少使用。

    下面这张图是来自Xilinx官方文档:chipscope_pro_sw_cores_ug029.pdf的一张图片,关于ChipScope官方的使用指南可以查看这篇文档,介绍了ChipScope工具的整体框图。

    ChipScope系统框图

    既然是逻辑分析仪,就要涉及到逻辑分析仪最重要的两个参数:采样频率和采样深度,ILA的采样频率取决于输入时钟信号的频率,采样深度取决于FPGA的RAM大小。

    2.示例工程创建

    下面以Xilinx Spartan-6 XC6SLX9为例,演示ChipScope的使用,ILA抓取cnt实时数据。VIO实现在上位机控制LED亮灭,或选择闪烁频率。led1通过VIO来选择4档闪烁频率,led2通过VIO给的触发信号上升沿进行翻转,led3与VIO输出高低保持一致。

    首先创建一个基于XC6SLX9的ISE基本工程,并新建源文件。

    以下代码还未添加ChipScope:

    module top(
        //Inputs
        input clk,          //50MHz
        input rst_n,
        
        //Outputs
        output reg led1,        //通过VIO来选择4种闪烁频率
        output reg led2,        //通过VIO来控制
        output led3         //通过VIO来控制
    );
    
    wire [1:0] level;       //来自VIO
    wire trig;              //来自VIO, 按键产生高脉冲信号
    wire trig_rise = (trig_reg == 2'b01);
    
    reg [1:0] trig_reg;
    reg [26:0] cnt;         //在ILA中查看数据变化
    
    always @ (posedge clk) begin
        if(!rst_n)
            trig_reg <= 'h0;
        else 
            trig_reg <= {trig_reg[0], trig};
    end
    
    always @ (posedge clk) begin
        if(!rst_n) 
            cnt <= 'd0;
        else 
            cnt <= cnt + 1;
    end
    
    always @ (posedge clk) begin
        if(!rst_n)
            led1 <= 'd0;
        else begin
            //level来自VIO
            case (level)
                0:  led1 <= cnt[26];
                1:  led1 <= cnt[25];
                2:  led1 <= cnt[24];
                3:  led1 <= cnt[23];
            endcase
        end
    end
    
    always @ (posedge clk) begin
        if(!rst_n)
            led2 <= 0;
        else if(trig_rise)      //trig上升沿翻转
            led2 <= !led2;
    end
    
    endmodule
    

    3.添加ChipScope ICON IP核

    添加一个IP核源文件,保存在chipscope文件夹下。

    添加ICON

    选择ICON IP核,以下添加VIO和ILA核是一样的操作。

    选择ICON

    添加之后进入配置界面,因为我们连接了ILA和VIO两个IP核,这里控制端口需要两个:

    配置端口

    查看例化模板:

    icon YourInstanceName (
        .CONTROL0(CONTROL0), // INOUT BUS [35:0]
        .CONTROL1(CONTROL1) // INOUT BUS [35:0]
    );
    

    4.添加ChipScope ILA IP核

    添加ILA

    选择采样深度,数值越大,占用FPGA RAM资源越多,采样时间越长。

    设置采样深度

    选择采集通道,这里选择32个通道。

    选择触发通道

    等待生成完成,查看例化模板:

    ila YourInstanceName (
        .CONTROL(CONTROL), // INOUT BUS [35:0]
        .CLK(CLK), // IN
        .TRIG0(TRIG0) // IN BUS [31:0]
    );
    

    5.添加ChipScope VIO IP核

    同样的方式添加VIO核:

    添加VIO

    选择32路输入,用于监测cnt的值,4路输出,用于控制LED。

    配置输入输出通道

    设置为异步输入32位,输出4位。

    6.将ChipScope的3个IP核添加到顶层模块

    module top(
        //Inputs
        input clk,          //50MHz
        input rst_n,
        
        //Outputs
        output reg led1,        //通过VIO来选择4种闪烁频率
        output reg led2,        //通过VIO来控制
        output led3         //通过VIO来控制
    );
    
    wire [1:0] level;       //来自VIO
    wire trig;              //来自VIO, 按键产生高脉冲信号
    wire trig_rise = (trig_reg == 2'b01);
    
    reg [1:0] trig_reg;
    reg [26:0] cnt;         //在ILA中查看数据变化
    
    always @ (posedge clk) begin
        if(!rst_n)
            trig_reg <= 'h0;
        else 
            trig_reg <= {trig_reg[0], trig};
    end
    
    always @ (posedge clk) begin
        if(!rst_n) 
            cnt <= 'd0;
        else 
            cnt <= cnt + 1;
    end
    
    always @ (posedge clk) begin
        if(!rst_n)
            led1 <= 'd0;
        else begin
            //level来自VIO
            case (level)
                0:  led1 <= cnt[26];
                1:  led1 <= cnt[25];
                2:  led1 <= cnt[24];
                3:  led1 <= cnt[23];
            endcase
        end
    end
    
    always @ (posedge clk) begin
        if(!rst_n)
            led2 <= 0;
        else if(trig_rise)      //trig上升沿翻转
            led2 <= !led2;
    end
    
    /* Xilinx ChipScope Config */
    
    wire [35:0] CONTROL0;
    wire [35:0] CONTROL1;
    wire [31:0] TRIG0;
    wire [31:0] ASYNC_IN;
    wire [3:0] ASYNC_OUT;
    
    assign ASYNC_IN[26:0] = cnt[26:0];
    
    assign level = ASYNC_OUT[1:0];
    assign trig  = ASYNC_OUT[2];
    assign led3  = ASYNC_OUT[3];
    
    assign TRIG0[26:0] = cnt[26:0];
    assign TRIG0[28:27] = level[1:0];
    assign TRIG0[29] = led1;
    assign TRIG0[30] = led2;
    assign TRIG0[31] = led3;
    
    icon icon_ut0(
        .CONTROL0(CONTROL0[35:0]),
        .CONTROL1(CONTROL1[35:0])
    );
    
    ila ila_ut0(
        .CONTROL(CONTROL0[35:0]), 
        
        .CLK(clk), 
        .TRIG0(TRIG0[31:0])
    );
    
    vio vio_ut0(
        .CONTROL(CONTROL1[35:0]),
        
        .ASYNC_IN(ASYNC_IN[31:0]),
        .ASYNC_OUT(ASYNC_OUT[3:0])
    );
    
    endmodule
    

    7.编译下载

    管脚分配,编译通过,生成bit文件,打开ChipScope,下载bit文件。

    ChipScope

    下载Bit文件

    选择bit文件

    对信号进行重新命名,设置触发信号,或者控制VIO输出状态。

    设置触发方式

    trig设置成PushButton类型,并设置为高脉冲。

    led3设置成ToggleButton类型,即按一下状态翻转一次。

    VIO配置

    8.总结

    单片机在线调试可以设置断点,让程序停下,FPGA只要时钟信号存在,就会一直运行下去,所以无法人为的设置断点,中止代码的运行。

    任何事物都不可能达到十全十美,使用管脚外接的逻辑分析仪不会占用任何的逻辑资源,可以通过逻辑分析仪解析协议的报文,缺点是不能查看内部信号;使用片内逻辑分析仪的优点是可以实时查看内部信号,设置触发条件,缺点是会占用FPGA的逻辑资源,比如RAM等。

    Xilinx新一代的集成开发工具Vivado最低支持Spartan-7系列的FPGA芯片,由于手头只有Spartan-6系列的开发板,所以无法演示在Vivado环境下的ChipScope使用,基本上都大同小异,使用方法类似,毕竟是同一家的调试工具。

    9.参考资料

    Xilinx官方文档:chipscope_pro_sw_cores_ug029.pdf

    10.源码获取

    关注公众号【电子电路开发学习】,后台回复【chipscope】获取工程源代码,基于黑金AX309-Spartan-6 XC6SLX9开发板。

    展开全文
  • ILA代表(某种)智能学习助手,是一种语音识别系统,又称语音助手,与Siri,Google Now和Cortana非常相似。 ILA是完全可定制的,您可以自己教她/他/它一些新事物,例如执行系统命令,打开网页,程序和应用程序或仅...
  • vivado ILA在线逻辑仪使用

    千次阅读 2020-07-04 16:11:56
    将图中的红色方框中的模板代码复制并粘贴到 led_twinkle.v 顶层 HDL 代码中,并将 ILA 的时钟和探针信号连接到顶层设计中,例化 ILA IP 核的代码如下: ila_0 u_ila_0 ( .clk(sys_clk), // input wire clk .probe...

    1、在线逻辑分析仪简介

    在线逻辑分析仪借用了传统逻辑分析仪的理念以及大部分的功能,并利用 FPGA 中的逻辑资源,将这些功能植入到 FPGA 的设计当中。一般地,在线逻辑分析仪的应用原理框图如下图所示:
    在这里插入图片描述
    ​ 待测设计(Design Under Test,DUT)就是用户逻辑,它和片内的在线逻辑分析仪都位于 FPGA中。在线逻辑分析仪通过一个或多个探针(Probe)来采集希望观察的信号,然后通过片内的 JTAG 硬核组件,来将捕获到的数据传送给下载器,进而上传到 Vivado IDE 以供用户查看。Vivado IDE 也能够按照上述数据路径,反向地向 FPGA 中的在线逻辑分析仪传送一些控制信息。

    ​ 在 Vivado 中,在线逻辑分析仪的功能被称为“集成逻辑分析器(Integrated Logic Analyzer,ILA)”,它以 IP 核的形式来加入到用户设计中。。Vivado 提供了三种具有不同集成层次的插入 ILA 方法,主要为以下两种:

    ​ 第一种方法是直接在 HDL 代码中例化一个 ILA IP 核,也被称为“HDL 实例化调试探针流程”,这是集成层次最高的方法。ILA IP 核可以在 IP Catalog(IP 目录)中找到,并对其进行配置,以符合所需的调试需求。这是最直接的方法,但其灵活性也较差。在调试工作完毕之后,还需要在 HDL 源代码中删除 ILA IP核,然后重新综合并实现,以生成最终的比特流。

    ​ 第二种方法是在综合后的网表中,分别标记要进行调试观察的各个信号,然后通过一个简单的“Setup Debug”向导来设置各个探针和 ILA IP 核的工作参数,然后工具会根据用户设置的参数,自动地生成各个ILA IP 核。这个方法也被称为“网表插入调试探针流程”。在此流程中,用户不需要修改 HDL 源代码,并且能够单独控制每个 ILA IP 核以及每个探针,这样就提供了很大的灵活性。用户设置的调试信息会以 Tcl XDC 调试命令的形式保存到 XDC 约束文件中,在实现阶段,Vivado 会读取这些 XDC 调试命令,并在布局布线时加入这些 ILA IP 核。在调试工作完毕之后,用户就可以在综合后的网表中删除 ILA IP 核,或者在XDC 文件中删除调试命令,然后再对设计进行实现,以生成最终的比特流。

    2、HDL 实例化调试探针流程(实验-闪烁灯)

    “HDL 实例化调试探针流程”需要在 HDL 源代码中实例化 ILA IP 核,点击“IP Catalog”按钮,搜索栏中输入“ILA”,这时 Vivado 会自动根据关键词搜索出相应的结果,我们双击“ILA(Integrated Logic Analyzer)”,如下图所示:
    在这里插入图片描述
    下来会弹出“ILA IP”核的配置页面,如下图所示:

    ​ IP 核的配置包含两个子页面,分别是“General Options”和“Probe_Ports(0…0)”, “General Options” 页面用于设置 ILA IP 核的总体设置,“Probe_Ports(0…0)”页面用于对每个探针的参数进行设置。

    ​ 在“General Options”页面中,“Number of Probes”一栏用于设置所需的探针数量,一般地,一个探针用于连接一个待测信号。“Sample Data Depth”用于设置采样深度,在每个采样时钟下,ILA 都会将捕获到的探针信号的值送入RAM 中。

    ​ 在“Probe_Ports(0…0)”页面中,用于设置每个探针的参数,一般我们只需设置探针宽度“Probe Width [1…4096]”一栏即可。
    在这里插入图片描述
    ​ 点击“Generate”即可,此时Vivado 就开始对该 ILA IP 核进行 OOC 综合了。

    ​ Vivado 的 OOC(Out-of-Context)综合,它们独立于顶层设计而单独综合,OOC 模块只会在综合顶层之前被综合一次,这样在顶层的设计迭代过程中,OOC 模块就不必跟随顶层模块,而一次次的产生相同结果的多余综合了。所以,OOC 流程减少了设计的周期,并消除了设计迭代,使您可以保存和重用综合结果。
    在这里插入图片描述
    将图中的红色方框中的模板代码复制并粘贴到 led_twinkle.v 顶层 HDL 代码中,并将 ILA 的时钟和探针信号连接到顶层设计中,例化 ILA IP 核的代码如下:

    ila_0 u_ila_0 (
    	.clk(sys_clk), // input wire clk
    
    
    	.probe0(sys_rst_n), // input wire [0:0]  probe0  
    	.probe1(led), // input wire [1:0]  probe1 
    	.probe2(cnt) // input wire [25:0]  probe2
    );
    

    保存源文件之后就可以直接综合并实现设计,最后生成比特流。至此,我们就成功地使用“HDL 实例化调试探针流程”将 ILA IP 核添加到了设计中。接下来就可以将比特流下载到 FPGA 中,并对信号进行在线观察。

    3、Hardware Manager中观察调试信号

    在这里插入图片描述
    生成比特流之后,我们打开 Hardware Manager,连接到开发板,并下载比特流。在弹出的窗口中,Vivado 会自动识别比特流文件和具有调试探针信息的.ltx 文件。

    ​ .ltx 文件存储了调试探针的信息,用来传递给 Vivado IDE,它是从我们的设计中被提取出来的。若实现后的设计中包含了ILA IP 核,则在下载比特流时,Vivado 会自动识别出.ltx 文件。

    ​ 直接点击“Program”,此时 Vivado 会自动打开 ILA 的调试窗口,如下图所示:
    在这里插入图片描述
    下面开始触发条件的设置,在这里简要介绍一个触发的概念。前面我们介绍过,ILA 会将所采集到的探针数据存放在 RAM 中,然后通过 JTAG 和下载器上传到 Vivado。那么触发就是决定 ILA 会在什么时候将 RAM 中的探针值数据上传到 Vivado,当 ILA 检测到触发条件得到满足时,就会把 RAM 中的探针值数据上载到 Vivado,然后 Vivado 将探针数据的波形显示出来。
    在这里插入图片描述
    然后我们就可以开始进行触发动作了。在波形窗口中有 4 个触发动作,如下图所示
    在这里插入图片描述
    从左至右依次是:(1)自动触发开关、(2)开始触发、(3)立即触发、(4)停止触发。

    ​ 我们这里直接点击“开始触发”按钮,而不打开“自动触发”开关。然后由于 cnt 计数器每隔 500ms就会计数到 25_000_000,所以我们几乎马上就可以看到波形窗口中出现了波形,如下图所示:
    在这里插入图片描述
    添加复位信号,设置为下降沿触发,等待复位信号
    在这里插入图片描述
    复位键按下,立即更新窗口信息
    在这里插入图片描述

    4、网表插入调试探针流程(实验-闪烁灯)

    网表插入调试探针流程需要在综合后的网表中,将要进行调试观察的各个信号标记“mark_debug”属性,然后通过“Setup Debug”向导来设置 ILA IP 核的参数,最后工具会根据参数来自动创建 ILA IP 核。

    可以在综合之后的网表中手动选择网络并点击“mark_debug”按钮;也可以在综合之前在 HDL 代码中为想要观察的 reg 或 wire 信号添加“Mark Debug”综合属性,例如:

    (* mark_debug = “true” *)reg [25:0] cnt ;
    

    (* mark_debug = “true” )” 必须紧挨在变量声明的前面。这样,在综合完成之后并打开综合后的设计时,cnt 信号就自动被标记了“Mark Debug”属性。此外,被添加了(mark_debug = “true” )属性的 reg或 wire 信号不会被工具优化掉。

    在“Debug”子窗口中的“Debug Cores”选项卡中,可以看到 Vivado已经添加了 ILA IP 核。
    在这里插入图片描述
    在“网表插入调试探针流程”中,用户设置的调试信息最终会以 Tcl XDC 调试命令的形式保存到 XDC 约束文件中。Vivado 会从 XDC 约束文件中读取这些 XDC 调试命令,并在布局布线时加入这些 ILA IP 核。
    在这里插入图片描述
    至此,我们就成功地使用“网表插入调试探针流程”将 ILA IP 核添加到了设计中。接下来就可以实现设计并生成比特流,最后将比特流下载到 FPGA 中,以对信号进行在线观察。
    操作方法和“HDL 实例化调试探针”的观察波形信号一样,没有任何区别.

    展开全文
  • ILA是VIVADO下的一个DEBUG- IP,类似于片上逻辑分析仪,通过在RTL设计中嵌入ILA核,可以抓取信号的实时波形,帮助我们定位问题。write_hw_ila_data -csv_file wave [current_hw_ila_data] 保存的.ila格式的包,解压...

    ILA是VIVADO下的一个DEBUG- IP,类似于片上逻辑分析仪,通过在RTL设计中嵌入ILA核,可以抓取信号的实时波形,帮助我们定位问题。

    write_hw_ila_data -csv_file wave [current_hw_ila_data] 保存的.ila格式的包,解压后,数据在.csv文件中

    %% Open the Text File for Reading

    InputFile = 'waveform.csv';

    fid = fopen(InputFile,'r');  % Open text file

    C = textscan(fid,'%s','delimiter','\n','headerlines',1);

    fclose(fid);

    disp(C);       %{131072x1 cell}

    len = length(C{1});

    %% Fetch Data from ILA File

    for k = 1:1:len

    %     k

    lenofcell = length(C{1}{k});

    %     disp(lenofcell);

    %     disp(data(k));

    %     disp(C{1}{k});

    %     disp(C{1}{k}(1,lenofcell-8:lenofcell-3));

    %     data(k) = hex2dec(C{1}{k}(1,lenofcell-8:lenofcell-3));

    %     disp(data(k));

    %     disp(dec2hex(data(k),6));

    % Bit and operation to take the lowest bit of data

    %     comp1(k) = bitand(data(k),a);

    % bitshift(A,k) returns A shifted to the left by k bits,

    % equivalent to multiplying by 2k.

    %     comp2(k) = bitand(bitshift(data(k),-1),a);

    %     i = 1+floor(k/2);

    i = k;

    %     disp(C{1}{k}(1,lenofcell-62));

    %     class(C{1}{k}(1,lenofcell-64))

    comp1(i) = str2num(C{1}{k}(1,lenofcell-2));     % sdm_out1

    %     disp(comp1(i));

    %     disp(C{1}{k}(1,lenofcell-60));

    comp2(i) = str2num(C{1}{k}(1,lenofcell));     % sdm_out2

    %     disp(comp2(i));

    end;

    %% Output Data to File

    OutputFile = strcat('SDM_OUT',InputFile(length(InputFile)-6:length(InputFile)-4));

    fid = fopen(OutputFile,'wt');    %写入文件路径

    m = N;

    n = 2;

    for i=1:1:m

    for j=1:1:n

    if j==n

    fprintf(fid,'%g\n',comp2(i));

    else

    fprintf(fid,'%g\t',comp1(i));

    end

    end

    end

    fclose(fid);

    % disp('OutputtoFile is over!');

    展开全文
  • ILA(集成逻辑分析器)的使用

    千次阅读 2020-08-06 14:40:37
    1.ILA介绍  ILA(Integrated Logic Analyzer)集成逻辑分析器:即Vivado的在线逻辑分析仪,其借用了传统逻辑分析仪的理念以及大部分的功能,并利用FPGA 中的逻辑资源,将这些功能植入到FPGA 的设计当中。ILA是用IP...
  • endmodule 二、加ILA 然后打开这个 ila 里面的 template 例化的例子: 直接拷贝下来到 Verilog 源码下面去,并将信号对应上:如一中最后一小段。 本来应该搞定了,可由于 cnt_delay1 ; //这时一个错误,cnt_delay...
  • Vivado ILA观察信号和调试过程
  • 调用完IP核后,ILA界面怎么打开,我再vivado 2019.1上调用完ILA 的IP核,但是ILA的显示界面不知道怎么打开
  • 本例使用PLL产生多个时钟,通过ila观察所产生的各时钟频率是否符合设计; 仿真是理想化的模型,将程序加载到IC中通过ila监测实际状况会更贴切实际应用。 这里使用时钟信号完成ila监测试验,除了“懒”,还有常犯的...
  • 一种debug的方式就是用FPGA工具提供的ILA模块(xilixn在ISE中叫:chipscope),来实时抓取FPGA内部数字信号的波形,分析逻辑错误的原因,帮助debug。 ILA的正确、高效使用,能加速debug的进程。 2. ILA工作原理 根据...
  • 而且加入到ila中的数据会占用RAM资源,影响布局布线的结果。尤其是在时序紧张的情况下,ila占的资源越多,布线的难度就会越大。当时序不收敛时,就可能会导致一个问题,我们从ila中看到的信号可能不是真实的。下面说...
  • Vivado ILA IP的使用

    2021-06-03 14:46:31
    配置ila核,主要配置4个地方:1.组件的名字,2. 需要抓取的信号的个数,3. 抓取的信号的深度(采样深度就是采样点数)4.所抓取的信号的宽度 3. 例化ip核 ILA核的clk信号需要连接到需要观察信号的相应时钟域,在一...
  • 关于ISE ILA和VIO的使用

    千次阅读 2021-03-17 10:55:01
    最近需要在ISE平台上验证GTX高速接口的数据传输,在ISE平台上首次用到了ILA逻辑分析仪,故将使用过程中的问题和大概流程整理出来。 ISE平台ILA和VIO的使用 软件:ISE 14.7 芯片: XILINX V7 690T 1176 语言:Verilog ...
  • 使用Vivado保存ILA数据并读取

    千次阅读 2020-12-21 22:42:48
    1.1 使用Vivado保存ILA数据并读取 1.1.1 本节目录 1)本节目录; 2)本节引言; 3)FPGA简介; 4)使用Vivado保存ILA数据并读取; 5)结束语。 1.1.2 本节引言 “不积跬步,无以至千里;不积小流,无以成...
  • FPGA Vivado 调试提示ILA时钟有问题

    千次阅读 2021-05-17 11:39:49
    首先排除ILA没有接时钟的问题,因为ILA采用的是free running的晶振时钟 然后从网上百度查看,现实ILA可能深度设置不对, 可以通过以下Tcl命令查询,修改ILA的深度 [Xicom 50-38] xicom: Unknown deviceType: 1 ...
  • xilinx ila使用问题记录

    2021-09-08 14:25:51
    ila的实际使用过程中,出现了一个问题就是添加了这个ila后,将数据改变了,查看ila的ip生成界面发现input pipe stages为0,而输入的信号有些是非寄存器的信号,所以对于这种情况将input pipe stages设置为1比较好 ...
  • Vivado使用ILA调试报错解决

    千次阅读 2021-02-03 23:53:44
    1.1 Vivado使用ILA调试报错解决 1.1.1 本节目录 1)本节目录; 2)本节引言; 3)FPGA简介; 4)Vivado使用ILA调试报错解决; 5)结束语。 1.1.2 本节引言 “不积跬步,无以至千里;不积小流,无以成江海。...
  • 我在前面有2篇Vivado 下的集成逻辑分析仪ILA: Vivado下的集成逻辑分析仪ILA 入门 Vivado下集成逻辑分析仪ILA入门续 但没有介绍有sdk 的情况下怎么用,当时也没用过,前几天我觉得有这需要,就找了一篇文章学习,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,484
精华内容 993
关键字:

ila

友情链接: Fuzzy-simulation-BLDCM.rar