vhdl
2012-04-08 151 views 2 likes 
2

我有一个关于VHDL if语句的问题,请参见例如波纹管;-)if语句在VHDL

signal SEQ : bit_vector(5 downto 0); 
signal output: bit; 
    ------- 

    if(SEQ = "000001") and (CNT_RESULT = "111111") then 
     output<= '1'; 
     CNT_RESET <= '0'; 
     else output<='0'; 
    end if; 

,我也得到:如果statment是非法的,“输出”具有乘法源。任何想法

+0

没有错误编译给定的代码,所以也许你应该提供关于处理和输出更多信息信号使用 – 2012-04-08 22:16:24

回答

5

我认为if声明不在一个进程内?您只能在流程中使用if语句。对于进程外类似的功能,你可以使用when

output <= '1' when (SEQ = "000001") and (CNT_RESULT = "111111") else 
      '0'; 

CNT_RESET <= '0' when (SEQ = "000001") and (CNT_RESULT = "111111") else 
      '1'; 
+0

以及if语句是一个过程,当我尝试你的建议时,我得到了:意外的时候,期待着SEMICOLON。 – user1320084 2012-04-08 12:22:38

+0

然后,您可能在之前的一行中出现语法错误。如果没有代码的其余部分,尽管如此,并不容易。 – sonicwave 2012-04-08 12:26:18

+0

我得到它在这里是代码 – user1320084 2012-04-08 12:31:42

3

您可能正在使用中的结构体的IF语句(这是一个并行区域)。这是违法的。你需要把一个过程围绕它,所以它是在一个连续的区域(代码没有测试!):

process(seq, CNT_RESULT) 
    if(SEQ = "000001") and (CNT_RESULT = "111111") then 
     output<= '1'; 
     CNT_RESET <= '0'; 
     else output<='0'; 
    end if; 
    end process; 
相关问题