使用Xilinx ISE Design Suite在Spartan 6上生成单端口ROM

时间:2013-04-13 19:14:05

标签: vhdl fpga xilinx spartan

我在设计斯巴达6板上的单个端口时遇到了一些麻烦。我使用提供的核心生成器来创建块内存并选择32位宽度和256深度的单端口rom,其中coe文件的数量从0到255.我将rom作为组件放入我的vhdl并将XilinxCoreLib添加为图书馆。当我尝试生成编程文件时,我得到翻译错误:

logical block 'rom1' with type 'rom' could not be
resolved. A pin name misspelling can cause this, a missing edif or ngc file,
case mismatch between the block name and the edif or ngc file name, or the
misspelling of a type name. Symbol 'rom' is not supported in target
'spartan6'.

如果有帮助,我现在正在使用Xilinx ISE 13.1。我觉得这应该很容易,但是我还没找到怎么做。

编辑:谢谢大家,是一个组合的东西。错误的速度等级,并没有将ngc文件的副本添加到我的工作目录。我将来会使用数组。

4 个答案:

答案 0 :(得分:4)

最简单的方法是完全忘记供应商工具,只需声明一个常量数组!

如果这是一个独立于设计其余部分的包,那么几行printf或一个简单的脚本就可以围绕内容生成VHDL样板,这些样板来自汇编程序或任何工具创建实际数据

答案 1 :(得分:1)

我想问题是,正如消息所说,拼写错误。要获得正确的组件声明/实例化,请在ISE的设计窗口中选择您的rom.xco。然后从流程窗口中选择“view vhdl instantiation template”。使用其中描述的组件声明和实例化。

答案 2 :(得分:1)

有许多事情可能会导致这个问题,一个是你正在使用为另一个FPGA系列生成并在Spartan6中使用它的blocck。另一个是你可能使用旧版本的工具生成了ROM,从那时起ROM的包装器就发生了变化。 您可以生成像Brian建议的那样的anrray,忘记工具特定的ROM类型,或者在您的curernt项目设置下重新生成IP,看看它是如何进行的。

答案 3 :(得分:1)

由于您要在ISE中为您的设计添加Xilinx生成的内核,您需要通过“项目”菜单中的“添加源”添加VHD文件和NGC文件。

更简单,取决于你的ROM需要多大以及进入它的数据,甚至不会使用Xilinx内核,而是使用纯VHDL在VHDL中声明一个常量数组和初始化值文件。这是一个例子:

type array_ROM is array (0 to NUMBER_OF_ROWS-1) of std_logic_vector (ROM_BITWIDTH-1 downto 0);

signal my_ROM : array_ROM
    :=
        (
            x"12345678",
            x"ABCDEF01",
            ...
            x"01010101"
        );

现在,你没有将elipsis(...)放在那个初始化列表中,只是放置一些位宽与ROM_BITWIDTH相匹配的常量。 NUMBER_OF_ROWS是ROM中所需的地址位置数。在这个例子中,ROM_BITWIDTH必须设置为32,因为我在初始化列表中使用了32位十六进制常量。作为一个信号,它实际上是可修改的,所以如果你需要它是恒定的,只需使用“常数”而不是信号。