我对这段代码有疑问,“s”没有出现在“Floorplan I / O引脚”中,因为它从未使用过为什么?我怎么能解决这个问题?
entity tempModule is
port (s : in std_logic;
ss : out std_logic);
end tempModule;
architecture tempModule_Behavioral of tempModule is
begin
process(s)
begin
if (s = '1') then
ss <= '1';
end if;
end process;
end tempModule_Behavioral;
答案 0 :(得分:2)
你确定你的UCF中有pin和ss吗?
你可以尝试的一件事就是:
ss <= s;
这将确保它不会被优化掉。
答案 1 :(得分:2)
VHDL设计描述了一个在输出上驱动'U'
(未初始化)的模块
从加电开始ss
,直到输入s
为'1'
,然后输出ss
为'1'
从那以后。
由于'U'
开头的ss
(未初始化)值输出可以是
通过仿真工具实现为任何值,它可以实现为
'1'
,其中输出ss
只是微不足道'1'
,输入s
是
从而没用过。
所以听起来像合成工具的行为是可以预期的,但也许 模块行为将被修改,因为模块似乎没有 任何有用的东西。
答案 2 :(得分:2)
您正在实现COMBINATIONAL电路,因此必须描述COMPLETE真值表。
但是,您只为s ='1'指定了ss,因此编译器理解只是始终保持输出高电平是可以的,在这种情况下实际上不需要s。
要为s的所有可能值指定ss,请尝试使用“else”结束if语句,如下所示:
if ...;
elsif ...;
else ...;