我正在尝试使用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
语句的第一行。
答案 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 ;
在编写代码时,您正在创建硬件。别忘了这个。第一步是总是画出你想要的粗略画面。特别是,识别硬件元件,例如触发器,组合逻辑和算术逻辑。然后编写捕获图片中内容的代码。