问题描述
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′;
结束;
在这种情况下,实现看起来像旧器件的解析器实现。
没有回复内容