chipscope例子

更新时间:2024-04-18 21:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

在ISE 设计流程中使用ChipScope Pro 内核的实例-修正版

这一节介绍一个在ISE设计中使用ChipScope Pro Core Inserter和ChipScope Pro Analyzer的例子。

1. 在ISE中建立一个工程count4,选择相应的器件,添加代码count4.v,count4.v是一个简单的4位记数器,其代码如下:

module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out;

always @(posedge clk) begin

if (reset) out<=0; else out<=out+1; end

endmodule

图5.1 新建一个工程

图5.2 选择器件

图5.3 添加代码到工程中

图5.4 工程概况

2. 设置管脚约束

图5.5 添加管脚约束

3. 综合

注意:综合的时候要保留设计层次,XST缺省设置是将设计打平以取得好的综合效果, Synplifcity缺省设置是保留设计层次。本例是用XST综合的所以需要修改综合设置

图5.6 设置 keep hierarchy

4. Translate

注意:在ISE中做Translate的时候需要设置Preserve Hierarchy on Sub module. 缺省情况下为不设置.

图5.7 设置 Preserve Hierarchy on Sub module

图5.8 插入Core 前的ISE 工程窗口

生成网表

5. 通过ChipScope Pro Core Inserter插入内核,具体步骤和设置详见第3部分

//////////////////////////////////////////////////////////////////////

ChipScope Pro Core Inserter的使用

上面介绍的方法是使用ChipScope Pro Core Generator 产生内核,然后在设计中作为元件调用,然而,我们也可以使用ChipScope Pro Core Inserter 直接将内核植入EDIF 或者XST 网表。内核插入需要EDIF或者XST 网表,所以必须在插入之前进行设计综合。EDIF 网表的扩展名为.edf,XST网表的扩展名是.ngc。

3.1 ChipScope Pro Core Generator 参数设置

本节通过一个实例来做介绍,这里假定已有的设计已经综合为XST 网表,文件名是count4.ngc。首先指定输入输出文件和选择器件类别,如图3.1。

图3.1指定内核插入文件

输入设计网表(EDIF 或者XST)文件是综合以后的设计,这个文件指定以后,其他的栏目会相应自动填好。该设计中使用Virtex2器件,单击【Next】进入下一步。 设置ICON 参数

图3.2显示了ICON参数设置。如果选中了【Disable JTAG Clock BUFG Insertion】,设计工具在对JTAG时钟信号布线时就使用普通的布线资源,而不是全局时钟的布线资源。这里我们不选择此项,即按全局时钟资源布线。然后单击【Next】进入下一步。

图3.2 设置ICON 参数

设定ILA 选项

首先进入的是触发参数设置窗口,如图3.3。可以设置触发端口的数量,每个触发端口的触发宽度,匹配类型和匹配单元的数量。匹配类型共有六种,表1.1已经介绍。本例中选择一个触发端口,触发宽度为5,匹配类型为基本类型,匹配单元为一个。设置完毕后,点击【Next】或直接点击【CaptureParameters】选项卡进入捕捉参数设置。

图3.3 设定ILA 的触发参数

在如图3.4 所示的捕捉参数的设置面板中,可以设置数据深度、数据类型等参数。数据深度决定了ILA 内核所需要的块RAM单元的数量。这里选择数据端口与触发端口相同,并在时钟的上升沿采样。在【Core Utilization】下显示出当前所需块RAM的数量。设置完毕点击【Next】或点击选项卡的【NetConnections】进入网络连接设置。

图3.4 设定ILA 的捕捉参数

图3.5为用来设置网络连接的面板。单击CLOCK PORT 和TRIGGER PORTS 后面的加号(+)将出现当前网络的连接情况,显示为红色表示网络尚未连接。

图3.5 设定网络连接

下面进行网络的连接。选中CLOCK PORT下面的CH0,单击【Modify Connections】,则将弹出网络选择对话框如图3.6。

图3.6 选择时钟网络

