1

我不确定这是否是发布此内容的正确堆栈交换网站,但如果不是,请将其移至适当的网站。

在为 spartan 3 starter kit 编写约束文件时,我遇到了一个小问题。

我已经阅读了赛灵思(制造商)提供的文档,并且我已经在网上搜索了几个星期,但没有任何运气。

我要做的是将我的网表接口链接到板上的 3 个 40 针头中的任何一个。(见下图)

在此处输入图像描述

通常它非常简单,如果说我想连接板上的按钮或 LED,我只需读取板上的连接名称,例如其中一个按钮是M13,然后在 UCF 文件中写入如下内容:

NET "BTN0"       LOC = "M13";

正如您在图像上看到的,标题在板上被命名为 A1、A2 和 B1,但奇怪的是,以下都不起作用:

NET "TestOutputLine"       LOC = "A1(0)"; -- The (0) is to reference a single line on an array
NET "TestOutputBus"       LOC = "A1"; -- The bus is of equal dimension of A1 (which is 40)

我得到的错误意味着目标(由 LOC 指定)不存在或分配无效。

我希望你对我有一些想法。提前致谢

编辑: 这是 ISE 的输出:

ConstraintSystem:59 - Constraint <NET "TestOutputBus" LOC = "A1";>
[circuit.ucf(12)]: NET "TestOutputBus" not found.  Please verify that:
   1. The specified design element actually exists in the original design.

但我很确定 TestOutputBus 存在,事实上我的设计中没有其他内容,并且正在使用正确的顶级单元。

在此处输入图像描述

EDIT2: 我更新了我的 UCF 文件,现在是这样的:

NET "TestOutputBus(0)" LOC = "A1(0)";
NET "TestOutputBus(1)" LOC = "A1(1)";

但是我现在在映射中遇到了一个不同的错误:

MapLib:30 - LOC constraint A1:0 on TestOutputBus<0> is invalid: No such
   site on the device. To bypass this error set the environment variable
   'XIL_MAP_LOCWARN'.
MapLib:30 - LOC constraint A1:1 on TestOutputBus<1> is invalid: No such
   site on the device. To bypass this error set the environment variable
   'XIL_MAP_LOCWARN'.

解决方案 :

为了将引脚 5 和 6 分别映射到 TestOutputBus(0) 和 TestOutputBus(1) 我必须使用的是:

NET "TestOutputBus(0)" LOC = "N7"; -- A1 pin 5
NET "TestOutputBus(1)" LOC = "L5"; -- A1 pin 6

请注意,引脚 0 不可映射,这就是我使用引脚 5 和 6 的原因,以下表格显示了所有接头及其 LOC 的可映射引脚。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

3 回答 3

2

事实证明,FPGA 的每个接头的每个可用引脚都有一个地址。

数据表(http://forums.xilinx.com/xlnx/attachments/xlnx/Spartan/3411/1/S3BOARD_RM.pdf)很有帮助,尤其是第 49 - 51 页

于 2012-01-03T17:07:13.530 回答
2

我从我之前的评论中复制了这个到你的问题,所以这将是一个实际的答案,而不仅仅是一个评论。

对于顶级模块上的每个端口,您的 UCF 文件中都应该有 LOC 约束。因此,如果您有一个 40 位宽的总线作为顶层的输入或输出,那么您的 UCF 文件中还应该有 40 个单独的 LOC 约束,以确保顶层原理图中的逻辑总线实际映射到FPGA 上的正确引脚。如果您只使用两个引脚,那么您可以将总线声明为 2 位宽并使用 2 个 LOC 约束。FPGA 会将所有未使用的引脚视为输入并忽略它们。

于 2012-01-03T20:41:45.000 回答
0

当我不小心选择我的一个模块作为顶级模块时,我曾经得到原始的 ConstraintSystem:59 net xyz not found 错误。在错误模块的端口声明中找不到 UCF 中声明的引脚。

当我在 UCF 中声明了一些引脚但在顶级模块的端口声明中将其省略时,我也会收到此错误。

于 2013-07-14T15:56:11.177 回答