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在不停的计数。 |