VHDL 中的 NULL 语句

mah*_*ood 3 null vhdl

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.

JHB*_*ius 5

我引用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)