打印

使用ChipScope进行调试

[复制链接]
1554|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星之火红|  楼主 | 2012-10-20 19:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ilinx的ChipScope工具就相当于Altera的SignalTap II,能够捕捉FPGA内部的信号,方便了调试过程。下面就以一个简单的实例描述一下使用ChipScope的过程(ISE版本为11.1)。

Step1:打开一个以后的ISE工程,进行管脚约束,并进行综合。

Step2:添加ChipScope Definition and Connection File



添加完成后,会在工程中多出一个.cdc文件。



Step3:双击*.cdc文件,弹出ChipScope Pro Core Inserter对话框。首先是指定输入网表和输出网表的路径,以及所选的器件族。由于ChipScope Pro Core Inserter是从ISE调用的,所以这些选项都已经设置好了,不用修改,直接点NEXT。





不用修改,继续点击NEXT

Step4:进行配置ILA核(Integrated Logic Analyzer Pro core)界面。ILA核用来设置触发条件和捕获数据,并提供将ChipScope核信号和设计中的网表信号连接的功能。

首先是Trigger Parameters界面。

(1)、Number of Input Trigger Ports:用来设置需要观察的信号的数目,例如这里我们需要观察两个信号,所以这里设置为2。一个ILA最多可以观察16个信号。

(2)、Trigger Width:设置每个要观察信号的位宽。第一信号是一个计数器30bit计数器,所以第一个设置为30,第二个信号是一个8bit信号,所以这里设置为8

(3)、Match Type:设置每一观测信号的触发条件。ChipScope可以对每一个要观察的信号设置触发条件,最后再采集数据时采用哪个触发条件可以再指定,在这里需要对每一个信号都指定一个触发条件。

主要设置这三个选型,其他保持默认,设置完成后点击NEXT



现在进入Capture Parameter界面。

(1)、设置采样深度

(2)、设置采用时钟边沿

(3)、Data Same As Trigger:这一个选项选中,可以节省逻辑资源和布局布线的使用。前提是数据与触发信号相同。这里选中这个选型。

点击NEXT进行NetConnections。



现在设置Net Connections选项,将ChipScope核的信号与要观察的信号进行连接。



这指定连接关系之前Net Connections的UNIT现实为红色,当完成指定后,会变成黑色。直接点击Modify Connections出现下面的界面。

先指定采样时钟,左侧信号是综合后FPGA内部的信号,其中黑色的信号时可以用来指定连接关系的,而灰色的信号不能用来指定连接关系。这里采样时钟选择clk_BUFGP信号。指定过程是先左键点击clk_BUFGP然后点击右下角的Make Connections



然后指定触发和数据信号(Trigger/Data Signal)。先指定TP0。TP0是一个30bit的端口,这里用来观察内部的计数器counter



在制定TP1端口,TP1端口是一个8bit的端口,用来观察LED信号。



设置完成后,点击OK。回到下面的界面:



可以看到闲杂UNIT已经由红色变为了黑色,说明所有的信号都已经指定完毕,现在点击Return to Project Navigator,退出ChipScope Pro Core Inserter界面。

Step5:在Processes对话框,右键点击Analyze Design Using Chipscope,选择Run,完成布局布线,生成下载文件,并启动ChipScope Pro Analyzer



Step6:完成上一步后会自动启动ChipScope Pro Analyzer。这时将准备好开发板和下载器,并打开电源。点击下图左上角的小图标来初始化边界扫描链。



完成扫描后,会识别出链上的所有Xilinx主流CPLD、FPGA、PROM以及System ACE芯片。其中红色框图的就是我们要进行下载配置文件的FPGA器件。点击OK。



Step7:点击DeviceàDEV:4 MyDevice4 (XC5VLX50T)àConfigure



完成上面操作后,弹出下面的窗口:



选择下载文件,即.bit文件,由于ChipScope使用JTAG来观察芯片内部逻辑,所以需要将.bit文件下载到FPGA中。完成下载后,命令窗口会出现下面语句:



Step8:选择UNIT:0 MyILA0(ILA),右击选择Open Trigger Setup。



打开以下窗口:

(1)、Match:设置每个信号采集时的触发条件,在这里对于第一信号Port0,为任意条件,对于Port1为等于8'b0000_0001时触发采集。

(2)、Trig:设置触发条件,即满足Match设定的哪一个条件时,触发采集,M0表示满足Port0的条件的触发采集,M1表示满足Port1的条件时触发采集。也可以设置为同时满足两个条件时触发采集,在这里我们选择M1作为触发条件。

(3)、Capture



Step9:选择UNIT:0 MyILA0(ILA),右击选择Open Waveform,打开Waveform窗口



Waveform窗口如下图所示:



打开Waveform时,信号是散的,并不是按照总线的形式表示的,可以将信号组成总线。在左侧的Signals窗口,选择要组成总线的信号例如DataPort[30:37],然后右击选择Move to BusàNew Bus,并命名为led。同时将其余30bit也组成总线形式,命名为counter。



组合后的信号如下图所示:



下面将信号添加到Waveform窗口,选择要添加的信号,右击选择Add to View à Waveform。



Step10:点击下图红色方框的三角按钮,开始采集数据



观察Waveform窗口,可以发现当led == 8'b0000_0001时,捕捉了一次数据。这时可以看出counter在不停的计数。

相关帖子

沙发
GoldSunMonkey| | 2012-10-20 22:24 | 只看该作者
谢谢分享啊

使用特权

评论回复
板凳
GoldSunMonkey| | 2012-10-21 21:13 | 只看该作者
:lol

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

1782

帖子

22

粉丝