nullVHDL中语句的实际目的是什么?考虑以下代码
1-
CASE s IS
BEGIN
WHEN 0 => y <= 0;
WHEN 1 => NULL;
END CASE;
Run Code Online (Sandbox Code Playgroud)
2-
CASE s IS
BEGIN
WHEN 0 => y <= 0;
END CASE;
Run Code Online (Sandbox Code Playgroud)
在第二个代码中,由于 when 没有赋值s=1,则y保留它以前的值。不是吗?所以,我认为在这两种情况下,合成器都会放置一个触发器来保持y.
我引用IEEE1076-2008:
10.14 空语句
空语句不执行任何操作。
null_statement ::= [标签:] null ;
除了传递到下一个语句之外,空语句的执行没有任何影响。
注意—null 语句可用于明确指定当某些条件为真时不执行任何操作,尽管对于此(或任何其他)目的从不强制执行。这在与 case 语句结合使用时特别有用,其中 case 表达式的所有可能值都应由选项覆盖;对于某些选择,可能不需要任何操作。
VHDL 语言要求对 case 语句中的每个选择都有一个语句:否则综合将给出错误。示例实现:
case OPCODE is
when "001" => TmpData := RegA and RegB;
when "010" => TmpData := RegA or RegB;
when "100" => TmpData := not RegA;
when others => null;
end case;
Run Code Online (Sandbox Code Playgroud)