VHDL中的elseif和elsif有啥区别

Posted

技术标签:

【中文标题】VHDL中的elseif和elsif有啥区别【英文标题】:What is the difference between elseif and elsif in VHDLVHDL中的elseif和elsif有什么区别 【发布时间】:2012-08-27 11:38:54 【问题描述】:

目前,我一直在使用 Xilinix 参与 FPGA 设计技术。在解决设计问题的过程中,我反复发现elseifelsif在if-chain中的使用几乎是为了类似的语句。

elsif(clk'event and clk='1') then
                 pr_state<=nx_state;

elseif S1=’0’ and  S0=’1’ then
     Z <= B;

我的问题是——这两种结构有什么区别?它们相似吗?我已经通过 D.L. Perry 的 VHDL 书籍和其他在线 VHDL 教程网站,但找不到解决方案。提前致谢!

【问题讨论】:

我不知道 VHDL,我想没有区别。如果它们是一个,那将是非常混乱的。我无法想象语言设计师会这样做。 嗯,我认为至少应该有一点不同,否则设计师不会为完全相同的功能制作两个构造。 @bokan 在编程语言中通常有同义词或几种方式来编写相同的东西。 【参考方案1】:

如您在此处所见http://tams-www.informatik.uni-hamburg.de/vhdl/tools/grammar/vhdl93-bnf.htmlelseif 不是 vhdl 中的有效关键字。因此,如果它被认可,那么某些工具供应商想帮您一个忙……我猜您实际上看到了 else if,如上所述

【讨论】:

【参考方案2】:

看起来正确的语法是 elsif。在任何 VHDL 参考中都没有提到 elseif。 http://www.eda.org/rassp/vhdl/guidelines/vhdlqrc.pdfhttp://webdocs.cs.ualberta.ca/~amaral/courses/329/labs/VHDL_Reference.htmlhttp://www.lsi.die.upm.es/~angelfh/LCSE/docs/Synario_VHDL_Reference_Manual_1997.pdf

【讨论】:

很高兴看到这个问题已经在谷歌中引用了“VHDL elseif elsif”这个词......仅仅一小时后。 感谢您的努力。但是,我在许多著名作家的 VHDL 书籍中都看到了这两种结构。 @bokan 我想你看到的是“else if”而不是“elseif”。 "else if" 是一个 else 后跟序列。这个序列可以是一条指令……;或 bloc 将以下 if() 视为一个序列。反正肯定是一样的。您应该认为这是理所当然的,并将您的大脑周期用于其他事情。 我认为这个语句中ELSE和IF之间没有空格:ELSEIF (clear = ‘1’) THEN dout 好吧,它们都被编译了,这次结果是一样的。正如你在第一条评论中评论的那样“我不知道 VHDL”,所以最好知道在 VHDL 中,指令与机器周期相关,设计人员应该了解这些指令,以便他/她可以优化设计。想着所以我发了这个问题,也许有这样的原因。最后,您为我的问题所做的努力很棒,谢谢! @bokan

以上是关于VHDL中的elseif和elsif有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

oracle存储过程中的if...elseif...else用法

对verilog的 仿真和综合有啥区别,具体一点

Makefile 中的 := 和 = 有啥区别?

verilog的行为级描述和RTL级描述有啥区别

CSS 中的 * 和 *|* 有啥区别?

Selenium 中的 WebDriver 和 WebElement 有啥区别?