我在设计单端口rom到斯巴达6板时遇到了一些麻烦。我使用提供的内核生成器来创建块内存,并选择32位宽、256深的单端口rom和一个从0到255的coe文件。我将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文件的副本添加到我的工作目录。我将在将来使用数组。
发布于 2013-04-18 05:20:08
由于您要将Xilinx生成的核心添加到ISE中的设计中,因此您需要通过项目菜单中的"Add Source“添加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"
);现在,你不用把省略号(...)在初始化列表中,只需放入位宽与ROM_BITWIDTH匹配常量行。NUMBER_OF_ROWS是你在只读存储器中需要的地址位置的数量。在本例中,ROM_BITWIDTH必须设置为32,因为我在初始化列表中使用了32位十六进制常量。作为一个信号,它实际上是可以修改的,所以如果你需要它是常量,只需使用“常量”而不是信号。
发布于 2013-04-14 04:16:38
最简单的方法是完全忘记供应商工具,只需声明一个常量数组!
如果这是在一个独立于设计其余部分的包中,几行printf或一个简单的脚本就可以在内容周围生成VHDL样板,这些样板来自您的汇编程序或任何创建实际数据的工具
发布于 2013-04-14 15:07:54
我猜问题就像消息所说的那样,是一个拼写错误。要获得正确的组件声明/实例化,请在ISE的设计窗口中选择rom.xco。然后从工艺窗口中选择“查看vhdl实例化模板”。使用其中描述的组件声明和实例化。
https://stackoverflow.com/questions/15991819
复制相似问题