11.x XST  – 对于Virtex-6和Spartan-6器件,XST对std_logic类型的值“ – ”进行了不同的解释-Altera-Intel社区-FPGA CPLD-ChipDebug

11.x XST – 对于Virtex-6和Spartan-6器件,XST对std_logic类型的值“ – ”进行了不同的解释

问题描述

Virtex-6和Spartan-6器件的XST解释std_logic类型的’ – ‘值与我对旧器件的目标不同。为什么?

解决/修复方法

旧器件的XST将std_logic类型的“ – ”值解释为“不关心”值。在以下示例中,XST将sel =“1-”中的“ – ”解释为“不关心”:

文件:ex_0011.vhd

编译库:工作

库;

使用ieee.std_logic_1164.all;

实体ex_0011是

port(sel:in std_logic_vector(1 downto 0);

res:out std_logic

);

结束ex_0006;

ex_0006的架构bhv是

开始

当sel =“1-”时,res <=’1’,否则为’0′;

结束;

因此,XST Standard生成以下网表:

在11.2中,XST为Virtex-6和Spartan-6系列引入了新的VHDL / Verilog解析器。有关此更改的更多信息,请参阅(Xilinx答复32927)

Virtex-6和Spartan-6系列的XST不将’ – ‘解释为“不关心”值,因此,sel =“1-”表达式被评估为False,并且XST生成以下网表。这符合VHDL LRM。

您可以使用numeric_std包中的std_match函数将“ – ”值解释为sel =“1-”表达式中的“不关心”。

文件:ex_0011.vhd

编译库:工作

库;

使用ieee.std_logic_1164.all;

使用ieee.numeric_std.all;

实体ex_0011是

port(sel:in std_logic_vector(1 downto 0);

res:out std_logic

);

结束ex_0006;

ex_0006的架构bhv是

开始

当std_match(sel,“1-”)时,res <=’1’,否则为’0′;

结束;

在这种情况下,实现看起来像旧器件的解析器实现。

请登录后发表评论

    没有回复内容