设计的层次在左上方的面板中选择,相对于所选的层次的可选网络列在左下方的面板中,能够与这些网络相连的ILA 输入列在右边的面板中。

在所有网络名称、网络驱动资源的实例名、网络驱动资源组成类型和基本组成类型中很容易找到相应层次的网络名,网络通配符(*,?)也可用在查找中,作为关键词、网络名或者部分网络名等:

“?”可以替代一个字符 “*”可以替代多个字符

在下拉列表中选择网络名目录,在样式栏键入“clk”,包括通配符,然后单击Filter 将会出现包括关键词的网络名。在clock 网络中,选择在全局缓冲器(BUFGP)后的网络名clk_bufgp,要将clk_bufgp 网络指定为ILA 内核的输入时钟,必须选择【Net Selections】面板中的【CLOCK】选项卡并且选择CH:0,然后单击面板右下方的【Make Connections】 按钮。单击面板底部的【OK】按钮,完成时钟的连接。

重复以上过程选择out_[4..0]和reset作为触发网络,因为前面选择数据端口与触发端口相同,因此选项卡中只有【Trigger/Data】的选项。可以同时选择一组总线网络和ILA 内核通道,然后单击【MakeConnections】按钮,以使这些总线的连接一次完成,如图3.7 所示。

图3.7 设置触发/数据网络

完成网络的连接后,将出现如图3.8 所示的窗口,显示了连接情况。

图3.8 完成网络连接

完成以后,单击【Insert】。这时,将会出现一个Proceed with Core Insertion?对话框,单击【Yes】完成内核的插入。插入过程中,在图3.8的信息窗口中会显示内核插入程序的运行过程,运行完成以后会显示“Core Insertion Complete”。如果要添加另一个内核,选择Edit—>New ILA Unit。左边的文件树中就会出现另一个单元(U1:ILA),各种选项与Unit0类似。使用这种方法可以设置最多15个内核。

这样,就在指定目录中产生了ICON、ILA和顶层设计*.ngo文件。需要确定下面部分描述的运行过程中使用的就是这些*.ngo文件,否则将会产生运行错误,或者在运行ChipScope Analyzer时出现错误。

先重新Translate之后才会产生*.ngd文件。

///////////////////////////////////////////////////////////////////////////////

6. 重新Translate,然后完成布局布线和生成BIT文件

注意1:需选中gengerate programming file然后点右键进入readback options勾选create readback data files和create mask files,否则在烧写的时候会报错,提示找不到.msk文件。

注意:不要选择Rerun All,这样将会重新综合并进行编译,刚才进行的内核插入就被取消了。

图5.9 设置 readback options

注意2:把FPGA Start-Up Clock设为JTAG Clock

图5.10 设置 FPGA Start-Up Clock

图5.11 插入Core 并且实现后的ISE 工程窗口

7 双击analyze design using chipscope 启动chipscope

点击常用工具栏里的初始化按钮,这时项目浏览器会列出边界扫描链上的器件。

图5.12 初始化边界扫描链

选中Decice/Config菜单选择要下载的bit文件进行器件的配置

图5.13 下载的bit文件配置器件

设置触发参数为M0==01001,点开始按钮后当触发条件满足时捕获的数据就会在波形观察窗中显示出来,如下图:

图5.14 触发参数为M0==01001时的波形图

修改触发参数为M0==01111,重新进行捕获得到下图:

图5.15 触发参数为M0==01111时的波形图

若修改触发参数M0==11001重新进行捕获,因为Trigger[4]和reset信号相连,而在开发板已经用跳线帽使reset信号始终为0,所以触发条件永远都不满足,就没有捕获数据在波形窗口中显示。

图5.16 触发参数为M0==11001时的波形图

我们也可以通过多个触发单元来灵活设置触发条件。具体设置请参考第4部分 ChipScope Pro Analyzer 的使用

同时可以将多个【Dataport】列为总线的方式。先选中所要列为总线的信号,右击选择Add bus即可,同时注意总线高低位顺序

本文来源:https://www.bwwdw.com/article/65dp.html

Top