FPGA series # 关于ChipScope的ICON核、ILA核和VIO核

刚入门接触vivado其实是陌生的,陌生之处在于不了解历史。即使是日益更新的技术也是从最初那个0和1一点点垒起来的,每当看到类似于这就是可以这么做,你不用去知道它底层怎么跑的,只要知道怎么使用就行这种话,就想到使用工具会越来越强大,虽然给我们省了很多事,但如果能知道现在的一键里包含以前那么多的过程,也是很有意思的事啊。
说起来也是昨儿调试的结果还可观,今早来了再跑一遍的时候萌生了个好奇,翻书查阅了一下chipscope(应该就是现在vivado里的hardware manager)。正题
-------------------------------------------------分割线-------------------------------------------
传说中,chipscope软件由chipscope核生成器、chipscope核插入器、chipscope分析仪以及chipscope Tcl脚本接口四个组件组成,支持普通FPGA设计以及基于FPGA的嵌入式、SOC系统,其具体功能如下:(懒得打字,上图)
FPGA series # 关于ChipScope的ICON核、ILA核和VIO核_第1张图片
chipscope开发流程,首先,要生成系统控制模块的ICON核;然后,生成各类逻辑分析核(ILA核、VIO核等),设定触发以及数据线宽度和采集长度,并将其和ICON核关联起来;接着,完成设计以及相关核的综合,将设计中期望观察的信号和分析核的触发以及数据信号连接起来;紧接着,完成整体系统的实现并下载到芯片中;最后打开chipscope Analyzer设定触发条件,观察波形。如图:
FPGA series # 关于ChipScope的ICON核、ILA核和VIO核_第2张图片
介绍一下,三个核:

ICON核
如前所述,所有的核都需要通过JTAG电缆完成计算机和芯片的通信。ICON核具备和JTAG边界扫描端口通信的能力。一个ICON核可以同时最多连接15个ILA或者VIO核(现在vivado里具体是有没有这个数目限制并不清楚,不知道去哪里查。。。但这样也够用)。所有的核都需要通过JTAG电缆完成计算机和芯片的通信,在ChipScope Pro中,只有ICON核具备和JTAG边界扫描端口通信的能力,因此ICON核是ChipScope应用必不可少的关键核。
通过对ICON的调用,可以很好的利用JTAG来连接ILA和VIO。但是,在Vivdao中,这个IP被去掉了,取而代之的是Vivado自动添加的dbg_hub。这样就不能很好地控制JTAG的BSCAN,这可以说是Vivado的一个很大的损失。不过,既然dbg_hub是自动添加的。那么理论上,对ILA和VIO端口的识别也是自动的。(这段来自于此博客)
ILA核
ILA核提供触发和跟踪功能,根据用户设置的触发条件捕获数据,然后在ICON的控制下,通过边界扫描口将数据上传到PC,最后在analyzer中显示出信号波形。由于ILA核和被监控设计是同步的,因此设计中的所有时钟约束会被添加到相应的ILA核中。ILA包括下面三个主要组件:

  • 输入、输出触发逻辑
    输入触发逻辑用于检测各种细微触发条件;输出触发逻辑用于触发外部测试设备以及其他逻辑

  • 数据捕获逻辑
    数据捕获逻辑用于捕获数据,并将所捕获的数据存储到芯片的块RAM中。

  • 控制和状态逻辑
    控制和状态逻辑用于管理ILA的各种操作。
    vivaodo的block design里面呈现的状态:(这里是由于要看的模块端口处有总线型也有普通端口,所以选择mix)
    FPGA series # 关于ChipScope的ICON核、ILA核和VIO核_第3张图片
    FPGA series # 关于ChipScope的ICON核、ILA核和VIO核_第4张图片
    VIO核
    虚拟输入、输出核用于实时监控和驱动FPGA内部的信号,可以观测FPGA设计中任意信号的输出结果,以及添加虚拟输入,如DIP开关、按钮等,且不占用BRAM。VIO核面向模块操作,支持下面四类信号:

  • 异步输入信号
    对于异步输入信号,通过JTAG电缆的时钟信号(TCK)采样,周期地读入PC,再将结果在chipscope pro分析仪界面上显示。

  • 同步输入信号
    对于同步输入信号则利用设计时钟采样,然后周期地读入PC,在分析仪界面上显示。

  • 异步输出信号
    异步输出信号由用户在chipscope pro分析仪中定义,再将其送到周围的逻辑中,且其每个输出信号逻辑“1”、“0”的门限可以由用户自己定义。

  • 同步输出信号
    同步输出信号由用户定义,同步于设计时钟,其“1”、“0”的逻辑门限亦可独立定义。
    FPGA series # 关于ChipScope的ICON核、ILA核和VIO核_第5张图片
    这里由于我只需要接收top_monitor的输出,所以输入探针为0,输出探针为1;FPGA series # 关于ChipScope的ICON核、ILA核和VIO核_第6张图片
    后面的probe width取决于top_monitor的位宽,初始值默认,不去改变。FPGA series # 关于ChipScope的ICON核、ILA核和VIO核_第7张图片

你可能感兴趣的:(FPGA,vivado)