VHDL 中的实体语法
Entity syntax in VHDL
我对 VHDL 中实体的语法感到困惑。以下是 EBN form 实体应如何声明的规则:
来源:Peter J. Ashenden, "The Designers Guide to VHDL", 3rd ed., Morgan Kaufmann, 2008.
令我困惑的是声明的结尾。据此,我不需要在最后包含 entity 或 identifier,一切都会一样。例如,下面的两个声明是一样的吗?
声明 1
entity identifier is
...
begin
...
end ;
声明 2
entity identifier is
...
begin
...
end entity identifier ;
如果是,为什么会有人选择后一种声明?是否有建议我应该使用这两种变体中的哪一种?我问这个是因为我通常会在示例中看到后一个声明,我无法解释为什么有人会更喜欢第二个声明而不是第一个声明。
我几乎总是使用后一种声明,因为它会产生更好的文档记录代码。对于前者,如果 reader 遇到一个简单的 end;
,则 crystal 不清楚结束的是什么。
当使用比 VHDL 更简洁的语言时,程序员(通常)通常会在关闭某些内容的结构中添加注释,以显示 reader 正在关闭的内容,例如在 C++ 中:
} // if (enable)
或 Verilog
end // if (enable)
SystemVerilog 添加了一种功能,可以用适当的语言做同样的事情:
if (enable)
begin : enable_block
...
end : enable_block
之所以能在VHDL中说出这些
end ;
end entity ;
end identifier ;
end entity identifier ;
是为了让VHDL-93向后兼容VHDL-87,其中只有这些是合法的:
end ;
end identifier ;
"Nearly always"?是的。如果我写可执行代码,我总是会写后者。然而,本周我创建了一些关于 VHDL 的 PowerPoint 幻灯片,我故意只写了 end;
,因为我认为整个 end entity identifier ;
分散了 reader 的注意力。你可以随心所欲。
我对 VHDL 中实体的语法感到困惑。以下是 EBN form 实体应如何声明的规则:
来源:Peter J. Ashenden, "The Designers Guide to VHDL", 3rd ed., Morgan Kaufmann, 2008.
令我困惑的是声明的结尾。据此,我不需要在最后包含 entity 或 identifier,一切都会一样。例如,下面的两个声明是一样的吗?
声明 1
entity identifier is
...
begin
...
end ;
声明 2
entity identifier is
...
begin
...
end entity identifier ;
如果是,为什么会有人选择后一种声明?是否有建议我应该使用这两种变体中的哪一种?我问这个是因为我通常会在示例中看到后一个声明,我无法解释为什么有人会更喜欢第二个声明而不是第一个声明。
我几乎总是使用后一种声明,因为它会产生更好的文档记录代码。对于前者,如果 reader 遇到一个简单的 end;
,则 crystal 不清楚结束的是什么。
当使用比 VHDL 更简洁的语言时,程序员(通常)通常会在关闭某些内容的结构中添加注释,以显示 reader 正在关闭的内容,例如在 C++ 中:
} // if (enable)
或 Verilog
end // if (enable)
SystemVerilog 添加了一种功能,可以用适当的语言做同样的事情:
if (enable)
begin : enable_block
...
end : enable_block
之所以能在VHDL中说出这些
end ;
end entity ;
end identifier ;
end entity identifier ;
是为了让VHDL-93向后兼容VHDL-87,其中只有这些是合法的:
end ;
end identifier ;
"Nearly always"?是的。如果我写可执行代码,我总是会写后者。然而,本周我创建了一些关于 VHDL 的 PowerPoint 幻灯片,我故意只写了 end;
,因为我认为整个 end entity identifier ;
分散了 reader 的注意力。你可以随心所欲。