1

我有一段可以编译的 VHDL 代码,但是当我尝试合成它时我卡住了,这意味着合成永远不会结束,我在控制台中有:

分析图书馆工作中的实体解释器(架构)。

我试图理解为什么,但我不能。我所知道的是,如果我评论这条线,CPT_PAN <= CPT_PAN - 1;那么我突然之间就可以综合了。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Interpretor is
    Port (SCAN_CODE : IN STD_LOGIC_VECTOR(7 downto 0));
end Interpretor;

architecture Behavioral of Interpretor is
Signal CPT_PAN : Integer range 0 to 255 := 0;
begin
process(SYS_CLK)
begin
if (SYS_CLK'EVENT and SYS_CLK = '1') then
    if SCAN_CODE = "01101011" then 
        if CPT_PAN /= 0 then    
            CPT_PAN <= CPT_PAN - 1; -- Line to be commented to synthesize
        end if;
    end if;
end if;
end process;     
end Behavioral;
4

1 回答 1

3

哪个合成工具?知道会很有用。

Xilinx XST 14.3 只需报告<sys_clk> is not declared.并退出。

为它添加一个输入端口,它可以正确合成,不产生任何硬件!

添加输出,

entity Interpretor is
Port (
    SYS_CLK   : in std_logic;
    SCAN_CODE : IN STD_LOGIC_VECTOR(7 downto 0);
    Zero      : Out Boolean
 );
end Interpretor;

和建筑的一条线

Zero <= CPT_Pan = 0;

它产生的几乎是你所期望的。由于 CPT_Pan 被初始化为 0,它仍然优化到零,并且该过程根本不处理这种情况。

我敢问你是否在尝试合成之前模拟了这个?

于 2012-12-17T13:33:31.547 回答