不支持的功能错误

时间:2014-01-19 22:27:42

标签: vhdl intel-fpga

我正在尝试使用Altera 10.2在VHDL中编译这段代码,但是我收到了这个错误:

  

不支持的功能错误:不支持非本地静态属性名称

我向我的导师询问了一些关于此错误消息的帮助,但他说我的源代码看起来很好,并且应该正确编译。

if ((ina'event AND ilvla=ilvlb) AND (ilvla=NOT ilvlc)) then
    if (ilvla=lvla AND ilvlb=lvlb AND ilvlc=lvlc) then
        ilvla <= '0';
        ilvlb <= '0';
        ilvlc <= '0';
        clk   <= '1';
    else
        ilvla <= (ilvlc AND ilvlb AND NOT ilvla) OR (ilvla AND NOT ilvlc) OR (ilvla AND NOT ilvlb);
        ilvlb <= ilvlb XOR ilvlc;
        ilvlc <= NOT ilvlc;
    end if;
else
    rst <= '1';
end if;

错误发生在带有if语句的第一行。

1 个答案:

答案 0 :(得分:1)

你对'活动有什么打算?你想创造一个触发器吗?如果没有,你不应该使用'event。如果是这样,你错过了找到上升边缘的基础知识。它们是以下三种之一:

if Clk = '1' and Clk'event then
if Clk'event and Clk = '1' then 
if rising_edge(Clk) then  -- *** Preferred for readability.

确实没有任何形式可以让您检查某些信号的事件以及您是否匹配和/或不匹配其他信号。

此外,您使用的结构不适合触发器。您正在时钟的其他分支中分配一个值,这将使工具不满意。此外,如果时钟仅位于最外层的分支中,那么综合工具是最快乐的。触发器中常见以下两种情况:

SimpleFF : process(Clk) 
begin
  if rising_edge(Clk) then
    -- other stuff
  end if ; 
end process SimpleFF ; 

  AsyncResetFF : process(Clk, nReset) 
  begin
    if nReset = '0' then 
      -- reset stuff
    elsif rising_edge(Clk) then
      -- other stuff
    end if ; 
  end process SimpleFF ; 

在编写代码时,您正在创建硬件。别忘了这个。第一步是总是画出你想要的粗略画面。特别是,识别硬件元件,例如触发器,组合逻辑和算术逻辑。然后编写捕获图片中内容的代码。